• Es war nicht die Inflation

    Im Hintergrund Politik vom 2.2.2022 am Deutschlandfunk war zu hören:

    [Die „Stabilitätsorientierung“ der Bundesbank] hat auch historische Gründe: Die Erfahrungen der galoppierenden Inflation zum Ende der Weimarer Republik prägen die Deutschen auch fast ein Jahrhundert danach noch.

    Das ist sachlich falsch. „Zum Ende der Weimarer Republik“ herrschte Deflation. In der Tat trug diese auch nach Einschätzung konservativer Wirtschafts„wissenschaftler“Innen ganz gewiss dazu bei, dass die Weltwirtschaftskrise im Gefolge des Schwarzen Freitags ein gutes (na ja, schlechtes) halbes Jahrzehnt anhielt. Es war diese Beobachtung, die John Maynard Keynes zu seiner nach Maßstäben der Disziplin erstaunlich vernünftigen Wirtschaftstheorie brachte und auch den New Deal in den USA inspirierte.

    Nun könnte mensch einen xkcd 386 aufrufen und weitergehen:

    Aber ganz so einfach ist es hier vielleicht doch nicht, denn es schwingt in der Aussage ein höchst destruktiver Subtext mit, in etwa „die Inflation hat Hitler gemacht“. Nein: Die galoppierende Inflation im deutschen Reich fand 1923 statt und hatte im Wesentlichen nichts mit Wirtschaftspolitik zu tun, dafür aber viel mit durchgedrehtem Nationalismus auf mehreren Seiten (vgl. Ruhrbesetzung). Danach kam zunächst die auch rückblickend jedenfalls kulturell erstaunlich liberale Zeit der „goldenen Zwanziger“, während der NSDAP und DNVP zusammen bei Wahlen so im Bereich der heutigen AfD abschnitten.

    Der Subtext von Faschismus-durch-Inflation ist an dieser Stelle fast sicher keine bewusste Manipulation, denn Brigitte Scholtis, die Autorin der Sendung, mag selbst Weltwirtschaftskrise und Inflation vermengt oder jedenfalls nicht darüber nachgedacht haben.

    Er ist dennoch ein Symptom für die bleibende Lüge der deutschen Nachkriegsgesellschaft. Die NS-Herrschaft war kein Unfall, keine Folge von „wachsender Zerrissenheit der Gesellschaft“ oder gar der bolschewistischen Sowjetregierung. Nein, sie war offensichtlich Folge der Tatsache, dass die Eliten der Weimarer Republik in Justiz, Polizei, Militär, Wirtschaft und zu guten Stücken auch Politik (nicht jedoch in der Kultur) in ihrer überwältigenden Mehrheit völkisch, nationalistisch, autoritär und jedenfalls rabiat antikommunistisch dachten. Sie teilten das NS-Programm – eingestandenermaßen fast durchweg mit weniger eliminatorischem Antisemitismus – von Anfang an. Das war und ist eine unbequeme Wahrheit für die Befreiten von 1945 und danach, die sich ja sehr häufig in der Tradition dieser Eliten sahen.

    Diese Wahrheit anzuerkennen würde helfen, solche scheinbar kleinen Fehler zu vermeiden – und auch ganz gewaltige Fehler wie die Extremismustheorie, die es ohne planmäßige Leugung dieser unschönen Geschichte vermutlich gar nicht gäbe.

  • Ein bekanntes Szenario

    Was die Submikrometer-Filtermasken nach N95 [in der EU: FFP2] angeht, illustriert dies viele der logistischen und planerischen Probleme, die die Antwort [auf den Krankheitsausbruch] im Großraum Toronto unterminierten. Unmittelbar nach dem Ausbruch war die Nachfrage nach Masken verständlicherweise groß; die kanadischen Lieferanten waren, da sie zuvor keinen Vorrat angelegt hatten, rasch ausverkauft. Krankenhäuser mussten sich bei ausländischen Herstellern vesorgen, aber wegen der weltweiten Bedrohung durch SARS war es sehr schwierig, Masken aus anderen Ländern zu beschaffen.

    Das ist kein Text von 2020. Dieser Text wurde (ausweislich der spätesten Zitate) kurz nach 2005 geschrieben und ist in dem 2011 erschienenen Band „SARS from East to West“ von Olsson et al enthalten, von dem ich letztes Wochenende erzählt habe. Wann immer ich eine hinreichende Bürokratesischtoleranz – wenn ihr die Textbeispiele hier modulo meiner Übersetzung bröselhölzern findet: der Rest des Buchs ist schlimmer – aufgebaut habe, gebe ich mir weitere Kapitel, und jetzt gerade habe ich Kapitel 6 gelesen. Darin beschäftigen sich Dan Markel und Christopher Stoney mit dem SARS-Ausbruch im Großraum Toronto, der Greater Toronto Area (GTA).

    Mensch sollte dabei im Kopf haben: Nach heutigen Maßstäben war der SARS-1-Ausbruch von 2003 winzig. Es gab nur zwischen Ende Februar und und Anfang Juli überhaupt Fälle außerhalb von Guangzhou, und in Kanada, dem mit Abstand am schwersten betroffenen Land im „Westen“, wurden am Ende 251 Fälle mit 43 Toten gezählt. Das ist, grob gesagt, ein zehntel Promille von SARS-2. Faktoren wie 10 − 4 illustriere ich immer gerne mit Zeit: Wenn SARS-2 ein Jahr ist, ist SARS-1 eine Dreiviertelstunde.

    Lokal allerdings kam es doch zu messbaren Inzidenzen, denn die große Mehrheit der kanadischen Fälle waren Folge der ursprünglichen Einschleppung aus Zimmer 911 und konzentrierten sich daher um Toronto herum. Trotz der dramatisch anderen Größenordnungen muss es sich nach Darstellung von Markel und Stoney dort ziemlich angefühlt haben wie in der BRD im März 2020, bevor der Podcast mit Christian Drosten online ging:

    Die Unfähigkeit, Information zutreffend und wirkungsvoll zu veröffentlichen, fachte Verwirrung und Panik an: War SARS infektiös oder nicht? Konnte man sich wie bei einer Erkältung anstecken oder nicht? War SARS unter Kontrolle oder nicht? Im Ergebnis wurden bei den täglichen Pressekonferenzen zu viele Meinungen über das aktuelle Geschehen öffentlich geäußert.

    Leider diskutiert das Buch nicht, was die Medien anschließend mit den Themen aus den Pressekonferenzen gemacht haben, denn ich wäre überrascht, wenn in Kanada die Murdoch-Presse nicht ähnlich verheerend gewirkt hätte wie hier die Springer-Presse. Die schlimmste Presse-Schelte, zu der sich die Autoren des Kapitels durchringen konnten, ist:

    Die sich aus den Schwierigkeiten bei der Informationsverbreitung ergebende Verwirrung und Fehlinformation verschäfte sich noch durch permanente Anfragen, 24 Stunden am Tag, Minute für Minute. Dies war eine wesentliche Behinderung der Bemühungen einer kleinen, überarbeiteten Belegschaft dabei, die zur Bekämpfung von SARS nötige epidemiologische Information zu sammeln, zu analysieren, zu interpretieren und zu verteilen.

    Auch das Lamento über schlechte EDV-Infrastruktur klingt wie vom letzten Jahr:

    Das Fehlen eines effektiven Überwachungssystems auf Provinz- wie gesamtstaatlicher Ebene, einer gemeinsamen Datenbank und eines gemeinsamen Informationssystems für meldepflichtige Infektionskrankheiten hat die Versuche unterminiert, Bedürfnisse zur Datensammlung zu befriedigen und die rasche Meldung von Infektionstätigkeit sowohl zwischen als auch innerhalb von Verwaltungseinheiten zu erleichtern.

    Tatsächlich hat jede der vier Public Health-Stellen innerhalb des Großraums Toronto ihr eigenes Erhebungssystem entwickelt und band sich fest an jeweils spezifische und unverträgliche Erhebungs- und Auswertungsmethoden, obwohl das erhebliche Probleme verursachte.

    Angesichts der mikroskopischen Zahlen frage ich mich ein wenig, wie diese Leute Zeit hatten, sich in ihre jeweiligen Systeme zu verlieben, denn bei allenfalls ein paar hundert Fällen insgesamt konnten diese ja wohl nicht viel genutzt worden sein; aber gut, wenn noch ein paar tausend Quarantänefälle dazu kommen…

    Vielleicht sind die kleinen Zahlen auch der Grund, warum dort nicht aufgefallen ist, was nach zwei Jahren SARS-2-Surveillance längst auf der Hand liegt: Wichtiger als die Totalerfassung und der rasche Umgang mit großen Datenmengen ist eine wohldefinierte Datenerhebung. Blind alle Fälle zählen („Inzidenz“) sagt ganz offenbar nichts, wie allein schon der Vergleich von diesem Januar (eigentlich ziemlich cool bei 1500/100'000) mit dem vor einem Jahr (ziemliches Gemetzel bei 250/100'000) zeigt. Um zu einer irgendwie sinnvollen Einschätzung des Geschehens zu kommen, braucht es zumindest noch Daten zu Vollständigkeit, Alters- und Sozialstruktur, Virusprofil, Impfstatus und Übertragungswegen, sehr wahrscheinlich noch deutlich mehr.

    Da eine Vollerfassung dieser Daten nicht nur praktisch unmöglich wäre, sondern auch ein Datenschutzalptraum würde, so dass wiederum viele Menschen – wahrscheinlich auch ich – das Ergebnis durch kleine Lügen unbrauchbar machen würden, wäre es rundherum viel hilfreicher, ein (relativ) kleines Sample zu ziehen, dessen Bias gut untersucht ist. Dieses könnte dann unter sorgfältiger Datenschutzkontrolle genau studiert werden, gerade im Hinblick auf die tatsächlichen Infektionsketten, deren Kenntnis ja z.B. zur Beurteilung der wirklich nützlichen „Maßnahmen“ letztlich entscheidend wäre. Das große Vorbild für eine hochnützliche „small data“-Operation in diesem Bereich ist die AGI-Surveillance, von der ich Ende Januar schon mal geschwärmt habe.

    Jedenfalls: irgendwas in der Art von „Wir saßen auf einem Berg schlechter Daten und hätten eigentlich einen Klumpen guter Daten gebraucht“ hätte ich halb erwartet, und das kommt bei Markel und Stoney nicht. Vielleicht wegen der kleinen Zahlen, vielleicht, weil meine Überlegungen im Public Health-Bereich nicht zutreffen, vielleicht, weil die Leute andere Sorgen hatten.

    Ein für PolitologInnen naheliegendes Thema für Sorgen könnten die länderfürstlichen Stunts sein, zuletzt spektakulär die faktische Aussetzung der Impfpflicht von Beschäftigten im Gesundheitswesen durch Markus Söder. Auch sowas gab es schon 2003 in Kanada:

    Unstimmigkeiten zwischen den Zuständigen auf Gemeinde- und Provinzebene führten auch zu Doppelungen von Verantwortlichkeiten und Aufgaben. [...]

    Daher blieb unbeanwortet, wer die verantwortlich war für: die Klassifikation eines Falls; die Erteilung von Anweisungen an Krankenhäuser; die Festlegung von Konsequenzen, wenn die Anweisungen nicht befolgt wurden; die Bestimmung, welche Daten von wem an wen übertragen werden müssen; die Definition, welche Daten in welchem Ausmaß und zu welchem Zweck zwischen öffentlicher Verwaltung und privaten ExpertInnen ausgetauscht werden dürfen; die Benachrichtigung von Verwandten, dass einE AngehörigeR als ein wahrscheinlicher Fall klassifiziert wurde; die Abwägung, ob Datenschutzrechte der Informationsweitergabe, die zur Kontrolle und Verhütung der weiteren Ausbreitung von SARS nötig war, entgegenstehen.

    Auch die verbreitete Erfahrung – gerade bei Lehrkräften an Schulen, aber auch unsere Vewaltung an der Uni hat häufig geseufzt –, nach der die Vorstellungen der Mächtigen, was nun gerade gelten sollte, wahlweise am Vorabend oder gar nicht ankamen, ist nicht neu:

    Tatsächlich wurden die Menschen, die an der Gesundheitsfront und/oder in Hochrisiko-Umgebungen, etwa Bildungseinrichtungen, Gemeindezentren, Altenheimen, kirchlichen oder privatwirschaftlichen Einrichtungen arbeiteten, nie direkt über wichtige Entwicklungen informiert.

    Nach all dem: Haben diese Untersuchungen der kanadischen Regierung geholfen, mit SARS-2 besser fertig zu werden als andere westliche Länder, die ja keine nennenswerten Erfahrungen mit SARS-1 hatten?

    Leider ist Kanada nicht von Aburto et al (vgl. Trifft die Menschen hart …

  • Heldin: Luise Zietz

    Das DLF-Kalenderblatt vom 27. Januar erinnerte an Luise Zietz, die 100 Jahre zuvor gestorben war. Zietz war die erste Frau im Vorstand einer deutschen Partei – der SPD, ab 1908. Der DLF-Beitrag berichtete auch:

    Während des Ersten Weltkriegs sprach sich Luise Zietz als Pazifistin gegen die Bewilligung von Kriegskrediten aus und wurde aus dem SPD-Parteivorstand geworfen.
    Altes Foto mit Personen drauf

    Luise Zietz neben Friedrich Ebert, im SPD-Parteivorstand von 1909; es ist Zietz hoch anzurechnen, dass sie nicht mehr neben Ebert stand, als dieser mit Wehrmacht und Freikorps die fortschrittlichen Aufstände am Anfang der Weimarer Republik niedermetzeln ließ (Quelle).

    Gerade dieser Punkt hat mir imporiert, zumal ich, bevor diese Sendung in meinem aynchronen Radio kam, den großen patriotischen Taumel in den Informationen am Morgen vom Dienstag miterleben musste. In diesem kamen, soweit ich ihn verfolgt habe, nur Leute zu Wort wie Jürgen Hardt (der immerhin nur die blinde Gewissheit des Patrioten an den Tag legte, „wir“ seien die Guten) oder wie Michael Gahler (der sich zu „totaler Kriegserklärung“ und „völkisch-faschistischem Verständnis“ verstieg – wo sind die Mahner gegen kreischkrumme Vergleiche, wenn mensch sie braucht?) – jedoch niemand, der_die mal über die Symmetrie der Situation geredet hat, dass „wir“ nämlich nicht nur aus russischer Sicht in etwa ebenso schurkig sind wie „sie“, und dass wirklich niemand die doofen Turf Wars zwischen verschiedenen Schurkengangs haben will. Dass die Moderatorin penetrant Bekenntnisse ausgerechnet zu Waffenlieferungen einforderte, tat ein Übriges: Ich sehnte mich intensiv nach aufrechten Pazifistinnen.

    Wie schön wäre es da gewesen, wenn es im SPD-Parteivorstand von 1914 wirklich eine gegeben hätte, die Liebknechts einsame Ablehnung der Kriegskredite – und es wird heute wohl niemand mehr bestreiten, dass er im ganzen weiten Reichstag der einzige war, der sich in dieser Sache vor der Geschichte nicht verstecken muss – unterstützte und dafür noch mit ihrem Amt bezahlt hat.

    Nun, wie die oben zitierte Kurzbiografie zeigt, war das leider nicht so:

    Zwar hatte Luise Zietz 1912 in ihrem Buch Die Frauen und der politische Kampf dazu aufgerufen, sich gegen den drohenden Krieg zu stellen, doch an der Internationalen Sozialistischen Frauenkonferenz 1915 in Bern, die vom Parteivorstand nicht gebilligt worden war, nahm sie nicht teil. Im Laufe der ersten beiden Kriegsjahre scheint sich ihre Einstellung jedoch geändert zu haben. Sie äußerte sich seither deutlich kritischer zur Burgfriedenspolitik der SPD und stellte ihre Mitarbeit im Nationalen Frauendienst ein.

    Zietz war 1914 mit dem ganzen Parteivorstand im patriotischen Taumel und ist mit der SPD in den Krieg gezogen. Ich fühle mich fast versucht, ihre Wikipedia-Seite, die derzeit das verkürzte Narrativ des DLF übernommen hat, diesbezüglich zu verbessern. Aber immerhin hatte sie Augen im Kopf und ein Mindestmaß an Mitgefühl, und so hat sie schließlich ihren Fehler eingesehen. 1917 hat sie die USPD mitgegründet, was durchaus als erfolgreicher Beitrag zur Dämpfung von Patriotismus und mithin zur Verkürzung des Gemetzels gelten darf. Zudem hat sie später als USPD-Abgeordnete erfreulichen Klartext geredet, etwa als die Ebert-SPD von Mutterschutz und elementaren Beschäftigtenrechten bei Krankheit nichts mehr wissen wollte: „Kapitalsinteressen wurden höher bewertet als warmes Menschenleben“.

    Luise Zietzs anfängliche Unterstützung des ersten Weltkriegs ist schon ein wenig erschütternd, zumal sie vor der nationalen Erregung von 1914 offenbar recht vernünftige Ansichten zur Nation und dem Töten für diese geäußert hat. Aber die Demonstration, dass mensch sich von Kriegspolitik abwenden kann, dass mensch bereit ist, für die Einsicht in die eigene patriotische Verblendung auch einen Posten im Parteivorstand aufzugeben: Davon bräuchte es heute erneut viel mehr, hier bei „uns“ wie auch bei all den „sie“-s rund um den Globus. Weil Zietz diese Großtat 1917 hinbekommen hat, ist sie durchaus eine echte Heldin; vielleicht etwas gebrochen, aber doch Heldin.

  • Mutt says: “error encrypting data: Unusable public key”

    Today, I replied to an encypted mail, and right after the last “yes, go ahead, send this stuff already”, my mail client mutt showed an error:

    error encrypting data: Unusable public key
    

    Hu? What would “unusable” mean here? The message when all PGP keys are expired looks quite a bit different. And indeed, the key in question was not expired at all:

    $ gpg --list-keys person@example.net
    pub   rsa4096/0xDEEEEEEEEEEEEEEE 2015-03-21 [SCA] [expires: 2023-02-01]
          FINGERPINTWITHHELDFINGERPRINTWITHHELDFIN
    uid                   [  full  ] Person <person@example.net>
    

    – this should do for another year or so. Or should it?

    Feeding the message to a search engine brings up quite a few posts, most of them from times when keyservers would mess up subkeys, i.e., the cryptographic material that is used to actually encrypt stuff (as opposed to the main key that usually just authenticates these subkeys).

    This obviously did not apply here, since keyservers have long been fixed in this respect. But subkeys were the right hint. If you compare the output above with what such a command will output for the feedback key for this blog:

    $ gpg --list-keys zuengeln@tfiu.de
    pub   rsa3072/0x6C4D6F3882AF70AD 2021-01-28 [SC]
          60505502FB15190B10DBF1436C4D6F3882AF70AD
    uid                   [ultimate] Das Engelszüngeln-Blog <zuengeln@tfiu.de>
    sub   rsa3072/0x3FCFC394D8DF7140 2021-01-28 [E]
    

    you'll notice that the Person's key above does not have a sub line, i.e., there are no subkeys.

    How can that happen? Gnupg won't create such a thing without serious amounts of coercion, and such a key is largely useless.

    Well, it turns out it doesn't happen. The subkeys are there, gnupg just hides them because that's what it does with expired subkeys by default. If you override that default, you'll get:

    $  gpg --list-options show-unusable-subkeys --list-keys person@example.net
    pub   rsa4096/0xDEEEEEEEEEEEEEEE 2015-03-21 [SCA] [expires: 2023-02-01]
          FINGERPINTWITHHELDFINGERPRINTWITHHELDFIN
    uid                   [  full  ] Person <person@example.net>
    sub   rsa4096/0xEEEEEEEEEEEEEEEE 2015-02-01 [E] [expired: 2020-01-31]
    sub   elg4096/0xEEEEEEEEEEEEEEEE 2020-02-01 [E] [expired: 2022-01-31]
    

    So, that's the actual meaning of the error message about „Unusable public key“: “No usable subkey”.

    What's a fix for that? Well, for all I know you cannot force gnupg to encrypt for an expired key, so the way to temporarily fix things (for instance, to tell people make their keys permanent[1]) is to turn the clock. There's the nice program faketime that just changes the time for whatever runs below it. That's great because on modern computers, changing the system time has all kinds of ugly side effects (not to mention you'd have to kill the ntpd that your computer quite likely runs to keep your computer's clock synchronised with the rest of the world).

    Since I'm using mutt as a mailer, I'd use faketime like this:

    faketime 2022-01-31 mutt
    

    I'm fairly confident this would work with, say, thunderbird as well, though it might be a problem if the times of an X server and client are dramatically different.

    But that's really no substitute for an updated key: In most people's mailboxes, such mails will be way down in the swamp of rotting mails from one month ago[2] And mail servers sometimes refuse to transport mail that's so far from the past.

    Then again, to my own surprise, everytime I had to go to such extremes because I didn't have a non-expired key, the recipients eventually noticed.

    [1]Let me again advertise non-expiring keys. The main arguments for these are that (a) essentially nobody directly attacks keys, so it really doesn't matter if a key is used for a decade or more, and (b) PGP is hard enough for muggles even without auto-destructing keys. The net effect of expiring keys on privacy is thus negative, because they keep people off using PGP and even trying to understand crypto. And you can always revoke keys, in particular when we have educated people to now and then sync their keyring with keywervers.
    [2]As a side note: While inbox zero sounds to much like one of those market-radical self-improvement fads to me, I've been religious about less-than-a-page inbox for the past decade or so and found it did improve a relevant part of my life.
  • SARS-1 und das Zimmer 911

    Buchcover

    Ich lese gerade „SARS from East to West“, einen Sammelband von Artikeln zu den Ausbrüchen von SARS-1 zwischen 2002 und 2004, den Eva-Karin Olsson and Xue Lan 2012, also lang, bevor jemand etwas von SARS-2 ahnte, herausgegeben haben (ISBN 978-0-7391-4755-9, gibts auch in der Imperial Library). Es handelt sich wohl um eine Art Abschlussband eines wissenschaftlichen Projekts irgendwo zwischen Politologie, Zivilschutz und Militärforschung, das in einer Kooperation zwischen einigen schwedischen Regierungsstellen und einer Handvoll, nun, regierungsnahen Bildungseinrichtungen aus China bearbeitet wurde.

    Das Ergebnis ist über weite Strecken unfassbar langweilig. Die AutorInnen beschäftigen sich seitenweise damit, welche Verwaltung wann mit welcher anderen geredet hat oder wer wann zurückgetreten ist oder wer vielleicht Gesichter verloren haben könnte. Manchmal habe ich mich gefragt, ob es Leute gibt, denen sowas ähnlich viel Freude macht wie AstronomInnen ihre Sterne – oder ob die Motivation, PolitologIn zu werden, vielleicht ganz anders aussieht als unser „ich will doch nur spielen“.

    Andererseits fühle ich mich gleich daheim, wenn das Buch den WHO-Mitarbeiter Peet Tüll wiedergibt. Dieser hat während des Ausbruchs mit der chinesischen Seite die Maßnahmen zur Bekämpfung der hochkochenden Epidemie diskutiert, wozu im Buch zu lesen ist:

    Treffen und Verhandlungen zwischen der WHO und ihren chinesischen Partnern waren entweder formell oder informell […] Formelle Verhandlungen waren zäh und hoch politisiert. […] Während der informellen Treffen waren die Chinesen zugänglicher. [Diese] drehten sich um Problemlösungen […] Wenn ein chinesischer Partner sich auf ein informelles Treffen einließ, änderte sich die Frage von einer politischen zu einer sachlichen.

    (Kapitel 5; Übersetzung von mir). Das deckt sich komplett mit meiner Erfahrung im (wie eben eingestanden durchaus anders gestrickten) Bereich der Astronomie: Je mehr Arbeitsebene, je weniger Management, desto produktiver. Was mal wieder die Frage aufwirft, warum daraus niemand die offensichtlichen Schlüsse zieht…

    Das Zimmer 911

    Richtig Neues habe ich aus der Chronologie des Ausbruchs gelernt. Verglichen mit SARS-2 war SARS-1 ja ein recht beschränktes Geschehen mit gut 8000 bestätigten Infizierten und knapp 800 auf SARS-1 zurückgeführten Toten[1], und so konnten Infektionsketten vielfach genau nachvollzogen werden. Die für mich Spannendste war die vom Zimmer 911 (das Schicksal ist numerologischen VerschwörungstheoretikerInnen ganz offensichtlich gewogen) im Hotel Metropole in Hong Kong ausging.

    Das ging so: Nachdem SARS-1 schon seit November 2002 im Hinterland von Hong Kong, der Provinz Guangdong, herumgegangen ist, reist am 21.2.2003 – ein Freitag – der 64-jährige Arzt Liu Janlun von dort nach Hong Kong und bezieht dieses Zimmer 911, um an einer Familienfeier teilzunehmen. Zunächst ist er etwas mit seinem Schwager in der Stadt unterwegs, verbringt dann aber einige Zeit im Hotel. Dort halten sich auch eine 78-jährige Touristin aus Toronto, ein 48-jähriger US-chinesisicher Geschäftsmann und drei junge Frauen aus Singapur auf. Genauer: Sie alle wohnen im 9. Stock des Metropole.

    Schon am nächsten Tag geht es Liu Janlun so schlecht, dass er ins Kwong Wah-Krankenhaus geht und, da er selbst vorher SARS-Fälle behandelt hatte, das Personal dort warnt, er könnte „eine sehr ansteckende Krankheit“ haben. Nach zehn Tagen Krankenhausaufenthalt, am 4.3., stirbt er an den Folgen seiner untypischen Lungenentzündung.

    Sein Schwager entwickelt bis zum Dienstag (25.2.) erhebliche Symptome einer Lungenerkrankung und begibt sich zunächst ebenfalls ins Kwang Wah-Krankenhaus. Er wird wieder entlassen, muss am 1.3. aber erneut aufgenommen werden und stirbt schließlich am 19.3. an SARS (das zu diesem Zeitpunkt natürlich noch nicht als solches erkannt ist und auch nicht so heißt).

    Die kanadische Touristin fliegt am Sonntag zurück nach Toronto. In Kanada entwickelt sie recht bald Symptome und stirbt am 5.3. Fünf ihrer Familienmitglieder stecken sich an und werden in der Folge ebenfalls in Krankenhäuser aufgenommen. Das erste SARS-Todesopfer, das sich in Kanada angesteckt hat, ist der 44-jährige Sohn der Touristin.

    Auch der Geschäftsmann reist am Sonntag ab. Seine nächste Station ist Hanoi, wo er am 26.2. ins Französische Krankenhaus eingeliefert wird. Er braucht rasch Intensivbetreuung und wird am 5.3. zur Weiterbehandlung zurück nach Hong Kong in das Princess Margeret-Krankenhaus verlegt. Dort stirbt er am 13.3., offenbar, ohne weiteres Personal anzustecken. In Hanoi hingegen entwickeln bis zum 12.3. 26 MitarbeiterInnen des Krankenhauses SARS-Symptome, fünf sind zu diesem Stichtag in kritischem Zustand.

    In Hanoi ist ein Mitarbeiter der WHO, Carlo Urbani, auf den Fall aufmerksam geworden und meldet ihn eine Woche nach dem Freitagabend auf dem Gang im 9. Stock, also am 28.2., als möglichen Fall von Vogelgrippe an das WHO-Büro in Manila, was dort, so steht es in der Chronologie, einen „heightened state of alert“ auslöst.

    Urbani selbst untersucht noch für ein paar Tage in Hanoi die unbekannte Krankheit, bevor er am 11.3. zu einer Konferenz nach Bangkok weiterfliegt. Schon bei der Ankunft ist er so krank, dass er dort ins Krankenhaus eingewiesen wird. Er stirbt am 29.3., ebenfalls an SARS.

    Eine der drei jungen Frauen aus Singapur, die am Dienstag nach dem schicksalhaften Freitagabend dorthin zurückgekehrt ist, wird am folgenden Samstag mit einer schweren Lungenerkrankung in ein Krankenhaus in Singapur eingewiesen; auch die beiden anderen zeigen Symptome.

    Ein Arzt, der sie behandelt hat, fliegt am 15.3. über Frankfurt nach New York City. Da er kurz vor dem Abflug Krankheitssymptome angegeben hat, alarmieren die Behörden von Singapur die WHO, die veranlasst, dass der Arzt sowie seine Frau und seine Schwiegermutter in Frankfurt aus dem Flugzeug entfernt werden. Die Familie kommt dort in Isolation, so dass sogar die BRD ein wenig SARS abbekommt; SARS-1 beschränkte sich hier aber auf insgesamt 9 Fälle, die alle glimpflich ausgingen (zum Vergleich: In Kanada starben von 251 bekannten Infizierten 43).

    Die Wikipedia berichtet, dass 4000 SARS-Erkrankungen – und damit die Hälfte der bekannten Gesamtzahl – auf diesen Freitagabend im Metropole-Hotel zurückgehen. Diese Geschichte war den Leuten, die an der SARS-2-Prävention im März 2020 überlegten, sicher vertraut – und sie lässt mich etwas besser verstehen, warum sie Hotels so rasch runterfuhren und später zunächst eher wirr erscheinende Regeln (etwa „mindestens ein leeres Zimmer zwischen zwei vergebenen“) verhängten.

    Allerdings: SARS hätte es sicher auch anders aus Guangzhou herausgeschafft. So ist etwa am 8.3.2003 ein Fall in Taiwan aufgetreten, der sich direkt nach Guangdong zurückverfolgen ließ. Wahrscheinlich war es global gesehen sogar ein Glück, dass SARS-1 durch eine schnelle Ausbreitung in gesundheitlich gut überwachten Kreisen doch recht schnell auffiel.

    Der Erfolg jedenfalls, SARS-1 innerhalb von drei Monaten nach dem Übergang zur Pandemie tatsächlich „besiegt“ zu haben – um mal eines der dümmeren Wörter aus der Corona-Kommunikation aufzunehmen – dürfte wohl auch die sture Entschlossenheit der derzeitigen chinesischen Regierung erklären, SARS-2 aus dem Land zu halten. „Wir haben es schon mal geschafft, das geht bestimmt wieder“. Nun, das war sicher schon im März 2020 eine Illusion, und wahrscheinlich nicht nur, weil SARS-2 schon in der Wuhan-Variante doch regelmäßig ein paar Ecken übertragbarer zu sein scheint als SARS-1. Spätestens jetzt, bei einem Infektionsgeschehen vier Größenordnungen über dem von SARS-1, ist es absurd, anzunehmen, SARS-2 würde in absehbarer Zeit verschwinden.

    Wir haben jetzt fünf humane Coronaviren, und wer sich nicht über Nordkorea-Nivau hinaus abschotten will, wird sie früher oder später laufen lassen müssen. Insofern frage ich mich schon, wie sich die Regierung in Beijing sich das so vorstellt.

    Zur Laborhypothese

    Eine zweite SARS-Geschichte, von der ich vorher noch nichts gehört hatte, betrifft den Ausbruch genau dort, in Beijing, ein Jahr nach der Pandemie. Das SARS-1-Virus war wie gesagt schon im Juli 2003 wieder verschwunden, auch wenn im Januar 2004 in Guangdong nochmal zwei Fälle bekannt wurden – möglicherweise hatten sich diese erneut beim ursprünglichen Wirt angesteckt.

    Am 22.4.2004 (einem Donnerstag) berichtet jedoch das chinesische Gesundheitsministerium, es gebe einen SARS-Fall in Beijing, und fünf weitere Personen zeigten verdächtige Symptome. 171 Kontaktpersonen stünden unter Beobachtung. Am Freitag wird ein weiterer Fall und ein Verdachtsfall berichtet, dieses Mal aus der Provinz Anhui zwischen Beijing und Shanghai. Diese Fälle lassen sich offenbar auffällig nahe an ein Labor der chinesischen Gesundheitsbehörde CCDC zurückführen, so dass schon am folgenden Montag Vermutungen laut werden, die SARS-Viren seien bei einem Laborunfall übertragen worden.

    Die Behörden reagieren schnell und identifizieren Kontaktpersonen an den beiden Orten, was in Anhui auf bis zum folgenden Mittwoch auf 154 Menschen führt. Isolation und Quarantäne führen dazu, dass der letzte bekannte SARS-1-Fall überhaupt einen Monat nach dem Beginn des zweiten Ausbruchs, am 21.5.2004, aus dem Ditan-Krankenhaus entlassen wird. Insgesamt waren 2004 wohl um die 1000 Personen in Isolation und Quarantäne (wenn ich die Chronologie im Buch richtig lese).

    Am 1.7.2004 bestätigte der chinesische Gesundheitsminister Gao Quiang, der Ausbruch sei auf ein Labor der CCDC zurückzuführen gewesen. In der Folge trat der Direktor der CCDC, Li Liming, zurück, vier weitere hochrangige Mitarbeiter wurden entlassen.

    Ich muss sagen, dass ich die Laborhypothese zum Ursprung von SARS-2 im Vergleich zur sehr plausiblen Zoonose (ich bin immer noch leicht traumatisiert von einem Besuch in einem chinesischen Lebensmittel-Supermarkt, der auf den ersten Blick kaum von einem Zoo zu unterscheiden war) nie sonderlich überzeugend fand, auch wenn es schon ein komischer Zufall ist, dass der erste große Ausbruch ausgerechnet in so großer Nähe zum Wuhan Institute of Virology der Chinesischen Akademie der Wissenschaften (CAS) stattfand. Aber das ist konsisitent mit dem generellen …

  • Eine Sturmfront zieht durch

    Gestern am frühen Abend ist auch bei uns das als „Zeynep“ durch die Presse ziehende Sturmtief angekommen. Ich hatte überlegt, meine CO₂-Messapparatur auf dem Balkon –

    Zwei Eisschachteln beschwert mit einem rostigen Stahlriegel

    (unter der einen Eisschachtel ist ein Raspberry Pi, unter der anderen das zyTemp-Gerät, und die sind getrennt, weil der Raspi durch seine Abwärme die Temperaturmessung sehr stören würde – abzubauen, denn die zwei Eisschachteln, die da den Regenschutz machen, könnten bei hinreichend starkem Wind durchaus die Kraft entwickeln, den Stahlriegel[1], der sie über der Elektronik festhält, wegzuheben. Nun, ich habe die Installation stehen lassen und bin jetzt froh drum, denn so konnte ich den dramatischen Temperatursturz über die stürmische Kaltfront hinweg live beobachten:

    Graph: Ein starker Abfall von 15 auf 8 Grad

    (Die Zeit läuft in UTC, der Sturm begann hier also ziemlich genau um 18 Uhr MEZ).

    Sieben Kelvin Temperatursturz in einer guten halben Stunde finde ich schon ziemlich sportlich. Stickstoff siedet bei normalem Luftdruck bei 77 Kelvin (oder ungefähr minus 200 Grad Celsius angesichts des absoluten Nullpunkts bei -273 Grad Celsius). Wenn das so weitergegangen wäre mit dem Temperaturabfall um 15 Kelvin pro Stunde, würden sich 14 Stunden später, also ungefähr gerade jetzt, die ersten Stickstoffpfützen bilden. Whoa.

    Was mich zur Überlegung bringt, wie wohl die Atmosphäre ausfrieren würde; der Siedepunkt von Flüssigkeiten sinkt ja mit abnehmendem Druck, und weil die Erdatmosphäre Stickstoff plus ein bisschen was ist, wird der Druck sofort dramatisch fallen, wenn er kondensiert. Daher wird der Stickstoff wohl schön langsam nach und nach runterregnen, ganz wie kurz vorher schon der Sauerstoff (der bei 90 Kelvin siedet, aber weil niemand freiwillig mit flüssigem Sauerstoff hantiert, hat dieser Wert weniger Kopfzahl-Potenzial, und „ein wenig über Stickstoff“ ist alles, was ich mir merke), dessen 23% (nach Masse, nach Volumen sind es 21%) ja auch schon ordentlich zum Luftdruck beitragen.

    Das ist beim Kohlendioxid anders: Es würde ohne nennenswerte Änderungen beim Luftdruck ausfrieren und bei knapp 200 Kelvin (oder -70 Grad Celsius) mit etwas Glück hübsche Flocken bilden (es kann erst bei Drücken von über 5 bar überhaupt flüssig werden) und friedlich ausschneien. Ich bin nicht sicher, ob das schon mal wer für den Mars ausgerechnet hat: Schneit es dort CO₂ oder friert es eher wie Reif aus?

    Aber ich schweife ab. Um halb sieben hatte sich gestern abend der rasche Temperaturabfall gefangen, und das ist der zweite bemerkenswerte Punkt: an der Stelle, also nachdem die Front durch war, sank der CO₂-Gehalt der Luft ziemlich schlagartig um 20 ppm oder fünf Prozent. Das finde ich fast noch bemerkenswerter, denn es heißt, dass an der Front selbst nicht viel Materieaustausch stattfindet.

    Dass sich Wetterfronten so ähnlich zu Schockfronten verhalten, war mir bisher nicht klar, und ich habe aus dem Stand keine gute Erklärung, warum das so sein sollte. So eine Wetterfront ist ja doch recht turbulent (kann ich noch aus frischer Erinnerung sagen) und definitiv weit im Unterschallbereich, anders als die Schockfronten bei uns in der Astrophysik, wo sie meist aussehen wie die Filamente, die das HST im Cygnus Loop aufgenommen hat:

    Feine Filamente vor Himmelshintergrund

    Liebe GeophysikerInnen oder MeteorlogInnen: Ich bin dankbar für Lesetipps.

    [1]Wer sich fragt, was das mal war: Kioske hatten (oder haben?) solche Stahltrümmer zum Beschweren von Zeitschriften; wenn sie noch aktiv sind, ist da eine Kunststoffhülle mit Werbung drumrum. Also: Augen auf bei Sperrmüll nach Kioskauflösungen, die Dinger sind wirklich praktisch.
  • Ameisen-Ambulanz in der Pandemie

    Foto

    Da helfen nicht mal mehr Ameisenarmeen: Ein Faultier in einem Cecropia-Baum. Von hier unter GFDL.

    In den Wissenschaftsmeldungen der Forschung aktuell-Sendung am Deutschlandfunk vom 4.1.22 gab es ab Minute 2:50 eine Geschichte einer doch sehr überraschenden Symbiose: Ameisen, so heißt es da, verbinden verletzte Bäume. Nun würde mich so ein Verhalten nicht völlig vom Hocker hauen – ich bin ja ein Feind der Soziobiologie und halte das „egoistische Gen“ für einen methodischen Fehler –, aber Krankenpflege ist schon innerhalb einer Spezies bemerkenswert (gibts bei Ameisen). Geht sie gar über Speziesgrenzen hinaus, weckt das schon meine Neugier. Darum habe ich mir das zugrundeliegende Paper rausgesucht: „Azteca ants repair damage to their Cecropia host plants“ aus dem Journal of Hymenoptera Research, Band 88, doi:10.3897/jhr.88.75855.

    Das erste, was auffällt, ist die Autorenliste: geschrieben haben das Ding Alex Wcislo, Xavier Graham, Stan Stevens, Johannes Ehoulé Toppe, Lucas Wcislo, und William T. Wcislo. Das sind einen Haufen Wcislos, und die Erklärung findet mensch in den Affiliations. William T. ist vom Tropeninstitut der Smithsonian Institution, alle anderen Autoren kommen von der International School of Panama – wo ein Forscher-Expat seine Kinder wohl hinschicken wird – beziehungsweise von der Metropolitan School in Panama.

    In diesem Licht bekommt die Eröffnung des Artikels einen ganz eigenen Charme, der in dem DLF-Kurzbeitrag ganz und gar fehlt (da war nur die übliche Rede von „den Forschenden“):

    One of us (AW) used a sling shot to shoot a clay ball (9 mm diameter) at high velocity through an upper internode of a large Cecropia tree, making clean entry and exit wounds. Within 24 hours both holes were nearly sealed. This anecdotal observation...

    Also: Da hat der kleine Nick^W^W der Sohn des Smithsonian-Biologen mit einer Zwille oder Steinschleuder rumgeballert und hat es geschafft, ein Loch durch ein Internodium, also so eine Art Zweig, zu schlagen; nun, tropische Bäume sind oft relativ weich. Der Lausejunge war aber Professorenkind genug, um genauer hinzuschauen und festzustellen, dass Ameisen am Loch rumlaufen und es offenbar zunähen.

    Daraufhin haben er, seine Freunde und sein Vater ein richtiges Programm aufgelegt, um aus der Anekdote etwas wie Wissenschaft zu machen. Sie haben dazu systematisch Löcher in rund zwanzig Ameisenbäume im Stadtwald („opportunistically selected“ schreiben sie) gebohrt, in denen Aztekenameisen Azteca alfari wohnten. Über deren Symbiose war bisher vor allem bekannt, dass die Bäume Ameisen schicken, wenn andere Tiere an ihren Blättern knabbern. Die Ameisen dürfen dafür in den erwähnten Internodien wohnen (die sind hohl und haben dünne Wände, damit die Ameisen leicht reinkommen) und bekommen darin sogar lecker Futter (na ja, im Zweifel Futter für ihre Blattläuse).

    Und dann haben die Schülis dokumentiert, was passiert. Das war nicht immer einfach, wie sie ehrlich berichten:

    But ants [also die Ameisen, die an einem Loch arbeiteten] were not marked so the total size of the repair force is unknown. […]

    We greatly thank the Cárdenas police patrols for allowing us to work safely outdoors during the early days of a pandemic, and tolerating our activity during severe restrictions on movement.

    Sie mussten sich auch auf junge Bäume beschränken, denn die Ameisen wohnen gerne so weit oben wie möglich und merken dann nicht mehr, was unten vor sich geht, während die Schülis nicht höher als zwei Meter kamen: „we selected internodes as high up as we could reach“.

    Die resultierende Beobachtung mochte dann schon wieder Material für die Ethikkommission sein, denn sooo viel anders als bei den ganz klassischen Begegnungen von Lausbuben und Ameisenhaufen ging es auch nicht ab, jedenfalls aus Sicht der Ameisen: Diese retteten erstmal ihre Brut, bevor sie tatsächlich recht oft und überzeugend die Bohrungen verschlossen. Dieses Gesamtbild aber lässt schon ahnen, dass sie eher ihren Bau reparierten als ihrem Baum medizinische Hilfe angedeihen ließen. Dafür spricht auch, dass der Baum im Anschluss ein eigenes Heilprogramm anwarf und die Wunde komplett mit eigenem Gewebe auffüllte.

    Andererseits: Vielleicht sehen wir hier gerade der Evolution zu, denn es könnte ja sein, dass Bäume, die Ameisen zu besserer medizinischer Versorgung anhalten – und das übliche survival of the fittest[1] würde jetzt dafür sorgen – auch deutlich besser leben als welche, die einfach nur ganz normale Baumheilung machen?

    Was es auch sei: ich war sehr angetan davon, mal ein paar Seiten aus dem Journal of Hymenoptera Research zu lesen. Dafür, dass es solche Publikationen gibt, liebe ich die Wissenschaft.

    [1]Nur zur Sicherheit: nicht des „strongest“ oder sowas.
  • Kopfzahlen: Vulkane, Massen, Volumen

    Foto einer Fumarole

    Meine tatsächliche Erfahrung mit vulkanischem Schwefel geht nicht weit über die paar Gramm hinaus, die die Solfatara an dieser Fumarole abgelagert hat.

    In Forschung aktuell vom 18.1. ging es um den Ausbruch des Hunga Tonga Hunga Ha'apai (spätestens seit dem Ausbruch des Eyjafjallajökull ist klar, dass viele Vulkane großartige Namen haben). Darin hieß es, dass bei der Eruption wohl um die 400'000 Tonnen Schwefeldioxid entstanden sind, und dass das nicht viel sei, weil ein wirklich großer Vulkanausbruch – als Beispiel dient der Pinatubo-Ausbruch von 1991 – 20 Millionen Tonnen Schwefeldioxid emittiert.

    Bei dieser Gelegenheit ist mir aufgefallen, dass mir diese 20 Millionen Tonnen spontan alarmierend wenig sagten. Und drum dachte ich mir, ich sollte mal ein paar Kopfzahlen zu eher großen Massen und – weil ein Kubikmeter Wasser eine Masse von einer Tonne hat, hängt das eng zusammen – Volumen sammeln.

    Einfach war noch, die 20 Megatonnen mit meiner praktischen Kohlendioxid-Kopfzahl von neulich, 2/3 Gigatonnen CO₂ pro Jahr aus der BRD, zu vergleichen. Nun ist SO₂ eine ganz andere Nummer als CO₂ (ich erinnere mich an atemberaubende Vulkanbesuche und den weit größeren Schrecken des Chemiepraktikums), aber als Vorstellung finde ich es hilfreich, dass so ein ordentlicher Vulkanausbruch in etwa so viel Schwefeldioxid freisetzt wie die BRD in zehn Tagen (nämlich: ein dreißigstel Jahr) Kohlendioxid.

    Was SO₂-Emissionen selbst angeht, sieht das natürlich ganz anders aus; laut einer Grafik des Umweltbundesamts hat die BRD am Höhepunkt der Saure-Regen-Bekämpfung 1990 lediglich knapp 6 Megatonnen pro Jahr emittiert, also rund ein Viertel Pinatubo, und ist jetzt bei einer halben Megatonne, also in etwa einem Hunga Tonga Hunga Ha'apai (der Name begeistert mich erkennbar). In diesem Zusammenhang gar nicht erwartet hätte ich, dass laut einer IMO-Studie von 2016 der Schiffsverkehr weltweit nur 10 Mt Schwefeldioxid emittiert haben soll, also kaum doppelt so viel wie die BRD 1990, und inzwischen, im Rahmen einer in einschlägigen Kreisen offenbar besorgt beäugten Initiative namens IMO 2020, noch eine ganze Ecke weniger emittieren dürfte.

    Nur vorsorglich: Wer den DLF-Beitrag gelesen hat, mag sich erinnern, dass der Pinatubo das Weltklima um ein halbes Kelvin abgekühlt haben wird. Die sechs Megatonnen Schwefeldioxid aus der 1990er BRD haben jedoch sicher nicht ein achtel Kelvin ausgemacht, und zwar, weil sie fast ausschließlich bodennah entstanden sind. Damit Schwefeldioxid ordentlich klimawirksam wird, muss mensch es in die Stratosphäre bringen. Das ist für einen zünftigen Vulkan kein Problem. Und wäre leider auch für Menschen möglich.[1]

    Wenn sich der Schwefel des Pinatubo wie im Foto oben niederschlägt, wie viel ist das dann? Nun, erstmal ist der Masseanteil von Schwefel im SO₂ recht leicht auszurechnen, denn üblicher Schwefel hat Atommasse 32, während Sauerstoff bei 16 liegt, zwei davon also auch bei 32. Damit ist die Hälfte der Masse von Schwefeldioxid Schwefel, und der Pinatubo hat 10 Megatonnen Schwefel ausgespuckt. Bei einer Dichte von 2000  kg ⁄ m3 (hätte ich geringer eingeschätzt, muss ich sagen) macht das 5⋅106  m3 aus und würde einen Würfel von (5⋅106)1 ⁄ 3 oder runden 170 Metern Kantenlänge füllen.

    Um so ein Volumen einzuordnen, erkläre ich nachträglich den Neckar-Abfluss aus dem Flächen-Post, 150 m3 ⁄ s im Jahresmittel, zur Kopfzahl. Dann entspricht der ganze Katastrophenschwefel des Pinatubo dem Wasser, das in 30 Kilosekunden (coole Einheit: gerade in der Röntgenastronomie wird die viel verwendet) oder knapp 10 Stunden durchläuft. Und das alles Schwefel. Whoa. Vielleicht nehmen wir doch lieber den nächstgrößeren Fluss:

    Foto: Rhein bei Köln

    Der Rhein bei Köln; als ich das Foto gemacht habe, wars eher heiß und Sommer, und so mag das sogar etwas weniger als Normalwasserstand sein.

    Im Rhein bei Köln fließen bei Normalwasserstand 2000  m3 ⁄ s (hatte ich nicht im Kopf, will ich mir als ein Dutzend Neckare merken), und da bräuchte der Pinatubo-Schwefel 2500 Sekunden oder eine Dreiviertelstunde. Immer noch beängstigend. Legen wir also nochmal eins drauf und nehmen den Amazonas. Der führt an der Mündung 70-mal mehr Wasser als der Rhein (was ungefähr 1000 Neckare wären). In dem wäre der Pinatubo-Schwefel in so etwa einer halben Minute durch. Puh. Aber auch nicht sehr tröstlich, denn, wie die Wikipedia ausführt, ist der Amazonas

    der mit Abstand wasserreichste Fluss der Erde und führt an der Mündung mehr Wasser als die sechs nächstkleineren Flüsse zusammen und ca. 70-mal mehr als der Rhein.

    Etwas anfassbarer, gerade für Menschen, die dann und wann im URRmEL sind, ist ein Transportcontainer. Die kurzen davon („TEU“) wiegen leer 2300 kg, voll fast 25 Tonnen und fassen[2] 33 m3. Unsere 5 Millionen Kubikmeter Pinatubo-Schwefel entsprichen also rund 150'000 solcher Container – oder rund 1000 ziemlich langen Güterzügen. Aber das Volumen wäre hier nicht mal das Problem: Angesichts des 25-Tonnen-Limits braucht es für die 10 Megatonnen Schwefel mindestens 400'000 Container (die nicht ganz voll sein dürfen).

    Für solche Containerzahlen braucht es Schiffe. Eines wie die Ever Given, die im letzten März im Suezkanal steckenblieb und vorher schon 2019 eine (liegende) Passagierfähre in Blankenese umgenietet hatte, trägt rund 20'000 TEUs. Für den Pinatubo-Schwefel bräuchte es mithin naiv gerechnet 20 Ever Givens[3].

    Beim Schiffgucken bin ich leider in der Wikipedia versunken. Als ich wieder rausgekommen bin, hatte ich albern viel Zeit mit der Liste der größten Schiffe verbracht und mir vorgekommen, mir als Kopfzahlen für große Massen die Titanic (50'000 Tonnen; moderne Kreuzfahrtschiffe oder Flugzeugträger kommen auch nur auf rund 100'000) und richtig große Tanker (500'000 Tonnen) zu merken, von denen entsprechend einer reichen würde für das angemessen verdichtete Schwefeldioxid vom Hunga Tonga Hunga Ha'apai. Und wo ich so weit war, habe ich festgestellt, dass ich die die 3000 Tonnen der großen Rheinschiffe aus meiner Kraftwerks-Abschätzung schon wieder vergessen hatte. Das erkläre ich jetzt auch zu einer Kopfzahl, im Hinblick auf die Sammlung, die ich demnächst anlegen werde.

    Während meiner Wikipedia-Expedition hat mich ein Artikel ganz besonders fasziniert: Fruchtsafttanker. Oh! Ein ganzes Schiff voll Orangensaft! Ein Paradies!

    Es gibt, so sagt die Wikipedia, „weltweit weniger als 20 Schiffe“, die als Fruchtsafttanker betrieben werden. Aber dafür trägt eines davon gleich mal über 10'000 Kubikmeter Saft. Dass es so etwas wirklich gibt, könnte mich glatt zum Kapitalismus bekehren.

    [1]Das heißt nicht, dass Seiteneffekte der Kohleverbrennung nicht doch kühlende Effekte gehabt hätten; vgl. etwa Klimawirkung von Aerosolen. Es gibt ernsthafte Spekulationen (die rauszusuchen ich jetzt zu faul bin), dass die CO₂-bedingte Erderwärmung erst ab den 1970er Jahren so richtig auffällig wurde, weil vorher erstaunliche Mengen Kohlenruß in der Atmosphäre waren Das große Fragezeichen dabei ist, ob dessen kühlende Wirkungen (Nebel- und Wolkenbildung) seine heizenden Wirkungen (etwa, indem er Schneeflächen verdreckt und damit ihre Albedo reduziert oder vielleicht sogar ähnliches mit Wolken anstellt) wirklich überwiegen.
    [2]Das Containervolumen ist über „Zwanzig Fuß mal ungefähr zwei Meter mal ungefähr zwei Meter als 2⋅2⋅20 ⁄ 3 oder rund 25 Kubikmeter so gut abschätzbar, dass ich da keine Kopfzahl draus machen würde.
    [3]In Wahrheit braucht es deutlich mehr als 20 Ever Givens. Als Tragfähigkeit des Schiffs gibt die Wikipedia nämlich 200'000 Tonnen (dabei ist mir wurst ob metrisch oder long), was bei 20'000 Containern bedeutet, dass ein Container im Schnitt nur 10 und nicht 25 Tonnen wiegen darf. Das reime ich mir so zusammen, dass einerseits auf diesen Schiffen vor allem 40-Fuß-Container fahren werden, die aber nur 30 Tonnen wiegen dürfen, also 2/3 der Maximaldichte der 20-Fuß-Container erlauben – und damit, dass in Containern normalerweise eher Stückgut ist, und selbst wenn an dem viel Metall sein sollte – ohnehin unwahrscheinlich in unserer Plastikgesellschaft – wirds normalerweise schwierig sein, das Zeug so eng zu packen, dass es am Schluss auch nur die Dichte von Wasser hat.
  • Wakealarm: Device or resource busy

    The other day I wanted a box doing regular (like, daily) file system backups and really not much else to switch off while idle and then wake up for the next backup. Easy, I thought, install the nvram-wakeup package and that's it.

    Alas, nvram-backup mumbled something about an unsupported BIOS that sounded suspiciously like a lot of work that would benefit almost nobody, as the box in question houses an ancient Supermicro board that's probably not very common any more.

    So, back to the roots. Essentially any x86 box has an rtc that can wake it up, and Linux has had an interface to that forever: Cat a unix timestamp (serialised to a decimal number) into /sys/class/rtc/rtc0/wakealarm, as discussed in the kernel documentation's sysfs-class-rtc file:

    (RW) The time at which the clock will generate a system wakeup event. This is a one shot wakeup event, so must be reset after wake if a daily wakeup is required. Format is seconds since the epoch by default, or if there's a leading +, seconds in the future, or if there is a leading +=, seconds ahead of the current alarm.

    That doesn't tell the full story, though. You see, I could do:

    BACKUP_AT="tomorrow 0:30"
    echo `date '+%s' -d "$BACKUP_AT"` > /sys/class/rtc/rtc0/wakealarm
    

    once, and the box came back, but when I then tried it again, the following happened:

    echo `date '+%s' -d "$BACKUP_AT"` > /sys/class/rtc/rtc0/wakealarm
    bash: echo: write error: Device or resource busy
    

    Echoing anything with + or += did not work either; I have not tried to ascertain why, but suspect that's functionality for more advanced RTC chips.

    Entering the error message into a search engine did bring up a lkml thread from 2007, but on lmkl.iu.edu the thread ends with an open question: How do you disable the wakealarm? Well: the obvious guess of echo "" does not work. My second guess, however, did the trick: You reset the kernel wakealarm by writing a 0 into it:

    echo 0 > /sys/class/rtc/rtc0/wakealarm
    

    – after which it is ready to be written to again.

    And now that I've written this post I notice that the 2007 thread indeed goes on, as on narkive, and a bit further down, Tino summed up this entire article as:

    Please note that you have to disable the old alarm first, if you want
    to set a new alarm. Otherwise, you get an error. Example:
    
    echo 12345 > /sys/class/rtc/rtc0/wakealarm
    echo 0 > /sys/class/rtc/rtc0/wakealarm
    echo 23456 > /sys/class/rtc/rtc0/wakealarm
    

    Ah well. Threading is an important feature in mail clients, even if they're just archives.

  • Stahlhelmdiplomatie

    Was früher Kanonenbootdiplomatie war, hat sich heute offenbar zu Stahlhelmdiplomatie entwickelt. Einerseits, weil „wir“ welche in die Ukraine liefern, statt den Mist, den wir mit unserer Zündelei dort angerichtet haben, etwas zu entspannen. Andererseits, weil die Außenministerin – die „Chefdiplomatin“ also – sich ernsthaft martialisch in den Abendnachrichten zeigt, und zwar sozusagen vor der Haustür des aktuellen Erbfeinds Russland:

    Annalena Baerbock mit Stahlhelm in der Ukraine

    Beschnittener Screenshot aus der Tagesschau vom 8.2.2022: Außenministerin Baerbock beim Staatsbesuch in der Ukraine. Rechte bei der ARD.

    Wer das für Diplomatie hält, glaubt auch an die These von den Schlafwandlern. Was niemand tun sollte. Der erste Weltkrieg ist nicht ausgebrochen, er wurde gemacht. Von einer Öffentlichkeit (ich definiere das jetzt mal nicht näher; weite Teile der Presse gehörten und gehören da auf jeden Fall mal dazu), die Härte, Treue und Verlässlichkeit gefordert hat. Und von einer Regierung, die sich auch auch irgendwas wie vier Jahre in das Gemetzel hinein nicht geschämt hat, die Kriegsrhetorik vom August 1914 auf Wachstrommel zu bellen:

    Na ja, und so sieht es jetzt halt wieder aus. Leider oder zum Glück, so stelle ich gerade fest, depubliziert der DLF seine Presseschauen nach sieben Tagen (trotz allem: Buh!), so dass die übelsten Ausfälle jetzt schon wieder hinter Paywalls verschwunden sind, aber all das Gerede von „nicht zurückweichen“, „klare Kante gegen Russland zeigen“, „der Provokation entgegentreten“, Waffen liefern, Truppen schicken, härter drohen: So schnell kann es gehen zwischen dem zerknirscht-geschichtsklitternden Erinnerungsjahr 2014 und patriotischem Taumel nach der Mode von 1914.

    Dabei ist mir ja schon völlig unklar, was sich all die Russland-EntgegentreterInnen eigentlich als Ausgang der ganzen Angelegenheit vorstellen. Versteht mich nicht falsch: Es ist bestimmt kein Fehler, wenn ein augenscheinlich wirklich an Zauber, Auferstehung und heiligen Krieg glaubender Christ wie Achim Schönbach lieber nicht mehr die Marine befehligt. Aber wer Russland die Krim wieder abnehmen will, wird sich zwischen einer der folgenden Alternativen entscheiden müssen:

    1. Irgendeine russische Regierung gibt sie freiwillig ab. Die Frage beiseite, was sie dazu bewegen könnte, es wäre wohl das letzte, was sie täte. Weder das Militär noch große Teile der Bevölkerung würden das hinnehmen – das wäre nach übereinstimmenden Angaben von osteuropäischen KollegInnen und Ex-Studis in etwa so, als würde die BRD Mallorca, Helgoland und Sylt an Serbien übergeben. Also, so richtig, mit: Kein Urlaub mehr dort für Deutsche. Diese Alternative existiert mithin eigentlich nicht, und es bleiben realistisch nur die beiden anderen.
    2. Irgendwie zwingen „wir“ Russland ohne Krieg zur Aufgabe der Krim. Die Folge wäre ein Revanchismus in Russland, der garantiert die Größenordnung des Revanchismus in der Weimarer Republik angesichts von Versailles erreichen würde. Das wäre nicht nur für Russland furchtbar; mit Sicherheit wären damit alle Hoffnungen auf Ausgleich für die nächsten 30 Jahre futsch. Es gäbe auch praktisch sicher eine wild drehende Aufrüstungsspirale. Wer könnte es einer Bevölkerung, die mindestens ebenso patriotisch betaumelt ist wie „unsere“ verdenken, Russland nach so einer Nummer so stärken zu wollen, dass es eine solche Schmach nicht nochmal hinnehmen müsste? Gut, ich kann das, weil es klar durchgeknallt ist. Aber es ist nicht durchgeknallter das das, was „wir“ im Augenblick aufführen.
    3. Wir machen mal wieder einen Krimkrieg, weil der letzte so ein Höhepunkt der Zivilisation war. Tut euch den Gefallen und blättert ein wenig im verlinkten Wikipedia-Artikel. Wer sowas ernsthaft will, möge erstmal die wunderbaren Thursday Next-Bücher von Japer Fforde lesen – Hauptperson ist eine Veteranin eines in einer Alternate History eingefrorenen Krimkriegs – und sich danach bitte schleunigst auf den Weg zurück in Kreise zivilisierter Menschen begeben.

    Alle drei Alternativen sind offensichtlich Quatsch. Nichts davon ist auch nur im Entferntesten wünschbar. Mit welchen Gedanken im Kopf kann sich also irgendwer darüber erregen, wenn irgendwer anders – und sei es auch ein frömmelnder Marinechef – das Offensichtliche feststellt: Chruschtschows Laune von 1954, als er die Krim an die Ukraine übergab, war nie mehr als das, eine Laune (eines Diktators, Autokraten, oder wie immer das heute heißt, zumal) nämlich, und gewiss nichts, für das irgendwer sterben sollte.

  • Werkstattbericht: Kohlendioxid auf dem Balkon

    Im November hatte ich mich gefragt, was wohl die recht deutlichen Spitzen der CO₂-Konzentration auf meinem Balkon verursachen mag, die sich da immer mal wieder zeigen. Um Antworten zu finden, habe ich seit Ende Dezember eine längere Messreihe laufen lassen und derweil vierstündlich Windrichtungen von der Open Weathermap aufgenommen. Das, so hoffte ich, sollte zeigen, woher der Wind weht, wenn die Konzentration auffällige Spitzen hat.

    Leider gibt ein schlichter optischer Vergleich von Konzentration (oben) und Windrichtung (unten; hier als Cosinus, damit das Umschlagen von 0 auf 360 Grad nicht so hässlich aussieht) nicht viel her:

    Zwei unterbrochene Kurven, die jeweils recht munter vor sich hinwackeln

    CO₂-Konzentration auf meinem Balkon und Windrichtung für Heidelberg aus der Open Weathermap zwischen Ende Dezember 2021 und Anfang Februar 2022. Die Lücken ergeben sich aus fehlenden Daten zur Windrichtung.

    Tatsächlich hilft es ein wenig, wenn mensch das anders plottet. Unten bespreche ich kurz das Programm, das Wind- und CO₂-Daten zusammenbringt. Dieses Programm produziert auch folgenden Plot in Polarkoordinaten:

    Scatterplot in Polarkoordinaten: Im Wesentlichen ein oranger Ring

    CO₂-Konzentration auf meinem Balkon gegen meteorologische Windrichtung (also: Herkunft des Windes, hier gezählt ab Nord über Ost, so dass das orientiert ist wie eine Landkarte) und farbkodierte Windgeschwindigkeit (in Meter pro Sekunde). Das ist ein PNG und kein SVG, weil da doch viele Punkte drauf sind und Browser mit so großen SVGs immer noch ins Schlingern kommen.

    Ich hatte mich seit einem Monat auf diesen Plot gefreut, weil ich erwartet habe, darin eine ordentliche „Beule“ zu sehen dort, wo die CO₂-Emission herkommt. Gemessen daran ist wirkliche Ergebnis eher ernüchternd. Dort, wo ich die Abgasfahne des Großkraftwerk Mannheim sehen würde, etwas unterhalb der 270°-Linie, ist allenfalls ein kleines Signälchen und jedenfalls nichts, was ich wirklich ernst nehmen würde.

    Etwas deutlicher zeichnet sich etwas zwischen 280 und 305 Grad ab, also Westnordwest. Das könnte die Ladenburger Chemieindustrie oder die BASF in Ludwigshafen sein; zu letzterer haben die kritischen Aktionäre im letzten Jahr angesagt, sie emittiere als Konzern 20 Megatonnen Kohlendioxid im Jahr. Wenn, was nicht unplausibel ist, die Hälfte davon am Standort Ludwigshafen anfällt, würden sich diese 10 Mt ganz gut vergleichen mit den 8 Mt, die ich neulich fürs Großkraftwerk gefunden hatte – die Abschätzung von dort, so eine Abgasfahne könne durchaus die Konzentrationsspitzen erklären, kommt also auch für die BASF hin. Allerdings wird deren Emission angesichts des riesigen Werksgeländes natürlich auch verteilter sein…

    Also: Überzeugend ist das alles nicht. Ein anderes Feature ist jedoch schlagend, wegen weniger Übermalung – die bei beiden Plots ein echtes Problem ist; nächstes Mal muss ich mit halbtransparenten Punkten arbeiten – noch mehr, wenn ich den Polarplot „ausrolle“, also den Winkel von unten nach oben laufen lasse:

    Scatterplot kartesisch: ein starker dunkler Klops bei 230 Grad

    In dieser Darstellung fällt ins Auge, dass die CO₂-Konzentration bei starken (dunkle Töne) Südwest- (um die 225°) -strömungen recht drastisch fällt. Das passt sehr gut zu meinen Erwartungen: Südwestwind schafft hier in der Rheinebene Luft durch die Burgundische Pforte, hinter der im Mittelmeerraum auch jetzt im Winter eifrig Photosynthese stattfindet. Wer drauf aufpasst, sieht die Entsprechungen auch im Polarplot von oben, in dem dann sogar auffällt, dass reiner Südwind gelegentlich noch besser photosynthetisierte Luft heranführt, auch wenn der Wind nicht ganz so stark bläst.

    Demgegenüber ist mir eigentlich alles, was sich im nordöstlichen Quadranten des Polarplots (und hier zwischen 0 und 90 Grad) abspielt, eher rätselhaft. Der doppelseitige Sporn bei genau 90 Grad ist vermutlich auf Datenmüll der Wetterstation zurückzuführen: Wahrscheinlich hat die einen Bias, der bei wenig Wind diese 90 Grad ausspuckt. Selbst nach meiner Interpolation (vgl. unten) ist das noch zu ahnen, wenn mensch die Verteilung der Geschwindigkeiten insgesamt (in rot) und die der Geschwindigkeiten rund um einen auffälligen Hügel rund um 90° Windrichtung herum (in blau) ansieht:

    Zwei Histogramme über Geschwindigkeiten, bei dem das blaue nur im linken Bereich ist

    Die elegante Schleife, die von (0, 500) über (70, 540) nach (90, 510) führt und die im Polarplot ganz alleine außen vor sich hinläuft, dürfte ziemlich sicher teils physikalisch sein. Dass das da so einen Ring macht, dürfte zwar ein Artefakt meiner gewagten Interpolation sein (vgl. Technics). Der Anstieg als solcher und wohl auch die grobe Verortung dürften aber ganz gut hinkommen. Sieht mensch sich das im zeitlichen Verlauf an, entspricht die Schleife der höchsten Spitze in der ganzen Zeitreihe.

    Nur leider ist im Nordosten von meinem Balkon nicht mehr viel: Ein paar Dutzend Häuser und dann der Odenwald, also für fast 10 km nur Bäume. Na gut, und ein Ausflugsrestaurant.

    Die aus meiner Sicht plausibelste Interpretation für diese Stelle basiert auf der Beobachtung, dass in der fraglichen Zeit (am 10.1.) wenig Wind wehte, die Temperaturen aber ziemlich niedrig lagen. Vielleicht schauen wir hier wirklich auf die Heizungen der Umgebung? Der Schlot unserer lokalen Gemeinschafts-Gasheizung ist in der Tat so in etwa im Nordosten des Balkons – und vielleicht wurde ja sonst nicht so viel geheizt?

    Technics

    Die wesentliche Schwierigkeit in diesem Fall war, dass ich viel engmaschiger CO₂-Konzentrationen (alle paar Minuten) habe als Windrichtungen (bestenfalls alle vier Stunden), und zudem viele Windrichtungen aus welchen Gründen auch immer (offensichtlich wäre etwa: zu wenig Wind) fehlen. Auf der positiven Seite erzeugt mein Open Weathermap-Harvester weathercheck.py eine SQLite-Datenbank, so dass ich, wenn es nicht furchtbar schnell gehen muss, recht bequem interessante Anfragen laufen lassen kann.

    Mein Grundgedanke war, die beiden einem CO₂-Wert nächsten Wind-Werte zu bekommen und dann linear zu interpolieren[1]. Das ist schon deshalb attraktiv, weil die Zeit (als Sekunden seit 1.1.1970) als Primärschlüssel der Tablle deklariert ist und deshalb ohnehin ein Index darauf liegt.

    Dabei sind aber je nach Datenverfügbarkeit ein Haufen Fälle zu unterscheiden, was zu hässlichen if-else-Ketten führt:

    def get_for_time(self, time, col_name, default=None):
      res = list(self.conn.execute(f"SELECT timestamp, {col_name} FROM climate"
        " WHERE TIMESTAMP BETWEEN ? AND ?"
        " ORDER BY ABS(timestamp-?) LIMIT 2",
        (time-40000, time+40000, time)))
    
      if len(res)!=2:
        if default is not None:
          return default
        raise ValueError(f"No data points close to {time}")
    
      elif abs(res[0][0]-time)<200 and res[0][1] is not None:
        return res[0][1]
    
      elif res[0][1] is None or res[1][1] is None:
        if default is not None:
          return default
        raise ValueError("One or more limits missing.  Cannot interpolate.")
    
      else:
        t1, v1 = res[0]
        t2, v2 = res[1]
        return (v1*(t2-time)+v2*(time-t1))/(t2-t1)
    

    Die Fallunterscheidung ist:

    1. Es gibt überhaupt keine Daten innerhalb von einem halben Tag. Dann kann ich nur einen Fehler werfen; zumindest in unseren Breiten sind Windrichtungen eigentlich schon über kürzere Zeiträume hinweg nur lose korreliert.
    2. Innerhalb von 200 Sekunden der gesuchten Zeit gibt es einen tatsächlichen Messwert, und dieser ist nicht NULL. Dann gebe ich den direkt zurück.
    3. Einer der beiden Werte, die um die gesuchte Zeit herum liegen, fehlt (also ist NULL). Dann kann ich nicht interpolieren und muss wieder einen Fehler werfen. Hier wäre es nicht viel unplausibler als die Interpolation, wenn ich einfach einen nicht-NULL-Wert nehmen würde; aber es wäre doch nochmal ein Stückchen spekulativer.
    4. Ansonsten mache ich einfach eine lineare Interpolation.

    NULL-Werte machen die Dinge immer komplex. Aber wenn ihr euch überlegt, wie viel Stress sowas ohne SQL wäre, ist das, finde ich, immer noch ganz elegant. Im echten Code kommt noch etwas Zusatzkomplexität dazu, weil ich Winkel interpolieren will und dabei immer die Frage ist, wie mensch die Identität von 360 und 0 Grad einrührt.

    Eine vorsorgliche Warnung: aus der Art, wie ich den Spaltennamen hier reinfummele, folgt, dass, wer den Parameter kontrolliert, beliebiges SQL ausführen kann. Sprich: wer diesen Code irgendwie Web-zugänglich macht, darf keine unvalidierte Eingabe in col_name reinlassen.

    Eingestandenermaßen ist diese Sorte von datenbankbasierter Interpolation nicht furchtbar effizient, aber für die 100000 Punkte, die ich im Augenblick plotten will, reicht es. Siehe: Den Code.

    [1]Klar: Windrichtungen über Stunden linear zu interpolieren ist in den meisten Wetterlagen eher zweifelhaft. So, wie ich meine Plots mache, ist es aber nicht wesentlich verschieden davon, die Punkte über den Bereich zu verschmieren. Das wiederum wäre konzeptionell gar nicht so arg falsch.
  • Antisprache: Innovation, Teil 1

    Foto: Jede Menge Autofelgen

    Alufelgen für Autos: Ist das Innovation oder kann das weg?

    Mag „Chancengleichheit“ auch der Klassiker der Antisprache sein: „Innovation“ verdient jedenfalls einen Großpreis fürs Lebenswerk. Der Grundtrick dabei ist, menschenfeindlichen Quatsch gegen Kritik zu immunisieren, indem er als neu und schon von daher nützlich und gut – das ist der antisprachliche Subtext der „Innovation“ – hingeredet wird. Kritisiert dennoch jemand, kann im Wesentlichen jeder Mumpitz verteidigt werden mit dem Argument, ewig Gestrige hätten ja schon das Rad oder das Buch oder Antibiotika verdammt.

    Das ist Antisprache, denn natürlich ist es vernünftig, bei irgendwelchen Plänen oder Techniken erstmal zu überlegen, ob sie überhaupt einem nachvollziehbarem Zweck dienen könnten und dann, ob dieser Zweck in einem irgendwie erträglichen Verhältnis zum Dreck steht, den das Zeug macht. Dass es gelegentlich wirklich nützliche Erfindungen gibt (Rad, Buch, Antibiotika, LED-Scheinwerfer am Fahrrad), bedeutet nicht, dass solche Überlegungen irgendwie rückwärtsgewandt sind. Im Gegenteil. Ohne sie bekommen wir noch regelmäßiger Mist wie, sagen wir, Stuttgart 21 oder gar die Autogesellschaft. Ich gebe zu, dass „Technikfolgenabschätzung“ klingt wie ein sonnengebleichter Bürokratenfurz. Aber es ist trotzdem keine schlechte Idee.

    Demgegenüber kann „Innovation” auf eine etwas befremdliche Weise durchaus unterhaltsam werden, etwa wenn mit ernstem Gesicht so offensichtlich absurdes Zeug vorgetragen wird, dass ich den Verdacht von Kommunikationsguerilla kaum vermeiden kann. Ein gutes Beispiel für diese Kategorie (vielleicht unfreiwillig) kenntlicher Antisprache war Teil der CES-Berichterstattung in Forschung aktuell vom 8. Januar.

    Darin versucht Mary Barra, Vorstand von General Motors, ab Minute 4:20 ihr „softwaredefiniertes“ Auto mit folgenden Beispielen schmackhaft zu machen (Übersetzung DLF):

    Das macht es Kunden möglich, die Software ihres Fahrzeuges zu aktualisieren und neue Inhalte drahtlos herunterzuladen. [...] Die Technik ermöglicht es beispielsweise, eine Softwareoption herunterzuladen, um die Beschleunigung des Fahrzeugs zu erhöhen.

    Wow. Die Updateritis muss, wenn mein weiteres soziales Umfeld nicht komplett exotisch ist, so in etwa der unpopulärste Aspekt der „Digitalisierung“ überhaupt sein. Das zu ermöglichen (und damit: zu verlangen, denn was ins Netz kann, muss für rasche Bugfixe geplant werden) soll jetzt ein Argument sein, sich eine „Innovation“ einzutreten?

    Der zweite Teil von Barras Sales Pitch ist eigentlich noch wilder: GM hat ja meine Sympathie, wenn es seine Fahrzeuge per Computer runterregelt. Aber so offen zugeben, dass sie planen, künstlich verschlechterten Kram zu verkaufen – denn mal ehrlich: solange mensch keinen neuen Motor runterladen kann, sind die Extra-PS, die ein Download liefern kann, in einem bereits ab Werk ordentlich designten System eher dürftig –, um obendrauf den KundInnen Freischaltungen für Krempel anzudrehen, den sie eigentlich schon bezahlt haben: das ist schon stark.

    Hätte Frau Barra das in einem Beichtstuhl gesagt, hätte ihr nach so offenen Bekenntnissen Absolution erteilt. Wenn sie hinreichend viel Reue gezeigt hätte.

  • Inlining xs:include in XML Schema

    Screenshot: Fragmented XSD schema

    Please don't do it like this: for users of a schema, having to pull it in a dozen fragments is just pain and no gain. See below for a program that lets you heal this particular disease.

    While I'm a big fan of XML – which is governed by a very well-written standard and is (DTDs aside) about as easy to process as something context-free can be –, I have always been a lot more skeptical about XML Schema, which is horrendously complex, has a few nasty misfeatures[1] and generally has had a major role in giving XML a bad name.

    But well, it's there, and it won't go away. That ought to be reason enough to not encumber it with further and totally avoidable pain. As, for instance, splitting up a single schema into fragments of a couple of lines and then using xs:include liberally to re-assemble the fragments at the client side. Datacite, I'm looking at you. Regrettably, they're not the only ones doing that. And as opposed to splitting a domain mapping into different schemas – which might improve re-usability, this lexical splitting really helps nobody except perhaps the authors.

    The use of xs:include is a pain in particular when one tries to implement redistributable validators, as these then need to keep a lot of files in a defined hierarchy. Just pointing to the vendor's site is not an option, because the software would hit that every time it validates something, which is, if nothing else, a privacy and stability problem.

    Well, today I had another case of XSD splititis, and this time it was bad enough that I decided to merge the fragments. I had expected people had written “inliners” expanding xs:include in XSDs into standalone XSDs. After all, it's basically a lexical thing (well, excepting namespace mappings and perhaps re-indentation). Five minutes of operating a search engine didn't bring up anything, though, and so I wrote a quick cure: expand-xsd-include.py.

    I'll be the first to admit that it is a hack at this point, mainly because I blindly discard the root tags for the included documents. That's wrong because these might add or, worse, change the mapping from prefixes to XML namespaces. In its current state, this will fail badly if included documents use different or extra mappings and declare them in the root element; declarations further down are ok.

    Another problem resulting from keeping namespace processing off on the parser is that I hardcode the prefix for the XSD schema to xs. If your schema uses something else, change XSD_PREFIX in the script.

    Mending these deficiencies wouldn't be an undue effort, and if you have XSDs that need it, let me know and I'll do proper namespace processing. Or perhaps, in addition, teach the thing to pull the input files via http. Meanwhile, I suspect that the large majority of atomised XSDs can be merged with this code, and so I thought I might as well put it online in its slightly embarrassing shape.

    Let me know if you use it. And if you distribute fragmented XSDs: Why not use the script to assemble your XSD before publishing it?

    [1]The worst XSD misfeature IMHO are the namespaced attribute values; where XML has been designed to be parsable without external DTDs (ok, not generally, but under well-defined conditions, and it's been a long time since I saw a document that didn't meet those), parsing results with namespaced attribute values depend on whether or not the parser knows the XSD. And that would even be bad without the ugly schemaLocation hacks in both schema and schema instance.
  • Relevante Personalien

    Demo-Foto: Schild "Solidarität mit Florida-Rolf" und eine GEW-Fahne

    Eine regierungskritische Studidemo 2003 in Frankfurt: „Solidarität mit Florida-Rolf“ klingt lustig, war aber eine beißende Kritik an Durchsetzung von Sozialabbau mittels populistischer Hetze, die damals (und zumindest noch in die ersten Hartz-Gesetze hinein) ein die Bildzeitung, Rot-Grün und die DGB-Spitze einschließender Mainstream war.

    Hatte ich mich gestern noch lustig gemacht darüber, dass Personalien derzeit in den Nachrichten vor heißen Corona-Stories laufen, lese ich heute von einer, die ich doch weit vorn in eine Nachrichtensendung gesetzt hätte: Wenn nicht noch ein Wunder geschieht, wird Yasmin Fahimi neue Vorsitzende des DGB.

    Nun ist es (nicht nur) in Gewerkschaften ganz normal, dass sich mit jeder Hierarchiebene die zahmen, karriereorientierten, konservativen Personen anreichern[1]. Die Causa Fahimi ist jedoch so extrem, dass die taz zu loben ist für die Platzierung von Anja Krügers treffendem Kommentar auf der ersten Seite der taz vom Donnerstag. Auch ich als mäßig aktives GEW-Mitglied kann diese Geschichte allenfalls mit einer guten Lupe von einer schleichenden Selbstentleibung des DGB zu unterscheiden.

    Dass die IG BCE, innerhalb des DGB an reaktionärer Gesinnung nur noch von der Gewerkschaft der Polizei überboten, jetzt nochmal den DGB-Vorsitz übernimmt, und dann noch mit einer rechten SPDlerin, das ist ein offener Affront gegen alle, die in den Gewerkschaften eine Wiederholung der Katastrophe von 2002 verhindern wollen. Damals hielten die DGB-Gewerkschaften weitgehend ruhig, als Rot-Grün einen auch im Rückblick atemberaubenden Abbau von sozialen Rechten und Möglichkeiten betrieb, mit absehbaren Folgen für die Motivation der Mitgliedschaft wie auch die politische Orientierung von Menschen, die eigentlich gewerkschaftlich organisiert sein müssten und jetzt stattdessen AfD wählen (ich habe dafür immer noch keine bessere Umschreibung gefunden als „Turkeys voting for Christmas“).

    Ein vergleichbarer Angriff auf soziale Rechte wird vermutlich auch von der gegenwärtigen Regierung kommen. Dochdoch, es gibt schon noch einiges zu demontieren in den Überresten des Sozialstaats. Wenn der DGB im Kampf gegen diese Demontagen mit dem Gesicht einer SPD-Jasagerin dasteht, ist das der Königsweg. In die Irrelevanz.

    Und das ist auch dann keine gute Nachricht für die Einzelgewerkschaften, wenn in denen bereits jetzt meist nur Augenrollen kommt, wenn wieder Leute für irgendwelche DGB-Gremien gesucht werden. So hatte sich Joe Hill die O.B.U. nicht vorgestellt.

    [1]Vgl. auch Schurken und Engel. Entgegen dem dort simulierten Konkurrenzprinzip kann ich im Gewerkschaftsfall aber aus erster Hand berichten, dass die Reproduktion des Schurkigkeitsgradienten im Wesentlichen durch eine Art Kooptation passiert, bei der jeweils in der höheren Ebene arbeitende FunktionärInnen sich ihren Nachwuchs sorgfältig und listenreich aus den niedrigeren Ebenen handverlesen und dabei Menschen präferieren, deren Politikverständnis nicht zu weit von dem ihren abliegt. Diese Personen dann auch durchzusetzen ist einfach, weil verständlicherweise kaum mehr jemand Lust hat auf Gewerkschaftsarbeit, also alle froh sind, wenn sich überhaupt irgendwer findet.
  • SARS-2 ist in etwa fertig

    Ich beobachte derzeit fasziniert die Reihenfolge der Beiträge in Nachrichtensendungen. Wir haben Corona-Zahlen, die noch vor zwei Monaten helle Panik ausgelöst hätten – 200000 gemeldete Neuinfektionen am Tag, eine bundesweite 7-Tages Inzidenz über einem Prozent –, und entsprechende Meldungen kommen zumindest bei ARD und DLF, wenn überhaupt, weit hinter Mumpitz wie der Frage, ob wohl ein Herr Merz oder ein Herr Brinkhaus der CDU-Fraktion im Bundestag vorsitzen wird (mal ehrlich: Wer wirds merken?).

    Aber vielleicht ist das auch besser so; denn auch wenn sich das derzeitige Tempo wahrscheinlich noch nicht durchhalten lässt, wenn sich die Altersverteilung der Infizierten nach oben verschiebt, mag es sein, dass es ohne grobe Notbremsen gerade jetzt geht, und wenn der nächste Winter halbwegs normal laufen soll, sollten wir auch gar nicht so arg einbremsen (und auch nicht im Interesse der 70-Jährigen).

    Gestern allerdings hätte es eine spektakuläre Nachricht gegeben, die ich ganz vorne in meine Sendung gepackt hätte, wenn ich Redakteur wäre: Mit Omikron ist SARS-2 in gewissem Sinn fertig. Woher ich das weiß? Nun, meine Lieblingsrubrik im RKI-Wochenbericht kommt schon seit langem von der Arbeitsgemeinschaft Influenza (AGI; ich hatte die schon mal zitiert), die Woche um Woche berichtet, was so umgeht an Erregern von Atemwegserkrankungen. Im Bericht von gestern findet sich das auf Seite 14, und da steht:

    In der virologischen Surveillance der AGI wurden in KW 3/2022 in insgesamt 66 von 112 eingesandten Proben (59 %) respiratorische Viren identifiziert. Darunter befanden sich 23 Proben mit SARS-CoV-2 (21 %), 15 mit humanen saisonalen Coronaviren (hCoV) (13 %), zwölf mit Rhinoviren (11 %), elf mit humanen Metapneumoviren (10 %), jeweils drei Proben mit Parainfluenzaviren (3 %) bzw. mit Respiratorischen Synzytialviren (RSV) (3 %) sowie eine Probe mit Influenzaviren (1 %).

    Das ist spektakulär, weil, wenn ich nichts übersehen habe, nie zuvor während der ganzen Pandemie SARS-2 in den Infektionszahlen unsere gewohnten humanen Coronaviren überholt hat.

    Und es heißt ziemlich sicher: SARS-2 ist jetzt bis auf einen kleinen Faktor so gut an den Menschen angepasst, wie das Coronaviren halt können – die anderen vier hatten ja schon mindestens hundert Jahre Zeit für ihre Optimierung (der jüngste könnte seit 1889 umgehen; zumindest vermuten viele Leute, die Russische Grippe könne die letzte wirklich tödliche Coronapandemie vor SARS-2 gewesen sein), und wenn SARS-2 in deren Liga aufgestiegen ist, wird es wohl keine weltbewegenden Erfindungen mehr machen können; in diesem Sinne wäre es, na ja, „fertig“.

    Mensch könnte spekulieren, SARS-2 könne einen Vorteil haben, weil es für die meisten Menschen hier immer noch neu ist, während sie die anderen vier schon aus dem Kindergarten kennen. Per Bauchgefühl bezweifele ich den Vorteil allerdings, denn die vielen Geimpften – und niemand ist gegen eines der anderen Coronaviren geimpft – machen es SARS-2 vermutlich ziemlich ähnlich schwer wie die vorhergegangenen Infektionen den anderen.

    Zum Schluss nochmal Fanpost an die AGI: Ich halte das für hochrelevante Forschung mit minimalem Eingriff in die Privatsphäre von Kranken, small data im besten Sinn (wobei ich zugebe, dass mir das noch besser gefallen würde, wenn das Sample etwas größer wäre; in Zeiten wie diesen sollten sich doch 500 bis 1000 Proben finden). In meiner Fantasie sind die AGI-Leute und ihre Sentinelpraxen so wie die Waldläufer im Herrn der Ringe, die durch die Wildnis ums Auenland streichen und, ohne dass es viele merken, die Augen offen halten. Helden!

  • Wes Brot ich ess…

    Ein schrumpeliger Apfel

    Würdest du diesen Apfel in einem Supermarkt kaufen? Geht nicht mehr. Ich habe ihn vorhin gegessen. Also: Das, was Wurm und Balkonlagerung davon übrig gelassen haben. Auf der anderen Seite dürfte das Ding einen Behandlungsindex um die Null gehabt haben – siehe unten.

    Neulich hat die Parteistiftung der Grünen, die Böll-Stiftung, einen Pestizidatlas herausgegeben, eine Sammlung von Infografiken und Karten über den Einsatz von Giften aller Art in der Landwirtschaft. Wie üblich bei diesen Atlanten, haben sie das dankenswerterweise unter CC-BY publiziert, und besser noch: Die Sachen sind auch ohne Javascript leicht zugänglich[1].

    Ich hatte mir davon einige Kopfzahlen erhofft, denn ich habe wirklich kein gutes Gefühl dafür, was so an Giften auf den Feldern (und Weinbergen!) in meiner Umgebung landet und was das bedeutet. In der Hinsicht hatte ich kein Glück. Im Atlas gibts zwar haufenweise Zahlen, aber wirklich überzeugen konnten mich nur wenige, oft genug, weil sie letztlich Metriken ohne Bedeutung sind. Ein gutes Beispiel für diese Kategorie ist die Masse der Agrochemikalen (verwendet z.B. auf S. 11, S. 15, S. 44), die wohl als Proxy für „Umfang des Gifteinsatzes“ stehen soll.

    Das halte ich für profund fehlerhaft. Neonikotinoide, Glyphosat und DDT (um mal ein paar Pole aufzumachen) sind in spezifischer Giftigkeit, Wirkprofilen, Umweltauswirkungen, Kinetik und eigentlich jeder anderen Hinsicht fast völlig verschieden voneinander. „Eine Tonne Pestizid“ sagt daher so gut wie nichts aus. Obendrauf kommt noch ein kleiner Faktor Unsicherheit, ob sich die Masse auf Wirkstoffe, fertige Rezepturen oder irgendwas dazwischen bezieht, aber das wird wohl in diesem Geschäft kaum mehr als einen kleinen Faktor ausmachen – verglichen mit dem Grundproblem (in dem wir vermutlich über Faktoren von einigen tausend sprechen) wohl vernachlässigbar.

    Ähnlich schwerwiegende Einwände hätte ich zur breiten Mehrheit der Zahlen in dem Atlas: Vage beeindruckend, aber immer ein gutes Stück unterhalb der Schwelle von Wohlfundiertheit und allgemeinen Anwendbarkeit, die ein paar Ziffern zu einer Orientierung gebenden Kopfzahl machen könnten.

    Es gibt jedoch auch ohne schlagende Zahlen von werkübergreifender Bedeutung einige Einsichten, die wertvoll sind, so etwa auf S. 33 die Bankrotterklärung der Idee, durch grüne Gentechnik den Pestizideinsatz zu reduzieren. In Brasilien, wo transgene Pflanzen die Landwirschaft vollständig dominieren, sind 2019 47% mehr Pestizide ausgebracht worden als 2009. Gut: Soja (darauf schaut der Rest der Grafik, und das wird wohl auch den Pestizidverbrauch dominieren) ist in diesem Zusammenhang ein schlechtes Beispiel, denn das populäre transgene Soja („Roundup ready“) ist ja gerade designt, um große Mengen Herbizide zu überleben. Dazu sind wieder blind Massen angegeben, und die angesichts galloppierender Rodungen in Brasilien vermutlich rasch wachsende Anbaufläche wäre eigentlich auch noch einzurechnen, wenn die Zahlen einen analytischen Blick erlauben wollten.

    Aussagekräftiger wären für die behandelte Frage Zahlen für Mais gewesen (nämlich den mit der Bt-Abwehr gegen den Maiszünsler) und folglich auch Insektizide beim Mais. Aber seis drum: Die Grafik zeigt auch ohne methodische Strenge, dass es so nicht weiter gehen kann.

    A propos Mais: Dass der mit recht wenig Chemie auskommt, hat mich schon verblüfft:

    Mit "Schlechte Nachrichten für Apfel-Fans" überschriebene Grafik

    Grafik von Seite 14 des Pestizidatlasses. Die Caption im Atlas deutet an, dass der „Behandlungsindex“ etwas wie die mittlere Anzahl von Anwendungen von Pflanzenschutzmitteln ist; ob das wirklich so ist: Wer weiß? CC-BY Pestizidatlas

    Dass Wein heftig pflanzengeschützt wird, ist hier in der Gegend unübersehbar. Bei Hopfen und Äpfeln überrascht es mich aber, denn hiesige Apfelbäume in Streulagen, um die sich im Wesentlichen niemand kümmert, liefern durchaus sehr essbare Äpfel; hinreichend viele und große, um mir den ganzen Winter über die Basis für mein Frühstücksmüsli zu liefern (das Foto oben zeigt den von heute).

    Klar haben fast alle Hautdefekte, und in vielen wohnte auch mal ein Wurm – aber das tut ihrer Essbarkeit wirklich keinen Abbruch. Aus dieser Erfahrung heraus hätte ich erwartet, dass schon mit recht moderaten Interventionen supermarktkompatible Äpfel erreichbar wären. Das stimmt offenbar so nicht. Die letzten 50% zum makellosen Produkt – und wahrscheinlich auch die Spalierzucht in Monokultur – scheinen Äpfel von einer ganz einfachen zu einer ganz heikelen Kultur zu verwandeln.

    Meine Lieblingsgrafik ist schließich auf Seite 39:

    Eine Kopfzahl gibt auch das nicht her. Als Beleg für das alte Motto „Wes Brot ich ess, des Lied ich sing“ kann das aber durchaus durchgehen. Und als Illustration dafür, wie problematisch es ist, Wissenschaft – wie wir das in unserer Drittmittelkultur nun mal tun – über Geld zu regulieren.

    [1]Na ja, blöderweise ist ohne Javascript so ein doofes animiertes GIF neben jedem Ding, das runtergeladen werden kann. Tipp an die WebseitenmacherInnen: Wenn ihr diese Sorte Gimmick schon braucht, stattet ihn doch wenigstens mit einem display: none im CSS aus. Per Javascript könnt ihr das display-Attribut dann nach Bedarf konfigurieren. Nettoeffekt: UAs ohne JS (aber mit elementarem CSS) sehen keine blinkenden Trümmer.
  • PSA: Grobe Schnitzer beim Trauern

    Gestern um halb eins ist in Heidelberg ein Mann in einen Uni-Hörsaal gelaufen und hat mit einem Gewehr eine Frau erschossen, ist danach wieder rausgegangen und sich irgendwie selbst mit seiner Waffe umgebracht So ein Geschehen in einem Hörsaal, in dem ich vor vielen Jahren auch mal „Mathematische Methoden der Physik“ gehört habe, überhaupt, Leute mit Gewehren im botanischen Garten, in dem ich auch regelmäßig rumlaufe: Das lässt mich natürlich nicht kalt.

    Den bundesweiten Aufschrei, der folgte, finde ich allerdings angesichts der Wurstigkeit, wenn etwa Menschen überfahren werden, sich ohne Ballerei umbringen oder auf der Straße an genereller Verwahrlosung sterben, ziemlich unangemessen. Ich will mich jedenfalls nicht hinstellen und entscheiden, welcher Tod „überflüssiger“ oder „entsetzlicher“ war.

    Zum Glück muss ich das nicht. Ich könnte dazu den Mund halten. Der Rektor der Uni Heidelberg, das will ich gerne zugestehen, kann sich diesen Luxus nicht erlauben. Und so hat er rund fünf Stunden nach dem Ereignis eine Art Trauermail über den uniweiten Verteiler verschicken lassen. Es ist diese, die mich zu diesem Public Service Advisory bringt, denn der Rektor hat zwei Dinge getan, die in solchen Trauermails wirklich niemand haben will:

    1. Die Thoughts-And-Prayers-Phrase verwendet („Das Rektorat ist in Sorge um die Opfer und in Gedanken bei ihnen, ihren Freunden und Angehörigen”). Mal ehrlich: alle wissen, dass die Gedanken eines Rektorats, in dessen Uni gerade ein riesiger Polizei- und Presseauflauf stattfindet, überall sein werden, aber fast sicher nicht bei Freunden und Angehörigen von Opfern. Das ist wahrscheinlich noch nicht mal schlimm, denn die Betreffenden hätten auch dann nichts von diesen Gedanken (zum Glück hat das Rektorat auf „Gebete“ verzichtet), wenn sie bei ihnen wären. Klar ist ein wenig Lügen zum Trost erlaubt, aber bitte nicht mit einer Phrase, die so abgedroschen ist, dass sie sogar für Memes verbrannt ist.
    2. Die Mail von der Adresse kum@uni-heidelberg.de abgeschickt (ok, ich kann nicht genau sagen, ob das der Absender war, denn die Liste hat die Header weitgehend umgeschrieben, aber das Reply-to ist kum@). Kum wie „Kommunikation und Marketing“. Die Nachricht ist: Das ist ein Problem für unser Marketing, und da müssen wir mit Kommunikation Schaden begrenzen. Niemand erwartet, dass der Rektor Mail an rektor@ oder vielleicht eitel@ selbst liest – aber es würde die ganze Nachricht doch ein wenig authentischer wirken lassen, hätte er einen dieser Absender verwendet.

    Nun: Was mensch zum ersten Mal macht, vermurkst mensch. Hoffen wir, dass das Rektorat keine Übung in dieser Sorte Prosa bekommen muss.

  • Geschichte: Carl Benz bei Wilhelm I

    Schlechte Fotomontage: Ein Benz-Portrait in einer Versailles-Spiegelsaal-Variante

    Die Audienz des Herrn Benz (in weißer Uniform) wurde auch im Bild festgehalten.

    Bei Recherchen im Deutschen Nationalarchiv bin ich auf eine Mitschrift einer Art Ansprache – heute würde das wohl sales pitch genannt werden – gestoßen, die Dr. Carl Benz, Mannheim, Eigentümer der dortigen Fabrik für Maschinen zur Blechbearbeitung, gelegentlich einer Audienz bei Kaiser Wilhelm I am 23. Mai 1880 gehalten haben soll. Ich habe sie abgetippt und orthographisch aktualisiert:

    Hochgeehrte kaiserliche Majestät, allerdurchlauchtigste, großmächtigste, allergnädiste Hohheit etc pp,

    Erlaubt mir, Carl Friedrich Michael Benz, Absolvent der polytechnischen Hochschule zu Karlsruhe, Euch untertänigst einen Vorschlag zu unterbreiten, welcher einen ebenso ernsten wie drängenden Missstand aus der Welt zu schaffen verspricht. Namentlich sind nicht nur die Straßen der Hauptstadt Ihro Reiches verunziert von den Hinterlassenschaften zahlloser Rösser. Nein, diese sind in allen Städten wie Dörfern in Ihro Obhut ein beständiges Ärgernis, zu schweigen von den Gefahren, die von ihnen für das öffentliche Wohlbefinden ausgehen. So vergeht wohl kein Tag, ohne dass sich ein tapferer Offizier seine tadellose Uniform durch einen unbedachten Schritt, gar ein unwürdiges Ausrutschen, besudelt mit dem kreatürlichen Schmutz.

    Es wird Zeit, dieses Ärgernis aus der Welt zu schaffen. Ich bin dazu in der Lage, und zwar mittels meines patentierten pferdelosen Wagens, kurz, meines Motorwagens. Er vermag Menschen mit großer Geschwindigkeit zu bewegen, ohne dass dazu Pferde oder anderweitig die Straßen verunreinigende Tiere benötigt würden. Wird es erst genug von meinen Wagen geben, wird unser gütiger Herrscher Seine Städte nicht mehr wiedererkennen.

    Um diesen großen Schritt zur höheren Kultivierung des deutschen Volkes, ja, ich will der Hoffnung Ausdruck geben, der Völker des ganzen Erdenkreises, zu tun, werden nur einige kleine Erweise von Gunst und Gnade nötig sein, abgesehen von einer unbedeutenden Zuwendung aus der Privatschatulle Eurer Majestät. Zuvorderst müssten Majestät einige Aufwendungen für den Ausbau des Straßennetzes veranlassen.

    Natürlich werden meine Wagen gewisse gesetzliche Privilegien benötigen. Ihnen ist die Hälfte des Straßenraums für ihre Bewegung zu reservieren. Der Aufenthalt von Personen muss dort verboten werden. Vielleicht kann ihnen an einzelnen Stellen per Lichtzeichen das gelegentliche Betreten der Straßen Ihro Majestät kurzfristig gestattet werden. Ein weiteres Drittel der Wege und Plätze werden Ihro Untertanen nicht mehr betreten können, da ja die Motorwagen zu akkomodieren sind, während sie nicht fahren. Ich erwarte zuversichtlich, dass dem Gesinde auch nach diesen Anpassungen von Gesetz und Gebrauch hinreichend Raum verbleiben wird und es den kaiserlichen Privilegien für meine Motorwagen freudig und ohne Murren folgen wird.

    Ich erwähne beläufig, dass Jahr um Jahr einige tausend Flaneure und auch Insassen der Motorwagen bei allfälligen Kollisionen sterben werden. Unter den Überlebenden wird es fraglos zahlreiche Beschädigte geben, die, so steht zu befürchten, dem Ruhm des Vaterlandes nicht mehr im gewohnten Maße werden dienen können. Ich habe weiter überschlagen, dass einige weitere Zehntausende an feinem Staub und anderen Miasmen der Motorwagen zugrunde gehen werden, und noch einmal so viele an Lärm und dergleichen. Nun: Auch Pferde töten Menschen. Und fraglos sind dies sehr überschaubare Opfer im Vergleich zum reichlichen Nutzen und Gewinn, da unsere wunderbaren Städte von den dampfenden Hinterlassenschaften der Pferde befreit werden.

    Ohne die Errungenschaft unnötig profanisieren zu wollen, darf ich in aller Kürze anmerken, dass meine Erfindung auch den Geldfluss in Ihro Gnaden Imperium beflügeln wird, da das fleißige Volk ein rundes Siebtel mehr wird arbeiten müssen für die Freude und Gnade, einen Motorwagen besitzen und bewegen zu dürfen. Ich kann indes bereits jetzt versprechen, dass sie das gerne tun werden, dass sie im Gegenteil heftig ringen werden dafür, mehr arbeiten zu müssen. Genauso werden sie ganz aus eigenem Willen ihre Kinder nicht mehr auf der Straße spielen lassen. Dies wird nicht nur das Unwesen der sprichwörtlichen Straßenjungen zu einem Ende bringen, es werden so auch weniger junge, vielleicht hoffnungsvolle Talente unter den Rädern meiner Motorwagen zermalmt.

    Um diese kleinen Preise können Ihro Untertanen dann täglich eine oder zwei Stunden in ihren Blechkäfigen verbringen und mit großer Anspannung durch Glasscheiben auf andere Untertanen blicken, die zumeist ebenfalls in Blechkäfigen dahinrasen. Es wird viel Ärger und Hader sein zwischen den Männern in ihren Käfigen, was gewiss überaus förderlich sein wird zur Ertüchtigung des Volkes im Wettstreit der Nationen und zur Vertiefung der Liebe des Volkes zu Ihro Majestät. Manchmal werden sie auch gar nicht dahinrasen, sondern in ihren Käfigen hintereinander stehen, ohne zu wissen warum. Auch das werden sie willig hinnehmen, denn sie werden wissen: Der große Kaiser hat uns erlöst vom Pferdemist.

    Es könnte sein, dass dieses Dokument nicht ganz authentisch ist, denn Forschungs- und Industrieförderung im heutigen Sinn hat es damals noch nicht gegeben. Außerdem hat Benz wahrscheinlich nicht genau kommen sehen, was seine Erfindung in der Welt anrichten würde. Denn auch wenn er wohl kein sehr netter Mensch war, er hätte es andernfalls hoffentlich gelassen.

    In Wahrheit wird es wie so oft gewesen sein: Die allerabsurdesten Dinge haben sich in langen Entscheidungsketten entwickelt, in denen jede einzelne Entscheidung zumindest nachvollziehbar ist. Es hat ja niemand ahnen können, dass am Schluss etwas rauskommt wie unsere Autogesellschaft.

  • Explaining Tags in Pelican

    Right after I had celebrated the first anniversary of this blog with the post on my Pelican setup, I decided to write another plugin I've been planning to write for a while: taginfo.py.

    Nachtrag (2022-10-07)

    Don't take it from here; rather, see https://codeberg.org/AnselmF/pelican-ext

    This is for:

    Blog screenshot

    that is, including explanations in on pages for tags, telling people what the tag is supposed to mean.

    To use taginfo, put the file into your plugins folder, add taginfo to the PLUGINS list in your pelicanconf.py, and then create a folder taginfo next to your content folder. In there, for each tag you want to comment, create a file <tagname>.rstx (or just rst). Such a file has to contain reStructuredText, where pelican's extensions (e.g., {filename} links) do not work (yet). I suppose it wouldn't be hard to support them; if you're interested in this plugin, feel free to poke me in case you'd like to see the extra pelican markup.

    To make the descriptions visible, you need to change your tag.html template (typically in theme/templates/tag.html) in order to arrange for tag.make_description() to be callsed when rendering the document. Me, I'm doing it like this:

    {% block content_title %}
    <h1>Tag <em>{{ tag }}</em></h1>
    <div id="taginfo">
            {{ tag.make_description() }}
    </div>
    {% endblock %}
    

    (And I still find jinja templates exceptionally ugly).

  • How I'm Using Pelican

    I started this blog on January 14th last year. To celebrate the anniversary, I thought I could show how I'm using pelican (the blog engine I'm using); perhaps it'll help other people using it or some other static blog generator.

    Posting and Writing

    First, I structure my content subdirectory (for now) such that each article has the ISO-formatted date as its name, which makes that source name rather predictable (for linking using pelican's {filename} replacement), short, and gives the natural sort order sensible semantics.

    Also, I want to start each post from a template, and so among the first things I did was write a little script to automate name generation and template instantiation. Over the past year, that script has evolved into post.py3.

    Nachtrag (2022-03-15)

    I've changed a few things in the meantime; in particular, I am now opening a web browser because I got tired of hunting for the URI when it was scrolled off the screen before I first had something to open, and to make that work smoothly, I'm building the new post right after creating its source.

    It sits next to pelican's Makefile and is in the blog's version control. With this, starting this post looked like this:

    $ ./post.py3 "How I'm Using Pelican"
    http://blog/how-i-m-using-pelican.html
    remake.sh output/how-i-m-using-pelican.html
    

    Nachtrag (2022-05-26)

    The output is now a bit different, and now I do open the browser window – see below.

    What the thing printed is the URL the article will be seen under (I've considered using the webbrowser module to automatically open it, but for me just pasting the URL into my “permanent” blog browser window works better). The second line gives a command to build the document for review. This remake.sh script has seen a bit of experimentation while I tried to make the specification of what to remake more flexible. I've stopped that, and now it's just:

    #!/bin/bash
    pelican --write-selected "$1"
    

    When you add:

    CACHE_CONTENT = True
    LOAD_CONTENT_CACHE = True
    CONTENT_CACHING_LAYER = 'generator'
    

    to your pelicanconf.py, rebuilding just the current article should be relatively quick (about 1 s on my box). Since I like to proofread on the formatted document, that's rather important to me.

    Nachtrag (2022-05-26)

    N…no. This part I'm now doing very differently. See Quick RST Previews.

    If you look at post.py3's code, you will see that it also fixes the article's slug, i.e., the path part of the URL. I left this to Pelican for a while, but it annoyed me that even minor changes to a blog title would change the article's URI (and hence also the remake statment). I was frankly tempted to not bother having elements of the title in the slug at all, as I consider this practice SEO, and I am a fanatical enemy of SEO. But then I figured producing shorter URIs isn't worth that much, in particular when I'd like them to be unique and easy to pronounce. In the end I kept the title-based slugs.

    The script also picks the local file name as per the above consideration with some disambiguation if there's multiple posts on one day (which has only happened once in the past year). Finally, the script arranges for adding the new post to the version control system. Frankly, from where I stand now, I'd say I had overestimated the utility of git for blogging. But then, a git init is cheap, and who knows when that history may become useful.

    I'm not using pelican's draft feature. I experimented with it for a while, but I found it's a complication that's not worth anything given I'm always finishing a post before starting the next. That means that what otherwise would be the transition from draft to published for me is the make install. The big advantage of starting with status:published is that under normal circumstances, an article never changes its URI.

    Local Server Config and Media

    Another pelican feature I'm not using is attaching static files. I have experimented with that initially, but when the first larger binary files came in, I realised they really shouldn't be under version control. Also, I never managed to work out a smooth and non-confusing way to have pelican copy these files predictably anyway.

    What I ended up doing is have an unversioned, web-published directory that contains all non-article (“media”) files. On my local box, that's in /var/www/blog-media, and to keep a bit of order in there, the files sit in per-year subdirectories (you'll spot that in the link to the script above). The blog directory with the sources and the built documents, on the other hand, is within my home. To assemble all this, I have an /etc/apache2/sites-enabled/007-blog.conf containing:

    <VirtualHost *:80>
      ServerName blog
      DocumentRoot /home/anselm/blog/output
    
      Alias /media /var/www/blog-media
    
      ProxyPass /bin/ http://localhost:6070/
    
      <Directory "/home/anselm/blog/output">
        AllowOverride None
        Options Indexes FollowSymLinks
        Require all granted
      </Directory>
    
      <Directory ~ "/\.git">
        Require all denied
      </Directory>
    </VirtualHost>
    

    which needs something like:

    127.0.0.1 localhost blog
    

    in your /etc/hosts so the system knows what the ServerName means. The ProxyPass statement in there is for CGIs, which of course apache could do itself; more on this in some future post. And I'm blocking the access to git histories for now (which do exist in my media directory) because I consider them fairly personal data.

    Deployment

    Nachtrag (2022-07-10)

    I'm now doing this quite a bit differently because I have decided the procedure described here is a waste of bandwidth (which matters when all you have is GPRS). See Maintaining Static Blogs Using git push.

    When I'm happy with a post, I remake the whole site and push it to the publishing box (called sosa here). I have added an install target to pelican's Makefile for that:

    install: publish
      rsync --exclude .xapian_db -av output/ sosa:/var/blog/generated/
      rsync -av /var/www/blog-media/ sosa:/var/blog/media/
      ssh sosa "BLOG_DIR=/var/blog/generated/ /var/blog/media/cgi/blogsearch"
    

    As you can see, on the target machine there's a directory /var/blog belonging to me, and I'm putting the text content into the generated and the media files into the media subdirectory. The exclude option to the rsync and the call to blogsearch is related to my local search: I don't want the local index on the published site so I don't have to worry about keeping it current locally, and the call to blogsearch updates the index after the upload.

    The publication site uses nginx rather than apache. Its configuration (/etc/nginx/sites-enabled/blog.conf) looks like this (TLS config removed):

    server {
      include snippets/acme.conf;
      listen 80;
      server_name blog.tfiu.de;
    
      location / {
        root /var/blog/generated/;
      }
    
      location /media/ {
        alias /var/blog/media/;
      }
    
      location /bin/ {
        proxy_pass http://localhost:6070;
        proxy_set_header Host $host;
      }
    
      location ~ \.git/ {
        deny all;
      }
    }
    

    – again, the clause for /bin is related to local search and other scripting.

    Extensions

    Nachtrag (2022-10-07)

    Don't take the code from here; rather, see https://codeberg.org/AnselmF/pelican-ext

    In addition to my local search engine discussed elsewhere, I have also written two pelican plugins. I have not yet tried to get them into pelican's plugin collection because… well, because of the usual mixture of doubts. Words of encouragement will certainly help to overcome them.

    For one, again related to searching, it's articlemtime.py. This is just a few lines making sure the time stamps on the formatted articles match those of their input files. That is very desirable to limit re-indexing to just the changed articles. It might also have advantages for, for instance, external search engines or havesters working with the HTTP if-modified-since header; but then these won't see changes in the non-article material on the respective pages (e.g., the tag cloud). Whether or not that is an advantage I can't tell.

    Links to blog posts

    The citedby plugin in action: These are the articles that cite this post right now.

    The other custom extension I wrote when working on something like the third post in total, planning to revisit it later since it has obvious shortcomings. However, it has been good enough so far, and rather than doing it properly and then writing a post of it own, I'm now mentioning it here. It's citedby.py, and it adds links to later articles citing an article. I think this was known as a pingback in the Great Days of Blogs, though this is just within the site; whatever the name, I consider this kind of thing eminently useful when reading an old post, as figuring out how whatever was discussed unfolded later is half of your average story.

    The way I'm currently doing it is admittedly not ideal. Essentially, I'm keeping a litte sqlite database with the cited-citing pairs. This is populated when writing the articles (and pulls the information from the rendered HTML, which perhaps is a bit insane, too). This means, however, that a newly-made link will only …

  • Variable Inflation

    Relativ parallel verlaufende Kurven

    Dieser Artikel hat nach langen Windungen leider keine Pointe. Und zwar im Wesentlichen wegen dieser Grafik, generiert vom Rechner für die persönliche Inflationsrate des statistischen Bundesamts. Siehe unten.

    Ich fletsche hier ja regelmäßig die Zähne in Richtung von allerlei Metriken, also Zahlen, die (meist) Unmessbares messen sollen und damit in aller Regel Politiken rechtfertigen, die schlecht sind für die, bei denen diese ankommen.

    Der ganz große Klassiker im Metrik-Geschäft ist das Bruttosozial- oder -inlandsprodukt (BSP bzw. BIP), dessen Wachstum im allgemeinen Bewusstsein als Synonym für wachsenden Wohlstand gilt, zumal in seiner Form als BIP pro Kopf. In Wirklichkeit versucht die Metrik zu messen, wie viele „Waren und Dienstleistungen“ (womit es schon losgeht: was ist das?) „hergestellt“ (realistisch: verkauft) werden, und zwar von StaatsbürgerInnen (BSP) oder innerhalb der Staatsgrenzen (BIP).

    Das Bruttosozialprodukt und der Krieg

    Dass das BIP wesentlich mit Wohlstand korreliert sei, ist offensichtlich falsch – selbst die Produktion von Wohlstandsvernichtern wie Autos und anderen Waffen erhöht das BIP –, und das wurde auch schon breit kritisiert. Der entsprechende Abschnitt in der Wikipedia ist nach Maßstäben diese Genres eher zahm.

    Diese Klarstellung im Hinblick auf Wohlstand ist wichtig, aber etwas unfair, denn, a propos Waffen: Historisch sollte das BSP das mit dem Wohlstand gar nicht machen. Besonders aufschlussreich in der Hinsicht fand ich einen Artikel in der taz vom 2.5.2015, der daran erinnerte, dass sich das BSP in seiner heutigen Form vom Gottseibeiuns der Marktradikalen, John Maynard Keynes, in einem Artikel mit dem sprechenden Namen How to Pay for the War ersonnen wurde und sich letztlich als Metrik der wirtschaftlichen Kriegsfähigkeit durchgesetzt hat. Die taz-Autorin Ulrike Herrmann implizierte 2015, dass das BSP dafür offenbar taugte, denn es hat ja die Keynes-Seite gewonnen – mehr kann mensch von einer Metrik nicht erwarten.

    Ich selbst glaube zwar nicht, dass BSP-Rechnungen auf Seiten der Nazis irgendwas am Kriegsverlauf geändert hätten, aber für meinen nächsten Gedanken will ich trotzdem mal annehmen, das BSP sei im zweiten Weltkrieg eine kriegsnützliche Metrik gewesen. Von dort aus möchte ich behaupten, dass es unter Bedingungen weitgehender reproduktiver Selbstbestimmung allenfalls noch sehr kurzfristig für die Bewertung der Kriegsfähigkeit taugt. Solange sich nämlich in Kriegen immer noch in erster Linie junge Leute (statt, sagen wir, Roboter) erschießen, braucht es für deren Führung hinreichend Nachwuchs. Den immer noch dominierenden Modus der Reproduktion, unbezahlte Arbeit von Müttern an ihren Kindern, erfasst das BIP jedoch nicht.

    Als das Konzept entstand, war die Vorstellung klarerweise, dass Frauen ganz von selbst Kinder kriegen und aufziehen. Das stimmt nicht mehr, und daher wäre mein Rat an die BIP-MacherInnen: Wenn euer BIP weiter wie gehabt funktionieren soll, müsst ihr auch die Herstellung von Kindern verrechnen.

    Tatsächlich wäre es überhaupt kein Stilbruch, sowas irgendwie ins BIP reinzufummeln. Denn natürlich weiß niemand, wie viel wirklich verkauft oder gar hergestellt (denkt an all die handgestrickten Babysachen, von denen keine Statistikbehörde je erfahren wird) wird, und die Grenze zwischen Ware und Nicht-Ware ist ziemlich beliebig. Gewiss, das Steueraufkommen ist ein brauchbarer Indikator, aber mehr eben nicht. Viele Variablen liegen zwischen dem und irgendwelchen Gesamtproduktions- oder Einkommensziffern. Auch auf der legalen Seite der Demarkationslinie zur Schwarzarbeit passiert viel Austausch, ohne dass davon irgendwer etwas mitbekommt.

    Mit solchen Gedanken im Kopf habe ich vor einiger Zeit GDP: A Brief but Affectionate History von Diane Coyle (Princeton 2014; gibts bei der Imperial Library of Trantor) mit viel Interesse gelesen. Darin geht es zum Beispiel um die Beliebigkeiten in den BIP-Berechnungen (englisch Gross Domestic Product oder GDP) – der Klappentext erwähnt Ausschläge von 60% über Nacht für Ghana –, ebenso wie über die historischen Diskussionen, was alles zum „Volkseinkommen“ gehören soll: Kriegsausgaben? Staatsausgaben überhaupt? Gesundheitsausgaben? Oder in dem Bereich vielleicht nur Pillen, nicht aber die Arbeit von ÄrztInnen? „Dienstleistungen“ (was immer das ist) an sich, und wenn ja, wie bewertet?

    Dennoch: Kopfzahlen

    Die tatsächlichen Regeln für die Berechnung von BIP-artigen Metriken sind also im Gegensatz zur munteren Betrachtung in der Wikipedia in weiten Bereichen biegsam. Zwar mag eine genaue und ehrliche Zweckbestimmung helfen, die eben aufgeworfenen Fragen, sagen wir, intersubjektiv zu beantworten, aber letztlich ist das Konvention, und selbst für das BIP in der Keynes-Definition ist da viel zu vereinbaren. Die international offenbar populärste Konvention stellt Coyle vor, namentlich das System of National Accounts, das sich in den vergangenen siebzig Jahren von fünfzig auf 722 Seiten aufgebläht hat.

    Das allerdings schafft schon wieder Beliebigkeit. Aus meiner Erfahrung mit 50-seitigen Standards, für die nach einer Weile Validator-Programme verfügbar wurden (und zeigten, dass notdürftig funktionsfähig aussehende Dienste voll mit Fehlern waren), kann ich zuversichtlich sagen: Solange es keinen rechnergestützten Validator gibt (und das ist hier bis zur Erfindung starker KI eigentlich undenkbar), sind 722 Seiten voll Regeln so gut wie überhaupt keine Regeln: Das System ist fast sicher in sich höchst widersprüchlich, und auch mit dem besten Willen (der nur bei wenigen Statistikbehörden und Ministerien vorausgesetzt werden darf) werden Menschen ständig Fehler machen.

    Wie auch immer: Als Kopfzahl ist es ja vielleicht trotzdem ganz nützlich zu wissen, dass das BIP der BRD laut IWF 2019 knapp 4 Billionen Dollar betrug, das der USA etwas über 20 Billionen Dollar und das eines ordentlichen und großen Trikontstaats wie z.B. Nigeria 500 Milliarden Dollar. Sicher sind diese verschiedenen Dollars nicht annähernd vergleichbar, aber die Zahlen taugen doch für schnelle Überschlagsrechnungen, wenn verkündet wird, der Börsenwert von Apple sei jetzt, was, zwei Billionen Dollar (etwa: die AktionärInnen von Apple könnten für ein halbes Jahr die BRD leerkaufen und Nigeria für vier Jahre), oder wenn die Frage ist, wie viel der Bund mit einem Bundeshaushalt von (außerhalb von Corona) 350 Milliarden Euro an „den Märkten“ reißen kann – natürlich immer mit der Maßgabe, dass über Messfehler, Umrechnungen, Inflationsanpassung und so fort da schnell ein Faktor zwei dabei ist.

    Persönliche Inflation

    Der größte Unsicherheitsfaktor innerhalb der Serie einer Behörde wird wahrscheinlich die Inflationsanpassung sein, angefangen dabei, ob sie vorgenommen wurde oder nicht. Erstens ist sie ein exponentieller Effekt. Nehmen wir mal an, dass die Inflationsrate im Schnitt bei den 2% pro Jahr liegt, die diverse Zentralbanken gerne hätten, und dass sie tatsächlich ein Maß ist, wie viel mensch so kaufen kann. Nach der Königsformel „Verdoppelungszeit ist 75 Zeiteinheiten[1] durch prozentuale Rate“, liegen inflationsbereinigte und rohe BIPs schon nach 37 Jahren um einen Faktor zwei auseinander.

    Nun liefert aber auch eine Bereinigung um Inflation und Währungseffekte kaum Zahlen, die mit Erfahrungen von Konsummöglichkeiten korrelieren. Seht etwa die nach PPP bereinigten historischen Vergleichswerte zum BIP an: Es ist abwegig, dass sich irgendeine Sorte von „gefühltem“ Konsum für der BRD zwischen 1990 und 2019 von 1437 auf 4672 Milliarden Äquivalent-Euro verdreifacht haben soll. Wer damals schon gelebt hat, wird sich erinnern, dass sich – abgesehen davon, dass es noch keine SUVs und nur wenig Mobiltelefone gab – das allgemeine Konsumniveau hier im Land nicht wesentlich geändert hat.

    Zweitens also ist die Inflation selbst eine wacklige Größe, womit ich endlich zum Link komme, der mich zur vorliegenden Diatribe inspiriert hat, weil ich ihn verkopfzahlen wollte: Labournet berichtet, dass rund die Hälfte der 8.4 Millionen MieterInnen in deutschen Großstädten mehr als 30% ihres Einkommens für Miete augeben müssen. Das fand ich schon für sich relevant, ich wollte aber vor allem den Punkt machen, dass solche Leute bei explodierenden Mietpreisen eine weit höhere Inflation haben werden als Menschen, die keine Miete zahlen müssen.

    Da VermieterInnen in der Regel eher reich und MieterInnen in der Regel eher arm sind, bedeuten Mieten, die stärker steigen als die Inflation, eine Art kalte Umverteilung von unten nach oben bei gegebenem BIP (ob pro Kopf oder anders). Die Inflationsschätzung basiert ja auf einem Warenkorb, den das statistische Bundesamt (Destatis) zusammenstellt, und wenn Leute viel mehr für Miete ausgeben als im Warenkorb repräsentiert und die Mieten viel stärker steigen als die Preise im Rest des Warenkorbs, ist ihre „persönliche Inflation“ viel höher als die Zahl aus den Nachrichten. Die BIP-pro-Kopf-Metrik nicht nur wegen ungleicher Einkommensverteilung zweifelhaft, sondern auch, weil sie obendrauf noch eine innere Kaufkraftkorrektur bräuchte.

    Das hatte ich nun auf der Basis der rasant steigenden Mieten illustrieren wollen und habe auf den Seiten des Statistischen Bundesamts herumgestöbert, um mein Gefühl zu erhärten, dass Mieten weit über der Inflation steigen. Das Gefühl hat seine Grundlage in meinem persönlichen WG-Zimmer-Index für Heidelberg. Ausweislich durchschnittlicher Aushänge würde ich für 1990 den mittleren Kurs etwa bei 150 Euro sehen, inzwischen eher bei 500 Euro (unter Annahme der DM-Euro-Konversion von 2001). Die Mieten hätten sich also in dreißig Jahren also gut verdreifacht, was einer Verdopplungszeit von 18 Jahren oder einer jährlichen Inflation von 75/18, also 4% entspricht; die berichtete Inflation lag in der Zeit von kurzen Phasen abgesehen jedoch deutlich unter 2 Prozent.

    Nun, es stellt sich raus: Das Konzept der je nach sozialer Schicht verschiedenen Inflationsrate illustriert das Amt selbst recht schön und bietet sogar einen Rechner für die persönliche Inflationsrate an – Kompliment an dieser Stelle dafür, dass da ein SVG-Download angeboten wird (wie überhaupt die Webseite den Eindruck hinterlässt, dass hier Leuten mit Verstand und Spaß bei der Sache relativ freie Hand gelassen …

  • Joe Hills Asche und die bessere Zukunft

    „I dreamed I saw Joe Hill last night, alive as you and me“ – so fängt ein Klassiker des Arbeiterlieds an, der mich spätestens bei „And smiling with his eyes,/ says Joe, what they could never kill/ went on to organize“ immer sehr ergriffen hat, auch in seinen Aktualisierungen wie etwa I dreamed I saw Judi Bari last night von David Rovics.

    Was ich nicht wusste: In das Bewusstsein der (halbwegs) modernen Linken hat das Lied Joan Baez gebracht, als sie es beim Woodstock Festival aufführte. Trivia? Klar. Noch viel mehr davon habe ich gestern gehört, als der Deutschlandfunk-Freistil vom 12.12.2021 („Die Asche von Joe Hill”) in meinem asynchronen Radio drankam.

    Diese Sendung hätte ich offen gestanden als außerhalb der Grenzen des öffentlich-rechtlichen Rundfunks liegend eingeschätzt. Einerseits, weil es um grenzwertig kannibalistische Praktiken geht – allerdings stark grotesk-gutgelaunte (lest zumindest mal die Zusammenfassung). Das ist nicht anders zu erwarten, da Abbie Hoffman im Spiel ist, der schon mal als Angeklagter in Richterroben auflief, sich mit dem Stinkefinger vereidigen ließ und wesentlichen Anteil hatte, dass um ein Haar ein Schwein US-Präsidentschaftskandidat (statt des heute zu Recht vergessenen Hubert Humphrey) geworden wäre.

    Andererseits finde ich die Sendung doch recht DLF-mutig, weil sie am Ende schon nachgerade revolutionär wird. Schon die Beschreibung der blutigen Repression gegen die Wobblies in den USA bereitet auf klare Worte vor:

    Mit dem Eintritt der USA in den ersten Weltkrieg erlebten die Wobblies eine brutale Verfolgung. Sie wurden als unpatriotisch gebrandmarkt [ich hoffe doch: zu Recht!], viele wurden verhaftet, einige gelyncht, manche verließen das Land.

    Dies ist natürlich auch eine Erinnerung daran, dass es schlicht keine größere Katastrophe gibt als Kriege und es wirklich Zeit wird, auch im Interesse des liberalen Rechtsstaats endlich Schluss zu machen mit all dem Militärquatsch.

    Vor allem aber schließt der Film mit der Sorte revolutionärem Optimismus, der mir in der derzeitigen radikalen Linken eigentlich fast überall fehlt. Ich mache ja die generelle Miesepetrigkeit, Coolness und Belehrsucht in unseren Kreisen schon etwas mitverantwortlich dafür, dass „konservative“ bis faschistische Gedanken in erstaunlich vielen Studihirnen (und, schlimmer noch, unter weniger Privilegierten) Raum greifen.

    Wie viel hoffnungsvoller klingt, womit Otis Gibbs die HörerInnen aus der Sendung entlässt (Übersetzung des DLF; das Original, wo ich es hören kann, scheint mir noch eine Spur ergreifender):

    Ich habe ein sehr gutes Gefühl, was die Zukunft angeht, und ich denke, es ist nur eine Frage der Zeit, bis sehr gute Sachen in Amerika passieren. Jetzt lastet noch eine Dunkelheit auf uns allen, und ich spüre sie wie jedeR andere auch. Aber ich treffe auch Menschen, die einem Mut machen, und sie sind alle jung. Sie sind Idealisten. Wir müssen nur diese schreckliche Zeit, in der wir leben, überleben, bis die jungen Leute das Ruder übernehmen und die Welt zu einem viel besseren Ort machen.

    So ganz von selbst wird das wohl nicht gehen, aber es ist jedenfalls der viel bessere Ansatz als… na ja, wie ich gerade damit zu hadern, dass unser schnarchiger DGB beängstigend nahe dran ist an der One Big Union, die Joe Hill und die Wobblies mal im Sinn hatten. Jaja, ich hadere ja schon nicht mehr.

  • Replacing root-tail when there is a compositor

    Since there hasn't been real snow around here this year until right this morning, I've been running xsnow off and on recently[1]. And that made me feel the lack of a compositor on my everyday desktop. Certainly, drop shadows and fading windows aren't all that necessary, but I've been using a compositor on the big screen at work for about a decade now, and there are times when the extra visual cues are nice. More importantly, the indispensable xcowsay only has peudo-transparency when there's no compositor ever since it moved to gtk-3 (i.e., in Debian bullseye).

    Well: enough is enough. So, I'm now running picom in my normal desktop sessions (which are managed by sawfish).

    Another near-indispensable part of my desktop is that the syslog is shown in a part of the root window (a.k.a. desktop background), somewhat like this:

    Windows, and a green syslog in the background

    This was enabled by the nice program root-tail for ages, but alas, it does not play well with compositors. It claims its --windowed flag does provide a workaround, but at least for me that failed in rather crazy ways (e.g., ghosts of windows were left behind). I figured that might be hard to fix and thought about an alternative. Given compositors are great for making things transparent: well, perhaps I can replace root-tail with a heavily customised terminal?

    The answer: essentially, yes.

    My terminal program is unicode-rxvt. In the presence of a compositor, you can configure it for a transparent background by telling it to not use its pseudo-transparency (+tr), telling it to use an X visual with an alpha channel (-depth 32) and then using a background colour with the desired opacity prefixed in square brackets. For a completely transparent terminal, that is:

    urxvt -depth 32 +tr -bg "[0]#000000"
    

    This still has the scrollbar sticking out, which for my tail -f-like application I don't want; a +sb turns it off. Also, I'm having black characters in my terminals by default, which really doesn't work with a transparent background. Making them green looks techy, and it even becomes readable when I'm making the background 33% opaque black:

    urxvt -depth 32 +tr +sb -bg "[33]#000000" -fg green
    

    To replace root-tail, I have to execute my tail -f, put the window into the corner and choose a somewhat funky font. To simply let me reference the whole package from startup files, I'm putting all that into a shell script, and to avoid having the shell linger around, all that this script does is call an exec (yes, for interactive use this probably would be an alias):

    #!/bin/sh
    exec /usr/bin/urxvt -title "syslog-on-root" +sb \
            +tr -depth 32 -bg "[33]#000000" -g 83x25-0-0 \
            -fg green -fn "xft:monofur-11:weight=black" \
            -e tail -f /var/log/syslog
    

    This already looks pretty much as it should, except that it's a normal window with frames and all, and worse, when alt-tabbing through the windows, it will come up, and it will also pollute my window list.

    All that needs to be fixed by the window manager, which is why I gave the window a (hopefully unique) title and then configured sawfish (sawfish-config, “Window Rules”) to make windows with that name depth 16, fixed-position, fixed-size, sticky, never-focus, cycle-skip, window-list-skip, task-list-skip, ignore-stacking-requests. I think one could effect about the same with a judicious use of wmctrl – if you rig that up, be sure to let me know, as I give you it would be nice to make that part a bit more independent of the window manager.

    There's one thing where this falls short of root-tail: Clicks into this are not clicks into the root window. That hurts me because I have root menus, and it might hurt other people because they have desktop icons. On the other hand, I can now mouse-select from the syslog, which is kind of nice, too. Let's see.

    [1]Well, really: Mainly because I'm silly.
  • Ach, Bahn, Teil 2: Maustracking ist Quatsch

    Screenshot: Blockiertes Javascript auf bahn.de

    F12 in den üblichen Browsern führt auf verschiedene Sorten von „Web-Inspektoren“. In deren „Network“-Tabs könnt ihr die Flügel'sche Metrik bestimmen: Wie viele Dateien von wie vielen Hosts zieht so eine Seite? Die Bahn-Seite schneidet dabei nicht gut ab, nicht zuletzt aufgrund des nutzerInnenfeindlichen Javascripts, das der Screenshot zeigt.

    Wieder mal habe ich auf bahn.de eine Fahrkarte gekauft, und wieder hakte es an vielen Ecken. Immer noch hat der Server darauf bestanden, ich sei eingeloggt (und hat mir nicht die Möglichkeit gegeben, mich einzuloggen), hat mir aber nicht meine Buchungs-Voreinstellungen („eine Person mit Bahncard 50“) angeboten, hat wieder ganze Seiten mit je nur einer einzelnen Frage ausgeliefert, hat kaputte Zahlungsoptionen angeboten, quittierte einen Browser-Reload mit hartem Ausloggen („fang einfach nochmal an“) und verlangte von mir ein Login beim Kartenkauf, obwohl es mich ja die ganze Zeit schon als eingeloggt geführt hat. Immerhin – niemand soll sagen, ich würde nur motzen – war das Captcha vom letzten Herbst endlich weg (eine Reaktion auf meine diesbezüglichen Mails aus dem Herbst-Blogpost habe ich natürlich nie bekommen).

    Jedenfalls reichen eigentlich ein, zwei Transaktionen auf bahn.de locker, um einige (modulo Ökonomie) leicht zu behebende Usability-Schwächen zu finden. Aber gut: Gerade bei Webseiten bin ich ja schon froh, wenn sie wenigestens ihre Quirks behalten und nicht alle paar Wochen wieder was anders (zumeist: anders kaputt) ist. Ich erwähne das alles überhaupt nur, weil bahn.de in meinem Browser mal wieder so hakelig war, dass ich nachgesehen habe, wessen Javascript mir die Bahn neben ihrem eigenen (das dürfen sie ausführen) noch andrehen will. Unter den geblockten Quellen befand sich ein Laden namens m-pathy.com. Dessen Homepage (kleines Lob am Rande: das geht, ohne Code von m-pathy.com auf der lokalen Maschine laufen zu lassen) radebrecht mit Deppen-Leerzeichen:

    m-pathy UX Insight G4 macht sichtbar, was Ihre Kunden erleben.

    Unsere Analyse Lösung ermöglicht die Auswertung tausender feingranularer Interaktionsdaten aus Mausspuren, Touch-Gesten, Klicks und Formularinteraktionen.

    Das Ergebnis sind belegbare und priorisierbare Handlungsempfehlungen für die Optimierung Ihrer klassischen oder mobilen Webseite.

    Also: Die Bahn sammelt und verarbeitet Daten über meine Mausbewegungen (na ja, natürlich nicht über meine, weil das Javascript dieser Leute bei mir nicht läuft, aber von fast allen anderen ihrer KundInnen), um so zu tun, als würde sie ihre Webseite „optimieren“.

    Da die Usability der Webseite zumindest in meinem „Erleben“ spürbar abgenommen hat – vor allem wohl wegen der Förderung von „Partnerangeboten“ und anderen Marktingkrams, aber seis drum –, würde ich schließen, dass „m-pathy UX Insight G4“ schlicht nicht funktioniert. Ok: Kann sein, dass die hautnahe Bespitzelung der NutzerInnen durch die Bahn funktioniert und sich eben nur niemand um „belegbare und priorisierbare Handlungsempfehlungen“ kümmert. Dann könnte die Bespitzelung aber auch unterbleiben, oder? Oder sind die Zwecke der Bahn ganz andere als die bei m-pathy angegebenen? Allein, mir würden da nicht viele einfallen. Was bitte soll aus meinen Mausbewegungen über der Bahn-Webseite für die Bahn schon folgen?

    Einfach mal offen (also: ohne Fragebogen) mit 10 oder 50 NutzerInnen der Webseite reden und ihnen zuhören wäre ganz klar gigantisch viel datensparsamer und, so bin ich sicher, auch erheblich wirksamer, wenn die Bahn die Seite wirklich verbessern wollte.

    Liebe Bahn, darf ich euch noch einen Neujahrsvorsatz vorschlagen? Es wäre: Buchen ohne Javascript, vielleicht sogar mit einem lokalen, Debian-paketierbaren Programm, das auf einer wohldokumentierten API aufsetzt.

« Seite 12 / 18 »

Letzte Ergänzungen