Das ist es. Der (zumindest von mir) lange erwartete Neustart meines Blogs. 2008 habe ich mein altes altes Blog bei bei einer Blogplatform aufgemacht. Das ist auch heute noch da, sieht immer noch genau so scheiße aus wie damals (dazu habe ich auch zu Genüge geschrieben) und hat sich allem Augenschein nach technisch auch nicht weiterentwickelt (benutzt u.a. noch XHTML). Nichtsdestotrotz ein Anfang, und ich habe immer noch vor, meine alten Blogposts mal ins neue Blog zu importieren.
Das hat etwa vier Jahre gehalten. Im Jahre 2012 habe ich mich dann in Ruby on Rails eingearbeitet und damit ein Blogsoftware geschrieben. Die hat etwa acht Jahre gehalten. Weiter unten schreibe ich noch, warum ich die jetzt ablöse. Jetzt aber erst einmal die wichtigsten Änderungen (abgesehen davon hat sich das Farbschema leicht geändert, weil ein Analysetool behauptet hat, die Schriftfarbe von Links habe zu wenig Kontrast mit dem Hintergrund und sei damit ein Problem für Menschen mit Sehbehinderung).
Wichtigste Änderungen
- Die Kommentarfunktion gibt es nicht mehr. Ich habe die alten Kommentare (minus die Spam-Kommentare) zwar aus dem alten Blog exportiert, weiß aber noch nicht, ob ich die je irgendwie ins neue Blog einbinden werde.
- Die URLs für das Archiv haben sich geändert. Bei den meisten URLs habe ich mir Mühe gegeben, dass sie gleich bleiben, beim Archiv nicht. Das Archiv war sowieso einem ewigen Wandel unterworfen, weil die neuesten Artikel auf der ersten Seite standen. Jetzt stehen die ältesten Artikel auf der ersten Archivseite, die neuesten am Ende. Damit bleiben alte Archivseiten-URLs in Zukunft konsistent
- es wird kein RSS-feed mehr angeboten. Das Atom-feed besteht weiterhin, wie angekündigt. RSS-Feed-Nutzer sollten auf das Atom-feed umsteigen.
- die Indexseiten für die gehosteten Dateien des Blogs (größtenteils Bilder) sind noch nicht implementiert. Die sind bisher auch kaum verlinkt. Sie kommen aber wieder.
- die QOTDs (insbesondere das Zitat auf der Startseite) sind noch nicht implementiert. Das folgt auch noch.
Weniger wichtige Änderungen
- vorerst werden die assets (favicon, css) nicht mit Hash ausgeliefert, was dauerhaftes Cashing schwieriger macht. Das folgt noch.
- Das CSS und die meisten HTML-Seiten sind kleiner. Die Kompression ist besser, weil die Dateien vorkomprimiert werden
- die Rendering-Zeit auf dem Server entfällt. Anfragen werden schneller beantwortet
- im Hintergrund arbeitet jetzt nginx anstatt apache2
Neue Software im Hintergrund
Die Idee, die Rails-Software für das Blog abzulösen, hatte ich schon länger im Kopf. Ich hatte damals kaum Tests für das Rails-Blog geschrieben, somit wurde jedes Update, jede Änderung zu einer Gefahr, dass danach nichts mehr geht. Und ich musste Updates machen, nicht zuletzt, weil in meinen Abhängigkeiten gelegentlich Sicherheitslücken gefunden wurden. Manche dieser Lücken konnten nur mit einem Update der Major-Version von Rails behoben werden. Die sind aber immer schwierig, und zuletzt hing ich immer noch hinterher.
Einen stabilen, sicheren Webserver zu bauen kostet aber Zeit. Andererseits war die Lage so nicht mehr haltbar. Irgendwann auf dem oder nach dem letzten Kongress (36c3) habe ich dann die Entscheidung getroffen, mir einen statischen Seitenrenderer zu bauen und ganz old-fashioned einfach nur HTML-Dateien auf einer Platte liegen zu haben und einen Standardserver, der sie ausliefert.
Eigentlich waren es zwei Entscheidungen:
- statisches Rendern vs. dynamisches Rendern
- bestehende Software vs. selbstgeschriebene Software
Warum statisch und nicht dynamisch?
Ein dynamisch gerendertes Blog hat ein paar Vorteile:
- man muss nicht alles sofort neu rendern, wenn grundsätzliche Änderungen am Layout gemacht werden
- man kann relativ einfach Funktionalität wie ein Formular zum Erstellen von Blogposts und Kommentaren einbauen
- man kann über eine Weboberfläche Inhalt pflegen, und Weboberflächen kann man von überall aus nutzen (außer in ländlichen Gegenden in Deutschland)
Statisches Rendering hat aber auch Vorteile:
- Es ist sicherer. Man muss sich keine Sorgen über Logins machen. Keine Sorgen über das sanitizen von Benutzereingaben. Keine Sorgen über Spam in den Kommentaren
- Man muss nicht mit Datenbanken und anderem Zeug herumhampeln, von dem man separat Backups erstellen muss
- Es ist schneller. Man rendert die Seiten ein Mal, danach werden immer wieder dieselben Seiten ausgeliefert. Keine Warten mehr darauf, dass der Server endlich fertig gerendert hat.
- Übertragungskompression ist einfacher. Man kann die Dateien vorher komprimieren. Das bedeutet, man kann sich mehr Zeit zum Komprimieren lassen und kriegt bessere Ergebnisse.
- Das CSS ist kleiner, weil man kein Styling für Formulare braucht. Da das Layout des Blogs recht simpel ist, haben die Formulare einen recht großen Anteil am Layout gehabt.
Da ich normalerweise sowieso nur von meinem Hauptrechner aus blogge (weil ich das PW immer vergesse und es auf anderen Rechnern nicht gespeichert ist) und die Kommentarfunktion seit gefühlt 2014 sowieso niemand mehr genutzt hat (außer Spambots), war die Antwort einfach.
Warum selbstgeschrieben?
Diese Frage ist etwas schwieriger. Eigentlich gibt es einige (dem Hörensagen nach, ich habe nicht alle ausprobiert) gute tools, um statische Seiten zu rendern. Beispiele sind:
Die haben soweit ich sehen konnte, alles, was man so braucht. Also warum habe ich sie nicht genommen?
Der Hauptgrund ist: Ich wollte nicht. Ich wollte die Software selber schreiben.
Weitere Gründe sind:
- Ich habe einen Haufen bestehender URLs, die ich erhalten möchte. Ich weiß nicht, ob das so einfach gewesen wäre.
- Ich habe ein paar Features, bei denen ich nicht wusste, ob ich sie mit bestehenden Tools behalten kann
- Ich möchte micht nicht von einer weiteren Software abhängig machen, die eventuell Probleme mit Updates bereitet (wobei ich zugegeben ein paar Abhängigkeiten in meinem selbstgeschriebenen Renderer habe. Aber ich verstehe den Renderer gut genug um diese Abhängigkeiten im Ernstfall zu ersetzen)
Würde ich jemandem empfehlen, selber einen Blogrenderer zu schreiben? Grundsätzlich nein (es sei denn, die Person in Frage hat Spaß daran). Würde ich jemandem empfehlen, meinen Blogrenderer zu benutzen? Nein. Mein Blogrenderer ist single-purpose. Die oben genannten Generatoren sind flexibel und darauf ausgelegt, die herausgegebenen Seiten für den eigenen Zweck anzupassen. Dieser Bloggenerator hier ist darauf ausgerichtet, genau dieses Blog hier zu rendern. Das macht die Entwicklung viel einfacher, weil man viel weniger Edge-Cases behandeln muss. Aber er ist nicht flexibel, denn Flexibilität hat ihren Preis.
Was gibt es noch zu erwähnen?
- die Blogposts werden jetzt in CommonMark, einer standardisierten Form von Markdown, geschrieben. Damit spare ich mir das Herumgehampel mit HTML in den Blogposts und die Posts sind auch im nicht gerenderten Zustand angenehm lesbar.
- das alte Rails-Repo ist jetzt archiviert, dahin kann nichts mehr gepushed werden
- das Repo für das neue Blog veröffentliche ich irgendwann demnächst
- die neue Software ist größtenteils in meiner Lieblingssprache rust geschrieben
- weil es jetzt wieder Spaß macht, an der Blogsoftware zu schreiben kommen wahrscheinlich in Zukunft auch noch ein paar andere Neuheiten in das Blog
Ich meine, da war auch noch mehr, was ich erwähnen wollte, das habe ich aber vergessen.