Stranger Than Usual

Die beste Krankheit taugt nichts.

— Ruth Blumenröder

Rollenspielszenen: Geistersuppe

Rollenspielszene. Die Gruppe hat spontan entschieden, eine U-Bahn-Station zu erkunden, in der es spukt. Niemand ist da, viel ist kaputt, aber alle Speisen sind noch frisch. Rocket Mel isst von einer Nudelsuppe und verschwindet. Nettle spricht mit ein paar Kakerlaken. Diese teilen ihr mit, dass an der Station ein Gott haust, der Menschen in die Geisterwelt zieht und dann ihre Seelen frisst. Die Kakerlaken selbst seien zu insignifikant dafür. Sie haben auch von der Suppe gegessen, aber sie sind noch da und sehen die Geisterwelt sowie die echte Welt gleichzeitig.

Nachdem es Jacksnipe, immernoch blind, auch in die Geisterwelt verschlagen hat (ein fehlgeschlagener Versuch von Tea, die Suppe ungefährlicher zu machen), will Tea jetzt systematisch experimentieren und idealerweise auch mit Jacksnipe kommunizieren. Vielleicht…? Tea wirf ein Walky-Talky in die Suppe. Ohne den gewünschten Erfolg:

Das Walky-Talky ist noch da, aber jetzt ist es kaputt.

Erlebnis Sonnenfinsternis: Der Komödie erster Teil

Siehe auch: der Prolog.

Es ist in dieser Geschichte niemand gestorben oder im realen oder übertragenen Sinne tief gefallen, deswegen bezeichne ich diese Geschichte hier als Komödie. Man könnte auch sagen, dass sich irgendwelche Götter über uns lustig machen wollten. Doch fangen wir am Anfang an. Wir sind zu dritt nach Oviedo, einer Stadt in der nordspanischen Region Asturien, gereist. Dort soll die totale Sonnenfinsternis besonders gut zu beobachten sein.

10. August 2026, zwei Tage vor der Sonnenfinsternis

Wir sind für die totale Sonnenfinsternis nach Oviedo gereist. Die Reise hat den ganzen vorherigen Tag gedauert, deswegen haben wir am 10. August einen relativ ruhigen Tag gemacht. Wir haben eingekauft, ein bisschen die Umgebung erkundet. Und uns natürlich überlegt, von wo wir die Sonnenfinsternis beobachten. Die Idee: Wir fragen bei den allgegenwärtigen Touristeninformationsstellen der Stadt nach, beschaffen uns eine Wanderkarte, suchen uns einen guten, idealerweise angehobenen, Platz zum Beobachten der Sonnenfinsternis aus und erkunden dann am nächsten Tag, ob der Platz tatsächlich brauchbar ist.

Während ich das Essen zubereitete, gingen also meine Mitreisenden (darunter die eine Person von uns, die wenigstens ein bisschen Spanisch sprach) zu den Touristeninfos. Ich war schon lange fertig, bevor sie zurückkamen. Keine der Touristeninformationsstellen war besonders hilfreich. Wanderkarten der Umgebung gab es nicht. Es gab halbwegs nützliche Karten der Stadt, aber keine Information dazu, wo man gut die Sonnenfinsternis anschauen könnte.

Wir haben also bisher nur eine vage Idee, wo wir hingehen wollen. Ein Mitreisender und ich haben uns außerdem einen Park in Ovideo angeschaut. Wir waren ungefähr zu der Zeit da, zu der am 12. August die Sonnenfinsternis stattfinden würde, und man konnte die Sonne zu dieser Zeit von dort aus gut sehen. Es würde allerdings vermutlich sehr voll werden. Wir haben dabei noch einen alten Tunnel durch Oviedo entdeckt, der uns schnell zu unserer Unterkunft zurück brachte. Ein bisschen Stress war also von unseren Schultern genommen: Wir hatten einen Fallback für die Beobachtung der Sonnenfinsternis, falls unsere Suche also kein besseres Ergebnis hatte, mussten wir uns zumindest keine Sorgen machen, keinen Ort zu haben.

Wir entschieden uns dann, unter Konsultation diverser Karten (auch topografischer Karten), es mit dem Peña Llampaya zu versuchen, einem 561 m hohem Felsen. Wir würden einfach am nächsten Tag in einer Buchhandlung eine Wanderkarte kaufen, uns über die Buslinien aufklären lassen (die Websites der Stadt und des örtlichen ÖPNV-Unternehmens waren nämlich nur mäßig hilfreich) und dann eine Probewanderung zum Peña Llampaya machen.

11. August 2026, Tag vor der Sonnenfinsternis

Nach einem ordentlichen Frühstück ging es also auf der Suche nach einer Buchhandlung. Glücklicherweise gibt es davon ein paar. Die erste, am nächsten liegende, war allerdings kein Treffer. Sie lag direkt bei der Kathedrale und hatte hauptsächlich religiöse Literatur und christliche Kinkerlitzchen. Zwar auch ein paar Bildbänder über die Stadt, aber keine Wanderkarten.

Die nächste Buchhandlung war auch eine Niete. Sie war zwar recht groß, aber hatte keine Wanderkarten. Glücklicherweise konnte uns eine Buchhändlerin dort einen Tipp geben: Der Buchladen Librerìa Cervantes könnte Karten haben. Auch dort mussten wir eine Weile suchen, aber dann haben wir Wanderkarten im Maßstab 1:25.000 gefunden, die uns sehr hilfreich waren.

ÖPNV in Oviedo und Umgebung, Teil 1

Am Busbahnhof war es schwierig, Auskunft zu bekommen: Der Busbahnhof war nämlich für Fernbusse. Trotzdem konnte uns dort eine Person behilflich sein und uns sagen, wie wir nach Ules kommen. Abgesehen davon waren wir aber auf die Websites des ÖPNV angewiesen. Und die haben uns mehrere Probleme gemacht:

  1. Es gibt keinen Online-Routenplaner, wie er in deutschen Städten schon seit über zwanzig Jahren üblich ist. Man muss sich seine Route, mit Umsteigen, also manuell heraussuchen
  2. Sind die Zeitangaben für den Plan, den man online (oder an den Bushaltestellen) bekommt, nur für die Abfahrtszeiten an den Starthaltestellen. Wenn man also irgendwo mitten drin einsteigen muss, kann man daraus nicht schließen, wann der Bus in etwa an der Haltestelle sein wird.

Die Bushaltestelle, zu der wir uns begeben haben, hatte glücklicherweise eine elektronische Anzeigetafel für die Ankunft der Busse. Dummerweise war der Bus, den wir nehmen wollten (A2), erst in 44 Minuten kommen sollte. Aber hey, wir können ja den Bus nach Les Campes nehmen und von da aus zu Fuß gehen. Wir sind da nur leider eine Station zu weit gefahren, und mussten ein ganzes Stück an der Straße zurück gehen. Hatte ich erwähnt, dass es sehr sonnig und heiß war?

Die Wanderung

Ab Les Campes war es eigentlich eine schöne Wanderung, die aber erst wirklich gut wurde, als wir in Ules ankamen, von wo aus wir uns in die Hügel schlagen wollten. Dort gab es auch noch eine Quelle, bei der wir unsere Trinkflaschen auffüllen konnten sowie ein paar Leute, die uns mit dem Weg weiterhelfen konnten. Von Ules ist es ein Stückchen bis zum Peña Llampaya, von dort aus aber nur ein Katzensprung zum nächsten Dorf, Llampaya, von wo aus wir den Bus zurück nehmen wollten.

Auf dem Weg gibt es zum Beispiel den Eingang einer verlassenen Eisenmine:

Ein mit Balken abgesützter, nicht sehr hoher Eingang zu einer Höhle, von der man nichts sieht weil sie dunkel ist. Drumherum kleine Pflanzen. Über dem Eingang das Schild „MINA FERRICA LA PASSERA“

Irgendwann kamen wir dann auf dem Peña Llampaya an. Es war sonnig, man hatte eine sehr gute Sicht in alle Richtungen. Schatten gab es aber nicht, obwohl wir ein bisschen Abkühlung gebraucht hätten. Immerhin: Der perfekte Ort, um eine Sonnenfinsternis zu beobachten. Es war mittlerweile später Nachmittag, ich habe dieses Foto hier mit dem Rücken zur Sonne gemacht. Das hier ist die Richung mit der schlechtesten Aussicht. Da die Sonnenfinsternis um 20:28 ihre Totalität haben sollte, war die Lage optimal.

Zwei ausgeschwärzte Personen sitzen auf felsigem, mit vertrocknetem Gras bewachsenen Untergrund. Es ist sonnig, der Himmel ist blau. Im Hintergrund sind rechts grün bewachsene Hügel, links eine Stadt im Tal und eine grüne, leicht ausgetrocknete Landschaft.

Ich habe auch mal meine Sonnenfinsternisbrille ausprobiert, und auch geschaut, ob ich mit meiner Smartphonekamera (und Sonnenfinsternisbrille vor der Linse) eine Aufnahme der Sonne machen kann. Antwort: Im Prinzip ja, aber:

Eine weiße Ellipse, die nach außen hin zunächst gelb, dann orange wird bis sie schließlich in den dunklen Hintergrund übergeht. Quer durch den weiße Fleck geht eine Linsenreflektion.

Ich weiß nicht, warum das elliptisch aussieht, aber immerhin hat es überhaupt funktioniert. Wir waren uns jedenfalls sicher: das ist der Ort, um die Sonnenfinsternis zu beobachten.

ÖPNV in Oviedo und Umgebung, Teil 2

Der Weg nach Llampaya war, wie auf der Karte verzeichnet, kurz. Doch in Llampaya war keine Bushaltestelle. So schien es zumindest. Zwar ist auf Openstreetmap eine am Ortseingang eingezeichnet, und auch die öffentliche Karte verzeichnete eine Haltestelle (eher in der Ortsmitte, aber diese Karte war auch ungenau). Das war schlecht, denn unser Plan war, zur Sonnenfinsternis den Bus nach Llampaya zu nehmen (Linie O2, die auch im Plan stand), und auf dem Hinweg den kurzen Weg zum Peña Llampaya zu nehmen. Auf dem Rückweg würden wir dann nach Ules laufen müssen, weil der Bus in Llampaya nicht mehr so spät fährt. Für diesen Tag aber war es eigentlich noch früh genug. Aber wie soll man einen Bus nehmen, wenn man die Bushaltestelle nicht findet?

Wir sind dann notgedrungen zum nächsten Dorf gelaufen. Auch dort war eine Haltestelle verzeichnet, auch dort war keine Haltestelle in Sicht. Nicht einmal ein kleiner Hinweis, dass ein Bus dort halten könnte, von einem großen Schild oder gar einem Wartehäuschen ganz zu schweigen. Also weiter an der Straße entlang nach Ules. Mittlerweile fingen bei mir Kopfschmerzen an, vermutlich wegen der Hitze. In Ules angekommen, konnten wir über das Dorf hinwegsehen, das in einem Tal lag, und sahen auf der anderen Seite unseren Bus abfahren. Ein paar Minuten später, an der Bushaltestelle, bestätigten wir, dass es tatsächlich unser Bus war. Also noch einmal 50 Minuten warten, bis der nächste Bus kam.

Immerhin: Wir hatten einen guten Ort, um am nächsten Tag die Sonnenfinsternis zu beobachten, und einen Plan, wie wir dorthinkamen. Wir wollten rechtzeitig aufbrechen, falls der Bus nach Llampaya doch nicht existierte, aber die Wettervorhersage war gut und wir konnten erwarten, dass unserer Beobachtung der Sonnenfinsternis nichts im Weg stand. What could possibly go wrong?

Erlebnis Sonnenfinsternis: Prolog

Ich bin zurück aus dem Urlaub! Wir haben, wie eine Reisegefährtin es ausdrückte, „die Sonnenfinsternis erlebt“. Hier ist zum Beispiel ein Bild zu Beginn der teilweisen Verdeckung der Sonnenfinsternis:

Grau, mit einem leichten Gradienten von hellerem Grau oben im Bild zu dunklerem Grau unten.

Und hier ein Bild zehn Minuten vor der Totalität:

Wieder der graue Gradient, dieses Mal ein bisschen dunkler.

Für die Totalität haben wir uns dann ein bisschen zurückgezogen, weil auf der Bergspitze wo wir waren eine spontane Tanzparty ausgebrochen war. Deswegen kann man hier auch ein bisschen Landschaft sehen:

Oben ein stark verrauschtes, minimal hellerer Bildteil, unten in Schwarz die Silhouette einer bewachsenen Landschaft.

Dieser Post hier ist nur ein Teaser. Wie es dazu gekommen ist, dass wir bei dichtestem Nebel auf einem Hügel standen und die Sonnenfinsternis nicht gesehen, aber erlebt haben, kommt demnächst in:

Wir haben jedenfalls deutlich weniger gesehen, als einige anderen Menschen im Bereich der teilweisen Sonnenfinsternis gesehen haben.

Mein digitaler Garten

Ich bin schon vor ein paar Jahren über den Konzept des digitalen Gartens („digital garden“ auf Englisch) gestoßen. Das Konzept ist nicht komplett klar definiert, aber für mich bedeutet es, eine persönliche Website zu bauen, auf der ich mich ausdrücken und alle möglichen Spielereien ausprobieren kann.

Das steht insofern im Gegensatz zu diesem Blog, als dieses Blog ein Blog ist. Hier gibt es mehr oder weniger regelmäßig Posts, ältere Posts rücken nach unten und irgendwann ins Archiv. Mein digitaler Garten ist ein Ort, der sich zwar weiterentwickelt, aber nicht chronologisch sortiert sein wird.

Mein digitaler Garten ist hier. Bisher ist da nicht viel, ich habe nur einen kleinen Einführungstext geschrieben und ein paar Sachen verlinkt, die ich ohnehin dort liegen hatte. Auch das Layout wird sich noch ändern. Bisher ist es schlicht, aber unpersönlich. Für viele Sachen geeignet, aber nicht für einen digitalen Garten.

Die Weiterentwicklung wird aber ein paar Tage warten müssen. Ich bin ab morgen auf Reise, und mein Laptop kommt nicht mit. Dafür kann ich danach hoffentlich etwas über eine Sonnenfinsternis berichten.

Planetariumswebsitebloat

Ich hatte heute einen sehr schlechten Tag, und als ob alles andere noch nicht schlimm genug war, musste ich auch noch auf die Website des Planetarium Bochum schauen. Mit einem Smartphone.

Die Website ist praktisch unbenutzbar. Zum einen lädt sie Unmengen an Daten herunter. 9,58 MiB heruntergeladene Daten, insgesamt 10,38 MiB unkomprimiert. Alleine die Transportkompression war also größtenteils nicht vorhanden (ich stand zu dem Zeitpunkt mitten in der Pampa des Ruhrgebiets und LTE ist halt auch nicht wahnsinig schnell). Davon 6,7 MiB an Bildern (bei einem Planetarium vrständlich, auch wenn die sich ein bisschen mehr Mühe mit den Bildformaten hätten geben können. Oh, und es hätten nicht alle Bilder auf einmal geladen werden müssen. Vielleicht erst einmal nur die Bilder, die man auch wirklich anzeigen will.

Viel schlimmer wiegen aber die 2,55 MiB an Javascript. Die Seite ist größtenteils informativ. Da hätte eine schlichte Sammlung von HTML-Seiten reichen können. Nein, man muss hier zweieinhalb Mebibyte an Javascript laden um Funktionen nachzubilden, die der Browser schon selber kann. Für eine komplexe Web-App vielleicht verständlich. Das hier ist aber eine einfache Website! Aber dass dieses Javascript geladen werden muss, ist nicht das Schlimmste. Das Schlimmste ist, dass es auch ausgeführt werden muss.

Und ich weiß nicht, was die Entwickler dieser Sache gemacht haben, aber das Javascript ist langsam. Unabhängig von den Ladezeiten langsam. Ein Hamburger-Menü zu öffnen hat auf meinem Smartphone geruckelt. Ein Menü zu öffnen! Das ist etwas, dass Computer seit den 90ern ohne Ruckeln können! Ich weiß nicht, ob die Animation mit JS oder CSS (wovon ebenfalls 800 kiB geladen werden) gemacht wurden, aber ich würde raten, dass es JS war).

Ich lese ja immer, dass man beim Webdesign auch immer auf Menschen mit billigen Geräten, die nur minimale Performance bringen, achten muss. Das geht oft so weit, dass man selbst einige CSS-Konstrukte nur sehr sparsam einsetzen sollte. Und ich halte das auch für richtig. Ich habe es nur noch nie erlebt, dass mein eigenes Gerät mit akzeptabler Leistung Probleme hat, eine eigentlich einfache Website flüssig anzuzeigen. Von der Performance ist diese Website also nicht nur mangelhaft, sondern ungenügend. Schulnote 6.

Andere Punkte sind auch nicht viel besser. Viel zu viel Werbung darüber, was die Sternwarte alles macht auf der Startseite, Anfahrt und Öffnungszeiten sind viel zu schwierig zu finden. Seitenbetreiber von Websites, bei denen es um einen speziellen Ort geht, sei es ein Geschäft, ein Museum oder eben das Planetarium kapieren einfach nicht, dass es das ist, was Besucher oft als erstes wissen wollen, wenn sie die Seite aufrufen. Immerhin waren die Informationen da. Das ist ausreichend, Schulnote 4.

Auf der positiven Seite: Laut dem Cookie-Banner gibt es nur technisch notwendige Cookies und Cookies für interne Datenerfassung „um die Website zu verbessern“. Letztere kann man verweigern. Insbesondere aber keine Werbetrackingcookies und keine Heuchelei, dass ihnen viel an der Privatsphäre liegt und sie diese deswegen mit 793 anderen Parteien teilen wollen. Leider wird noch JS von einer Drittpartei geladen, die potentiell auch Cookies setzen könnte. Trotzdem, im Verhältnis zu vielen Seiten eine gute Bilanz, Schulnote 2.

Insgesamt überwiegt aber der Bloat. Die Seite ist technisch einfach schlecht gemacht und auf weniger neuen Smartphones einfach nicht benutzbar. Wenn man die Seite vereinfacht, dann bieten sich hier drei Punkte, um die Performance zu verbessern:

  • weniger (oder kein) Javascript
  • weniger komplexes CSS (von dem bestehenden CSS wird vermutlich eh nur ein kleiner Teil verwendet)
  • Bilder optimieren, Bilder erst laden, wenn sie benötigt werden, überlegen, ob man auf der Startseite überhaupt so viele und große Bilder braucht

Rollenspielszenen: Ich hab nix gemacht!

Rollenspielszene. Die Gruppe hat es an dem Remorshka vorbeigeschafft und den Schatz im Gepäck. Mit von der Partie: Prarr 2, einer der beiden Scawn, denen die Gruppe begegnet ist (der andere, Prarr 1, wurde von dem Remorshka erwischt).

Gegen Abend kommen sie an einem Herethroy-Dorf an, kriegen ein Abendessen und dürfen dort übernachten. Die Herethroy sind nur skeptisch gegenüber Prarr 2, aber da sich ein Zi Ri für ihn verbürgt, lassen sie auch ihn herein.

Cory ist skeptisch, Prarr 2 neigt dazu, dumme Dinge zu tun. Mitten in der Nacht hört er Schritte und wie die Tür zu der Scheune, in der die Gruppe übernachtet, sich öffnet. Er hechtet zur Tür, blickt auf den mondbeschienenen Dorfplatz und sieht nichts. Hört nichts. Aber da war etwas. Er schleicht sich links aus der Tür heraus und stolpert fast über Prarr 2, der sich flach an die Außenwand presst. Cory packt ihn und hebt ihn hoch. Prarr 2 rechtfertigt sich:

Ich hab nix gemacht!

Don't be negligent

Im Jahr 2009 war Google auch schon riesig. Mit vielen fragwürdigen Geschäftspraktiken, Datensammelwut, etc. Dennoch habe ich damals noch in einem Blogpost geschrieben:

Ich weiß bei Google ja nie so recht, wie ich mich fühlen soll.

Einerseits ist es ein großer Konzern, der im Netz eine große Macht hat, und immer wieder auffällt, wenn es um Sammlung von Nutzerverhalten geht. Andererseits spendet Google aber auch einiges an freie Softwareprojekte, und entwickelt selbst u.a. mehr oder weniger freie Software (z.B. Chrome).

Mittlerweile ist meine Meinung da nicht mehr so balanciert. Klar, Google macht immernoch ein paar gute Sachen, aber den Grundsatz „Don't be evil“ schon vor Jahren aus ihrem Verhaltenscodex gestrichen. Mittlerweile kümmert sich Google auch weniger um die Qualität der eigenen Suchergebnisse. Dazu habe ich heute einen Artikel von Cory Doctorow gelesen. Er vergleicht Google mit einem abwesenden Vermieter, den der Zustand der Mietshäuser nicht kümmert. Konkret geht es u.a. um Scam-Seiten, die Seiten von Geschäften oder Events nachahmen, sich dann Werbeanzeigen bei Google kaufen und über der offiziellen Seite des entsprechenden Geschäfts oder des Events angezeigt werden, wo sie dann die Waren oder Tickets des eigentlichen Anbieters teurer verkaufen.

Diese Wucher könne Google ohne riesigen Aufwand verhindern, schreibt Doctorow, weil Google ohnehin schon eine Liste verifizierter Gewerbe hat. Aber Google macht es halt nicht. Wenn man Google hier keine böse Absicht unterstellen will, so kann man Google auf jeden Fall Fahrlässigkeit vorwerfen.

Und Google kommt damit durch, weil sie halt im Internet extrem mächtig sind. Ich versuche selber, Google-Services so wenig wie möglich zu verwenden. Aber spätestens bei Youtube-Videos ist halt Schluss. Die gibt es i.d.R. nirgendwo sonst. Und das ist nur der private Teil. Bruflich ist mein Chef leider ein sehr großer Google-Fan, und auch alle unsere beruflichen Accounts laufen über Google. E-Mail, Kalender, Chat, Single-Sign-On für nicht-Google-Dienste. Und davon werden wir auch nicht wegkommen, denn jetzt zu wechseln würde ein immenses Chaos und immense Kosten verursachen. Das ist auch die Macht von Google.

PS: Den Job aufgeben möchte ich auch nicht. Erstens ist er gut bezahlt, zweitens wird der Jobmarkt gerade von Softwareingenieuren überschwemmt, die von Firmen rausgeworfen wurden, die glauben, LLMs könnten einen Softwareentwickler ersetzen und drittens komme ich mit den Kollegen sehr gut klar und weiß, dass das nicht in jeder Firma so gut läuft.

Der inner-platform effect

So manche Antipattern habe ich bisher nicht oder nur in sehr milder Form gesehen. Der inner-platform effect ist eins davon. Dieses Antipattern beschreibt im Prinzip, dass eine sehr flexible gestaltete Software eine schlechte Nachbildung der Technologie enthält, mit der sie gebaut wurde. Bei Datenbanken passiert das gerne, wie auch die englische Wikipedia beschreibt:

In the database world, developers are sometimes tempted to bypass the RDBMS, for example by storing everything in one big table with three columns labelled entity ID, key, and value. While this entity-attribute-value model enables the developer to break out from the structure imposed by an SQL database, it loses out on all the benefits […].

Nun geht es immer noch komplizierter. In einem Projekt, an dem ich gerade beruflich arbeite, wird ein alter IBM-Mainframe ersetzt. Mein Projekt ist nur eines von vielen Projekten in diesem Zusammenhang bei dem Kunden. Die alten Daten aus dem Mainframe (die keine bezeichnenden Feldnamen haben sondern typischerweise Bezeichner nach dem Muster ABC80878 oder DEF1075, wurden bei der Migration dann nicht in ein schönes, passendes Datenbankschema übertragen, sondern in eine wie in dem Zitat aus der Wikipedia beschriebenen ID/Schlüssel/Wert-Struktur.

Nur dass das natürlich zu einfach wäre. Deswegen gibt es zunächst eine Tabelle, die alle Schlüssel enthält, und zwar mit einem Schlüsseltyp, einer Schlüssel-ID und einem Schlüsselnamen. Man kann sich dann über Schlüsseltyp und Schlüsselnamen die Schlüssel-ID holen. Die kann man dann mit einem INNER JOIN mit der Tabelle verbinden, in der die Werte zu der Schlüssel-ID in Kombination mit einer anderen ID (sagen wir mal, eine Account-ID) zu finden sind. Der Wert ist aber nur der möglicherweise überschriebene Wert, eventuell braucht man noch einen Default-Wert. Den holt man sich dann über ein LEFT JOIN noch mit herein. Und dann kommen da noch ein paar Kleinigkeiten, so dass man auf einen SELECT-Ausdruck mit zwei INNER JOINs, einem LEFT JOIN und noch einem inneren SELECT-Statement kommt.

Und dieser SELECT-Ausdruck wird dann wieder in einem größeren Ausdruck verwendet und zwar für jedes Feld, das man Abfragen will, einer. Dazu kommen noch ein paar andere verschachtelte SELECT-Statements und ein paar JOINs und WHEREs.

Am Ende hat man eine query, die über mehrere dutzend Zeilen Code geht, anstelle eines einfachen SELECT A, B, C from X inner join Y on X.id = Y.id where Y.foo = 'bar'; Und hier kommt wieder genau das „man verliert alle Vorteile des Datenbanksystems“ aus dem Wikipedia-Zitat ins Spiel: Die Abfrage liefert gerade einmal 22.000 Ergebnisse und braucht dafür 90 Sekunden. Und man kann hier nicht mal pagen, ein limit 100 dauert trotzdem 90 s, weil man sich mit dieser so komplexen Query über alle Datenbankindizes und Query-Optimierung der Datenbank hinwegsetzt.

Ein anschaulicheres Beispiel für den inner-platform effect habe ich noch nicht erlebt.

Der alljährliche Nextcloud-Breakdown

Ich mag ja eigentlich nextcloud. Es ist eine gute Möglichkeit, selber eine Datenhaltungssoftware zu hosten, es steht unter der AGPL, also einer freien Lizenz, die verpflichtet, den Quellcode allen Nutzern bereitzustellen, und es hat viele Funktionen und Einstellungsmöglichkeiten.

Die Einstellungsmöglichkeiten sind aber an sich schon ein Problem. Wie ich schon in „Die dreifache Hölle der Nextcloud-Konfiguration“ geschrieben habe, muss man sowohl nginx als Server kompliziert konfigurieren, dann globale PHP-Einstellungen machen und dann auch noch Einstellungen in Nextcloud selbst. Seit ein paar Versionen jetzt auch noch einen separaten Service und Docker für Plugins (wenn man Plugins haben will).

Anstatt also einfach einen kleinen Server zu starten, den ich dann mit nginx als reverse-Proxy dem Internet vorstellen kann, muss ich von Pontius nach Pilatus laufen, um alle Einstellungen zu machen. Ein Nextcloud-Server hat sogar eine Administratorseite, die auflistet, was alles falsch konfiguriert ist. Allein die Tatsache, dass so etwas notwendig ist, sagt schon viel.

Dazu kommt, dass ich immer wieder Ärger mit Updates habe. Eigentlich habe ich es mir einfach gemacht: Ich habe apt-Pakete von einer Drittpartei geladen, von jurisic.org. Damit kann ich Nextcloud einfach über den Paketmanager aktualisieren. Das Problem ist aber: Ein Major-Version-Upgrade von nextcloud geht immer nur auf die direkt nachfolgende Version. Und jurisic überspringt manchmal Versionen.

In diesem Fall hat mir das eine Menge Arbeit gemacht, manuell Updates zu fahren und danach dem Paketmanager zu erklären, dass jetzt alles in Ordnung sei und er wieder übernehmen darf. Viele graue Haare, nur um ein Update zu fahren.

Jetzt kommen natürlich die Leute, die sagen „Nimm doch einfach das Docker-Image von Nextcloud und lass es als Container laufen“. Und um ehrlich zu sein, das ist vermutlich nicht die schlechteste Idee. Ich könnte mir den ganzen PHP-Krams auf dem Server sparen, alles wäre schön gekapselt in einem Container, und meine nginx-Config würde sich auf ein Minimum beschränken.

Trotzdem müsste ich eine Menge umstellen und korrekt konfigurieren, vom Mounten des Datenverzeichnisses in den Container über die Datenbankkonfig bis hin zu den TLS-Zertifikaten. Ganz zu schweigen davon, dass ich auf dem Server bisher überhaupt keine Docker-Installation habe, die ich auch korrekt einrichten muss, ohne über Fallstricke zu fallen, die dort liegen.

Und wenn ich mir diese Mühe mache ist die Frage: gibt es nicht ein weniger komplexes Tool, das für mich dieselben Aufgaben erledigt? Ich nutze Nextcloud derzeit nur für Dateien. Was ich an Features gerne hätte, wäre:

  • Multi-User-Funktionen
  • Teilen von Dateien mit anderen usern und externen Leuten (über einen Link, mit Ablaufdatem, optional mit Passwort)
  • eine Option für Two-Factor-Authentication
  • automatisches Hochladen von Fotos und anderen Dateien von mobilen & Desktop-Clients (insbes. automatisches Hochladen von Android)
  • Dateivorschau für Verbreitete Dateiformate (insbes. Bilddateien)
  • gute Privacy-Optionen für die Nutzer
  • Bonuspunkte: Unterstützung für CalDav und CardDav

Sollte natürlich auch unter einer freien Lizenz stehen. Idealerweise halt kein PHP. Gibt es so etwas? Ich bin es satt, dass mir Nextcloud jedes Jahr einmal zusammenbricht und ich mir Stunden um die Ohren schlage, um die Probleme zu beheben.