Als ich neulich meine Weisheit loswurde, nach der Radikalität wichtig,
aber Freundlichkeit wichtiger ist, habe als eine der wichtigen
Ausnahmen von „in gesellschaftlichen Fragen bitte nicht zu konsequent“
das Folterverbot genannt – und ich glaube wirklich, dass das unbedingt
gelten muss. Aktuelle Illustration: der Taser.
Elektroschocks sind eine extrem populäre Foltermethode, und Taser sind
schlicht Maschinen, um diese kompakt und schnell verabreichen zu können.
Punkt. Klar kann es sein, dass mensch als Polizist_in in Situationen
kommen mag, in denen Gewalt legitim erscheinen mag. Aber das ist
keine hinreichende Rechtfertigung für Folter, genauso wie es, sagen wir,
entführte Kinder nicht sind. Rechtfertige Folter in einem Fall, und
du bist auf dem klassischen slippery slope: Es wird sich immer noch eine
weiterer Fall finden, in dem Folter auch ok, am Schluss gar moralisch
geboten ist. Es gibt wirklich genug andere Sorten von Gewalt, die
mensch als Polizist_in anwenden kann.
Die faktische Verletzung des Folterverbots ist der eigentliche Grund,
warum mich die grausamen und tödlichen „Pilotversuche“ zu Tasern
überall in der Republik so entsetzen.
Ein weniger dramatischer Grund wird illustriert in der aktuellen
Geschichte, nach der eine Polizistin in Minneapolis mal wieder einen
Menschen aus Versehen umgepufft haben will: sie hätte sozusagen
danebengegriffen, hätte ihr Opfer nur foltern und nicht gleich töten
wollen (ok, das mit der Folter hat sie so nicht gesagt, sie bzw. der
Polizeichef hat wohl eher von „tasern“ geredet).
Mal abgesehen davon, dass ich hier guten Gewissens den Preis für die
dümmste Ausrede des Monats verleihen kann – wenn Taser wirklich
bedienungsgleich mit Polizeipistolen sind, dann müssen sich Hersteller,
Beschaffer_innen und Einsetzende Vulkanladungen von Asche aufs Haupt
streuen: Das ist genau das Problem. Die Polizistin fand ganz
offenbar, sie könne Tasern, weil das „nicht so schlimm” wie Schusswaffen
sei und so mit niedriger Schwelle angewandt werden kann. Also: sie
fand das nicht nur, sie hat einfach so gehandelt.
Genau diese Senkung der Hemmschwelle ist, weshalb Taser nicht gebaut
werden dürfen und sie schon gar nichts in den Händen von Polizist_innen
verloren haben. Sie ersetzen, jedenfalls gemäß der polizeilichen Logik
der Minneapolis-Rechtfertigung (und auch der Erfahrung von Amnesty),
keine Schusswaffen, sondern sie schaffen eine neue Klasse von scheinbar
weniger einschneidender gewaltförmiger Problembehandlung durch die
Polizei, und zu allem Überfluss noch eine, die anständige Menschen von
Folter nicht unterscheiden können.
I've upgraded my personal notebook – with a file system that has a
continuous history back to a slackware in 1996 and thus always is the
most rewarding thing to test upgrades on – to Debian bullseye today.
It's been a while since the last dist-upgrade messed up my X or rendered
a machine unbootable, but they still never fail to be exciting. This
one was no exception.
logind and systemd
The one major trouble as far as Debian proper is concerned was that the
full-upgrade pulled in systemd again (which I still can't get myself to
adopt on boxes I fiddle with a lot). This was because at some point I
had purged elogind (which doesn't do anything on this box), and both a
few KDE programs I have installed and the indispensable gparted need
policykit-1, which in turn pulls in some logind; if you don't have one,
apt will migrate you to systemd.
Well, it was easy to go back this time: Just say:
apt install elogind
apt install sysvinit-core
and all is back to normal again with the wonderful shell script goo
during system startup. Hooray for elogind! I will admit I've not
quite figured out what its actual use is, though. But that's probably
because I've never quite figured out policykit, which in turn is
probably because I think there's nothing wrong with sudo. But, as
you'll see in a second, I might be swayed.
Sure enough: Power
I'm running all kinds of interesting scripts when the machine goes
through various power states; for instance, I'm kill -STOP-ing a few
pieces of moving eye candy when the box loses grid power, and I'm
kill -CONT-ing them when the power is back. This happens through
shell scripts I've dropped into /etc/pm/power.d, from where pm-utils
has nicely been executing them for the last 10 years or so.
Alas, they didn't run any more after the upgrade. Instead, when I shut
the lid, the box would sleep right again after waking up. This last
thing was fixed quickly: Just tell elogind not to bother in
/etc/elogind/logind.conf.
That the pre-sleep and post-wakeup scripts still ran soothed my first
worry – that pm-utils might have had an RC- (release critical) bug
and dropped out of Debian. Going through pm-utils' /usr/share/doc info
made me worry again, though: the last upstream change there is from
2010, and the last Debian changelog entry is from 2019, mentioning an
open RC bug. Uh-oh. It seems I might soon need to try harder with
elogind.
But not just yet, as the trace to work this out was bug #772275 (oh
yes, the bug page for pm-utils makes we worry, too): pm-utils used to
receive the AC/Battery notification from acpi-support, and that
clearly broke in some way. At least for me, and with this upgrade.
Poking around a bit in /etc/apci didn't show an immediate hook; yes,
there's power.sh, but that gets called a lot on my box if the moon
is right (for Lenovo's crappy firmware at least), and one would need to
figure out whether or not there's grid power oneself.
So, I dug a bit deeper and noticed that ever since I've moved from
laptop-mode-tools to tlp, pm-utils were almost obsolete because tlp
actually does everything it does all without pm-utils – but it doesn't
let me run my beloved shell scripts (“by design“, its authors say).
Hence, it's not byebye to pm-utils yet.
But I like the way that tlp uses to be notified of power events:
through udev. Taking that thought a bit further so I don't have to do
any manual state management (as pm-utils doesn't have the equivalent of
tlp auto) and filter out power events for batteries (which I don't
care about), I ended up introducing two new udev rules that look
relatively generic to me:
Drop this into /etc/udev/rules.d/10local.rules (or so), and
pm-utils' power.d works again.
Another python2 grace time
But the real elephant in the room is that bullseye in effect drops
Python version 2. While this certainly does not come as a surprise, it
still hurts me a lot, because I have plenty of self-written larger or
smaller python2 programs – my audiobook-reader, my local wikipedia, my
work time accounting and a gazillion little other things. And there's
things like editmoin that haven't been ported yet either.
Well, I had hoped I could keep the buster python2 packages around,
perhaps even using the python-is-python2 package. But really, I don't
think that's an option for a halfway lively system (which will use
quite a few python3 packages). I gave up on that idea more or less as
soon as I realised that the python-docutils-common dependency (and
docutils I need left and right) will conflict between the docutils from
buster and from bullseye. Trying to keep buster packages will clearly
become incredibly fiddly.
So, instead I figured I ought to keep the legacy software alive while
finally porting it as I go along (one, my one-line CLI, I actually have
ported this morning) using a python2 “virtual” (yeah, right, virtual...)
environment.
Yes, virtual environments are evil all around, not only because their
content rots without anyone noticing; but then this is exactly about
letting things rot in a halfway controlled fashion, so I claim this is a
use case.
In case others mourn the demise of python2 in bullseye and want to go
slowly when migrating, here's what to do:
Make sure the python2 packages that still are in bullseye
are in place. This would be python2.7, python2.7-dev, and
presumably python-tk. Of course, you will want the virtualenv
package, but that's already python3.
Create the virtual environment:
virtualenv -p python2.7 ~/.legacy-python
Make it simple to use that. For that, add:
alias enable-oldpython='export PATH=~/.legacy-python/bin:$PATH'
to your .aliases (or whereever else you keep your aliases) and
exec bash in the current shell to try that out. This is when
you want want to run pip, or at any other time when you want your
python to be what's in the virtual environment.
But this won't work for hashbangs. To make that work, put a file
like:
somewhere into your path as, say, oldpython. Since I still have
some system-wide things using python2, I ended up sticking this into
/usr/local/bin. Given python2 has been out of security support
for more than a year now, I might be regretting that; on the other
hand, python's core hasn't had many security problems in the past 20
years, and so I figure I am fine. Caveat emptor, though.
Then, run pip install and/or python setup.py install to
your heart's delight. All this isn't forever, so this one time I
found myself capable of forgetting the long run, later upgrades, and
all that. Just remember: sudo and pip never mix, and they
particularly badly mix here. Oh: I actually found myself apt-get
source-ing python packages from buster and just running python
setup.py install in them because in my book that's a good deal
less obscure than pip.
Limping along with a private MoinMoin
But then came the bitter realisation: There's no moinmoin in bullseye
any more. That's a killer for at least three servers I'm operating.
And, really, looking at what the MoinMoin folks write on python3 (in
particular at its list of dependencies), I shudder in the expectation of
seeing something quite in line with my unpleasant experiences with
mailman2 happen with MoinMoin.
On my box, however, I can live with an aging service (that only
listens to localhost), and I can live with having moinmoin be a
CGI. In case these considerations (typically, for a “notes and
observations”-style wiki) apply to you as well, here's what I did to
make the legacy moinmoin run in my bullseye apache2.
First, I installed moinmoin into the “virtual” python 2.7 I created
above:
enable-oldpython # the alias above
pip install moin # no sudo!
Then I fixed the apache configuration to use that. So, I commented out the
previous MoinMoin integration and replaced it with something like:
<Directory /home/<YOUR USER NAME>/.legacy-python/share/moin/server>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
<Directory /home/<YOUR USER NAME>/.legacy-python/lib/python2.7/site-packages/MoinMoin/web/static/htdocs>
AllowOverride None
Require all granted
</Directory>
ScriptAlias /meiner /home/<YOUR USER NAME>/.legacy-python/share/moin/server/moin.cgi
Alias /wiki/ /home/<YOUR USER NAME>/.legacy-python/lib/python2.7/site-packages/MoinMoin/web/static/htdocs
Alias /moin_static1911 /home/<YOUR USER NAME>/.legacy-python/lib/python2.7/site-packages/MoinMoin/web/static/htdocs
Ich lese gerade recht viele der Biographien der Menschen, an die in
Heidelberg Stolpersteine erinnern, und dabei ist mir eins
ganz besonders aufgefallen: In dieser Zeit war die Ehe offenbar in der
Regel das effektive Ende des erzählenswerten Lebens einer Frau.
Während es nämlich durchaus viele bunte und schon rein vom Text her
lange Biographien unverheirateter Frauen gibt – ich erwähne hier nicht
erschöpfend Johanna Geißmar, die Schwestern Hamburger, Leeni
Preetorius oder natürlich Elise Dosenheimer –, beschränken sich die
Geschichten von verheirateten Frauen praktisch durchweg auf geboren,
geheiratet, Kinder gekriegt (oder nicht) – und dann entweder deportiert
und ermordet oder eben geflohen. Das geht so von den eher wohlhabenden
Hochherrs über die kleinbürgelichen Deutschs bis hin zu den
intellektuellen von Waldbergs und ändert sich allenfalls für die
Sozialdemokratin Käthe Seitz. Bei den meisten der Biographien ist
es eher noch ärger als bei diesen Beispielen.
Nun ist es wahrscheinlich, dass in dem Befund etwas historigraphischer
Bias reflektiert ist (also: Was wird überliefert?). Andererseits hat
eine Ehe die Möglichkeiten von Frauen tatsächlich drastisch
eingeschränkt, bis hin zu Trivialitäten wie einer Kontoeröffnung, und
die praktische Erwartung war wohl in aller Regel, dass sie in ihren
ehelichen Pflichten aufgingen.
Was mich daran gerade wirklich verblüfft: Gemäß praktisch der gesamten
Literatur (in der es wenig Schlimmeres zu geben scheint als „alte
Jungfer“ zu werden) und auch anekdotischer Überlieferung war die Heirat,
die „gute Partie“ wesentlichstes Lebensziel der breiten Mehrheit der
Frauen von damals. Klar, auch da dürfte die Geschichtsschreibung etwas
verzerren. Ganz gegen die tatsächlichen Erzählungen von damals
dürfte sie aber nicht stehen.
Doch wahrscheinlich sollte ich mich nicht sehr wundern. Denn auch
heute gibt es offenbar einen relativ breiten gesellschaftlichen Konsens
für Dinge, die ganz offenbar im Konflikt mit den Interessen der
allermeisten Mitglieder des Gesellschaft stehen: Autopolitik natürlich
(will eigentlich wirklich irgendwer täglich Stunden in einem stinkenden
Blechkäfig verbringen und endlos Krach machen?), oder die Privatisierung
der Rentenversicherung (die für eine deutlich ungleichere Verteilung des
für Alte bereitgestellten gesellschaftlichen Reichtums und ansonsten
über Quatsch-Investments der Rentenfonds noch für Shopping-Malls überall
sorgt), oder halt den ganz fundamentalen Wahnsinn, bei dem der Abbau von
Arbeitsplätzen („weniger Leute müssen ihre Zeit mit Zeug verbringen, den
sie gar nicht tun wollen“) als gesellschaftliche Katastrophe empfunden
wird.
Oh, falls das nicht offensichtlich ist: Klar kann es eine persönliche
Katastrophe sein, gefeuert zu werden. Solange aber vorher und nachher
gleich viel hergestellt wird, gilt das nur, weil wir die Warenverteilung
an Lohnarbeit gekoppelt haben, und das ist eine Wahl, die wir als
Gesellschaft auch anders vornehmen können. Und sollten, in Zeiten, in
denen die Produktion so wenig Arbeit braucht, dass, wie David Graeber so
treffend beobachtet, Bullshit Jobs die Regel geworden sind.
Seit einiger Zeit blättere ich öfter mal in Shoshana Zuboffs Age of
Surveillence Capitalism und finde es immer wieder nützlich und
gleichzeitig verkehrt. Dazu will ich etwas mehr schreiben, wenn ich
es ganz gelesen habe, aber jetzt gerade hat mich ihr Generalangriff auf
den Behaviorismus – auch der gleichzeitig richtig und falsch – wieder
an einen Gedanken aus Bertrand Russells A History of Western
Philosophy erinnert, der mich immer wieder beschäftigt – und den ich
sehr profund finde. Im Groben: „In politischen Theorien ist
Menschlichkeit wichtiger als Stringenz”. Oder: das „worse is better“
der Unix-Philosophie, das mensch trefflich kritisieren kann, ist
zumindest fürs politische Denken in der Regel angemessen.
Was ist eigentlich eine Menge?
Gegenstück zu worse is better: Eine LISP-Maschine im MIT-Museum.
Dabei konnte Russell beeindruckend stringent denken, etwa auf den paar
hundert Seiten, die er in den Principia Mathematica füllte, um sich
der Richtigkeit von 1+1=2 zu versichern.
Oder auch in der Russell'schen Antinomie, die ich in meinen
Einführungsvorlesungen in die formalen Grundlagen der Linguisitk immer
zur Warnung vor der naiven Mengendefinition – eine Menge sei ein Haufen
von „Objekten unserer Anschauung oder unseres Denkens“ – gebracht habe.
Wäre diese Definition nämlich ok, müsste es auch die Menge aller
Mengen geben, die sich nicht selbst enthalten. Nennen wir sie mal Ξ
(ich finde, das große Xi ist in Mathematik und Physik deutlich
unterverwendet). Die wesentliche Frage, die mensch einer Menge stellen
kann ist: Ist irgendwas in dir drin, also: „x ∈ Ξ“?
Und damit kommt Russells geniale Frage: Ist Ξ ∈ Ξ oder nicht? Schauen
wir mal:
Wenn Ξ ∈ Ξ gälte, enthält Ξ sich selbst, ist also nicht in der Mengen
aller Mengen, die sich nicht selbst enthalten, entgegen der Annahme in
diesem Spiegelstrich.
Ist aber Ξ ∉ Ξ, so enthält sich Ξ nicht selbst, wäre es also in der
Menge aller Mengen, die sich nicht selbst enthalten und müsste sich
also selbst enthalten. Passt wieder nicht.
Brilliant, oder? Die Lösung dieser „Russell'schen Antinomie“ ist
übrigens, sich bei der Definition von „Menge“ etwas mehr Mühe zu
geben.
Wer das nachvollzogen hat, wird wohl die Weisheit von Russells
Entscheidung erkennen, nach den Principia Mathematica eher
konventionelle Philosophie zu betreiben. In diesem Rahmen hat er 1945
seine überaus lesbare Darstellung der „westlichen“ Philosophie
veröffentlicht, in der er sich deutlich als Fan von John Locke outet, den
„apostle of the Revolution of 1688, the most moderate and the most
successful of all revolutions“, erfolgreichst, denn „no
subsequent revolution has hitherto been found necessary in England.“
Über das „found necessary“ könnte mensch angesichts des Elends, das
noch in den Werken von George Orwell – geschrieben, während Russell in
den 1940ern an seiner History arbeitete – deutlich wird, sicher
streiten, aber vielleicht ist das durch „most moderate“ noch hinreichend
abgedeckt.
Vernünftig vs. Widerspruchsfrei in der politischen Doktrin
Viel wichtiger ist mir aber Russells Beobachtung: „Pragmatically, the
theory was useful, however mistaken it may have been theoretically. This
is typical of Locke's doctrines.“ Etwas später sagt er: „No one has yet
succeeded in inventing a philosophy at once credible and
self-consistent. Locke aimed at credibility, and achieved it at the
expense of consistency. Most of the great philosophers have done the
opposite.“
Also in etwa: in der Philosophie – und da würde ich etwas hinter Russell
zurückgehen wollen und sagen: Politik und Soziologie – gibt es nicht
gleichzeitig „glaubwürdig“ (sagen wir lieber: menschlich) und
widerspruchsfrei. Ich glaube, Russell kam zu diesem desillusionierten
Einsichten aus Enttäuschung mit der russischen Revolution, deren
Scheitern, jedenfalls im Sinne von Freiheit, Gleichheit und
Solidarität für die Bürger_innen der Sowjetunion, er wahrscheinlich mit
übermäßiger ideologischer Strenge erklärte; jedenfalls führte er
Lockes gedankliche Geschmeidigkeit zurück auf dessen Erfahrungen des
britischen Bürgerkriegs der 1640er Jahre.
Immer wieder spottet Russell freundlich über Lockes, nun, Liberalität,
so etwa, wenn Hume einen schlimmen Irrtum beging, weil er „a better
intellect than Locke's, a greater acuteness in analysis, and a smaller
capacity for accepting comfortable inconsistencies“ hat. Oder wenn er
Lockes Methode so umschreibt:
[Er ist] always willing to sacrifice logic rather than become
paradoxical. He enunciates general principles which, as the reader can
hardly fail to perceive, are capable of leading to strange
consequences; but whenever the strange consequences seem about to
appear, Locke blandly refrains from drawing them. To a logician this
is irritating; to a practical man, it is a proof of sound judgement.
Was ich daraus mache: Wenn du über die Gesellschaft nachdenkst und du
kommst auf Menschenfresserei, müssen deine Ausgangsgedanken nicht
unbedingt Quatsch sein – das kann schon mal passieren, wenn ein Haufen
Leute sich streiten. Du solltest aber trotzdem nicht Menschenfresser_in
werden.
Freundlichkeit vs. Radikalität in der politischen Praxis
Eine derzeit ganz naheliegende Anwendung: So sehr es scheiße ist, wenn
Leute an eigentlich vermeidbaren Krankheiten sterben: Die autoritäre
Fantasie, einfach alle einzusperren, bis die SARS-2-Pandemie vorbei ist,
ist schon deshalb nicht menschenfreundlich, weil so ein Präzedenzfall
zu inflationären Forderungen nach ähnlich autoritären Maßnahmen führen
wird (alles andere mal beiseitegelassen). Umgekehrt führt das
unbedingte Bestehen auf Grundrechten wie Freizügigkeit, die
Zurückweisung staatlicher Autorität, auch wo diese nicht immer so
richtig wissenschaftlich unterfüttert ist, zu einem schlimmen Gemetzel.
Es bleibt, sich da irgendwie durchzumogeln (und das, ich gebs immer noch
nicht gerne zu, hat die Regierung recht ordentlich gemacht), und das
ist wohl, was was Russell an Locke mag.
Also: Im realen Umgang mit Menschen ist Freundlichkeit oft wichtiger als
Konsequenz. Dass Russell, obwohl er fast jeden Gedanken von Locke
widerlegt, seine gesamte Lehre sehr wohlwollend betrachtet, ist eine
sozusagen rekursive Anwendung dieses Prinzips.
Leider, und da kommen wir beinahe auf die Russell'sche Antinomie zurück,
bin ich aber überzeugt, dass auch die Mahnung, es mit den Prinzipien
nicht zu
weit zu treiben, dieser Mahnung selbst unterliegt. Folterverbot oder
Ausschluss der Todesstrafe etwa würde ich gerne unverhandelbar sehen.
Locke hätte mit dieser fast-paradoxen Selbstanwendung von
Nicht-Doktrinen auf Nicht-Doktrinen bestimmt keine Probleme gehabt. Bei
mir bin ich mir noch nicht ganz sicher.
Aber ich versuche, Zuboff mit der Sorte von Wohlwollen zu lesen, die
Russell für Locke hatte.
Nachtrag (2021-04-10)
Weil ich gerade über irgendeinen Twitter-Aktivismus nachdenken
musste (bei dem jedenfalls für mein Verständnis allzu oft gute Absichten
zu böser Tat werden), ist mir aufgefallen, dass meine
Russell-Interpretation eigentlich zusammenzufassen ist mit: „Radikalität
ist wichtig, aber Freundlichkeit ist wichtiger“. Das hat mir auf Anhieb
gefallen, weshalb ich es auch gleich als TL;DR über den Artikel gesetzt
habe.
Dann habe ich geschaut, ob duckduckgo diesen Satz kennt.
Erstaunlicherweise nein. Auch bei google: Fehlanzeige. Ha!
Und je mehr ich darüber nachdenke, gerade auch im Hinblick auf ein paar
Jahrzehnte linker Politik: RiwaFiw hätte vieles besser gemacht, und,
soweit ich sehen kann, fast nichts schlechter.
„Jetzt ist aber wirklich höchste Zeit, dass Corona endlich mal weggeht“
ist inzwischen ein universelles Sentiment, und auch mich lockt
gelegentlich die autoritäre Versuchung, einen „harten Lockdown“ zu
wünschen, damit das Ding weggeht (was es natürlich nicht täte). Der
Hass auf SARS-2 steigt, und damit womöglich auf Viren allgemein.
In der Tat scheinen Viren erstmal richtig doof, eklig und widerwärtig.
Wie scheiße ist das eigentlich, sich von den Zellen vertrauensvoll
aufnehmen zu lassen und dann den Laden zu übernehmen mit dem
einzigen Ziel, neues Virus zu machen? Und dann die Ähnlichkeit von z.B.
der T2-Bakteriophage mit Invasoren vom Mars...
Andererseits bin ich überzeugt, dass eine gewisse Anfälligkeit gegen
Viren wahrscheinlich ein evolutionärer Vorteil ist. Da gibts bestimmt
jede Menge echte Wissenschaft dazu, aber ich denke, eine einfache
Intiution geht auch ohne: Praktisch alle Viren nämlich wirken nur auf
kurze Distanz in Zeit und Raum (verglichen etwa mit Pflanzenpollen, aber
sogar mit vielen Bakterien), werden also im Wesentlichen bei Begegnungen
übertragen. Da die Wahrscheinlichkeit von Begegnungen mit dem Quadrat
der Bevölkerungsdichte geht, sollten Viren explodierende Populationen
„weicher“ begrenzen als leergefressene Ressourcen und so wahrscheinlich
katastrophalen Aussterbeereignissen vorbeugen.
Vorneweg: Ja, das klingt alles erstmal wild nach Thomas Malthus.
Dessen Rechtfertigung massenhaften Sterbenlassens ist natürlich
unakzeptabel (ebenso allerdings wie das fortgesetzte Weggucken von den
Meadows-Prognosen, die in der Regel auch katastrophale Zusammenbrüche
erwarten lassen).
Dies aber nicht, weil falsch wäre, dass in endlichen Systemen der
Ressourcengebrauch nicht endlos steigen kann; das ist nahe an einer
Tautologie. Nein, Malthus' Fehler ist der der Soziobiologie, nämlich
menschliche Gesellschaft und menschliches Verhalten an Funktionsweisen
der Natur auszurichten. Wer das will, wird recht notwendig zum
Schlächter, während umgekehrt die Geschichte der letzten 100 Jahre
überdeutlich zeigt, wie (sagen wir) Wachstumszwänge diverser Art durch
mehr Bildung, mehr Gleichheit und vor allem durch reproduktive
Selbstbestimmung von Frauen ganz ohne Blutbad und unter deutlicher
Hebung der generellen Wohlfahrt zu beseitigen sind.
Bei Kaninchen ist das aber, da muss ich mich leider etwas als Speziezist
outen, anders. Und daher habe ich mir Modellkaninchen für ein weiteres
meiner Computerexperimente herausgesucht, ganz analog zu den Schurken
und Engeln.
Die Fragestellung ist: Werden Ausschläge in Populationen wirklich
weniger wild, wenn Viren (also irgendwas, das Individuen nach
Begegnungen mit einer gewissen Wahrscheinlichkeit umbringt) im Spiel
sind?
Um das zu untersuchen, baue ich mir eine Spielwelt (wer mag, kann auch
„modifiziertes Lotka-Volterra-Modell“ dazu sagen) wie folgt:
Es gibt 1000 Felder, auf denen Gras wachsen kann oder nicht.
In der Welt leben Kaninchen, die pro Periode ein Grasfeld leerfressen
müssen, damit sie glücklich sind.
Haben Kaninchen mehr Gras als sie brauchen, vermehren sie sich, und
zwar um so mehr, je mehr Extrafutter sie haben (so machen das
zumindest Rehe).
Haben Kaninchen zu wenig Gras, sterben ein paar.
In jeder Periode verdoppelt sich die Zahl der Grasfelder (sagen wir: durch
Aussaat), bis alle 1000 Felder voll sind.
In Code sieht die Berechnung der Vermehrungsrate der Kaninchen so aus:
Wer den Verlauf der Vermehrungsrate mit dem Gras/Kaninchenverhältnis
γ auf der Abszisse sehen will:
Um dieses Modell zu rechnen, habe ich ein kleines Python-Programm
geschrieben, lv.py, das, mit anfänglichen Zahlen von Gras und
Kaninchen aufgerufen, den Verlauf der jeweiligen Populationen im Modell
ausgibt (nachdem es die Anfangsbedingungen etwas rausevolvieren hat
lassen).
Wie bei dieser Sorte von Modell zu erwarten, schwanken die Populationen
ziemlich (außer im Fixpunkt Kaninchen=Gras). So sieht das z.B. für
python3 lv.py 400 410 (also: anfänglich ziemlich nah am
Gleichgewicht) aus:
Das sieht nicht viel anders aus, wenn ich mit einem Kaninchen-Überschuss
anfange (python3 lv.py 400 800):
oder mit einem Gras-Paradies (python3 lv.py 800 150):
Aus Modellsicht ist das schon mal fein: Recht unabhängig von den
Anfangsbedingungen (solange sie im Rahmen bleiben) kommen zwar
verschiedene, aber qualitativ doch recht ähnliche Dinge raus: die
Kaninchenpopulationen liegen so zwischen 250 und 600 – im anfänglichen
Gras-Paradies auch mal etwas weiter auseinander – und schwanken wild von
Schritt zu Schritt.
Jetzt baue ich einen Virus dazu. Im lv.py geht das durch Erben vom
LV-Modell, was auf die LVWithVirus-Klasse führt. Diese hat einen
zusätzlichen Parameter, deadliness, der grob sagt, wie
wahrscheinlich es ist, dass ein Kaninchen nach einer Begegnung mit einem
anderen Kaninchen stirbt. Die Mathematik in der propagate-Methode,
würde etwa einem Bau entsprechen, in dem sich alle Kaninchen ein Mal
pro Periode sehen. Das ist jetzt sicher kein gutes Modell für
irgendwas, aber es würde mich sehr überraschen, wenn die Details der
Krankheitsmodellierung viel an den qualitativen Ergebnissen ändern
würden. Wichtig dürfte nur sein, dass die Todesrate irgendwie
überlinear mit der Population geht.
lv.py lässt das Modell mit Virus laufen, wenn es ein drittes
Argument, also die Tödlichkeit, bekommt. Allzu tödliche Viren löschen die
Population aus (python3 lv.py 800 150 0.05):
Zu harmlose Viren ändern das Verhalten nicht nennenswert
(python3 lv.py 800 150 1e-6):
Interessant wird es dazwischen, zum Beispiel python3 lv.py 800 150
2.1e-4 (also: rund jede fünftausendste Begegnung bringt ein Kaninchen um):
– wer an die Beschriftung der Ordinate schaut, wird feststellen, dass
die Schwankungen tatsächlich (relativ) kleiner geworden sind.
Das Virus wirkt offenbar wirklich regularisierend.
Wir befinden uns aber im Traditionsgebiet der Chaostheorie, und so
überrascht nicht, dass es Bereiche der Tödlichkeit gibt, in denen
plötzlich eine starke Abhängigkeit von den Anfangsbedingungen entsteht
und sich die Verhältnisse weit in die Entwicklung rein nochmal
grundsätzlich ändern können („nicht-ergodisch“). So etwa python3
lv.py 802 300 0.0012:
gegen python3 lv.py 803 300 0.0012:
Ein Kaninchen weniger am Anfang macht hundert Schritte später plötzlich
so ein gedrängeltes, langsames Wachstum.
Warum ich gerade bei 0.0012 geschaut habe? Nun ich wollte einen
Überblick über das Verhalten bei verschiedenen Tödlichkeiten und habe
darum stability_by_deadliness.py geschrieben, das einfach ein paar
interessante Tödlichkeiten durchprobiert und dann die relative
Schwankung (in Wirklichkeit: Standardabweichung durch Mittelwert) und
den Mittelwert der Population über der Virustödlichkeit aufträgt:
– das sieht sehr gut aus für meine These: Mit wachsender Tödlichkeit
des Virus nimmt die relative Streuung der Population ab, irgendwann
allerdings auch die Population selbst. Ganz links im Graphen gehts
durcheinander, weil sich dort chaotisches Systemverhalten mit kleinen
Zahlen tifft, und dazwischen scheint es noch ein, zwei Phasenübergänge
zu geben.
Leider ist dieses Bild nicht wirklich robust. Wenn ich z.B. die
Anfangsbedingungen auf 600 Gras und 250 Kaninchen ändere, kommt sowas
raus:
– die meisten der Effekte, die mich gefreut haben, sind schwach oder gar
ganz weg – wohlgemerkt, ohne Modelländerung, nur, weil ich zwei
(letztlich) Zufallszahlen geändert habe.
Mit etwas Buddeln findet mensch auch das Umgekehrte: wer immer mit 170
Gras und 760 Kaninchen anfängt, bekommt einen Bereich, in dem die
Populationen mit Virus größer sind als ohne, während gleichzeitig die
relative Schwankung nur noch halb so groß ist wie ohne Virus.
Dazwischen liegt ein 1a Phasenübergang:
Mensch ahnt: da steckt viel Rauschen drin, und auf der anderen Seite
höchst stabiles Verhalten, wo mensch es vielleicht nicht erwarten würde
(bei den hohen Tödlichkeiten und mithin kleinen Zahlen). Wissenschaft
wäre jetzt, das systematisch anzusehen (a.k.a. „Arbeit“). Das aber ist
für sehr ähnliche Modelle garantiert schon etliche Male gemacht worden,
so dass der wirklich erste Schritt im Jahr 51 nach PDP-11 erstmal
Literatur-Recherche wäre.
Dazu bin ich natürlich zu faul – das hier ist ja nicht mein Job.
Aber das kleine Spiel hat meine Ahnung – Viren stabilisieren Ökosysteme
– weit genug gestützt, dass ich weiter dran glauben kann. Und doch wäre
ich ein wenig neugierig, was die Dynamische-Systeme-Leute an harter
Wissenschaft zum Thema zu bieten haben. Einsendungen?
Ich mache die Kasse unserer Selbsthilfe-Fahrradwerkstatt URRmEL schon
länger als ich mir das eingestehen will. Etwas vergleichbar Absurdes
wie heute jedoch habe ich in dieser Eigenschaft noch nicht erlebt:
13,01 Euro für die Hochzeit von Terrorquatsch und Privatisierungswahn.
Genauer hat der Bundesanzeiger-Verlag dem Verein vor einer Weile eine
Rechnung geschickt, und da ich zu Coronazeiten nicht sehr oft zu unserem
Postfach komme, habe ich das erst heute gesehen:
Zunächst hatte ich ja an eine mäßig gelungene Bauernfängerei gedacht,
aber es stellt sich raus: Das Transparenzregister gibt es wirklich. Es
ist im Zuge des Sicherheitsgesetz-Tsunamis 2017 zusammen mit
Netzwerkdurchsetzungsgesetz, Videoüberwachungsverbesserungsgesetz, dem
„Bullenschubsparagraphen“ 114 StGB und noch einem runden Dutzend weiterer
schlecht gemachter Gesetze zur Einschränkung von Bürgerrechten durch den
Bundestag gerutscht.
Wir wirklich will, kann sich diesen spezifischen Unsinn bei der
Wikipedia erklären lassen. Aber viel mehr als die Umschreibung
„Terrorquatsch heiratet Privatisierungswahn“ von oben braucht mensch
dazu eigentlich nicht zu wissen: Er ist wahrscheinlich immerhin nicht
sehr schädlich, jedenfalls verglichen mit den anderen Gesetzen dieses
Jahrgangs.
Exkurs: „Terrorismus“ als Antisprache
Das Wort „Terrorismus“, diese Gelegenheit kann ich mir nach der Vorlage
neulich nicht entgehen lassen[1], ist natürlich destillierte
Antisprache, also Sprache, die Informationen verstecken und nicht
transportieren will. „Terrorismus“ hat nämlich aus Sicht der Obrigkeit
schon immer bedeutet: „wir dürfen auf andere Leute schießen, weil
hinreichend viele von unseren Leuten die hassen“. Nicht mehr und nicht
weniger.
Das ist die Bedeutung des Wortes für die Putschisten in Myanmar genauso
wie für Lukaschenko in Belarus, ist sie gegenüber „Islamisten“, ob nun
Taliban in Afghanistan oder Uiguren in Westchina, gegenüber der UCK
(jedenfalls aus Sicht der serbischen Obrigkeit von 1999), landlosen
Bauern in Brasilien oder fabrikbesetzenden Arbeiter_innen in
Argentinien. Und natürlich sowieso für all die „Innenpolitiker_innen“,
die Scheibe um Scheibe von der Menschenrechtssalami absäbeln.
Was das Wort versteckt: Auch die „Terroristen“ haben meist Gründe für
das, was sie tun, und diese Gründe sind oft gar nicht so verschieden von
denen, die die Obrigkeiten selbst antreiben: Patriotismus, Frömmigkeit,
Streben nach Reichtum dürften ganz vorne dabei sein. Aus dieser
Symmetrie folgt dann ziemlich unmittelbar auch, dass Versuche, die
zugrundeliegenden Konflikte mit Gewalt zu beseitigen, meist weitgehend
aussichtslos sind – und so eine Schlussfolgerung will mensch natürlich
weder als Obrigkeit noch als, na ja, Terrorist_in halt ziehen, so sehr
sie nach 20 Jahren „Krieg gegen den Terror“ eigentlich unvermeidlich
ist.
Nur zur Sicherheit: Nichts davon will, klar, staatliche oder private
Akteure rechtfertigen, die von Patriotismus pp. getrieben werden, und
noch weniger die, die deswegen rumballern oder -bomben (lassen). Es
heißt nur, dass, solange wir Patriotismus, Religion und Reichtum nicht
überwunden haben, die Klassifikation der der anderen Patriot_innen,
Religiösen und Armen als „Terroristen“ ganz gewiss nicht weiterhilft.
Ich kann diesen kurzen linguistischen Exkurs nicht schließen ohne eine
Extraportion Befremden zu äußern über die Leichtigkeit, mit der selbst
deutschen Regierungen das Wort „Terrorismus“ über die Lippen
kommt. Mindestens angesichts der ebenfalls unter dem Label
„Terrorismusbekämpfung“ gelaufenen Massakern im von der Wehrmacht
besetzten Jugoslawien sollte doch zumindest da etwas mehr Bedacht
walten. Sollte. Aber fragt mal eure_n Bundestagsabgeordnete_n, ob
er_sie auch nur irgendwas mit Kraljevo oder Kragujevac anfangen kann.
Verkaufen ohne Bestellung
Aber zurück zum Thema: In der Gesetzgebung zum Geldwäschegesetz, das das
Transparenzregister eingeführt hat, traf nun das semantische schwarze
Loch „Terrorismus“ auf die offensichtlich widersinnige, aber erstaunlich
vielen irgendwie einsichtige Idee, alles sei besser, wenn es ein
Privatunternehmen mache.
Und deswegen führt das Transparenzregister der
Bundesanzeiger-Verlag, ein Laden, der zwar seine ersten 40 Jahre als so
eine Art Bundes-Tochter fristete, aber im Rahmen des marktradikalen
Rauschs um die Jahrtausendwende (in ein paar Stufen) ausgerechnet an den
DuMont Schauberg-Verlag ging, einen der ganz großen Spieler im Kölschen
Klüngel. Dass das ohne Ausschreibung passierte, verdient kaum Erwähnung
– und klar hätte es eine Ausschreibung auch nicht besser gemacht:
Entweder, etwas ist Obrigkeit, dann solls gefälligst auch der Staat
machen, oder es ist es nicht, dann muss ich es aber auch nicht bezahlen,
wenn ich es nicht bestellt habe. Meint mensch.
Der Netto-Effekt jedenfalls: Der Terror-Zirkus Transparenzregister, den
jedenfalls unsere Fahrradwerkstatt nicht bestellt hat, soll jetzt durch
Gebühren finanziert werden von denen, die er transparent zu machen
vorgibt.
Und das sind rapide steigende Gebüren: es ging von 1.25 auf 4.80 Euro in
vier Jahren. Sind wir großzügig, ist das eine Verdoppelungszeit von
drei Jahren. Damit kostet der Eintrag in knapp dreißig Jahren 100 000
Euro. Auch wenn es nicht so weit kommt: Den Preis für etwas, das Leute
zwangsweise kaufen müssen, in dieser Freiheit bestimmen zu können: das
ist, soweit es mich betrifft, eine Lizenz zum Gelddrucken.
Wobei, ehrlicherweise: von den 13 Euro wird wahrscheinlich erstmal nicht
viel übrigbleiben, wenn Papier, Versand und Verrechnung bezahlt
sind – aber das ist ja gerade der spezifische Wahnsinn: Mal
angenommen, so ein Register hätte einen Nutzen, könnte mensch riesige
Mengen Geld und Arbeit sparen, wenn dei Mittel nicht über Millionen von
Briefen und Call Center und sonstwas eingetrieben werden müssten, sondern
irgendwo aus dem BMI-Haushalt kämen. Das bisschen Zusammenführung
verschiedener Register müsste dann eigentlich mit einer Million im Jahr
drin sein – vermutlich vergleichbar mit den Portokosten des privaten
Transparenzregisters.
La-la-la Servicequalität
Aber keine Sorge: Steuerbegünstigte Vereine wie unsere Fahrradwerkstatt
„können gemäß §4 TrGebV bei der registerführenden Stelle eine
Gebührenbefreiung ab dem Zeitpunkt der Antragstellung beantragen. Die
Antragstellung kann nach Registrierung ausschließlich über die
Internetseite des Transparenzregisters erfolgen.”
Hab ich probiert.
Ist nicht einfach.
Immerhin geht die Webseite ohne Javascript. Das ist schon mal
etwas, das ich mit all der Privatwirtschaft im Boot nicht erwartet
hätte. Eine offensichtliche Möglichkeit, einen Verein als gemeinnützig
zu melden, ist allerdings nicht erkennbar, und „steuerbegünstigt“ oder
„gemeinnützig“ kommt bei den FAQ nicht vor.
Ah: das ist eine Hotline. Ruf ich gleich mal an: „♪♪ ♪ ♪ Wir sind
heute nur eingeschränkt für Sie da.“
Das muss die Servicequalität (noch so ein Stück Antisprache: Qualität) im
Privatsektor sein, von der mensch so viel hört.
Ich habe mal eine Mail geschrieben. Wetten zu Dauer und Art der Antwort
nehme ich an.
Gut: Es ist keine Sepie. Aber dieser Oktopus ist bestimmt noch
viel schlauer.
Mal wieder gab es in Forschung aktuell ein Verhaltensexperiment, das
mich interessiert hat. Anders als neulich mit den Weißbüschelaffen
sind dieses Mal glücklicherweise keine Primaten im Spiel, sondern
Tintenfische, genauer Sepien – die mir aber auch nahegehen, schon, weil
das „leerer Tab“-Bild in meinem Browser eine ausgesprochen putzige Sepie
ist. Den Beitrag, der mich drauf gebraucht hat, gibt es nur als
Audio (1:48 bis 2:28; Fluch auf die Zeitungsverleger), aber dafür ist
die Original-Publikation von Alexandra Schnell et al (DOI
10.1098/rspb.2020.3161) offen.
Grober Hintergrund ist der Marshmallow-Test. Bemerkenswerterweise
zitiert der Wikipedia-Artikel bereits die Sepien-Publikation, nicht
jedoch kritischere Studien wie etwa die auf den ersten Blick ganz gut
gemachte von Watts et al (2018) (DOI: 10.1177/0956797618761661).
Schon dessen Abstract nimmt etwas die Luft aus dem reaktionären
Narrativ der undisziplinierten Unterschichten, die selbst an ihrem Elend
Schuld sind:
an additional minute waited at age 4 predicted a gain of approximately
one tenth of a standard deviation in achievement at age 15. But this
bivariate correlation was only half the size of those reported in the
original studies and was reduced by two thirds in the presence of
controls for family background, early cognitive ability, and the home
environment. Most of the variation in adolescent achievement came from
being able to wait at least 20 s. Associations between delay time and
measures of behavioral outcomes at age 15 were much smaller and rarely
statistically significant.
Aber klar: „achievement“ in Zahlen fassen, aus denen mensch eine
Standardabweichung ableiten kann, ist für Metrikskeptiker wie mich
auch dann haarig, wenn mich die Ergebnisse nicht überraschen. Insofern
würde ich die Watts-Studie jetzt auch nicht überwerten. Dennoch fühle
ich mich angesichts der anderen, wahrscheinlich eher noch schwächeren,
zitierten Quellen eigentlich schon aufgerufen, die Wikipedia an dieser
Stelle etwas zu verbessern.
Egal, die Tintenfische: Alexandra Schnell hat mit ein paar Kolleg_innen
in Cambridge also festgestellt, dass Tintenfische bis zu zwei
Minuten eine Beute ignorieren können, wenn sie damit rechnen, später
etwas zu kriegen, das sie lieber haben – und wie üblich bei der Sorte
Experimente ist der interessanteste Teil, wie sie es angestellt haben,
die Tiere zu irgendeinem Handeln in ihrem Sinn zu bewegen.
Süß ist erstmal, dass ihre ProbandInnen sechs Tintenfisch-Jugendliche im
Alter von neun Monaten waren. Die haben sie vor einen Mechanismus
(ebenfalls süß: Die Autor_innen finden den Umstand, dass sie den
3D-gedruckt haben, erwähnenswert genug für ihr Paper) mit zwei
durchsichtigen Türen gesetzt, hinter denen die Sepien jeweils ihre
Lieblingsspeise und eine Nicht-so-Lieblingsspeise (in beiden Fällen
irgendwelche ziemlich ekligen Krebstiere) sehen konnten. Durch
irgendwelche Sepien-erkennbaren Symbole wussten die Tiere, wie lange
sie würden warten müssen, bis sie zur Leibspeise kommen würden, zum
langweiligen Essen konnten sie gleich, und sie wussten auch, dass sie
nur einen von beiden Ködern würden essen können; dazu gabs ein recht
durchdachtes Trainingsprotokoll.
Na ja, in Wirklichkeit wars schon etwas komplizierter mit dem Training,
und ahnt mensch schon, dass nicht immer alles optimal lief:
Preliminary trials in the control condition showed that Asian shore
crabs were not a sufficiently tempting immediate reward as latencies
to approach the crab, which was baited in the immediate-release
chamber, were excessive (greater than 3 min) and some subjects refused
to eat the crab altogether.
Ich kann mir richtig vorstellen, wie die Gruppe vor dem Aquarium stand
und fluchte, weil die doofen Viecher ihre Köder nicht schlucken wollten:
„Wie zum Henker schreiben wir das nachher ins Paper?“ – um so mehr, als
alle Sepien konsequent die gleichen Präferenzen hatten (was ich ja auch
schon für ein bemerkenswertes Resultat halte, das bei n=6 und drei
Auswahlmöglichkeiten kaum durch Zufall zu erklären ist – vielleicht aber
natürlich durch das, was die Sepien sonst so essen).
Und dann wieder Dinge in der Abteilung „was alles schiefgehen kann, wenn
mensch mit Tieren arbeitet“:
Subjects received one session of 6 trials per day at a specific delay.
This number of trials was chosen to minimize satiety and its effects
on eating behaviour.
Schon die Abbildung 2 des Artikels finde ich wirklich erstaunlich: Alle
Sepien bekommen es hin, 30 Sekunden auf ihre Lieblingsspeise zu warten
– wow. Ok, kann natürlich sein, dass sie so lange brauchen, um sich zu
orientieren, aber Schnell und Co scheinen mir schon viel getan zu haben,
um das unwahrscheinlich zu machen.
Was jedenfalls rauskommen sollte, war eine Korrelation der Wartezeit
mit, na ja, der „Intelligenz“ (ich halte mich raus bei der genaueren
Bestimmung, was das wohl sei), und um die zu messen, mussten die Sepien
in ihren Aquarien zunächst lernen, das „richtige“ unter einem dunklen
und einem hellen Stück Plastik aussuchen. Anschließend, das war der
Intelligenztest, mussten sie mitbekommen, wenn die Versuchsleitung die
Definition von „richtig“ verändert hat. Dazu haben sie laut Artikel im
Mittel 46 Versuche gebraucht – gegenüber 27 Versuchen beim ersten
Lernen. Nicht selbstverständlich auch: Sepien, die beim ersten Lernen
schneller waren, waren auch schneller beim Begreifen der Regeländerung.
Da ist Abbildung 3 schon ziemlich eindrücklich: einer der Tintenfische
hat das Umkehrlernen in gut 20 Schritten bewältigt, ein anderer hat fast
70 Schritte gebraucht. Uiuiui – entweder haben die ziemlich schwankende
Tagesform, oder die Gerissenheit von Sepien variiert ganz dramatisch
zwischen Individuen.
Die erwartete Korrelation kam selbstverständlich auch raus (Abbildung
4), und zwar in einer Klarheit, die mich schon etwas erschreckt
angesichts der vielen Dinge, die beim Arbeiten mit Tieren schief
gehen können; der Bayes-Faktor, den sie im Absatz drüber angeben
(„es ist 8.83-mal wahrscheinlicher, dass Intelligenz und Wartenkönnen
korreliert sind als das Gegenteil“) ist bei diesem Bild ganz
offensichtlich nur wegen der kleinen Zahl der ProbandInnen nicht
gigantisch groß. Hm.
Schön fand ich noch eine eher anekdotische Beobachtung:
[Andere Tiere] have been shown to employ behavioural strategies such
as looking away, closing their eyes or distracting themselves with
other objects while waiting for a better reward.
Interestingly, in our study, cuttlefish were observed turning their
body away from the immediately available prey item, as if to distract
themselves when they needed to delay immediate gratification.
Ich bin vielleicht nach der Lektüre des Artikels nicht viel überzeugter von
den verschiedenen Erzählungen rund um den Marshmallow-Test.
Ich bin ja bekennender Leser von Fefes Blog, und ich gebe offen zu, dass
ich dort schon das eine oder andere gelernt habe. Zu den für mich
aufschlussreichsten Posts gehört dieser aus dem September 2015, der
mir seitdem nicht mehr aus dem Sinn gegangen ist, und zwar wegen der
Unterscheidung zwischen Kulturen der Ehre (die mensch sich verdienen und
die mensch dann verteidigen muss) und denen der Würde (die mensch
einfach hat).
Der Rest des Posts ist vielleicht nicht der scharfsinnigste Beitrag zur
Identitätsdebatte, und klar gilt auch Robert Gernhardts „Die Würde des
Menschen ist ein Konjunktiv“ weiter, aber der zentrale Punkt ist:
Artikel 1 Grundgesetz ist eine Befreiung von dem ganzen Unsinn von Ehre
und insofern ein großer Schritt in die Moderne. Das ist mir so erst
damals im September 2015 klar geworden.
Und seitdem habe ich mich um so mehr gewundert über den Stellenwert, den
„Gesicht nicht verlieren“ in „der Politik“ (und das schließt schon
Bezirksvorsitzende von Gewerkschaften ein) immer noch hat. Wo außerhalb
der Krawattenliga gibt es sonst noch „Ehrenerklärungen“ wie neulich
bei der CDU (von vor 20 Jahren ganz zu schweigen) oder kräuseln sich
nicht die Zehennägel, wenn jemand wie Westerwelle weiland verkündete:
„Ihr kauft mir den Schneid nicht ab“?
Um so mehr war ich angetan, als zumindest Angela Merkel diese Logik des
18. Jahrhunderts gestern durchbrochen hat und einfach mal „ich hab
Scheiße gebaut“ gesagt hat. Und es tröstet etwas, dass zumindest die
heutige Presseschau in weiten Teilen nicht das unsägliche Genöle von
Vertrauensfragen aus dem Bundestag gestern reflektiert.
Andererseits: Keine Presseschau ohne fassungsloses Kopfschütteln, wenn
nämlich die Süddeutsche schreibt:
Hätte die Bundesregierung stattdessen selber genug Impfdosen
geordert, und zwar nicht zuletzt bei Biontech im eigenen Land, dem
Erfinder des ersten Corona-Vakzins, befände sich Deutschland jetzt
nicht am Rande der Hysterie.
Hätte die Süddeutsche gesagt: „dafür gesorgt, dass so oder so alles, was
an Abfüllkapazität da ist, anfängt, Impfstoff abzufüllen, sobald
absehbar ist, dass es mit der Zulassung was wird“ – ok, das wäre ein
Punkt. Das augenscheinlich auch im Ernstfall herrschende Vertrauen in
„den Markt“ ist natürlich böser Quatsch. Aber auch überhaupt
nichts Neues. Und die Süddeutsche sitzt in dem Punkt in einem Glashaus
mit ganz dünnen Scheiben.
Aber sie redet auch vom „ordern“, was im Klartext heißt: „wir wollen
schneller geimpft sein als die anderen“ – das ist, noch klarerer Text,
anderen Leuten den Impfstoff wegnehmen. Meinen die Süddeutschen das
ernst?
Ich bin ja ohnehin in den letzten Wochen in der unangenehmen Situation,
meine Regierung zu verteidigen. Das habe ich, glaube ich, noch nie
gemacht. Aber im schwierigen Lavieren zwischen autoritärem Durchgriff –
etwa, alle Leute bei sich zu Hause einsperren – und einem
Laissez-Faire, das vermutlich fast eine halbe Million Menschen in der
BRD umgebracht hätte, sieht es fast so aus, als hätte der
Gesamtstaat (zu dem ja auch Landesregierungen und vor allem Gerichte
gehören) so ziemlich den Punkt erwischt hat, den „die
Gesellschaft“ sonst auch akzeptiert.
Warum ich das meine? Nun, so sehr ich gegen Metriken als Bestimmer
politischen Handelns bin, gibt die Mortalitätskurve doch eine Idee
davon, welche Kompromisse wir eingehen. Das RKI veröffentlicht jeden
Freitag so eine, und die im Bericht vom letzten Freitag sieht so aus:
In Worten: Die Gesamtsterblichkeit war im Corona-Jahr nicht viel anders
als sonst auch, nur kam der Grippe-Peak halt schon im November und
Dezember statt erst im Januar und Februar. Und da wir ja wegen der
Grippe in „normalen“ Jahren auch nicht alle das Winterende in Isolation
verbringen, war das Level an Isolation und Shutdown, das wir am Ende
hatten und das SARS-2 zur Vergleichbarkeit gezähmt hat, offenbar im
Sinne „der Gesellschaft“ gewählt.
Klar: Das hat so wohl niemand geplant. Dass es aber so rausgekommen
ist, dürfte nicht einfach nur Zufall sein. „Schwarmintelligenz“
wird den Grund sicher nicht treffen. Aber irgendwas, das nicht
furchtbar weit davon weg ist, dürfte die Ähnlichkeit der Kurven wohl
schon erklären. Vielleicht: Das, was bei uns von Gewaltenteilung noch
übrig ist?
Ansonsten bereite ich mich schon mal aufs Verspeisen meines Hutes vor,
wenn die „dritte Welle“ jetzt doch noch für einen schlimmen
Mortalitätspeak sorgt.
Bestimmt nur wegen durch Corona-Beratungen und Terrorgedenken in Brüssel
anderweitig gefesselter Aufmerksamkeit lief die Nachricht des Tages
nicht in der Tagesschau, sondern nur in der taz.
Dort wird über die weise Wahl im hessischen Dorf
Neu-Eichenberg berichtet, das sich nicht hat beirren lassen von der
großen Verwirrung, dass zwar alle das Wochenende nicht erwarten können,
aber „Arbeitsplätze“ im allgemeinen Bewusstsein das überragende Ziel
privaten wie öffentlichen Handelns zu sein scheinen,
In Neu-Eichenberg nämlich wollte eine Firma namens Dietz AG groß
investieren und damit einem Haufen Menschen viel Arbeit machen. Und
zwar wollte sie ein „Logistikzentrum“ bauen, in dem, so die taz,
„Onlinefirmen und Paketzusteller“ wirken sollten. Die bisherigen
Mehrheitsparteien SPD und CDU (bis vorhin gemeinsam 12 von 15 Sitzen)
hatten das bejubelt. Sie verloren deshalb bei den Gemeinderatswahlen am
vorletzten Wochenende je 17 und 20 Prozentpunkte. Damit ist die
Mehrheit für das „Logistikzentrum“ weg. Weniger Lärm, weniger Arbeit,
weniger hässliche Gewerbegebiete: die Bewohner_innen von Neu-Eichenberg
bekommen den Engelszüngeln-Preis für den Fortschritt des Monats.
Das um so mehr, als es ja wirklich ein Segen rundrum wäre, wenn
die ganze Paketverschickerei wieder auf, sagen wir, 1% ihres aktuellen
Umfangs einschrumpfen würde, denn selbst nach Maßstäben eines Landes,
das irgendwas wie ein Siebtel seiner Arbeitskraft ausgerechnet auf die
Produktion und den Betrieb von Autos verschwendet, ist die Paketfahrerei
eine besonders sinnlose Art, menschliche Lebenskraft zu verschleudern:
Erstmal, weil im Netz nach meiner anekdotischen Erfahrung noch mehr
nutzloser Plunder vertickt wird als in echten Geschäften, und dann, weil
bei der Einzelverschickung ein Haufen echt übler Jobs mitkommen.
Klar ist jetzt auch der stationäre Handel nichts, wo ich eben mal
Traumjobs vermuten würde, aber verglichen mit den
Beschäftigungsverhältnissen in allen Kettengliedern der „Logistik“
ist das wirklich Gold (und das nicht nur im Hinblick auf den Tarif).
Fast im Ernst: Eine Existenz als Buch- oder Wolle-und-Tee-Händler könnte
möglicherweise selbst mir nicht ganz unattraktiv scheinen.
Der 18.3. hat eine lange Tradition als Tag der politischen Gefangenen,
anfänglich in Erinnerung an den Beginn der Pariser Commune vor 150
Jahren; die Erinnerungsfeierlichkeiten in diesem Zusammenhang waren in
den Jahren der Weimarer Republik regelrechte politische Festivals. Das
hatte nach der Machtübergabe an die NSDAP ein Ende, doch seit genau 25
Jahren begehen Menschen auch in der BRD wieder den Tag der politischen
Gefangenen, vor allem im Umfeld der Roten Hilfe.
In Heidelberg gab es dazu heute eine Kundgebung, deren Hauptziel war,
den politischen Gefangenen in der BRD eine Stimme zu geben. Deshalb
bestand ein großer Teil der Kundgebung auch schlicht draus, Briefe und
andere Äußerungen der Gefangenen vorzulesen. Das wiederum schien den
Veranstalter_innen wichtig, weil der_die durchschnittliche Passant_in in
der Fußgängnerzone (die Kundgebung fand am Marktplatz statt) schon die
Behauptung, in ihrem Staat gebe es politische Gefangene, für eine
Zumutung hält. Tatsächlich erinnere ich mich an Gerichtsverfahren in den
späten 1980er Jahren, in denen Menschen für die Forderung, die
politischen Gefangenen in der BRD sollten freigelassen werden, mit
schwerem strafrechtlichem Geschütz verfolgt wurden und zum Teil sogar
Bewährungsstrafen kassierten. Das, immerhin, hat es nach meiner
Kenntnis in den letzten Jahren nicht mehr gegeben.
Aber dann würden vermutlich nicht viele Menschen glauben, dass es im
Strafgesetzbuch im Jahr 2021 noch einen ganzen Abschnitt gibt zu
„Hochverrat“, unterteilt in „gegen den Bund“ (§81), „gegen ein
Land“ (§82) und „Vorbereitung“ (§83), wozu dann noch ein
Kronzeugenparagraph §83a tritt. Und natürlich klingen auch etwa §90 und
§90a („Verunglimpfung des Bundespräsidenten“ bzw. „des Staates und
seiner Symbole“) oder §94 („Landesverrat“) durchaus nach ziemlich
politischer Justiz.
Die real exisitierenden politischen Gefangene in deutschen
Knästen werden allerdings weit überwiegend verfolgt nach der
129er-Paragraphen-Familie, bestehend aus §129 (normale Banden,
Provenienz: Kaiserreich), §129a (inländischer „Terrorismus“, Provenienz:
Schmidt-Regierung) und §129b (ausländischer „Terrorismus“, Provenienz:
Schröder-Regierung). Im Bereich der Antisprache „Terrorismus“ wirds
natürlich immer etwas haarig mit den Vorwürfen, und drum nehme ich als
Definition von „politische_r Gefangene_r” ganz pragmatisch: „hätten sie
ohne politisch missliebigen Hintergrund gehandelt, wären sie nie
eingefahren oder jedenfalls längst wieder draußen“.
Um da mal das Spektrum aufzumachen zwischen „Fällen“, bei denen sich die
bürgerliche Öffentlichkeit wahrscheinlich nur schwer wird empören können
auf der einen und offensichtlichen moralischen Bankrotterklärungen des
Staates auf der anderen, würde ich gerne kurz einen Blick auf die
Gefangenen werfen, deren Kontaktadressen die RH in ihrer
18.3.-Zeitung auf Seite 15 druckt (zu den meisten sind auch Artikel
in der Zeitung).
Da hätten wir zunächst Yilmaz Acil, Hüseyin Açar, Gökmen Çakil, Mustafa
Çelik, Salih Karaaslan, Agit Kulu, Veysel Satilmiş, Özkan Taş, Mazhar
Turan und Mustafa Tuzak, die in verschiedenen Gefängnissen der Republik
sitzen, weil... nun, weil sie mit der PKK in Verbindung gebracht werden.
Soweit ersichtlich, wird keinem von ihnen irgendeine konkrete Straftat
vorgeworfen – aber klar, die PKK als Organisation tut natürlich schon
Sachen, die Menschen, die die türkische Obrigkeit als NATO-Verbündeten
schon ok finden, für verwerflich halten könnten. Nach welchem
Rechtsstaatsprinzip daraus abzuleiten ist, Leute mit schlichten
Sympathien für PKK-Kämpfe sollten eingesperrt werden, ist natürlich noch
eine andere Frage, zumal, wie Gökmen Çakıl richtig anmerkt,
entsprechende „Aktivitäten [...] in der Schweiz oder in Belgien nicht
sanktioniert“ werden.
Ähnlich wird das Sentiment bei der Gefangenschaft von Musa Aşoğlu von
der Einschätzung abhängen, von welcher Sorte Widerstand gegen
verbündete Regierungen mensch sich dringend distanzieren muss, will
mensch nicht ins Gefängnis kommen; in seinem Fall genügte die
Mitgliedschaft in der DHKP-C (deren Erklärungen übrigens ein Fest sind
für Liebhaber_innen realsozialistischer Prosa) für sechs Jahre und neun
Monate Knast.
Milde Empörung im Fall von Thomas Meyer-Falk dürfte weniger
internationalistischen Furor brauchen. Er nämlich sitzt nach
jahrelanger Gefängnisstrafe wegen Banküberfällen (mit denen er linke
Jugendzentren finanzieren wollte) nun in Sicherungsverwahrung, die ja
schon als solche ein menschenrechtlicher Skandal ist. In seinem Fall
ist unbestreitbar: er wäre längst draußen, wenn es da nicht den
politischen Hintergrund gäbe – von dem er sich auch nicht distanzieren
will. Immerhin gibt derweil sein Blog wertvolle Einblicke in die
Realität der Sicherungsverwahrung.
Noch weiter im Spektrum klar politischer Justiz sind die Fälle von Lina,
Jo und Dy – sie alle sind im Antifa-Bereich unterwegs und sind oder
waren für Monate inhaftiert im Wesentlichen aufgrund vager Hinweise, sie
könnten in, mal bewusst entpolitisierend gesprochen, Prügeleien mit
Nazis verwickelt gewesen sein. Prügeleien dieser Art sind, weiter
bewusst entpolitisierend, ohne SARS-2 Alltag auf jedem Volksfest
und werden dann halt mit Strafbefehlen behandelt, die nur im
Wiederholungsfall über dem Vorbestrafungs-Limit von 90 Tagessätzen
liegen. Dass diese Leute monatelang im Knast schmoren, ist
ausschließlich politisch bedingt. Was in diesem Fall angesichts des
immer wieder hochblubbernden Faschismusproblems in Polizei und
Staatsanwaltschaften nochmal ein ganz besonderes Hautgout hat.
Bei der „militanten Zelle” von Nicole Grahlow und Martin Eickhoff – die
seit Oktober 2020 in in Haft sind – liegen noch Sachbeschädungsvorwürde
durch versuchte Brandstiftungen vor, aber keinerlei Gefährung von
Menschen mehr. Die Ziele, nämlich die ehemalige Bundesanstalt für
Arbeit in Nürnberg und das Schlachtimperium von Tönnies, sind allerdings
so nachvollziehbar, dass das inzwischen durch rechte
Hasspost-Praktiken ziemlich desavouierte Topos „Drohbriefe an diverse
Politiker_innen“ in der staatlichen Kommunikation dominiert. Ich will
hier bestimmt nichts gleichsetzen, aber ein ähnlicher Verfolgungseifer
bei Nazis, die Menschen abfackeln, würde der Verfolgung der beiden
einiges vom Eindruck von Willkür nehmen.
Glasklar im Hinblick auf eine menschenrechtliche Bankrotterklärung ist
schließlich der Fall von Ella („Unbekannte Person 1“): Ihr wird im
Wesentlichen vorgeworfen, an der Besetzung des Dannenröder Walds
teilgenommen zu haben und beharrlich die Aufklärung ihrer Identität zu
verweigern. Ohne die Gewalttaten der Polizei bei der Räumung des
Hüttendorfs, für deren wirklich empörendes Ausmaß der Staat
rechtfertigende Narrative sucht, wäre sie ganz gewiss keinen Moment in
Haft gekommen.
Nach all dem: Wer will, kann die Grenze zwischen politischen und, nun
ja, sozialen Gefangenen etwas anders ziehen als die Rote Hilfe. Um die
Einsicht, dass es auch in Justizvollzugsanstalten (was für ein
urdeutsches Wort!) politische Gefangene gibt, kommt mensch aber nicht
herum.
Ich bin gestern nochmal der Sache mit den Schurken und Engeln von
neulich nachgegangen, denn auch wenn die grundsätzliche Schlussfolgerung
– wenn du Chefposten kompetetiv verteilst, kriegst du ziemlich
wahrscheinlich Schurken als Chefs – robust ist und ja schon aus der dort
gemachten qualitativen Abschätzung folgt, so gibt es natürlich doch jede
Menge interessante offene Fragen: Setzen sich Schurken drastischer durch
wenn die Engeligkeit steiler verteilt ist? Wie sehr wirkt sich der
Vorteil für die Schurken wirklich aus, vor allem, wenn sie auch nur eine
endliche Lebensdauer haben? Wie ändern sich die Ergebnisse, wenn Leute
zweite und dritte Chancen bekommen, mal wie ein richtiger Schurke
Karriere zu machen? Wie verändert sich das Bild, wenn mensch mehr
Hierarchiestufen hinzufügt?
Weil das alte Modell mit der einen Kohorte, die bei jedem Schritt um
den Faktor 2 eindampft, für solche Fragen zu schlicht ist, muss ein neues
her. Es hat den Nachteil, dass es viel mehr Code braucht als das alte –
es hat aber der Vorteil, dass es im Prinzip beliebig lang laufen kann
und über einen weiten Bereich von Parametern hinweg stationär werden
dürfte, sich also der Zustand nach einer Weile (der „Relaxationszeit“) nicht
mehr ändern sollte – natürlich vom Rauschen durch die diskrete
Simulation abgesehen. Wem also das alte Modell zu schlicht und
langweilig ist: Hier ist sunde2.py.
Das Neue
Wie sieht das Modell aus? Nun, wir haben jetzt simultan einen ganzen
Haufen N von Hierarchiestufen, die auch immer alle besetzt sind; derzeit
habe ich konstant N = 50. Von Stufe zu Stufe ändert sich jetzt die
Population nicht mehr je um einen Faktor zwei, sondern so, dass die
unterste Stufe 16-mal mehr Aktoren hat als die oberste und die
Besetzungszahl dazwischen exponentiell geht. Diese Schicht-Statistik
sollte keinen großen Einfluss auf die Ergebnisse haben, hält aber
einerseits die Zahl der zu simulierenden Aktoren auch bei tiefen
Hierarchien im Rahmen, ohne andererseits auf den oberen Ebenen die ganze
Zeit mit allzu kleinen Zahlen kämpfen zu müssen.
Aktoren haben jetzt auch ein Alter; sie sterben (meist) nach L ⋅ N
Runden; L kann interpretiert werden als die Zahl der Versuche pro
Wettbewerb, die ein Aktor im Mittel hat, wenn er ganz nach oben will. Im
Code heißt das lifetime_factor (hier: Lebenzeit-Faktor), und ich
nehme den meist als 2 („vita brevis“).
Es gibt eine Ausnahme auf der strikten Lebenszeitbegrenzung: Wenn ein
Level sich schon um mehr als die Hälfte geleert hat, überleben die, die
noch drin sind, auch wenn sie eigentlich schon sterben müssten. An sich ist
diese künstliche Lebensverlängerung nur ein technischer Trick, damit mir
der Kram mit ungünstigen Parametern und bei der Relaxation nicht auf
interessante Weise um die Ohren fliegt; es kann nämlich durchaus sein,
dass die oberen Ebenen „verhungern“, weil Aktoren schneller sterben als
befördert werden. Er hat aber den interessanten Nebeneffekt, dass
speziell in Modellen mit kleinem L wie in der Realität die
Lebenserwartung der höheren Klassen höher ist als die der unteren.
Um die Gesamtzahl der Aktoren konstant zu halten, werden in jeder Runde
so viele Aktoren geboren wie gestorben sind, und zwar alle in die
niedrigste Schicht.
Das enspricht natürlich überhaupt nicht der Realität – schon die Zahlen
zur Bildungsbeteiligung gegen Ende des Posts Immerhin gegen Ende zeigen ja,
dass viele Menschen mitnichten bei Null anfangen in ihrem
gesellschaftlichen Aufstieg. Insofern hätte mensch darüber nachdenken
können, bestehende Aktoren irgendwie fortzupflanzen. Das aber hätte
eine Theorie zum Erbgang von Schurkigkeit gebraucht (die auch dann nicht
einfach ist, wenn mensch wie ich da wenig oder keine biologische
Komponenten vermutet) und darüber hinaus den Einbau von Abstiegen in der
Hierarchie erfordert.
Die zusätzliche Komplexität davon wäre jetzt nicht dramatisch gewesen,
aber das kontrafaktische „alle fangen bei Null an“ residiert als
„Chancengleichheit“ auch im Kern der modernen Wettbewerbsreligion. Für
ein Modell – das ohnehin in einer eher lockeren Beziehung zur
Wirklichkeit steht – ist sie daher genau richtig. Sollten übrigens in
der Realität Kinder von eher schurkigen Menschen auch tendenziell eher
schurkig werden, würde das die Anreicherung von Schurkigkeit gegenüber
dem chancengleichen Modell nur verstärken.
Das Alte
Der Rest ist wie beim einfachen Modell: da es gibt den
Schurken-Vorteil, die Wahrscheinlichkeit, dass ein Aktor, der gerade
schurkig ist, gegen einen, der gerade engelig ist, gewinnt. Dieser
rogue_advantage ist bei mir in der Regel 0.66.
Der letzte Parameter ist die Verteilung der Schurkigkeit (also der
Wahrscheinlichkeit, dass sich ein Aktor in einem Wettbewerb als Schurke
verhält). Dazu habe ich wie zuvor eine Gleichverteilung,
Exponentialverteilungen der Schurkigkeit mit verschidenen λ (also:
gegenüber der Gleichverteilung sind mehr Aktoren Engel, wobei die
allerdings alle Schurkeigkeiten über 1 auf 1 beschnitten werden; für
kleine λ wird das also schwer zu interpretieren) und Normalverteilungen
reingebaut, dieses Mal aber viel expliziter als im einfachen Modell des
letzten Posts.
Ich hatte eigentlich vor, den Kram immer laufen zu lassen, bis er
„stationär“ würde, also sagen wir, bis der Schurkigkeits-Gradient in den
mittleren Schichten sich von Runde zu Runde nicht mehr wesentlich
ändert. Stellt sich aber raus: durch die relativ überschaubaren
Aktor-Zahlen und die Dynamik der Gesellschaft, in der ja per Design viel
Aufstieg stattfindet, rauschen die Metriken, die ich da probiert habe,
zu stark, um guten Gewissens sagen zu können, jetzt sei das Ding
relaxiert (im Code: DiffingWatcher).
Was passiert?
Stattdessen lasse ich die Modelle jetzt erstmal laufen, bis die
(gleichverteilte) Anfangspopulation weitgehend ausgestorben ist (nämlich
N ⋅ L Runden) und ziehe dann nochmal für N ⋅ L Runden Statistiken,
vor allem die mittlere Schurkigkeit in Abhängigkeit von der
Hierarchieebene. Die kann ich dann übereinanderplotten, wobei ich die
Zeit durch den Grauwert einfließen lasse (spätere, wahrscheinlich etwas
relaxiertere, Zustände sind dunkler):
Dabei ist auf der Abszisse die mittlere Hierarchieebene, auf der
Ordinate die mittlere Schurkigkeit auf der entsprechenden Ebene; die
Zeit ist, wie gesagt, durch den Grauwert der Punkte angedeutet und sorgt
für die Streuung.
Am auffälligsten ist wohl, dass Schurkigkeit auf den letzten paar Stufen
am drastischsten ansteigt. Das hätte ich in dem Ausmaß nicht erwartet
und deckt sich jedenfalls nach meiner Erfahrung nicht mit irgendwelchen
Realitäten (in denen die Schurkigkeit schon auf nur moderat
schwindelerregenden Ebenen rapide wächst). Ich komme gegen Ende nochmal
etwas quantitativer auf die Steilheit des Anstiegs zurück.
Hier, wie auch sonst, sind die Modelle bezeichnet durch einen String
– sunde2.py verwendet ihn als Dateinamen –, der aus einer Bezeichnung
der Verteilung (hier Exponential mit λ=4), der Zahl der Level N,
dem Schurken-Vorteil und dem Lebenszeit-Faktor L besteht.
Eine andere Art, diese Daten anzusehen, die insbesondere etwas mehr von
der Dynamik erahnen lässt, ist eine Heatmap der Schurkigkeit; hier
laufen die Hierarchieebenen auf der Ordinate, die Zeit auf der Abszisse;
aus Bequemlichkeitsgründen hat hier die höchste Ebene mal die
Bezeichnung 0 (so ist das übrigens auch im Programm gemacht, in den anderen
Grafiken ist dagegen Ebene 50 das Nüßlein-Territorium):
In-joke: Regenbogen-Palette. Ich habe gerade frei, ich darf das.
Hier lässt sich ganz gut erkennen, dass der Kram nach einer maximalen
Lebensdauer (da fängt die Grafik an) weitgehend relaxiert ist, und
wieder, dass die letzten paar Hierarchieebenen die dramatischsten
Schurken-Konzentrationen aufweisen. Die schrägen Strukturen, die
überall sichtbar sind, sind zufällige Schurken-Konzentrationen auf der
Karriereleiter. Intuitiv wäre wohl zu erwarten, dass sich Engel in
Haifischbecken eher noch schwerer tun und so Schurkigkeitszonen
selbstverstärkend sein könnten. Insofern ist die relativ geringe
Streifigkeit der Grafik – die sagt, dass das wenigstens im Modell nicht
so ist – erstmal eher beruhigend.
Umgekehrt bilde mich mir ein, dass im unteren Bereich der Grafik einige
blauere (also: engeligere) Strukturen deutlich flacher als 45 Grad
laufen: Das könnten Engel-Konzentrationen sein, die gemeinsam langsamer
die Karriereleiter besteigen. Fänd ich putzig (wenns die Karriereleiter
denn schon gibt), kann aber auch nur überinterpretiertes Rauschen sein.
Und noch eine Auswertung von diesem spezifischen Modell: Alter über
Hierarchieebene, was angesichts des aktuellen
Alte-weiße-Männer-Diskurses vielleicht interessant sein mag:
Diese Abbildung funktioniert so wie die der mittleren Schurkigkeit, nur
ist auf der Ordinate jetzt das Alter statt der Schurkigkeit. In dem
Modell leben Aktoren ja zwei Mal die Zahl der Hierarchieebenen Runden,
hier also 100 Runden. Die Aktoren ganz unten sind erkennbar deutlich
jünger als der Schnitt (der bei 50 liegt), ganz oben sammeln sich alte
Aktoren. Klingt speziell in dieser Ausprägung, in der oben wirklich nur
Aktoren kurz vom Exitus sind, irgendwie nach später Sowjetunion, und
klar ist das Modell viel zu einfach, um etwas wie die City of London
zu erklären.
Note to self: Beim nächsten Mal sollte ich mal sehen, wie sich das
mittlere Alter von Schuken und Engeln in den unteren Schichten so
verhält.
Mal systematisch
Weil Simulationen dieser Art schrecklich viele Parameter haben, ist das
eigentlich Interessante, den Einfluss der Parameter auf die Ergebnisse
zu untersuchen. Dazu habe ich mir mal ein paar Modelle herausgesucht,
die verschiedene Parameter variieren (in der run_many-Funktion von
sunde2); Ausgangspunkt sind dabei 50 Ebenen mit einem Lebenszeit-Faktor
von zwei und einem Schurkenvorteil von 0.66. Das kombiniere ich
mit:
einer Gleichverteilung von Schurkigkeiten
einer Exponentialverteilung mit λ = 2
einer Exponentialverteilung mit λ = 4
einer Exponentialverteilung mit λ = 4, aber einem Schurkenvorteil von
0.75
einer Exponentialverteilung mit λ = 4, aber einem Lebenszeit-Faktor von 4
Nach dem zweiten Teil meiner Leidensgeschichte über den Betrieb eines
Mailservers in der Postmoderne ist es ruhig geworden: Nachdem ich
erstmal das DNS vertrauenswürdig gestaltet hatte, fanden eigentlich
alle, bei denen mein Server Mails einliefern wollte, dessen Reputation
reiche schon hin.
Ich hegte also Hoffnung, dass das alles nicht so schlimm ist wie ich
geglaubt hatte, dass SMTP noch nicht kaputt ist und mensch mit
vernünftigem Aufwand selbst Mail verteilen kann. Bis heute morgen, als
von meinen Mailserver das hier zurückkam:
XXXXXXXXXXXXX@XXXXXXXXXX.de
host XXXXXXXXXXXX01i.mail.protection.outlook.com [104.47.2.36]
SMTP error from remote mail server after RCPT TO:<XXXXXXXXXXXXX@XXXXXXXXXX.de>:
550 5.7.606 Access denied, banned sending IP [116.203.206.117]. To request
removal from this list please visit https://sender.office.com/ and follow the
directions. For more information please go to
http://go.microsoft.com/fwlink/?LinkID=526655 AS(1430)
Oh nein. Microsoft. Na, mal sehen.
Ich schicke meinen Web-Browser zu sender.office.com, und es erscheint
einen Dialog mit einem kreiselnden Wartedings, ein sicheres Zeichen,
dass da mal wieder „Web-Programmier“ am Werk waren, die einfach so
voraussetzen, dass sie Code auf allen Maschinen ausführen dürfen. Na
super: Mails verschicken geht nicht, ohne Microsoft-Code laufen zu
lassen.
Aber egal, sollen sie halt auf meine CPU; das Javascript zieht ein
Captcha ein (zum ersten Mal bin ich froh, dass das Microsoft ist, denn
so ist es immerhin kein Google-Captcha und ich muss nicht deren „KI“
trainieren). Captcha gelöst, für ein paar Sekunden passiert nichts, dann
eine Meldung:
Step 1: Our messaging service has experienced a temporary issue,
please resubmit your information below.
Mach ich das mit dem resubmit, gleiche Reaktion. Hatte ich was anderes
erwartet?
Ok, kann ja sein, dass die einfach keine gute Fehlermeldung haben und
das irgendsoein dämlicher CSRF-Schutz mit Referrern ist (auch wenn mir
wirklich nicht klar wäre, wer auf diesem Zeug CSRF machen wollen
könnte). Lasse ich meinen Browser also noch Referrer-Header schicken.
Keine Änderung, immer noch kaputt.
An der Stelle werde ich sauer und will irgendwem eine zornige Mail
schicken. Aber: Keine Kontaktadresse, nirgends. Ich überlege, ob ich
eine Telemediengesetz-Beschwerde auf den Weg schicken soll, denn
zweifelsohne ist das ein kommerzielles Angebot unter deutschem Recht
(der Empfänger ist eine hiesige Firma, für die Microsoft das bestimmt
nicht umsonst macht). Vielleicht. Aber bevor ich mit einem Scheiß wie
dem Telemediengesetz argumentiere, brauche ich noch mehr Verzweiflung.
Sowohl auf luakit als auch per curl reagiert der Microsoft-Server darauf
mit:
Unable to process request
Gratuliere. Was machen diese Leute eigentlich beruflich?
Aber wurst, werfe ich halt meinen Browser für wüste, grob
privatsphäreverletzende Seiten an – mein Leben ist zu kurz, um den
Quatsch, den die Firma da auf die Menschheit loslässt, verstehen zu
wollen. Mit dem Browser fürs Grobe kommt dann auch was: eine Seite mit
viel Rede von „Defender”. Aber keine nützliche Information, und so
probiere ich halt sender.office.com nochmal mit dem Kamikaze-Browser.
Ergebnis: Our messaging service has experienced a temporary issue,
please resubmit your information below.
Immerhin hat ist auf der Info-Seite etwas, das nach einem Kontakt-Link
aussieht. Aber nein, es ist eine Issue-Seite auf github,
https://github.com/MicrosoftDocs/feedback/issues, 1630 Open Bugs.
Jaklar, da schreibe ich meinen noch dazu. Was glauben diese Leute
eigentlich?
Stattdessen habe ich dann heute vormittag an postmaster@office.com
geschrieben, und Mail ist nicht gleich zurückgewiesen worden.
Entsprechend hatte ich da noch Hoffnung, Microsoft könnte sich immerhin
an diesen Teil der Mail-RFCs halten. Jetzt, 18 Uhr, sieht es nicht
danach aus, da kam genau keine Reaktion (im diesem Vergleich, es
schmerzt mich, das zuzuzugeben, sieht die Telekom viel besser aus). Und
die sender.office.com-Seite ist auch noch kaputt.
Andererseits: Offensichtlich haben die Exchange-Leute gerade tatsächlich
außergewöhnliche Probleme. Vielleicht habe ich einfach nur Pech
gehabt und das ist sonst nicht so rekursiver Murks?
Nachtrag (2021-03-12)
(um 15:30) Immerhin weist Microsoft Mails an postmaster nicht so rüde
ab wie andere Mails. Mein Mailserver schreibt mir gerade, dass er es
24 Stunden lang nicht geschafft hat, die Mail an postmaster@office.com
auszuliefern, dass er es aber weiter probieren wird. Es bleibt
spannend. Unterdessen findet aber yahoo.de, dass es mit meiner
Reputation bergab geht. Oh je. Das sieht nach einem Alptraum mit
Verzögerung aus.
Nachtrag (2021-03-15)
(mittags) Nee, natürlich ist nichts bei postmaster@office.com
einzuliefern. Wo kämen wir da auch hin. Dafür macht inzwischen
wenigstens die sender.office.com-Geschichte etwas, wenn auch von der
Mail, die das verspricht, innerhalb von 10 Minuten nichts zu sehen
ist.
Nachtrag (2021-03-15)
(abends) Nach noch einem Versuch mit der sender.office.com-Geschichte
kam dann auch eine Mail mit einem Link, und dessen Derefenenzierung hat
tatsächlich etwas produziert, das versprach, mein Server werde innerhalb
von 30 Minuten von der Blacklist genommen. Schon frech, wie dieser
Laden über die Zeit anderer Menschen verfügt. Auf der anderern Seite:
jetzt will ich da gar niemandem mehr Mails schreiben. Pfft.
Vor einer guten Woche habe ich inspiriert von dem, was inzwischen
„Masken-Affäre“ heißt[1]gezeigt, wie eine ganz einfache
Theorie sehr natürlich erklärt, warum die mittlere Schurkigkeit mit der
Hierarchiestufe recht rapide steigt. Für mich eher unerwartet ist diese
Masken-Affäre übers Wochenende richtig explodiert, bis hin zum puren
Rock'n'Roll, dass Abgeordnete – und dann noch welche von CDU und CSU –
wegen Selbstbedienung aus der Fraktion fliegen.
Dieser Chor von Überraschung und Empörung ist deshalb zumindest bizarr,
weil alle diese Medien normalerweise feiern, wenn sich „Fleiß und
Einfallsreichtum aufs private Fortkommen richten“, wie die Hessische
Niedersächsische Allgemeine zum gleichen Thema so schön formuliert – und
sich mit dieser zutreffenden Beschreibung des Verhaltens von Nüßlein und
Löbel zumindest mal den Preis für den am wenigsten verdrehten Kommentar
an diesem Morgen verdient hat.
Tatsächlich ist Vertreter_innen entsprechender Ideen zumeist mit etwas
Mühe die Konzession abzuringen, natürlich sei eine Wirtschaft zu
bevorzugen, die in einem gesellschaftlichen Prozess plant, welcher Kram
produziert werden soll und wie das mit möglichst wenig Belastung für
Mensch („Arbeit“) und Natur hinzukriegen sei. Aber, so ist dann das
finale und kaum widerlegbare Argument, das sei nicht zu machen, weil der
Mensch schlecht sei und egoistisch und drum, wenn die Wirtschaft nicht
auf die Bedürfnisse von ehrgeizigen Schurken ausgerichtet sind, der
Hungertod droht.
Demgegenüber wandele ein moderat regulierter Kapitalismus die
Niederträchtigkeit der Einzelnen in den größtmöglichen Nutzen des
Staates und in der Folge der Gesellschaft – was unter der Bedingung,
dass die Leute, von Mutter Theresa mal abgesehen, durchweg Gesindel
sind, oberflächlich plausibel klingt[2].
Und nun sind genau die Leute, die bei jeder Gelegenheit die
Alternativlosigkeit von Markt und Wettbewerb für die Volkswirtschaft aus
der Schurkigkeit des Menschen an sich ableiten, empört, weil ihre
Vertreter_innen, und zumal die mit dem eklatantesten
der-Mensch-ist-schlecht-Programm, bescheißen, so gut sie können. Hm.
Es war schon lange meine Vermutung, dass die Fähigkeit, rechtzeitig mit
den Ableitungen aus den eigenen Ideen aufzuhören, ganz entscheidend ist
für die Erhaltung einer, nun ja, konservativen Gesinnung.
Montag 19:45 gibt es erstaunlicherweise noch keine
Wikipedia-Seite „Masken-Affäre“, aber der Relevanzkriterien-Widerstand
in der Sache dürfte innerhalb von Stunden bröckeln.
Jedenfalls solange, bis mensch sich klar macht, dass wir derzeit
Jahr um Jahr fossile Kohlenwasserstoffe verbrauchen, die sich
innerhalb von einigen 100000 Jahren gebildet haben (sprich: wir durch diese
Ressourcen gehen, als hätten wir einige 105 Erden) und
trotzdem noch Jahr um Jahr Milliionen von Menschen an Armut sterben.
Als großer Fan von der Deutschlandfunk-Sendung Forschung aktuell höre
ich natürlich auch (wenn auch mit Verzögerung) jeden Tag die sehr
empfehlenswerte Sternzeit.
In der vom 2. Februar hat (denke ich mal) Dirk Lorenzen daran
erinnert, dass vor 90 Jahren, am 2.2.1931, Friedrich Schmiedl die
erste Postrakete hat fliegen lassen, und die Geschichte klang so irre,
dass ich das mal genauer wissen wollte:
Die erste Postrakete brachte rund hundert Briefe vom Schöckel, einem
Berg bei Graz, ins nur wenige Kilometer entfernte Sankt Radegund. Die
Raketen waren ferngesteuert und landeten sanft am Fallschirm – eine
Meisterleistung des Ingenieurs.
[...] Nach dem erfolgreichen Erstflug begann ein regelmäßiger
Postraketendienst in der Umgebung von Graz.
und vor allem:
Nach dem Raketen-Aus vernichtete Friedrich Schmiedl seine Unterlagen,
damit sie nicht für Rüstungszwecke genutzt werden konnten – und er
lehnte etliche Stellenangebote von Militärs aus verschiedenen Ländern
ab.
Das Grazer Institut für Weltraumwissenschaften ist leider nicht nach
Schmiedel, sondern nach dem Entdecker der kosmischen Strahlung, Victor
Hess, benannt. Immerhin hat auch er nicht mit den Nazis
kollaboriert, ist nach dem Übergang vom Austrofaschismus zur
Naziherrschaft in Österreich in die USA geflohen – und er war Lehrer
von Schmiedel.
Der Wikipedia-Artikel zur Raketenpost ist zwar bezüglich des
„regelmäßigen Postraketendiestes“ doch etwas skeptischer, und klar ist
das aus heutiger Sicht eine ziemlich irre Idee. Aber wahrscheinlich
war sie in ihrer Zeit nicht viel irrer als die Idee eines globalen
paketvermittelten Computer-Netzwerks in den Anfängen des ARPANet.
Nach etwas Schmökern im Netz kann ich jedenfalls bestätigen: Schmiedl
war ganz klar ein großer Bastler; allein die Raketen so zu starten bzw.
zu steuern, dass sie die Briefe tatsächlich so grob dorthin brachten, wo
sie hinsollten, ist mit der damaligen Technologie ein halbes Wunder.
Und er war bewegt von Interesse an der Sache und natürlich dem Plan,
irgendwann mal in den Weltraum zu kommen. Ein Nerd, kein Zweifel.
Dass er jede Verwicklung in staatliches Töten („Militär“) konsequent und
unter erheblichen zumindest materiellen Einbußen abgelehnt hat, macht
ihn, so finde ich, noch dazu zu einem Vorbild. Und drum verleihe ich
Schmiedl hiermit feierlich den Titel Nerd des Monats.
Während ich im Netz rumgestöbert habe, um etwas etwas mehr über Schmiedel
rauszukriegen (und viel scheint nicht online zu sein), ist mir
irgendwann klar geworden, dass ich eine großartige Gelegenheit verpasst
habe, Schmiedl näher zu kommen: Ich war nämlich vor ein paar Jahren mal
Referent bei einer Konferenz im Institut für Weltraumwissenschaften
der österreichischen Akademie der Wissenschaften, das bestimmt nicht
ganz zufällig in Graz ist. Leider wusste ich nichts von der Geschichte und
habe deshalb nicht im Institut nach Erinnerungen geforscht – er ist ja
erst 1994 gestorben, es könnten also durchaus noch Leute dort arbeiten,
die ihn gekannt haben – und auch sein Grab nicht besucht. Schade.
Was mich beim Stöbern noch überrascht hat: Der Wikipedia-Artikel
zur Raketenpost schreibt, erst nach einem Unfall, bei dem 1964 zwei
Menschen gestorben waren, seien in der Bundesrepublik Experimente mit
ernsthafteren Raketen für Privatpersonen verboten worden. So ein Verbot
hätte ich genau angesichts der militärischen Interessen, die Schmiedel
aus dem Gebiet gedrängt haben, viel früher erwartet.
Schmiedels Geschichte finde ich jedenfalls inspirierend. Und siehe da:
das ADS weist immerhin einen Artikel von ihm nach: Early postal
rockets in Austria. Und siehe noch weiter: Das Web Archive hat einen
Scan des Artikels (ganzer Band von archive.org; original kommt das
vom NASA NRTS, aber deren Interface ist Mist), der vielleicht, wenn du
das liest, schon am ADS verlinkt ist.
Der Artikel ist alles, was ich von Schmiedel selbst have finden können.
Daher hier noch ein paar Ausschnitte, die, finde ich, seine Art,
visionären Ideenreichtum mit konkreten technischen Lösungen zu
verbinden, ganz gut illustrieren:
[Die hübsche und gar nicht tödliche Passage von P1/Halley im Jahr
1910] marked a new phase in human thought after it became evident
that space was not that hostile; one could dare to explore it. [...]
In the 1920s I started some preliminary rocket experiments towards
space flight. But first of all I had to convince my professors, who
considered my ideas on space flight as a scientific illusion because
of my youthful eagerness to assume that space flight was possible.
[...] under the hood of a vaccum pump I fired tiny rockets and tested
their efficiency while the air was evacuated.
[...Mein Stratosphärenballon] was furnished with magnetized steel wires
to hold it in a predetermined east-west position [...] Furthermore, the
steel wires had to hold an aluminum flag (300 cm x 7 cm) in a certain
position relative to the Sun so that it could reflect the Sun's rays
to an observation post on Earth. Thus one could pursue the position
of the balloon despite its height.
[...] my stratoballoon carried some silveracide which would explode at
a high altitude [...so that] dispersed matter could be moved out of the
Earth's gravitational field by solar light pressure.
[Meine Test-Postrakete] V-5 carried letters where I stated “...it is
theoretically possible to deliver mail from Europe to America via
rockets within 40 minutes” [...]
In April 1931 I launched three sounding rockets with home-made
recording equipment: a spectrograph with Zeiss prisms, and instruments
to record the pressure, height, and vibrations [...] One rocket was
constructed like a Greek column with parallel grooves along the
longitudinal axis that had been worked into the aluminum casing to
prevent rotation during the flight [...] The second rocket, on the
other hand, I provided with diagonal grooves in its casing for fast
rotation. My purpose was to improve guiding accuracy [...]
I launched the [V-8] rocket with a selen cell as an optical control
which should have set its course toward a lighted balloon [...]
Later, I destroyed nearly all of my research notes and photographs of
rocket launches and proceedings, for fear they might be used by the
military.
Nee, wirklich: der Krieg ist mal ganz definitiv nicht der Vater aller
Dinge.
I've been a fairly happy mailman user for about 20 years, and I
ran mailman installations for about a decade in the 2000s.
Over the last week or so, I've spent more time setting up a mailman3
list off and on than I've spent with mailman guts in all the years
before, which includes recovery form one or two bad spam attacks.
Welcome to the brave new world of frameworks and microservices.
Perhaps the following words of warning can help other mailman3 deployers
to not waste quite as much time.
Badly Misleading Error Messages
Most importantly, whatever you do, never call mailman as
root. This will mess up permissions and lead to situations really hard
to debug. In particular, the error message from the post's title:
Cannot connect to SMTP server localhost on port 25
apparently can have many reasons (or so the recipes you find on the net
suggest), few of which have anything to do with SMTP, but one clearly is
when mailman can't read or write to queue files or templates or whatever
and bombs out while trying to submit mail.
Morale: Don't claim too much when writing error messages in your
programs.
Unfortunately, I've fixed the thing accidentally, so I can't say what
exactly broke. The take away still is that, in Debian (other
installations' mailman users might be called something else) you run
mailman like this:
sudo -u list mailman
However, I can now say how to go about debugging problems like these, at
least when you can afford a bit of mailman unavailability. First, stop
the mailman3 daemon, because you want to run the thing in the
foreground. Then set a breakpoint in deliver.py by inserting, right
after def deliver(mlist, msg, msgdata), something like:
import pdb; pdb.set_trace()
Assuming Debian packaging, you will find that file in
/usr/lib/python3/dist-packages/mailman/mta.
Of course, you'll now need to talk to the debugger, so you'll have to
run mailman in the foreground. To do that, call (perhaps adapting the
path):
sudo -u list /usr/lib/mailman3/bin/master
From somewhere else, send the mail that should make it to the mail
server, and you'll be dropped into the python debugger, where you can
step until where the thing actually fails. Don't forget to remove the
PDB call again, as it will itself cause funky errors when it triggers in
the daemonised mailman. Of course, apt reinstall mailman3 will
restore the original source, too.
Template Management Half-Broken
When I overrode the welcome message for a mailing list, the subscription
notifications to the subscribing users came out empty.
This time, there was at least something halfway sensible in the log:
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://localhost/postorius/api/templates/list/kal.sofo-hd.de/list:user:notice:welcome
Until you read up on the mailman3 system of managing templates (which,
roughly, is: store URIs from where to pull them), it's a bit mystifying
why mailman should even try this URI. Eventually, one can work out
that when you configure these templates from Postorius, it will take the
URI at which mailman should see it, Postorius, from
POSTORIUS_TEMPLATE_BASE_URL in /etc/mailman/mailman-web.py.
This is preconfigured to the localhost URI, which proabably only
rarely is right.
Of course it'll still not work because the old, wrong, URI is still in
mailman's configuration. So, you'll have to go back to the template
configuration in Postorius and at least re-save the template.
Interestingly, that didn't seem to fix it for me for reasons I've not
bothered to fathom. What worked was deleting the template and re-adding
it. Sigh.
As soon as you have more than one template, I expect it's faster to
change the URIs directly in mailman's database, which isn't hard, as
seen in the next section.
[Incidentally: does anyone know what the dire warnings in the docs about
not using sqlite3 on “production” systems actually are about?]
Disable Emergency Moderation After Moving
Basically because I was hoping to get a more controlled migration, I had
set one list on the old server to emergency moderation before pulling
the config.pck. Don't do that, because at least as of now mailman3
has the notion of emergency moderation but makes it hard to switch it on
or off. I eventually resorted to directly touching mailman's config
database (if you've configured mailman to use something else than
sqlite, the shell command is different, but the query should be the
same):
$ sudo -u list sqlite3 /var/lib/mailman3/data/mailman.db
[on the sqlite prompt:]
update mailinglist set emergency=0 where list_id='<your list id>';
Note that <your list id> has a dot instead of the at, so if your
list is mylist@example.org, its id is mylist.example.org.
Oh No, CSRF Token
The list I cared about most could be joined from an external web site,
transparently posting to mailman2's cgi-bin/mailman/subscribe (oh!
CGI! How am I missing you in the age of uwsgi and Django!). Looking at
its counterpart for modern mailman3, the first thing I noted is that
there's a CSRF token in it – if you've not encountered them before, it's
a couple of bytes the originating server puts into a web form to prevent
what Postorius' authors feels is Cross Site Request Forgery.
Of course, what I wanted was exactly that: Post to Postorius from a
different web site. I don't feel that's forgery, very frankly.
I didn't see an obvious way to turn it off, and I was a bit curious
about mailman3's own http API, so I wrote a few lines of code to do
this; the API part itself was straightforward enough, something like:
– but of course it sucks a bit that subscribing someone requires the same
privilege level as, say, creating a mailing list or changing its
description. And all that just to work around CSRF prevention. Sigh.
On top of that, I've tried K-SAT on the pre_X booleans to try and
see if anything gives me the tried and tested workflow of “let folks
enter a mail address, send a confirmation link there, subscribe them
when it's being clicked“. No luck. Well, let's hope the pranksters
don't hit this server until I figure out how to do this.
Hm. I think I'm a bit too locked in into mailman to migrate
away, but I have to say I wish someone would port mailman2 to python3
and thus let mailman2 hang on essentially forever. It did all a mailing
list manager needs to do as far as I am concerned, and while it wasn't
pretty with the default browser stylesheets, even now, almost a decade
into mailman3, it works a whole lot more smoothly.
Or perhaps there's a space for a new mailing list manager with a
trivially deployable web interface not requiring two separate database
connections? Perhaps such a thing exists already?
Well, summing up, the central migration advice again: Mind the sudo
option in
sudo -u list mailman import21 my-list@example.org config.pck
Die gerade durch die Medien gehende Geschichte von Georg Nüßlein
zeichnet, ganz egal, was an Steuerhinterziehung und
Bestechung nachher übrig bleibt,
jedenfalls das Bild von einem Menschen, der, während rundrum
die Kacke am Dampfen ist, erstmal überlegt, wie er da noch den einen
oder anderen Euro aus öffentlichen Kassen in seine Taschen wandern
lassen kann.
Die Unverfrorenheit mag verwundern, nicht aber, dass Schurken in
die Fraktionsleitung der CSU aufsteigen. Im Gegenteil – seit ich
gelegentlich mal mit wichtigen Leuten umgehe, fasziniert mich die
Systematik, mit der die mittlere Schurkigkeit von Menschen mit ihrer
Stellung in der Hierarchie steil zunimmt: Wo in meiner unmittelbaren
Arbeitsumgebung eigentlich die meisten Leute recht nett sind, gibt es
unter den Profen schon deutlich weniger Leute mit erkennbarem Herz. Im
Rektorat wird es schon richtig eng, und im Wissenschaftsministerium
verhalten sich oberhalb der Sekretariate eigentlich alle wie Schurken,
egal ob nun früher unter Frankenberg oder jetzt unter Bauer.
Tatsächlich ist das mehr oder minder zwangsläufig so in Systemen, die
nach Wettbewerb befördern. Alles, was es für ein qualitatives
Verständnis dieses Umstands braucht, sind zwei Annahmen, die vielleicht
etwas holzschnittartig, aber, so würde ich behaupten, schwer zu
bestreiten sind.
Es gibt Schurken und Engel
Wenn Schurken gegen Engel kämpfen (na ja, wettbewerben halt), haben
die Schurken in der Regel bessere Chancen.
Die zweite Annahme mag nach dem Konsum hinreichend vieler
Hollywood-Filme kontrafaktisch wirken, aber eine gewisse moralische
Flexibilität und die Bereitschaft, die Feinde (na ja, Wettbewerber halt)
zu tunken und ihnen auch mal ein Bein zu stellen, dürfte unbestreitbar
beim Gewinnen helfen.
Um mal ein Gefühl dafür zu kriegen, was das bedeutet: nehmen wir an, der
Vorteil für die Schurken würde sich so auswirken, dass pro
Hierarchieebene der Schurkenanteil um 20% steigt, und wir fangen mit 90%
Engeln an (das kommt für mein soziales Umfeld schon so in etwa hin, wenn
mensch hinreichend großzügig mit dem Engelbegriff umgeht). Als Nerd
fange ich beim Zählen mit Null an, das ist also die Ebene 0.
Auf Ebene 1 sind damit noch 0.9⋅0.8, also
72% der Leute Engel, auf Ebene 2
0.9⋅0.8⋅0.8, als knapp 58% und so fort, in Summe also 0.9⋅0.8n
auf Ebene n. Mit diesen Zahlen sind in Hierarchieebene 20 nur noch 1%
der Leute Engel, und dieser Befund ist qualitativ robust gegenüber
glaubhaften Änderungen in den Anfangszahlen der Engel oder der Vorteile
für Schurken.
Tatsächlich ist das Modell schon mathematisch grob vereinfacht, etwa
weil die Chancen für Engel sinken, je mehr Schurken es gibt, ihr Anteil
also schneller sinken sollte als hier abgeschätzt. Umgekehrt sind natürlich
auch Leute wie Herr Nüßlein nicht immer nur Schurken, sondern haben
manchmal (wettbewerbstechnisch) schwache Stunden und verhalten sich wie
Engel. Auch Engel ergeben sich dann und wann dem Sachzwang und sind von
außen von Schurken nicht zu unterscheiden. Schließlich ist wohl
einzuräumen, dass wir alle eher so eine Mischung von Engeln und Schurken
sind – wobei das Mischungsverhältnis individuell ganz offensichtlich
stark schwankt.
Eine Simulation
All das in geschlossene mathematische Ausdrücke zu gießen, ist ein
größeres Projekt. Als Computersimulation jedoch sind es nur ein paar
Zeilen, und die würde ich hier gerne zur allgemeinen Unterhaltung und
Kritik veröffentlichen (und ja, auch die sind unter CC-0).
Ein Ergebnis vorneweg: in einem aus meiner Sicht recht
plausiblen Modell verhält sich die Schurkigkeit (auf der Ordinate; 1
bedeutet, dass alle Leute sich immer wie Schurken verhalten) über der
Hierarchiebene (auf der Abszisse, höhere Ebenen rechts) wie folgt (da
sind jeweils mehrere Punkte pro Ebene, weil ich das öfter habe laufen
lassen):
Ergebnis eines Laufs mit einem Schurken-Vorteil von 0.66, mittlere
Schurkigkeit über der Hierarchieebene: Im mittleren Management ist
demnach zur 75% mit schurkigem Verhalten zu rechnen. Nochmal ein paar
Stufen drüber kanns auch mal besser sein. Die große Streuung auf den
hohen Hierarchieebenen kommt aus den kleinen Zahlen, die es
da noch gibt; in meinen Testläufen fange ich mit 220 (also
ungefähr einer Million) Personen an und lasse die 16 Mal Karriere
machen; mithin bleiben am Schluss 16 Oberchefs übrig, und da macht
ein_e einzige_r Meistens-Engel schon ziemlich was aus.
Das Programm, das das macht, habe ich Schurken und Engel getauft,
sunde.py – und lade zu Experimenten damit ein.
Es wird also festgelegt, dass, wenn ein Schurke gegen einen Engel
wettbewerbt, der Schurke mit zu 66% gewinnt (und ich sage mal voraus,
dass der konkrete Wert hier qualitativ nicht viel ändern wird), während
es ansonsten 50/50 ausgeht. Das ist letztlich das, was in _WIN_PROB
steht.
Und dann gibt es das Menschenmodell: Die Person wird, wir befinden uns
in gefährlicher Nähe zu Wirtschafts„wissenschaften“, durch einen
Parameter bestimmt, nämlich die Engeligkeit (angelicity; das Wort gibts
wirklich, meint aber eigentlich nicht wie hier irgendwas wie
Unbestechlichkeit). Diese ist die Wahrscheinlichkeit, sich anständig zu
verhalten, so, wie das in der is_rogue-Methode gemacht ist: Wenn
eine Zufallszahl zwischen 0 und 1 (das Ergebnis von random.random())
großer als die Engeligkeit ist, ist die Person gerade schurkig.
Das wird dann in der wins_against-Methode verwendet: sie bekommt
eine weitere Actor-Instanz, fragt diese, ob sie gerade ein Schurke ist,
fragt sich das auch selbst, und schaut dann in _WIN_PROB nach, was
das für die Gewinnwahrscheinlichkeit bedeutet. Wieder wird das gegen
random.random() verglichen, und das Ergebnis ist, ob self gegen
other gewonnen hat.
Der nächste Schritt ist die Kohorte; die Vorstellung ist mal so ganz in
etwa, dass wir einem
Abschlussjahrgang bei der Karriere folgen. Für jede Ebene gibt es eine
Aufstiegsprüfung, und wer die verliert, fliegt aus dem Spiel. Ja, das
ist harscher als die Realität, aber nicht arg viel. Mensch fängt mit
vielen Leuten an, und je weiter es in Chef- oder Ministerialetage geht,
desto dünner wird die Luft – oder eher, desto kleiner die actor-Menge:
class Cohort:
draw = random.random
def __init__(self, init_size):
self.actors = set(Actor(self.draw())
for _ in range(init_size))
def run_competition(self):
new_actors = set()
for a1, a2 in self.iter_pairs():
if a1.wins_against(a2):
new_actors.add(a1)
else:
new_actors.add(a2)
self.actors = new_actors
def get_meanness(self):
return 1-sum(a.angelicity
for a in self.actors)/len(self.actors)
(ich habe eine technische Methode rausgenommen; für den vollen Code vgl.
oben).
Interessant hier ist vor allem das draw-Attribut: Das zieht nämlich
Engeligkeiten. In dieser Basisfassung kommen die einfach aus einer
Gleichverteilung zwischen 0 und 1, wozu unten noch mehr zu sagen sein
wird. run_competition ist der Karriereschritt wie eben beschrieben,
und get_meanness gibt die mittlere Schurkigkeit als eins minus der
gemittelten Engeligkeit zurück. Diesem Wortspiel konnte ich nicht
widerstehen.
Es gäbe zusätzlich zu meanness noch interessante weitere Metriken, um
auszudrücken, wie schlimm das Schurkenproblem jeweils ist,
zum Beispiel: Wie groß ist der Anteil der Leute mit Engeligkeit unter
0.5 in der aktuellen Kohorte? Welcher Anteil von Friedrichs
(Engeligkeit<0.1) ist übrig, welcher Anteil von Christas
(Engeligkeit>0.9)? Aus wie vielen der 10% schurkgisten Personen „wird
was“? Aus wie vielen der 10% Engeligsten? Der_die Leser_in ahnt schon,
ich wünschte, ich würde noch Programmierkurse für Anfänger_innen geben:
das wären lauter nette kleine Hausaufgaben. Andererseits sollte mensch
wahrscheinlich gerade in so einem pädagogischen Kontext nicht
suggerieren, dieser ganze Metrik-Quatsch sei unbestritten. Hm.
Nun: Wer sunde.py laufen lässt, bekommt Paare von Zahlen
ausgegeben, die jeweils Hierarchiestufe und meanness der Kohorte angeben.
Die kann mensch dann in einer Datei sammeln, etwa so:
und so fort. Und das Ganze lässt sich ganz oldschool mit gnuplot
darstellen (das hat die Abbildung oben gemacht), z.B. durch:
plot "results.txt" with dots notitle
auf der gnuplot-Kommandozeile.
Wenn mir wer ein ipython-Notebook schickt, das etwa durch matplotlib
plottet, veröffentliche ich das gerne an dieser Stelle – aber ich
persönlich finde shell und vi einfach eine viel angenehmere Umgebung...
Anfangsverteilungen
Eine spannende Spielmöglichkeit ist, die Gesellschaft
anders zu modellieren, etwa durch eine Gaußverteilung der Engeligkeit,
bei der die meisten Leute so zu 50% halb Engel und halb Schurken sind
(notabene deckt sich das nicht mit meiner persönlichen Erfahrung, aber
probieren kann mensch es ja mal).
Dazu ersetze ich die draw-Zuweisung in Cohort durch:
Die „zwei Sigma“, also – eine der wichtigeren Faustformeln, die
mensch im Kopf haben sollte – 95% der Fälle, liegen hier zwischen 0 und
1. Was drüber und drunter rausguckt, wird auf „immer Engel“ oder „immer
Schurke“ abgeschnitten. Es gibt in diesem Modell also immerhin 2.5%
Vollzeitschurken. Überraschenderweise sammeln sich die in den ersten 16
Wettbewerben nicht sehr drastisch in den hohen Chargen, eher im
Gegenteil:
Deutlich plausibler als die Normalverteilung finde ich in diesem Fall ja
eine …
Weil ich es neulich von der GEW hatte: ein weiterer Grund, warum ich
20 Jahre, nachdem es hip war, einen Blog angefangen habe, war eine
Telecon im April letzten Jahres und die GEW.
Na gut, es war nicht direkt die Telecon und eigentlich auch gar nicht
die GEW.
Tatsächlich hatte ich damals aber die erste Lehrsituation im engeren
Sinne via Telecon, und kurz danach ich eine Epiphanie dazu, warum
sich Lehre über Videokonferenzen so scheiße anfühlt. Dazu habe ich dann
einen Artikel geschrieben, den ich, ermutigt von GEW-KollegInnen, gerne
in der B&W (das ist die monatlich an alle Mitglieder in
Baden-Württemberg verschickte Zeitschrift) untergebracht hätte – so
brilliant fand ich ihn. Ahem.
Nun, was soll ich sagen, die Redaktion war skeptisch, um das mal
vorsichtig zu sagen. Ich habe da auch einiges Verständnis dafür, denn
im letzten Juni gings bestimmt hoch her in Sachen computervermitteltem
Unterricht, und da wären Einwürfe, die Videokonferenzen mit wüsten
Folterszenen in Verbindung brachten, bestimmt nicht hilfreich gewesen.
Aber schade fand ich es doch. Ich hatte aber nicht wirklich einen
Platz, um sowas geeignet unterzubringen.
Jetzt habe ich einen. Und damit: „Wider das Panopticon – Michel
Foucault und der Unterricht via Videokonferenz“.
Wahlkampfzeiten finde ich immer sehr anstrengend: Wenn diese
Wahlplakate wirken, muss ich wirklich auswandern. Früher konnte ich ja
wenigstens noch zum UNiMUT-Wahlplakateranking (2009, 2005, 2004,
2002, 2001, 1998) beitragen und so gleichzeitig Depressionen
vorbeugen und ein (wirkungsloses) Fanal gegen den Ranking- und
Rating-Unfug setzen.
Seit es das nicht mehr gab, konnte ich nur noch weggucken, so gut ich
konnte.
Diese Misere ein wenig geändert hat die PARTEI, die es tatsächlich
fertig gebracht hat, vor allen Alten- und Pflegeheimen hier „Kosten
sparen – Pflege abschaffen“ zu plakatieren, und sie hatten ganz
offensichtlich schon eine Ahnung, womit die FDP wohl plakatieren wird:
Kann ich dafür meine Wahlkampfkostenerstattung direkt der PARTEI
zukommen lassen? Wählen muss ich, wenn ich denn mal wissen will, welche
Bomben die Polizei in Baden-Württemberg nach §54a PolG BaWü[1]
beschafft und was sie damit gemacht hat (und das will ich), leider wen
anders...
Sucht nach netten Genoss_innen: ein Weißbüschelaffe – Raimond Spekking /
CC BY-SA 4.0 (via Wikimedia Commons)
An sich halte ich ja Soziobiologie für irgendwas zwischen Mumpitz und
reaktionärer Zumutung, jedenfalls soweit sie verstanden wird als Versuch,
menschliches Verhalten oder gar gesellschaftliche Verhältnisse durch
biologische Befunde (oder das, was die jeweiligen Autor_innen dafür
halten) zu erklären und in der Folge zu rechtfertigen.
Hier ist aber eine Geschichte (DOI 10.1126/sciadv.abc8790), die so
putzig ist, dass ich mir in der Beziehung etwas mehr Toleranz von mir
wünschen würde. Und zwar hat eine Gruppe von Anthropolog_innen um Rahel
Brügger aus Zürich das Kommunikationsverhalten von Weißbüschelaffen
untersucht (Disclaimer: Nee, ich finde eigentlich nicht, dass mensch
Affen in Gefangenschaft halten darf, aber in diesem Fall scheint
zumindest das expermimentelle Protokoll halbwegs vertretbar).
Dabei haben sie zunächst zwei Dialoge zwischen (den Proband_innen
unbekannten) Affen aufgenommen: Ein Affenkind hat einen erwachsenen
Affen um Futter angebettelt. Im einen Fall hat der erwachsene Affe
abgelehnt, im anderen Fall wohl etwas wie „schon recht“ gemurmelt.
Dann haben sie die Aufnahmen anderen Affen vorgespielt und haben dann
geschaut, ob diese lieber weggehen oder lieber nachsehen, wer da
geplaudert hat. Und siehe da: Die Tiere wollten viel lieber die netten
Affen sehen als die doofen. Bei den netten Affen haben nach gut 10
Sekunden schon die Hälfte der Proband_innen nachgesehen, wer das wohl
war, bei den doofen war das mehr so 30 Sekunden. Und bis zum Ende der
jeweiligen Versuche nach zwei Minuten wollten immerhin ein Viertel der
Proband_innen nichts von den doofen Affen sehen, aben nur ein Zehntel
nichts von den netten.
Moral: Seid nett, und die Leute mögen euch.
Ja, ok, kann sein, dass die Äffchen nur gehofft haben, dass sie auch
Essen kriegen, wenn schon das Kind was bekommen hat. Pfft. Ich sag ja,
Soziobiologie stinkt.
Nachbemerkung 1: Ich habe das auch nicht gleich in Science Advances
gefunden (da gäbs andere Journals, die ich im Auge haben sollte),
sondern in den Meldungen vom 4.2. des sehr empfehlenswerten Forschung
aktuell im Deutschlandfunk.
Nachbemerkung 2: Ich weiß, Literatur soll mensch nicht erklären, aber
die Überschrift ist natürlich ein Einwand gegen einen der Wahlsprüche
der Roten Hilfe: „Solidarität ist eine Waffe“. So klasse ich die
Rote Hilfe finde, der entschlossene Pazifist in mir hat die Parole nie
so recht gemocht. Mensch will ja eigentlich weniger Waffen haben, aber
ganz bestimmt mehr Solidarität.
After decades of (essentially) using other people's smarthosts to send
mail, I have recently needed to run a full-blown, deliver-to-the-world
mail server (cf. Das Fürchten lernen; it's in German, though).
While I had expected this to be a major nightmare, it turns out it's not so
bad at all. Therefore I thought I'd write up a little how-to-like thing –
perhaps it will help someone to set up their own mail server. Which
would be a good thing. Don't leave mail to the bigshots, it's too
important for that.
Preparation
You'll want to at least skim the exim4 page on the Debian wiki as
well as /usr/share/doc/exim4/README.Debian.gz on your box. Don't
worry if any of that talks about things you've never heard about at this
point and come back here.
The most important thing to work out in advance is to get your DNS to
look attractive to the various spam estimators; I didn't have that
(mostly because I moved “secondary” domains first), which caused a lot
of headache (that article again is in German).
How do you look attractive? Well, in your DNS make sure the PTR for
your IP is to mail.<your-domain>, and make sure
mail.<your-domain> exists and resolves to that IP or a CNAME
pointing there. Note that this means that you can forget about running a
mail server on a dynamic IP. But then dynamic IPs are a pain anyway.
Before doing anything else, wait until the TTL of any previous records
of this kind has expired. Don't take this lightly, and if you don't
unterstand what I've been saying here, read up on DNS in the
meantime. You won't have much joy with your mail server without a
reasonable grasp of reverse DNS, DNS caching, and MX records.
Use the opportunity to set the TTL of the MX record(s) for your
domain(s) to a few minutes perhaps. Once you have configured your mail
system, you can then quickly change where other hosts will deliver their
mail for your domain(s) and raise the TTLs again.
Exim4
Debian has come with the mail transfer agent (MTA; the mail server
proper if you will) exim4 installed by default for a long, long time,
and I've been using it on many boxes to feed the smart hosts for as long
as I've been using Debian. So, I'll not migrate to something else
just because my mail server will talk to the world now. Still, you'll
have to dpkg-reconfigureexim4-config. Much of what's being asked
by that is well explained in the help texts. Just a few hints:
“General type of mail configuration” would obviously be “internet site“.
Mail name ought to be <your domain>; if you have multiple domains,
choose the one you'd like to see if someone mails without choosing
any.
Keep the IP addresses to listen on empty – you want other hosts
to deliver mail on port 25. Technically, it would be enough to listen
only on the address your MX record points to, but that's a
complication that's rarely useful.
Relaying mail for non-local domains is what you want if you want to be
a smart host yourself. You'll pretty certainly want to keep this
empty as it's easy to mess it up, and it's easy to configure
authenticated SMTP even on clients (also see client connections on
avoiding authenticated SMTP on top).
Exim also is a mail delivery agent (MDA), i.e., something that will
put mail for domains it handles into people's mail boxes. I'll assume
below that you select Maildir format in home directory as the
delivery method. Maildir is so much cooler than the ancient mboxes,
and whoever wants something else can still use .forward or procmail.
And do split your configuration into small files. Sure, you'll have
to remember to run update-exim4.conf after your edits, but that litte
effort will be totally worth it after your next dist-upgrade, when you
won't have to merge the (large) exim4 config file manually and figure
out what changes you did where.
DNS Edits
With this, you should be in business for receiving mail. Hence, make
your MX record point to your new mail server. In an NSD zone file (and
NSD is my choice for running my DNS server), this could look like:
<your domain>. IN MX 10 <your domain>.
(as usual in such files: Don't forget the trailing dots).
A couple of years ago, it was all the craze to play games with having
multiple MX records to fend off spam. It's definitely not worth it any
more.
While I personally think SPF is a really bad idea, some spam filters
will regard your mail more kindly if they find an SPF record. So,
unless you have stronger reasons to not have one than just “SPF is a
bad concept and breaks sane mailing list practices, .forward files and
simple mail bouncing”, add a record like this:
<your domain>. 3600 IN TXT "v=spf1" "+mx" "+a" "+ip4:127.0.0.1" "-all"
– where you have to replace the 127.0.0.1 with your IP and perhaps add a
similar ip6 clause. What this means: Mail coming from senders in <your
domain> ought to originate at the IP(s) given, and when it comes from
somewhere else it's fishy. Which is why this breaks good mailing list
practices. But forunately most spam filters know that and don't
interpret these SPF clauses to narrow-mindedly.
SSL
I'm not a huge fan of SSL as a base for cryptography – X.509 alone is
scary and a poor defense against state actors –, but since it's 2021,
having non-SSL services doesn't look good. Since it's important to look
good so people accept your mail, add SSL to your exim installation.
Unless you can get longer-living, generally-trusted SSL certificates
from somewhere else, use letsencrypt certificates. Since (possibly
among others) the folks from t-online.de want to see some declaration
who is behind a mail server on such a web site, set up a web server for
mail.<your-domain> and obtain letsencrypt SSL certificates for them
in whatever way you do that.
Then, in the post-update script of your letsencrypt updater, run
something like:
(which of course assumes that script runs as root or at least with
sufficient privileges). /etc/exim4/ssl you'll have to create
yourself, and to keep your key material at least a bit secret, do a:
– that way, exim can read it even if it's already dropped its
privileges, but ordinary users on your box cannot.
Then tell exim about your keys. For that, use some file in
/etc/exim4/conf.d/main; such files are the main way of configuring the
exim4 package in non-trivial ways. I have 00_localmacros, which
contains:
Then, do the usual update-exim4.conf && service exim4 restart, and
you should be able to speak SSL with your exim. The easiest way to test
this is to install the swaks package (which will come in useful when
you want to run authenticated SMTP or similar, too) and then run:
swaks -a -tls -q HELO -s mail.<your domain> -au test -ap '<>'
This will spit out the dialogue with your mail server and at some point
say 220 TLS go ahead or so if things work, some more or less helpful
error message if not.
Aliases
Exim comes with the most important aliases (e.g., postmaster)
pre-configured in /etc/aliases. If you want to accept mail for people
not in your /etc/passwd, add them there.
The way this is set up, exim ignores domains; if you told exim to accept
mails for domain1.de and domain2.fi, then mail to both user@domain1.de
and user@domain2.fi will end up in /home/user/Maildir (or be
rejected if user doesn't exist and there's no alias either). If you
want to have domain-specific handling, add a file
/etc/exim4/forwards that contains pairs like:
drjekyll@example.org: mrhyde@otherexample.org
The standard Debian configuration of Exim will not evaluate this file;
to make it do that, drop a file wil something like:
# Route using a global incoming -> outgoing alias file
global_aliases:
debug_print = "R: global_aliases for $local_part@$domain"
driver = redirect
domains = +local_domains
allow_fail
allow_defer
data = ${lookup{$local_part@$domain}lsearch{/etc/exim4/forwards}}
into (say) /etc/exim4/conf.d/router/450_other-aliases. After the
usual update-exim4.conf, you should be good to go.
Client Connections
This setup only accepts mail for transport locally, and it will only
deliver locally. That is: This isn't a smarthost setup yet.
For delivery from remote systems, we're using ssh because pubkey auth is
cool. This even works from an exim on the remote system …
Wer Mitglied einer DGB-Gewerkschaft ist – und trotz allem rät schon
Immanuel Kant dazu –, wird es kennen: Zähneknirschen, wenn wieder mal
ganz schlimm reaktionäre Äußerungen von DGB („für die Nation!“), IGM
(„für das Wachstum!“), BCE („Mehr Kohle!“) oder GdP („ohne Taser für uns
seid ihr den Horden mit häufig wechselndem Aufenthaltsort
ausgeliefert!“) durch die Öffentlichkeit gereicht werden – wobei die
Auswahl nicht andeuten soll, andere Mitgliedsgewerkschaften seien ohne
Schuld.
Ich selbst bin in der GEW, und auch die treibt mir manchmal die
Tränen in die Augen, so etwa schon beim Titel der Presseerklärung
Solidarisch und verantwortungsbewusst prüfen vom vergangenen
Dienstag.
Da tun sich also GEW und fzs zusammen, um zentral an die Hochschulen zu
appellieren,
unter den derzeitigen Pandemiebedingungen grundsätzlich auf
Präsenzprüfungen zu verzichten und stattdessen alternative Formate
anzubieten.
Der schwerste Anwurf folgt sogleich:
Zu Beginn der Krise war es noch nachvollziehbar, doch dass ein Jahr
später immer noch keine digitalen kompetenzorientierten Prüfkonzepte
existieren [...] ist unverständlich und hochgradig gefährlich
Bevor ich den letzten Absatz des Textes gelesen hatte, war ich
entschlossen, einen wilden Verriss der Erklärung zu schreiben, doch
immerhin fand ich dort, wenn auch recht verzagt, etwas, das in die
richtige Richtung geht:
Zukunftsorientierter wäre es, die Zahl der Prüfungen zu reduzieren
[und was dann weiter kommt, tut schon wieder weh]
Bei allem Verständnis für die Zwänge der wettbewerbs-infundierten
Öffentlichkeit: Zumindest mit dieser zahmen Feststellung hätte die
Erklärung anfangen müssen, und wenn es geht mit „Mindestforderung“ statt
des wortklingeligen und inhaltsleeren „zukunftsorientierter“. Oder
besser: „Es braucht Corona nicht, um den Bologna-Prozess als
menschenfeindlichen Zirkus kenntlich zu machen, aber was normalerweise
nur ärgerlich ist, bringt jetzt jedenfalls potenziell Oma um.“
Nota bene: Auch das wäre eine zutiefst reformistische Position,
verglichen mit dem eigentlich angesagten „Prüfungen sind insgesamt
autoritärer Quatsch.“ Aber dass eine GEW sowas nicht sagen kann,
erkenne ich gerne an; den sich an so eine Deklaration anschließenden
Exodus der Lehrer_innen in den Beamtenbund will eingestandenermaßen
niemand haben.
Dennoch will ich hier ein wenig für eine wie ich glaube nicht-utopische,
aber doch ansatzweise fortschrittliche Kritik an Bolognadingen
argumentieren, die in etwa so aussieht: Die Prüfungsbulimie, bei der
Studis Semester um Semester vor allem in Klausuren und ähnlich
automatisierbaren, hust, Leistungskontrollen Punkte sammeln, bis sie
ihren Abschluss haben, ist weder selbstverständlich noch sinnvoll. Der
wirkliche Skandal ist, dass wir den Mumpitz in den 22 Jahren seit der
Bologna-Erklärung vom – dies horribilis – 19.6.1999 nicht wenigstens
haben erodieren können.
Nicht selbstverständlich
Überraschend viele Studis schütteln heute ungläubig den Kopf, wenn
ich erwähne, dass ich in meinem ganzen Physikstudium nur vier
abschlussrelevante Prüfungen hatte: Es gab vier mündliche Prüfungen zum
Hauptdiplom. Dazu traten vier mündliche Prüfungen zum Vordiplom, aber
die waren sozusagen zum Üben und spielten für die Abschlussnote keine
Rolle. Keine einzige Klausur. Nicht eine. Im ganzen Studium. Und das
war zwar im letzten Jahrtausend, ist aber noch keine 30 Jahre her.
Im Vergleich dazu dürften inzwischen bis zum Master in Physik in
Heidelberg um die 40 formale Prüfungen anfallen, von den in die
Abschlussnote fließenden wöchentlichen Übungsblättern und
Praktikumsgesprächen und Jodelwettbewerben ganz zu schweigen (eins davon
habe ich erfunden).
Das ist, so viel dürfte unstrittig sein, für Prüfende wie Geprüfte
unschön. Dennoch wäre es vielleicht hinzunehmen, wenn daraus ein
nennenswerter Nutzen entstünde. Jedoch: Weder anekdotisch noch vom
Inhalt etwa von Abschlussarbeiten oder frühen Veröffentlichungen her
gibt es auch nur den Hauch eines Hinweises, dass die Studis heute klüger
(oder meinetwegen „kompetenter“) aus dem Studium rauskämen als damals.
Wäre es also nicht vernünftiger, weit mehr der Zeit, die Lehrende und
Lernende gemeinsam verbringen, für Vermittlung und Gespräch zuzulassen
statt sie für tagelanges (bei den Lehrenden) und wochenlanges (bei den
Lernenden) Bütteln, Betteln und Kontrollieren zu vergeuden?
Ich sage nun nicht, dass das Diplom-System die Wucht in Tüten war.
Klar, dass sich „das Schicksal [d.i. die Abschlussnote] in
wenigen Stunden entscheidet“ ist auch Unfug, genauso wie schon die
Grundidee, Leuten eine Zahl aufzudrücken, die ihre, ja was eigentlich,
in diesem Fall vielleicht „Physizität“ (was immer das sein mag)
bescheinigt. An dieser Idee hängt jedoch so viel, dass ihre Korrektur
ein doch etwas größeres Projekt ist. Und so wärs doch schon mal ein
Fortschritt, erstmal weniger zu prüfen und die Knute aufs letzte
Vierteljahr des Studiums zu konzentrieren; immerhin ist dann dessen Rest
deutlich freier.
Im Übrigen stimmt bei einer halbwegs menschlichen Hochschulorganisation
natürlich auch das mit den „entscheidenden Stunden“ nicht wirklich. Als
jemand, der ein paar Dutzend Abschlussprüfungen abgenommen hat, kann ich
versichern, dass zumindest an Läden, an denen die Lehrenden die
tatsächlich studierenden Studis kennen, die Note einer mündlichen
Prüfung in aller Regel eine Gesamtwürdigung der Person sein wird. Um
das jetzt mal vorsichtig zu formulieren.
Nicht sinnvoll
Nun könnte mensch sagen: Andere Jobs stinken auch – sollen sich die
Hochschullehrenden nicht so haben und halt die bescheuerte Prüferei
machen. Die Studis haben eh nichts zu melden.
Vielleicht. Aber es ist doch eine schreckliche Vergeudung von
Lebenszeit und Kreativität, die Studis mit Dressur und Aufführung zu
beschäftigen – und wiederum habe ich genug Klausuren selbst gestellt, um
ein recht sicher sagen zu können: Mach eine Klausur, die nicht auf die
Aufführung von Dressur rausläuft und du hast eine Durchfallquote, die du
nicht haben willst.
Dagegen hätte ich gewettet (und wie oben gesagt verloren), dass die
notendruckbedingte Demontage der Übungsgruppen, die zumindest in Physik
und Mathe letztlich Herz der Lehre waren, sich drastisch auf Habitus und
meinethalben Kompetenzen der Studis in der Abschlussphase (da bekomme
ich sie derzeit vor allem mit) hätte auswirken müssen. Vor Bologna
konnten sich in solchen Übungsgruppen Studis, die Lust drauf hatten,
ohne große Sorge um spätere Konsequenzen ausprobieren – und wer nicht
wollte, hat halt abgeschrieben, was immerhin soziale Fertigkeiten
trainierte.
Nun hingegen, da jede Hausaufgabe sich irgendwo in der Abschlussnote
wiederfindet, haben sich die Übungsgruppen zu bitterem Ernst gewandelt,
Räume, in denen um jeden Punkt gefeilscht wird, denn er könnte ja den
Unterschied zwischen 1.4 und 1.5 machen (oder was immer). Und das
Gemeine ist: Das könnte er wirklich.
Speziell dieser Aspekt von Bologna, die reale und permanente Drohung mit
einer schlechten Abschlussnote, lässt sich mit noch so viel Open Book
oder Take Home oder was immer nicht in Ordnung bringen, nicht mal durch
die guten alten Hausarbeiten und Praktikumsgespräche. Solange die
Abschlussnote zwischen Betreuer_in und Studi steht, ist die in der
GEW-Erklärung beschworene „Solidarität“ nicht mal denkbar.
Es wäre ein interessantes Forschungsprojekt, herauszufinden,
warum hinreichend viele Studis aus diesem Prozess nicht als
intellektuelle Regenwürmer – Schlucken, Klausur schreiben, hinter sich
lassen – herauskommen, sondern doch ganz motiviert reizvolle
Wissenschaft machen.
Mir ewigem Optimisten scheint das ein starkes Zeichen für die
Kraft von Wissenschaft zu sein: Es ist wahrscheinlich fast egal, wie
der Kram vermittelt wird. Solange mensch den Leuten ein paar Bücher (in
welcher konkreten Darreichung auch immer) in die Hand gibt und sie etwas
Zeit mit ihnen verbringen lässt, solange mensch sie die Faszination
empfinden lässt, durch Modelle und Theorien korrekt Verhalten von
Menschen, Natur oder (inzwischen noch aufregender) Rechnern
vorherzusagen oder wenigstens zu verstehen, finden sie schon ihren Weg.
Warum dann?
Nach diesen Beobachtungen stellt sich die Frage recht dringend, wie es
überhaupt zu diesem komplett dysfunktionalen System kam. Im speziellen
Fall von Bologna wäre es eine lange Geschichte, in der die Beteiligten –
Profen, Bildungsminister, Bertelsmänner und leider auch Teile der GEW –
ihre diversen Süppchen gegen die jeweils anderen kochen wollten.
Niemand wollte die anderen in den eigenen Topf gucken lassen, und als
endlich alle gemerkt hatten, dass alle anderen auch nur vor leeren
Töpfen standen, könnte das auch niemand mehr zugeben.
Es gibt aber ein viel allgemeineres Muster, auf das es mir hier ankommt:
Die autoritäre Versuchung. Da ist ein Problem in einer Hierarchie, hier
so in etwa „Meine Studis sind faul und hören mir nicht zu”. Eine
Umgangsweise wäre, sich zu fragen, warum die Studis kein Interesse –
oder hilfsweise Einsichten in Notwendigkeiten – haben und zu
versuchen, Interesse oder Einsicht zu wecken. Das klingt gut und ist,
davon bin ich überzeugt, auch gut.
Aber dazu muss in der Hierarchie auf Augenhöhe geredet werden, und
mensch entdeckt gerne auch eigene Fehler, eigene Faulheiten. Das ist
für die Leute oben in der Hierarchie nicht sehr schön, was wiederum für die
Popularität der Alternative sorgt: Der Ausübung von Zwang, sei es durch
Drohung mit Noten, sei es durch Drohung mit Gewalt (was jetzt an der Uni
schon sehr rar, im Strafrecht oder zwischen Staaten aber die Regel ist).
Prüfungen sind aus dieser Perspektive nichts weiter als der Versuch,
Aushandlung und auch Didaktik durch Zwang zu ersetzen – daran mag
manches „digital“ (hmpf: Digitalisierung) sein, solidarisch ist
jedenfalls nichts, und für eine Gewerkschaft gehören sich solche
Methoden eigentlich auch nicht.
Aber die Armen?
Wenn ich Menschen – vor allem solche aus gewerkschaftsnahen Kreisen – in
Diskussionen dazu gebracht habe, so viel zu konzedieren, kommt ziemlich
verlässlich der Einwand, die Verschulung durch Bologna sei ja für
Oberschicht-Kids vielleicht ärgerlich, für Leute aus „bildungsfernen
Schichten“ hingegen ganz wichtig. Die hätten nie gelernt,
selbstgesteuert Wissen zu erwerben, ihre Zeit zu managen, aus eigener
Neugier zu handeln. Ohne Druck verkämen die vor der Playstation, und
sie kämen spätestens …
As part of my DIY mail server project, the other day I put a POP3
server on that box – solid-pop3d if you want to know –, and since
that server doesn't have SSL built in, I configured stunnel to provide
that, re-using a certificate I get for mail.tfiu.de's https server from
letsencrypt. Trivial configuration:
One of my least favourite pastimes is figuring out cryptic OpenSSL error
messages, and so I immediately fed this to $SEARCH_ENGINE. The
responses were, let's say, lacking rigour, and so I thought I might use
this blog to give future message googlers an explanation of what the
problem was in my case.
What OpenSSL was saying here simply was: there's no private key in the
PEM.
Where would the fun be if OpenSSL had said that itself?
In case this doesn't immediately tell you how to fix things: “PEM files”
in today's computing [1] are typically bundles of a “key”
(that's the pair of public and secret key in sensible language), a
“certificate” (that's a signed public key in sensible language), and
possibly intermediate certificates that user agents may need to figure
out that the signature on the certificate is any good, based on what
certificate authorities they trust.
All these things almost always come in base64 encoded ASCII these days
(that's the actual meaning of “PEM“), which is nice because you can
create your “PEM file” with cat if you've got the other parts. For
instance, in my dealings with letsencrypt, I'm creating the key using:
openssl genrsa 4096 > $SERVERNAME.key
Then I build a certificiate signing request in some way that's
immaterial here, and finally call the great acme-tiny something like:
With that, all I have to do to make the “PEM file” is:
cat $SERVERNAME.crt intermediate.pem > $SERVERNAME.pem # not
That was basically what I had in my certificate updating script, and
that is what caused the error in my case. Spot it? Right, I failed to
cat the key file in. I should have written:
So – if you're seeing this error message, while I can't say why your key pair
is missing in the PEM, I'd strongly suspect it is. Diagnosis: look for
-----BEGIN RSA PRIVATE KEY-----
somewhere in the file (and make sure all the dashes are present if you
see something that looks like that and you're still seeing the odd
OpenSSL message).
I've had to look that up myself: PEM actually has
nothing to do with all kinds of cryptographic material cat-ed
together into one file. Rather, it stands for Privacy-Enhanced
Mail, something the IETF tried to establish in the early 1990ies
where today (regrettably) S/MIME sits and what we could all
mercifully forget if people finally just adopted PGP already.
RFC 1421 – where a good deal of PEM is defined – was published in
1993 and still talks about BITNET! Oh wow. While this sort of PEM
is dead, it did pioneer the ASCII-armoring of X.509 material.
Of course, ASCII-armoring as such had been around for many years at
that time – let me just mention uuencode, the cornerstone of software
distribution on Usenet –, and PGP had even used base64 for crypto
stuff, but all these (sensibly) steered clear of X.509.
And ASCII-armored X.509 is PEM's legacy, as acknowledged by RFC
7468 (published in 2015, more than 20 years after the original
PEM). Of course, RFC 7468 doesn't mention the .pem extension,
let alone anything about the practice of assembling multiple kinds of
cryptographic material in files with that extension.
I'm reading PDFs quite a bit, most of them in my beloved zathura.
So, I was dismayed when today I paged through a book that showed in
zathura as on the left side of this figure:
The metrics are off so badly that readability suffers.
Rather than try to fix the PDF, I remembered I had for a long time
wanted to look into using mupdf as a backend for zathura rather than its
default poppler, if only because poppler used to have a shocking amount
of rather serious bugs a couple of years ago (now that I think of it:
It's been a while since I last heard of any – hm).
Bringing up the PDF in mupdf looked a lot better (the right panel in the
above figure). Which then led to a bout of yak shaving, because
there is a plugin for zathura that promised to do what I wanted,
zathura-pdf-mupdf, but of course nobody has bothered to package it up
for Debian yet. So… let's try to build it.
It's probably not a good sign that the package's README talks about
make to build the thing, whereas the web page talks about a build
system with commands meson and ninja (that, frankly, I had never heard
about before, but at least it's in Debian). But, never mind, let's do
meson build && cd build && ninjia (oh wow).
Of course, building fails with something like:
../zathura-pdf-mupdf/index.c: In function ‘build_index’:
../zathura-pdf-mupdf/index.c:68:7: error: unknown type name ‘fz_location’; did you mean ‘fz_catch’?
fz_location location = fz_resolve_link(ctx, document, outline->uri, &x, &y);
^~~~~~~~~~~
A quick web search shows that this fz_location is part of the mupdf API
and has indeed undergone an API change. So, I backported libmupdf from
Debian testing (I'm on Debian stable almost always), and because that
needs mujs, I backported that, too. Mujs sounds a lot like javascript
in PDF, and that's where I first think gentoo: with its USE flags it
would proabably make it easier to just keep javascript out of my PDF
rendering engines altogether. Which is something I'd consider an
excellent idea.
Anyway, with a bit of hacking around – I don't have a libmupdf-third
library that the meson build file mentions but perhaps doesn't need any
more – I then got the plugin to build.
Regrettably, zathura still would not use mupdf to render, saying:
error: Could not load plugin '/usr/lib/i386-linux-gnu/zathura/libpdf-mupdf.so'
(/usr/lib/i386-linux-gnu/zathura/libpdf-mupdf.so:
undefined symbol: jpeg_resync_to_restart).
Again asking a search engine about typical scenearios that would lead to
this failure when loading a plugin, there's quite a bit of speculation,
one of it being about using libjpeg-turbo instead of libjpeg. Which
made me see what this plugin links again. Fasten your seat belts:
Now, I appreciate that glueing two pieces of relatively complex code
together can be a bit involved, but: 69 libraries!? Among them Xrandr,
Xinerama, wayland (which I don't use), systemd (even if I used it: what
would that plugin have to do with it?), gpg-error, selinux, and then
some things I've never heard about.
I'm sorry, but this is wrong. Which makes me think hard if gentoo's USE
flags might not really be the way to go in this day and age of exploding
dependencies.
Holy cow.
In case you came here from a search engine that hit on one of the error
messages: After writing this, I was hungry and let it sit. The one
thing I can tell you is that the elusive jpeg_resync_to_restart is
in libjpeg, indeed. What I don't know yet is why that library hasn't
made it into the heap of libraries that the plugin links to.
I'd suspect that zathura and mupdf are built against different libjegs –
but then I'd have to explain how that would have happened. Hm.
Nachtrag (2021-02-13)
Well, I couldn't let it sit, so here's what I needed to do (and
I suspect I'd have found it in one of the upstream branches):
The libjpeg thing really is that the libjpeg library needs to be
linked into the plugin in Debian; the details I can't quite work
out, because I'd say the linker should be able to work that out, but
clearly it's not, because the situation is actually being cared for
in the plugin's meson file. However, you need to manually flip a
switch: this would be a ./configure run in autoconf, but here, the
command line is:
meson setup --wipe -D link-external=true build
However, one link-time dependency is missing with the mupdf from
Debian bullseye, and that's the spooky mujs. To fix this, patch the
build file like so:
Noch vor einem Jahr hatte sich kaum jemand vorstellen können, wie
schnell die Staaten die Grenzen im März 2020 geschlossen haben – aber,
das lässt sich hier leider wirklich nicht wegdiskutieren, im Prinzip
können Bewegungseinschränkungen bei so einer Pandemie je nach
Verteilung und Entwicklung schon mal nicht einfach nur atavistische
Reflexe sein, und so will ich einmal nicht allzu sehr die Zähne
fletschen.
Die Ergebnisse in der zentralen Frage – letztlich: Wärs besser gewesen,
wir wären alle daheim geblieten? – sind wenig überraschend, wie auch das
Fazit zur Frage der Massentests für Heimkehrer_innen:
Ein längeres Angebot zur freiwilligen, kostenlosen Testung für
Reiserückkehrer hätte vielleicht die Eintragungen vor und während der
Herbstferien besser erfasst, die zweite Infektionswelle aber nicht
verhindert.
Richtig bemerkenswert fand ich hingegen folgende Abbildung in dem
Artikel:
Sie entstand, indem die RKI-Leute erstmal als Zeiteinheit „Tage vor oder
nach dem Beginn der Sommerferien im jeweiligen Bundesland“ gewählt
haben. An der Ordinate stehen die üblichen Wocheninzidenzen pro 100000
Einwohner_innen, und zwar für Fälle, für die eine Exposition im
Ausland bekannt ist. Insofern ist es kein Wunder, dass die Zahlen im
Laufe der Zeit hochgehen. Das muss schon allein aufgrund der
gestiegenen Reisetätigkeit so sein.
Wertvoll wird die Abbildung aber als Mahnung, bei allen Metriken immer
zu bedenken, was wie gemessen wurde. Denn richtig auffallend verhalten
sich hier Bayern und Baden-Württemberg scheinbar anders als alle
anderen: Ihre Kurven steigen erhebnlich früher und steiler als die der
anderen Bundesländer.
Es wäre jedoch unvernünftig, anzunehmen, die Dinge hätten sich in den
anderen Bundesländern in der Realität wesentlich anders verhalten
(jedenfalls, soweit es die westlichen Bundesländer betrifft). Und in
der Tat liefert schon das RKI die Erklärung für den Unterschied: Die
Südländer hatten einfach so spät Ferien, dass ihre Reiserückkehrenden in
die allgemeine Testpflicht fielen sind und mithin die Erfassung
Infizierter früher in deren Krankheitsverlauf und darüber hinaus bereits
bei den Indexfällen passierte.
Ob das jetzt eine weise Verwendung von Ressourcen war oder nicht, muss
ich glücklicherweise nicht entscheiden. Zumindest für die nächsten
Jahre aber – solange sich die Menschen noch an die Diskussion um die
Massentests im Sommer 2020 erinnern – ist diese Grafik aber, glaube ich,
eine wunderbare Art, den Einfluss von Messung (und in diesem Fall von
Politik) auf scheinbar unumstößliche Grafiken und Metriken zu
illustrieren.
Ich werde das beim nächsten Mensen-Ranking auspacken. Oder, wenn wieder
mal das Bruttoinlandsprodukt verkündet wird.