Stranger Than Usual

It isn't "wrong", just different. Unnecessarily difficult in many ways, but in other ways refreshingly straightforward, so long as you can keep the cosmic horror only just barely out of sight.

Porting libyaml to Safe Rust: Some Thoughts

Digitale Polychromie

Es ist ja mittlerweile allgemein bekannt, das antike griechische Statuen nicht weiß (oder welche Farbe der Stein aus dem sie gemacht waren halt hatte), sondern bunt bemalt waren. Wikipedia nennt das „antike Polychromie“. Die Farbe ging dann im Laufe der Zeit ab, kann aber von Resten heute noch rekonstruiert werden.

Später haben die Menschen dann Skultpuren im antiken Stil angefertigt und sie unbemalt gelassen, weil das ihrer Vorstellung der Antike entsprach und sie dann damit auch irgendwelche Ideale verbinden. Später dann, im 19. Jahrhundert, begannen Archäologen damit, die Farben zu rekonstruieren, heutzutage machen sie das immer noch, teils mit modernster Technologie.

Trotzdem ist das Bild der Antike in der Populärkultur geprägt von weißen Marmorstatuen und ~Fassaden. Man nehme nur Filme, die in der Antike spielen, oder auch einfach Asterix-Comics. Dass diese ganzen Sachen bunt bemalt werden, wird eher als „Fun Fact“ verwendet. Im Internet meist in Listen wie „10 misconceptions you have about ancient Rome“.

Ich frage mich, was wohl passiert, wenn die Leute in ein paar hundert Jahren unsere Webseiten wieder aus der Versenkung hervorholen. Da sind dann natürlich viele Daten verloren gegangen, die Browser von heute laufen nicht mehr, die Spezifikationen für CSS und HTML sind verloren. Alles was man hat sind Textdateischnipsel mit Markup. Und weil sich die Leute nach einer Zeit sehnen, in der Computer noch einfach waren, sehen sie, dass das wohl einfach Text war, schwarz auf weiß, mit ein paar Auszeichnungen für Überschriften, Hervorhebungen, Tabelle, Absätze etc.

Und dann bauen sie Websites im „antiken“ Stil nach, um die Ideale von damals wieder aufleben zu lassen. Bis dann jemand sich die anderen Daten drumherum anschaut. Die, die erst nur für Datenmüll gehalten wurden: „Hey Leute, diese CSS-Dateien! Das ist gar kein Datenmüll! Das sind Layout-Anweisungen! Wir haben das rekonstruiert, die meisten Websites waren nicht schwarzweiß, von oben nach unten, sondern bunt und mit kompliziertem, teils auch horizontalem Layout!“

Als Beispiel, hier einmal die Wikipedia-Seite zu antiker Polychromie mit CSS und ohne CSS (CC BY-SA 4.0 Wikimedia Foundation):

Screenshot eines Wikipedia-Artikels, oben sind Links zum Bearbeiten und ein Suchfeld, links ist ein Navigationsmenü, der restliche Platz wird vom Artikel eingenommen

Screenshot eines Wikipedia-Artikels, ohne CSS-styles. Die ganze sichtbare Seite wird vom Artikel eingenommen, oben sind aber zwei Links um zur Suche bzw. zur Navigation zu springen

Microfiction

Das Internet is ein riesiger Ort, und obwohl es eine Menge hässlicher Ecken gibt (und nicht selten sind die hässlichen Ecken die, hinter denen am meisten Geld steckt, ironischerweise), gibt es auch hin und wieder wunderschöne Edelsteine im Dreck.

So habe ich zum Beispiel vor Kurzem einen Autor (oder Autorin? Oder wasauchimmer, steht nicht dabei) entdeckt, der (die?) winzige, aber meist sehr schöne Geschichten schreibt.

Ursprünglich waren die Geschichten wohl auf Twitter, mit einer Zeichenbegrenzung von 140 Zeichen, ich habe sie aber auf Mastodon entdeckt.

Manche der Geschichten sind witzig, manche philosophisch, regen zum Nachdenken an.

Aber wie können diese Geschichten überhaupt so kurz sein? Nun, i.d.R. bauen sie auf bekannten Tropen auf, so dass der erste Satz schon die Szene setzt. Dabei gibt es ein paar Elemente, die immer wieder vorkommen, z.B.

  • die Prinzessin, der Drache und der Ritter (nicht unbedingt immer alle drei zusammen)
  • die Schwertmeisterin (oder der Schwertmeister, kann man nicht so genau sagen, ist englisch)
  • Katzen
  • Außerirdische, die landen, oder Außerirdische, die anderweitig mit Menschen kommunizieren
  • Zeitmaschinen
  • der/die Auserwählte

Nicht selten gibt es einen Twist am Ende. Manchmal sind die Geschichten geradeaus zu verstehen. Manchmal versteht man sie erst, wenn man am Ende angekommen ist. Manchmal versteht man sie erst ganz anders, bis am Ende der Twist kommt.

Ich kann nur empfehlen, sich diese Geschichten anzuschauen. Autor_in hat auch eine Website, aber dort sind nicht alle Geschichten direkt zu finden.

Turing-vollständige Schriftarten

Vor ein paar Wochen bin ich über llama.ttf gestoßen. Das ist eine Schriftart, die gleichzeitig ein Large Language Model ist und, ähnlich wie z.B. ChatGPT, Text generieren kann.

Da hatte ich natürlich einen gewissen WTF?-Moment. Wie geht das? Nun, es stellt sich heraus, dass HarfBuzz, ein verbreiteter text shaper, eine Funktion hat, die es einer Schriftart ermöglicht, beliebigen WebAssembly-Code auszuführen, um die Ausgabe zu beeinflussen.

HarfBuzz wird nun in allen möglichen Projekten verwendet, unter anderem auch in Firefox und Chrome. Damit können dann auch Schriften korrekt dargestellt werden, die etwas komplizierter darzustellen sind als die auf der lateinischen Schrift basierenden Schriften. Und damit man auch wirklich alles machen kann, gibt es da jetzt auch die Option, WebAssembly-Code direkt in die Schriftart einzubinden. Dieser Code wird dann von HarfBuzz ausgeführt.

Ich bin ja durchaus dafür, dass man jede Schrift der Welt auch im Computer korrekt darstellen können soll. Der Hauptentwickler von HarfBuzz war laut Wikipedia unglücklich mit mangeldem Support für die persische Schrift. Das war natürlich kein Zustand, und es ist gut, dass daran etwas getan wurde.

Aber bei Turing-vollständigem Code in der Schriftart hört für mich der SPaß auf. Erstens, weil natürlich genau das passieren wird, was auch mit JavaScript und Websites passiert ist: Webentwickler sind zu faul etwas richtig zu machen und fummeln dann lieber ein bisschen JS zusammen um eine Browserfunktionalität zu duplizieren und alles komplizierter zu machen. So erwarte ich, dass Designer von Schriftarten auch irgendwann nicht mehr die eigentlichen Features eines Schriftartenformats verwenden werden, sondern lieber etwas mit WebAssembly zusammenhacken, was dann das gesamte Textrendering langsamer macht und an vielen Stellen nicht funktioniert, weil dann doch nicht HarfBuzz verwendet wird.

Viel wichtiger aber: Das ist fucking code execution. Nun kann man argumentieren, dass das ja in einer Sandbox ist. Das kann nicht nach Hause telefonieren. Das kann nicht auf Dateien zugreifen oder sonst irgendwas machen. Aber wie wir wissen: Es gibt immer wieder Bugs in solchen Sandboxes, und irgendwie schafft dann jemand, daraus auszubrechen.

Bei Javascript ist das schon öfters passiert. Eine Type-confusion hier, ein Overflow dort, oder ein bisschen Rowhammern und – bahm! sitzt man nicht mehr im Sandkasten. HarfBuzz ist auch nur in C geschrieben. Egal wie gut ein Entwickler ist, früher oder später passiert irgendwo ein Fehler auf.

Meine Prognose: Irgendwann innerhalb der nächsten 10 Jahre wird uns das auf die Füße fallen. Und dann, ähnlich wie bei log4shell damals werden sich alle wundern, warum es dieses Feature überhaupt gab und ob unsere Software nicht zu komplex geworden ist.

etilqs

Ich hatte ja Anfang des Jahres mal erwähnt, das Daniel Stenberg, der cURL-entwickler, E-Mails sammelt. Unter diesen E-Mails waren viele von Leuten, die irgendwo seine Adresse in der cURL-Lizenz gefunden haben und ihn jetzt für alle möglichen Probleme verantwortlich machen, von beschwerden über Computerspiele bis hin zu angeblichen Hackerangriffen.

Heute habe ich gelernt: Sqlite hatte 2006 ein ähnliches Problem:

The default prefix used to be "sqlite_". But then Mcafee started using SQLite in their anti-virus product and it started putting files with the "sqlite" name in the c:/temp folder. This annoyed many windows users. Those users would then do a Google search for "sqlite", find the telephone numbers of the developers and call to wake them up at night and complain.

For this reason, the default name prefix is changed to be "sqlite" spelled backwards. So the temp files are still identified, but anybody smart enough to figure out the code is also likely smart enough to know that calling the developer will not help get rid of the file.

Datenlecks in Gefängnis-Apps

Puh, in den letzten Tagen kommen hier so viele Sachen rein, dass ich ständig irgendwas schreiben muss (eigentlich kommt immer so viel rein, aber jetzt habe ich noch Urlaub). Deswegen halte ich mich kurz.

Lilith Wittmann hat wieder zugeschlagen (das ist die von Zerforschung) und einige Sicherheitslücken in Verwaltungssoftware für Gefängnistelefone entdeckt. Ergebnis: Haufenweise persönliche Daten von Insassen können ohne jede Authentifizierung abgerufen werden.

Ist nicht nur scheiße, sondern aktiv illegal, wie Wittmann in dem verlinkten Artikel auch erklärt. Aber meiner Erfahrung nach wird da niemand für belangt.

Googles ohne Endlosscrolling.

Ich habe mich ja schon einmal über Endlosscrolling aufgeregt. Und dann lese ich neulich, dass Google Endlosscrolling auf der Suchergebnisseite abschafft. Gut streng genommen war es nicht endlos sondern ging nur über maximal vier Seiten oder so. Trotzdem ein gutes Zeichen. Warum macht Google das? Aus Performancegründen anscheinend. Und ich hätte gedacht aus Usabilitygründen.

Das Lustige ist, dass ich nicht einmal mitbekommen hatte, dass Google so etwas implementiert hatte, weil ich die Google-Suche kaum noch verwende (meistens nutze ich DuckDuckGo. Aber anscheinend haben die das 2021/2022 eingeführt. Naja, jetzt ist es weg und die Welt ist ein bisschen besser.

Windows ist Freeware?

Gerade geht die Meldung durchs Internet, dass Mustafa Suleyman, Manager bei Microsoft behauptet hat:

With respect to content that is already on the open web, the social contract of that content since the 90s has been that it is fair use. Anyone can copy it, recreate with it, reproduce with it. That has been freeware, if you like. That's been the understanding […].

Alo erst einmal ist das natürlich falsch. Rein rechtlich steht (vereinfacht gesagt) erst einmal alles, was man erschafft unter Urheberrechtsschutz. Man muss das nicht einmal extra erwähnen. Natürlich wird im Internet häufig kopiert und weiterverbreitet, aber streng genommen ist das nicht ohne Weiteres erlaubt. Vielen Nutzern ist es egal, wenn ihre Werke verbreitet werden oder sie freuen sich darüber. Memes zum Beispiel leben davon.

Wenn man aber zum Beispiel die Produktfotos in einem Onlineshop nimmt: Die gehören häufig noch dem oder der Fotograf:in. Ich habe vor ein paar Jahre mal ein Gespräch mit einem Kollegen geführt, dessen Lebensgefährtin Fotografin ist. Die leben davon. Firmen wie Tschibo lizenzieren dann die Bilder für ein paar Monate (weil es ihnen zu teuer ist, die unbegrenzt zu lizenzieren), vergessen, die Bilder nach Ablauf der Lizenz offline zu nehmen und kriegen dann Ärger von der Fotografin.

Zwei unterschiedliche Fälle, aber es gibt eine wichtige Gemeinsamkeit: Sobald irgendjemand versucht, Geld mit den nicht lizenzierten Werken zu machen, werden Leute oft sauer.

So wie zum Beispiel Bill fucking Gates himself, im Jahr 1976. Der war sauer, weil Computer-Hobbyisten seinen Basic-Interpreter untereinander unentgeltlich ausgetausch haben. Damals war das normal. Bill Gates hat proprietäre Software praktisch erfunden. Und war damit so erfolgreich, dass sich Richard Stallman genötigt sah, freie Software explizit als Gegenentwurf zu definieren.

Über nun fast 50 Jahre hat Microsoft alles getan, um ihr Urheberrecht and Windows & Co durchzusetzen, inklusive gängelnder Copyright- und DRM-Maßnahmen. Und jetzt stellt sich einer deren Manager hin und sagt, dass alles was offen im Web steht Freiwild ist? Das ist dreist.

Übrigens: Windows ist frei im Netz downloadbar (installieren ohne Lizenz wir vermutlich schwierig, aber darum geht es ja nicht).

Offene Lizenzen

Eine kleine Anmerkung noch: Natürlich gibt es auch jede Menge Leute, die explizit wollen, dass ihre Software oder ihre Werke frei geteilt werden. Um das zu ermöglichen gibt es freie Lizenzen wie z.B. die GPL für Software oder die Creative Commons-Lizenzen für andere Werke. Letztere sind eher ein Lizenzbaukasten, so kann man zum Beispiel kommerzielle Nutzung erlauben oder ausschließen.

Das Wichtig hier ist: Leute stellen ihre Werke absichtlich unter diese Lizenzen und wollen, dass sie geteilt werden.

Auch interessant: Manche dieser Lizenzen sehen vor, das Derivate ebenfalls unter einer freien Lizenz stehen müssen. Nach meinem Rechtsverständnis müsste also ein LLM oder ein Bildgenerator, der (u.a.) mit CC-lizenzierten Werken trainiert wurde, auch unter einer CC-Lizenz stehen.

Nie wieder ist immernoch

Dieses Wochenende hält die AfD ihren Parteitag in meiner Heimatstadt, Essen. Das können wir uns natürlich nicht gefallen lassen. Deswegen wurde eine Demonstration organisiert und zehntausende Leute kamen. Die Hauptdemo ist heute.

Ich war da, und muss sagen, diese Demo gibt mir ein bisschen Hoffnung. Da sind die unterschiedlichsten Teilnehmer. Verschiedene politische Parteien, von der MLPD über die Linke, die Grünen, die SPD bis hin zum Essener Oberbürgermeister (CDU). Eine Vereinigung verschiedener Religionsgemeinschaften, bestehend u.a. aus katholischer und evangelischer Kirche, Juden, Muslimen und Sikh. Die Rektorin der Uni Duisburg-Essen. Aktivisten. Journalisten, z.B. von Correctiv. Queergruppierungen. Eine Gewerkschaftschefin steht zusammen mit einem CEO auf der Bühne, um gemeinsam gegen die Bedrohung von rechts zu sprechen. Leute allen Alters waren da. Eltern mit kleinen Kindern. Jugendliche. Junge Erwachsene. Alte Leute (z.B. Omas gegen Rechts). Kinder und Enkel von verfolgten des Naziregimes. Hunde mit Schildern auf dem Rücken oder an der Leine. Kurz: es war bunt.

Ach ja: ein, zwei Sprecher auf der Demo haben bekannt gegeben, dass die Angestellten der Grugahalle (wo der AfD-Parteitag stattfindet) heute nicht zur Arbeit erschienen sind. Ob das alle von denen sind, die meisten oder nur ein paar weiß ich nicht, aber trotzdem: Hut ab.

„Nie wieder“ ist jetzt.

Die laufende Figur in Unicode 16 🮲🮳

Das Ziel von Unicode ist es ja, einen universellen Zeichensatz bereitzustellen. Dazu gehört, dass alle anderen Zeichensätze verlustfrei in Unicode übersetzt werden können. Das führt mitunter auch dazu, dass auch sich auch Zeichen, dessen Herkunft und Bedeutung ein Mysterium sind in Unicode wiederfinden.

Unicode kriegt auch immer wieder Updates, weil immer wieder auffällt, dass manche Schriften noch nicht repräsentiert sind. Oder dass wir anscheinend noch mehr Emojis brauchen. Oder auch, weil die Zeichensätze von irgendeinem alten System noch nicht in Unicode abbildbar waren.

So zum Beispiel der Zeichensatz des Macintosh II. Ach, und welche Zeichen sollen da schon drin sein, die es nicht auch anderswo gibt? Naja, wie eine paar Leute auf Mastodon herausgefunden haben gab es da auch Zeichen, die zusammengesetzt eine laufende Figur abbilden.

Nun ist das Unicode 16, das ist noch nicht veröffentlich und kann sich noch ändern. Ich hoffe aber, das ändert sich nicht, ansonsten habe ich in ein paar Monaten ein Problem mit ungültigem Unicode oder falschen Zeichen in diesem Blogpost. Die laufende Figure ist diese hier:

🮲🮳

Bei mir wird das schon korrekt angezeigt, auf den meisten Windows/MacOS/Android-Geräten wohl noch nicht. Das ist aber einfach nur ein Problem mit der Schriftart. Wenn keine installierte Schriftart diese Glyphen enthält, dann kann das nicht angezeigt werden (und da Unicode 16 noch nicht veröffentlicht ist, kann man auch niemandem einen Vorwurf machen).

Für die, bei denen das noch nicht dargestellt wird:

Eine rennende Strichfigur

Und das Schöne ist: Weil man den alten Zeichensatz ja verlustfrei nach Unicode convertieren können muss (ein Text nach Unicode convertiert muss also zurückconvertierbar sein und wieder den Ursprungstext ergeben), besteht diese rennende Figur, wie im Original, aus zwei code points, die man beliebig voneinander trennen kann. Ich kann die Figur also auch durch ein Portal gehen lassen:

🮲▏   ▕🮳

Technische Details

Anscheinend hatte der Macintosh II auch das Apple-Logo im Zeichensatz, das konnte aber aus Markengründen nicht in Unicode aufgenommen werden.

Die zwei Codepoints für diese Figur sind übrigens

U+1FBB2 LEFT HALF RUNNING MAN
U+1FBB3 RIGHT HALF RUNNING MAN

Die legacy-Symbole sind eine wahre Fundgrube für außergewöhnliche Zeichen. Ich kann nur empfehlen, sich da einmal durchzuwühlen.

CDU Hessen und das Deutschlandticket

Als 2022 das 9-Euro-Ticket, der Vorläufer des Deutschlandtickets eingeführt wurde, gab es kurz danach Kritik, weil es angeblich zu wenig genutzt wurde (die Quelle dazu finde ich gerade nicht mehr). Das war aber auch in der Urlaubszeit, wo weniger Leute und vor allem weniger Kinder zur Arbeit bzw. zur Schule fahren. Aber weil das Ticket so schlecht ankam, so die Kritiker, sollte es wieder abgeschafft werden.

Heute dagegen spricht sich die CDU Hessen gegen eine Weiterführung des Deutschlandtickets aus. Denn es sei ein

quersubventioniertes Ticket, welches noch mehr Menschen in das aktuell nur begrenzt funktionierende und an vielen Stellen bereits überlastete System einführen soll

Mit anderen Worten: Es muss weg, weil es zu erfolgreich ist. Das ist natürlich Bullshit. Wir brauchen einen Verkehrswandel weg vom Auto. Ganz weg vom Aut werden wir nicht kommen, aber wir müssen möglichst viel Individualverkehr in öffentliche Verkehrsmittel verlagern. Das macht die Straßen sicherer, die Städte ruhiger und senkt den CO₂-Ausstoß. Um das zu schaffen, müssen wir drei Voraussetzungen erfüllen:

  1. der öffentliche Verkehr ist niederschwellig zu benutzen
  2. der öffentliche Verkehr ist eine solide Alternative zum eigenen Auto
  3. der öffentliche Verkehr hat die Kapatität, alle zu transportieren, die ihn benutzen wollen.

Punkt 1 erledigt das Deutschlandticket. Es ist nicht ganz so niederschwellig, wie ich es mir gerne wünsche, aber es hat einen passablen Preis und vor allem: Man kann damit überall ohne nachzudenken den Nahverkehr verwenden.

Punkte 2 und 3 sind schwieriger, wobei ich das Problem hauptsächlich bei Punkt 2 sehe. Da brauchen wir Investitionen. Das hat auch die CDU-Generalsekretärin erkannt:

In jedem Fall klar ist, dass die Bundesregierung die dringend nötigen Investitionen in die Infrastruktur der Bahn sicherstellen muss.

Jupp. Wenn wir das ganze Geld zum Beispiel nicht in Autobahnausbauten oder Dienstwagenprivilegien stecken würden, könnte das auch funktionieren. Oder wenn wir gegen den Klimafond vorgehen, aus dem das hätte finanziert werden können. Stattdessen wurde das ganze System über Jahrzehnte kaputtgespart. Wer war da an der Regierung?

Grünen-Politikerin Walther erinnert daran, dass das von der Union geführte Bundesverkehrsministerium über Jahrzehnte Investitionen in die Schiene aktiv verhindert habe.

Ach was. Naja, und jetzt will die hessische CDU halt das Deutschlandticket abschaffen, um damit den Nahverkehr wieder fit zu machen. Nur dass den dann halt wieder weniger Leute benutzen werden wollen. Wir brauchen verdammt noch einmal beides!