• Gallische Dörfer, römische Klappmesser: Das Landesmuseum in Bonn

    Ich war seit gestern in anderer Sache in Bonn, hatte dabei aber Zeit für einen mittel-langen Blick in das „LVR LandesMuseum Bonn“. Das wollte ich gerne, denn erstens wusste ich, dass dort die Überreste des originalen Neandertalers liegen, und zweitens bin ich im Rahmen meines Römerfimmels schon einige Male auf „Original im LVR LandesMuseum Bonn“ (oder diverse Varianten der flamboyanten Schreibweise[1]) gestolpert.

    Tatsächlich habe ich von den Exponaten, die im Wikipedia-Artikel zum Museum erwähnt sind, nicht viel gesehen, denn die Leute bauen gerade eifrig um. Dafür bin ich aber auch umsonst reingekommen, und zumindest der Ur-Neandertaler war am Platz – die gefundenen Knochen ebenso wie eine rekonstruierte Figur.

    Letztere hatte nichts mehr von den gebeugten, haarigen Kreaturen, die noch vor wenigen Jahrzehnten das Neadertaler-Bild prägten. Der Steinzeitspeer in der Hand musste jedoch offenbar noch sein, obwohl doch Verbandszeug viel besser zur Befundlage passen würde. Der Ur-Neandertaler hatte nämlich ausweislich der nachgebliebenen Knochen 20 Jahre vor seinem Tod eine ziemlich schwere Armverletzung, und dass er danach so lange überlebt hat, wird als eindeutiger Beleg für Krankenversorgung und Fürsorge unter NeandertalerInnen gewertet.

    Eher noch beeindruckender fand ich aber die keltische Abteilung des Museums, in der Folgendes ausgestellt ist:

    Diorama eines Dorfes mit ca. 200 Fachwerkhäusern, einigen Gärten und Weiden sowie einer Umfriedung drumrum.

    Das ist nicht etwa ein Diorama des gallischen Dorfes von Asterix und Obelix. Nein, es ist ein Diorama, das die archäologischen Erkentnisse zum gallischen Dorf von Niederzier-Hambach reflektiert. Genauer war dort eine eburonische[2] Siedlung, die (vermutlich) im Rahmen der caesar'schen Angriffskriege im östlichen Gallien 54 bis 51 vdcE[3] aufgegeben wurde.

    Weil sie so prima in unsere Zeit passt, lasst mich kurz ein Destillat dieser Geschichte im Geiste meiner Betrachtungen zu Chios erzählen: Um 57 vdcE ließen die eburonischen Herrscher ihre Untertanen mit Caesars Truppen Belger abmetzeln. Doch schon zwei Jahre später empfanden sie das römische Winterlager irgendwo in der Nähe ihrer Hauptstadt („Atuatuca“; kein Mensch weiß heute mehr, wo das überhaupt war) als unerträgliche Kränkung nationaler Gefühle. Sie brachten also die Römer irgendwie dazu, aus ihrem Kastell auszurücken. Als sie das geschafft hatten, ließen sie ihr Militär angreifen, das, so Caesar, 10'000 römische Soldaten umbrachte.

    Die, ach ja, „Offensive“ erwies sich mittelfristig als unklug, denn Caesar konnte sowas nicht auf sich sitzen lassen. Er selbst bezichtigt sich im de bello gallico des, ach ja, „Genozids“. In den aktuellen Worten der Wikipedia:

    Die Einwohner wurden niedergemetzelt, die Gehöfte eingeäschert, das Vieh weggetrieben. König Catuvolcus starb durch Suizid (53 v. Chr.), König Ambiorix konnte mit knapper Not über den Rhein zu den Germanen entkommen. Über sein weiteres Schicksal ist nichts bekannt. Archäologisch lässt sich für die Zeit um 50 v. Chr. in eburonischen Siedlungen tatsächlich oftmals ein Siedlungsabbruch erkennen.

    Auch in der Darstellung im Landesmuseum werden Zweifel geäußert, ob nun die Römer die EburonInnen wirklich alle abgemurkst haben; der gute Zustand der Reste von Niederzier-Hambach und auch das Fehlen eines Brandhorizonts lassen vermuten, dass hinreichend viele EburonInnen klug genug waren, sich auf keine weiteren Kriegshandlungen einzulassen und schlicht davongerannt sind. Etwas in dieser Art schlägt auch der Bericht von Strabo vor, der so um die christliche Epoche herum von den Eburonen wieder als Verbündete Roms spricht. Dennoch: Bioarchäologisch ist nachweisbar, dass nach den römischen Feldzügen der Wald das eburonische Land zurückgewann. Oh Grusel.

    Wo gerade die Rede von Ambiorix war: Nicht nur die gallischen Dörfer sehen offenbar so aus wie halt gallische Dörfer, also die bei Uderzo und Goscinny. Die Leute scheinen auch so zu heißen. Ambiorix, Vercingetorix, Verleihnix. Im Landesmuseum gab es dazu eine These, die ich, so glaube ich, zuvor noch nicht gehört habe. Und zwar sei die Namensendung -rix eigentlich ein -rigs, was wiederum mit dem lateinischen Rex, König zu vergleichen sei. Ambiorix sei dann also „König der Ambiorer“, Asterix vielleicht „König der Sterne“. Obelix… oh, nee, ich mache jetzt keine Witze über mögliche Sprachfehler.

    Nach dieser Deutung kämen die zahlreichen auf -rix endenden Namen in der Überlieferung einfach daher, dass die klassische Geschichtswissenschaft im Wesentlichen von Königen und ihren Untergrobianen redet. Mir hingegen ist viel sympathischer der relativ neue Trend (ich linke dazu auf Arno Borst, 1925-2007) der Archäologie, das wirkliche Leben zu betrachten. Dabei können so (mich) verblüffende Ergebnisse herauskommen wie: Die Römer hatten Klappmesser. Nehmt etwa dieses her:

    Foto einer rostigen, gekrümmten Messerklinge, die in eine grob menschenähnliche Hülle geklappt werden konnte

    Das ist ein Fund aus dem Grab der „Schönen von Zülpich“, und die MuseumskuratorInnen wundern sich ein wenig, was wohl so ein Taschenmesser in einem Frauengrab macht. Ein wenig sexistisch fand ich das schon, in jeder Richtung; denn soweit ich das sehe – die Römer haben ihre Toten ja bis zur christlichen Machtübernahme durchweg verbrannt, so dass es kaum DNA-Evidenz geben wird –, wird die These des Frauengrabes im Wesentlichen nur durch Beigaben von Spiegel, Kamm und Cremes gestützt, die zumindest ausgehend vom modernen Befund durchaus auch von Männern genutzt werden.

    Und selbst wenn die Tote weiblich war, sind Taschenmesser wirklich recht unabhängig von Geschlechtszuschreibungen nützlich; stellt euch alleine mal vor, wie lausig die kaum gezüchteten Orangen der römischen Zeit zu schälen gewesen sein werden[4]. Nur, weil unser Patriarchat Frauen Klappmesser lieber vorenthält (schon dadurch, dass Frauenkleidung wenigstens vor dem Zeitalter großer Telefone meist keine messergeeigneten Taschen hatte), heißt das ja noch nicht, dass das römische Patriarchat das auch so gehalten hat.

    Jedenfalls: Dann und wann bin auch ich noch überrascht über den Stand der Technik in den römischen Provinzen. Das gilt vielleicht noch mehr für den Klappstuhl der „Priesterin von Borschemich“:

    Foto zweier Exponate: links ein Haufen rostiger Streben, links ein modern anmutender Klappstuhl.

    Das rostige Zeug links ist in einem Grab einer Anhängerin, vielleicht sogar einer Priesterin, einer der zahlreichen orientaloiden Kulte des kaiserzeitlichen Roms gefunden worden, und die Museumsleute haben mich davon überzeugt, dass das schicke Teil rechts eine zuverlässige Rekonstruktion des Originalzustands ist; wer vor Ort ist und das rostige Zeug genauer ansieht, dürfte, so erwarte ich, diese Einschätzung schließlich teilen.

    TIL: Die Römer hatten Campingmöbel. Vielleicht haben sie die zu kultischen Zwecken eingesetzt, aber vielleicht ist das bei uns auch nicht so viel anders.

    Zum Schluss muss ich etwas besorgte Kritik loswerden, und zwar an diesem Ausschnitt aus dem „Stammbusch“ des Menschen, der in der Nähe des Neandertalers zu finden ist:

    Foto eines Graphen mit dicken und dünnen Strichen zwischen menschlichen Schädeln: Ein dicker Strich verbindet Neandertaler und Homo sapiens sapiens, ein viel dünnerer Homo sapiens und Homo sapiens sapiens.

    Zunächst ist das schon ein wenig moderner als die Anno-Darwin-Anthropologie, denn die verschiedenen Homo-Arten mischen sich in diesem Bild zum modernen Menschen (der durchgezogene senkrechte Strich ganz rechts), und der Neandertaler steht nicht mehr als tumber, unterlegener, rausdarwinierter, toter Ast da. Das ist schön.

    Zumindest in eine möglicherweise nicht so schöne Ecke geht das allerdings im breiteren Kontext. Auf der grauen, oberen Fläche steht nämlich außerhalb des gewählten Ausschnitts „Europa“, auf der unteren, blasstürkisen „Afrika“. Und so könnten Menschen das als Teilrevision der in konservativen Kreisen immer noch gerne als kränkend empfundenen Out of Africa-Theorie ansehen. Jaja, so könnte mensch hier lesen, Homo sapiens ist schon in Afrika entstanden, aber zum ordentlichen Homo sapiens sapiens ist er erst geworden, als er es nach Europa geschafft hat und dort dem hellhäutigen Neandertaler zum letzten Schliff verholfen hat. Wenn das die Intention dieser Grafik sein sollte, würde ich erstmal (also: bis irgendwer sehr starke Belege bringt, dass die Homo sapiens, die seinerzeit aus Afrika ausgerückt sind, nicht schon fertige moderne Menschen waren) sagen: Nicht so schön.

    Die beeindruckende Animation der Ausbreitung der verschiedenen Homo- und Australopithecus-Arten während der vergangnen paar Millionen Jahre, die rechts von diesem Stammgebüsch an der Rückwand der Neandertaler-Halle läuft, gibt das dicke Linie-dünne Linie-Verhältnis in dieser Darstellung ebenfalls überhaupt nicht her. Dort ist pures Out of Africa zu sehen. Tatsächlich besiedeln (erobern?) in deren Darstellung moderne Menschen West-, Süd- und Ostasien, lange bevor sie sich ins kalte Europa wagen.

    Dennoch: das Landesmuesum in Bonn kann ich warm empfehlen, auch während der Umbauarbeiten. Ob mensch danach noch ohne Geld zumindest in die Dauerausstellung kommt: Das hätte ich wohl erfragen sollen. Habe ich aber nicht gemacht.

    [1]Ich will offen sein: ich könnte auf CamelCase und technokratisch-verbrandendes „LVR“ gut verzichten. Eigentlich hätte der originale Name, „Museum Rheinisch-Westfälischer Altertümer”, meine Stimme.
    [2]Caesar hat die Eburoner eingestandenermaßen als cisrheinische Germanen statt als Gallier bezeichnet, aber zu der Zeit waren Germanen ja auch gerade erst frisch erfunden, und es spricht extrem viel dafür, dass das schon eher so Asterix-Leute waren, angefangen beim Namen des einen ihrer Chefs. Nein, nicht Majestix, aber doch Ambiorix.
    [3]Vgl. diese Fußnote
    [4]Jaja, Orangen, die mensch schälen wollte, gelangten wohl erst über 1000 Jahre nach dem Tod der Schönen von Zülpich ins (dann ehemalige) Imperium Romanum. Aber vielleicht wollte sie ja Holzäpfel schälen, wenn die arme Seele schon keine Orangen hatte?
  • Work-Life Balance and Privacy with Bash, D-Bus, gajim and ifupdown

    A small screenshot showing an offline icon

    Sunday morning: my gajim is automatically offline. This post explains how I'm doing that.

    I still consider XMPP the open standard for “chat” (well, instant messaging), and I have been using Psi as an XMPP client for almost 20 years now. However, since Psi has occasionally crashed on me recently (as in: at least since Bullseye), presumably on receiving some message, I consider it a certainty that it is remotely exploitable. Given its large codebase I don't think I want to fix whatever is wrong myself, and I don't think there are still people maintaing Psi.

    I therefore recently migrated to gajim last week; after all, one of the nice things about open standards is that there are usually multiple implementations. This, however, made me update an ancient hack to automatically manage my status so that I'm XMPP-offline when it's nobody's business whether or not my machine is on.

    In this post, I'd like to tell you how that works, hoping it may be useful to solve other (but similar; for instance: get offline when doing talks) problems, too.

    Not Always Online

    First off, the major reason I'm not much of a fan of synchronous messaging (which IM is, and email is not) is that it requires some sort of “presence” notification: something needs to know whether I am online, and where I can be reached. At least in XMPP, additionally all your contacts get to know that, too.[1]

    While I admit that can be useful at times, during the night and on weekends, I really don't want to publish when my computer is on and when it's not. Hence I have so far told my Psi and I am now telling my gajim to not automatically re-connect on Weekends or between 20:00 and 7:00. That I can specify this perhaps somewhat unique preference illustrates how great shell integration everywhere is. The ingredients are:

    • ifupdown, Debian's native network management. If you're using systemd or NetworkManager or something, I think these use other hooks [if you've tried it, let me know so I can update this].
    • D-Bus, a framework to communicate between programs sitting on a common X11 display (though with gajim, D-Bus becomes somewhat hidden).
    • the shell, which lets you write little ad-hoc programlets and duct-tape together all the small utilities that accumulated in Unix since the early 1970ies (here: logger, date, and egrep).

    Inter-Process Communication with D-Bus

    The first thing I want to do is make tajim offline before a network interface goes down. That way, people don't have to wait for timeouts to see I am unavailable (unless someone pulls the cable or the Wifi disappears – without a network, gajim can't sign off). That means I have to control a running gajim from the outside, and the standard way to do that these days is through D-Bus, a nifty, if somewhat over-complicated way of calling functions within programs from other programs.

    One of these other programs is qdbus, which lets you inspect what listens on your sessions's (or, with an option, system's) D-Bus and what functions you can call where. For instance:

    $ qdbus org.gajim.Gajim /org/gajim/Gajim
    ...
    method void org.gtk.Actions.SetState(QString action_name, QDBusVariant value, QVariantMap platform_data)
    ...
    

    In Psi, with a bit of fiddling, a generic D-Bus tool was enough to switch the state. Since there's a QDBusVariant in the arguments gajim's SetState method wants according to the qdbus output, I don't think I could get away with that after the migration – qdbus does not seem to be able to generate that kind of argument.

    Enter gajim-remote

    But gajim comes with a D-Bus wrapper of its own, gajim-remote, and with that, you can run something like:

    gajim_remote change_status offline
    

    Except that won't work out of the box. That's because gajim comes with remote control disabled by default.

    To enable it, go to Preferences → Advanced, click Advanced Configuration Editor there, and then look for the remote_control configuration item. I have no idea why they've hidden that eminently useful setting so well.

    Anyway, once you've done that, you should be able to change your status with the command above and:

    gajim_remote change_status online
    

    ifupdown's Hooks

    I now need to arrange for these commands to be executed when network interfaces go up and down. These days, it would probably be smart to go all the way and run a little daemon listening to D-Bus events, but let me be a bit less high-tech, because last time I looked, something like that required actual and non-trivial programming.

    In contrast, if you are using ifupdown to manage your machine's network interfaces (and I think you should), all it takes is a bit of shell scripting. That's because ifupdown executes the scripts in /etc/network/if-up.d once a connection is up, and the ones in /etc/network/if-down.d before it brings a connection down in a controlled fashion. These scripts see a few environment variables that tell them what's going on (see interfaces(5) for a full list), the most important of which are IFACE (the name of the interface being operated on), and MODE, which would be start or stop, depending on what ifupdown is doing.

    The idea is to execute my change_status commands from these scripts. To make that a bit more manageable, I have a common script for both if-up.d and if-down.d. I have created a new subdirectory /etc/network/scripts for such shared ifupdown scripts, and I have placed the following file in there as jabber:

    #!/bin/sh
    # State management of gajim
    
    DESKTOP_USER=msdemlei
    
    
    case $MODE in
    start)
      case $IFACE in
      eth* | wlan* | n900)
        if ! date +'%w/%H' | grep '[1-5]/\(0[789]\|1[0-9]\)'  > /dev/null; then
          exit 0
        fi
        su - $DESKTOP_USER -c 'DISPLAY=:0 gajim-remote change_status online "Got net"' > /dev/null || exit 0
        ;;
      esac
      ;;
    
    stop)
      case $IFACE in
      eth* | wlan* | n900)
        if [ tonline == "t`su $DESKTOP_USER -c 'DISPLAY=:0 gajim-remote get_status'`" ]; then
          su - $DESKTOP_USER -c "DISPLAY=:0 gajim-remote change_status offline 'Losing network'" || exit 0
          sleep 0.5
        fi
        ;;
      esac
      ;;
    esac
    

    After chmod +x-ing this file, I made symbolic links like this:

    ln -s /etc/network/scripts/jabber /etc/network/if-down.d/
    ln -s /etc/network/scripts/jabber /etc/network/if-up.d/
    

    – and that should bascially be it (once you configure DESKTOP_USER).

    Nachtrag (2023-12-02)

    Let me admit that this never really worked terribly well with gajim, manly because – I think – its connections don't time out, and so once a status update hasn't worked for one reason or another, gajim would be in a sort of catatonic state. That's one of the reasons I switched on to pidgin, and its state management again broke when upgrading to Debian bookworm. My current script is near the bottom of this December 2023 post

    Debugging Admin Scripts

    Because it is a mouthful, let me comment a bit about what is going on:

    logger Jabber: $MODE $IFACE $LOGICAL
    

    logger is a useful program for when you have scripts started deeply within the bowels of your system. It writes messages to syslog, which effectively lets you do printf Debugging of your scripts. Once everything works for a script like this, you probably want to comment logger lines out.

    Note that while developing scripts of this kind, it is usually better to just get a normal shell, set the environment variables (or pass the arguments) that you may have obtained through logger, and then run them interactively, possibly with a -x option (print all statements executed) passed to sh. For instance:

    $ MODE=start IFACE=wlan0 sh -x /etc/network/scripts/jabber
    + DESKTOP_USER=anselmf
    + logger Jabber: start wlan0
    + case $MODE in
    + case $IFACE in
    + date +%w/%H
    + grep '[1-5]/\(0[789]\|1[0-9]\)'
    + exit 0
    

    – that way, you see exactly what commands are executed, and you don't have to continually watch /var/log/syslog (or journalctl if that's what you have), not to mention (for instance) bring network interfaces up and down all the time.

    Case Statments in Bourne's Legacy

    The main control structure in the script is:

    case $MODE in
    start)
      ...
      ;;
    stop)
      ...
      ;;
    esac
    

    Case statements are one of the more powerful features of descendants of the Bourne shell. Read about them in the excellent ABS in case you are a bit mystified by the odd syntax and the critically important ;; lines.

    The particular case construct here is there so I can use the same script for if-up.d and if-down.d: it dispatches on whatever is in MODE. In case MODE is something other than start or stop, we silently do nothing. That is not always a good idea – programs failing without complaints are a major reason for the lack of hair on my head –, but since this isn't really user-callable, it's probably an acceptable behaviour.

    General rule of thumb, though: Be wary of case .. esac without a *) (which gives commands executed when nothing …

  • Der Reichsbank-Preis und die Effizienz

    Ich hatte im Januar gegen Ende meines Kopfschüttelns über Fachblindheit zum Thema wissenschaftliches Publikationswesen der Versuchung einer preisbezogenen Klugscheißerei nicht widerstehen können:

    Wenn der DLF-Moderator behauptet, Vernon Smith habe 2002 den Nobelpreis erhalten, ist dem im Sinne von Alfred Nobel zu widersprechen – Smith hat den „Preis für Wirtschaftswissenschaften der schwedischen Reichsbank in Gedenken an Alfred Nobel“ bekommen, der seit 1969 verliehen wird (richtige Nobelpreise: seit 1901).

    Diese Bemerkung war zwar in mehrfacher Hinsicht albern, aber das Thema hat schon viele in Technicolor schimmernde Seiten. Auf eine davon bin ich vorhin in Yanis Varoufakis' unterhaltsamen[1] The Global Minotaur (entleihbar bei libgen) gestoßen. Und zwar hat das für den Reichsbank-Preis zuständige Komitee 1997 Robert Merton and Myron Scholes als würdige Empfänger auserkoren, weil:

    Their methodology has paved the way for economic valuations in many areas. It has also generated new types of financial instruments and facilitated more efficient risk management in society.

    – sie also angeblich Risiken „effizienter“ abschätzen konnten als ihre VorgängerInnen.

    Gleich im nächsten Jahr implodierte der vielleicht selbstironisch Long Term Capital Management (LTCM) genannte Laden der beiden und konnte nur durch einen großzügigen öffentlichen Bailout so abgewickelt werden, dass er nicht gleich das halbe Bankensystem mitnahm; die Geschichte in der Wikipedia. In aller Kürze zeigt die Wertentwicklung von LTCM-Anlagen aus dem Wikipedia-Artikel die Zuverlässigkeit (oder Nützlichkeit? Oder „Effizienz“?) der Erkenntnisse von Merton und Scholes ziemlich deutlich:

    Drei Kurven.  Zwei gehen mehr oder minder stetig nach oben, die dritte, die für LTCM, anfangs steiler, aber dann bricht sie auf fast null ein.

    Selbst wenn das nicht eine starke Aussage über die Wirtschafts„wissenschaften“ als solche oder zumindest ihren Effizienzbegriff sein sollte – es ist jedenfalls eine starke Aussage über diesen, hust, „Wirtschafts-Nobelpreis”.

    [1]Also: Unterhaltsam zumindest für Menschen, die ihren Zorn darüber, dass all die Monopolyspiele haufenweise Menschen umbringen, mit hinreichend Zynismus kontrollieren können.
  • WissenschaftlerInnen als Helden: Contact von Carl Sagan

    19-Zoll-Schränke voll mit blinkender Elektronik

    Sieht aus wie eine Kulisse aus einem (ja: etwas älteren) Hard-SciFi-Streifen, ist aber echt: Elektronik am Radioteleskop Effelsberg anno 2010.

    Letzte Woche war die Presse voll von Verrissen der Verfilmung von Frank Schätzings Der Schwarm. Eigentlich finde ich das ein wenig schade, denn eigentlich bin ich, und das mag eine Charakterschwäche sein, ein Fan von Büchern und Filmen, deren HauptprotagonistInnen in der Wissenschaft arbeiten. Schätzings Vorlage gehört ja unzweifelhaft in diese Kategorie. Allerdings räume ich gerne ein, dass schon im Buch die Jung-Schön-Sportlichkeit der wesentlichen Personen etwas nervt.

    Spoiler: So sieht trotz der rigiden Befristungspraktiken noch nicht mal das Personal an deutschen Unis aus. Von MPI und Helmholtz will ich in der Richtung gar nicht anfangen. Das aber sollte nicht überraschen, denn es ist auch gar nicht der Job von WissenschaftlerInnen, jung, schön und sportlich zu sein.

    Dazu tritt im Buch und viel schlimmer in der Serie, dass auch die Darstellung der wissenschaftlichen Tätigkeit als solcher bis zur Unkenntlichkeit dramatisiert wird. Klar, niemand will Geschichten über Telecons zur Vorbereitung von Forschungsanträgen lesen, und vermutlich noch nicht mal vom Ringen um die geschlossene Lösung eines Integrals, ohne die die Rechnung drei Jahre dauern würde. Aber es gibt Romane, die ich eminent lesbar finde und die dennoch, jedenfalls bevor es zur Sache geht, eine für Menschen in der Wissenschaft wiedererkennbare Welt beschreiben.

    Die Schwarze Wolke

    Wo ich das schreibe, fällt mir als allererstes Beispiel The Black Cloud (1957) des in vieler Hinsicht großartigen Fred Hoyle ein (im Original bei libgen entleihbar, auf Deutsch wohl eher schwer zu kriegen). Wer auf Geschichten über Erstkontakte steht und einen Einblick bekommen will in die große Zeit der Astronomie vor CCDs und Weltraumteleskopen: das ist Pflichtlektüre.

    Während ich mir ein paar Folgen des ZDF-Schwarms zu Gemüte geführt habe, ist mir aber mehr Contact von Carl Sagan durch den Kopf gegangen[1]. Diese Bevorzugung gegenüber dem Großwerk von Fred Hoyle wird wohl daran gelegen haben, dass ich das Sagan-Buch neulich mal wieder gelesen habe, nachdem ich auf Planet Debian über eine Besprechung von Russ Allbery gestolpert war.

    Russ geht relativ hart mit dem Buch ins Gericht:

    The biggest problem with Contact as a novel is that Sagan is a non-fiction writer who didn't really know how to write a novel. […T]he tone ranges from Wikipedia article to long-form essay and never quite feels like a story.

    und dann:

    I don't think this novel is very successful as a novel. It's much longer than it needs to be and long parts of it drag. But it's still oddly readable; even knowing the rough shape of the ending in advance, I found it hard to put down once the plot properly kicks into gear about two-thirds of the way through.

    Ich muss demgenüber ja sagen, dass ich Buch wie Film in der ersten Hälfte weit stärker fand als in der zweiten (aber das geht mir zum Beispiel auch bei Neal Stephenson in aller Regel so). Die Darstellung des Wissenschafts- und Erkenntnisprozesses jedenfalls ist in Contact – für Verhältnisse von Belletristik – wirklich gut gelungen. Ich hatte auch viel Freude an den Einführungen der verschiedenen Persönlichkeiten, in denen ich Typen aus dem wirklichen Leben wiedererkennen konnte. Allen voran kannte ich gleich ein paar Vaygays (aber die meisten von denen sind inzwischen tot oder jedenfalls tief pensioniert).

    Ein Roman als Blog-Ersatz

    Wahrscheinlich trifft jedoch die Kritik, Sagan habe nicht eigentlich einen Roman geschrieben, schon ein wenig. Ich denke, er hat im Groben einige seiner Ansichten und Ideen darlegen wollen und das Ergebnis mit einer nicht immer ganz organischen Geschichte zusammengesponnen, weil es damals halt noch keine Blogs gab, in denen Einzelbeiträge auch ohne Gewebe nebeneinender hätten stehen können. Kann ich verstehen: Dann und wann fantasiere ich auch darüber, so einen Roman zu schreiben.

    Ein Regal mit Plastikkisten, in denen jeweils Stapel von Festplatten stehen

    Wo ich schon mal handfeste Elektronik in der Radioastronomie zeige: 2015 wurden VLBI-Radiodaten (gerade) noch in solchen Plattenstapeln zum Korrelieren gefahren (hier: am ASTRON in Dwingeloo). Update (2023-03-14): Also… tatsächlich macht das Event Horizon Telescope das mit mit dem Verschicken von Platten auch heute noch so; anders sind die vielen Terabyte, die die da an ihren Teleskopen gewinnen, nicht zu den Korrelatoren zu bekommen, schon gar nicht vom Südpol.

    Am allerdeutlichsten ist der Charakter von Contact als Sammlung von Diatriben vielleicht, wenn Sagan über Religion rantet – und dann wieder Gottesmänner als besonders aufrechte Menschen auftreten lässt. Die Auseinandersetzung mit Fernsehpredigern und Evangelikalen erschien mir, als ich das Buch im letzten Jahrtausend zum ersten Mal gelesen habe, ziemlich wie US-Nabelschau.

    Wenn ich mir jetzt ansehe, wie viele doch sehr anrüchige „Freikirchen“ inzwischen in Gewerbegebieten und Strip Malls hiesiger Städte und Dörfer aufgemacht haben – oder gerade heute von Amokläufen in einem „Königreichssaal“ von Jehovas Zeugen höre –, bin ich mir da nicht mehr so sicher. Und auch die „Family Values“, die Sagan jedenfalls mehr rausschauen lässt als etwa Hoyle, haben im Zeitalter des Neoviktorianismus nicht mehr ganz so deutlich die Anmutung rustikaler Americana wie vor 30 Jahren.

    Ebenfalls so tangential wie lehrreich finde ich, dass die Maschine in Contact schließlich in Japan gebaut wird. In den 1980ern nämlich spielte Japan die Rolle in Erzählungen vom Untergang des Abendlands, die heute China spielt – halb Gefahr aus dem Osten, halb bewundertes Rollenmodell.

    Gelbe Gefahren im Wandel der Zeit

    Die Parallelen lassen sich ziehen hin zum Handelskrieg Ronald Reagans gegen (unter anderem) japanische Halbleiter oder für patriotische Motorräder, die in vielerlei Hinsicht vergleichbar sind zu Trumps und Bidens heutigen Vesuchen, die Handelsbilanz mit China etwas zu balancieren. Wer nach der Lektüre von Contact noch eine Runde den originalen Blade Runner (auch aus der Zeit des Contact-Buches) ansieht, bekommt vielleicht eine etwas gelassenere Perspektive auf die heutige „Systemkonkurrenz“.

    Dass das eine gute Sache wäre, liegt mir gerade besonders nahe, nachdem gestern hier in Heidelberg Jörg Kronauer recht überzeugend dargelegt hat, dass der nächste große Krieg gegen China gehen wird (ich habe den Mitschnitt aus München nicht angesehen, würde aber vermuten, dass es grob das gleiche Material sein wird), wenn… nun, wenn wir als Gesellschaft Oswald Spengler-Fantasmen nicht zwei Ecken realistischer betrachten und aufhören, Geschichte als großen und fundamentalen Konflikt zwischen Staaten und Machtblöcken zu denken.

    Russ Allberys Urteil zu diesem Thema in Contact kann ich im Gegensatz zu seinen ungnädigen Urteilen in anderen Fragen teilen:

    [Die Wunder des Weltraums] in his alternate timeline rapidly sped up nuclear disarmament and made the rich more protective of the planet. […] I was a bit torn between finding Sagan's predictions charmingly hopeful and annoyingly daft.

    Neenee, auch die Ablösung des Clash of Culture-Narrativs ist keine technologische Frage. Sie ist Hand- und Mundarbeit.

    [1]Gleich in einer ganzen Reihe von Ausgaben bei libgen entleihbar, aber ich sehe wieder keine deutsche Übersetzung. Angesichts der, soweit ich das sehen kann, anhaltenden Popularität des Films erstaunlich finde ich, dass auch die öffentliche Bibliothek in Heidelberg offenbar keine Ausgabe mehr hat.
  • Die „Klima Arena“ in Sinsheim

    Interessant beleuchteter Museums-Innenraum mit ein paar Menschen und einem Themenglobus

    Es leuchtet und schimmert viel im Inneren der Hopp'schen „Klima Arena”. Der Themenglobus hat mir aber durchaus noch das eine oder andere beigebracht.

    Seit heute bin ich Inhaber eines Museumspasses und werde also in den nächsten 12 Monaten einige Museen in der weiteren Umgebung des Oberrheingrabens erkunden. Den Anfang machte heute (vielleicht relativ bescheiden angesichts der Konkurrenz) die „Klima Arena“ (jaja, Deppenleerzeichen. Ich kann nichts dafür), die sich in der Sinsheimer Hopp-Vorstadt befindet, also grob neben dem Stadion des lokalen Männerfußball-Bundesligavereins.

    Und so gleich mal ein heißer Tipp: Wenn ihr da hinwollt und es gerade beqeuem ist, steigt an der S-Bahn-Station Sinsheim-Arena aus. Das ist vielleicht etwas weiter als vom Hauptbahnhof aus, aber dafür bekommt ihr eine hautnahe Einführung in den Mobilitätsteil der Klimafrage, zunächst mit dem Technikmuseum und seinen glücklicherweise stillgelegten Überschalljets, dann durch die A6 und schließlich durch endlose Wege über Parkplätze für Fußballfans und SchwimmbadnutzerInnen, die, ihren Nummernschildern nach zu urteilen, teils über 100 km angefahren waren.

    Blick durch ein Gitter auf eine helle Beleuchtung eines Stadionrasens

    Die Wanderung zur „Klima Arena“ zeigt eine besonders bizarre Energieverschwendung: Hopps Fußballclub beleuchtet aus irgendwelchen Gründen seinen Rasen.

    Wie schon angedeutet: Hinter der „Klima Arena“ steckt Dietmar Hopp, der durch die Warenwirtschafts-Software von SAP reich geworden ist. Da vieles dafür spricht, dass SAP das Bruttosozialprodukt deutlich gedrückt hat (Beispiel), ist die Kombination aus Klimaschutz und Computerspielen vielleicht weniger exotisch als mensch meinen könnte.

    Dennoch überrascht nicht, dass sich die „Klima Arena“ schwer tut mit der Ansage, dass weniger Arbeit und auch dringend weniger Produktion der einzig aussichtsreiche und vernünftige Weg zu Klimaschutz ist; an eine auch nur beiläufige Erwähnung des Wortes „Kapitalismus“ in den zahlreichen Texten kann ich mich nicht erinnern. Ebenso erwartbarerweise ist alles voll mit großen Monitoren und Beamern, die zusammen gewiss den Strom eines mittleren Windrades schlucken werden. Klar spielt da die Verheißung von Wundertechniken eine erhebliche Rolle in verschiedenen Exponaten.

    Augenrollen lässt sich auch nicht vermeiden, wenn allerlei offensichtlich gescheiterte Politiken kritiklos dargestellt werden. Ein recht optimistisches Klimamodell etwa wird eingeführt mit diesem Text:

    Alle übrigen Treibhausgase verschwinden in gleichem Maße wie Kohlendioxid, da auch für sie Strafzahlungen geleistet werden müssen.

    Ganz falsch ist so eine Erwartung paralleler Entwicklungen von CO₂ und anderen Treibhausgasen nicht. Nur hat der Emissionshandel schon beim Kohlendioxid nicht für „Verschwinden“ gesorgt. Es hat noch nicht mal für eine erkennbare Verlangsamung der galloppierenden Zunahme gereicht in den Jahren seit Kyoto (1997: ca 23 Gt/yr; aktuell: um die 35 Gt/yr). Wie das Montreal-Protokoll zeigt, geht sowas durchaus auch anders, wenn mensch nicht auf einen Mumpitz wie Emissionshandel, sondern auf klare Regulierung setzt (und allen Göttern sei dank, denn ansonsten würden wir jetzt alle ein Abo auf Sonnencreme mit Lichtschutzfaktor 50 brauchen).

    Andererseits muss mensch nicht lange auf den interaktiven Videowänden rumtatschen, bevor mensch mit dem Rebound-Effekt bekannt gemacht wird (also: wenn wir effektivere Motoren bauen, verstärken wir die Panzerung der Autos und bauen Klimaanlagen ein, so dass wir am Schluss mehr statt weniger Sprit verschleudern). Eigentlich sollte sich danach all die Spekulation über technologische Wunder erledigt haben. Und wirklich spricht die „Klima Arena“ netto deutlich mehr über saisonales und regionales Essen als über Elektro-Flugtaxis.

    Tatsächlich habe ich ein paar Dinge gelernt, so etwa die Kopfzahl, dass ein Atomkraftwerk wie Phillipsburg I rund eine halbe Megatonne wiegt (und mithin auch so viel Krempel weggeschafft werden muss bis zur „grünen Wiese“). Mit der Kopfzahl 25 Tonnen pro Standardcontainer kann mensch abschätzen, dass rund 20'000 solche Dinger gebraucht würden, um den Schutt wegzuschaffen und zu lagern. Oder auch: ein AKW entspricht mengenmäßig dem Schwefeldioxid, das bei der Explosion des Hunga Tonga Hunga Ha'apai freigesetzt wurde (vgl).

    Ausschnitt eines Themen-Globus mit Ackerland-Bedeckung: die südliche Sahel-Zone ist sehr rot.

    An dem großartigen Globus, auf den mensch so circa 50 verschiedene Themenkarten projizieren und manipulieren kann, habe ich gelernt (vgl. Bild), dass im Süden der Sahelzone, im Norden von Nigeria eine Region äußerst dichten Ackerbaus liegt, so in etwa vergleichbar mit der Poebene. Ich hatte mir da bisher immer eher eine karge Steppe mit ein paar graszupfenden Ziegen vorgestellt. Was der Klimawandel dort anrichten wird, will mensch sich gar nicht vorstellen.

    Während mich der Globus hinriss, fand ich den „immersiven“ Film über eine Reise zum kaputten Amazonas-Regenwald im Jahr 2100 (oder so) in einer als Eisberg verkleideten Röhre aus vielleicht 100 großen Monitoren und Fußbodenrüttlern eher albern. Gewiss, die Kontrastierung von beeindruckenden Waldaufnahmen der Gegenwart mit einer simulierten Einöde nach dem Klimawandel mag das eine oder andere Herz rühren. Aber das Verhältnis von technischem Aufwand zu inhaltlichem Ertrag wirkt schon sehr dürftig.

    Das gilt noch mehr für ein in die Handlung reingezwungenes albernes Spielchen um eine Bruchlandung in Cape Canavaral (inklusive Palmen im Salzwasser). Wenn ihr keinen Wert auf Cringe legt oder enttäuscht wärt, wenn bei all dem Technik-Verheiz immer noch Tearing auf den Monitoren zu sehen ist: Spart euch diesen Teil der Ausstellung vielleicht eher.

    Während der Immersionstunnel noch als Folge von Ansagen des Hauptsponsors Richtung „macht mal ordentlich was mit Technik” durchgeht, fand ich einige völlig danebengegangene Visualisierungen unerklärlich. Hier zum Beispiel sollen die drastisch verschiedenen Wassermengen illustriert werden, die für die Produktion verschiedener Gemüse draufgehen:

    Foto von tropfenförmigen Gewisten mit Zahlen von 8 bis 1256 drauf, wobei die 8 vielleicht halb so groß ist wie die 1256.

    Zwischen acht und 1256 Litern liegt ein Faktor 150, und es ist für viele Menschen schon nicht einfach, sich klar zu machen, was das bedeutet (es ist so in etwa das Verhältnis zwischen dem Einkommen einer Putzkraft und eines Vorstandes in einem modernen Unternehmen…). Da hilft es nichts, wenn die Tropfen alle ungefähr gleich groß sind – das ist, im Gegenteil (sicher nicht beabsichtigte) Irreführung.

    Dieser Vorwurf geht tatsächlich eher an die noch von Theo Waigel ins Leben gerufene Deutsche Bundesstiftung Umwelt, in deren Sonderausstellung zu „planetaren Leitplanken“ dieses Exponat lag. Aber auch die Stammausstellung macht das nicht besser. Seht euch diese Visualisierung der Emissionen verschiedener Verkehrsträger pro Personenkilometer an:

    Übereinandergeschraubte Radreifen von Fernbus, Eisenbahn, Elektroauto, mit daraufgeschriebenen spezifischen Emissionen, die nichts mit der Größe der Räder zu tun haben.

    Es ist ja ein lustiger Gag, die (Rad-) Reifen verschiedener Verkehrsträger ins Museum zu stellen, aber wenn dabei 21 g/Pkm (der Fernbus, ganz unten) gigantisch groß aussiehen und 62 g/Pkm (das Elektroauto, 2. von oben) ziemlich klein, dann klappt das nur, wenn mensch viel Vertrauen in die Urteilskraft des Publikums hat. Und in dem Fall bräuchte es keine Museumspädagogik.

    Demgegenüber nimmt die Museumsgastronomie Thema und auch Nachricht der „Klima Arena” auf und ist immerhin ganz vegetarisch, wenn auch von den (in der Ausstellung durchaus empfohlenen) „regional und saisonal“ nicht viel zu schmecken war.

    Weniger zur Nachricht der Einrichtung passt, dass, wer sich den garstigen Anmarsch sparen und Bus fahren will, gut planen muss. Zumindest von der „Arena“ zum Hauptbahnhof zurück fährt zum Beispiel nichts zwischen 13:04 und 16:03. Dafür fährt gleich nach Museumsschluss um 17:00 ein Bus in ein paar Minuten zum Sinsheimer Bahnhof, wo schon der Zug nach Heidelberg steht. Insofern ist schon bemerkenswert, dass wir die einzigen waren, die diesen Weg gewählt haben. Also: das Thema der Ausstellung bedenkend, jetzt.

  • Pelztiere vs. Menschen: Die letzten 70 Jahre

    Unter einem Gebüsch schauen Beine und Schwanz eines Tigers raus.

    2010 habe ich, ich muss es gestehen, den Heidelberger Zoo besucht. Und mich ordentlich vor dem Tiger gegruselt, der hier im Bambus ruht.

    Neulich ging es in der taz tatsächlich mal um einen Fachartikel, nämlich um „A worldwide perspective on large carnivore attacks on humans” von Giulia Bombieri vom Naturkundemuesum[1] in Trento, Vincenzo Penteriani vom Naturkundemuseum in Madrid sowie KollegInnen aus aller Welt (doi:10.1371/journal.pbio.3001946), vorbildlich unter CC0 publiziert in PLOS Biology.

    Der taz-Artikel liefert eigentlich eine ganz schöne Zusammenfassung des narrativen Teils der Studie, und vor allem ordnet er das Thema das Artikels gut ein relativ zu Bedrohungen durch andere Tiergruppen und echte Gefahren für Menschenleben:

    Knapp 2.000 tödliche Angriffe [durch wilde Säugetier-Karnivoren] in 70 Jahren – das sind weniger als 30 im Jahr. Weltweit. Da steht die Angst in keinem Verhältnis zum Risiko […] Höchste Zeit, den Wolf zu entlasten und die richtigen Fragen zu stellen: Großmutter, warum hast du so große Räder?

    So sehr das mit der Angst qualitativ sicher stimmt, ist das Argument so quantitativ formuliert allerdings nicht haltbar. Schon die Unterüberschrift in der taz, „Eine Studie wertet die Fälle der letzten 70 Jahre aus.“ (Hervorhebung ich), weckt nämlich völlig falsche Erwartungen. Bombieri et al lassen keine Zweifel:

    Wir räumen ein, dass unser Datensatz nicht die Gesamtheit der Tierangriffe umfasst, die es weltweit gab. Er repräsentiert eine Untermenge dieser Fälle. In der Tat fehlen trotz unserer Bemühungen, gleichmäßig über Arten und Regionen zu sammeln, zahlreiche Fälle speziell für Löwen, Leoparden und Tiger.

    Wacklige Zahlen, robuste Ergebnisse

    Der numerische Abstand allerdings zwischen dem Gemetzel im Straßenverkehr und den Opfern bepelzter Wildtiere ist so groß, dass auch einige Größenordnungen Unterschätzung nichts am in der taz dargestellten qualitativen Befund ändern werden.

    Bombieri et al überdehenen ihre Zahlen aber auch selbst, etwa wenn sie zunächst

    erwarten […], dass die Zahl der Angriffe in Regionen mit niedrigem Einkommen wächst. Dort findet viel Subsistenzwirtschaft statt, und viele Gemeinden leben in engem Kontakt mit Wildtieren inklusive Großkatzen.

    Die Zunahme als solche sehen sie dann auch in ihren Daten. Dass diese aber an Subsistenzwirtschaft und Landnahme liegt, bräuchte schon stärkere Unterstützung als platt mit der Zeit wachsende Zahlen, denn die werden sehr plausiblerweise einfach daran liegen, dass sich die Anbindung größerer Teile des globalen Südens an das Nachrichtensystem des globalen Nordens über die letzten 70 Jahren hinweg ganz erheblich verbessert hat. Denn wie zählen Bombieri et al?

    Berichte über Angriffe wurden gesammelt aus persönlicher Datenhaltung der KoautorInnen, der wissenschaftlichen Literatur, Doktor- und Masterarbeiten, Webseiten und öffentlicher Berichterstattung (eine Liste der wesentlichen Veröffentlichungen zum Thema stellen wir in Tabelle S2 zur Verfügung). Wir haben die erwähnten Quellen mit den Suchmaschinen Google und Google Scholar durchsucht. Um den Datensatz zu vervollständigen, haben wir auch eine systematische Suche nach Zeitungsartikeln auf Google durchgeführt. Dabei haben wir für alle Länder/Regionen jährlich gesucht nach einer Kombination der folgenden Begriffe „Name der Art“ oder „wissenschaftlicher Name der Art“ + „attack“ oder „attack“ + „human“.

    Diese Methode führt natürlich überwältigende und praktisch nicht zu kontrollierende Auswahleffekte ein, so dass ich jedem quantitativen Ergebnis, das aus diesem Datensatz gewonnen wird, sehr skeptisch gegenüberstehen würde. Das aber ändert nichts daran, dass er eine großartige Quelle für qualitative Betrachtungen ist.

    CC0 sei Dank: Aus Excel befreit

    Weil das alles – wie mein Blog auch – unter CC0 verteilt wird, kann ich die furchtbare Excel-Datei, in der Bombieri et al ihre Datensammlung publizieren, hier als aufgeräumte CSV-Datei republizieren – vielen Dank an die AutorInnen! Zum Aufräumen habe ich ad-hoc ein Python-Skript geschrieben, das in einem mit Libreoffice erzeugten CSV-Export der Excel-Datei insbesondere die geographischen Koordinaten, die in einer munteren Mischung verschiedener Formate kamen, vereinheitlicht. Dabei gingen ein paar Koordinaten verloren, deren Format ich nicht erraten konnte (so etwa 10).

    Zusammen mit dem großartigen TOPCAT und dessen Classify by Column-Feature (in Views → Subsets) kann mensch auf die Weise recht unmittelbar den folgenden Plot der erfassten Säugetierangriffe nach Spezies erzeugen (TOPCAT ist eigentlich für die Astronomie gedacht, weshalb die Koordinaten etwas ungeographisch daherkommen):

    Bunte Punkte in einem Mollweide-Plot: Es gibt extrem auffällige Cluster etwa auf Kamtschatka, in Japan oder an der indischem Malabarküste.  Der größte Teil des Plots hat gar keine Punkte

    Geographische Verteilung der Tierangriffe aus Bombieri et al, für die am häufigsten angreifenden Arten farblich aufgeschlüsselt. Beachtet, dass nur knapp 50% der Fälle in ihrem Datensatz hinreichend georeferenziert sind.

    Wenn ihr das selbst versucht: Macht auch gleich einen Tabellen-View auf. Ihr könnt dann nämlich auf die Punkte klicken und in der Observations-Spalte oft die zugehörigen Geschichten lesen. Einiges bewegt sich im Dumb Ways to Die-Spektrum, und ich kann nicht leugnen, dass ich mich manchmal wie einE Bild-LeserIn fühlte, während ich an den Daten herummachte. Tja: wer in der Hinsicht ohne Schuld ist, werfe den ersten Stein.

    Wölfe fütternd oder Futter für Wölfe?

    Manchmal sind schon die Activities in der Tabelle halbe Geschichten: „sleeping outside the tent in sleeping bag” zum Beispiel (im kanadischen Algonquin National Park, mit Species Wolf). Conflict_end ist hier glücklicherweise 1 („Injury”) und nicht 2 („Death“). So ging es auch für die Activity „feeding the wolf“ aus, Observation: „Frau hielt an und bot dem Wolf Futter an“. Ich kann der Versuchung nicht widerstehen und muss fragen: War das eine oder waren das zwei Handlungen?

    Denn es geht nach Rechnung der AutorInnen den Wölfen schon recht oft darum, die Leute, die sie angreifen, dann auch zu verzehren. Dazu hilft es, sich kurz die Bedeutung der Zahloide in der Scenario-Spalte anzusehen, die ich erst manuell aus dem blöden XSLX-XML rausfummeln musste:

    1:defensive reaction by a female with offspring
    2:animal and human/s involuntarily encounter at a close distance
    3_4:food related: eg animal food conditioned/habituated or feeding on anthropogenic food (eg crop) or feeding on a wild or domestic animal carcass at the moment of the attack.
    5:predatory/unprovoked/investigative attack
    6:animal wounded/trapped
    8:dog presence
    10_12:animal intentionally approached/provoked/chased attack the people involved or other people on its way while fleeing

    Bei Wölfen sind immerhin 377 von 414 Fällen mit der 5 klassifiziert. Das hätte ich ehrlich gesagt anders eingeschätzt. Und noch mehr bin ich überrascht, dass es die Wölfe in über 250 dokumentierten Fällen auch geschafft haben (sollen), die beteiligten Menschen zu töten. Ich habe mir diese Fälle mal rausgefiltert (in TOPCAT definiert mensch dafür ein algebraisches Subset mit equals(species, "wolf") && conflict_end==2 – ja, SQL ist schöner). Fast alle dieser 268 Fälle kommen aus Indien (259), sechs aus dem Iran, und dann noch je einer aus der Türkei, aus Alaska und Saskatchewan.

    Die Geschichte aus der Türkei ist die von einem Schäfer:

    Shepherd's father found him death [sic]. Then took him to hospital and doctors determined he was killed by wolves.

    – es ging den Wölfen hier also ziemlich sicher nicht darum, den Schäfer zu verzehren, denn sonst wäre schon das mit dem Ins-Krankenhaus-Bringen schwierig geworden. Ich würde hier die 5 ziemlich in Frage stellen, muss ich sagen; für mich klingt das stark nach 3_4, food related, weil die Wölfe einfach die Tiere des Schäfers essen wollten und der Schäfer im Weg war.

    Die Fälle in Nordamerika sind jeweils den Wintermonaten zugeordnet, wobei Wolfsrudel vermutlich weniger hinter dem Fleisch der Menschen her waren als vielmehr hinter den Resten der Tiere, die die Menschen vorher getötet hatten. Sehr hässlich klingen dagegen die Activities aus dem Iran: children playing lese ich da – und noch schlimmer in Indien, wo das allein 183-mal vorkommt (mit anderen Worten: mehr als die Hälfte aller hier verzeichneten tödlichen Begegnungen mit Wölfen weltweit). Das werde ich unten nochmal etwas genauer betrachten, aber zunächst sollen auch die Katzen etwas Aufmerksamkeit bekommen.

    Großkatzen lassen zweifeln

    Bei Leoparden lese ich etliche Mal das gruselige „attacked at the neck and dragged away“, einmal darunter mit der Activity „toilet/bathing/washing clothes outside“ und dem Ausgang, dass der Mensch …

  • Ein spontanes Hörspiel in zwei Minuten

    Am 22. Januar 2023, kurz nach 20 Uhr, passierte im Deutschlandfunk – zumindest im Livestream, aber es klingt alles, als sei das auch per Funk so gewesen – eine der längsten Pannen, die ich im Programm je gehört habe. Die reiche Textur der Fast-Stille ruft, soweit es mich betrifft, laut nach der Aufnahme in meine Live-Sammlung. Hört selbst (aber Vorsicht: ganz am Ende ist normale Lautstärke):

    Schon allein, weil das in (oder vor?) der – gerne mal etwas experimentelleren – Freistil-Schiene lief, bin ich mir bis jetzt nicht sicher, ob das ein Fall für TechnikerInnen oder KulturkritikerInnen ist.

    Das „Hallo“ am Ende meines Ausschnitts hier gehört übrigens zu der zumindest für fachfremdere Menschen durchaus hörenswerten Freistil-Sendung übers Reden mit Außerirdischen. Auch das, so finde ich, passt wunderbar zu diesem Kurzhörspiel mit viel Horchen in verschiedene Sorten von Stille, bei der mensch nie sicher sein kann, dass da wirklich niemand ist.

  • Garmin GPSmap 60Cx and 60CSx do support SDHC and SDXC

    Photo of a hand-held GPS receiver showing, among others “Höhe 9662 m”

    Ah, nostalgia! I just migrated back to the type of my first GPS receiver, in action here when I was – flight shame! – at just about 9700 metres.

    Since there is so much confident misinformation about on this about on the net, I'm stooping to the depravations of SEO and have put my main point into the headline: If you have a Garmin GPSmap device from the later 60 series and worry whether you'll still get SD cards that will work with it, relax: I just bought a 64 GB SDXC card and made it work inside a 60csx that will replace the 64s I had since 2017 (which hopefully has found a new home in Paris. Ahem).

    While it is by no means certain that a vintage 2006 machine can deal with SDHC (since that was only specified in January 2006), and machines that only support SD 1.0 usually get confused with higher-capacity cards, Garmin got it right for these devices. You may be out of luck for the vintage 2003 60C and 60CS, though, but I have no means of ascertaining that.

    In case you're wondering why anyone bothers with hardware that's coming of age these days: I was surprised myself that the things still go for about 100 Euro on ebay, but they are well-made, and very frankly: except for the support for multiple gmapsupp.imgs, I see the GPSmap 64s as a step back over my original 60Cx, in particular when finding features. The GPSmaps are also sturdy devices surviving 20 years of (ab)use, and they're running on standard NiMH cells. What's not to like?

    But, sure enough, when you insert a card you get at your local chemist's today (which will be SDXC) into the 60CSx, it will not (immediately) be recognised. That is because while the machine can deal with SDHC (and thus SDXC) Card-Specific Data and thus the hardware is fine, it cannot deal with exFAT file systems (and preformatted exFAT, really, is the difference between SDXC and SDHC). To my surprise, it could deal with a FAT32 file system, so running, on a linux host with a card reader, sudo mkfs.fat /dev/mmcblk0p1 was all I needed to do to make the device see the file system.

    For reference: the way to figure this out is to create a Garmin subdirectory on the card, and put some (sufficiently small; there's still the 4GB limit on file sizes with FAT32) gmapsupp.img file in there. If you don't have one, my favourite sources at this point are Computerteddy's classics or frikart's renderings.

    You should now see the map data on the device.

    In case reformatting as FAT32 does not do the trick for you: I seem to remember my old 60CS insisted on FAT16, which would explain the talk about a 4 GB limit for the card that's reported in multiple places. If this is true for your 60CS, fetch gparted from your distribution's repository, run it on your SD card, resize[1] the existing partition to 4096 MB, tell gparted to put a FAT16 file system on it, and then try again.

    Nachtrag (2023-10-03)

    There is another snag when you run GPSmap devices on suitably configured Linux systems and want to use the pleasantly unconventional gpsman to manage tracks and waypoints: power management.

    The way gpsman interacts with the USB port makes Linux suspect it doesn't use it at all and then suspend the device if you have enabled USB autosuspend; in consequence, you cannot talk to the device any more, and gpsman's “check device” will fail. And you probably have enabled USB autosuspend if you are on a mobile platform and use software like tlp.

    To still make gpsman work, turn off USB autosuspend at least for the GPSmap. In the tlp case, the way to do that is to figure out the USB id for the GPSmap (use lsusb), which turns up 091e:0003 for the 60CSx. Then tell tlp to leave such devices alone by adding that id to tlp's USB_DENYLIST variable. Don't edit /etc/tlp.conf directly, though, because that will make your dist-upgrades more painful. Rather, create a file /etc/tlp.d/10-stop-autosuspend and put something like:

    USB_DENYLIST="091e:0003"
    

    there.

    [1]Resize instead of drop and recreate because the card vendors seem to be doing some voodoo when aligning their pre-created partitions, supposedly to improve speed (or perhaps even to reduce wear, which probably isn't an issue on the Garmin devices which essentially never write). By resizing, you don't disturb the voodoo. Because, you know, it may work even if you don't believe in it.
  • Postkarten schreiben gegen monströse Drohungen

    Foto: Leicht aufgefächerte Postkarten der Kampagne „Raus aus dem nuklearen Wahnsinn“

    Wer dann und wann mal dieses Blog liest, wird wahrscheinlich schon gestolpert sein über einen der (bisher sechs) Links auf meine zornige Schrift wider die moströse Drohung, die Städte des Feindes einzuäschern, besser bekannt unter dem weit harmloser klingenden Titel „nukleare Teilhabe”.

    Tatsächlich: der einzige militärisch plausible Zweck von Atombomben ist das millionenfache Töten der gegnerischen Stadtbevölkerung[1]. Daher bin ich so empört, dass unsere Regierungen wild an der Mitverfügung über diese Waffen festhielten und -halten. Nach dem Inkrafttreten des Atomwaffenverbotsvertrag vor etwas mehr als zwei Jahren könnte mensch übrigens an dieser Stelle durchaus die derzeit so populäre Vokabel „völkerrechtswidrig“ anbringen (auch wenn ich „monströs“ eigentlich angemessener finde).

    Nichts, schon gar nicht die nukleare Massenvernichtung der eigenen Bevölkerung – an der die Vernichtung der gegnerischen Bevölkerung überdies auch nichts mehr ändern würde –, kann diese Sorte ultimativer Gewalt rechtfertigen. Selbst die Drohung damit verlässt jedes hinnehmbare Ausmaß von Schurkigkeit, von den praktischen Gefahren solcher Drohungen ganz abgesehen. Das ist noch einmal eine ganz andere Liga gegenüber der selbst schon nicht so ganz harmlosen Logik des „wenn die Russen schießen, dürfen wir das auch“.

    Deshalb bin ich den Leuten von Ohne Rüstung Leben so dankbar für die Kampagne Raus aus dem nuklaren Wahnsinn. Teil davon ist insbesondere, Postkarten an Olaf Scholz zu schicken, die ihm nahelegen, doch bitte endlich diesen Teil von basaler Ethik und Völkerrecht anzuerkennen und das Beitrittsverfahren zum Atomwaffenverbotsvertrag einzuleiten. Eine so zentrale Frage ist kein Spielball für Bündniserwägungen und Realpolitik, und sie ist Grund genug für mich, meine fundamentale Skepsis gegenüber petitionsähnlichen Aktionsformen zu überwinden.

    Ich habe gestern meine Karte losgeschickt, und ich habe auch noch ein paar weitere davon. Wenn ihr eine abschicken wollt und irgendwo in Heidelberg, Schriesheim oder Ladenburg wohnt, bringe ich euch gerne eine vorbei – schreibt mir einfach geschwind eine Mail oder nehmt das Feedback-Formular.

    Keine Angst, solches Feedback veröffentliche ich nicht…

    [1]Das sage nicht nur ich, das sagt insbesondere auch Daniel Ellsberg, der es als ehemaliger Nuklearplaner bei der RAND Corporation aus erster Hand weiß. Wenn ihr in der Hinsicht irgendwelche Zweifel habt, schuldet ihr es den Menschen der Zukunft, jetzt gleich Ellsbergs The Doomsday Machine zu lesen.
  • BahnBonus ohne Google-Id und auf dem eigenen Rechner

    Screenshot: Ein bunter App-Bildschirm mit wenig Information und einem Spendenaufruf.  Es handelt sich um die BahnBonus-App der Bahn.

    Objekt der Begierde: Die BahnBonus-App, die mich wieder in die DB-Lounges Einlass finden wird. Und zwar ganz ohne Apple und nur mit einer einfachen Überdosis Google.

    Vor einem knappen Jahr habe ich eine Großbeichte abgelegt: Ja, ich nehme an so einem blöden, schnüffelnden Kundenbindungsprogramm teil, und dann noch an dem von der Bahn, bei dem VielfahrerInnen gemütlich im Sessel Kakao schlürfen, während gewöhnliche Reisende draußen am Bahnsteig frieren oder sich um die wenigen Sitzgelegenheiten in den Bahnhofsgebäuden streiten müssen: Ehemals bahn.comfort, jetzt BahnBonus.

    Im zitierten Post habe ich dem Lounge-Zugang hinterhergeweint, denn seit einem knappen Jahr lässt die Bahn nur noch Menschen in die Lounges, die ferngewartete Computer („Smartphones“), und dann noch ziemlich neue davon, verwenden. Statt der alten Plastikkarte brauchte es jetzt eine, hust, App. Die tut nun (wie ich jetzt weiß und vorher ahnte) nicht nicht viel mehr als den Login-Bildschirm der Bahn-Webseite anzuzeigen und dann Links auf QR-Codes zu generieren. Wahrscheinlich etwas naiv habe damals gehofft, dass die Bahn die paar Zeilen Javascript, die es dafür braucht, auch auf ihre normale Webseite packt.

    Das ist aber nicht passiert. Als die Bahn neulich BahnBonus-Papierwerbung geschickt hat („Sie haben Gold-Status!”), habe ich erneut eine Mail an den Bahn-Support geschrieben, wie es denn mit QR-Codes auf der Webseite stehe. Erneut war die Antwort ein nicht weiter erklärtes Nein. Dass die Bahn mit der Negativantwort aber etliche Gutscheine (insbesondere zum Lounge-Zugang) schickte, nahm ich als „nee, wir machen das nie, auch wenn es einfach ist“. Mag sein, dass es dabei ums Datensammeln geht, mag sein, dass das einfach Konzernpolitik ist.

    Jedenfalls: Wenn ich wieder im Warmen Kakao schlürfen will, muss ich irgendwie auf Dauer an die QR-Codes kommen. Ferngewartete Computer kommen für mich allenfalls in virtuellen Maschinen in Frage, und so dachte ich mir: Ich probier mal, ob ich die BahnBonus-App nicht auch auf meinem normalen Rechner zum Laufen kriege.

    Stellt sich raus: Das geht, und wenn mensch sich Google in einer VM austoben lässt, sogar mit vertretbarem Aufwand. Ich schreibe hier mal auf, was es für mich gebraucht hat; das mag ja bei anderen Digitalzwängen auch ein wenig helfen.

    Android in QEMU aufsetzen

    Ich gehe für die folgenden Schritte aus von einem Debian (bullseye) auf einem Intel- oder AMD-System, das nicht wesentlich älter ist als 15 Jahre. Im Prinzip dürfte aber fast alles auch auf jeder anderen Plattform gehen, auf der Qemu läuft.

    Wenn ihr bei den folgenden Schritten irgendwo ins Schleudern kommt, lasst es mich bitte wissen – ich erweitere diese Erzählung gerne so, dass sie auch nicht übermäßig nerdigen Menschen etwas sagt.

    (1) Qemu installieren – Qemu ist zunächst ein Emulator von allerlei Hardware. Da aber Android enorm ressourcenhungrig ist (also: jetzt für meine Verhältnisse), wäre alles furchtbar lahm, wenn der Android-Code nicht direkt von der CPU in eurem Rechner ausgeführt würde – ich werde Qemu also als Virtualisierer verwenden und nur in sehr zweiter Linie als Emulator. Achtet jedenfalls darauf, dass qemu KVM machen kann. Zum Ausgleich braucht ihr nur die amd64-Fassung, nicht all die anderen Architekturen, und insbesondere nicht ARM. In Bullseye sollte sowas hier reichen:

    apt install qemu-system-gui qemu-system-amd64
    

    [ich selbst habe an der Stelle aus Geiz qemu-system-x86 genommen; das geht auch, und damit ist alles etwas kompakter].

    (2) Android-x86 besorgen – ich gestehe ehrlich, dass ich mich nicht sehr um die Vertrauenswürdigkeit der Leute rund um den Port von Android auf x86-Prozessoren gekümmert habe. Ich habe einfach ein passendes ISO-Image von deren FOSSHUB-Seite (Krapizität 10 lässt hoffen) runtergeladen; wenn ihr die amd64-Qemu installiert habt, wollt ihr jetzt das „64-bit ISO file“.

    (3) Container fürs Android-Filesystem anlegen – euer Android muss seine Dateien irgendwo hinspeichern, und ihr wollt ihm gewiss keinen Zugriff auf euer echtes Dateisystem geben. Erzeugt also eine „virtuelle“ Festplatte für die Qemu-Daten. Dabei kommt ihr mit einem Gigabyte auch bei i386 nicht aus. Wenn ihr euch um Plattenplatz keine Sorgen macht: baut lieber gleich eine mit vier Gigabyte (4G am Ende der Kommandozeile).

    Sucht euch auch irgendeinen Platz, wo ein Klops von der Größe nicht schlimm stört. Ich nehme hier mal ~/containers (was ihr dann wohl aus eurem Backup rausnehmen solltet):

    mkdir -p ~/containers
    qemu-img create -f qcow2 ~/containers/android.img 2G
    

    Display-Probleme

    Jetzt stellt sich das Problem, dass euer künftiges Android die Bildschirmausgabe irgendwo hinschicken muss. Qemu kann in ein ordinäres X-Fenster ausgeben, aber das ist – aus Gründen, die ich nicht untersucht habe – furchtbar lahm. Was für mich gut funkioniert hat: VNC. Wenn ihr damit nicht zurechtkommt, probiert unten mal QDISPLAY="-display gtk" (könnte halt kreuzlahm sein).

    (4) Android-Installer starten – das braucht ein paar Optionen, damit das Ding auch ins Netz kommt und die beiden nötigen Dateien (die virtuelle Platte und den Android-Installer) findet:

    QDISPLAY="-display vnc=localhost:0"
    qemu-system-amd64 $QDISPLAY -enable-kvm -m 2000 \
      -net nic -net user -drive file=$HOME/containers/android.img,format=qcow2 \
      -boot d -cdrom /media/downloads/android-x86-9.0-r2.iso
    

    Den Pfad in der -cdrom-Option müsst ihr ganz sicher anpassen, damit er auf das ISO zeigt, das ihr gerade runtergeladen habt. Lasst jetzt einen VNC-Client auf localhost:5600 los; ich empfehle in diesen Tagen remmina (aus dem gleichnamigen Debian-Paket).[1]

    (5) Den Android-Container konfigurieren – wählt Installation to Hard disk aus, dann Create/Modify Devices. Ihr kommt in einen guten, alten, textbasierten Partitionierer. Als Disklabel wollt ihr nicht GPT haben (weil das später Ärger mit dem Bootloader GRUB gibt). Der Speicher, den ihr da partitioniert, ist der, den ihr in Schritt 3 angelegt habt. Packt die ganze „Platte“ in eine Partition, sagt Write (keine Sorge, mit den Optionen oben könnt ihr keine Daten von euch kaputtmachen) und dann Quit.

    Ihr kommt dann zurück in den Android-Installer. Nach einem Ok könnt ihr das Filesystem auswählen – nehmt ext4.

    Dann fragt der Installer, ob ihr einen GRUB haben wollt – ja, wollt ihr, sonst kommt euer Android nachher nur mit viel Mühe hoch.

    Das System Directory wollt ihr wahrscheinlich nicht read/write haben (es sei denn, ihr wollt ernsthaft mit dem Android spielen). Das spart einiges an Platz.

    (6) Android ins Netz lassen – an der Stelle sollte euch der Installer anbieten, Android-x86 zu starten. Tut das. Wählt eine Sprache aus – ich habe es bei „English (United States)“ belassen.

    Es kann sein (ist bei mir passiert), dass das Ding nach der Sprachabfrage abstürzt und wieder beim Grub-Prompt vom Installer ist. Wenn das passiert, beendet die qemu (also: Control-C in deren Fenster) und schaut unten bei VM starten nach der Kommandozeile, die die Qemu ohne Installer hochzieht. Wir haben es hier mit kommerzieller Software zu tun, Gesundbooten ist also durchaus eine legitime Option.

    Jedenfalls: nach der Sprachwahl will das Ding ins Netz, und ich fürchte, es hat keinen Sinn, ihm das zu verbieten. Sucht also nach Netzen. Ihr solltet genau eines sehen, VirtWifi oder sowas. Wählt das aus, seufzt und lasst schon mal auf eurem richtigen Rechner ein tcpdump -n laufen, um zu sehen, womit euer neues Android so alles plaudert (vgl. Die Wunden lecken).

    Das „Checking for Updates“ hat bei mir über Minuten hinweg 100% CPU verbraten (mensch will gar nicht wissen, was es dabei zu rechnen gibt). Da ich den „ich tu gerade was“-Feedback im emulierten Android generell nicht so prall finde, könnt ihr die Zeit ja damit verbringen, eure CPU-Last-Anzeige am Desktop auf Vordermann zu bringen (mein Tipp: wmcore).

    Dann fragt Android, ob es von irgendwoher eure Daten ziehen kann. Klar: das hätte Google gerne. Zum Glück gibts einen kleinen „Don't Copy“-Knopf. Genauso ist auch der Skip-Knopf im nächsten Dialog, dem Google-Signin, ziemlich klein, und Google nervt extra nochmal, wenn mensch ihn wählt. Wählt ihn trotzdem. Date and Time sind zur Abwechslung problemlos abnickbar, dann kommt ein Dialog zu „Google Services“, die mensch alle manuell ausschalten muss.

    Das ist offenbar die Benutzerfreundlichkeit („User Experience“), über deren Mangel im Free Software-Bereich ich immer so viel höre. Ums Akzeptieren, dass Google immer und zu jeder Zeit Kram auf die VM packen kann, kommt mensch glaube ich nicht rum. Aber dafür ist es ja auch eine VM.

    Den folgenden „Protect your Tablet“-Dialog finde ich interessant, weil die Benutzerführung, die mir gerade noch Vertrauen zu Google überhelfen wollte, nun Misstrauen gegen andere Menschen sät, und das gleich noch mit einem zweiten Extra-Mahn-Dialog, wenn ich keine Lust auf Geräte-PINs habe. Also ehrlich: wenn ich mit Google zu tun habe, mache ich mir doch über menschliche DiebInnen keine Sorgen…

    Die abschließende Frage nach der Home-App verstehe ich auch nicht. Macht einfach irgendwas. Damit seid ihr im Android-Geschäft.

    Apps ohne App-Store

    (7) Home-Screen aufräumen – Wenn ihr gleich mal den „Home-Screen“ aufräumen wollt: jeweils lang ein Icon klicken und ziehen. Dann erscheint ein „Remove“-Feld, auf das ihr das Icon ziehen könnt. Macht das am besten mit allem außer dem Chrome. Den brauchen wir gleich. Die widerliche Google-Bar lässt sich, glaube ich, mit diesem Mitteln nicht entfernen. Wozu auch – der Container gehört ja, wie ihr gerade abgenickt habt, sowieso Google.

    (8) Bahn-App finden – Die Bahn veröffentlicht, so weit ich weiß, keine APKs (also Pakete) von ihrer App. Insofern müsst ihr …

  • Deutsch- und Abendland: Vaterlandslosigkeit leider nicht in der taz

    Foto: Jemand hält ein handgeschriebenes Pappschild „Töten fürs Vaterland?  Scheiße.  Immer.  Überall.“

    Mit diesem Pappschild stehe ich derzeit öfters bei den Kundgebungen von „Heizung, Brot und Frieden“ (z.B. nächster Montag). Tatsächlich bin ich überzeugt, dass der Kampf gegen Patriotismus oberhalb der Ebene von Blockseiten durch 2%-Ziele und Haubitzendiskussionen nochmal einen Schwung Priorität gewonnen hat.

    Am letzten Montag erschien in der taz ein Kommentar von Jan Feddersen zum Schwarzer-Wagenknecht'schen „Manifest für den Frieden“ mit dem pompösen Titel „Ruiniertes Lebenswerk“. Auf die Gefahr hin, wie ein zorniger Zeitungsleser zu wirken: Ich fühlte mich aufgerufen, dazu einen Leserbrief unter dem Titel „Ruinierter Kommentar“ zu schreiben. Jedoch…

    …nicht, weil Feddersen ohne erkennbare Skrupel voraussetzt, es sei in Ordnung, Menschen zu erschießen, solange nur „die anderen angefangen haben“. Wenn ich jeweils sowas kommentieren wollte, müsste ich auch jetzt noch in eine dickere Internetverbindung investieren.

    …nicht, weil Feddersen unterstellt, Waffenlieferungen – und gar aus Deutschland – könnten irgendwo „helfen“. Dabei jeweils eine Perspektive zu geben von dem, was Bomben, Gewehre, Streubomben und Haubitzen in Wirklichkeit anrichten, und wie sehr ihr „Einsatz” in den realen Kriegen der letzten 500 Jahre jeweils geschadet statt geholfen hat (zumal im Vergleich zu späterem politischen und noch besser sozialem Umgang), wäre zwar auch jetzt gerade verdienstvoll, doch nicht unterhalb eines Vollzeitjobs hinzubekommen.

    …nicht, weil Feddersen die schlichte Wahrheit, dass Staaten auch dann wiederauferstehen werden können, wenn sie mal überrannt wurden, erschossene Menschen aber nicht[1], als obszön, trist oder Folge von „nicht mehr alles beisammen“ bezeichnet. Es hilft ja nichts, wenn sich Leute die Vorwürfe, obszönes, trauriges oder wirres Zeug zu reden, gegenseitig um die Ohren hauen. Das sind größtenteils Geschmacksfragen und mithin argumentativ nicht zu entscheiden[2].

    …nicht, weil er einem Staat oder „Volk“ so viel Identität zuspricht, dass er oder es ein Selbst habe, dem es zu helfen gelte (und zwar durch Intensivierung des Tötens realer Menschen). Dagegen hat schon Brecht gepredigt, und der Erziehungauftrag, statt „Volk“ einfach mal „Bevölkerung“ zu sagen und zu denken, wird auf unpatriotischere Tage warten müssen.

    …noch nicht mal, weil er eine Parallele zwischen dem heutigen Russland und dem Deutschland unter der Regierung der NSDAP zieht. Das ist zwar speziell von einem Deutschen, der vermutlich nicht viel mehr als 25 Jahre nach der Befreiung von dieser Regierung geboren wurde, schon sehr schlechter Geschmack, aber, ach ja, wenn ich Willy Brandt seinen schönen Ausbruch „Er ist ein Hetzer, der schlimmste seit Goebbels”[3] nicht verübele, hätte ich irgendein „seit dem 24.2.2022 wird zurückgeschossen“ schon noch weggelächelt.

    Nein, was auch nach den eingestandenermaßen schon heruntergekommeneren Maßstäben der Zeitenwende immer noch nicht geht, ist, die Höhepunkte der deutschen Kriegs- und Massenmordzüge unter der NS-Regierung irgendwie in Relation zu setzen zu heutigen Handlungen, schon gar von den RechtsnachfolgerInnen derer, die diesem Treiben damals wesentlich ein Ende gesetzt haben.

    Tatsächlich hat die taz am vergangenen Mittwoch (nach „Meinungsfreiheit“ suchen) auch einen Platz für den antifaschistischen Teil meines Leserbriefs gefunden. Da sich aber für den vaterlandslosen Teil kein Platz fand und ich auch diesen für wichtig und, wenn ich das selbst sagen darf, gelungen halte, will ich euch die Vollversion nicht vorenthalten:

    Ruinierter Kommentar

    Jan Feddersens Kommentar über einen Aufruf zu Verhandlungen im Ukrainekrieg wäre „selbstverständlich durch das hohe Gut der Meinungsfreiheit“ gedeckt, wie er sagt, wäre da nicht der letzte Satz, der Russlands Agieren in der Ukraine mit dem Nazi-Wüten gegen das Warschauer Ghetto gleichsetzt. Warum das grundsätzlich nicht geht und für Deutsche schon zwei Mal nicht, haben Nolte, Habermas und Stürmer 1986/87 abschließend geklärt (Wikipedia: Historikerstreit).

    Anstandsfragen beiseite: auch rein praktisch würde ein durchaus zulässiger Vergleich zum ersten Weltkrieg einiges an Verwirrung aufklären können. Es lohnt sich, die damaligen Attacken der Verfechter eines Siegfriedens nachzulesen[4], die vaterlandslosen Gesell_innen vorhielten, sie wollten, je nach Geschmack, das idealistische Deutsch- oder gleich das Abendland an, je nach Geschmack, das materialistische Albion oder die barbarischen Horden aus der asiatischen Steppe verfüttern. Welche Seite scheint aus heutiger Sicht attraktiver?

    —Anselm Flügel (Heidelberg)

    Geständnis: In der Einsendung hatte ich die antipatriotische Vorlage „Deutsch- oder […] Abendland“ übersehen und nur „Deutschland oder […] Abendland“ geschrieben, was eingestandenermaßen die literarische Qualität erheblich beeinträchtigt. Bestimmt hätte die taz das ganz abgedruckt, wenn ich da nur rechtzeitig dran gedacht hätte…

    Nachtrag (2023-02-27)

    Ein paar Tage später kam die taz übrigens mit einer Art Kundenbindungs-Massenmail rüber, in der Sie wörtlich schrieben:

    Sie muten sich mit der Zeitungslektüre jeden Tag Nachrichten und Meinungen außerhalb Ihrer so genannten Komfortzone zu. Wie halten Sie das nur aus? Wir wissen es nicht.

    Ach – wenn es nur um die Komfortzone ginge… Derzeit allerdings sind die Fragen: Beschleunigte Remilitarisierung der deutschen Gesellschaft? Oder können wir das der Welt doch noch eine Weile ersparen? Dass die Antworten für unsere Nachbarn weit mehr als Komfortverluste bedeuten, das zumindest sollten wir aus dem 20. Jahrhundert mitgenommen haben.

    [1]Es sei denn, Jesus käme vorbei und schöbe massiv Überstunden. Aber soweit ich das übersehe, ist das zumindest innerhalb der letzten 10'000 Jahre nicht passiert.
    [2]Na gut, das mit dem „wirr“ lässt sich im Prinzip schon entscheiden, aber nur, wenn mensch sich darüber einigt, ob die in der Fußnote eben erwähnte Jesus-Option irgendwie realistisch ist. Und das lassen wir mal lieber, denn nur der Patriotismus hat zu noch mehr blutiger Uneinigkeit geführt als die Jesus-Frage.
    [3]Ca. 1985 in einer Nachwahl-„Elefantenrunde“ über den späteren Stuttgart 21-Vermittler Heiner Geißler.
    [4]Ergänzung fürs Blog: Ich denke da insbesondere an Lenard vs. Einstein.
  • Digitalisierung ist: Auf dem kalten Bahnsteig warten

    Foto: Ein Zug steht mit geschlossenen Türen auf dem Bahnsteig, etliche Menschen in verschiedenen Stadien der Verwirrung davor.

    Digitalisierung live: Menschen stehen am kalten Bahnsteig vor einem geheizten Zug. Immerhin scheint die Sonne, so dass die Digitalisierung immerhin etwas für die Vitamin D-Versorgung der Fahrgäste tut.

    Heute, so gegen Neun, im Heidelberger Bahnhof: Der seit dem letzten Fahrplanwechsel dankenswerterweise stündlich und an sich flott pendelnde Regionalexpress nach Karlsruhe fährt ein, Leute steigen aus, Leute steigen ein. Ich habe mich gerade auf dem Sitz zurechtgeruckelt, als eine Durchsage kommt (etwas paraphrasiert):

    Sehr geehrte Fahrgäste, bitte steigen Sie noch einmal kurz aus. Dieses Fahrzeug muss neu gestartet werden.

    Allgemeine Verblüffung. Tatsächlich steigen aber alle aus; Digitalisierung ist ja inzwischen allgegenwärtig. Und so stehen wir auf dem kalten Bahnsteig, während der Zug dann und wann piept, schnauft und blinkt.

    Minuten vergehen. So etwa zur planmäßigen Abfahrtszeit ist der Reboot fertig, wir können wieder einsteigen. Leider fährt der Zug aber immer noch nicht. Muss erst noch die grafische Oberfläche starten? Mit 12 Minuten Verspätung setzt er sich dann doch in Bewegung, und ich werde milde nervös, denn ich soll eigentlich in Karlsruhe den TGV erwischen. Umsteigezeit 9 Minuten. Abenteuer Bahn.

    Ich warte jetzt nur auf eine Durchsage: „Dieser Zug hat derzeit eine Verspätung von 15 Minuten. Grund dafür ist ein Neustart des Fahrzeugs.“ Das wäre immerhin eine nette Abwechslung von „Personen im Gleis“ oder „Verzögerungen bei der Bereitstellung“.

    Warum genau wollten wir nochmal diese Digitalisierung haben?

  • Spatzen sehen den Mond als Fleck

    Ein etwas bedröppelt aussehender grüner Papagei mit langen Schwanzfedern.

    Dieser Halsbandsittich sieht so mitgenommen aus, weil es regnet, nicht, weil er mit Glas kollidiert ist.

    Eine Hochrechnung der Staatlichen Vogelschutzwarten in Deutschland hat ergeben, dass jährlich alleine in diesem Land ca. 100–115 Millionen Vögel an Glas verunglücken. Das sind über 5 % aller Vogelindividuen, die in Deutschland im Jahresverlauf vorkommen.

    Dieses Zitat kommt aus der Broschüre „Vogelfreundliches Bauen mit Glas und Licht” der Schweizerischen Vogelwarte Sempach[1], die vor ein paar Tagen auf der Webseite des BUND erschienen ist. Meine erste Reaktion war: „Das kann nicht sein“. Aber andererseits: Ich habe auch schon mehrfach gehört, wie Vögel gegen Fensterscheiben geprallt sind, zum Teil auch gesehen, wie sie sich dann zusammengerappelt haben – oder eben auch nicht.

    Wenn ich alle drei Jahre Zeuge eines Vogel-Glas-Unfalls bin, gut zwei Drittel davon ohne ZeugInnen ablaufen (plausibel: der durchschnittliche befensterte Raum ist bestimmt weniger als ein Drittel der Zeit bemenscht) und ich relativ typisch bin, dann gibt es in der Tat ungefähr einen Vogelunfall pro BürgerIn, und das sind halt so um die hundert Millionen.

    Oh, Grusel. Lest euch die Broschüre mal durch (Trigger Warning: Bilder von verunglückten Tieren). Ich suche gleich mal nach wetterfesten, selbstklebenden Punkten von mindestens neun Millimeter Durchmesser, mit denen ich zumindest die Balkontür an meinem Arbeitsplatz (wo es wirklich viele Vögel gibt) markieren kann. Spoiler: hinreichend dicht und an die Außenseite geklebt, helfen die Vögeln zuverlässig, das Glas zu vermeiden.

    Kein Fall für die Ethikkommission

    Schön an der Broschüre finde ich, dass sie recht sorgfältig erklärt, wie mensch eigentlich misst, ob eine bestimmte Sorte Markierung an Glasscheiben die Vögel wirklich abhält (z.B. weiße oder schwarze Klebepunkte) oder nicht (z.B. die Greifvogelsilhoutten oder Kram, der nur im Ultravioletten sichtbar ist). Dazu beschreiben sie ein Flugtunnel-Experiment, bei dem Vögel aus einem Beringungsprojekt nicht direkt wieder freigelassen werden, sondern zunächst in einen ein paar Meter langen dunklen Raum mit einem großen, hellen Ausgang gesetzt werden. Vögel fliegen in so einer Situation sehr zuverlässig zum Licht.

    Am hellen Ende des Tunnels sind nun zwei Glasscheiben angebracht, eine konventionelle und eine markierte. Wenn die Vögel halbwegs zuverlässig die markierte Seite meiden, ist die Markierung glaubhaft wirksam. Aber natürlich will mensch die Vögel, die vom Beringen eh schon gestresst sind, nicht noch gegen eine Glasscheibe krachen lassen, weshalb es ein für Vögel unsichtbares Sicherheitsnetz gibt, das sie (relativ) sanft abhält. Und dann dürfen sie auch gleich weiterfliegen.

    Ich finde das ein bemerkenswert gut designtes Experiment, weil es auf Dauer mit untrainierten Wildvögeln arbeitet, also genau mit der Population, um die es in der Realität auch geht. Und im Vergleich zur Beringung ist die zusätzliche Belastung der Tiere durch das kurze und vergleichsweise naturnahe Tunnelexperiment vernachlässigbar. Gut: Mensch mag über die Beringung als solche diskutieren – aber da halte ich mich zurück.

    Ganz besonders begeistern mich Beschreibungen von Experimenten zudem, wenn systematische Fehler von Vorgängerexperimenten besprochen werden. In diesem Fall etwa war eine Systematik, dass Vögel am Vormittag deutlich lieber die linke Scheibe wählten und am Nachmittag deutlich lieber die rechte. Die Erklärung: die Vögel wollten nicht aus dem dunklen Tunnel in die Sonne hineinfliegen (auch wenn sie nach dem Beringen gleich in den Tunnel gelassen wurden, also noch helladaptiert waren). Deshalb bogen sie am Vormittag lieber nach Westen, am Nachmittag lieber nach Osten ab – was natürlich die Wirksamkeitsmessung ganz furchtbar störte.

    Die Lösung des aktuellen Experiments, um diese Systematik zu vermeiden: Der ganze Tunnel ist drehbar montiert und wird der Sonne nachgeführt. Wow.

    Scharfsichtigkeiten

    Die Broschüre war für mich auch Anlass, mich einiger Kopfzahlen zu bedienen. So zitiert sie etwa aus Martin, G. (2017): The sensory ecology of birds, das

    Auflösungsvermögen des menschlichen Auges [sei] etwa doppelt so hoch wie das eines Turmfalken, vier Mal höher als das einer Taube und 14-mal so hoch wie das eines Haussperlings.
    Ein männlicher Sperling sitzt auf der Strebe eines Biergartenstuhls und blickt seitlich an der Kamera vorbei.

    Was er wohl über den Mond denkt? Ein Spatz im Berliner Botanischen Garten, 2008.

    Um das einzuordnen, habe ich mich erinnert, dass ein normalsichtiges menschliches Auge zwei Bogenminuten auflöst[2], und um eine Vorstellung zu bekommen, was wohl zwei Bogenminuten seien, ist die Ur-Kopfzahl für Winkel gut: Mond und Sonne sind jeweils etwa dreißig Bogenminuten (oder ein halbes Grad)[3] groß. Wenn also so ein Spatz etwa fünfzehn Mal schlechter auflöst als der Mensch, ist für ihn der Mond nur so ein heller, unstrukturierter Punkt. Today I learned…

    Will ich lieber fliegen oder lieber den Mond wie gewohnt sehen können? Hm.

    Fledermäuse und Lichtverschmutzung

    Erfreulich aus AstronomInnensicht ist der Exkurs zur Lichtverschmutzung mit einem Punkt, den ich noch gar nicht auf dem Schirm hatte:

    Fledermäuse meiden die Helligkeit, weil sie sonst leicht von Beutegreifern wie Greifvögeln und Eulen gesehen werden können. Besonders problematisch ist das Beleuchten der Ausflugöffnungen von Fledermausquartieren, wie sie beispielsweise in Kirchendachstühlen zu finden sind. Dies erschwert den Tieren den Ausflug aus den Quartieren und verringert damit die Zeit der aktiven Nahrungssuche, was wiederum den Fortpflanzungserfolg vermindern kann.

    Ich weiß nicht, wie lange das schon bekannt ist. Wenn das jetzt nicht brandneue Ergebnisse sind, bekomme ich schon wieder schlechte Laune, weil die Kirchenturmilluminationen, auf die für Fledermäuse offenbar nicht verzichtet werden konnte, im Herbst 2022 aus patriotischen Gründen plötzlich doch abgeschaltet werden konnten. Hmpf.

    Der ganze Werbe- und Touriklimbim ist übrigens alles andere als im Mittel vernachlässigbar. Nochmal die Vogelwarten-Broschüre:

    Eine Untersuchung der Wiener Umweltanwaltschaft hat gezeigt, dass in Wien 2011 zwei Drittel der Lichtverschmutzung von Schaufensterbeleuchtungen, Anstrahlungen und anderen Effektbeleuchtungen und nur ein Drittel von der öffentlichen Beleuchtung verursacht wurden, obwohl letztere zwei Drittel der Lichtpunkte betreibt.

    Ich stelle unter Verweis auf meinen Rant gegen die Dauerbeflimmerung schon wieder fest: Vernünftiges Konsumverhalten ist eigentlich selten Verzicht. Es ist viel öfter Befreiung von Mist, der den Nutzenden oder jedenfalls anderen Tieren (häufig übrigens der eigenen Spezies) das Leben eh nur schwer macht.

    Nachtrag (2023-02-13)

    Ich hätte vielleicht gleich sagen sollen, dass ich auf die Broschüre durch einen Artikel im BUNDmagazin 1/2023 aufmerksam geworden bin. Ein paar Seiten weiter hinten steht da eine Ergänzung zum Thema schlechte Laune, denn in der Tat hat Baden-Württemberg offenbar seit 2020 ein recht durchgreifendes Beleuchtungsrecht in §21 Naturschutzgesetz, in dem zum Beispiel drinsteht:

    Es ist im Zeitraum

    1. vom 1. April bis zum 30. September ganztägig und
    2. vom 1. Oktober bis zum 31. März in den Stunden von 22 Uhr bis 6 Uhr

    verboten, die Fassaden baulicher Anlagen der öffentlichen Hand zu beleuchten, soweit dies nicht aus Gründen der öffentlichen Sicherheit erforderlich oder durch oder auf Grund einer Rechtsvorschrift vorgeschrieben ist.

    oder gar:

    Werbeanlagen sind im Außenbereich unzulässig. Unzulässig sind auch Himmelsstrahler und Einrichtungen mit ähnlicher Wirkung, die in der freien Landschaft störend in Erscheinung treten.

    Naturschutzrecht ist offenbar ein wenig wie Datenschutzrecht. Mensch staunt regelmäßig über die Dissonanz zwischen Recht und Praxis – nicht zuletzt, weil es dann doch immer allerlei interessante Ausnahmen gibt, im Fall von §21 NatSchG vor allem Artikel 5.

    Kopfzahlen: Beleuchtungsstärken

    Während ich bei den Scharfsichtigkeiten mit Kopfzahlen auskam, die ich schon parat hatte, sammele ich die zu Beleuchtungsstärken jetzt gerade aus der Broschüre (die sie wiederum aus der Wikipedia hat). Die Beleuchtungsstärke ist dabei ein Maß, wie viel Licht pro Flächeneinheit auftrifft. Es ist nicht falsch, sich vorzustellen, dass sie misst, wie hell ein Stück Papier wirkt, wenn ihr es in dem entsprechenden Licht anguckt.

    Und da will ich mir merken: An einem Sommertag draußen ist die Beleuchtungsstärke 90'000 Lux; ein ordentlich ausgeleuchtetes Büro („Pfui, ist das ungemütlich“) hat nur ein verblüffendes halbes Prozent davon (also etwa 500 Lux), ein fernsehgerechter Wohnraum („endlich keine doofe Arbeit mehr”) gar nur ein halbes Promille.

    Zu bedenken ist dabei allerdings, dass unsere Helligkeitswahrnehmung, wie fast alle unsere Sinne, logarithmisch funktioniert. Die Wahrnehmung von Intensitäten geht also wie der Logarithmus der einkommenden Energie (vgl. etwa Dezibel). Mithin wäre es vielleicht sinnvoller, sich 5 (plusminus der dekadische Logarithmus von 90'000), 2.5 (Büro) und 1.5 (Wohnraum) zu merken. Andererseits ist diese Sorte von Kopfzahl vielleicht auch relevanter, wenn mensch abschätzen will, ob – sagen wir – ein Solarlader was tun wird oder nicht. Sowas geht aber bei unverändertem Spektrum weitgehend linear mit der einkommenden Energie.

    Bei genaueren Betrachtungen sind photometrische Einheiten übrigens immer ein Graus – als Astronom könnte ich davon viele Lieder singen, von Jansky, AB-Magnituden (gibts noch nicht in der deutschen Wikipedia) versus Vega-Magnituden (gibts noch nicht mal in der englischen Wikipedia) und vielem mehr. Immerhin kann ich mir traditionell merken, dass ein ordentlicher Beamer für Besprechungsräume 2000 Lumen Lichtstrom erzeugt. Dieser Lichtstrom ist so in etwa ein Maß dafür, wie viele Photonen (bei gegebener Frequenz und damit Energie pro Photon) pro Zeiteinheit aus so einer Lampe kommen[4]. Und ich kann mir gerade noch so merken, dass

    1  lux = (1  lm)/(1 m2)

    ist. Wenn ihr ein wenig rechnet, heißt das: Damit ein A5-Blatt (faul idealisiert auf 15 mal 15 Zentimeter) genauso hell scheint wie im Sommersonnenschein, braucht ihr das ganze Licht eines ordentlichen Beamers auf diesem Stück Papier. Das hätte ich per Bauchgefühl ganz anders geschätzt.

    Noch was gelernt heute.

    [1]Schweizer Provenienz heißt auch: Nicht ein blödes scharfes s im ganzen Text. Fantastisch! Können wir dießen Quatsch hier auch abschaffen?
    [2]Die englische Wikipedia …
  • Klarsprache: Migrationskontrolle als militärisches Problem

    Foto: Betonmauer und Wachturm, rekonstruiert an der Mauer-Gedenkstätte in der Bornholmer Straße in Berlin, gesehen von der alten Ostseite.

    Ist das noch ein Zaun? Und was sagen die „militärischen Fachleute“ zu seiner Eignung?

    Die Militarisierung aller möglicher Politikfelder hat ganz sicher nicht erst mit der <hust> Zeitenwende angefangen; speziell bei der Migrationskontrolle – noch spezieller bei der gewaltformigen Abwehr regierungsseitig unerwünschter Menschen – markiert etwa die Gründung von Frontex im Jahr 2004 so eine <hust> Zeitenwende.

    Die <hust> „verteidigungs”-politischen Richtlinien der Bundeswehr signalisieren in der Frage jedoch Kontinuität. In deren ersten Version (1992) ist nicht nur bereits sieben Jahre vor dem ersten ordentlichen Krieg der Bundeswehr von der (sc. militärischen) „Aufrechterhaltung des freien Welthandels und des ungehinderten Zugangs zu Märkten und Rohstoffen in aller Welt“ die Rede. Nein, im Einklang mit den damaligen Angriffen auf das Grundrecht auf Asyl formulierte die Bundeswehr:

    Jede Form internationaler Destabilisierung […] setzt Migrationsbewegungen in Gang […] Bei insgesamt negativem Entwicklungsverlauf kann dieser Zusammenhang auch militärische Dimensionen gewinnen.

    In der aktuellen Version von 2011 liest sich das so:

    Sicherheit wird nicht ausschließlich geografisch definiert. Entwicklungen in Regionen an Europas Peripherie und außerhalb des europäischen Sicherheits- und Stabilitätsraumes können unmittelbaren Einfluss auf die Sicherheit Deutschlands entfalten [… Es] entstehen Bedrohungen wie Bürgerkrieg, Destabilisierung von Regionen, humanitäre Krisen und damit verbundene Phänomene wie Radikalisierung und Migrationsbewegungen.

    Ob bereits in der nächsten Version dieser „Leitlinien“ direkt von der militärischen Kontrolle von „Bedrohungen“ durch grenzüberschreitende Menschen die Rede sein wird, bleibt abzuwarten.

    Dass die EU-Kommission schon seit Jahren in dieser Richtung diskutiert, kann hingegen spätestens seit heute morgen als gesichert gelten. Da nämlich hat Friedbert Meurer im Deutschlandfunk Franz Fischler interviewt, der von 1995 bis 2004 – also gerade in der Entwurfsphase von Frontex – in der EU-Kommission das (schon aus finanziellen Gründen) mächtige Landwirtschaftressort geleitet hat.

    Gefragt, was er von einem „Zaun“[1] halte, der zwischen der Türkei und Bulgarien Flüchtende abwehren soll, sagte dieser Mann (ca. Minute 2:10):

    …das kann ich jetzt auch nicht beweisen, ob es hilft oder nicht hilft [… von der Leyen meint, man] muss das also entsprechend auch ausstatten, mit Kameras, mit Luftraumüberwachung, mit Drohnen und was weiß ich was. Die anderen sagen, es hilft gar nicht. Also, ich kann da hier nicht den Schiedsrichter spielen, ich glaube, da muss man sich auf die militärischen Fachleute verlassen. [Hervorhebung A.F.]

    Das ist schon ziemlich klare Klarsprache: Die Frage ist längst nicht mehr, ob „wir“ Asylsuchende (oder ggf. auch anderweitig Migrierende) mit Gewalt abweisen dürfen oder gar sollen. Die Frage ist nicht mal mehr, welche Mittel für so ein eigentlich menschenrechtswidriges Verhalten ethisch oder juristisch in Ordnung gehen könnten. Die Frage ist einfach nur noch, was militärisch nützlich oder wirksam sein könnte.

    Ich frage mich mal wieder, was die Menschen in hundert Jahren über uns denken werden.

    [1]Es gibt ein Spektrum zwischen Vorort-Jägerzaun und Todesstreifen – ich habe den „Zaun“ hier mal in Anführungszeichen gesetzt, weil das diskutierte Bauwerk auf diesem Spektrum wahrscheinlich näher beim Todesstreifen liegen würde als beim Jägerzaun.
  • Eine neue Metrik für Webseiten: Crapicity

    Screenshot einer Webseite mit großem Banner "Crapicity" über einer Eingabezeile und einer Balkengrafik, die nach Lognormal-Verteilung aussieht.

    Die Krapizität der Webseiten, auf die ich hier so verlinkt habe (und noch ein paar mehr): works with netsurf!

    Kurz nachdem das Web seine akademische Unschuld verloren hat, Ende der 1990er, habe ich den UNiMUT Schwobifying Proxy geschrieben, ein kleines Skript, das das ganze Web in Schwäbisch, hust, erlebbar machte. Tatsächlich hat mir das gegen 2002 meine 15 Minuten des Ruhms verschafft, inklusive 200'000 Zugriffen pro Tag (fürs damalige Netz rasend viel), Besprechungen auf heise.de, spiegel.de und, für mich offen gestanden am schmeichelndsten, in Forschung aktuell (also gut: Computer und Kommunikation) im Deutschlandfunk.

    Ein heimlich verwandtes Web-Experiment war dass Dummschwätzranking von 1998, das – nicht völlig albern – die Dichte von (damals gerade modernen) Heißdampfworten in Webseiten beurteilt hat – dafür interessieren[1] sich bis heute Leute.

    Beide Spielereien sind praktisch abgestellt, teils, weil das kommerzielle Internet und SEO solche Sachen rechtlich oder praktisch sprengen. Teils aber auch, weil sie darauf bauen, dass das, was Leute im Browser sehen, auch in etwa das ist, was im HTML drinsteht, das so ein Programm von den Webservern bekommt. Das aber ist leider im Zuge der Javascriptisierung des Web immer weniger der Fall.

    Nun ist sicherlich die Habituierung der Menschen an „lass einfach mal alle Leute, von denen du was lesen willst, Code auf deiner Maschine ausführen“ die deutlich giftigere Folge des Post-Web-1-Megatrends. Aber schade ist es trotzdem, dass zumindest im kommerziellen Web kein Mensch mehr in die Seiten schreibt, was nachher in den dicken Javascript-Browsern angezeigt werden wird.

    Und weil das schade ist, habe ich einen postmodernen Nachfolger des Dummschwätzrankings geschrieben: Die Crapicity-Maschine (sorry, nicht lokalisiert, aber sprachlich sowieso eher arm). Ihre Metrik, namentlich die Crapicity oder kurz c7y: das Verhältnis der Länge lesbaren Textes (das, was ohne Javascript an Zeichen auf den Bildschirm zu lesen ist) zur Gesamtlänge der Seite mit allem eingebetteten Markup, Javascript und CSS (also: externes Javascript, CSS usf nicht gerechnet). In Python mit dem wunderbaren BeautifulSoup-Modul ist das schnell berechnet:

    def compute_crapicity(doc):
      """returns the crapicity of html in doc.
    
      doc really should be a str -- but if len() and BeautifulSoup() return
      something sensible with it, you can get away with something else, too.
      """
      parsed = BeautifulSoup(doc, "html.parser")
      content_length = max(len(parsed.text), 1)
      return len(doc)/content_length
    

    Um diese knappe Funktion herum habe fast 700 Zeilen herumgeklöppelt, die Ergebnisse in einer SQLite-Datenbank festhalten und ein Webinterface bereitstellen. Als Debian-und-eine-Datei-Programm sollte das recht einfach an vielen Stellen laufen können – wer mag, bekommt die Software bei codeberg.

    Die Web-Schnittstelle bei https://blog.tfiu.de/c7y hat aber den Vorteil, dass sich die Scores sammeln. Spielt gerne damit rum und empfiehlt es weiter – ich fände es putzig, da vielleicht 10'000 Seiten vertreten zu haben. Ich habe selbst schon knapp 200 Web-Ressourcen durchgepfiffen, meistenteils Links aus dem Blog hier.

    Im Groben kommt raus, was wohl jedeR erwartet hat: Das kommerzielle Netz stinkt, alter Kram und Techno-Seiten sind meist ganz ok. Allerdings habe ich den aktuellen Spitzenreiter, eine Reddit-Seite mit einem c7y von über 17'000, noch nicht ganz debuggt: Erstaunlicherweise ist die Seite auch im netsurf und ohne Javascript lesbar. Wie sie das macht: nun, das habe ich in 800 kB Wirrnis noch nicht rausgefunden, und der Quellcode der Seite sieht so schrecklich aus, dass der Score sicherlich verdient ist.

    Ich nehme mal an, dass derzeit alle youtube-Seiten bei c7y=8222 liegen; dort ist ja durchweg ohne Javascript nichts zu sehen, und so haut auch dieser Score prima hin. Bei taz.de (gerade 892) geht es vielleicht nicht so gerecht zu, denn die Seite funktioniert in der Tat auch ohne Javascript ganz gut. Eventuell ist hier BeautifulSoup schuld. Hochverdient hingegen sind die 682 von nina.no – das ist ohne Javascript leer. Eine Twitter-Seite liegt bei 413, Bandcamp bei 247.

    Vernüftige Seiten liegen dagegen zwischen etwas über eins (minimales Markup) und zehn (z.B. wenig Text mit viel CSS). Dishonorable Mention: uni-heidelberg.de liegt trotz Akademia bei 177. Tatsächlich ist die Seite auch in normalen Browsern[2] halbwegs lesbar. Der schlechte Score liegt vor allem an eingebetten SVGs, ist also schon ein ganz klein wenig unfair. Aber ehrlich: wer für ein bisschen Glitz ein paar hundert Zeichen Text auf satte 680k aufbläht, hat eine große crapicity verdient, auch wenn die Seite selbst nicht richtig kaputt ist. Wer unbedingt so viel Glitz haben will, soll externe Bilder verwenden – die muss ich nicht runterladen, wenn ich nicht will.

    Wer interessante Krapizitäten findet: Die Kommentarbox wartet auf euch.

    [1]Na gut, viel von dem Interesse kam aus erkennbar aus SEO-Kreisen; das war dann auch einer der Gründe, warum ich das eintragen von Links beim Dummschwätzranking abgestellt habe.
    [2]Definiert als: Alles außer den Monstren Firefox, Chrome, Webkit und ihren Derivaten.
  • „Seit bald acht Jahrzehnten nicht mehr“?

    Plot einer Badewannenkurve; die Ränder sind Mai 2022 und Februar 2022

    Der Olivindex mal als Linie geplottet (oh: das ist mit einem Acht-Tage-Gauß geglättet).

    Ich lese immer noch flächendeckend die Presseschau im Deutschlandfunk, um meinen Olivindex fortzuführen. Gedacht als grobes Maß für die bedenkliche Mischung aus Kriegsbegeisterung und Patriotismus ist der Olivindex in Wirklichkeit der Anteil der in der Presseschau vertretenen Kommentare, die ersichtlich voraussetzen, dass an deutschem Militär und deutschen Waffen die Welt genesen könnte oder gar müsste.

    Seit dem letzten Mai habe ich am Fuß jeder Blog-Seite unter „Kriegsfieber aktuell“ jeweils eine Visualisierung dieser Scores als olive Farbbalken. Oben hingegen zeige ich das Ganze mal als klassischeren Plot, unter Wiederverwendung der Gauß-Glättung aus der Untersuchung der CO₂-Zeitreihe[1].

    Es wäre wahrscheinlich interessant, das allmähliche Absinken des journalistischen Kriegsfiebers zwischen Mai und Juli mit den Ereignissen zu korrelieren, das kurzfristige Wiederaufflackern im Laufe des Septembers – ich glaube, im Wesentlichen im Gefolge der russischen Teilmobilmachung –, die kühleren Herzen im November und Dezember und das Wiederanschwellen des Bocksgesangs hin zu den weiter wachsenden Waffenlieferungen der letzten Zeit. Aber das ist wahrscheinlich eine Arbeit, die mit mehr historischer Distanz besser von der Hand gehen wird.

    Ich erzähle das jetzt gerade alles nur, um zu motivieren, wie ich auf den Preisträgertext gekommen bin für den

    Horst-Köhler-Preis für beunruhigend ernst gemeinte Worte.

    Der aktuelle Preisträger ist die Pforzheimer Zeitung, die ausweislich der gestrigen DLF-Presseschau (wenn der Link kaputt ist: sorry, der DLF depubliziert den Kram immer noch rasend schnell) ausgerechnet die doch eher zahme Frage der Faeser-Kandidatur mit folgendem ziemlich unprovozierten Ausfall kommentiert:

    Bundesinnenministerin will die 52-Jährige bis zur Hessen-Wahl bleiben – also ‚nebenher‘ auch noch Wahlkampf machen. In einer Phase, in der die nationale Sicherheit Deutschlands so wichtig ist wie seit bald acht Jahrzehnten nicht mehr.

    Ummmm. Acht Jahrzehnte sind achtzig Jahre, 2023-80 gibt 1943. Damals war nach Ansicht des Pforzheimer Kommentators die „nationale Sicherheit“, zumal von „Deutschland“ ganz besonders „wichtig“? Uiuiuiui… Nun. Pforzheim. Die Stadt, in der bei den Landtagswahlen 2016 24.2% der Abstimmenden die AfD gewählt haben – damit waren die damals stärkste Kraft im Wahlkreis.

    Eine gewisse Logik liegt da schon drin. Unterdessen herzlichen Glückwünsch an den/die PreisträgerIn.

    [1]Nun: weil mir hier die Ränder wichtig waren, habe ich etwas mehr „Sorgfalt“ (mensch könnte auch von „Großzügigkeit” reden) auf das Padding am Anfang und Ende der Zeitreihe verwendet, also die Stellen, an denen der Glättungskern über die Daten rausreicht. Ich mache das jetzt gerade durch Fortschreibung der jeweiligen Randelemente; das gibt diesen an den Rändern viel zu viel Gewicht, aber es ist immer noch besser als einfach mit Nullen fortzuschreiben. Wer mag, kann mein Tricksen in der smooth_gauss-Funktion in olivin ansehen.
  • Speech Recognition with Whisper.cpp

    Today I stumbled across Whispers of A.I.'s Modular Future by James Somers, a piece that, at least by the standards of publications aimed at the general public, makes an excellent point of why whisper.cpp might finally be some useful and non-patronising output of the current AI hype.

    What can I say? I think I'm sold. And perhaps I'm now a little bit scared, too. If you want to understand way and speak a bit of German, you can skip to The Crazy right away.

    The Good

    You know, so far I've ignored most of the current statistical modelling (“AI”, “Machine Learning“) – if you need a graphics chip with drivers even worse than Intel's, and that then needs 8 GB of video RAM before anything works, I'm out. And I'm also out when the only way I can use some software is on some web page because there's proprietary data behind it.

    Not so for whisper.cpp. This is software as it was meant to be: trivial dependencies, compact, works on basically any hardware there is. To build it, you just run:

    git clone https://github.com/ggerganov/whisper.cpp/
    cd whisper.cpp
    make
    

    – and that's it. No dependency juggling down to incompatible micro versions, no fancy build system, just a few C(++) sources and a Makefile. The thing works in place without a hitch, and it has a sensible command line interface.

    Well, you need the language models, of course. There are some reasonably free ones for English. The whisper.cpp distribution's models/README.md explains how to obtain some. I got myself ggml-small.en.bin, recorded a few words of English into a file zw.wav and ran:

    ./main -m models/ggml-small.en.bin ~/zw.wav
    

    The machine demanded I use a samplerate of 16 kHz, I made audacity oblige, ran the thing again and was blown away when – admittedly after a surprisingly long time – my words appeared on the screen.

    I immediately tried to figure out how to stream in data but then quickly decided that's probably not worth the effort; the software needs to see words in context, and for what I plan to do – transcribing radio shows – having an intermediate WAV file really does not hurt.

    I quickly cobbled together a piece of Python wrapping the conversion (using the perennial classic of audio processing, sox) somewhat cleverly, like this:

    #!/usr/bin/python
    # A quick hack to transcribe audio files
    #
    # Dependencies:
    # * sox (would be mpv, but that's somehow broken)
    # * a build of whispercpp (https://github.com/ggerganov/whisper.cpp/)
    # * a language model (see models/README.md in the whisper source)
    
    import contextlib
    import os
    import subprocess
    import sys
    import tempfile
    
    WHISPER_DIR = "/usr/src/whisper.cpp"
    
    
    @contextlib.contextmanager
    def workdir(wd):
            prev_dir = os.getcwd()
            try:
                    os.chdir(wd)
                    yield
            finally:
                    os.chdir(prev_dir)
    
    
    def transcribe(audio_source, model, lang):
            """transcibes an audio file, creating an in-place .txt.
    
            model must be the name of a model file in WHISPER_DIR/models;
            lang is the ISO language code in which the output should turn up.
            """
            audio_source = os.path.join(os.getcwd(), audio_source)
            with tempfile.TemporaryDirectory(suffix="transcribe", dir="/var/tmp") as wd:
                    with workdir(wd):
                            subprocess.check_call(["sox",
                                    audio_source,
                                    "-b", "16", "-r", "16000", "-c", "1",
                                    "audiodump.wav"])
    
                            out_name = os.path.splitext(audio_source)[0]
                            subprocess.check_call([WHISPER_DIR+"/main",
                                    "-l", lang,
                                    "-m", WHISPER_DIR+"/models/"+model,
                                    "-otxt", "-of", out_name,
                                    "audiodump.wav"])
    
    
    def parse_command_line():
            import argparse
            parser = argparse.ArgumentParser(description="Wrap whisper.cpp to"
                    " bulk-transcribe audio files.")
            parser.add_argument("model", type=str, help="name of ggml language"
                    f" model to use, relative to {WHISPER_DIR}/models")
            parser.add_argument("audios", type=str, nargs="+",
                    help="Sox-translatable audio file to transliterate.")
            parser.add_argument("--lang", type=str, default="en",
                    help="Spoken language to try and recogonise")
    
            return parser.parse_args()
    
    
    if __name__=="__main__":
            args = parse_command_line()
            for audio in args.audios:
                    transcribe(audio, args.model, args.lang)
    

    Nachtrag (2023-06-26)

    (Added a --lang option as per ron's feedback below)

    I have that as transcribe.py in my path, and I can now enter the rip of an audiobook and say:

    transcribe.py ggml-small.en.bin *.ogg
    

    (provided I have downloaded the model as per whisper.cpp's instructions). After a little while (with high CPU usage), there is a transcript on my disk that's better what I had typed myself even after two rounds of proof-reading, except that whisper.cpp doesn't get the paragraphs right.

    For the first time in the current AI hype, I start getting carried away, in particular when I consider how much speech recognition sucked when I last played with it around 2003, using a heap of sorry failure called viavoice.

    The Bad

    Skip the rant to get to the exciting part.

    Trouble is: What I'd mainly like to transcribe is German radio, and whisper.cpp does not come with a German language model. Not to worry, one would think, as whisper.cpp comes with conversion scripts for the pyTorch-based whisper models like those one can get from Hugging Face. I downloaded what I think is the model file and cheerfully ran:

    $ python convert-h5-to-ggml.py /media/downloads/model.bin
    Traceback (most recent call last):
      File "/home/src/whisper.cpp/models/convert-h5-to-ggml.py", line 24, in <module>
        import torch
    ModuleNotFoundError: No module named 'torch'
    

    Oh bummer. Well, how hard can it be? Turns out: Surprisingly hard. There is no pytorch package Debian stable. Ah… I very much later realised there is, it's just that my main system still has an i386 userland, and pytorch is only available for amd64. But I hadn't figured that out then. So, I enabled a virtual python (never mix your system python and pip) and ran:

    $ pip install torch
    ERROR: Could not find a version that satisfies the requirement torch
    ERROR: No matching distribution found for torch
    

    Huh? What's that? I ran pip with a couple of -v sprinkled in, which at least yielded:

    [...]
    Skipping link: none of the wheel's tags match: cp38-cp38-win_amd64: https://download.pytorch.org/whl/cpu/torch-1.9.0%2Bcpu-cp38-cp38-win_amd64.whl (from https://download.pytorch.org/whl/cpu/torch/)
    [...]
    Given no hashes to check 0 links for project 'torch': discarding no candidates
    ERROR: Could not find a version that satisfies the requirement torch
    ERROR: No matching distribution found for torch
    [...]
    

    The message with “Given no“ has a certain lyric quality, but other than that from the “Skipping“ messages I concluded they don't have 32 bit builds any more.

    Well, how hard can it be? Pypi says the sources are on github, and so I cloned that repo. Oh boy, AI at its finest. The thing pulls in a whopping 3.5 Gigabytes of who-knows-what. Oh, come on.

    python setup.py build fails after a short while, complaining about missing typing_extensions. Manually running pip install typing_extensions fixes that. But I killed setup.py build after a few minutes when there were only 50/5719 files built. Has AI written that software?

    In the meantime, I had gone to a machine with a 64 bit userland, and to be fair the experience wasn't too bad there, except for the hellish amount of dependencies that pytorch pulls in.

    So, my expectations regarding “AI code” were by and large met in that second part of the adventure, including the little detail that the internal links on https://pypi.org/project/torch/ are broken because right now their document processor does not produce id attributes on the headlines. Yeah, I know, they're giving it all away for free and all that. But still, after the brief glimpse into the paradise of yesteryear's software that whisper.cpp afforded, this was a striking contrast.

    The Crazy

    So, I converted the German language model doing, in effect:

    git clone https://github.com/openai/whisper.git
    git lfs install
    git clone https://huggingface.co/bofenghuang/whisper-small-cv11-german
    python convert-h5-to-ggml.py whisper-small-cv11-german/ whisper tmp
    

    (where I took convert-h5-to-ggml.py from whisper.cpp's repo). Then I moved the resulting tmp/ggml-model.bin to german-small.ggml and ran:

    transcribe.py german-small.ggml peer_review_wie_objektiv_ist_das_wissenschaftliche_dlf_20221214_1646_8a93e930.mp3
    

    with my script above and this German-language mp3 from Deutschlandfunk. From the English experience, I had expected to get an almost flawless transliteration of the German text. What I got instead was (paragraphs inserted by me); listen to the audio in parallel if you can:

    Germany. Research is on [that was: Deutschlandfunk Forschung aktuell]

    A Nobel Prize for Science is not easy without further ado. They really need to find something out. For example, Vernon Smith, who is now 95 years old, is now the father of the Experimental Economy. In 2002 he won the Nobel Prize for Science.

    This made such a prize and renommee also make impression on other Fachleuteen and that actually influenced the unabhängig well-office method for scientific publications. This has recently shown a study of Business Science in the Fachmagazin PNS. Anike Meyer spoke with one of the authors.

    When Jürgen Huber and his colleagues thought about the experiment, it was clear to them that this is not fair. The same manuscript was given by two different authors, Vernon …

  • Trailing blanks, vim and git

    Trailing blanks may be␣␣␣␣␣
    evil when git displays diffs.␣␣␣␣␣␣␣
    Time to remove them.
    

    I'm currently going through a major transition on my main machine in that I have configured my vim to strip trailing blanks, that is, to automatically remove space characters (as in U+0020) immediately before the ends of lines[1].

    Why do I do this? I suppose it mainly started with PEP 8, a style guide für Python source code which says trailing whitespace is evil. It has a point, but I have to say trailing whitespace really became a problem only when style checkers started rejecting trailing blanks, which then made all kinds of tools – including other peoples' editors – automatically strip trailing whitespace.

    That, in turn, causes the diffs coming out of version control systems to inflate, usually without anyone – neither the people leaving the trailing whitespace nor the ones whose tools remove them – actually wanting that. And well, I tackled this about now because I was fed up with humonguous continuous integration runs failing at the very end because they found a blank at the end of some source file.

    So, while I can't say I'm convinced trailing whitespace actually is as evil as all that, I still have to stomp it out to preserve everyones' nerves.

    Configuring vim to replace trailing blanks with nothing when saving files is relatively straightforward (at least if you're willing to accept a cursor jump now and then). The internet is full of guides explaining what to do to just about any depth and sophistication.

    Me, I am using a variant of a venerable vintage 2010 recipe that uses an extra function to preserve the state over a search/replace operation to avoid jumping cursors. I particularly like about it that the Preserve function may come in handy in other contexts, too:

    function! Preserve(command)
      " run command without changing vim's internal state (much)
      let _s=@/
      let prevpos = getcurpos()
      execute a:command
      let @/=_s
      call cursor(prevpos[1], prevpos[2])
    endfunction
    
    au BufWritePre * if !&binary | call Preserve("%s/  *$//e") | endif
    

    That is now in my ~/.vimrc.

    But I still have all the repositories containing files having trailing blanks. To keep their histories comprehensible, I want to remove all trailing blanks in one commit and have that commit only do these whitespace fixes. The trouble is that even with version control (that lets you back out of overzealous edits) you will want to be careful what files you change. Strip trailing blanks in a (more or less) binary file and you will probably break that file.

    So, here is what I do to fix trailing blanks in files that need it while leaving alone the ones that would break, using this blog's VCS (about) as an example:

    1. In preparation, make sure you have committed all other changes. Bulk operations are dangerous, and you may want to roll back everything in case of a fateful typo. Also, you don't want to pollute some other, meaningful commit with all the whitespace noise.

    2. In the root of the repository, look for candidate files containing trailing blanks, combining find and grep like this:

      find . -type f | xargs grep -l ' $'
      

      A brief reminder what's going on here: grep -l just lists file names with matches of the regular expression, ' $' is a regular expression matching a blank at the end of a line; xargs is a brilliant program reading command line arguments for the program named in its arguments from stdin, and the find invocation prints all names of actual files (as opposed to directories) below the current directory.

      It may be preferable to use some grep with built-in find functionality (I sometimes use ripgrep), but if I can make do with basic GNU or even better POSIX, I do, because that's something that's on many boxes rather reliably.

      The price to pay in this particular case: this recipe won't work if you have blanks in your file names (using -print0 in find and -0 in xargs would fix things here, but then the next step would break). Do yourself a favour and don't have blanks in your filenames. Having dashes in them looks-better-anyway: it makes you look like a die-hard-LISP-person.

    3. Now use egrep -v to filter file names, building patterns of names to ignore and process later, respectively. For instance, depending on your VCS, you will usually have lots of matches in .git or .svn or whatever, and most of these will break when you touch them (not to mention they won't spoil your history anyway). Coversely, it is clear that I want to strip trailing blanks on ReStructuredText files. My two patterns now grow in two separate egrep calls, one for files I don't want to look at, the other for files I will want to strip trailing blanks in:

      find . -type f |\
        egrep -v '\.git' |\
        egrep -v '\.rst$' | xargs grep -l ' $'
      

      This prints a much smaller list of names of files for which I have not yet decided whether or not to strip them.

    4. Repeat this: On the side of files I shouldn't touch, I spot some names ending in .jpeg, .png, and .db. On the side of files that need processing, I notice .html, .css, and .py. So, my next iteration is:

      find . -type f |\
        egrep -v '\.git|\.(jpeg|png|db)$' |\
        egrep -v '\.(rst|html|css|py)$' |\
        xargs grep -l ' $'
      

      That's a still smaller list of file names, among which I spot the index files used by my search engine in .xapian_db, .pyc files used by Python, and a vim .swp file. On the other hand I do want to process some files without an extension, so my next search command ends up as:

      find . -type f |\
        egrep -v '\.git|\.xapian_db|\.(jpeg|png|db|pyc|swp)$' |\
        egrep -v 'README|build-one|\.(rst|html|css|py)$' |\
        xargs grep -l ' $'
      

      That's it – this only leaves a few files as undecided, and I can quickly eyeball their names to ascertain I do not want to touch them. My second pattern now describes the set of files that I want to strip trailing blanks from.

    5. Stripping trailing blanks is easily done from the command line with sed and its inline (-i) option: sed -i 's/  *$//' <file1> <file2>...[2]. The file names I can produce with find alone, because at least GNU find supports the extended regular expressions I have just produced in my patterns; it needs a -regexptype option to correctly interpret them, though:

      find . -regextype egrep -regex 'README|build-one|.*\.(rst|html|css|py)$' |\
        xargs grep -l ' $'
      

      The advantage of using find alone over simply inverting the egrep (by dropping the -v) is that my gut feeling is the likelihood of false positives slipping through is lower this way. However, contrary to the egrep above, find's -regex needs to match the entire file name, and so I need the .* before my pattern of extensions, and editing REs might very well produce false positives to begin with… Ah well.

      Have a last look at the list and then run the the in-place sed:

      find . -regextype egrep -regex 'README|build-one|.*\.(rst|html|css|py)$' |\
        xargs grep -l ' $' |\
        xargs sed -i 's/  *$//'
      
    6. Skim the output of git diff (or svn diff or whatever). Using the blacklist built above, you can see whether you have indeed removed trailing whitespace from files you wanted to process:

      find . -type f |\
        egrep -v '\.git|\.xapian_db|\.(jpeg|png|db|pyc|swp)$' |\
        xargs grep -l ' $'
      

      If these checks have given you some confidence that the trailing blanks have vanished and nothing else has been damaged, commit with a comment stressing that only whitespace has been changed. Then take a deep breath before tackling the next repo in this way.

    [1]This post assumes your sed and you agree on what marks the end of the line. Given it's been quite a while since I've last had to think about CRs or CRLFs, it would seem that's far less of a problem these days than it used to be.
    [2]Incidentally, that's a nice example for why I was so hesitant about stripping white space for all these years: Imagine some edits make it so a line break sneaks in between sed -i 's/ and *$//'. Then both blanks that are there are gone, and even if the text is reflowed again later, it will still be broken (though not catastrophically so in this particular case).
  • Neun Monate Umwelt-CO₂, Teil II: Hochpass, Tiefpass, Spektrum

    Eher wolkiges grünes Wabern mit der Zeit auf der Abszisse und Frequenzen von 1/3 bis 3 pro Tag auf der Ordinate.  Dann und wann sind Strukturen bei ganzzahligen Frequenzen erkennbar.

    Am Ende des Posts verrate ich, welche Bewandnis es mit diesem hübschen, nachgerade frühlingshaften Muster hat. Und auch, wie mensch sowas selbst macht.

    Ich habe letztes Jahr neun Monate lang CO₂-Konzentrationen auf meinem Balkon gemessen, in der Hoffnung, ein wenig hinter die Gründe für die doch überraschend großen Konzentrationsschwankungen zu kommen, für die ich bei einer ersten Messung im November 2021 nur sehr spekulative Erklärungen gefunden habe (Stand Februar vor allem: die lokale Heizung und eventuell das Kraftwerk in Rheinau oder die Chemiefabriken in Ladenburg oder Ludwigshafen). Ich habe dann neulich an der Kalibration der Daten gespielt und bin zum Schluss gekommen, dass sie nach Maßstäben von KonsumentInnenelektronik recht ordentlich sein dürften.

    Jetzt möchte ich ein wenig in den Daten rumfummeln. „Explorative Datenanalyse“ nennen das Leute, die das mit dem Fummeln nicht zugeben wollen, und in der ernsthaften Wissenschaft wird zurecht etwas die Nase gerümpft, wenn jemand sowas macht: Es stecken in jedem hinreichend großen Datensatz fast beliebig viele Korrelationen, und wer sie sucht, wird sie auch finden. Leider sind (fast) alle davon Eigenschaften des Datensatzes bzw. der Messung, nicht aber des untersuchten Gegenstands.

    Andererseits: Ohne Induktion (was in normale Sprache übersetzt „Rumspielen, bis mensch einen Einfall hat“ heißt) gibt es, da muss ich Karl Popper ganz heftig widersprechen, keine Erkenntnis, und Deduktion kann mensch nachher immer noch machen (also, ich jetzt nicht, weil das hier mein Freizeitvergnügen ist und keine Wissenschaft).

    Erstmal glätten

    Meine ganz große Enttäuschung mit dem Datensatz war ja, dass sich fast kein Jahreszeiteneffekt gezeigt hat; natürlich werde ich hier, mitten im dichtbesiedelten Oberrheingraben, kein so hübsches Signal bekommen wie die Leute mit der klassischen Messung am Mauna Loa – davon, dass ich eine Schwingung von ein paar ppm nachvollziehen könnte, ganz zu schweigen. Aber ich hatte im September 2021 unter 300 ppm gemessen, während es im Herbst auf die global eher aktuellen 400 bis 500 ppm hochging. Ich hatte gehofft, den Weg zurück zu den 300 ppm im Laufe des Sommers beobachten zu können. Doch leider ist in den (Roh-) Daten erstmal nur Gekrakel:

    Plot: Kurve, die fast immer zwischen 400 und 500 ppm zittert. Auf der Abszisse die Zeit zwischen Ende Dezember 2021 und Mitte September 2022.

    Wenn in einem Datensatz nur Gekrakel ist, es aber einen langfristigen Effekt geben soll, hilft oft Glätten. Dabei ersetzt mensch jeden Punkt durch einen geeignet gebildeten Mittelwert über eine größere Umgebung dieses Punktes, wodurch kurzfristiges Gewackel wie in meinen Rohdaten stark unterdrückt wird und die langfristigen Trends besser sichtbar werden sollte. Es gibt noch einen zweiten Gewinn: Mensch kann das so gewonnene Mittel von den Daten abziehen und hat sozusagen destilliertes Gewackel (den „hochfrequenten Anteil“), der auf diese Weise auch ein klareres Signal zeigen mag.

    Im einfachsten Fall lässt sich so eine Glättung in ein paar Zeilen Python schreiben, und das auch noch relativ effizient als gleitendes Mittel unter Verwendung einer zweiendigen Queue aus Pythons großartigem Collections-Modul: Um das Mittel zu berechnen, addiere ich auf einen Akkumulator, und das, was ich da addiere, muss ich wieder abziehen, wenn der entsprechende Wert aus dem Fenster rausläuft. Dazu gibts noch die Subtilität, dass ich Zeit und Konzentration in der Mitte des Fensters zurückgeben will. Das führt auf so eine Funktion:

    def iter_naively_smoothed(in_file, smooth_over):
        queue = collections.deque()
        accum = 0
    
        for time, co2 in iter_co2(in_file):
            queue.append((time, co2))
            accum += co2
            while time-queue[0][0]>smooth_over:
                _, old = queue.popleft()
                accum -= old
            time, base_co2 = queue[len(queue)//2]
            yield time, accum/len(queue), base_co2-accum/len(queue)
    

    Als Plot sehen die über drei Tage[1] geglättete Konzentrationskurve und die Residuen so aus:

    Zwei Kurven, oben eine wellige Linie (die geglättete Kurve), unten eine sehr zackige Punktwolke.

    Die Ränder, vor allem der linke, sind dabei mit Vorsicht zu genießen, da dort fast nichts geglättet ist; die Funktion ist so geschrieben, dass dort die Fenster klein sind. So oder so: auch die geglättete Kurve hat keine nennenswerte Tendenz. Allenfalls die beiden großen Ausschläge bei den Tagen 80 und 110 könnten ein Signal sein.

    Zeitrechnungen

    „Tag 80” ist jetzt keine wirklich intuitive Angabe, aber ich wollte in den Plots nicht mit läsitgen Kalenderdaten operieren. Für die Interpretation wären sie jedoch schon ganz gut. Wie komme ich von Messtag auf ein bürgerliches Datum?

    Die Daten kommen original mit Unix-Timestamps, also der Zahl der Sekunden seit dem 1.1.1970, 0:00 Uhr UTC, und sie fangen mit 1640612194 an. Um ausgehend davon bürgerliche Daten auszurechnen, muss mensch wissen, dass ein Tag 86400 Sekunden hat. Pythons datetime-Modul liefert dann:

    >>> import datetime
    >>> datetime.datetime.fromtimestamp(1640612194+80*86400)
    datetime.datetime(2022, 3, 17, 14, 36, 34)
    >>> datetime.datetime.fromtimestamp(1640612194+110*86400)
    datetime.datetime(2022, 4, 16, 15, 36, 34)
    

    Mitte März und Mitte April ist also möglicherweise was Interessantes passiert. Da gucke ich nochmal drauf, wenn ich demnächst Wetterdaten einbeziehe.

    Die andere Seite, die Residuen, kann ich für eine saubere Fassung des Tagesplots aus Teil 1 verwenden. Weil längerfristige Schwankungen bei ihnen rausgerechnet sind, sollte ein regelmäßiger Tagesgang in den Residuen deutlicher herauskommen als im ganzen Signal. Dazu nehme ich wieder den Rest bei der Division durch 86400 (siehe oben), und die Warnungen wegen Zeitzonen aus dem Kalibrationspost gelten immer noch.

    Ein Dichteplot, der im Groben flach verläuft, aber zwischen 10'000 und 25'000 Sekunden auf der Abszisse deutlich fransig ist.

    Dass da „am Morgen” (15000 Sekunden sind etwa 4:15 Uhr UTC, also 5:15 MEZ und 6:15 MESZ) irgendwas passiert, dürfte ein robustes Signal sein, und es kommt ohne die niederfrequenten Signale deutlich besser raus. Mit etwas Wohlwollen könnte mensch vielleicht sogar zwei Berge im Abstand von einer Stunde sehen, was dann Normal- und Sommerzeit entspräche. Da der Sensor nicht weit von der Bundesstraße 3 stand, liegt als Erklärung zunächst Berufs- und Pendelverkehr nahe.

    Wenn der Tagesgang tatsächlich mit dem Berufsverkehr am Morgen zu tun hat, müsste sich eigentlich ein Signal im Wochenrhythmus zeigen, denn zumindest Sonntags ist es hier am Morgen deutlich ruhiger als an Werktagen. Die Projektion auf die Woche ist einfach: Statt den Rest bei der Division durch 86'400 nehme ich jetzt den Rest bei der Division durch 604'800, die Zahl der Sekunden in einer Woche. Das Ergebnis zeigt, vielleicht etwas überraschend, das Tagessignal eher deutlicher; ein Wochensignal hingegen ist weniger überzeugend erkennbar:

    Ein pinkes Siebengebirge mit grob gleichhohen Gipfeln.

    Vielleicht ist an den Tagen drei und vier etwas weniger los – welche Wochentage sind das? Nun, ich dividiere hier Unix-Timestamps; ihr erinnert euch: Die Sekunden seit dem 1.1.1970. Welcher Wochentag war dieser 1.1.?

    $ cal 1 1970
        January 1970
    Su Mo Tu We Th Fr Sa
                 1  2  3
     4  5  6  7  8  9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
    

    Weil die Unix-Epoche so eine große Rolle im heutigen Leben spielt[2], nehme das mal als erweiterte Kopfzahl: Er war ein Donnerstag. Und so sind die Tage 3 und 4 tatsächlich Samstag und Sonntag. Meine Autoabgas-These ist mir durch diese Prüfung etwas sympathischer geworden. Vermutlich fallen die Abgase nur bei wenig Wind und wenig Thermik (das ist praktisch die berüchtigte Dunkelflaute…) auf, so dass das dunkle Band mit hoher Punktdichte mehr oder minder bei der Null bleibt, jedoch immer wieder Spitzen mit bis zu 100 ppm extra in der Rush Hour auftreten. Wenn das hier Wissenschaft wäre, müsste ich mich jetzt auf die Suche nach Daten aus der Verkehrszählung machen.

    Und ich müsste überlegen, ob die Zacken im dunklen Band nicht doch ein echtes Signal sind. Speziell der Durchhänger so um die 180'000 Sekunden (also in der Nacht von Freitag auf Samstag) ist eigentlich kaum wegzudiskutieren. Aber was könnte gerade da plausiblerweise mehr frische Luft heranführen? Oder ist das, weil die Freitagnacht wegen Spätcorona noch besonders ruhig war?

    In Sachen Spitzen am Morgen hätte ich eine Alternativhypothese zu den Autoabgasen: Das könnte nämlich wieder der lokale Brenner sein. Dann wäre das, was da zu sehen ist, die Warmwasserbereitung zur Morgendusche. Attraktiv ist diese These schon allein, weil mir 6:15 eigentlich ein wenig früh vorkommt für das Einsetzen der Rush Hour nach Heidelberg rein; es ist ja nicht so, als seien da noch viele nennenswerte Industriebetriebe, in denen die Leute um sieben stechen müssten. Allerdings: in einem Wohnblock mit so vielen Studis wie meinem hier ist 6:15 auch keine plausible Zeit für massenhaftes Duschen…

    Spektralanalyse

    Was ich gerade gemacht habe, ist ein Spezialfall einer gerade für uns AstrophysikerInnen extrem wichtigen Technik – ich habe nämlich ein Signal nach Frequenzen aufgeteilt. Bis hierher hatte ich nur in zwei Bänder, ein hohes und ein tiefes. Mit der Fourieranalyse geht das viel allgemeiner: Mensch steckt ein Signal rein und bekommt ein Spektrum heraus, eine Kurve, die für jede Frequenz sagt, wie stark Schwingungen auf dieser Frequenz zum Signal beitragen.

    Mit dem Universal-Werkzeugkasten scipy kriegt mensch so ein Spektrum in anderthalb Zeilen Python:

    from scipy import signal
    f, power = signal.periodogram(samples[:,1], fs=86400/24/120)
    

    Dabei übergebe ich nur meine Konzentrationsmessungen, nicht die zugehörigen Zeiten, weil die periodogram-Funktion nur mit gleichmäßig gesampleten Daten zurechtkommt. Das sind meine Daten zum Glück: zwischen zwei Messungen liegen immer 30 Sekunden, und es sind auch keine Lücken in den Daten.

    Die halbe Minute Abstand zwischen zwei Punkten übergebe ich im Argument fs, allerdings als Frequenz (der Kehrwert der Periode) und umgerechnet in die Einheit „pro …

  • Eingeschneite Mandelblüten

    Foto einer geöffneten Mandelblüte vor einer Schneelandschaft.

    Heute bei Dossenheim: Ob aus dieser Blüte mal eine Mandel wird, darf trefflich bezweifelt werden.

    Zu den großartigeren Projekten in und um Dossenheim gehören die Mandelbäume am Mantelbach, die unter der Ägide des Freundeskreises der Gemeindebücherei im Laufe der letzten zehn Jahre (oder so) gepflanzt wurden. Wer Ende Februar, Anfang März im Norden von Heidelberg unterwegs ist: Ich finde, die rosa Blütenpracht mit dem Duft von Omaseife ist jedenfalls einen kleinen Ausflug wert. Trotz Klimawandel dürften Mandelbäume, die zudem noch ganz ordentlich tragen, noch für eine Weile als spezielle Sehenswürdigkeit von Bergstraße und Südpfalz durchgehen.

    In diesem Jahr nun war es aber in der ersten Januarhälfte schon so warm, dass einige der mutigeren Bäumchen schon mal losgelegt haben. Und dann hat gestern Nacht ein Nordostwind für hiesige Verhältnisse beachtliche Mengen Schnee mitgebracht. Bei einem Spaziergang heute morgen taten mir die frühen Blüten (und noch mehr die Knospen) schon ein wenig leid.

    Während die Mandelblüten den Frost, glaube ich, nicht gut mitmachen werden, bin ich für den Winterjasmin ein Stück weiter oben in den Weinbergen eigentlich ganz guter Dinge, auch wenn er fast verschwunden ist im Schnee:

    Ein Schneehaufen mit Löchern, durch die gelbe Blüten sichtbar sind.
  • Oracle, Mozilla, W3C: Broken Links, Broken Web, Slugs in a Bucket

    Type plate of a DEC PDP 12 minicomputer.  A large rotary switch is set to offline.

    This post is about why today I had intense fantasies about having an offline switch at least as large as the one on this DEC PDP-12 photographed at Vienna Observatory in 2018.

    I give you it has become somewhat trite to state the obvious: The Web (and quite possibly most of the Internet) is broken. Admittedly, a few relatively simple measures – a few well-placed dnsmasq statements, a default-no-javascript browser and a general avoidance of for-profit pages – can hide quite a bit of that brokenness. Today, however, it hit me hard; and two nonprofits were part of what makes me once more seriously consider a livelihood as a gardener.

    A long history of evil getting worse

    I must concede that it didn't take the pure evil of Oracle to fool around with redirects instead of 404s and to wantonly tear down static pages that could have been maintained forever at zero cost. Even the lesser evil that Sun was did that, as evinced by this 2006 capture from the Web Archive. That's already less than ten years after JDK 1.1 was released a quarter century ago (February 1997).

    Which brings me to another reason to want to retire: This link has been broken for more than 15 years now. I suspect I'm imagining the W3C to be a lot better staffed than it actually is, and yes, touching normative content is a tricky thing to do. But either through an Erratum or as an editorial change the W3C could and should have fixed the clickjacked link some time within those 15 years. That would have been particularly thoughtful given that my reaction probably isn't too untypical: Rather than go to the Internet Archive to fetch the original documentation right away, I looked for DecimalFormat in today's Java documentation. And yay!, it says:

    It also supports […] scientific notation […] Example: "0.###E0" formats the number 1234 as "1.234E3".

    Except it didn't for me. The numbers were stubbornly unformatted regardless of what I did as soon as I tried any sort of scientific notation. Which drove me entirely crazy until I ran the browser from a terminal and saw log output there:

    error
    xsltFormatNumberConversion : error in format string '0.###E0', using default
    

    It still took a while until I realised the problem was not actually with the format string – that I had taken literally from the modern documentation: Gnah! – but that JDK 1.1 just didn't have the feature. I actually had to go to an older capture of Sun's documentation to figure that out (do donate to the Internet Archive, please).

    That was not the end of my webaches of the day.

    Mozilla: Crashes in the supply chain

    Proclamation: I'm a huge fan of the MDN whenever I do “web development“. You may hence get an idea of my desperation when, minutes after I had somewhat worked out the Sun-Oracle-W3C debacle, I was looking up the border-spacing CSS property at MDN and just saw a brief flash of content and then this:

    Screenshot: an empty browser window

    What deviltry…? From folks who are at least reasonably concerned about standards compliance and accessability? Well, a quick glance into the developer tools made my me shiver. Here's what I found in the error console:

    [Error] The source list for Content Security Policy directive 'script-src' contains an invalid source: ''report-sample''. It will be ignored.
    [and a lot more CSP stuff]
    [Error] Failed to load resource: Unacceptable TLS certificate (analytics.js, line 0)
    "Error executing Glean task: NotFoundError: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found."
    [Error] (Glean.core.Dispatcher) – "Error initializing dispatcher, won't execute anything further." – "There might be more error logs above."
    [Error] TypeError: null is not an object (evaluating 'localStorage.getItem')
    [Error] TypeError: null is not an object (evaluating 'localStorage.getItem')
    

    So… the Mozilla folks list all kinds of new-fangled (i.e., bullseye Webkit doesn't know about them) Content Security Policies. I'll allow they do that out of concern for my privacy – though frankly, I'm not much worried about cross-site scripting from MDN, in particular because the site generally works fine without Javascript (I don't remember when or why I switched it on for them). Be that as it may, after all the CSP-ing, they turn around and try to rat me out to Google analytics (which fails here because google-analytics.com resolves to 127.0.0.1 on my boxes). Hu?

    Want to report a bug? Feed Microsoft!

    Anyway, I had Javascript on, and then I got the blank page because rendering crashes when the thing cannot do Javascript local storage. If you wonder why I keep that off by default, check out my rant against it; sorry: in German). That's why I get a blank page. It all goes belly-up starting with a message “Unable to read theme from localStorage“ from witin some React code. Call me a purist, but I don't even see how you'd need the ghastly React Javascript “framework“ <cough> for a documentation site. Why this would need to store a theme at all and why this should be crashing the whole doument[2] when it can't do that is entirely beyond me.

    Given that Mozilla are (to some extent) good guys, I wanted to file a bug. They also were home to the premier bugtracker of the 2000s, bugzilla, so… No. Even the contribution guide [warning: github link] – a static document! – sits in github, collecting behavioural surplus for Microsoft.

    Ah… sorry, Mozilla, if React and github are your ideas of an open, accessible, and standards-compliant Web, there is no point filing bugs against MDN. That's not a good use of the surveillance capital I have to give.

    But then: being a gardener isn't all that idyllic either:

    Lots of slugs in a bucket

    Given that, Oracle and Mozilla are not much worse. So, I guess I'll keep doing computers for a little while, at least as long as I can somehow still work around the postmodern Web's breakage most of the time.

    [1]Well, actually I was looking at a local mirror of that, but if turns out that looking at the online material right away wouldn't have made a difference.
    [2]I just notice that the existence of the phrase “crashing a document“ is a rather characteristic symptom of the state of the Web.
  • Sympathie für myrmekophile Falter: Schwierig

    Foto eines blauen Schmetterlings

    Unsympath vom Dienst für diesen Post: Ein (Quandel-) Ameisenbläuling. CC-BY-SA PJC&Co

    Im Dezember letzten Jahres lief in der DLF-Sendung Forschung aktuell zur Begleitung der Weltnaturschutzkonferenz in Montreal eine großartige Miniserie mit Geräuschen von Tieren, deren Arten demnächst ziemlich wahrscheinlich aussterben werden. Ihr ebenfalls großartiger Titel: „Letzte Rufe“. Soweit ich sehe, haben die Deutschlandfunk-Leute keine eigene Seite für die Miniserie. Lasst mich geschwind einspringen:

    Ich finde, das ist ein sehr audiophiles Format. Und ich habe in jeder Folge etwas gelernt.

    Nur… nun, nennt mich einen Naturromantiker, aber speziell beim Ameisenbläuling fällt mir allzu viel Empathie schwer, auch wenn ich weiß, dass Parasiten in den meisten Ökosystemen stark stabilisierende Funktionen haben. Es klingt einfach zu garstig, was die Viecher treiben.

    Sie sind nämlich Myrmekophile. Ich habe das Wort auch erst eben gelernt. Es bezeichnet Organismen, die an Ameisen „gebunden“ (Wortwahl des/der Wikipedia-AutorIn) sind. Bei Ameisenbläulingen heißt das etwas weniger beschönigend gesprochen, dass sie sich von Ameisen in deren Bau tragen lassen – etwa, indem sie durch abscheuliches Krächzen vorgeben, sie seien Königinnenlarven – und sich dort von diesen füttern lassen beziehungsweise gleich die Eier und Larven der Ameisen aufessen. In den Worten des Wikipedia-Artikels zum Quendel-Ameisenbläuling:

    Dennoch kommen viele Raupen [im Ameisennest] um, weil sie entweder in Gegenwart der Königin von den Arbeiterinnen angegriffen werden, oder weil sie das Ameisennest leer plündern und sich so selbst die Nahrungsgrundlage entziehen.

    Beim Lungenenzian-Ameisenbläuling ist es deutlich harmloser:

    Für die betroffenen Ameisenarten kann der Parasitenbefall zu einer Verkleinerung der Kolonie führen, da die bevorzugte Fütterung der Schmetterlingslarven den eigenen Nachwuchs gefährdet.

    Aber immerhin sind diese speziellen Falter relativ wenig manipulativ:

    Nach dem Schlüpfen bleibt den Faltern nicht viel Zeit für die Flucht, denn sie besitzen keine Duftstoffe, die sie vor den Ameisen schützen.

    Zum Hellen Wiesenknopf-Ameisenbläuling weiß die Wikipedia zu berichten:

    Etwa 98 % der Biomasse der Puppe (und des späteren Falters) stammt so von den Ressourcen des Ameisenvolkes. Es wurde geschätzt, dass bei den räuberisch lebenden Phengaris-Arten (P. teleius, P. arion und P. nausitous) etwa 350 Arbeiterinnen mittelbar nötig sind, um eine Phengaris-Larve zu ernähren. Diese Zahl wird benötigt, um die Nahrung für die Ameisenbrut zu beschaffen, die von den Phengaris-Larven gefressen wird.

    Sagt, was ihr wollt: Als Sympathieträger gegen das Insektensterben würde ich mir eine andere Art aussuchen. Jedenfalls solange, bis auch Menschen wie ich deutlich mehr Instinkt entwickelt haben für Ökosysteme und die Rolle, die auch Tiere mit nach menschlichen Maßstäben nicht so feinen Manieren darin spielen. Bis dahin kann ich die spontane Reaktion einer Freundin gut nachvollziehen: „Die Biester sollen ruhig aussterben“.

  • Von Verblindung und fachbedinger Blindheit

    Foto eines Notebookdeckels mit Aufkleber „Elsevirus“ und einem vertrockneten Baum (ein Spoof des Elsevier-Logos)

    Nur ein Symptom, nicht die Ursache: das wissenschaftliche Publikationswesen und seine unsympathischen Profiteure.

    Angesichts meiner fundamentalen Skepsis im Hinblick auf die epistemologischen Meriten der Wirtschaftswissenschaften an und für sich (ahem) bin ich selbst etwas überrascht, wie viele Wiwi-Arbeiten auf diesem Blog vorkommen. Immerhin: dieses Mal geht es eigentlich gar nicht um die Publikation selbst.

    Die Aussage des Artikels „Nobel and Novice: Author Prominence Affects Peer Review“ von Jürgen Huber und Kollegen aus Innsbruck, Graz und Los Angeles, doi:10.2139/ssrn.4190976, ist nämlich ein Gemeinplatz: Das Begutachtungsverfahren wissenschaftlicher Arbeiten ist kaputt. In diesem speziellen Fall: Ein Artikel wird oft vollständig zurückgewiesen, wenn er von wem eingereicht wird, dessen oder deren Name afrikanisch klingt, und oft ohne Korrekturwünsche angenommen, wenn auf der AutorInnenliste eine anerkannte Kapazität hinreichend weit vorne steht. Hier hat das halt mal wer ausprobiert, zwecks der Demo mit jeweils dem (ansonsten) gleichen Artikel.

    Aber wenns doch klar war?

    Nun gut, die Größe des im Paper gefundenen Effekts überrascht auch mich. Ich hatte eigentlich erwartet, dass es ein paar mehr Leute gibt, die Papers von DoktorandInnen aus Weichherzgründen eher mal durchwinken, weil diese die Publikation ja viel nötiger haben als die, die in Rente sind oder auf einer Professur sitzen. Aber diese Überraschung hätte mich jetzt nicht an die Tastatur gerufen.

    Wirklich kommentarbedürftig fand ich stattdessen die Aussage des Hauptautors in DLF Forschung aktuell vom 14.12.2022 (ab Minute 1:30):

    Die Begutachtung von wissenschaftlichen Arbeiten durch andere Wissenschaftler ist ja für Publikationen wichtig, für Forschungsgelder, dafür, wer Jobs bekommt, wer Professor wird und so weiter. Also, das ist ganz wichtig, dass wir diesen Prozess so objektiv, so fair wie möglich gestalten, damit auch die Gelder, die ja oft von der öffentlichen Hand kommen, bestmöglich verwendet werden, damit wir Fortschritte haben.

    Huber benennt den wesentlichen Grund dafür, dass das System wissenschaftlichen Publizierens disfunktional ist: Artikel und Zitate werden missbraucht als Metriken in dem Wettbewerb, in den WissenschaftlerInnen – also Menschen, die eigentlich lieber Zeug rausfinden wollen – geschickt werden, und der mit Zuckerbrot („Karriere“) und Peitsche (die meisten werden rausgekegelt) auf alarmierende Hitzegrade gebracht wird.

    Gut für „den Fortschritt“ oder gar die Wissenschaft ist dieser Zirkus natürlich nicht. Sein Fallout im Publikationswesen führt zudem dazu, dass Leute innerhalb von fünf Jahren fünfzehn verdünnte Paper raushauen statt nach fünf Jahren eine profunde Arbeit zu publizieren und dass jede Menge Zeit und Nerven draufgehen beim Schreiben und Begutachten dieser Artikel. Er bewirkt zudem, dass Zitate immer schlechter den Fluss von Ideen abbilden (was ja ihr eigentlicher Zweck ist) und immer mehr taktische Erwägungen (was schade ist).

    Gute und schlechte Fragen

    Aus der Diagnose, dass der Missbrauch von Publikationen als ökonomische Metrik der Wissenschaft schadet, würde logisch doch zumindest die Frage folgen: Lässt sich das auch wieder entkoppeln?

    Nicht so aber für Huber, der stattdessen fragt: können wir die Metrik fairer machen? Diese Frage halte ich für besonders falsch gestellt, denn klarerweise würde selbst ein guter Plan in dieser Richtung (vgl. unten) nichts ändern an taktischen Zitationen oder der Flut von Papern, die rundrum nur Zeit verschwenden; er würde sie vermutlich noch verschärfen.

    Ich frage mich ehrlich, warum der naheliegende Ansatz zur Lösung der Probleme Huber offenbar gar nicht in den Sinn kommt, nämlich: weniger Wettbewerb, und vor allem das Ende des Missbrauchs von Publikationen und Zitationen als Metriken in den diversen Wettbewerben.

    Wie die Allokation von Forschungsmitteln sonst funktionieren soll, fragt ihr? Nun, solange wir noch das System von universeller Lohnarbeit unter Existenzdrohung haben, werden flachere Hierarchien[1], die Abschaffung befristeter Beschäftigungsverhältnisse[2], die Rückverschiebung der Finanzierung durch „Drittmittel“ (die in Wahrheit ja in den nicht-gruseligen Fällen auch vom Staat kommen) auf die Grundfinanzierung, womit auch der Zugang zumindest kleinen und mittleren Instrumenten weniger kompetetiv würde; so Zeug halt, Wissenschaft als Beruf mit ganz normalen Beschäftigtenrechten. Und wo doch noch Anträge geschrieben werden: Würfelt aus, wer gefördert wird. Das wird in etwa genauso „gute“ Ergebnisse liefern wie die gegenwärtige Begutachtung, macht aber viel weniger Arbeit und vermeidet einige Fehlsteuerungen, allen voran die Selbstverstärkung von Moden und Hypes durch den Geldhebel.

    Klar: Vielleicht arbeiten dann ein paar der Beschäftigten weniger. Aber erstens würde der Wegfall der ganzen Wettbewerbs-Reibungsverluste das garantiert mehr als kompensieren. Und zweitens hat Wissenschaft den großen Vorteil, dass sie sehr nah am Spielen ist und so Leute in aller Regel keine Motivation durch Existenzdrohung oder auch Karriere-Zuckerbrot brauchen[3].

    Das war jetzt die reformistische Version. Etwas langfristiger gedacht werden Menschen in einer Gesellschaft, die ihre Produktion rational (was produzieren wir so, dass Mensch und Natur minimal belastet werden?) organisiert, also in einer Gesellschaft, in der die Menschen grundsätzlich weit weniger erpressbar sind, auch weit weniger durchgeknallte Systeme ersinnen, ihre Erkenntnisse zu verbreiten als unsere derzeitigen Journals.

    Die Allokation von Produktionsmitteln oder Umweltressourcen auf die Forschungsfragen wäre dann ein ganz normales Thema gesellschaftlicher Debatte, ganz wie die Frage, ob mensch, sagen wir mal, dünne und kurzlebige Fahrradketten für Zehnfach-Ritzel in gesellschaftlicher Arbeit herstellen will oder nicht. Fragen dieses Typs müsste so eine Gesellschaft ziemlich regelmäßig erörtern, da kommt es auf ein paar Debatten mit Wissenschafts-Hintergrund auch nicht mehr an.

    Noch nicht mal Einfachverblindet

    Ich will noch ganz kurz anmerken, dass der Lösungsvorschlag aus dem DLF-Beitrag, die Begutachtung doch doppelt zu verblinden in den meisten Disziplinen eher zu „unmöglich“ als zur „schwierig“-Einschätzung von Anneke Meyer tendiert. Zumeist sind die Felder doch so übersichtlich, dass, wer genügend Überblick für ein qualifiziertes Review hat, sich auch denken kann, wer da schreibt – genau wie zumindest in der Astronomie die meisten Leute, die eine Weile in ihren Feldern sind, schon an den Reviews ahnen, wer wohl als GutachterIn gearbeitet hat.

    Selbst wo das – wie in ausgesprochenen Trendfächern – nicht der Fall ist, wären Methoden, Instrumente, Vorarbeiten und Kontext einer Arbeit so charakteristisch, dass Papers zur Verblindung komplett zerschrieben werden müssten. Damit würde nicht nur der Wettbewerb, zu dessen Austragung die Publikationsmetriken missbraucht werden, die Wissenschaft massiv schädigen – wie bereits jetzt bei den Zitationen würde schon die Erhebung der Metrik der Wissenschaft schaden, weil die Paper notwendig unklar und wirr würden.

    Wieder kann ich zum Ende einer Klugscheißerei nicht widerstehen: Wenn der DLF-Moderator behauptet, Vernon Smith habe 2002 den Nobelpreis erhalten, ist dem im Sinne von Alfred Nobel zu widersprechen – Smith hat den „Preis für Wirtschaftswissenschaften der schwedischen Reichsbank in Gedenken an Alfred Nobel“ bekommen, der seit 1969 verliehen wird (richtige Nobelpreise: seit 1901). Aber dann: die Aufregung um die Groß- und Kleinpreise („Preis der Bäckerinnung Berlin-Brandenburg für engagierte Berichterstattung zur Tortenkultur“) gehört natürlich auch zu den Dingen, die demnächst im Zuge des Wettbewerbsabbaus wegkönnen.

    [1]Dazu gehört insbesondere die Abschaffung des archaischen Lehrstuhlprinzips – Menschen außerhalb das Uni-Systems können sich das meist gar nicht vorstellen, aber an Universitäten sind MitarbeiterInnen tatsächlich ihren Profen zugeordnet, und es ist üblich, die Beschäftigten eines Lehrstuhls komplett auszutauschen, wenn einE neueR ProfIn „berufen“ (ja, so heißt eine Einstellung wirklich noch) wird. in der Praxis wird auf so etwas schon Jahre im Vorhinein geplant. Profi-Tipp: wenn ihr an einer deutschen Uni verdauert werden wollt (und es gibt gute Gründe, das derzeit lieber nicht zu wollen), sorgt dafür in den ersten drei Jahren eures Profs. Danach nämlich plant die Uni schon für die Berufung seines_r Nachfolger_in und wird alles tun, um entsprechende Stellen für Berufungsverhandlungen „verfügbar“ zu halten…
    [2]Oder jedenfalls: nicht mehr 80% befristete Beschäftigte im aktiven Wissenschaftsbetrieb, wie gegenwärtig an den Unis (Profen zähle ich dabei vielleicht etwas übertriebenermaßen zur Verwaltung).
    [3]Um nicht missverstanden zu werden: die intrinsiche Motivation gibts natürlich in vielen anderen Jobs auch, aber verglichen mit, sagen wir, Immobilienmakelei oder internationalem Wirtschaftsrecht ist Wissenschaft doch eine ganz andere Liga in Sachen erreichbarer Zufriedenheit im Beruf.
  • Radikale Opportunität: Die BRD klagt gegen italienische Naziopfer

    Herbstliches Foto: halbuniformierierte Männer mit Verbindungskäppis stehen auf einem Parkplatz

    Oberhalb von Heidelberg befindet sich auf dem Ameisenbuckel ein Friedhof, auf dem Soldaten des Kaisers und der NSDAP-Regierung „geehrt“ werden. Hier also liegen die, um deren Opfer es in diesem Post gehen sollte. Bis vor ein paar Jahren (hier: 2007) trafen sich zum „Volkstrauertag“ dort oben aktuelle Militärs, reaktionäre Verbindungsstudis und Leute von der Stadt, um… Ja, wozu eigentlich?

    So wertvoll es ist, wenn gerade Staaten sich an Recht gebunden fühlen – und so doof es ist, wenn sie das mutwillig nicht tun –, mensch sollte gerade in Zeiten, in denen (jedenfalls verlautbart) „für das Völkerrecht“ getötet wird, nicht vergessen, dass Recht von denen gesetzt wird, die die Gewaltmittel dazu haben, und dass Rechtsetzung zwischen Staaten eine in der Regel recht unappetitliche Angelegenheit ist.

    Eine bedrückende Demonstration irritierender Rechtspraxis fand im April 2022 statt. Damals hat das wohl nicht viel Presseecho gegeben; ich jedenfalls bin erst durch späte Lektüre der Ausgabe 3/22 der Zeitung der Roten Hilfe (S. 44ff) darauf aufmerksam geworden. Dies hier ist ein Versuch, der Geschichte – die noch nicht vorbei ist – noch etwas mehr Aufmerksamkeit zu verschaffen.

    Schon im April fantasierten ja große Teile der deutschen Regierung öffentlich darüber, wie Putin und seine Truppe vor diversen internationalen Gerichten stehen würden[1]. Gleichzeitig jedoch, nämlich am 29.4., reichte genau diese Regierung eine Klage gegen Italien beim Internationalen Gerichtshof ein, um sich Immunität bei der Verfolgung von wirklich erschreckenden Kriegsverbrechen zu verschaffen (Einordnung bei der LTO).[2]

    Warnung an PatriotInnen: Der gesamte Großraum dieser Klage[3] ist ein dichtes Minenfeld für Überzeugungen, „Deutschland“ (also: seine diversen Regierungen) sei irgendwie für die Verteidigung von Freiheit und Menschenrechten qualifiziert.

    Grundsätzlich geht es darum, dass die paar verbliebenen Menschen, die sowohl Massaker deutschen Militärs im zweiten Weltkriegs als auch die Zeit seitdem überlebt haben, vor Gerichten in Italien (und übrigens auch Griechenland) Entschädigungsansprüche durchgeklagt haben. Tatsächlich wurden sogar schon verschiedentlich deutsche Vermögenswerte beschlagnahmt (Beispiel im Gefolge des Massakers im griechischen Distomo: Das Goethe-Institut in Athen).

    Nur haben deutsche Regierungen immer so heftigen Druck auf die Regierungen in Rom und Athen ausgeübt, dass diese, Gewaltenteilung hin, Gewaltenteilung her, ihrer Justiz regelmäßig in die Parade gefahren sind. Auf Zeit spielen lohnt hier, denn das Problem der Überlebenden wird sich ja in ein paar Jahren von selbst „gelöst” haben.

    Das Verfahren vom letzten April nun versucht, ein paar weitere Schlupflöcher zu stopfen, die vorherige Verfahren in Den Haag nationalen Gerichten gelassen haben, um die Doktrin staatlicher Immunität im Krieg (und auch sonst) zu umgehen. Den Haag hat schon 2012 für die BRD entschieden; es ist kaum davon auszugehen, dass die italienische Regierung eine starke Verteidigung aufbauen wird, nachdem sie in all den Jahren deutschem Druck nicht viel entgegengesetzt hat.

    Diese Sorte Umgang mit Recht („Bomben auf die Infrastruktur sind zwar pfui, gehen aber bei uns und unseren Freunden schon in Ordnung“) läuft unter dem Label „Opportunität“. Sie steht ganz wie in Rom oder Athen angewandt auch in unserer Strafprozessordnung. Schaut zum Beispiel mal auf §153d StPO:

    § 153d Absehen von der Verfolgung bei Staatsschutzdelikten wegen überwiegender öffentlicher Interessen

    (1) Der Generalbundesanwalt kann von der Verfolgung von Straftaten der in § 74a Abs. 1 Nr. 2 bis 6 und in § 120 Abs. 1 Nr. 2 bis 7 des Gerichtsverfassungsgesetzes bezeichneten Art [das ist eine Sammlung politisch aufgeladener Normen aus dem Strafgesetzbuch] absehen, wenn die Durchführung des Verfahrens die Gefahr eines schweren Nachteils für die Bundesrepublik Deutschland herbeiführen würde oder wenn der Verfolgung sonstige überwiegende öffentliche Interessen entgegenstehen.

    (2) Ist die Klage bereits erhoben, so kann der Generalbundesanwalt unter den in Absatz 1 bezeichneten Voraussetzungen die Klage in jeder Lage des Verfahrens zurücknehmen und das Verfahren einstellen.

    Ich muss bei solchem Text ja an Andreas Temme denken. Aber soweit ich weiß, hat gegen ihn noch nicht mal wer ein Verfahren eröffnet, das des 153d bedurft hätte.

    [1]So berichtet der DLF am 9.4., ausgerechnet „Bundespräsident Steinmeier hat sich für einen Prozess gegen Russlands Präsidenten Putin und Außenminister Lawrow vor dem Internationalen Strafgerichtshof in Den Haag ausgesprochen.“ Ich habe „ausgerechnet“ geschrieben, weil Steinmeier als Chef des Bundeskanzleramts (nicht nur) zur Zeit des deutschen Angriffs auf Restjugoslawien 1999 selbst an offener Aggression beteiligt war, als oberster Geheimdienstchef obendrein in Verwantwortung für die BND-Operationen Richtung UCK, zu denen er spätestens jetzt für Aufklärung sorgen könnte. Und dann: er hat sich bis heute nicht bei Murat Kurnaz entschuldigt.
    [2]Whoa, ruft ihr, deine Überschrift ist Clickbait, weil die Regierung ja gegen Italien klagt und gar nicht gegen Naziopfer? Na ja, vielleicht ist es ein ganz klein wenig Clickbait, aber mal ehrlich: Wenn ihr nur knapp den Mordorgien deutscher Truppen entgangen wärt, und die Rechtsnachfolger von deren Befehlshabern würden jetzt solche Verfahren einleiten: Würdet ihr nicht finden, dass diese Klagen gegen euch gehen?
    [3]Angefangen von der Weigerung der Staatsanwaltschaft Stuttgart, ein Verfahren wegen des Massakers von Sant'Anna di Stazzema zu führen, nachdem die BRD schon abgelehnt hatte, 2005 in Italien verurteilte SS-Männer auszuliefern (vgl. Berichterstattung in der taz vom 23.3.2013).

« Seite 5 / 16 »

Letzte Ergänzungen