theHacker's Blog
– It's just a glitch in the Matrix –

tHBlog kommt…

Ich habe nun schon seit Ende April keine Kommentare mehr freigeschalten – sorry dafür. Hintergrund ist, dass Kommentare für mich einen großen Aufwand bedeuten. Deshalb arbeite ich seit einigen Monaten an einer eigenen Blog-Software.

Heute gibt es einen kleinen Einblick…

Die Geschichte bis heute

WordPress und Gutenberg – wie alles began

Angefangen habe ich dieses Blog mit WordPress. Gutenberg, der neue Editor von WordPress 5, hatte mir viel Ärger gemacht. Gutenbergs grundliegendes Design baut darauf auf, HTML-Fragmente fertig zu speichern, statt sie dynamisch zu generieren. Das klingt aus Performance-Sicht sehr sinnvoll, hat aber den Nachteil, dass wenn Fehler im HTML-Code sind – z. B. wegen einem Bug in Gutenberg – diese Fehler nicht beseitigt werden, selbst wenn WordPress den Bug im Editor behebt.

Genau das war der Fall. Gutenberg hatte Bilder im Fließtext mit der falschen Bildgröße eingebunden. Die Folge war, dass der Besucher lediglich eine herunterskalierte Version des Bilds ansehen konnte. Eine Katastrophe, weil man auf dem Bild nichts erkennen konnte!

Gutenberg hatte so einige meiner Artikel kaputtgemacht. Mit dem Plugin “Block Lab” hab ich mir selber eine Alternative bauen müssen, die den HTML-Code für Bilder dynamisch generiert. Das ermöglicht mir das Markup beliebig zu ändern und zwar für alle Artikel auf einmal. Das hätte z. B. sinnvoll werden können, wenn ich die Lightbox-Implementierung austauschen hätte wollen.

In meinem Vortrag bei WordPress-Meetup spreche ich ausführlicher über die obigen Probleme mit Gutenberg. Ihr findet den Vortrag hier.

Kotlin-Anwendung – der Prototyp

Für mich war WordPress zu diesem Zeitpunkt eine Sackgasse. Da ich gerne programmiere und zu diesem Zeitpunkt grade Kotlin für mich entdeckt hatte, hab ich damals, August 2020, begonnen eine eigene Blog-Software zu schreiben.

Fokus für mich war, ein Format für Posts zu finden, was das Schreiben von Blog-Artikeln vereinfacht. Natürlich könnte ich direkt HTML schreiben. Das gibt volle Flexibilität, ist aber auch sehr unangenehm und fehleranfällig, was einheitliches Layout angeht. CSS wendet zwar einheitliches Styling an, allerdings nur wenn der HTML-Code passend ist. Eine falsche Tag-Schachtelung oder falsche/fehlende CSS-Klasse und das Layout sieht anders aus.

Ich entschied mich damals für Markdown. Markdown ist intuitiv und hat einen sehr begrenzten Funktionsumfang. Es enthält praktisch nur den reinen Text, somit ist keinerlei Layout-Information enthalten.

Für den Worst-Case erlaubt Markdown trotzdem beliebiges HTML, um Spezialfälle abzubilden. Ein Beispiel hierfür ist der Artikel “Nachruf an Smoothie white”.

Für diesen Prototyp habe ich mir die Mühe gemacht und alle Artikel in Markdown umwandeln müssen. Eine riesige Arbeit, aber wie sich später zeigen wird, hat sich das alles gelohnt…

Hugo – Static Site Generator

Der Kotlin-Prototyp wurde niemals fertig gestellt. Nach 2 Monaten Entwicklung stellte ich die Entwicklung ein. Zwischenzeitlich hatte ich statische Generatoren entdeckt. Ich hatte mir Hugo und Jekyll angesehen. Jekyll kommt aus der Ruby-Ecke, wo ich noch keine Erfahrungen hab. Die Wahl fiel auf Hugo.

Für Hugo musste ich mir die Go-Template-Engine genauer ansehen. Die Artikel selber sind aber alle in Markdown erwartet, entsprechend konnte ich meine Arbeit aus dem Kotlin-Prototyp größtenteils wiederverwenden.

Lediglich spezielle Bausteine für Bildergalerien und Videos waren notwendig, die in Hugo mit Shortcodes abbildbar waren. Bereits im Dezember 2020 war das Blog komplett auf Hugo umgestellt.

Hugo generiert statische HTML-Dateien. Mit einem eingebauten Webserver und Hot-Reload beim Schreiben war das absolut angenehm. Ich schreibe Markdown, drück Strg+S zum Speichern und instant lädt der Browser die Seite neu und ich sehe sofort, wie das Endergebnis aussieht. Echtes WYSIWYG.

Einziges Problem bei Hugo, dass Kommentare nicht möglich sind. Die offizielle Doku empfiehlt einige Cloud-Provider, aber sowas kommt mir nicht in die Tüte! Ich entschied mich, alle Kommentare ebenso als Markdown abzubilden.

Für die Kommentar-Funktion hab ich eine PHP-Anwendung entwickelt, die Requests für neue Kommentare entgegennimmt und mir als eMail zustellt. Hier steckt die Arbeit: Ich muss die eMail lesen, die Metadaten abtippen und den eMail-Text in Markdown umwandeln. Jeder Kommentar befindet sich in einer Markdown-Datei mit bestimmten Dateinamen. Außerdem entspricht das “Freischalten” eines einzigen Kommentars dem kompletten Workflow von Feature-Branch im Git, über Bauen von Docker-Containern bis hin zum Deployment. – Im Vergleich zu Wordpress: da war es ein Klick.

Kommentare habe ich deshalb auch immer nur einmal im Monat freigeschaltet. Es waren zwar nie viele Kommentare, aber trotzdem…

Ein weiterer Minuspunkt von Hugo: Es gibt keine Möglichkeit, die Software selber zu erweitern. Es gibt zwar ein Issue auf GitHub, allerdings keinen Progress.

Ich selber rufe mein Blog manchmal auf, wenn ich weiß, ich habe bereits einen Artikel zu einer Frage. Leider gibt es keine Such-Funktion. Und mit Hugo habe ich keine Möglichkeit, selber eine Such-Funktion zu implementieren.

tHBlog – das Beste aus WordPress und Markdown

Seit Juni 2021 habe ich “tHBlog” in Entwicklung. Es ist die Weiterentwicklung meines Kotlin-Prototyps. Mein Ziel ist es, die Basiskonzepte von WordPress zu verwenden:

  • Beiträge und Seiten
  • Kommentare
  • Taxonomien (= Verallgemeinerung von Kategorien und Tags)
  • Themes und Templates
  • Menüs und Widgets

Außerdem basieren tHBlogs Beiträge auf dem Block-Konzept von Wordpress’ Gutenberg. Nur mit der Verbesserung, dass kein HTML-Code direkt gespeichert wird, sondern mittels der jeweiligen Block-Implementierung generiert wird.

Zu meiner WordPress-Zeit hatte ich Statistik- und SEO-Plugins im Einsatz. Diese Ideen baue ich direkt in tHBlog ein.

Die Beitragsanalyse überprüft Posts inhaltlich. Aktuell werden z. B. tote Links identifiziert. Später möchte ich Keyword-Dichte und andere SEO-Indikatoren hinzufügen.

Für die Statistik-Funktion habe ich noch Matomo im Einsatz. Auf Grund der bescheuerten rechtlichen Lage, keine Cookies setzen zu dürfen, bzw. den Nutzer vor dem Setzen fragen zu müssen, ist es extrem schwierig für kleine Blog-Seiten sinnvolle Statistiken zu sammeln.

Und die großen Datenkraken, gegen diese die Gesetze eigentlich gehen sollten, verstecken sich hinter utopischen Datenschutz-Erklärungen und Dialog-Boxen, wo man eine Stunde bei jedem Aufruf einer Webseite bräuchte, wenn man das alles durchlesen würde. Die meisten Nutzer haben sich schon lange angewöhnt, einfach auf den grünen “ja speichert alles, was ihr zuvor auch schon gesammelt habt”-Button zu drücken.

Auf meinen Seiten wird es so eine Praxis niemals geben!

Deswegen baue ich eine Statistik-Lösung, die Benutzer nicht durch Cookies verfolgt. Ich will doch niemanden verfolgen! Ich will doch nur wissen, welche Artikel aufgerufen werden, welche Inhalte beliebt sind und welche nicht.

Wie geht’s weiter?

Meine Vision von tHBlog ist es, als ersten Schritt die bisherige Hugo-Version abzulösen.

In einem weiteren Schritt werde ich tHBlog als Open-Source-Software auf GitHub veröffentlichen. Im Moment ist der Code allerdings nur drauf ausgelegt, möglichst schnell das Blog überhaupt online zu bekommen.

Das ACP sieht nicht besonders schön aus und ist bietet noch nicht einmal eine ordentliche Anzeige von Fehlern, wenn z. B. ein Pflichtfeld nicht ausgefüllt wird. Das muss natürlich alles noch verbessert werden, bevor ich den Code auf die Öffentlichkeit loslass 😉

Soviel als Teaser…


Welche Blog-Software setzt ihr ein? Habt ihr ähnliche Erfahrungen mit WordPress oder Hugo gemacht? Hinterlasst gerne einen Kommentar.

Schreib einen Kommentar zum Artikel

Mit Abschicken des Formulars bestätigst du,
die Datenschutz-Infos gelesen zu haben.