blog · git · desktop · images · contact & privacy · gopher


Vereinfachung, Relaunch

Diese Webseite samt Blog existiert seit 2006. Mancher Code unter der Haube ist nochmal älter. Und dann ist das auch noch PHP. Zwar hatte ich vor einigen Jahren dann immerhin mal die MySQL-Datenbank abgeklemmt – in den frühen 2000er Jahren herrschte ja irgendwie der Irrglaube vor, alles müsse MySQL benutzen –, trotzdem blieb mir das Blog ein Dorn im Auge. Das war einfach alles alt und gammelig, außerdem viel zu komplex.

Zeit für einen Neustart. Längst überfällig.

Damit das hier kein reines Meta-Posting wird, will ich ein bisschen auf die technischen Details eingehen.

Das neue Design

Mit „Design“ meine ich nicht die Optik, sondern wie das Blog und auch die restliche Webseite unter der Haube aufgebaut ist.

Zuerst einmal habe ich mich von jeglichem serverseitigem Code verabschiedet. In dem Zuge habe ich auch den Apache gekickt und durch einen lighttpd ersetzt. Ich schreibe nun bei mir lokal auf dem Rechner die Blogpostings und sonstigen Seiten. In gewissem Sinne gehe ich damit zu dem Prinzip zurück, das man vor ganz vielen Jahren schon verfolgt hat, als man seine Webseiten nämlich noch mit Frontpage unter Windows erstellt und dann per FTP auf einen Server geladen hat. Rein vom Prinzip her spricht ja auch nichts dagegen, jenes in statischer Form vorzubereiten, was sich sinnvoll vorbereiten lässt.

Ich will aber kein HTML von Hand schreiben. Das ist einfach nur anstrengend und sonst nichts. Ich will schon gar nicht irgendwelche Inhaltsverzeichnisse von Hand pflegen müssen. Eine gewisse Automation muss also schon her.

Bei mir auf der Festplatte hat das Blog jetzt ein Layout dieser Art:

blog/postings/
├── 2006-05-13/
│   └── 0/
│       ├── POSTING-de.md
│       └── POSTING-en.md
├── 2006-05-16/
│   └── 0/
│       └── POSTING-de.md
├── 2006-06-14/
│   └── 0/
│       ├── POSTING-de.md
│       ├── xp_sec_empty_tcpview.jpg
│       └── xp_sec.jpg
...

Pro Tag gibt es also ein Verzeichnis und dann noch einmal Unterverzeichnisse für den Fall, dass ich pro Tag mehrere Postings verfassen sollte. Anhand der JPG-Dateien wird auch schon ein wichtiges Prinzip deutlich: Ich möchte, dass ein Blogposting eine in sich abgeschlossene Einheit ist. Alles, was dazugehört, soll direkt neben dem eigentlichen Posting im selben Verzeichnis liegen. Schluss mit dem Verstreuen der Daten in verschiedene Verzeichnisse oder gar verschiedene MySQL-Tabellen. Alles schön kompakt.

An „de“ und „en“ kann man auch erkennen, dass das Blog jetzt bilingual ist. Dazu unten mehr.

Was ist noch wichtig? „.md“. Nicht nur die Blogpostings, sondern auch alle anderen Seiten schreibe ich in Markdown. Das ist sehr komfortabel. Markdown hat die schöne Eigenschaft, dass es auch in Rohform sehr gut les- und editierbar ist. Es gibt so gut wie keine obskuren Syntaxelemente. Ich hatte sogar kurz darüber nachgedacht, einfach blankes Markdown vom Webserver ausliefern zu lassen, habe dann aber doch die Einsicht gewonnen, dass klickbare Hyperlinks eine gute Sache sind.

Um nun aus Markdown HTML zu machen, verwende ich ein kleines Pythonskript und die Bibliothek mit dem griffigen Namen „markdown“. Dieses Skript rufe ich nicht direkt auf, sondern habe noch ein paar Shellskripte, die im Wesentlichen aber nur aus for-Schleifen, die über all die „*.md“-Dateien iterieren. Dabei wird auch das Inhaltsverzeichnis erzeugt – übrigens auch erstmal als Markdown, erst nachträglich wird daraus HTML.

Bei dieser Vereinfachung fällt die Suche hinten runter und auch die Kommentare. Bei der Migration der Daten habe ich wichtige Kommentare jedoch übernommen und einfach unten an die Dokumente angehängt. Dass es auf der Webseite keine direkte Kommentarfunktion mehr gibt, heißt ja auch nicht, dass es sowas prinzipiell nicht mehr gibt oder ich das nicht mehr haben will. Ich möchte daher jeden einladen, der kommentieren möchte, auf der Startseite auf Contact zu drücken und mir dann ganz traditionell eine E-Mail zu schreiben. :-)

Was auch hinten runterfällt, ist ein PHP-Skript, welches on-the-fly Thumbnails für Bilder erzeugt. Ist das schlimm? Ich weiß nicht. Ich habe Bilder jetzt einfach verlinkt und finde, dass das völlig ausreicht.

Englisch als Hauptsprache

Ich denke ja immer, dass das hier eh keiner liest, trotzdem gibt es manchmal Feedback von Menschen und manche davon stammen sogar aus fremden Ländern. Zuletzt von Yu-Jie Lin. Er hatte meine Blogpostings nur mit Google Translate lesen können, was aber nun auch nicht gerade das gelbe vom Ei war. Trotzdem hatte er dadurch immerhin eine grobe Vorstellung von dem, was hier stand.

Mit meinem alten PHP-Code hatte ich schlichtweg keine Möglichkeit, hier irgendwas multilingual zu gestalten. Jetzt habe ich diese Möglichkeit. Wie man oben schon sieht, gibt es „POSTING-de.md“ und „POSTING-en.md“. Meine Wrapper-Skripte bauen daraus dann zwei verschiedene Inhaltsverzeichnisse und fertig ist die Laube.

Ich habe mich entschieden, Englisch als Hauptsprache der Webseite zu verwenden. Lediglich vom Blog gibt es noch eine deutsche Version. Mit Englisch erreicht man natürlich mehr Menschen, aber mit Deutsch bin ich aufgewachsen, in dieser Sprache findet mein Alltag statt und in dieser Sprache denke ich auch. Wenn ich schreibe, dann tue ich das gerne auf Deutsch. Das geht leicht von der Hand. Ich möchte das nicht aufgeben. Nichtsdestotrotz ist Englisch wichtig und es ist auch wichtig, dass ich mich darin übe – ganz unabhängig davon, ob jemand dieses Blog auf Englisch liest oder nicht. Dieser Trainingseffekt alleine ist Anreiz genug, Postings in beiden Sprachen zu verfassen.

Feeds gibt es jetzt auch in beiden Sprachen. Die alten URLs zu den PHP-Feed-Skripten sind nicht mehr lange gültig, vorübergehend gibt es Weiterleitungen.

Die Datenmigration

Ganz am Anfang, als diese Webseite entstand und der Terminus „Blog“ noch gar nicht komplett zu allen durchgedrungen war, habe ich zunächst PHP-Code wiederverwendet, den ich zuvor für ein Forum gebaut hatte. Im Endeffekt war das sehr nahe an BBCode. Über die Hälfte aller Postings habe ich mit dieser Auszeichnungssprache geschrieben. Später bin ich dann dazu übergegangen, HTML manuell zu schreiben. Naja, mehr oder weniger. Weil das einfach sehr mühselig ist, hatte ich dann doch noch ein paar „Makros“ reingepackt.

Ende vom Lied: Über 200 Blogpostings in Auszeichnungssprachen, für die es keine Konverter gab. Schlimmer noch, ich habe damals Elemente wie „bold“, „underline“ und „font-size“ direkt verwendet, wo aber eigentlich ein „h2“ gemeint war. Selbst wenn ich also einen Konverter gehabt hätte, hätte ich manuell noch einmal nachbessern müssen.

Es blieb mir also nichts anderes übrig, als jedes Posting manuell von meiner wirren Auszeichnungssprache in Markdown zu überführen. Das hat drei Wochen gedauert. Ich glaube aber, dass es sich gelohnt hat. Markdown ist ein sehr beliebtes und verbreitetes Format, das auch von Projekten wie pandoc unterstützt wird.

Bei dieser Migration ist mir wieder einmal aufgefallen, wie flüchtig das Web doch ist. Jaja, „das Internet vergisst nichts“. Mag sein. Aber Hyperlinks sind absolut volatil. Wenn man denen nicht jeden Tag hinterherrennt, dann sind sie morgen ungültig. Gefühlt 80% der Links in älteren Postings funktionieren nicht mehr. Vor diesem Hintergrund fühle ich mich dann auch nicht allzu schlecht wegen der Tatsache, im Zuge dieses Relaunches alle meine Links zerstört zu haben.

Auch ist so viel Content mittlerweile obsolet geworden. Alles ist im Fluss und ändert sich ständig. Viele Inhalte haben lediglich noch historischen oder nostalgischen Wert. Teilweise habe ich deswegen auch überlegt, die Migration abzubrechen und bei Null anzufangen. Letztendlich konnte ich das dann aber doch nicht über’s Herz bringen.

Abschließend

Mal sehen, wie lange diese Version der Webseite nun hält. Yeah.

Cheers!