• Über die Gute Gewalt

    In der taz vom vergangenen Wochenende fand sich ein Interview mit Franziska Giffey, in dem sie sagt:

    Manche glauben, dass sie gewisse gewalttätige Aktionen nach dem Motto rechtfertigen können, der Zweck heilige die Mittel: „Unsere Gewalt ist in Ordnung, denn es ist doch gute Gewalt.“ Aber solche Aktionen sind durch nichts zu rechtfertigen.

    Das ist eine lobenswerte Position. Mal sehen, ob sie mit dieser Verurteilung von Gewalt unabhängig vom verfolgten Zweck in ihrer Partei auch dann durchkommt, wenn es nicht um Eier, sondern um Granaten geht.

  • Big Brother Award: Wieder nicht cleverreach

    Ich will nicht ganz verhehlen, dass mich die diesjährigen Big Brother Awards ein klein wenig enttäuscht haben. Gewiss waren das alles verdiente Empfänger, aber mein Favorit war wieder mal nicht dabei. Dabei gebe ich den Leuten vom FoeBuD (ich verweigere mich der Umbenennung in digitalcourage aus reiner Nostalgie), dass dessen Verfehlungen überschaubarer sind als die Bewegungsprofile von Lieferando und die garstigen Fintech-Teufeleien von Klarna.

    Dennoch sollte, so finde ich, cleverreach gelegentlich bedacht werden, idealerweise in einer Kategorie „Ausschnüffeln per DSGVO-FUD“. Diese wäre Einrichtungen vorbehalten, die anderen Einrichtungen Überwachungstechnik unterschieben, indem sie die von weiten Teilen der freien Presse geschürten Ängste vor der DSGVO ausnutzen.

    Dieses Thema wird schon durch das augenblickliche Cookie-Banner dieser Leute gesetzt, das modal (also: nichts geht, solange mensch nicht klickt) zunächst von „Privatsphäre respektieren“ redet und dann über allzu bekannte Dark Patterns versucht, den Leuten hart am Rande der Legalität Daten abzupressen:

    Gestauchter Screenshot des cleverreach-cookiebanners: Der Zustimmen-Button ist sehr einladend.

    (ich habe das Legalesisch rausgeschnitten, da es nichts zur Sache tut). Zum Mitschreiben: Ein Laden, der Datenschutz ernstnimmt, braucht keine Cookie-Banner und schon gar keine Dark Patterns. Immerhin, das will ich den Leuten lassen, funktionieren weite Bereiche der Webseite inzwischen (das war vor zwei Jahren noch anders) ohne Javascript. Tatsächlich werden ohne Javascript nicht mal Cookie-Banner ausgespielt (Disclaimer: ich habe nicht nachgesehen, ob dann auch wirklich keine unnötigen Cookies[1] verschickt werden).

    Etwas ungehaltener bin ich schon über die Sirenentöne zur DSGVO, mit denen cleverreach Unternehmen und, noch schlimmer, andere Einrichtungen verunsichert: „eine Mailingliste ist datenschutzmäßig total kompliziert, und wenn du eine betreibst, bist du schon halb im Knast“. Das ist natürlich Unfug, solange beim Abonnieren klar ist, was die Leute kriegen und der dazugehörige Dialog transparent gestaltet ist. Aber welcheR „EntscheiderIn“ – Technik- und Sachkenntnisse sind in solchen Positionen ja eher optional – könnte Sirenentönen schon widerstehen?

    Nun könnte ich mit so ein wenig DSGVO-FUD zur Not noch leben, selbst wenn er zu einer – nur in seltenen Fällen dem Datenschutz wirklich helfenden – Zentralisierung von EDV führt, hier nämlich von jeweils ein paar lokalen Mailinglisten auf jeder Menge voneinander isolierter Server zu einer Firma mit „310.000 Kunden“ mit entsprechend vielen Listen.

    Diese Kunden sind zum Beispiel die Bundesorganisation der GEW, die Ebert-Gedenkstätte in Heidelberg und das Landesmuseum für Arbeit und Technik in Mannheim (dessen aktuellen Namen „Technoseum“ verweigere ich mit gleicher Sturheit wie die „digitalcourage“). Stellt euch vor, ihr wisst, dass jemand von allen drei Läden Info-Mails abonniert hat, notabene freiwillig, was schon eine gewisse Identifikation mit den jeweiligen Zwecken vermuten lässt: Entsteht da nicht ganz von selbst ein Profil?

    Faustregel: „clever“ heißt im Internet so viel wie „fies”

    Aber ist denn die Bildung so eines Profils nicht gegen die DSGVO? Oh, mit hinreichend viel Skrupellosigkeit ist das kein Problem. Und damit komme ich zum wirklich verwerflichen Teil von cleverreachs Geschäft, der meines Erachtens Restzweifel im Hinblick auf die Skrupellosigkeit zuverlässig zerstreut.

    Dazu braucht es einen Blick in die von cleverreach verschickten Mails. Dies sehen typischerweise so aus:

    I     1        [multipa/alternativ, 7bit, 79K]
    I     2 ├─>    [text/plain, quoted, utf-8, 0.7K]
    I     3 └─>    [text/html, quoted, utf-8, 78K]
    

    – sie gibt also vor, dass mensch alternativ ordentlichen Text oder ein HTML-Dokument haben kann. Das Problem ist noch nicht mal, dass es da überhaupt HTML gibt (auch wenn anständige Menschen kein HTML in Mails packen). Das Problem deutet sich an darin, dass der Plain Text nur ein Hundertstel der Länge des HTML-Teils hat. Das ist auch beim Einrechnen des HTML-typischen Fluffs nicht mehr glaubhaft, und in der Tat ist der Plain-Text-Teil nur ein Köder, um Menschen zu cleverreachs Schnüffelseiten zu bringen:

    Ihr E-Mail Programm unterstützt leider keine HTML E-Mails.
    
    Hier finden Sie diesen Newsletter online:
    https://213989.seu2.cleverreach.com/m/dddddddd/dddddd-hhhhhhhhhhhhhhhhhhhhhhhhhh
    hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
    

    (wo d Dezimalziffern und h Sedezimalziffern sind; mit Code im Umfang dieser URL könnten DemoprogrammiererInnen Bälle über den Bildschirm hüpfen lassen). Wer dieser ganz klar personalisierten URL folgt, bekommt immerhin keinen Cookie-Banner, und erstaunlicherweise wird auch kein Javascript ausgeliefert. In der Tat setzen die verschiedenen Ressourcen auch keine nennenswerten Cookies. Allein die URL:

    https://stats-eu2.crsend.com/stats/mc_dddddd_dddddddd_hhhhhhhhhhh-cccccc.gif
    

    (c steht jetzt für Kleinbuchstaben) setzt einen PHP-Session-Cookie – aber das ist vermutlich nur Gedankenlosigkeit. Das wirkliche Problem an dieser Ressource: das ist ein Tracking-Pixel, in schlechter Tradition als leeres GIF von 40 Bytes, das aber (was passiert da wohl im Hintergrund?) jetzt gerade 5 Sekunden für die Auslieferung gebraucht hat.

    Hiermit nimmt cleverreach auf, wer ihre Mails liest und wann sie das tun. Nennt mich paranoid, aber ob und wann ich Werbepost lese, das geht wirklich nur mich etwas an. Ich will auf keinen Fall, dass jemand merkt, wenn ich auf Clickbait hereinfalle.

    Wenig überraschenderweise findet sich dieser Trackversuch auch am Ende der ganz klassisch als Tabelle ausgezeichneten HTML-Alternative in der Mail:

      </center>
      <img src="https://stats-eu2.crsend.com/stats/<wie oben>"
        border="0" alt="" height="1" width="1"></body>
    </html>
    

    Bei HTML dieser Art (und überhaupt: GIFs) werde ich wieder jung: so haben wir Mitte der 1990er Webseiten geschrieben.

    Trotz dieses Schnüffelversuchts wäre es übrigens (wenn es jetzt schon HTML sein muss) datenschützerisch besser, wenn cleverreach den Plain Text-Teil nicht einbasteln würde, denn dann würde mein datensparsames eigenes HTML-Rendering aktiv werden und ich könne die Mail lesen, ohne (wie im normalen Browser fast unvermeidlich) getrackt zu werden. Wie das alles mit meinem Mail-Client zusammengeht, beschreibe ich demnächst mal; ich bestehe jedenfalls darauf, dass Plain Text-Alternativen, die nur Clickbait enthalten, unethischer sind als gar kein Plain Text.

    Entweder Internet-Normalbetrieb oder DSGVO.

    Zugegeben: das verschlagene Unterschieben von Trackingpixeln, um mitzukriegen, wann wer was liest und das dann den eigenen KundInnen als total wichtige Marketingmetrik verkaufen zu können: Das könnte in Zeiten von Google Analytics schon fast als lässliche Sünde durchgehen. Wer sich auf Schurkereien dieser Art einlässt, darf jedoch im Gegenzug nicht Gewerkschaften und SPD-nahe Stiftungen (samt ihrer im Datenschutz eher unbeholfenen HauspolitiologInnen für antisoziale Medien) mit Datenschutzraunen und -drohen von datensparsamen Verfahren in das eigene überwachungskapitalistische Geschäftsmodell ziehen.

    [1]Ich lasse die Frage, ob es wohl „notwendige Cookies“ überhaupt gibt, mal beiseite, denn Antworten auf diese bräuchten jede Menge Platz für haarige technische und soziale Betrachtungen sowie eine Großpackung Wenns und Abers.
  • Taming a Synaptics Clickpad

    About the lamest component of my current machine, a Lenovo XP 240, is the touchpad. Well, it's actually a clickpad, i.e., a thing without real buttons that you can press to make mouse button clicks.

    Yes, this machine was designed at a time when everyone thought they had to follow Apple's lead in abolishing the mouse buttons. What they had not considered: while OS X is built around the (IMHO somewhat foolish) notion that there's just one mouse button, in conventional X11 (roughly, left: mark, middle: paste, right: context menu), having just one button really is no fun.

    Fortunately, one can define the button areas rather liberally by X11-configurung the synaptics driver (and prototype things using the synclient program, once one gets used to it quirks[1]) Some duct tape one will even give add some tactile feedback to the pad so you can feel the buttons without having to look:

    Photo: a touchpad with separators with duct tape stuck on it.

    This still stinks, because every time one clicks, the mouse pointer moves. Fortunately, thinkpads also have a stick for pointer motions, and so I could switch off pointer motion through the touchpad entirely. I did that by setting AreaTopEdge to 0 (the default) and AreaBottomEdge to 10 (or something similarly small). Hardware clicks and the detection of the finger's location is unaffected by that setting.

    That has worked fine (within reason), for all the, what, eight years that I've used this box. But my stint into the fediverse made me revisit my clickpad hack. This is because the mastodon client Tootle does not have useful key bindings (like: space bar scrolls a page).

    I have considered adding them but lost all motivation when I noticed that the current vala source does not build on Debian stable, and apparently by a large margin (ah, hipsterware!). I then briefly considered writing mastodon reader myself in a bit of Tkinter but got sidetracked when I noticed I'd have to render at least some subset of HTML (which is an interesting problem in itself, and tk_html_widgets looks fairly promising; but I still let it go).

    And so I've finally implanted a scroll wheel into the stupid synaptics clickpad by enabling two-finger scroll. However, one cannot just switch on two-finger scroll without also switching on pointer motion, too (or can one?). After quite a bit of fiddling, I figured having a little patch in the middle of the touchpad sensitive keeps the number of inadvertent pointer movements to a minimum; once you have a finger there, you can use the entire pad for scrolling with the other finger.

    In sum, this gives the following piece of xorg.conf material, to be dumped to /etc/X11/xorg.conf.d/50-synaptics.conf:

    Section "InputClass"
      Identifier "touchpad"
      MatchProduct "SynPS/2 Synaptics TouchPad"
      Driver "synaptics"
      Option "ClickPad" "True"
    
      # Three buttons of equal size, stretching the whole way vertically
      Option "SoftButtonAreas" "67% 100% 0 0 30% 67% 0 0"
      # Turn off motion altogether: AreaBottomEdge 10 AreaTopEdge 0
      # Motion only detected betwee A.T.E. and A.B.E.
      # Here, use an aread in the middle of the pad:
      Option "AreaTopEdge" "2400"
      Option "AreaBottomEdge" "3200"
    
      # Now enable scrolling with one finger on the sensitive area, the
      # other finger moving to scroll.  Raising FingerHigh can help
      # reducing accidental moves.  VertScrollDelta lets you
      Option "VertTwoFingerScroll" "True"
      Option "VertScrollDelta" "60"
      Option "FingerHigh" "60"
    
      # Our Buttons are on the full area anyway, so:
      Option "HasSecondarySoftButtons" "False"
    
      # A bit of config spam that I'm too lazy to regression test out.
      # I'd expect they're rather safe to drop, though.
      Option "VertResolution" "1000"
      Option "HorizResolution" "650"
      Option "MinSpeed" "1"
      Option "MaxSpeed" "1"
      Option "AccelerationProfile" "1"
      Option "AdaptiveDecelration" "16"
      Option "ConstantDecelration" "16"
      Option "VelocityScale" "1"
    EndSection
    

    Have a look at the comments; on another box, I expect you'd need to fiddle with AreaTopEdge and AreaBottomEdge to find values convenient for you and your specific pad (the coordinates of the limits are most easily found in /var/log/Xorg.0.log). You may also want to play with FingerHigh, the pressure above which the device counts a click; on a clickpad, though, even for reasonable values you will click before you touch.

    [1]Synclient's quirks may not be its fault at all, but it is somewhat annoying that it lets you play with settings for circular pads (CircularScrolling, say) on devices that have no idea what these settings are, that you can set pressure sensitivity parameters (PressureMotionMinZ, PressureMotionMaxZ, PressureMotionMinFactor, PressureMotionMaxFactor) on pads that are, as I'm sure mine is after experimenting a lot, not pressure sensitive, or that it lets you set PalmDetect, PalmMinWidth, and PalmMinZ to absolutely no discernable effect. Ok, on the latter setting the synaptics man page does state that that needs firmware support. But really, if that's so, couldn't the non-supporting firmware be smart enough to not offer the setting in the first place if it does nothing?
  • Genf vs. die Dauerbeflimmerung

    Foto: Werbedisplay über großer Autostraße

    Auch die Stadt Heidelberg – die in der Altstadt noch nicht mal Dachfenster erlaubt, damit vom Schloss aus alles ordentich aussieht – lässt die Werbefritzen von Ströer Dauerbeflimmerung ausrollen, hier an der Kreuzung Berliner-Jahnstraße, wo es wirklich nur eine Frage der Zeit ist, bis das Gezappel auf dem Bildschirm mal wen so ablenkt, dass er/sie sich oder wen anders kaputtfährt.

    Während die Bahn papiergewordene Cookiebanner verschickt, gibt es an vielen anderen Stellen offenbar durchaus Hoffnung, zumindest ein bisschen weniger menschliche Kreativität und Zeit (von Energie und Rohstoffen ganz zu schweigen) in die Belästigung der Allgemeinheit (etwas beschönigend auch „Werbung“ genannt) fließen zu lassen. So berichtet der DLF-Hintergrund vom 13.4.2022 aus Genf, die dortige Stadtverwaltung wolle ab 2025 alle Plakatwände und vor allem ihre besonders aufdringlichen elektronischen Geschwister abbauen lassen. Das Radiofeature gibt Beispiele für gelungenes, wenn auch weniger ambitioniertes, Zurückdrängen von Außenwerbung: die Stadtverwaltung von São Paulo hat bereits 2007 15'000 Plakatwände demontieren lassen, in Grenoble wurden 2014 immerhin 300 davon durch Bäume ersetzt.

    „Werbefrei für die Freiheit“

    —nicht J. Gauck

    Der DLF lässt weiter Menschen von der Initiative Hamburg Werbefrei zu Wort kommen, über deren Kampf speziell gegen die die leuchtenden und zappelnden Groß- und Riesenbildschirme auch die taz berichtet. Obszöne 45000 kWh Strom im Jahr verpulvert so ein Ding, also etwas wie 5 Kilowatt. Während ich das als „etwa so viel wie ein dauernd fahrendes kleines Auto“ (oder auch: 50 ordentlich reintretende RadlerInnen) umschreiben würde[2], übersetzt es der Aktivist im DLF-Interview das als „fast so viel wie 30 Einpersonenhaushalte“. Die taz hingegen schreibt „wie 15 Zweipersonenhaushalte“[1]. Angesichts solcher Zahlen wäre ich fast versucht, mich des grassierenden Patriotismus ausnahmsweise mal für gute Zwecke zu bedienen: „Werbefrei für die Freiheit“.

    Der taz-Artikel zitiert den Vorsitzenden der Grünen-Fraktion in Hamburg, Dominik Lorenzen, mit den Worten: „Es gibt in der Stadt [sc. Hamburg] eine gute Balance zwischen Werbeflächen und Platz für die Menschen“, was ich schon bemerkenswert finde; der Mann erkennt zwar an, dass Werbung schlecht für die Menschen ist, räumt ihr aber dennoch irgendeine Art von Rechten ein, die mit den Interessen der BewohnerInnen seiner Stadt auszubalancieren sei. Könnte ich ausgeschrieben haben, welcher Natur diese Rechte wohl sein könnten? Ich hoffe nur, dass mein Spamfilter legal bleibt…

    Foto: ein halbes Dutzend Plakatständer auf einem Haufen.

    Dieses Plakat-Ensemble (gleich neben dem Display von oben in der Heidelberger Jahnstraße) wäre nach den versprochenen Genfer Regeln noch ok: A0-Plakate, meist für Kultur oder, na ja, Bildungsveranstaltungen.

    Üblicher ist demgegenüber die Argumentation von Verkehrssenator Tjarks, die die Belästigung der Öffentlichkeit mit städtischen Einnahmen von 27 Millionen Euro (im Jahr 2020) rechtfertigt. Im DLF-Beitrag wird, im Gegensatz zum taz-Artikel, allerdings darauf hingewiesen, dass gerade neue Verträge geschlossen wurden, die den öffentlichen Raum billiger verhökern. In Genf soll die Stadt durch die Planungen viereinhalb Millionen Euro weniger einnehmen. Gegengerechnet: beide Kommunen verkloppen Stadtbild und Nerven der BewohnerInnen für recht einheitlich um die 20 Euro pro Nase und Jahr.

    Zahlen dieser Art dürften auch hinter der sehr schmallippigen Kommunikation stecken, mit der der werbeindustrielle Komplex AktivistInnen in Hannover gerade auflaufen lässt. Dort liegen offenbar 50 Bauanträge vor zur Ausweitung der Dauerwerbe-Beflimmerung (großartiger Begriff aus dem verlinkten Post) durch den Werbekonzern Ströer, Stadt wie Firma (die seit einem Jahr oder so übrigens auch t-online.de betreibt) mauern bezüglich der Details.

    Eine Schote bei der ganzen Geschichte: Nachdem die Aktivistis auf die Ströer-Übersicht zu Werbeanlagen in Hannover gelinkt hatten, um das Ausmaß des Problems zu illustrieren, wurde es Ströer selbst zu peinlich; jetzt ist da nur noch ein 404 („Sie haben womöglich eine falsche oder alte URL aufgerufen“), und leider hilft auch die Wayback-Maschine nicht. Indes ist allzu viel Fantasie nicht nötig, sich 4600 Werbeträger von Ströer in einer Stadt mit 540'000 EinwohnerInnen vorzustellen. In der volkswirtschaftlichen Gesamtrechnung müssen damit je rund 100 Menschen eines von diesen Teilen bezahlen.

    Auch in Genf schlägt die Reaktion zurück. Ein „ideologischer Bulldozer“ sei es, die öffentliche Belästigung reduzieren zu wollen, „Zensur in Sowjetmanier“, die, und mit derart verdrehten Argumenten wollen allerlei Rechtsparteien und -verbände eine Volksabstimmung gewinnen, auch zu „weniger Umsatz“ in den Geschäften führen wird, weshalb „Arbeitsplätze verloren“ gehen werden.

    Ich bin immer ganz fassungslos, wenn ich solche Argumentoide höre. An sich ist die Situation nach dem Genfer Modell doch ganz klar: Wir belästigen die Leute weniger, was ja ein großer Vorteil ist. Und dafür müssen wir weniger arbeiten, was ja auch ein großer Vorteil ist. Wie könnte da jemand was dagegen haben?

    Die deutschen Werbefritzen sagen, sie hätten einen Anteil am BIP von 1.3% (sie sprechen von „Marktvolumen“). Rechnen wir die Arbeit ein, die es fürs Aufräumen hinter diesen Leuten braucht, und noch weitere Mühe im näheren Umfeld dieses Geschäfts, sind 2% weniger Arbeit ohne Werbung durchaus realistisch. Das wäre, wenn das auf alle Menschen gleichmäßig verteilt wird, ungefähr eine Stunde weniger Lohnarbeit.

    Wäre das nicht klasse? Kein doofen Blinketafeln mehr und am Freitag eine Stunde früher heimgehen?

    [1]Wer auch immer da gerechnet hat, hat ohnehin falsch gerechnet, denn zwei Leute, die einen Haushalt teilen, werden in aller Regel weit weniger Strom verbrauchen als zwei, die jeweils alleine wohnen. Das ist schon deshalb praktisch unausweichlich, weil die Dauerverbraucher Router und Kühlschrank einfach bzw. doppelt vorhanden sind. Da die 1500 kWh pro Einpersonenhaushalt so in etwa auch bei den EWS-Leuten auf ihren Rechnungen stehen, wird das wohl schon so in etwa hinkommen. Allerdings: In meinem Zweipersonenhaushalt wird sogar Essen und Wasser mit Strom erhitzt, und trotzdem kommen wir insgesamt bei 1300 kWh/Jahr raus. Insofern frage ich mich immer ein wenig: Was machen die Leute alle mit ihrem Strom?
    [2]

    Die Wikipedia sieht in einem Mitsubishi-Kleinwagen einen Elektromotor mit etwa 50 kW Leistung, aber das ist ganz offensichtlich eine Überdimensionierung. Mit 50000 Joule kann mensch gemäß E = mgh (die potentielle Energie ist Masse mal Erdbeschleunigung mal Höhe), ausrechnen, dass so ein Motor eine Tonne

    50000  J ⁄ (1000  kg⋅9.81  m/s2) ≈ 5  m

    in die Höhe bringen kann – und das jede Sekunde ein Mal.

    Stellt euch mal kurz eine Tonne irgendwas vor, und dann, was passiert, wenn mensch die fünf Meter runterfallen lässt. Ihr ahnt, was das für Urgewalten wären. Umgekehrt wird als Reichweite für die Kiste 160 Kilometer genannt, was ich für Zwecke der Überschlagsrechnung in eine Betriebsdauer von drei Stunden übersetze. Bei einer Batteriekapazität von ungefähr 15 kWh ergeben sich dann zwanglos die 5 kW mittlere Leistung bei einem Kleinwagen ohne Klimaanlage.

  • Ach Bahn, Teil 4: Werbschleicher

    Foto: Werbepost von der Bahn in rot, etwas größer als DIN C7.

    Das aktuelle „Einwilligungsmanagement“ der Bahn.

    Gestern habe ich Brief-Spam von der Bahn bekommen. Während meine Fragen zu frechen Captchas (Oktober 2021) und einer öffentlichen Entwicklung ihrer „BahnBonus App“ (neulich) immer noch auf sinnvolle Antworten warten und die Mails von der Support-Adresse immer noch einen komplett kaputten text/plain-Teil haben, schreibt die Bahn:

    Sie sind noch nicht zu unserer E-Mail-Kommunikation angemeldet.

    Äh… Was? Ihr habt mir doch euer Schreiben, nach der künftig Menschen, die den root-Account auf ihren Rechnern weder Apple noch Google geben wollen (nicht-technisch: „nicht smartphonieren“), auch per Mail geschickt? Nun, lesen wir weiter:

    Aber nicht nur mit der BahnBonus-App, sondern auch durch unsere E-Mail-Kommunikation bekommen Sie unsere Angebote immer und überall direkt auf ihr Smartphone.

    Ah ja. „Angebote” also. Dass die Bahn Werbung über ihre App ausspielen will, habe ich mir schon gedacht, denn, abgesehen vom (Meta-) Datensammeln: Was soll sonst schon der Vorteil der App-Infrastruktur sein gegenüber der alten Karte, die als Werbeträger, das gebe ich der Bahn gerne, nur recht eingeschränkt taugt?

    Was die Bahn hier probiert, heißt, so höre ich, in der Branche „Consent Management“, also das Erschleichen von Einwilligungen zu allerlei Datenverarbeitungen, die klar denkende Menschen ohne solches „Management“ durchweg ablehnen.

    Die Werbepost von der Bahn ist mithin eine materielle Manifestation eines Cookiebanners. Liebe Bahn: Der aktuelle Kurs für das Erschleichen solcher Einwilligungen ist mindestens ein iPad-Gewinnspiel. Oder in meinem Fall: dass ich mit meiner Plastikkarte weiter einen warmen Ort mit sauberem Klo finde, wenn ich mal wieder auf einem größeren Bahnhof auf einen Zug warte, der grob in meine Richtung fährt.

    Aber all das hat auch eine positive Seite: offenbar gibts im Bahn-Werbecomputer kein Feld „angepisster Kunde, vorsichtige Ansprache“ – oder die Prozesse, es zu füllen, funktionieren nicht. Und das ist aus Datenschutzsicht auch schon was.

    Exkurs: Datenschutzaufklärung auch kaputt

    Oh, habe ich gerade „Datenschutz“ in einem Bahn-Zusammenhang gesagt? Dann kann ich nicht widerstehen, kurz von zwei Highlights meines Ausflugs auf die Datenschutzseite der Bahn zu berichten. Da stimmt nämlich schon im Hinblick auf die Rechtsgrundlagen ziemlich wenig (Stand April 2022). Ich will kurz zwei Beispiele geben.

    Die Bahn setzt ein bizarres Konglomerat von Tracking-Software ein (was den beruhigenden Schluss zulässt, dass sie wahrscheinlich sehr wenig mit den Ergebnissen machen, denn das Gesamtbild hinterlässt nicht den Eindruck, dass da wer weiß, was er_sie tut) und erklärt dazu:

    Die im Folgenden aufgeführten und von uns eingesetzten Tracking-Maßnahmen werden auf Grundlage des Art. 6 Abs. 1 lit. b) DSGVO durchgeführt und dienen der bedarfsgerechten Gestaltung und fortlaufenden Optimierung unserer Webseite.

    Buchstabe b in DSGVO Art. 6 (1) ist „Abwicklung eines Vertrages“. Wer mir erzählt, er könne mir nur dann ein Ticket verkaufen, wenn er Tealium, Adobe Analytics, Optimizely, Qualtrics, m-pathy und CrossEngage alle zusammen auf mich loslässt, hat allenfalls mein bitteres Lachen, anonsten aber die Nadel des Glaubwürdigkeits-o-meters am Nullanschlag verbogen.

    Nur zur Klarheit: eine Datenverabeitung, die sich auf Buchstabe b beruft, muss notwendig sein, der Kram muss also kaputt gehen, wenn sie nicht stattfindet. Das ist bei all den Trackern augenscheinlich unzutreffend, denn auf meiner Maschine zeigen fast alle zugehörigen Servernamen auf meine eigene Maschine oder die „Dienste“ sind anderweitig „geblockt“. Ich kann aber trotzdem buchen, von den Captcha-Belästigungen mal abgesehen.

    Allerdings: Schon der vorgeschobene Grund, „bedarfsgerechte Gestaltung“ (von der ohnehin keine Rede sein kann) hat ja mit der Vertragsabwicklung nichts zu tun. Vielleicht könnten in dem Zusammenhang „berechtigte Interessen“ (Buchstabe f) angeführt werden, mit der Vertragsabwicklung hat das jedenfalls nichts zu tun.

    Mit diesen berechtigten Interessen versucht es die Bahn ein wenig später, nämlich bei den Captchas (wo das nicht komplett abzustreiten wäre, auch wenn im konkreten Fall jede Verhältnismäßigkeit fehlt) und:

    Für Zwecke der Betrugsprävention verwenden wir die Technologie JSC-Tools der Risk.Ident GmbH (Am Sandtorkai 50, 20457 Hamburg). Dies dient Ihrem und unserem Schutz, um der missbräuchlichen Verwendung Ihres Zahlungsmittels zur Zahlung bei bahn.de/bahn.com vorbeugen zu können. Rechtsgrundlage hierfür ist Art. 6 Abs. 1 lit. f) DSGVO.

    Bei diesem Passus wollen Zweck – nämlich Schutz meines Zahlungsmittels – und Verarbeitungsgrund – Interessen der Bahn – recht offensichtlich nicht zusammengehen. Hier wäre ein Berufen auf Buchstabe b eventuell denkbar, weil im wilden Internet Zahlungen ohne Schutzzauber komplizierte Compliance-Probleme bereiten könnten. Das kann ich nicht beurteilen, denn weder weiß ich, welche Sorte Schutzzauber diese JSC-Leute machen noch muss ich – und dafür danke ich allen Gottheiten, die gerne Dankbarkeit hätten – Geld übers Internet eintreiben.

    Aber gut: Wer hätte schon erwartet, dass die Bahn im Datenschutz besser ist als im Zugbetrieb. Auch dort ist es ja gegenwärtig die Regel, dass, wenn ein Zug kommt, es fast immer ein anderer ist als angekündigt und auch dieser andere Zug irgendwie kaputt ist.

  • Ähm – ist das ein Wort?

    Foto: Viele Menschen warten auf einen Vortrag

    All diese Leute warteten 2014 im Karlsruher ZKM auf einen Vortrag von Noam Chomsky. In diesem Post geht es um etwas, wo er ziemlich klar falsch lag.

    Nachdem ich gestern so empört war über Computerlinguistinnen, denen der ethische Kompass klar abhanden gekommen ist, möchte ich gerne ein paar Worte über eine wunderbare linguistische Arbeit nachschieben, die mir neulich auf den Rechner kam. Um es gleich zu gestehen: Auch in der steckt schmutziges Geld, in diesem Fall vom US Department of Defense – aber wenn damit schöne Wissenschaft gemacht wird, will ich nicht mit Steinen werfen.

    Ausgangspunkt war die Sendung Äh, ähm, genau – Wozu gibt es Füllwörter?, die am 15.3. in SWR2 Wissen lief (großes Lob übrigens an die Redaktion, die noch das Manuskript zur Sendung auf die Webseite legt, etwas, das beim DLF inzwischen leider Seltenheitswert hat). Meine Aufmerksamkeit angezogen hat die Geschichte vom „Powerpoint-Genau“, jenem „Genau“, das tatsächlich viele Menschen entweder kurz vor oder kurz nach dem Umblättern bei Programmen wie… na ja, impressive sagen. Jetzt, wo ich mal darauf hingewiesen wurde, fällt mir auch auf, was für eine verbreitete und, ganz streng genommen, etwas alberne Sitte das doch ist.

    Eine kleine Revolution in der Linguistik (gegen König Noam) aus dem Jahr 2002.

    Von dort bin ich auf die Arbeiten von Joan Fox Tree von der staatlichen Universität in Santa Cruz, CA gekommen, die im SWR2-Beitrag als Auslöserin einer kleinen Revolution in der Linguistik bezeichnet wird, weil sie Ähs und Ähms nicht nur als nützlich – weil verständnisfördernd – sondern sozusagen als Wörter erster Klasse identifizierte. Beim Artikel zu Teil zwei firmiert Fox Trees Stanford-Kollege Herbert Clark als Erstautor, und er erschien 2002, just, als ich für ein paar Jahre selbst in Computerlingustik dilett^Wlehrte: „Using uh and um in spontaneous speaking“ (ist leider bei Elsevier erschienen, so dass ich die dorthin führende DOI 10.1016/S0010-0277(02)00017-3 nur widerstrebend gebe).

    Das Paper argumentiert wie gesagt ziemlich stringent, dass Äh und Ähm ganz normale Wörter sind. Das geht gegen einen Ukas des Gottvaters der moderneren Lingustik, Noam Chomsky, der sie (in etwa) als vorprachliche Oberflächenform von Verhakungen bei der Sprachproduktion angesehen hat. So sehr ich Chomsky als großen Vereinheitlicher der Theorie formaler Sprachen und klarsichtigen Beobachter „unserer“ Weltpolitik schätze: Ich schließe mich, glaube ich, dem modernen computerlinugistischen Mainstream an, wenn ich vermute, dass er sich bei der Untersuchung natürlicher Sprache meist vertan hat.

    Ein sehr starkes Argument für die Worthypothese von Clark und Fox Tree ist zum Beispiel, dass verschiedene Sprachen verschiedene, na ja, Laute verwenden anstelle unseres Äh. Tabelle eins aus dem Paper gibt folgende Aufstellung:

    Deutsch äh, ähm
    Niederländisch uh, um
    Schwedisch eh, äh, ääh, m, mm, hmm, ööh, a, ööh
    Norwegisch e, e=, e==, eh, eh=, m, m=, […], øhø, aj
    Spanisch eh, em, este, pues
    Französisch eu, euh, em, eh, oe, n, hein
    Hebräisch eh, e-h, em, e-m, ah, a-m
    Japanisch eeto, etto, ano, anoo, uun, uunto, konoo, sonoo, jaa

    (für Referenzen siehe die Arbeit selbst). Es heißt darin weiter:

    Speakers of English as a second language often import the fillers from their first language – we have heard examples from native French, Hebrew, Turkish, and Spanish speakers – and that is one reason they continue to be heard as non-native speakers.

    Während ich die langen eueueueu-s von FranzösInnen, die Englisch sprechen, bestätigen kann, ist mir leider noch niemand Spanischsprechendes begegnet, der/die mit „este“ verzögert hätte. Aber ich werde jetzt besser aufpassen. Jedenfalls: dass Ähms zwischen verschiedenen Sprachen verschieden, innerhalb der Sprachen aber recht konstant sind, schließt, soweit es mich betrifft, aus, dass Äh und Ähm vorsprachliche Fehlermarker sind.

    Die anderen Argumente für die Worthypothese von Clark und Fox Tree sind vielleicht nicht durchweg vergleichbar stark. Aber die AutorInnen wollten erkennbar einmal alle konventionellen Sprachebenen durchgehen und argumentieren deshalb auch phonologisch (sie sind normale englische Silben), mofphologisch (sie funktionieren auch als Klitika, können sich also an andere Wörter anlehnen: „und-äh”), mit Prosodie (sie fallen aus der Satzmelodie heraus, wie das etwa auch Einschübe wie diese Klammer machen), über die Syntax (hier folgen sie einfach anderen Interjektionen: Heissa!), über die Semantik (sie haben eine definierte Bedeutung, nämlich: jetzt kommt gleich eine kleinere oder größere Verzögerung im Sprechen) und über die Pragmatik, also die Frage: was wollen die Leute mit einem Äh bewirken?

    Einen Eindruck von der Relevanz dieser letzten Frage mag gewinnen, wer im SWR2-Beitrag Mark Zuckerberg hört, wie er auf die Frage eines Kongressabgeordneten antwortet, ob er mitteilen wolle, in welchem Hotel er heute geschlafen habe:

    Der Artikel untersucht diese pragmatischen Aspekte, speziell, was seit Grice Implikatur heißt, und bietet dazu alles Mögliche zwischen „ich habe noch was zu sagen, rede noch nicht rein“ bis „hilf mir und rede du weiter“. Im Fall von Zuckerberg – Facebook war 2002 übrigens noch dystopische Science Fiction – wäre das wohl „Ich tu wenigstens so, als müsste ich über diese Zumutung noch nachdenken“.

    Methodisch ist das alles wirklich schön gemacht. Ich wünschte, mir wäre das Paper schon in meiner Coli-Zeit aufgefallen. Zumindest meine Studis hätten viel Spaß haben können[1].

    Drei mal Öhm sind allein schon hier im Blog zu finden.

    Ein weiterer Punkt aus der Arbeit, den ich für recht überzeugend halte: Äh und Ähm kommen durchaus gerne in geschriebener Sprache, gerade etwa in Chats, vor, was bei einer Art zerebralen Notsignal wirklich nicht zu erwarten wäre. Ein schnelles grep Öhm *.rst im content-Folder dieses Blogs liefert bereits drei Belege (a, b, c) – ich suche mal nicht weiter nach anderen graphische Repräsentationen von Ähm, denn der Punkt ist gemacht: Ich selbst öhme auch, wenn ich sicher keine Wortfindungsprobleme oder Sackgassen in meinem Textplan habe, und ich weiß dabei ziemlich genau, was meine Öhms bedeuten sollen.

    Angesichts so leicht greifbarer Belege ist schon eher seltsam, dass ein so heller Kopf wie Chomsky seinen Irrtum offenbar lange vertreten hat. Andererseits: Wenn ich an die Gelegenheiten denke, zu denen ich ihn live have reden hören… Nun, ich glaube, er äht selbst schon arg wenig, und die Sorte informeller (und vielleicht ja comicinspirierter?) Schreibe, an die wir uns weit über die Blogosphäre hinaus gewöhnt haben, war in den 60er und 70er Jahren vielleicht wirklich noch eher Underground. Clark und Fox Tree führen in diesem Zusammenhang aus, warum Menschen in formaleren, vielleicht hierarchiedominierteren Situationen weniger ähen werden:

    On the minus side, whenever speakers use fillers, they are announcing that they are having preparedness problems, something they may not want to admit in public. Speakers on the radio, on television, and in formal speeches are expected to be knowledgeable and competent, so it might undermine their authority to admit to preparedness problems.

    – eine Einsicht, die sie einer Arbeit über „Radio Talk“ von einem Herrn Goffman aus dem Jahr 1981 zuschreiben. Und in der Tat:

    If speakers have control of uh and um, they should use them less often in formal than in informal registers, and there is much evidence that they do.

    Ich bin ganz sicher, dass ich das so mache. Den Eindruck, ich würde um so weniger ähen, je öffentlicher ich spreche, hatte ich bisher eher mit mehr oder weniger Konzentration in verschiedenen Dia- oder Monologsituationen erklärt, ganz im Sinne von Chomskys Äh-Theorie. Jetzt hingegen neige ich auch stark zur These, dass die Ähs in etwa so verschwinden wie, sagen wir, kräftige Flüche, die ich auf, sagen wir, Konferenzen normalerweise auch vermeide.

    Äh… Scheiße, was für ein fetzengeiles Paper.

    Wenn das DoD für sowas zahlen kann: Muss es dann für die Bundewehr wirklich dieser Großschnüffel-Mist von gestern sein?

    [1]Was DozentInnen halt so glauben…
  • Computerlinguistik ethisch abgerutscht

    Wie prioritär die Auflösung der Bundeswehr ist, zeigt derzeit nicht nur die allabendliche Berichterstattung zu den Folgen von Krieg[1]. Nein, eine von der Gesellschaft getragene Armee macht diese – die Gesellschaft – auch furchtbar anfällig für anderweitige autoritäre Versuchungen. So ist schon Existenz einer Armee das Nachgeben gegenüber der maximalen autoritären Versuchung, denn ihr zugrunde liegt ja die Überzeugung, eine große Klasse von Problemen ließe sich lösen, indem mensch hinreichend viele der richtigen Menschen tötet – und dieses Töten sei auch gerechtfertigt, wenn nicht gar geboten.

    Außerhalb des engeren Tötungsgeschäfts fallen militärisch insprierte Antworten normalerweise etwas weniger final aus, doch bleibt auch dort ethisch kaum ein Stein auf dem anderen, wenn die Armee interveniert. Ein gutes und aktuelles Beispiel ist das Projekt, von dem die Computerlinguistin Michaela Geierhos von der Universität der Bundeswehr in Computer und Kommunikation vom 9.4.2022 berichtet.

    Im Groben will die ihre Gruppe statistische und vielleicht linguistische Werkzeuge („künstliche Intelligenz“) zur – immerhin noch polizeilichen und nicht militärischen – Massenüberwachung von Telekommunikation nutzen. In den Geierhos' Worten:

    …den Ermittler zu unterstützen, überhaupt mal zu erkennen, was es in Millionen von Zeilen, wo kommen da überhaupt Namen vor von Personen, was ist ne Adressangabe, gehts jetzt hier um Drogen oder gehts vielleicht um ganz was anderes.

    Mit anderen Worten: Die Polizei soll richtig viele Menschen abschnorcheln – denn sonst kommen ja keine „Millionen von Zeilen“ zusammen – und dann per Computer rausbekommen, welche der Überwachten die bösen Buben sind. Das ist der gute, alte Generalverdacht, und Menschen mit einem Mindestmaß an menschenrechtlichem Instinkt werden so etwas ganz unabhängig von den verfolgten Zwecken ablehnen. Grundfeste des Rechtsstaats ist nun mal der Gedanke, dass allenfalls dann in deine Grundrechte eingegriffen wird, wenn es einen begründbaren Verdacht gibt, du habest gegen Gesetze verstoßen – und auch dann können nur sehr konkrete Hinweise auf schwere Verstöße so schwere Eingriffe wie die „TKÜ“ rechtfertigen (vgl. §100a StPO).

    Transparent: Wer nichts zu verbergen hat ist langweilig

    2008 zierte dieses Transparent das Berliner bcc, während der CCC dort tagte.

    In den Beispielen von Geierhos hingegen geht es um ein von vorneherein zweckloses Unterfangen wie die repressive Bekämpfung des illegalen Handels mit und Gebrauchs von Rauschmitteln. Das völlige Scheitern dieses Ansatzes ist ein besonders schönes Beispiel dafür, wie trügerisch die autoritäre Versuchung ist. Wie so oft mögen die (staats-) gewalttätigen Lösungsansätze naheliegend sein. Das heißt aber noch lange nicht, dass sie tatsächlich funktionieren, schon gar nicht auf Dauer. Und da habe ich noch nicht mit den schweren Nebenwirkungen angefangen.

    Leider ist auch der Moderator Manfred Kloiber – versteht mich nicht falsch: das ist, soweit ich das nach Plaudereien mit ihm im DLF-Studio beim Chaos Communication Congress beurteilen kann, ein sehr netter Mensch – schon der autoritären Versuchung erlegen, wenn er fragt:

    Auf der anderen Seite würde man sich ja wünschen, dass man genau davon [z.B. von Drogengeschichten] ein unabhängiges System findet, was eben halt über die Bereiche hinweg Kriminalität oder anormale Vorgänge feststellen kann.

    Ich weiß nicht, ob ihm klar war, was er sich da wünscht, und die eher stolpernden Worte mögen andeuten, dass die Frage so nicht geplant war. Jedenfalls: Eine universelle Verhaltensüberwachung, die nonkonformes Verhalten (nichts anderes sind ja „anormale Vorgänge“ im sozialen Kontext) polizeilicher Intervention zugänglich machen soll? Wer könnte sich sowas unter welchen Umständen zur Lösung welcher Probleme wünschen?

    Zum „wer“ kann mensch immerhin schon mal antworten: Wissenschaftlerinnen der Universität der Bundeswehr, denn Geierhos antwortet ungerührt:

    Ja, das ist eine sehr große Vision, aber von dieser Vision sind wir leider noch weit entfernt.

    (Hervorhebung von mir).

    Zu weiteren „Kriminalitätsbereichen“, in denen Geierhos ihr digitales Stahlnetz gerne auswerfen würde, sagt sie:

    Also, Wirtschaftskriminalität, wie gesagt, schwieriger, dass wir das synthetisch herstellen können […] Aber so Chatprotokolle, Telegram und wie sie alle heißen, da kann man definitiv ansetzen, wir gucken uns aber auch an, Hasskriminalität beispielsweise, Mobbing, dass es in die Richtung geht.

    Klar, das sind Probleme, deren autoritäre Behandlung (in Wahrheit wohl: Verschlimmerung) das Aushebeln selbst noch basalster Menschenrechtsstandards rechtfertigt.

    Oh je. Wie genau haben Costa Rica und Island es geschafft, ihr Militär loszuwerden? Können wir das bitte auch ganz schnell haben?

    [1]Bei den Bildern vom Krieg bleibt, nebenbei, zu bedenken, dass an ihnen im Gegensatz zum offenbar noch verbreiteten Eindruck nichts neu ist: Armeen, auch „unsere“ Armeen und die „unserer“ Verbündeten, haben seit jeher und auch in den letzten Jahren ganz ähnliche und noch schlimmere Gräuel angerichtet. Dass nennenswert viele sogar halbwegs gutwillige Menschen die aktuellen Gräuel zum Anlass nehmen, „unsere“ Fähigkeiten zum Anrichten von Gräueln verbessern zu wollen: Das wird künftige HistorikerInnen wohl ebenso verwundern wie uns heute die Freude, mit der nennenswerte Teile der kaiserlichen Untertanen in den ersten Weltkrieg gezogen sind. Mich verwundert schon heute beides in gleichem Maße. Aber das ist nun wirklich nicht Thema dieses Artikels.
  • Affen zählen ist schwer

    Nachdem mich gestern die Publikationen der Gruppe von Kathelijne Koops so gelockt haben, habe ich gleich eine durchgeblättert, und zwar „How to measure chimpanzee party size? A methodological comparison“ von Kelly van Leeuwen und KollegInnen (doi:10.1007/s10329-019-00783-4, Preprint).

    Bevor ich das lobe, muss ich etwas mosern. Erstens, weil das Ganze von unfreier Software nur so strotzt – die statistische Auswertung ist mit SPSS gemacht (geht ja auch anders), und das Paper wurde wohl in Word geschrieben, auch wenn die Metadaten des Preprints etwas verwirred aussehen (leicht redigiert):

    $ pdftk ZORA198831.pdf dump_data
    InfoKey: ModDate
    InfoValue: D:20220128142734+01&apos;00&apos;
    InfoKey: Creator
    InfoValue: Acrobat PDFMaker 17 f&#252;r Word
    InfoKey: CreationDate
    InfoValue: D:20220128142734+01&apos;00&apos;
    InfoKey: Producer
    InfoValue: GPL Ghostscript 9.25
    

    Warum da nacheinander ein „PDFMaker für Word“ und dann (?) nochmal ein Ghostscript drübergelaufen sind? Hm. Das PDF vom Verlag ist übrigens nochmal anders gemacht und meldet „Acrobat Distiller 10.1.8 (Windows)“ als die Software, die das PDF geschrieben hat. Uh. Ein wenig neugierig wäre ich nun schon, woraus das destilliert wurde.

    Zweitens ist nicht schön, dass die Open-Access-Webseite der Uni Zürich „You need to enable JavaScript to run this app.“ sagt. Das ist in diesem Fall um so weniger angebracht, als sie auch ohne Javascript eine ganz brauchbare Seite ausliefert. Allerdings fehlen in dem Word-generierten PDF die Abbildungen und Tabellen, und sie sind auch nicht erkennbar verlinkt. Immerhin sind beim Verlag (Springer) „Online Resources“ offen (während sie von Leuten, die nicht für hinreichend reiche Unis arbeiten, absurde 37.40 Euro fürs formatierte PDF haben wollen). Zumindest im Falle der ziemlich sinnlos gestapelten Ergebnisse der verschiedenen Methoden in Abbildung 1 ist das Fehlen der Abbildungen aber hier vielleicht sogar verschmerzbar.

    Ich würde noch nicht mal auf die Tests, die die AutorInnen so durchgeklickt haben, furchtbar viel geben, auch wenn sie immerhin ein wenig statistsiche Abbitte geleistet haben (das ist die realweltliche Bedeutung des dann und wann angerufenen hl. Bonferroni).

    Screenshot von Tabelle 1 aus dem bespreochenen Artikel

    Mein persönliches Highlight aus dem Artikel: Eine qualitative Betrachtung einiger systematischer Effekte. Rechte beim Japan Monkey Centre und Springer Japan KK (aus doi:10.1007/s10329-019-00783-4).

    Wirklich schade ist es aber um die Tabelle 1 (wenn die Abbildung hier nicht reicht: Libgen kann helfen). Sie liefert eine schöne Quintessenz der qualitativen Betrachtungen zu möglichen systematischen Fehlern, und die geben gute – und vor allem im Vergleich zu entsprechenden Betrachtungen in der Physik auch recht greifbare – Beispiele für das, von dem ich in meinem Lob von small data geredet habe. Van Leeuwen et al schätzen nämlich die Größe von umherziehenden Schimpansengruppen. Weil die Tiere nun in den Baumkronen umherturnen und noch dazu vielleicht nicht so gern gezählt werden, ist das nicht ganz einfach, und die Leute probieren vier verschiedene Verfahren:

    • Hingehen und Affen zählen
    • Eine Fotofalle aufstellen und sehen, wie viele Schimpansen auf den Bildern sind
    • Anrücken, wenn die Tiere weg sind und zählen, wie viele Tagesnester – leichte Konstrukte aus Blättern und Zweigen, in denen Schimpansen kleine Nickerchen halten – in den Bäumen sind
    • Anrücken, wenn die Tiere weg sind und zählen, wie viele Schlafnester – elaborierte Konstruktionen, in denen ein Schimpanse die Nacht (aber immer nur eine) verbringt – in den Bäumen sind.

    In einer idealen Welt würde für eine gegebene Gruppe immer die gleiche (kleine natürliche) Zahl rauskommen, also vielleicht 5. Und ich finde die erste wertvolle Einsicht schon mal: Selbst einer 5 kann mensch in vielen Bereichen der Wissenschaft nicht vertrauen. Na gut: Als Astronom sollte ich da nicht mit Steinen werfen, denn wir kommen ja auch mit acht, neun oder zehn (Planeten im Sonnensystem) ins Schleudern.

    Wenig überraschenderweise lieferten verschiedene Methoden tatsächlich verschiedene Ergebnisse, und zwar systematisch. Zur Erklärung schlagen die AutorInnen unter anderem vor:

    • Direkte Beobachtungen werden vermutlich große Gruppengrößen bevorzugen, da sich kleinere Gruppen noch scheuer gegenüber Menschen verhalten werden als große – und umgekehrt die Menschen größere Gruppen wegen mehr Geschrei auch leichter finden.
    • Umgekehrt werden direkte Beobachtungen eher einzelne Tiere übersehen, wenn diese besonders scheu sind, was zu einer systematischen Unterschätzung speziell bei besonders wenig an Menschen gewöhnten Gruppen führen wird.
    • Die Fotofallen könnten ähnliche Probleme haben, wenn die Schimpansen ihre Existenz spitzkriegen. Offenbar gibt es da Vermeidungsverhalten. Und natürlich haben Fotofallen nur ein endliches Gesichtsfeld, so dass sie bei realen Schimpansengrupen recht wahrscheinlich einzelne Tiere nicht erfassen werden.
    • Bei den Tagesnestern werden eher Tiere übersehen, weil einige sich gar keine Tagesnester bauen, etwa, weil sie gar kein Nickerchen halten. Und außerdem sind diese Nester häufig so locker gezimmert, dass Menschen sie übersehen. Das kann aber durchaus auch zu einer Überschätzung der mittleren Gruppengröße führen, weil kleinere Tageslager gar nicht auffallen; ähnlich würde es sich auswirken, wenn sich ein Tier zwei oder gar mehr Tagesnester baut.
    • Bei Nachtnestern könnte die Gruppengröße überschätzt werden, weil sich vielleicht mehrere Gruppen zur Übernachtung zusammentun (was dann den Übergang von systematischen Fehlern in interessante Ergebnisse markiert). Demgegenüber dürften die Probleme mit übersehenen kleinen Nachtlagern wie auch mit übersehenen Nestern bei Nachtnestern weniger ins Gewicht fallen als bei Tagnestern, einfach weil sie viel aufwändiger gebaut sind.

    Nun reichen die Daten von van Leeuwen et al nicht, diese Systematiken ordentlich zu quantifizieren, zumal sie sehr wahrscheinlich auch von allerlei Umweltbedingungen abhängig sind – im Paper geht es in der Hinsicht vor allem um die Verfügbarkeit von Obst (mit der die Gruppengröße wachsen könnte, weil mehr Tiere gleichzeitig essen können, ohne sich in die Quere zu kommen) und um die Anwesenheit fortpflanzungsbereiter Schimpansinnen.

    Dass systematische Fehler sehr wohl qualitative Ergebnisse ändern können, zeigt die Studie schön. So werden Gruppen laut Fotofallenmethode größer, wenn sie fortpflanzungsbereite Frauen umfassen; dieses Ergebnis verschwindet aber, wenn die Gruppengrößen durch direkte Beobachtungen geschätzt werden. Durch Nestzählung ist zu dieser Frage keine Aussage möglich, weil jedenfalls ohne viel Kletterei nicht herauszubekommen ist, wie es mit Geschlecht und Zykluslage der NestbauerInnen ausgesehen haben mag.

    Und auch wenn die Arbeit nicht auseinanderhalten kann, wie weit die größeren Gruppen, die sich bei Betrachtung der Nachtnester ergeben, Folge systematischer Fehler bei der Erfassung sind oder durch das Verhalten der Tiere verursacht werden: Klar ist jedenfalls, dass mensch bis auf Weiteres lieber keine Schlüsse von Nachtzählungen aufs Tagesverhalten zieht.

    Was ja auch ein schönes Ergebnis ist.

  • Steinzeit bei Schimpansen

    Foto: Krähe sitzt auf Wildschwein

    Ob diese Krähe überlegt, wie sie das Schwein lenken kann? Und wenn sie rauskriegt, wie das geht, könnte sie es ihren Kindern sagen? (Das ist übrigens im Käfertaler Wildpark)

    Auf meinem Mal-genauer-ansehen-Stapel lag schon seit der Forschung aktuell-Sendung vom 25. Januar die Geschichte von den Schimpansen und den Steinen. In aller Kürze: Irgendwo in Guinea leben zwei Schimpansengruppen (-stämme?), deren eine seit vielen Jahren mit großer Selbstverständlichkeit Nüsse mit Steinen knackt, deren andere aber das noch nicht mal tut, wenn mensch ihnen Steine und Nüsse frei Haus liefert. Der Clou: die beiden Gruppen wohnen nur ein paar Kilometer voneinander entfernt.

    Ich fand diese Geschichte sehr bemerkenswert, und zwar einerseits, weil ich Schimpansen grundsätzlich für kreativ genug gehalten hätte, um bei so viel Nachhilfe schnell selbst aufs Nüsseknacken zu kommen. Krähen zum Beispiel – jedenfalls die im Handschuhsheimer Feld – werfen Nüsse aus großer Höhe auf Teerstraßen, nicht aber auf normale Erde. Na gut, das mag auch soziales Lernen gewesen sein, aber ich will eigentlich schon glauben, dass so eine Krähe da auch selbst draufkommt. Und a propos „sozial“: Wer Möwen kennt, wird wohl wie ich sicher sein, dass deren Muschelknacktechniken, wenn überhaupt, nur durch antisoziales Lernen vermittelt werden könnten.

    Wenn jedoch die Schimpansen zu vernagelt sein sollten, um rasch selbst auf die Nutzung eines Steins zum Nüsseknacken zu kommen, finde ich es andererseits fast unglaublich, dass Gruppen, die nur ein paar Kilometer voneinander entfernt leben, so wenig Austausch haben, dass sich so eine Kultur innerhalb von Jahrzehnten nicht sozusagen intertribal verbreitet. Es gehen doch immer wieder einzelne Tiere auf Wanderschaft, oder nicht?

    Ein Gedanke, der mich beim Hören ein wenig beschäftigt hat, war: Was, wenn das nicht ganz ordinäre Dummheit ist, sondern dessen verschärfte Form, nämlich Patriotismus? In seinem Buch „Collapse – how societies choose to fail or succeed“ (gibts in der Imperial Library) spekuliert Jared Diamond, die mittelalterliche Wikingerkultur auf Grönland sei untergegangen, weil ihre Mitglieder darauf bestanden haben, wie „in der Heimat“, also von Getreide und Viehzucht, zu leben und nicht, wie die Inuit, die sie garantiert beobachtet haben werden, von Fisch. Das Bauernmodell habe die gegen Ende des mittelalterlichen Klimaoptimums sinkende Temperatur einfach nicht mitgemacht.

    That [the Greenland Norse] did not hunt the ringed seals, fish, and whales which they must have seen the Inuit hunting was their own decision. The Norse starved in the presence of abundant unutilized food resources. Why did they make that decision, which from our perspective of hindsight seems suicidal?

    Actually, from the perspective of their own observations, values, and previous experience, Norse decision-making was no more suicidal than is ours today.

    Schon, weil dieser Artikel mit Wissenschaft getaggt ist, muss ich anmerken, dass Diamonds Argumente vielleicht nicht immer die stichhaltigsten sind und auch die Sache mit der Kälte zwar naheliegend, aber nicht alternativlos ist (vgl. Wissenschaft im Brennpunkt vom 14.11.2019) und wenigstens nach Zhao et al (2022), doi:10.1126/sciadv.abm4346, wegen Nicht-kälter-werden inzwischen regelrecht unplausibel wird. Und doch: Dass Kulturen Dinge aus völlig albernen Gründen tun (ich sage mal: Autos fahren und, schlimmer noch, parken) und noch mehr nicht tun (ich sage mal: Alltagsradeln), ist wahrlich nichts Neues. Was also, wenn sich die nichtknackenden Affen die Nüsse quasi vom Mund absparen, um nur sich nur ja nicht gemein zu machen mit den knackenden Affen von nebenan? Ich würde das Experiment ja gerne mal mit anderen, weiter entfernten Gruppen probieren.

    Mit solchen Gedanken habe ich die Webseite der im DLF-Beitrag zitierten Kathelijne Koops von der Uni Zürich besucht. Ein Paper zur Nussgeschichte habe ich nicht gefunden – basierte der Beitrag im Januar auf einem Preprint? einer Pressemitteilung der Uni Zürich? –, aber dafür jede Menge anderer Papers, die es direkt in meinen Mal-genauer-ansehen-Stapel schaffen: „Quantifying gaze conspicuousness: Are humans distinct from chimpanzees and bonobos?“, „Chimpanzee termite fishing etiquette“ oder, im Hinblick auf meinen Dauerbrenner „Was taugen diese Zahlen eigentlich?“ besonders reizvoll: „How to measure chimpanzee party size?“. Ich bin ganz hingerissen.

  • Globaldokumente in Libreoffice zusammenführen

    Ich hatte gerade einer armen Seele zu helfen, die drei Bücher mit Microsoft Word für Windows geschrieben hat und dazu Word-Zentraldokumente verwendet hat, vor allem wohl, weil vor 20 Jahren – als diese Projekte starteten – Word nicht mit mehreren hundert Seiten auf einmal umgehen konnte. Unbenommen, dass mensch mit Office-Software keine richtige Arbeit machen sollte: da die arme Seele auf Linux migrierte, musste der ganze Kram auf Libreoffice. Für eine Migration auf vernünftige Technologien (TeX, ReStructuredText, Docbook oder was auch immer) reichten weder meine Geduld noch der Erlösungswille der armen Seele.

    Erste Ernüchterung: Word-Zentraldokumente (wie auch Libreoffice-Globaldokumente) speichern ihre Pfade absolut: sie können also ohne Tricks nicht bewegt werden, insbesondere nicht von einem Windows-Dateisystem in ein Linux-Dateisystem. Wie so oft stellt sich die Frage, warum das mal ein wie ein gutes Design ausgesehen haben mag.

    Nach einem kurzen Blick auf das Arbeiten mit Globaldokumenten habe ich beschlossen, dass Rechner jetzt wirklich groß genug sind, um 500-seitige Dokumente im Speicher zu halten und dass der ganze Zentral- und Globaldokumentenzauber mit den begleitenden Komplikationen nicht mehr sein muss.

    Nur: Wie kopiert mensch 20, 30 solche Dateien zusammen? Was ich dazu in der verbleibenden Libreoffice-Doku (das Wiki, das das jetzt sein soll, überzeugt mich übrigens nicht) und dem weiteren Netz gefunden habe, fand ich eher… unbefriedigend – Erinnerungen an Windows-Foren („um den Sound-Treiber zu reparieren, musst du den CD-Treiber deinstallieren. Hat bei mir funktioniert“) werden da dann und wann schon wach. Deshalb dachte ich mir, es könnte nützlich sein, wenn ich auch ein paar Rezepte beitrage, auch wenn ich – Disclaimer – selbst keine Office-Software verwende und in dem Sinn selbst höchstens einäugig bin.

    Wie machte ich aus einem Satz von ODTs oder DOCs ein einziges ODT?

    1. Ein Verzeichnis anlegen und alle Filialdateien reinkopieren.

    2. Die Dateien so benennen, dass eine einfache Sortierung sie in die richtige Reihenfolge bringt (ich habe einfach 000_, 001_ usf vor die Namen gesezt).

    3. Libreoffice starten, Neu → Globaldokument.

    4. F5 drücken, um in den Navigator zu kommen, dort aufs Einfügen-Icon klicken; das poppt eine Auwahlbox auf.

    5. In dieser Auswahlbox in das Verzeichnis mit den Filialdateien gehen und diese in die Reihenfolge sortieren lassen, in der sie nachher im Dokument erscheinen sollen.

    6. Alle Dateien im Verzeichnis auswählen, z.B. durch Control-A oder per Shift-Klick, dann den Import bestätigen.

    7. Datei → Exportieren, dabei ODT als Zielformat auswählen; das ist der erste Schritt, um von der Einbettung im Globaldokument wegzukommen. Ich nenne diese Datei jetzt mal joined.odt.

    8. Das so erzeugte ODT ist leider überall schreibgeschützt, und ich habe keinen Weg gefunden, diesen Schreibschutz per Klicken wegzuzaubern, bevor ich die Geduld mit Doku, Menüs und vor allem Foren verloren habe und mit epubedit beigegangen bin (vgl. unten). Mit dem kleinen Skript dort unten könnt ihr Folgendes in einer Shell laufen lassen:

      epubedit joined.odt
      sed -ie 's/text:protected="[^"]*"//g' content.xml
      

      (ihr könnt natürlich auch mit einem Editor oder gar mit dem hervorragenden xmlstarlet die ganzen text:protected-Attribute löschen)[1]. Geht dann aus der Shell vom epubedit wieder raus; das schreibt joined.odt neu.

    9. Das neue joined.odt in libreoffice öffnen.

    10. Bearbeiten → Verknüpfungen, wieder alle Auswählen (^A), und dann den Lösen-Knopf drücken.

    Das Ergebnis dieser Prozedur ist ein zusammenhängendes „Dokument“ (wenn mensch keine großen Ansprüche an Dokumente hat).

    Zumindest in meinem Fall fing damit die Arbeit allerdings erst an, weil jedes Filialdokument eigene und verrückte Absatzvorlagen hatte. Ich schreibe gleich, wie ich das aufgeräumt habe, aber zunächst müsen wir geschwind über das erwähnte epubedit reden.

    epubedit

    Was Open Document-Dateien tatsächlich etwas angenehmer im Umgang macht als einige andere Office-Dateien, die ich hier erwähnen könnte, ist, dass sie eigentlich nur zip-Archive sind, in denen von für sich nicht unvernünftigen Standards (z.B. XML und CSS) beschriebene Textdateien leben. Das hat mir beispielsweise den obigen Trick mit der Ersetzung der text:protected-Attribute erlaubt.

    Diese Architektur haben sie mit Ebooks im epub-Format gemein, und um an denen geschwind mal kleine Korrekturen vorzunehmen, habe ich mir vor Jahren ein kleines Shell-Skript geschrieben:

    #!/bin/bash
    
    if [ $# -ne 1 ]; then
            echo "Usage: $0 <epub> -- unpack an epub, open a shell, pack it again."
            exit 0
    fi
    
    workdir=$(mktemp -d /tmp/workXXXXXX)
    
    cleanup() {
            rm -rf $workdir
    }
    trap cleanup EXIT
    if [ ! -f  "$1".bak ]; then
            cp -a "$1" "$1".bak
    fi
    
    unzip "$1" -d $workdir
    (cd $workdir; bash)
    fullpath=$(pwd)/"$1"
    
    cd $workdir
    zip -r "$fullpath" *
    

    Nehmt das und legt es als – sagen wir – epubedit irgendwo in euren Pfad und macht es ausführbar. Ihr könnt dann für irgendein epub oder odt epubedit datei.odt sagen und landet in einer Shell, die im Wurzelverzeichnis des jeweiligen ZIP-Archivs läuft. Dort könnt ihr nach Herzenslust editieren – bei ODTs ist der Inhalt in content.xml –, und wenn ihr fertig seid, beendet ihr die Shell und habt ein entsprechend verändertes ODT oder epub.

    Weil dabei gerne mal was schief geht, legt das Skript ein Backup der Originaldatei an (es sei denn, es gäbe schon so ein Backup; die Erfahrung zeigt, dass mensch in der Regel lieber das ursprüngliche Backup behalten will…).

    Stilfragen

    Nun ist das vereinte Dokument zwar immerhin nur noch eine einzige Datei, die zudem – wow! – auch bewegt werden kann. Zumindest mit der Genese in meinem Fall, also den vielen Einzel-Word-Dateien, ist sie trotzdem kaum brauchbar, weil Word einige hundert Formatvorlagen erzeugt hat, meist mit so nützlichen Namen wie Formatvorlage_20_16_20_pt_20_Block_20_Erste_20_Zeile_3a__20__20_05_20_cm_20_Zchn oder Fußnotentext1_20_Zchn oder auch apple-converted-space. Dieses Problem ist schlimm, und ich habe schließlich eingesehen, dass es ohne ein kleines Programm und einige Handarbeit nicht lösbar ist.

    Das Programm hat am Anfang nur Stilnamen aus dem Dokument rausgeprökelt und auf die Standardausgabe gelegt. Inzwischen ist das zu einer Basis für eine Abbildungsdatei geworden, und auch für die Abbildung als solche haben reguläre Ausdrücke noch gereicht. Wegen der Abhängigkeiten der Stile untereinander blieb jedoch immer noch jede Menge Mist in der Liste der verwendeten Stile zurück. Deshalb musste ich schließlich doch noch ordentliche XML-Verarbeitung anwerfen, um die styles.xml umzufummeln. Das Ergebnis ist das Programm defuse-libreoffice-style.py. Wenn ihr dieses Programm für die Dauer der Verarbeitung in euer Homeverzeichnis legt, würdet ihr die Stile wie folgt vereinheitlichen:

    1. epubedit joined.odt; alles Weitere passiert in der Shell, die das öffnet.

    2. python3 ~/defuse_libreoffice-style.py > ~/style-map.txt – wenn ihr das Skript nicht in eurem Home lagert, müsst ihr diesen Pfad anpassen. Und ich lege die Stil-Abbildung ins Home und nicht ins aktuelle Verzeichnis, damit die Abbildung (die recht viel Arbeit ist) nicht gleich verloren ist, wenn ihr die Shell verlasst. Ich jedenfalls habe besonders beim ersten Mal ein paar Anläufe gebraucht, bis das Mapping gut gepasst hat.

    3. Editiert die Datei ~/style-map.txt mit einem Texteditor (also auf keinen Fall mit libreoffice selbst). Da drin stehen Zeilen wie:

      Footnote_20_Symbol -> Footnote_20_Symbol
      

      – in meinem Fall ungefähr 200 davon. Die Aufgabe ist jetzt, die rechten Seiten dieser Zeilen auf eine Handvoll Stile runterzubringen (Textkörper, Überschrift_1, Überschrift_2, Zitat, Fußnotenzeichen und Fußnote waren mein Minimum); die Zeile oben habe ich zum Beispiel zu:

      Footnote_20_Symbol -> Fußnotenzeichen
      

      gemacht. Es ist nicht immer einfach, herauszukriegen, was wohl eine Vorlage mal tun sollte; meist hat Word aber doch einen gewissen Hinweis darauf im Namen hinterlassen.

    4. Wenn die Abbildung fertig ist, lasst das Python-Skript nochmal laufen; wenn es nämlich ein Argument bekommt, interpretiert es das als Abbildung und passt sowohl content.xml als auch style.xml entsprechend an:

      python3 ~/defuse_libreoffice-style.py ~/style-map.txt
      
    5. Um zu sehen, welche Stile noch übrig sind, könnt ihr das Skript ein weiteres Mal ohne Argumente laufen lassen; das gibt dann die noch vorhandenen Stile ins Terminal aus:

      python3 ~/defuse_libreoffice-style.py
      

      Wenn noch was dabei ist, das nicht übrig bleiben soll, könnt ihr style-map.txt anpassen und Schritt (4) nochmal laufen lassen (oder nochmal vom Backup des ODT anfangen).

    6. Verlasst zum Abschluss die Shell vom epubedit und guckt im libreoffice nach, ob alles geklappt hat. Libreoffice erzählt wahrscheinlich, dass das Dokument beschädigt sei (aber nicht genauer, was eigentlich; hier rächt sich, dass ich die Open Document-Standards nicht gelesen und stattdessen einfach munter drauflosgehackt habe). Das, was es zur Reparatur unternimmt, hat aber bei mir immer gut funktioniert – insofern: Nur Mut.

    Und für den Fall, dass jemand in den Python-Code reinguckt: Nein, auch wenn der StyleSanitiser immerhin ordentlich XML bearbeitet (im Gegensatz zu dem RE-Hacks von oben), ist das immer noch nicht Open Document-allgemein, denn ich habe die spezifische Wahl des text:-Präfix von Libreoffice darin hart kodiert, was sich für „richtige“ Software nicht gehören würde. Aber SAX mit richtigen Namespaces macht keinen Spaß, und ich rechne erstmal nicht damit, dass dieser Code je mit ODTs laufen wird, die nicht von Libreoffice kommen.

    Und die Stichworte?

    Die Bücher hatten auch je ein Stichwortverzeichnis. Bei einem Dokument hat das gut funktioniert, bei den anderen standen im Verzeichnis ein paar ordentliche Begriffe, ein paar Begriffe mit sinnlosen typografischen Anführungszeichen und ganz viele Einträge für das leere Wort. Ich habe keine Ahnung, wie es dazu kam.

    Bei der Reparatur hilft erneut der Umstand, dass ODT im Kern ein nicht ganz unvernünftiges XML ist. Dabei sieht das Markup für ein Stichwort beispielsweise so aus:

    Karl Valentin …
  • „Sackgasse Aufrüstung“ mit Jürgen Wagner

    Modern anmutendes Plakat: "Gold gab ich zur Wehr, Eisen nahm ich zur Ehr"

    Dass auch avantgardistisch orientierte Menschen im ersten Weltkrieg die große Knochenmühle mit ihrer Kreativität unterstützten, zeigt, so finde ich, dieses im Technischen Museum Wien ausgestellte zeitgenössische Plakat. Aber dazu später.

    Gestern war Jürgen Wagner von der großartigen Informationsstelle Militarisierung (IMI) in Heidelberg und hat über „Krieg gegen die Ukraine – Russlands Krieg, die westliche Rolle und die Sackgasse Aufrüstung“ referiert (Ankündigung). In einer Zeit, in der praktisch keine öffentliche Äußerung ohne Schaum vorm Mund auskommt, war der im Groben ruhige Verlauf der Veranstaltung eine sehr willkommene Abwechslng. Aber gut, es konnten auch die meisten der (praktisch durchweg grauhaarigen) Anwesenden mit gutem Gewissen sagen: Wir waren gegen die Angriffskriege gegen Serbien, Afghanistan, den Irak, Libyen oder Efrîn auf der Straße – klar sind wir auch gegen den Angriff auf die Ukraine auf der Straße. Wer so viel Routine hat bei der Empörung gegen das staatliche Töten, hat vielleicht wirklich bessere Voraussetzungen, allzu überschäumender Erregung zu entgehen.

    Ich nehme ich an, dass Jürgens Online-Vortrag vom 28.3.2022 ziemlich genau dem entspricht, was er gestern erzählt hat, und so empfehle ich das jetzt mal ungesehen. Lohnend ist das unter anderem, weil Jürgen recht überzeugend eines der hässlicheren Narrative der letzten paar Wochen zerlegt: Dass es nämlich eine Appeasement-Politik gegeben habe und diese gescheitert sei, weshalb nun die Aufrüstung (und in der Konsequenz das Niederringen und -werfen des Feindes) alternativlos sei.

    Es hat seit 1990 keine „Appeasement“-Politik gegeben.

    Beide Teile dieses Narrativs sind Quatsch. Es hat nämlich schon mal keine Appeasement-Politik gegeben. Mal ganz davon abgesehen, dass eine Diffamierung von Entspannungs- und Kompromisspolitik als „Appeasement“ (und damit des Feindes als „Hitler“) an sich schon stark nach übler Demagogie schmeckt: „Der Westen“ hat seit der Niederlage der Sowjetunion konsequent die berühmten „roten Linien“ seiner (nicht nur russischen) Feinde überschritten und hat entsprechende Signale von diesen nonchalant ignoriert. Wer nicht Video gucken will, findet auch auf der Ukraine-Seite der IMI viel Material zu diesem Thema.

    Diese Frage ist durchaus relevant, denn: Zur Abwechslung mal nicht blind die eigenen nationalen Interessen durchsetzen wäre durchaus ein Modell für eine antiapokalyptische Außenpolitik nach dem jüngsten Krieg in Europa, gerade auch im Hinblick auf ein Einbremsen der zahlreichen vergleichbaren Gemetzel im globalen Süden.

    Was im Übrigen vom Appeasement-Narrativ zu halten ist, zeigt die Entwicklung der deutschen Kriegskasse:

    Seit der Eskalation um das Assoziationsabkommen der EU mit der Ukraine stieg das Budget der Bundeswehr von 32,5 Mrd. Euro (2014) auf 46,9 Mrd. (2021) steil an – und das sind nur die offiziellen Zahlen, hinter denen sich noch einmal etliche Milliarden versteckte Militärausgaben verbergen (siehe IMI-Standpunkt 2019/058).

    Jürgen Wagner am 28.2.

    An gleicher Stelle macht Jürgen auch einen weiteren Punkt aus dem Vortrag gestern, und zwar einen, der eigentlich allem Aufrüstungsgerede ohnehin sofort den Boden entziehen sollte:

    Die NATO-Militärausgaben sind also heute bereits rund 18mal höher als die Russlands. Augenscheinlich haben die militärischen Ausgabensteigerungen bislang in keiner Weise zu mehr Sicherheit geführt, wie derzeit leider offensichtlich wird.

    Wer also immer meint, jetzt als Folge der Empörung über Putins Töten die „eigenen“ Fähigkeiten zum Töten ausbauen zu sollen, dürfen oder müssen, sollte besser glaubhafte Geschichten liefern, wie genau der russische Angriff auf die Ukraine nicht stattgefunden hätte, wenn „wir“, sagen wir, 20-mal mehr oder 30-mal mehr oder 100-mal mehr als „die Russen“ fürs Töten ausgegeben hätten. Szenarien, die mehr als 100-mal mehr fürs Militär ausgeben wollen als Russland, gelten nicht, denn das würde wahrscheinlich selbst unsere Volkswirtschaften überlasten, von den verheerenden Wirkungen auf den Rest der Welt ganz zu schweigen.

    Allerdings dreht sich die Spirale logisch und moralisch fragwürdiger Erzählungen im patriotischen Taumel weiter und lässt die behaupteten Sachzwänge der Tötungsmittelspirale inzwischen hinter sich.

    Die Auszeichnungen für das aktuell krummste „Argument“ muss wohl an Dominic Johnson gehen, der gestern in der taz in einem Kommentar mit dem eigenartig selbstbezüglichen Titel „Putins verquere Logik“ ein Aufrüstungsargument versucht, das, nun, verquer ist:

    Vielleicht hofft der russische Präsident, dass im Westen die üblichen Mahner weiter davor warnen, Russland zu „provozieren“ – so als ob Russland nicht schon unprovoziert schlimm genug agiert. Zu befürchten ist aber eher, dass diese Entwicklung gewollt ist. Putin zeichnet gegenüber dem russischen Volk ein Zerrbild des Westens als aggressive Kraft, die die russische Zivilisation im Namen der europäischen Liberalität zerstören will. Mit seiner Gewalt will er jetzt den Westen dazu bringen, diesem Zerrbild zu entsprechen – damit Russland als Führungsnation eines aggressiven „Antiwestens“ auftreten kann. Die Ukraine ist dafür Putins Fußabtreter.

    Gerade deswegen aber ist der Kurs, die Nato zu stärken, richtig und alternativlos.

    Kurz: „Unsere Aufrüstung ist gut für Putin. Lasst uns mehr aufrüsten!“ Und ich dachte, „wir“ sollten „Putin stoppen“?

    Vielleicht missverstehe ich Johnson aber auch. Ich komme ja schon bei der konventionelleren Begeisterung für Waffen und HeldInnen nicht recht mit, etwa wenn heute morgen in der DLF-Presseschau der Vorwurf des Münchner Merkurs wiederholt wurde:

    Schwere Waffen [...] will der Kanzler den heldenhaft gegen Putins Vernichtungsarmee kämpfenden Ukrainern weiterhin nicht liefern.

    Woher kommt so eine Denke, so eine Schreibe bei Leuten, die doch vor gerade mal acht Jahren mit einer Haltung von „bedauernswerte, verwirrte Schlafwandler” dem Kriegsgejubel und -kreditieren von 1914 gedacht haben?

    Wenn wir uns heute empören dürfen, jeden Kompromiss und jede Verhandlung ablehnen, dann durften es die Kaiser, Zaren, Könige und Präsidenten damals auch. Nicht vergessen: Die Zaren, Könige und Präsidenten waren mit Terroristen im Bund, die die geliebte Thronfolgerin für erhebliche Teile der heutigen Ukraine feige und brutal ermordet haben – von den imperialen Politiken überall in der Welt, die uns von unserem verdienten Platz an der Sonne fernhalten, mal ganz zu schweigen.

    Die Kaiser wiederum haben furchtbare Massaker bei ihren eigenen imperialen Abenteuern angerichtet und hielten große Teile ihrer Bevölkerung in bitterer Armut, während sie selbst in Saus und Braus lebten. Klar, dass das die Könige, Präsidenten und Zaren nicht hinnehmen konnten.

    Bullshit? Jaklar. Aber warum hören dann so viele Menschen bis hinein in die Linkspartei – für die ja der Burgfrieden quasi der Gründungsmythos ist – den heutigen Varianten solcher Erzählungen zu?

  • Von Geburtstagen und /etc/papersize

    Ich bin ein stiller Fan des Debian-Pakets installation-birthday. Das hat mir vorhin eine Mail geschrieben:

    Date: Mon, 11 Apr 2022 11:04:11 +0200
    From: Anacron <root@hostname-withheld>
    To: root@hostname-withheld
    Subject: Anacron job 'cron.daily' on hostname-withheld
    
    /etc/cron.daily/installation-birthday:
    
                      0   0
                      |   |
                  ____|___|____
               0  |~ ~ ~ ~ ~ ~|   0
               |  |           |   |
            ___|__|___________|___|__
            |/\/\/\/\/\/\/\/\/\/\/\/|
        0   |       H a p p y       |   0
        |   |/\/\/\/\/\/\/\/\/\/\/\/|   |
       _|___|_______________________|___|__
      |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
      |                                   |
      |         B i r t h d a y! ! !      |
      | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
      |___________________________________|
    
    
    Congratulations, your Debian system "hostname-withheld" was installed
    15 year(s) ago today!
    
    
    Best wishes,
    
    Your local system administrator
    

    Oh wow. So ein glatter Geburtstag ist doch eigentlich ein Grund zu feiern.

    Er ist aber auch ein Grund zum Nachdenken. Irgendwas kann da nicht stimmen. Bevor meine Haupt-Arbeitsmaschine (deren Filesystem so etwa aus dem Jahr 1996 stammt) ein Debian-System wurde, habe ich das selbst gestrickt und gebaut. Das habe ich mir 2007 ganz sicher nicht mehr angetan, denn die Zahl der auf einem durchschnittlichen Desktop-Linux verbauten Zeilen und irgendwie zusammenzufummelnden Komponenten war schon ein paar Jahre vorher deutlich jenseits meiner persönlichen Schmerzgrenze. Was aber ist dann 2007 passiert?

    Nun: wozu gibt es die Quellen? Im Fall von installation-birthday führt ein schneller Blick in die cron-Datei, die in der Mail erwähnt ist, auf ein Python-Skript, das das Installations-Datum berechnet als:

    for candidate in self.gen_installation_datetimes():
      # Use the oldest mtime we can find
      if dt is None or candidate < dt:
        self.log.debug("Preferring %s over %s", candidate, dt)
        dt = candidate
    

    gen_installation_datetime nun geht durch die Timestamps des Root-Filesystems, von /var/log/installer (gibts bei mir nicht), /var/log/bootstrap.log (auch nicht), /var/lib/vim (da kommt das Datum her und reflektiert so wohl eher irgendein Datum in der Entwicklung des Pakets, wahrscheinlich die Einführung formaler Addons), /root und /etc/machine-id (diese Datei ist von 2014, und eine kurze Recherche zeigt: Da habe ich zum ersten Mal versucht, mich mit systemd anzufreunden).

    So romatisch es ist, mein Systemalter anhand von vi-Hilfsdateien zu schätzen: Das will ich schon anders haben. Wie aber bekomme ich das Migrationsdatum raus?

    In meinem Dateisystem sind noch viele Dateien, die auf das selbstgestrickte Linux zurückgehen (und weitere, die von noch älteren Maschinen stammen, aber die beschränken sich auf /home), ich kann also nicht einfach nur die älteste Datei suchen. Es gibt aber eine interessante Häufung von Timestamps in /etc/ am 7. Juli 2005, darunter adduser.conf und papersize, die sehr nach etwas klingen, das Debian beim Überbügeln des Selbstbausystems angelegt haben könnte.

    Umgekehrt gibts davor eigentlich nichts, das irgendwie nach Debian aussieht; der Timestamp von /etc/papersize wird es dann wohl sein.

    Jetzt wollte ich es genauer wissen, und weil ich zu faul bin, aus der ls-Manpage oder sonstwoher rauszupopeln, wie ich ohne Code an die Uhrzeit der letzten Änderung herankomme, muss es ein Python-Einzeiler tun (ja, sowas gibts):

    $ python -c "import os, datetime; print(datetime.datetime.utcfromtimestamp(os.path.getmtime('papersize')))
    2005-07-07 12:48:37
    

    Also: am Donnerstag, 7.7.2005, so gegen drei am Nachmittag, habe ich offenbar meine Arbeitsmaschine auf Debian umgestelt. Uiuiui. Dass ich das Selbstbauen doch so lange durchgehalten habe, hatte ich gar nicht mehr in Erinnerung.

    Damit in Zukunft installation-birthday das richtige Datum nimmt, habe ich gerade noch:

    $ sudo touch -r /etc/papersize /var/log/installer
    

    gesagt. Damit gibt es ein /var/log/installer mit dem Timestamp von /etc/papersize, das jetzt installation-birthday das richtige Signal gibt:

    $ installation-birthday --verbosity 1
    I: Installation date: 2005-07-07
    

    Ich freue mich schon auf den 7.7. Das ist übrigens in diesem Jahr, wie schon 2005, wieder ein Donnerstag.

  • A Feedback Form in Pelican

    I realise that the great days of discussions on blogs are over, as Sam Hartman blogged the other day – at least for now. Still, I'd like to make it somewhat more straightforward to send me feedback on the posts here than having to get the contact address and dropping me a mail. Hence, I've written a little Python script, feedback, that lets people comment from within their web browsers.

    Nachtrag (2022-10-07)

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

    While the script itself is perfectly general and ought to work with any static blog engine, the form template I give in the module docstring is geared towards pelican and jinja, although only in very few places.

    To make it work, this needs to become a CGI (the template assumes it will show up in /bin/feedback according to the server configuration). The notes on deployment from my post on the search engine apply here, too, except that in addition the host has to be able to deliver mail. Most Unix boxes do locally, but whether anyone reads such mail is a different question.

    Is it ethical to check “ok to publish” by default?

    To configure where it sends mail to (by default, that's root, which may make sense if you have your own VM), you can set the CONTACT_ADDRESS environment variable (see the search engine post in case you're unsure how to do that for a web context). If your machine is set up to deliver mail to remote addresses – be it with a full mail server or using a package like nullmailer –, you could use your “normal” mail address here. In that case, you probably should inform people in your privacy policy that their comments will be sent by unencrypted mail, in particular if that “normal“ e-mail is handled by one of the usual rogues (Google still gets about a half of the mail I send – sigh).

    If you look below (or perhaps right if you run your browser full-screen), you will see that there is a checkbox “feel free to publish“ that, right now, I have checked by default. I had some doubts about that in terms of creepy antipatterns. Of course I am as annoyed by most contemporary cookie banners as anyone else, which in violation of the GDPR usually have practical defaults – sure: not what you get when you say “configure” – set at the maximum creep level the operators believe they can get away with. On the other hand, defaults should also be expectable, and I'd guess the expectation when someone fills out a reply form on a blog is that the response will be published with the article. If you disagree: well, the comment form is there for you.

    In terms of spam protection, I do an incredibly dumb textcha. Even if this script got deployed to a few dozen sites (which of course would be charming), I cannot see some spam engine bothering to figure it out; since it just sends a mail to the operator, there is basically nothing to be gained from spamming using the CGI. I fully expect this will be enough to keep out the dumb spambots that blindly send whatever forms they can find – it has worked on many similar services.

    Security Considerations

    The feedback script does at least two things that could be exploited:

    1. It enters remotely controlled values into rendered HTML and
    2. It calls a local binary with content controlled by the remote user.

    In case (1) – that's when I put the URI of the originating article into the reply message to send people back to where they came from –, this can potentially be exploited in cross-site attacks. Suppose you trust my site on only execute benign javascript (I give you that's close to an oxymoron these days), someone could trick you into clicking on a link that goes to my site but executes their, presumably adversarial, javascript.

    Bugs aside, the script is resilient against that, as it properly escapes any user input that gets copied into the output. That is thanks to my “micro templating“ that I keep around to paste into such one-script wonders. Have a look into the code if you're interested in how that works. And totally feel free to paste that into any Python code producing HTML or XML templated in any way – sure, it's not jinja or stan, but it has covered 80% of my templating needs at much less than 20% of the effort (counted in code lines of whatever dependency you'd pull in otherwise), which is a good deal in my book.

    Case (2) is probably a lot more interesting. In the evaluate_form function, I am doing:

    mail_text = MAIL_TEMPLATE.format(**locals())
    

    Code like this usually is reason for alarm, as far too many text formats can be used to execute code or cause other havoc – the cross-site thing I've discussed for HTML above being one example, the totally bizarre Excel CSV import exploit another (where I really cannot see how this doesn't immediately bring every Windows machine on this planet to a grinding halt). In this case, people could for example insert \ncc: victim@address into anything that gets into headers naively and turn the form into a spam engine.

    There are exactly 10000 lines if Python's email module in version 3.9.

    In addition, there is a concrete risk creating some way of locally executing code, as the template being filled out is then used as an input for a local program – in this case, whatever you use as sendmail. In theory, I'm pretty sure this is not a problem here, as no user-controlled input goes into the headers. If you change this, either sanitise the input, probably by clamping everything down to printable ASCII and normalising whitespace, or by parsing them yourself. The message content, on the other hand, gets properly MIME-encapsulated. In practice, I can't say I trust Python's email package too much, as by Python stdlib standards, it feels not terribly mature and is probably less widely used than one may think.

    But that's a risk I'm willing to take; even if someone spots a problem in the email module, shodan or a similar service still has no way to automatically figure out that it is in use in this form, and my page's insignificance makes it extremely unlikely that someone will do a targeted attack on day 0. Or even day 10.

    But then, perhaps this is a good occasion to read through email's source code? Fun fact: in python 3.9, a find . -name "*.py" | xargs wc -l gives exactly 10000 lines. And my instinct that headers are the trickiest part is probably right, too: 3003 of those are in _header_value_parser.py.

  • Ach Bahn, Teil 3: Ade, du schöne Lounge

    Heute morgen habe ich eine Mail bekommen, die ich zunächst für einen besonders dreisten 419 scam gehalten habe. Doch nein, der Absender und die Received-Header sahen alle glaubhaft aus. Die Bahn hat mir wirklich mitgeteilt:

    Um Ihre BahnBonus Statusvorteile nutzen zu können, ist ab dem 13.06.2022 die BahnBonus App erforderlich.

    und in den „FAQ“ (ich wette, dass einen ganzen Haufen davon nie ein realer Mensch gefragt hat, mal ganz zu schweigen von „frequently“) steht tatsächlich:

    Warum gibt es ab Einführung der Statuslevel die meisten Statusvorteile nur in der BahnBonus App?

    Der Wunsch nach digitalen Lösungen ist in den letzten Jahren stark gestiegen. Die Änderungen ab 13.06.2022 werden diesem Wunsch gerecht, weswegen die Prozesse alle rein digital umgesetzt werden.

    Wie? Weil der „Wunsch nach digitalen Lösungen“ (vgl. Antisprache Digitalisierung) zugenommen hat, zwingt die Bahn Leuten „Smartphones“ auf? Leute haben gewünscht, dass sie noch mehr Zirkus machen müssen an den Lounge-Eingangskontrollen? Ich glaube kein Wort und rufe die Antisprache Innovation auf.

    Und, natürlich:

    Mit welchen Betriebssystemen kann die BahnBonus App genutzt werden?

    Bei iOS erfordert die BahnBonus App Version 14.0 oder höher. Bei Android erfordert die BahnBonus App aktuell Version 8.0 oder höher und ab Einführung der BahnBonus Statuslevel im Juni Version 9.0 oder höher.

    Nun ist die Teilnahme an Kundenbindungsprogrammen nichts, dessen mensch sich gerne bezichtigt und das vielleicht auch nicht ganz verträglich ist mit Bedenken bezüglich informationeller Selbstbestimmung. Bahn-Bonus, das will ich hier ganz schnell betonen, war meine einzige Sünde in dem Bereich[1]. Und ja, es ist ohnehin nicht sonderlich nett, in Lounges Kakao zu schlürfen, während die ungewaschenen Massen draußen am Bahnsteig frieren. Insofern will ich hier keine große Moral aufmachen.

    I like both kinds of operating systems: the one where Apple is root and the one where Google is root.

    Dennoch war ich immer gerne in den Lounges, schon, weil ich in keiner anderen Kategorie von Raum so oft zufällig auf Bekannte gestoßen bin. Auch wenn das wegen der kompromittierenden Natur des Eingeständnisses, dass mensch bei der Datensammelei Bahn-Comfort mitmacht, nicht immer ganz unbeschwert war, weine ich diesen Dingern schon eine Träne oder zwei nach. Und drum habe ich, auch wenn ich immer noch auf eine sinnvolle Antwort zu meiner Anfrage zu Captchas an die Bahn vom letzten Jahr warte, nochmal eine Mail an die Bahn-Kundenbetreuung geschickt:

    Date: Tue, 5 Apr 2022 08:31:05 +0200
    Subject: Charmeoffensive

    Hallo,

    Ich denke mal, Sie werden heute viele Mails dieser Art bekommen, aber ich denke, es kann nicht oft genug gesagt werden: Dass in Zukunft der Deal "Daten gegen Dienste" mit entweder Apple oder Google nötig sein soll, um in die Lounges zu kommen, ist sicher keine Charmeoffensive der Bahn, zumal im Hinblick darauf, dass VielfahrerInnen wahrscheinlich eher datenschutzbewusster sind als die Durchschnittsbevölkerung.

    Können Sie nicht wenigstens den Quellcode der "App" veröffentlichen, so dass Leute den Kram auch auf normale Rechner portieren können? Oder, wenn das eh nur eine dünner Lack über eine API sein sollte, das Zeug auch als normale Webseite anbieten?

    Schon etwas fassungslos,

    Ich weiß nicht, was die Bahn antworten wird (aber schon, was nicht: den tatsächlichen Grund dieses Stunts – während Corona waren die Lounges doch immer leer?), aber nach meinen bisherigen Erfahrungen kann ich zuversichtlich vorhersagen, mit was die text/plain-Alternative der Mail anfangen wird. Nämlich:

    -webkit-box-shadow: 0px 4px 8px #828282; /*webkit browser
    */-moz-box-shadow: 0px 4px 8px #828282; /*firefox */box-shadow: 0px 4px
    8px #828282;line-height:1.15;width:467.700pt; padding:0pt 42.550pt 0pt
    85.050pt ; background-color: #FFFFFF; margin:auto.header{
    padding-top:36.000pt ;}.footer{ padding-bottom:31.200pt ;}.page-content{
    position:relative;padding-top: 62.650pt ;padding-bottom: 70.900pt
    ;min-height:708.350pt; ;}del {text-decoration:line-through;color:red;}
    ins {text-decoration:none;} .Hyperlink-H{color:#0000FF;}
    

    Und noch viele Zeilen weiter so. Das ist übrigens schon seit Jahren in dieser Weise kaputt. Besonders mysteriös finde ich dabei ja, warum in diesem CSS-dump ausgerechnet eine Regel für das del-Element enthalten ist, dem ich, so glaube ich, in der Wildnis noch nie begegnet bin. Rätsel über Rätsel bei der Bahn.

    Nachtrag (2022-04-06)

    Ha! Ich hatte recht. Zur Illustration des Ausmaßes an Murks empfehle ich einen Blick auf den ganzen text/plain-Anhang des Bahn-Supports (scrollt ein Stück nach unten, da kommt wirklich auch etwas Nicht-CSS, wenn auch sehr kreativ geklebt).

    Ich habe kurz überlegt, ob ich das vielleicht nicht öffentlich machen sollte, weil es ja erstmal eine private Mail ist. Aber dann ist mir aufgefallen, dass da überhaupt nichts Privates drinsteht. Die Bahn ist ja auf keinen meiner Punkte eingegangen und hat nur „F“AQ-Punkte zusammengeklickt. Und eine Urheberrechtsverletzung kommt schon wegen mangelnder Schöpfungshöhe nicht in Frage.

    Hinweis an der Stelle: Haufenweise Plastik ließe sich wunderbar vermeiden, wenn der Quellcode offen wäre und damit die Menschen nicht unbedingt Betriebssysteme bräuchten, die auf ihrer aktuellen Hardware gar nicht laufen. Aber wem predige ich das?

    Die Antwort: 030 2970, wie in der Mail empfohlen. Oder eher: ich habe das gerade versucht, mitsamt einer Erörterung meines Captcha-Problems. Tatsächlich habe ich nach etwas Interaktion mit einem Computer und nur zwei Minuten Warteschleifenmusik einen Menschen am Telefon gehabt. Dieser war hörbar glücklich, „Ich schicke Sie mal kurz in die Mobilitätsabteilung“ seufzen zu können. Mit der Mitarbeiterin dort hatte ich dann jede Menge Mitleid, weil sie mir in keinem meiner Anliegen auch nur einen Millimeter weit helfen konnte, während ich mit ihrem mehrfachen Angebot, mich im Umgang mit dem DB-Navigator zu schulen, schon deshalb nichts anfangen konnte, weil dieser auf keinem meiner Rechner läuft (von meiner Abneigung gegen unpaketierte Software mal ganz abgesehen).

    Überrascht war ich über diesen Ausgang natürlich nicht. Aber wenn ich hier schon so wohlfeiles wie berechtigtes Bahn-Bashing betreibe, wollte ich es wenigstens versucht haben.

    [1]Also gut, wenn ich schon beichte, dann gleich richtig: ich habe auch mal versucht, hinreichend Schnipsel von Samba-Deckeln zu sammeln, um ein Schneidbrett mit Rapunzel-Logo zu bekommen. Das hat aber leider nicht geklappt.
  • Erfolgskriterien

    Eine regelmäßige Leserin dieser Seiten hat mir zur Frage, wie sich im Augenblick Menschenleben gegen nationale Größe vergleichen eine Collage aus der taz vom 22. März geschickt. Da sie die sich aus dieser Abwägung ergebenden Maßstäbe für Erfolg schön beleuchtet, gebe ich das Dokument hier gerne weiter

  • View with Netsurf

    A screenshot of a browser window

    An early version of this post rendered in netsurf.

    I believe about the worst threat to software freedom these days is web browsers. That is not only because they already are, for many people out there, a more relevant applications platform than their primary operating system, and that almost everything that gets run in them is extremely non-Free software. I've been linking to a discussion of this problem from these pages since this blog's day one as part of my quip on “best viewed with javascript disabled“.

    No, they are also a threat because the “major” browser engines are so humunguous that they are in effect locking out most platforms (which simply don't have enough power to run them). And they are because the sheer size and complexity of their code bases make it essentially impossible for an individual to fix almost any relevant bug in them related to rendering, javascript execution, or network interactions.

    That is why I am so grateful to the authors and maintainers of both dillo (Debian: dillo) and netsurf (Debian: netsurf-gtk, mainly), small browsers with maintainable code bases. While dillo is really basic and is missing so much of CSS and modern HTML that on today's web even many non-adversarial sites become barely usable, netsurf is usually just fine for websites respecting user rights.

    Flex layouts and the article elements: The good part of 20 years of web development after the Web 1.0.

    I have to admit I nevertheless only use it in very specific contexts, mostly because luakit with its vi-like key bindings and lua extensiblity in the end usually wins out even though I don't trust the webkit rendering engine for two cents[1]. And that is why I hadn't noticed that this blog has rendered a lot worse than it should have in netsurf. This is particularly shameful because that was mostly because I have taken liberties with web standards that I should not have taken. Apologies: Netsurf was right and I was wrong.

    I have improved that quite a bit this morning. Given I am using flex layouts quite liberally here, and these don't work in Debian stable's netsurf, the rendered pages do look quite a bit different in netsurf than on the “major” browsers. But the fallbacks are ok as far as I am concerned. Since flex layouts are among the few “innovations“ in the post-Web 1.0 ecosystem that are actually a good idea, I gladly accept these fallbacks. Let me stress again that it is a feature of a friendly web rather than a bug that pages look different in different user agents.

    Dillo, regrettably, is another matter because of the stupid^Wunderconsidered colour games I'm playing here. As things are right now, the light background below text like this one sits on an HTML5 article element, which dillo ignores. Hence, the text is black on dark green, which, well, may be barely readable but really is deeply sub-optimal. Since I consider the article element and its brethren real progress in terms of markup (the other positive “innovation” post Web-1.0), I will not change that markup just to make this render better in dillo. I may finally re-think the silly dark green background soon-ish, though.

    [1]If you feel like this, too, let's team up and massage luakit's front end to work with netsurf's rendering engine. Given the close entanglement of luakit with the webkitgtk API, this certainly will result in a very different program, and almost certainly there would be no way to re-use luakit extensions. Still, I could very well see such a thing become my main browser.
  • Filmtipp: Z

    Filmstill: Französischer Text vor Fernschreiber

    Spoiler: Am Schluss des verbietet das Militär all diese Dinge: Die Beatles und Beckett ebenso wie „Gorki (und alle Russen)“ und „die Friedensbewegung“. Rechte: Valoria Films und andere.

    Als diverse Innenminister neulich verkündeten, den Buchstaben Z jenen verbieten zu wollen, die die falsche Geschmacksrichtung des Patriotismus bevorzugen, ging im Fediverse der Film Z – Anatomie eines politischen Mordes herum. Nun muss ich sagen, dass Patriotismus jeder Geschmacksrichtung mein entschlossenes Eintreten für die Redefreiheit schon etwas herausfordert, um so mehr, wenn er sich auf kriegsführende Parteien bezieht. Andererseits ist der Gedanke, Buchstaben in Abhängigkeit der Gesinnung der Schreibenden verbieten zu wollen, schon besonders wüst, und drum bin ich dem Filmtipp gefolgt (via dem youtube-Anonymisierer invidious).

    Und was soll ich sagen: Ich war hingerissen. Der Film entstand unter dem Eindruck der griechischen Militärregierung (1967-1974) im Wesentlichen unter exilgriechischen KünstlerInnen in Frankreich (die Musik etwa hat der kürzlich verstorbene Mikis Theodorakis beigesteuert), unterstützt von Großkulturellen wie Jorge Semprún und Superstars wie Yves Montand. Es ging – „Eventuelle Ähnlichkeiten zu wirklichen Ereignissen oder lebenden oder toten Personen sind nicht rein zufällig. Sie sind Absicht.“ – um die Genese einer offen autoritären Regierung im freien Westen, unter Beteiligung einer stramm autoritären Polizei, einer Stay-behind-Organisation und natürlich des Militärs.

    Und so wirkt nicht nur der abschließende Satz „Gleichzeitig verboten die Militärs […] den Buchstaben Z“ eigenartig prophetisch. Es gibt zum Beispiel bemerkenswerte Schnitte vom Bolschoi-Ballett für die Würdenträger gegen Einsätze von Prügelpolizei, die geradezu visionär die Bilder des G20-Gipfels von 2017 vorwegnehmen, als nämlich die Polizei rund ums Schanzenviertel und und die „rote Zone“ wasserwerferte, pfefferte und prügelte, während sich Putin, Trump, Xi, Temer, Macri, Peña Nieto, Zuma, Abe, Erdoğan, Juncker, Widodo und all die anderen „Verantwortungsträger“ in der Elbphilharmonie beschallen ließen.

    Auch der Kontrast zwischen äußerster Indifferenz der Polizei gegenüber rechter Gewalt und raschem Einsatz von „unmittelbarem Zwang“ gegen Linke kennt jedeR, der/die in der Vor-Lübcke-Bundesrepublik im weiteren Antifa-Umfeld unterwegs war (zugegeben hat der Lübcke-Mord da zumindest vorübergehend etwas bewegt). Die dauernden Behinderungen der Ermittlungsarbeit im Film durch Verfahrenshindernisse oder überraschend verscheidende ZeugInnen geben wiederum ein Bild ab, das stark an die NSU-Aufklärung (oder ihr Unterbleiben) erinnert. Ebenfalls vertraut sind die rechten Netzwerke in Polizei und Justiz (vgl. Hannibal und Uniter), die sich unter Schlagwörtern wie „Abendland“ (das A in Pegida) versammeln .

    Ich spoilere noch etwas mehr: Der unerschrockene, wenn auch vielleicht etwas schmierige Journalist, der viel zur Aufklärung der Geschehnisse beiträgt, bekommt am Ende „drei Jahre Gefängnis wegen Besitz offizieller Dokumente“. Das zumindest ist, verglichen mit unserer Realität, eher milde. Julian Assange sitzt bereits deutlich länger, und für Edward Snowden sieht es nach lebenslänglich Russland aus, was – nein, ich bin ganz gewiss kein Putin-Fan – zumindest noch im gleichen Stadion spielt wie equadorianische Botschaften und britische Knäste.

    Schließlich will ich noch ganz kurz den Gender-Aspekt einbringen: Während damals auf der autoritären Seite ausschließlich Männer zu sehen und vor allem zu hören sind, sprechen auf der liberalen Seite immerhin vereinzelnt auch Frauen, und zwar nicht nur als für oder über ihre Männer; zumindest insofern haben wir die Welt schon etwas geändert.

  • Hatte Marc Aurel Bandwürmer?

    Foto: Konservierte Bandwürmer in hohen Glasbehältern

    Bandwürmer im großartigen Naturhistorischen Museum in Wien: Den besonders lange in der Mitte soll sich der Arzt wohl so zur k.u.k.Zeit selbst gezogen haben. Auch „bei uns“ hatten also selbst wohlhabende Menschen noch vor recht kurzer Zeit beeindruckende Würmer.

    In den DLF-Wissenschaftsmeldungen vom 15. Februar ging es ab Sekunde 50 um römische Archäologie mit Bandwürmern. Ich gestehe ja einen gewissen Römerfimmel ein, und ich fand zudem die Passage

    In römerzeitlichen Fundstätten auf Sizilien wurden mehrfach konische Tongefäße ausgegraben. Bisherigen Interpretationen zufolge wurden darin Lebensmittel gelagert.

    vielversprechend im Hinblick auf mein Projekt interessanter Selbstkorrekturen von Wissenschaft, denn die neuen Erkenntnisse zeigen recht deutlich, dass zumindest eines dieser Gefäße in Wahrheit als Nachttopf genutzt wurde. Und deshalb habe ich mir die Arbeit besorgt, auf der die Kurzmeldung basiert.

    Es handelt sich dabei um „Using parasite analysis to identify ancient chamber pots: An example of the fifth century CE from Gerace, Sicily, Italy“ der Archäologin Sophie Rabinow (Cambridge, UK) und ihrer KollegInnen (DOI 10.1016/j.jasrep.2022.103349), erschienen leider im Elsevier-Journal of Archeological Science. Ich linke nicht gerne auf die, zumal der Artikel auch nicht open access ist, aber leider gibts das Paper derzeit nicht bei der Libgen.

    Publikationsethische Erwägungen beiseite: Diese Leute haben einen der erwähnten „konischen Tongefäße” aus einer spätrömischen Ruine im sizilianischen Enna hergenommen und den „sehr harten, weißlichen Rückstand von schuppigem Kalk“ („very hard whitish lime-scale deposit“) am Boden des Gefäßes untersucht. Vor allem anderen: Ich hätte wirklich nicht damit gerechnet, dass, was in einem lange genutzten Nachttopf zurückbleibt, schließlich diese Konsistenz bekommt.

    Nie wieder Sandalenfilme ohne Wurmgedanken

    Aber so ist es wohl, denn nachdem die Leute das Zeug in Salzsäure aufgelöst und gereinigt hatten, waren durch schlichte Lichtmikroskopie (mein Kompliment an die AutorInnen, dass sie der Versuchung widerstanden haben, coole und drittmittelträchtige DNA-Analysen zu machen) haufenweise Eier von Peitschenwürmern zu sehen – und das halte auch ich für ein starkes Zeichen, dass reichlich menschlicher Kot in diesem Pott gewesen sein dürfte. Auch wenn, wie die AutorInnen einräumen, keine Kontrollprobe der umgebenden Erde zur Verfügung stand, ist es nicht plausibel, wie Eier in dieser Menge durch nachträgliche Kontamination in den „harten, weißen Rückstand“ kommen sollten.

    Römer hatten – das war schon vor dieser Arbeit klar – nicht zu knapp Würmer. Alles andere wäre trotz der relativ ordentlichen Kanalisation in größeren römischen Siedlungen höchst erstaunlich, da auch in unserer modernen Welt die (arme) Hälfte der Menschheit Würmer hat (vgl. z.B. Stepek et al 2006, DOI 10.1111/j.1365-2613.2006.00495.x). Dennoch guckt sich so ein zünftiger Sandalenfilm (sagen wir, der immer noch hinreißende Ben Hur) ganz anders an, wenn mensch sich klar macht, dass die feschen Soldaten und fetten Senatoren alle des öfteren mal Würmer hatten. Und auch Caesars Gallischer Krieg oder Mark Aurels Selbstbetrachtungen erhalten, finde ich, eine zusätzliche Tiefe, wenn mensch sich vorstellt, dass in den Gedärmen jener, die da Kriegspropaganda oder stoische Philosophie betrieben, parasitische Würmer mitaßen.

    Forschungsprojekt: Wurmbefall in Köln vor und nach 260

    Nun schätzen Rabinow et al allerdings, dass ihre Rückstände wohl in der Mitte des fünften Jahrhunderts entstanden. Damals hatte die römische Zivilisation und damit auch ihre Kanalisation wahrscheinlich auch in Sizilien schon etwas gelitten. Die Kölner Eifelwasserleitung etwa – die eingestandenermaßen technisch besonders anspruchsvoll war und in einem besonders unruhigen Teil des Imperiums lag – haben „Germanen“ schon im Jahr 260 zerstört, und sie wurde danach nicht mehr in Betrieb genommen, obwohl Köln bis weit ins 5. Jahrhundert hinein eine römische Verwaltung hatte.

    Ich persönlich wäre überzeugt, dass, wer mit der Rabinow-Methode an entsprechend datierbare Überreste heranginge, mit dem Jahr 260 eine sprunghafte Erhöhung der Verwurmung in Köln feststellen würde. Insofern: Vielleicht hatten Caesar und Mark Aurel, zu deren Zeiten der römlische Wasserbau noch blühte, ja doch nicht viel mehr Würmer als wir im kanalisierten Westen?

    Ach so: Das mit dem Irrtum – „nee, die Teile hatten sie für Essen“ – war so wild in Wirklichkeit nicht. Wie üblich in der Wissenschaft waren die Antworten auch vorher nicht so klar. Rabinow et al schreiben:

    A recent study of material at the town of Viminacium in Serbia, where over 350 identically deep-shaped vessels are known, was able to confirm at least 3 potential uses: storage for cereals or water, burial urns, and chamber pots […]. Chamber pots clearly were also sometimes put to secondary use, for example as a container for builder’s lime […], while vessels initially destined for other purposes may have been turned into chamber pots.

    Nun, dann und wann kommen sogar Wissenschaft und „gesunder“ Menschenverstand zu recht vergleichbaren Ergebnissen.

  • Giving in to Network Effects

    In my first Fediverse notes, I mused that I'd choose a larger community if I had to choose again.

    Well, after watching the Fediverse for a little while, I figured that while I may not actually have to choose again, I really want to. My old community, social.dev-wiki.de, had about 650 profiles that had posted 4500 toots between them. This undoubtedely counts as small, and that has the double effect that not terribly many toots are coming in on the federated feed (I can't bring myself to write “timeline”) because people on the instance don't follow too many others, and that toots I produce don't get distributed very far because there are not many instances with people following someone on that small instance. A double negative network effect.

    This is particularly unwelcome when globally searching for hashtags (as I did last Sunday when I thought the local elections in Saarland might reflect in the Fediverse). Sure, I can help fix that by starting to follow accounts from other instances, but that's a bit of a chicken-and-egg thing, since in my own instance's feeds I don't even see those other accounts. Perhaps sitting on the public feed of the “flagship” instance (mastodon.social has about 640'000 profiles) for a while might have helped.

    Fediverse relays are a honking great idea.

    But it also felt odd to be behind the most active profile on that instance, and so I decided to compromise. That is, I don't give in to the pressures of the network effect altogether. I am therefore not switching to the flagship instance (which does feel a bit central-ish). But I am switching to troet.cafe, which boasts 2600 users (a factor of 4 over my old instance) with 150'000 posts (a factor of 30) between them. Plus, it uses a “relay“ that somewhat mitigates the problem outlined above by essentially creating a sub-federation of smaller instances exchanging public toots regardless of whether people on them follow each other.

    So, I made the move today.

    It is nice that Mastodon has built-in support for moving; there is an “Import and Export” item in the settings menu that guides one reasonably clearly through the process and transfers the followers (small deal on my profile at the moment). It is then that it gets a little lame.

    You see, I'd have expected that when I get an archive of my profile under “Export” I ought to be able to import it again under the new profile's “Import”. But that is not how it works; it seems the downloaded archive cannot be uploaded, and whatever is in there is either lost (the toots) or needs to be manually restored (profile pictures). Instead, what can be uploaded are CSVs of followed people, block lists and the like. And these are not in the archive one downloads but need to be downloaded from the old profile and re-uploaded to the new profile one by one.

    Is this really the way it's supposed to be? Have I missed something?

    Ok, one doesn't move every day, but if I keep being a Fedinaut, I will probably move again one day – to my own instance. It would be nice if by then there were smoother migration paths.

  • Jede vierte Stimme nicht im Parlament vertreten

    Balkendiagramm mit Wahlergebnis

    Stimmenanteile der verschiedenen Listen bei der Wahl im Saarland gestern. Wahlbeteiligung: 61.4%. Rechte beim Saarland.

    Mensch muss meine informationstheoretischen Bedenken vom letzten Oktober im Hinblick auf die repräsentative Demokratie nicht teilen, um die 5%-Hürde wirklich befremdlich zu finden: Warum genau sollten „Minderheiten“, denen deutlich mehr als jedeR zwanzigste StaatsbürgerIn angehören kann[1], nicht im Parlament vertreten sein?

    Dies ist eine sehr ernste Frage, wenn wer „die Bevölkerung“ im Parlament „abgebildet“ sehen will. Hinter diesem Bild von der Abbildung steht die (sicher zutreffende) Prämisse, dass da eben nicht ein „Volk“ einen Willen hätte und per Wahl eine Art kollektive Sprecherin gefunden hätte. Nein, dieses Bild erkennt an, dass die Regierten ein mehr oder minder buntes Häufchen Leute sind, die sich über allerlei Fragen ziemlich uneins sind. Sollen zumindest die wesentlichsten ihrer Perspektiven im Parlament reflektiert sein (an der Stelle kommt übrigens der Einspruch der Informationstheorie, denn es wird sicherlich mehr als 20 relevantere Perspektiven geben), fällt mir wirklich keine plausible Begründung mehr ein, warum eine Initiative, zu der sich schon mal fünf von hundert Menschen verabreden können, nicht nur nicht an Regierung beteiligt sein, sondern nicht mal eine Stimme im Parlament haben soll.

    26% der Bevölkerung machen die absolute Mehrheit im Parlament.

    Ein weiterer Seiteneffekt der 5%-Hürde hat gestern im Saarland besonders zugeschlagen. Wer nämlich die Stimmen aller von ihr aus dem Parlament gekickten Parteien zusammenzählt, kommt auf 23% (es sei denn, die Grünen rutschen doch noch rein). Wie in der Überschrift gesagt: Fast jede vierte Stimme ist damit nicht im Parlament vertreten. Das ist mehr als die Hälfte des Stimmenanteils der SPD (26% der Bevölkerung, 43.5% der abgegebenen Stimmen) und damit einer (unter diesen Umständen) sehr komfortablen absoluten Mehrheit. Dieses Viertel der WählerInnen sehen die, von denen sie sich vertreten lassen wollten – die z.B. für sie Parlamentsanfragen hätten stellen können – nicht im Parlament.

    Das ist bitter, denn bei aller Kritik an der Sorte Parlamentarismus, bei der die Exekutive bei Strafe ihres Untergangs die Legislative immer an der kurzen Kandare halten muss, sind gerade die Mittel der Opposition – die Anfragen ganz besonders – ein wichtiges Mittel politischer Einflussnahme. Hier in Baden-Württemberg z.B. fehlt die Linke im Landtag schon, weil auf diese Weise bis heute unklar ist, welche Bomben und Panzerfäuste die Polizei gekauft (und gar eingesetzt?) hat, nachdem ihr das die vorletzte Verschärfung des Polizeigesetzes erlaubt hat; die SPD, die die Verschärfung damals mit den Grünen zu verantworten hatte, geriert sich in dieser Angelenheit immer noch auffallend exekutiv.

    Zum praktischen Ärger tritt, dass selbst bei der – eigentlich im Sinne der Partizipation ausgegangenen – letzten Prüfung von Sperrklausen vor dem Bundesverfassungsgericht (2BvE 2/13 u.a., 2014-02-26) in der Urteilsbegründung noch die reaktionäre Klamotte durchschien, die Parteienvielfalt in der Weimarer Republik habe den Faschismus ermöglicht. In Randnummer 54 schreibt das Gericht verklausulierend:

    Eine große Zahl kleiner Parteien und Wählervereinigungen in einer Volksvertretung kann zu ernsthaften Beeinträchtigungen ihrer Handlungsfähigkeit führen.

    Die darunterliegende Erzählung war schon bei der Einführung der 5%-Hürde in den 1950er Jahren eine ebenso abwegige Schutzbehauptung wie entsprechende Behauptungen zur Inflation: Wer das Paktieren des SPD-Reichspräsidenten mit den reaktionärsten Elementen einer ohnehin in weiten Bereichen noch vormodernen Gesellschaft bereits in der Gründungsphase des Staates ansieht, wird sich eher fragen, wie es die halbwegs liberalen Institutionen überhaupt bis zur Machtübergabe 1933 geschafft haben.

    Weniger und besser regieren ohne die 5%-Hürde.

    Klar dürfte „das Regieren“ etwas mühsamer werden, wenn die Bevölkerung im Parlament feinkörniger vertreten ist. Aber die ganze Geschichte mit Demokratie und Volkssouveränität wurde auch nicht gemacht, damit es eine konkrete Regierung einfacher hat. Entstanden ist sie als Reaktion auf Rabatz, der wiederum Folge war von regelmäßig katastrophalem Agieren von Regierungen, die autoritären Versuchungen zu sehr nachgegeben haben.

    Dass mehr Partizipation (oder, wenn ihr wollt, Demokratie) es Regierungen schwerer macht, über Einwände signifikanter Teile der Regierten hinwegzuregieren: das ist kein Bug, das ist ein Feature. Und wenn ihr mal darüber nachdenkt, was z.B. die Bundesregierungen der letzten 20 Jahre so beschlossen haben – mal angenommen, es wären nur die 10% konsensfähigsten Gesetze durchgekommen: Wäre das nicht eine viel bessere Welt?

    Immerhin öffnet das oben zitierte Karlsruher Urteil die Tür für Verbesserungen recht weit, wenn es in RN 57 heißt:

    Eine einmal als zulässig angesehene Sperrklausel darf daher nicht als für alle Zeiten verfassungsrechtlich unbedenklich eingeschätzt werden. Eine abweichende verfassungsrechtliche Beurteilung kann sich ergeben, wenn sich die Verhältnisse wesentlich ändern. Findet der Wahlgesetzgeber in diesem Sinne veränderte Umstände vor, so muss er ihnen Rechnung tragen.

    Zum Abschluss doch nochmal Informationstheorie: die 5%-Hürde beschränkt ja die Zahl der maximal im Parlament vertretenen Parteien auf 20 (und das auch nur theoretisch, denn die Bevölkerung müsste schon extrem gut geplant abstimmen, um jeder Partei gerade genau 5% der Stimmen zukommen zu lassen). Der Zweierlogarithmus von 20 ist 4.322. Zu deutsch: Mit der Hürde ist der Informationsgehalt der Wahlentscheidung hart auf gut 4 bit gedeckelt. Aua.

    [1]Bei 100% Wahlbeteiligung und universellem Wahlrecht sind 5% ein Mensch von 20. Bei 60% Wahlbeteiligung wie im Saarland und gleichmäßiger Wahlausübung wären es eineR von 12, der/die nach der 5%-Logik vernachlässigbar wäre. Da die Wahlausübung stark mit der Zugehörigkeit zu Interessengruppen (z.B. bei Kindern: 0% Wahlbeteiligung…) korreliert, können aber noch weit größere Teile der Bevölkerung durch die 5%-Hürde ausgeschlossen sein.
  • 'Failed to reset ACL' with elogind: Why?

    As I've blogged the other day, I like having my machine's syslog on the screen background so I notice when the machine is unwell and generally have some idea what it thinks it is doing. That also makes me spot milder distress signals like:

    logind-uaccess-command[30337]: Failed to reset ACL on /dev/bus/usb/002/061: Operation not supported
    

    I've ignored those for a long time since, for all I can see, logind-like software does nothing that on a normal machine sudo and a few judicious udev rules couldn't do just as well – and are doing on my box. The only reason there's elogind (a logind replacement that can live without systemd) on my box is because in Debian, kio – which in bullseye 270 packages depend upon – depends upon something like logind. The complaints in the syslog thus came from software I consider superfluous and I'd rather not have at all, which I felt was justification enough to look the other way.

    But then today curiosity sneaked in: What is going on there? Why would whatever elogind tries break on my box?

    Well, the usual technique of pasting relevant parts of the error message into some search engine leads to elogind PR #47 (caution: github will run analytics on your request). This mentions that the message results from a udev rule that tries to match hotplugged devices with users occupying a “seat”[1]. The rule calls some binary that would make sure that the user on the “seat” has full access to the device without clobbering system defaults (e.g., that members of the audio group can directly access the sound hardware) – and to keep the others out[2]. The Unix user/group system is not quite rich enough for this plan, and hence a thing called POSIX ACLs would be used for it, a much more complicated and fine-grained way of managing file system access rights.

    Well, the udev rules mentioned in the bug indeed live on my box, too, namely in /lib/udev/rules.d/73-seat-late.rules, which has the slightly esoteric:

    TAG=="uaccess", ENV{MAJOR}!="", RUN{program}+="/lib/elogind/elogind-uaccess-command %N $env{ID_SEAT}"
    

    I frankly have not researched what exactly adds the uaccess tag that this rule fires on, and when it does that, but clearly it does happen in Debian bullseye. Hence, this rule fires, and thus the failing elogind-uaccess-command is started.

    But why does it fail? Well, let's see what it is trying to do. The great thing about Debian is that as long as you have a (proper) deb-src line in your /etc/apt/sources.list, you can quickly fetch the source code of anything on your box:

    cd /usr/src  # well, that's really old-school.  These days, you'll
                 # probably have your sources somewhere else
    mkdir elogind # apt-get source produces a few files
    cd elongind   # -- keep them out of /usr/src proper
    apt-get source elogind
    cd <TAB>  # there's just one child directory
    

    To see where the source of the elongind-uaccess-command would be, I could have used a plain find, but in cases like these I'm usually lazy and just recursively grep for sufficiently specific message fragments, as in:

    find . -name "*.c" | xargs grep "reset ACL"
    

    This brings up src/uaccess-command/uaccess-command.c, where you'll find:

    k = devnode_acl(path, true, false, 0, false, 0);
    if (k < 0) {
             log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_ERR, k, "Failed to reset ACL on %s: %m", path);
             if (r >= 0)
                     r = k;
     }
    

    Diversion: I like the use of the C ternary operator to emit a debug or error message depending on whether or not things failed because the device file that should have its ACL adapted does not exist.

    So, what fails is a function called devnode_acl, which does not have a manpage but can be found in login/logind-acl.c. There, it calls a function acl_get_file, and that has a man page. Quickly skimming it would suggest the prime suspect for failures would be the file system, as that may simply not support POSIX ACLs (which, as I just learned, aren't really properly standardised). Well, does it?

    An apropos acl brings up the chacl command that would let me try acls out from the shell. And indeed:

    $ chacl -l /dev/bus/usb/001/003
    chacl: cannot get access ACL on '/dev/bus/usb/001/003': Operation not supported
    

    Ah. That in fact fails. To remind myself what file system we are talking about, I ran mount | grep "/dev " (the trailing blank on the search pattern is important), which corrected my memory from “it's a tmpfs” to “it's a devtmpfs”; while it turns out that the difference between the two does not matter for the problem at hand, your average search engine will bring up the vintage 2009 patch at https://lwn.net/Articles/345480/ (also from the abysses from which systemd came) when asked for “devtmpfs acl”, and a quick skim of that patch made me notice:

    #ifdef CONFIG_TMPFS_POSIX_ACL
    (something)
    

    This macro comes from the kernel configuration. Now, I'm still building the kernel on my main machine myself, and looking at the .config in my checkout of the kernel sources confirms that I have been too cheap to enable POSIX ACLs on my tmpfses (for a machine with, in effect, just a single user who's only had contact with something like POSIX ACLs ages ago on an AFS, that may be understandable).

    Well, I've enabled it and re-built my kernel, and I'm confident that after the next reboot the elogind messages will be gone. And who knows, perhaps the thing may actually save me a custom udev rule or two in the future because it automagically grants me access to whatever I plug in.

    Then again: Given there's now an API for Javascript from the web to read USB devices (I'm not making this up) and at least so far I'm too lazy to patch that out of my browsers… perhaps giving me (and hence these browsers) that sort of low-level access is not such a good idea after all?

    [1]See Multiseat on Wikipedia if you have no idea what I'm talking about. If you've read that you can probably see why I consider logind silly for “normal” computers with either a single user or lots of users coming in through the network.
    [2]Mind you, that in itself is totally reasonable: it would suck if everyone on a machine could read the USB key you've just plugged into a terminal; except that it's a rare configuration these days to have multiple persons share a machine that anyone but an administrator could plug anything into.
  • Klarsprache: Abwägungen

    Foto: Mahnwache in Boston, Umhängeschild: Stop Bombing Iraq

    Im September 2000, kurz vor dem Ende von Albrights Amtszeit und der Wahl von George W. Bush: Eine Mahnwache gegen das Embargo gegen den und das „Flugverbot“ (mit regelmäßigen Bombardements, daher das Plakat) über dem Irak an der Park Street Station in Boston, Massachussetts.

    In der Nachricht über den Tod der ehemaligen US-Außenministerin Albright am DLF heißt es, Joe Biden habe sie gewürdigt als „Vorkämpferin für Demokratie und Menschenrechte“. Das ist auf den ersten Blick bemerkenswert, weil sich doch noch viele Menschen an Albrights Interview im US-Politmagazin 60 Minutes aus dem Jahr 1996 erinnern, in dem der Interviewer fragte:

    Wir haben gehört, dass eine halbe Million [irakische] Kinder [infolge der westlichen Sanktionen] gestorben sind. Sehen sie, das sind mehr Kinder als in Hiroshima gestorben sind. Und, na ja, war es diesen Preis wert?

    In einem klassischen Fall von Klarsprache hat Albright geantwortet:

    Ich denke, das war eine sehr schwere Entscheidung. Aber wir glauben, dass es den Preis wert ist.

    (Übersetzung ich; Original z.B. bei der newsweek). In meiner Zeit in den USA – Albright war damals „meine“ Außenministerin –, war dieses „the price is worth it“ ein geflügeltes Wort, um bei Demonstrationen und Mahnwachen wie der oben im Bild die mörderische, zynische und verlogene Realpolitik zu kommentieren und Zweifel zu äußern, wenn Kriege mit „aber die Menschenrechte“ (Kosovo, Albright und Bundeswehr dabei) oder „wir verteidigen uns“ (Irak, Bundeswehr noch nicht und Albright nicht mehr dabei) rechtfertigt wurden.

    Im Rückblick würde ich die Bestürzung über das „it was worth it“ gerne relativieren. Albright war wahrscheinlich nach Maßstäben ihrer Zunft wirklich relativ deutlich orientiert auf Menschenrechte und Demokratie, denn sonst hätte sie diese Antwort vermutlich nicht gegeben und stattdessen dem Industriestandard folgend in eine andere Richtung losgeschwafelt[1]. Insofern verdient sie Anerkennung dafür, die Maßstäbe der Zunft der äußeren Sicherheit klar zu benennen, denn die erlauben nun mal, zur Durchsetzung von „nationalen“ Interessen massenhaft Menschen zu töten. Das einzugestehen ist, so glaube ich heute, ethisch gegenüber dem sonst üblichen Fast Talk deutlich zu bevorzugen.

    Albrights Klarsprache mahnt uns, dass auch Saktionen fürchterliche Folgen haben können und wir daher gute Gründe für sie einfordern sollen („nationale Interessen“ sollten für nette Menschen nicht in die Kategorie „gut“ gehören), und dass „unsere“ Regierungen ebenso bereit sind, für ihre Interessen zu töten wie alle anderen auch.

    Deshalb, um kurz in die Gegenwart zu schalten, muss der Schluss aus dem Ukrainekrieg eben radikale Abrüstung sein und jedenfalls nicht mehr Gewaltmittel für Menschen, die sich gegentlich „schwere Entscheidungen“ abringen, die Tote im Millionenmaßstab – es starben ja in den 90ern auch nicht nur die Kinder im Irak, ganz zu schweigen von der Hinführung auf den dritten Golfkrieg, an dem im Irak immer noch viele Menschen sterben – nach sich ziehen.

    [1]Damit sind Dinge gemeint wie „das sagen die Russen“, „Handelswege sichern“, „Verlässlichkeit im Bündnis“ oder viele ähnliche Platitüden, die längst auswendig kann, wer regelmäßig die Interviews in den DLF-Informationen am Morgen hört.
  • Jost Bürgi, der Sinus und Umberto Eco

    Kryptische, leicht mathematisch aussehende Zeicnung

    „Reimers' Diagramm“: Für 400 Jahre der einzige Hinweis darauf, wie Jost Bürgi wohl seine Sinustabelle berechnet hat. Nicht mal Kepler hat das Rätsel lösen können.

    Ein Geheimnis, das im antiken Griechenland ein wenig angekratzt wurde, über das dann Gelehrte in Indien und Arabien nachgedacht haben, für das in der zweiten Hälfte des 16. Jahrhunderts ein wandernder Schweizer Uhrmacher eine genial einfache Lösung fand, von der aber die Nachwelt nur ein paar kryptische Referenzen hat, bis ein unerschrockener Wissenschaftler in den Tiefen längst vergessener Bibliotheken ein Manuskript entdeckt, das des Rätsels Lösung enthält: Es gibt Geschichten, die klingen nach einem Roman von Umberto Eco (oder, je nach Temperament und/oder Geschmack, Dan Brown) und sind doch wahr.

    Auf die Geschichte von Jost Bürgis Sinusberechnung bin ich über die DLF-Sternzeit vom 27.2.2022 gekommen, und sie geht ungefähr so: Nachdem Hipparchos von Nicäa so um die 150 vdcE[1] nicht nur den ersten brauchbaren Sternkatalog vorgelegt, sondern auch die ersten ordentlichen Rezepte angegeben hatte, wie mensch für jede Menge Winkel den zugehörigen Sinus[2] ausrechnet, gab es zur Berechnung trigonometrischer Funktionen sehr lange nicht viel Neues.

    Klar, der große Ptolomaios, genau, der mit dem Weltbild, hat Hipparchos' Methode zur Berechnung des Sinus über regelmäßige Vielecke kanonisiert. In Indien gab es einige Fortschritte – etwa den Übergang von der Sehne zum Sinus –, in Arabien wurden verschiedene Ergebnisse zusammengetragen und systematisiert, aber immer war es eine mühsame, geometrisch insprierte, endlose Rechnerei.

    Und dann kommen wir in die frühe Neuzeit in Europa, genauer die zweite Hälfte des 16. Jahrhunderts. Kopernikus hat noch einmal ganz klassisch den Sinus mit Vielecken berechnet, während er die Konflikte zwischen Ptolomaios und der Realität untersuchte. In Italien macht sich allmählich Galileo bereit, die Physik als experimentelle Naturwissenschaft zu etablieren. Und in Kassel, beim wissenschaftsbegeisterten hessischen Landgraf Wilhelm IV, sammeln sich ein paar Mathe- und Astro-Nerds, die beim ebenso berühmten wie fiesen Tycho gelernt haben, unter ihnen Nicolaus Reimers, der das kryptische Bild über diesem Post veröffentlicht hat, vermutlich, weil er versprochen hatte, nicht mehr zu verraten.

    Bürgis geniale Methode

    Es weist auf ein Verfahren zur Berechnung von Werten der Sinusfunktion hin, das nichts mehr mit den umschriebenen Polygonen des Hipparchos zu tun hat. Sein Erfinder, der Toggenburger Uhrmacher-Astronom-Erfinder Jost Bürgi, hatte zu dieser Zeit ein großes Tabellenwerk vorgelegt, mit dem mensch auch ohne Taschenrechner rausbekommen konnte, wie viel wohl sin(27 32’ 16’’) sei[3]. Offensichtlich funktionierte die Methode. Doch hat Bürgi – Autodidakt und vielleicht etwas verschroben – die Methode nie richtig veröffentlicht, und so brüteten MathematikerInnen, unter ihnen wie gesagt Johannes Kepler, der immerhin die Sache mit den Ellipsenbahnen im Planetensystem rausbekommen hat, lang über der eigenartigen Grafik. Und kamen und kamen nicht weiter.

    Das war der Stand der Dinge bis ungefähr 2014, als der (emeritierte) Münchner Wissenschaftshistoriker Menso Folkerts im Regal IV Qu. 38ª der Universitätsbibliothek in Wrocław auf eine lange übersehene gebundene Handschrift stieß. Ein wenig konnte er ihre Geschichte nachvollziehen: Jost Bürgi persönlich hatte das Werk Kaiser Rudolf II – dem Mäzen von Tycho und Kepler – am 22. Juli 1592 (gregorianisch) in Prag übergeben, was ihm eine Zuwendung von 3000 Talern eingebracht hat. Ich habe leider nicht die Spur eines Gefühls, wie sich der Betrag mit modernen Drittmittelanträgen vergleicht. Die Form des Antrags jedenfalls ist aus heutiger Sicht als unkonventionell einzustufen.

    Das Werk fand seinen Weg in das Augustinerkloster im unterschlesischen Sagan (heute Żagań). Wie es dort hinkam, ist nicht überliefert, aber mensch mag durchaus eine Verbindung sehen zu Keplers Aufenthalt in Sagan in den Jahren von 1628 bis 1630. Vielleicht hat er das Buch ja nach seinen Diensten in Prag mitgenommen, auf seinen verschiedenen Wanderungen mitgenommen und schließlich selbst im Kloster gelassen? Aber warum hätte er dann über Bürgis Methode gerätselt?

    Wie auch immer: Im Gefolge des Reichsdeputationshauptschlusses wurde das Kloster 1810 aufgelöst – ich stelle mir das ein wenig vor wie in Poes „Die Grube und das Pendel“ –, und der Bestand der Bibliothek fiel an die Universität Breslau, die wiederum nach dem zweiten Weltkrieg zur polnischen Uni Wrocław wurde.

    In diesem geschichtsträchtigen Manuskript erklärt Bürgi seinen Algorithmus. Dargestellt ist das in der Abhandlung von Folkerts et al (arXiv:1510.03180), in der sich auf den Seiten 11 und 12 auch die Auflösung für Reimers' Rätsel findet. Etwas schöner beschreibt das Verfahren Denis Roegel in seinem Aufsatz Jost Bürgi's skillful computation of sines. Dort wird auch Bürgis mutmaßliche Grundeinsicht besser erläutert, nach der der Sinus einfach das Ding ist, das, modern gesprochen, nach zweifacher Ableitung sich selbst (mal minus eins) ergibt. Das ist der mathematische Hintergrund dafür, dass folgendes Stück Python tatsächlich relativ schnell zu einer Tabelle der Sinuswerte von n im ersten Quadranten gleichverteilten Winkeln konvergiert:

    tot_sines = list(range(n+1))
    for iter_index in range(n_iter):
    
      intermediates = [tot_sines[-1]//2]
      for tot in reversed(tot_sines[1:-1]):
        intermediates.append(intermediates[-1]+tot)
    
      tot_sines = [0]
      for diff in reversed(intermediates):
        tot_sines.append(tot_sines[-1]+diff)
    
    return dict((k*math.pi/2/n,  v/tot_sines[-1])
      for k, v in enumerate(tot_sines))
    

    – es ist, glaube ich, unmöglich, zu verstehen, was hier passiert (und warum), ohne den Roegel oder zumindest den Folkerts gelesen zu haben. Aber ich könnte andächtig werden angesichts so simpler Manipulationen, die so schnell zu richtig vielen Stellen einer transzendenten Funktion wie des Sinus führen.

    Ein numerischer Traum

    Wie schnell das mit den vielen Stellen bei Bürgis Algorithmus geht, zeigt folgende Grafik:

    Heatmap, die recht gleichmäßig von Gelb nach Schwarz übergeht

    Hier läuft horizontal der Winkel – und der Algorithmus funktioniert wirklich nur, wenn das einen rechten Winkel einschließt –, vertikal die Iterationen von Bürgis Algorithmus. Die Farben entsprechen dem dekadischen Logarithmus der Abweichung der Bürgi-Ergebnisse von dem, was die Python-Standardbibliothek gibt, im Groben also die Zahl der Stellen, die der Algorithmus richtig hinbekommt. Mehr als 18 geht da schon mal nicht, weil die Zahlen von Python in 64-bittigen IEEE-Fließkommazahlen („double precision“) kommen, und mehr als 18 Dezimalstellen sind da nicht drin (in der Grafik steckt die Zusatzannahme, dass wir von Zahlen in der Größenordnung von eins sprechen).

    Mithin gewinnt der Algorithmus pro Iteration ungefähr eine Dezimalstelle, und das gleichmäßig über den ganzen Quadranten. DemoprogrammiererInnen: billiger kommt ihr, glaube ich, nicht an eine beliebig präzise Sinustabelle ran.

    Spannend fand ich noch die kleinen dunkelblauen Klötzchen ganz unten in der Grafik: Hier werden sich Bürgi und Python offenbar auf Dauer nicht einig. So, wie ich das geschrieben habe, würde ich fast eher Bürgi vertrauen, denn bei den Ganzzahlen, die da verwendet werden, kann eigentlich nichts schief gehen. Andererseits sind Fließkommazahlen eine heikle Angelegenheit, insbesondere, wenn es ums letzte Bit geht. Um mich zu überzeugen, dass es nur um genau jenes unheimliche letzte Bit geht, habe ich mir geschwind eine Funktion geschrieben, die die Fließkommazahlen vinär ausgibt, und der Code gefällt mir so gut, dass ich sie hier kurz zeigen will:

    import struct
    
    _BYTE_LUT = dict((v, "{:08b}".format(v)) for v in range(256))
    def float_to_bits(val):
      return "".join(_BYTE_LUT[v] for v in struct.pack(">d", val))
    

    Mit anderen Worten lasse ich mir geschwind ausrechnen, wie jedes Byte in binär aussehen soll (_BYTE_LUT), wobei die Python-Bibliothek mit dem 08b-Format die eigentliche Arbeit macht, und dann lasse ich mir die Bytes der Fließkommazahl vom struct-Modul ausrechnen. Der einzige Trick ist, dass ich das Big-end-first bestellen muss, also mit dem signfikantesten Byte am „linken“ Ende. Tue ich das nicht, ist z.B. auf Intel-Geräten alles durcheinander, weil die Bits in der konventionellen Schreibweise daherkommen, die Bytes aber (wie bei Intel üblich) umgedreht, was ein furchtbares Durcheinander gibt.

    Jedenfalls: Tatsächlich unterscheiden sich die Werte schon nach 20 Iterationen nur noch im letzten bit, was für 45 Grad alias π/4 z.B. so aussieht:

    45
      0011111111100110101000001001111001100110011111110011101111001101
      0011111111100110101000001001111001100110011111110011101111001100
    

    Ich lege mich jetzt mal nicht fest, was das „bessere“ Ergebnis ist; ich hatte kurz überlegt, ob ich z.B. mit gmpy2 einfach noch ein paar Stellen mehr ausrechnen sollte und sehen, welches Ergebnis näher dran ist, aber dann hat mich meine abergläubische Scheu vor dem letzten Bit von Fließkommazahlen davon abgehalten.

    Wer selbst spielen will: Meine Implementation des Bürgi-Algorithmus, der Code zur Erzeugung der Grafik und die Bitvergleicherei sind alle enthalten in buergi.py.

    [1]Das vdcE bringe ich hiermit als Übertragung von BCE, before the Christian era, in Gebrauch. Und zwar, weil v.Chr völlig albern ist (es ist ja nicht mal klar, ob es irgendeine konkrete Figur „Christus“ eigentlich gab; wenn, ist sie jedenfalls ganz sicher nicht zur aktuellen Epoche – also dem 1. Januar 1 – geboren) und „vor unserer Zeitrechnung“ ist auch Quatsch, denn natürlich geht Zeitrechnung (wenn auch mangels Jahr 0 etwas mühsam) auch vor der Epoche. „Vor der christlichen Epoche“ hingegen bringt ganz schön auf den Punkt, was das ist, denn die „Epoche“ ist in der Zeitrechnung einfach deren Nullpunkt (oder halt, vergurkt wie das alles ist, hier der Einspunkt).
    [2]Na ja, in Wirklichkeit hat er mit der Länge der Sehne gerechnet, die ein Winkel in einem Kreis aufspannt, aber das ist im Wesentlichen das Gleiche wie der Sinus, der ja gerade der Hälfte dieser Sehne entspricht.
    [3]Ich bleibe natürlich bei meiner Verurteilung …
  • Bienen wollen SaZu

    Foto: Blüte mit darauf rumlaufender Biene

    Diese Biene würde vielleicht schon zwischen den Staubbeuteln rumrüsseln, wenn die Blume sich nur etwas mehr Mühe beim Würzen gegeben hätte.

    In Marc-Uwe Klings Qualityland (helle Ausgabe in der Imperial Library) gibt es das großartige Konzept der FeSaZus, eines Nahrungsmittels, das zu je einem Drittel aus Fett, Salz und Zucker besteht und zumindest für das Proletariat von Qualityland in einigen – nicht zu vielen! – Darreichungsformen (FeSaZus im Cornflakesmantel, Muffins mit FeSaZu-Füllung, Schmalz-FeSaZus mit Speckgeschmack) eine wichtige Ernährungsgrundlage darstellt.

    Via den Wissenschaftsmeldungen vom 3.2.2022 in DLF Forschung aktuell bin ich nun auf den Artikel „Sodium-enriched floral nectar increases pollinator visitation rate and diversity“ von Carrie Finkelstein und KollegInnen (Biology Letters 18 (3), 2022, DOI 10.1098/rsbl.2022.0016) gestoßen, der recht überzeugend belegt, dass Insekten im Schnitt einen Geschmack haben, der sich vom Qualityländer Durchschnittsgeschmack gar nicht so arg unterscheidet.

    Finkelstein et al haben an der Uni von Vermont mindestens je zwölf Exemplare von fünf örtlich üblichen Blumenarten blühen lassen. Je Experiment (und davon gab es einige) haben sie sich pro Art sechs Individuen ausgesucht und mit Kunstnektar versehen. Bei dreien war das einfach eine 35%-ige Zuckerlösung, bei den anderen drei kam dazu noch 1% Kochsalz. In Wasser aufgelöst ist 1% Salz schon ziemlich schmeckbar. Ich habe darauf verzichtet, im Selbstversuch zu überprüfen, ob 1% Salz in so konzentriertem Sirup menschlichen Zungen überhaupt auffällt.

    Und dann haben sie gewartet, bis bestäubende Insekten kamen und diese gezählt. Das zentrale (und jedenfalls von außen betrachtet trotz etwas Voodoo bei der Auswertung auch robuste) Ergebnis: An den Pflanzen, die Salz anboten, waren doppelt so viele Insekten – am stärksten vertreten übrigens allerlei Sorten von Bienen – wie an denen, die das nicht taten, und zwar ziemlich egal, um welche Blume es nun gerade ging. Mit anderen Worten: Insekten sind nicht wild auf faden Nektar.

    Allerdings: So ein Faktor zwei in der Präferenz ist gar nicht so viel. Zwischen den BesucherInnenzahlen bei Schafgarbe (laut Paper 54.1 ± 6.3) und dem blutroten Storchschnabel (16.6 ± 3.5) liegt eher ein Faktor drei. Dennoch ist recht deutlich, dass die Insekten eher wenig Verständnis haben für Lauterbachs salzarme Ernährung. Dabei will ich nicht argumentieren, dass ein Durchschnittsmensch auf Dauer 150 mg Salz pro Kilogramm Körpergewicht und Tag essen könnte, ohne schließlich mit Hypertonie und Nierenversagen kämpfen zu müssen. Aber 10 oder 15 Gramm Salz am Tag kriegt mensch, wie Samin Nosrat in ihrem wunderbaren Kochbuch Salt, Fat, Acid, Heat (auch in der Imperial Library) ausführt, durch selbstsalzen oder auch den Salzgebrauch in selbstkochender Gastronomie, kaum hin[1]; salzarms Kochen und fades Essen mag mithin positive gesundheitliche Folgen haben, aber vermutlich kaum mehr als etwa der Einsatz von Himalayasalz, Voodoopuppen oder anderen potenten Placebos.

    Erfreulich fand ich im Paper noch die Aussage „All analyses were performed in R (v. 4.0.2)“ – dass auch in weniger technologieaffinen Wissenschaftsbereichen proprietäre Software (in diesem Fall ganz vornedran SAS und SPSS) auf dem Weg nach draußen ist, halte ich für eine ausgezeichnete Nachricht.

    Weniger schön fand ich das Bekenntnis, dass es in Anwesenheit von BiologInnen ganz offenbar gefährlich ist, einer unüblichen Spezies anzugehören:

    If we were unable to identify a floral visitor in the field, we collected it and stored it in 75% ethanol.

    Arme kleine Fliegen und arme VertreterInnen ungewöhnlicher Bienenarten. Wären sie stinknormale Honigbienen gewesen, hätten sie ihren Ausflug zu den verlockenden Blüten mit dem fein gesalzenen Nektar überlebt.

    [1]Nosrat argumentiert in ihrem Buch für mich zumindest plausibel (und durch meine eigene Kochpraxis bestätigt), dass Lauterbauchs Kritik am „Salzgeschmack“ zumeist am Thema vorbeigeht – in aller Regel vermittelt Kochsalz etwa durch Kontrolle von Osmolaritäten ziemlich nichttriviale Prozesse beim Garen und Verarbeiten von Lebensmitteln, und diese sind für den Geschmack der fertigen Speisen viel wichtiger als das Salz selbst. Aber das ist dann wirklich eine andere Geschichte.

« Seite 10 / 17 »

Letzte Ergänzungen