Ein Blog mit Kirby in 2 Wochen

Development

Wie wir Marks Webseite in knapp zwei Wochen gebaut haben

In dieser ersten Episode von “Server Side Stories” sprechen wir darüber, was wir hier vorhaben und steigen dann in unser erstes Thema ein: Marks neue Webseite.

Die haben wir mit Kirby und einem Tailwindcss-Template in knapp zwei Wochen gebaut und online gestellt. Inklusive einiger Automatisierungen. Wie wir das Projekt angegangen sind, den Code strukturiert haben und welche Plugins und Tools dabei zum Einsatz kamen, erfährst du in unserer ersten Folge dieses Podcast. Abonnieren kannst du ihn überall dort, wo es Podcasts gibt.

Automatisches Transkript:

Moin und willkommen bei Server Side Stories. Unser neuer Podcast und die erste Folge ist also alles noch ein bisschen aufregend für uns und wir werden uns sicherlich noch ein bisschen eingerufen müssen. Wir fahren hier den ganz klassischen Podcast.

Zwei Typen unterhalten sich. Einer dieser Typen sitzt im Homeoffice am Laptop.

Das ist mein Kollege Mark. Wir haben eigentlich schon den halben Morgen miteinander gesprochen. Ich tue es trotzdem mal so, als würden wir uns gerade zum ersten Mal sehen. Fühlt sich jetzt alles so offiziell an auf einmal.

Moin Mark, im Homeoffice. Ich bin Maurice und auch von mir nochmal ein herzliches Willkommen. Zusammen arbeiten wir bei konzentrik und entwickeln da kleine Tools und SaaS-Dienste und arbeiten für kleine und große Kunden in ganz Europa. Wir haben die letzten Jahre viele Microservices mit Node. js geschrieben, dazu dann oft die passenden Backoffice-Lösungen mit React und Vue und zwischendrin mal die ein oder andere Webseite. Was wir genau so alles gebaut haben, werden wir in den kommenden Folgen bestimmt das ein oder andere mal erzählen, aber wir wollen euch nicht gleich zu Anfang mit solchen Details langweilen. Was wollen wir denn stattdessen?

Wir wollen ein bisschen was über Web-Development und all den anderen Themen erzählen, mit denen wir so jeden Tag zu tun haben. Das wird sich mit der Zeit sicherlich mal etwas ändern. Wie gesagt, wir müssen uns hier erstmal so ein bisschen einfinden. Wenn ihr also Bock auf Tech-Themen habt, Web-Entwicklung, Architektur, neue Technologien und die ein oder andere Anekdote aus dem Alltag, dann laden wir euch ein, unseren Podcast hier zu abonnieren. Überall da, wo es Podcasts gibt. Wir würden uns sehr freuen. Für mich ist das hier nicht der erste Podcast.

Ich habe schon ein paar andere hinter mir, allerdings ist das der erste, den ich nicht allein mache. Also auch für mich ein bisschen was Neues. Wenn ich nicht gerade vor dem Mikrofon stehe, beschäftige ich mich mit Web-Entwicklung, dem Kirby-Plugins und versuche einigermaßen regelmäßig zu bloggen. Wo würdest du deine Schwerpunkte sehen, Mark? Definitiv nicht beim Bloggen und auch nicht beim Podcasten. Denn wie gesagt, das ist hier mein erster Versuch. Schwerpunkte, die ich habe, sehe ich im Bereich Software-Architektur.

Da bin ich dann groß geworden. Insbesondere in letzter Zeit alles rund um Event-Driven und Domain-Driven-Design. Die magischen Bücher vor gefühlt einem Jahrzehnt gelesen und langsam über die Jahre begriffen, was da wirklich mit gemeint ist und versuche, das in die besagten Tools und SAS-Dienste einzubauen. Den zweiten Schwerpunkt sehe ich bei mir in der Backend-Entwicklung. Also dann tatsächlich die Microservices, die wir mit Mojave schreiben und alles, was irgendwie so mit Clean-Code zu tun hat. Alles, was der gute Martin Fowler uns empfiehlt und wie wir dann wirklich programmieren sollen, damit das Ganze wartbar bleibt und auch gut in Zukunft bearbeitet werden kann. Wenn ich das alles mal nicht so mache, dann sehe ich bei mir immer noch einen schönen Schwerpunkt im Lesen.

Dort gerne mal dann im Bereich der Management-Lektüre mein erstes Buch, an das ich mich erinnern kann. Das ist der Weg zum erfolgreichen Unternehmer. Damals noch große Visionen, die Konzentrik denn alles wachsen könnte, in der Form nicht verwirklicht, weil irgendwie ist das nicht so richtig mein Ding, beziehungsweise auch nicht das, wie wir als Team in der Konzentrik funktionieren wollen. Da werden wir bestimmt auch noch mal irgendwie darauf eingehen im Rahmen unserer ganzen Podcast-Folgen, was denn eigentlich so uns ausmacht und wie wir gerne zusammenarbeiten und uns als Team definieren. Andere Bücher in dem Bereich sind so die 4000 Wochen. Kann ich auch nur empfehlen. Das ist ein sehr spannendes Buch.

Also wie ihr seht, ist das alles so den Bereich Management aufgehängt, wenn man das so möchte. Ansonsten tummel ich mich gerne im Bereich von Thriller und Fantasy-Romanen. Das ist eine herausragende Lektüre, die ich auch nur weiterempfehlen kann. Ja, und mein nächster Schwerpunkt soll ja wohl irgendwie was mit Content-Creation zu tun haben, oder, Maurice? Ja, du bist seit kurzem auch Blogger. Ich habe dich so ein bisschen dazu gezwungen, zu deinem Glück quasi, weil wir haben uns gedacht, bringt ja wenig, wenn wir jetzt lauter Tools und tolle Dienste schreiben, aber niemand kriegt da irgendwas von mit. Also haben wir dir einen Blog eingerichtet.

Das war die Idee, damit wir so ein bisschen die Worte nach draußen tragen können und unsere Ideen nach draußen tragen können. Und zwei Wochen. Das haben wir nämlich irgendwie, was deine Seite angeht, hinbekommen. Wir haben bei null angefangen. Wir haben keine Grundlagen gehabt. Wir haben nur die Idee gehabt, der Mark, der braucht jetzt mal irgendwie auch einen Blog. Was war dann so dein Ziel dahinter?

Weil du warst ja jetzt nicht ganz unbefleckt. Es ist so ein bisschen, ich habe dich jetzt nicht ganz zu deinem Glück gezwungen, weil du meintest, du hattest den Hintergedanken ja auch schon mal, so einen Blog zu starten. Warum? Ja, warum eigentlich? Genau, warum bloggt man heutzutage noch? Bei mir begann das Ganze in meinem Sommerurlaub, während ich dann im Liegestuhl in der Sonne in Schweden saß und in meinem Büchlein gekritzelt habe, aus den verschiedenen Medienartikeln, die ich gelesen habe, aus irgendwelchen anderen Blogbeiträgen. Und im Wesentlichen kam dort ein Artikel mit dem Aspekt, dieses große Why.

Das braucht man im Leben. Dann ergibt alles einen Sinn. Und das fand ich auf jeden Fall war wieder ein sehr inspirierender Artikel. Und ich dachte mir, hey, ich lese viel, ich wälze viele Gedanken. Und warum nicht einfach mal drüber schreiben, um das selber noch besser zu reflektieren? Und wenn ich mir die Mühe dann schon mache, warum nicht das Ganze in einem Blog verfassen? Zumindest war das so ein flüchtiger Gedanke, der dann seinen Weg auf das Papier fand und damit in meinem Büchlein stand.

Naja, und dann kamst du, Maurice, um die Ecke und sagtest dann, hey, warum machst du nicht eigentlich mal einen Blog? Und ich dachte mir, verdammt, vor ein paar Wochen hast du dir dazu noch was notiert. Dann lass uns das doch wirklich mal anpacken. Genau, auf jeden Fall hattest du mich da nicht so ganz auf den falschen Fuß erwischt und dann offene Türen eingestoßen. Naja, und insofern war die Idee geboren zu sagen, hey, lass uns das Ding wirklich mal anpacken und schlichtweg mal machen. Ja, und wir hatten ja dann nicht nur, dass wir uns vorgenommen haben, möglichst schnell das Blog zu machen, sondern du hattest ja quasi auch noch das Advanced-Level, einfach mal in China zu sitzen mit einer wackeligen VPN-Internet-Verbindung und dann auch noch dieses Blog da irgendwie zum Leben zu erwecken. Das war ja nochmal so ein Next-Level-Blog-Building, wenn man so will.

Ja, das war natürlich eine sehr besondere Herausforderung, weil irgendwie die technische Stabilität nicht unbedingt gegeben war. Dann umrundet von einer digitalen Mauer, die nicht unbedingt freien Zugang zu allen möglichen Quellen bedeutet hat. Und wie gesagt, dann auch noch eine dünne Verbindung, also ein NPM-Install wäre da undenkbar gewesen. Aber es hat halt geklappt und das war in der Summe irgendwie deinen Zuarbeiten zu verdanken, weil du da schon unfassbar viel Wissen mitgebracht hast. Das fand ich extrem faszinierend. Ja, das war natürlich ganz gut, dass wir da viel klauen konnten bei mir sozusagen. Ich würde nochmal kurz zu den zwei Wochen, wo die eigentlich herkommen.

Man hätte jetzt ja auch sagen können, wir nehmen uns eine Monatszeit oder so. Aber du saßt halt da in China, das sollte man vielleicht nochmal kurz sagen, und du warst quasi noch, hattest noch zwei Wochen vor dir und das Ziel war so ein bisschen, wenn Mark wieder in Hamburg ist, wir sitzen beide hier in Hamburg, wenn Mark wieder in Hamburg ist, dann soll das Blog online sein. Deswegen hatten wir so diese zwei Wochen als Ziel, haben uns dann hinterher auch so ein bisschen auf die Schulter geklopft, weil wir es tatsächlich in diesen zwei Wochen dann auch geschafft haben. So ein paar Gedanken gingen dem ja voraus. Wir haben erstmal überlegt, okay, wie kriegen wir sowas schnell an den Start. Da war dann ja so ein bisschen mal so für einen kurzen Moment im Raum, okay, sucht man sich eine Domain und schaltet die irgendwie auf medium.com, dass man da einfach erstmal anfängt zu bloggen. Aber kam dann ja relativ zügig wieder der Hintergedanke, nee, du willst nicht so abhängig von irgendeiner Plattform sein.

Es soll eben nicht nur ein Blog sein, sondern deine Seite sollte auch nochmal ein bisschen dich zeigen und ein bisschen was drumherum haben, abseits von dem Blog. Von daher sind wir dann bei einem anderen Text-Deck gelandet. Ja, absolut. Also das war mir dann auch bei meinen eigenen Gedanken schon sehr, sehr wichtig, dass das nicht nur hin und wieder mal ein paar hundert Wörter aneinander getextet mit der Überschrift irgendwo hingeworfen irgendwie, dass es das sein soll, sondern da sollte sich irgendwie eine personal Brand aufbauen lassen in irgendeiner Weise. Da sollte die Möglichkeit bestehen, einfach mal lose Gedanken irgendwie als Notizzettel irgendwo hinzukleben, vielleicht was über irgendwelche Bücher zu schreiben, die dann nicht sofort in der großen Weite verteilt werden müssen, sondern einfach ein bisschen experimentieren, im Kleinen was gucken. Da bot es sich einfach an, was Eigenes aufzubauen, vor allem mit dem Hintergrund, dass wir auf einen sehr interessanten Text-Deck deiner Seite schon zurückgreifen können, der genau das alles ermöglicht. Ja, und ich finde auch gerade das irgendwie an so persönlichen Webseiten irgendwie spannend, dass man eben nicht, wenn man, keine Ahnung, bei Medium ist, dann hast du halt dieses eine Design, das sieht alles gleich aus bei jedem User.

Im Zweifel ändern die in einem halben Jahr das komplette Layout und Design und dann musst du damit irgendwie auch zurechtkommen. Und deswegen ist es schon geil, wenn man eine eigene Seite hat und da einfach sich auch ein bisschen austoben kann. Was den Text-Deck angeht, du hast ja schon ein paar mal angedeutet, wir haben da bei mir vieles übernommen. Ich nutze, glaube ich, seit über zehn Jahren oder knapp zehn Jahren, nutze ich Kirby als Content-Management-System, baue da selber auch so Plugins für und so. Von daher, als wir uns dann dafür entschieden haben, eben keine Plattform zu nutzen, war sehr schnell irgendwie klar, dass es dann Kirby sein wird, weil eben da schon bei mir vieles vorhanden ist und wir viel von mir übernehmen können und das auf dich anpassen können und eben dann doch nicht ganz bei null anfangen müssen. Und was man sagen muss, hättest du gesagt, lass uns WordPress machen und ich hätte nur an die alten Zeiten zurückgedacht, wo ich irgendwelche Datenbank kreuz und quer migriere und irgendwelche Indizes sich zerschießen und gar nichts mehr geht, hätte ich alles gemacht, aber keinen Blog geschrieben. Das hättest du sowas von vergessen können, Maurice.

Ja, das ist schon ganz nett mit Kirby und diesem, das ist halt, wer Kirby CMS nicht kennt, das ist halt file-based, das heißt, der Content liegt in Form von Textdateien im Dateisystem. Kann man schön schnell sich runterladen, hochladen, irgendwo hinschieben, um Backup zu machen und so. Das ist schon echt angenehm. Absolut. Und das Ziel war ja auch, bei dir möglichst viel auf der Seite zu automatisieren und dir als Blogger das Leben möglichst leicht zu machen, um möglichst wenig Hürden zu haben, da überhaupt ins Bloggen zu kommen. Unbedingt. Die einzige große Hürde, die alle so rudimentäre Kenntnisse von Design haben.

Wir kriegen da irgendwie was hin, was einigermaßen vernünftig aussieht. Also richtig die geilen Designer sind wir dann doch nicht. Da braucht es dann doch mal irgendwie eine Grundlage. Ja, absolut. Also ich meine, Design kritisieren, Design umsetzen. Wenn wir dann entsprechende Zuarbeit bekommen, das ist ja unser täglich Brot. Das ist überhaupt kein Problem.

Aber wirklich bei null anfangen und sich das alles überlegen. Das Wort Weißraum habe ich schon mal gehört und auch verstanden, warum das alles wichtig ist. Aber wirklich bei null anfangen, nein. Das war vor allem in den zwei Wochen schlichtweg einfach nicht drin. Da hatte ich dann die Idee, so ein ordentliches Template sich raus zu suchen, was dann idealerweise ein HTML-Template ist, damit wir das einfach zerschnibbeln können. Das habe ich dann ja auch gelernt. Also nicht irgendeine Astronummer, weil dann sind wir wieder in einem anderen Text-Deck.

So haben wir dann zumindest in der Tailwind-Welt was gefunden und damit dann auch wirklich aus meiner Sicht eine ganz schnuckelig hübsche Basis für meinen Blog gefunden. Ja, ich bin ein bisschen neidisch, ehrlich gesagt. Ich bin ja so jemand, der auch so ständig an der eigenen Seite rumbastelt und vielleicht auch die eine oder andere Stelle dann überkompliziert oder einmal zu viel die Design-Änderung drauf macht. Und jetzt, nachdem wir dann fertig waren, habe ich diese schöne Template da bei dir gesehen und das langsam mit Leben und Texten gefüllt. Und irgendwie muss ich mich seitdem sehr zurückhalten, nicht ein Redesign auf meiner Seite anzustoßen. Ich muss zugeben, den Branch gibt es schon, aber da möchte ich jetzt nicht drüber reden. Wenn du Hilfe brauchst, sag Bescheid.

Ich bin jetzt Profi. Alles klar, ich komme auf dich zu. Also ich muss sagen, wieder mal für so, ich sage mal, wenn man schnell was an den Seiten machen will, finde ich nach wie vor Tailwind ist echt eine super Sache. Ich habe es bei mir auf der Seite dann irgendwann wieder angefangen rauszuschmeißen, weil es mir dann doch eher liegt, klassisches CSS und meine CSS-Klassen zu schreiben und so. Aber ich finde gerade so für so Prototyping oder wenn man eben wirklich schnell mal so einen Design-Entwurf irgendwo online haben will, das hat sich, finde ich, bei dem Template wieder gezeigt, weil wir auch schnell Dinge anpassen konnten, Tailwind einfach super. Stimme ich dir absolut zu. Wobei semantisches, ordentliches CSS, wo ich Klassenrand schreibe oder tatsächlich auch die Tags entsprechend style, hat aus meiner Sicht irgendwie, vor allem wenn es dann eine größere Webseite sein soll, wie du auch schon meintest, also nicht nur ein Prototyp, absolut vorrang und ist die einzige Wahrheit aus meiner Sicht, um das anzupacken.

Es liest sich dann doch, also der HTML-Code liest sich dann doch schöner, wenn man eben nicht 20 Klassen irgendwie an einem Diff hat, sondern nur eine Klasse, die dann auch noch einen Namen hat, der eindeutig beschreibt, was da so passiert. Das ist schon netter. Aber das wäre vielleicht nochmal ein Thema für eine der kommenden Folgen, wo man nochmal ein bisschen detailliert drüber sprechen könnte. Worüber wir nochmal ein bisschen sprechen können, ist über dein Setup, was wir da uns ausgedacht haben. Wie gesagt, Grundlage für alles ist das Kirby CMS. Wir haben uns überlegt, wie wir das am schlankesten und schnellsten installiert bekommen und haben uns dann für den Composer-Weg entschieden. Da gibt es dankenswerterweise von Kirby so ein paar Vorlagen, wenn man so will.

Da gibt es unter anderem so ein Starter-Kit. Haben wir uns nicht für entschieden, sondern wir haben uns dann für das Plane-Kit entschieden. Und dann ging es irgendwie an den nächsten Schritt, Deployment. Weil, wir haben es schon gesagt, möglichst viel automatisiert und so. Bevor wir uns ins Deployment gemacht haben, war ja noch ein ganz wichtiger Weg, was du mir dann gleich erzählt hast, wie wir bei dem Setup das Ganze berücksichtigen müssen. Wie hieß das noch gleich? Public Folder. Ja, genau.

Weil das ein extrem wichtiger Sicherheitsaspekt ist. Vielleicht kannst du das noch einmal kurz umreißen. Ja, ich finde das ganz nett. Also, es heißt jetzt nicht, dass die andere Installation, die Standard-Kirby-Installation unsicher ist. Aber bei der Standard-Kirby-Installation muss man sich vorstellen, der Document-Route, also der Pfad, auf dem der Web-Server zeigt, am Ende, wenn man die Domain eingibt, die wir mal kurz hier droppen können, Yaddle. info, würde standardmäßig halt auf diesen Hauptfolder von Kirby zeigen. Und da liegt dann alles drin.

Da liegt dann der Kirby-Ordner drin, da liegen irgendwelche Side-Folders drin, wo die Templates liegen und, und, und. Das liegt alles auf dieser einen Ebene. Und wenn man ganz clever ist und irgendwie ganz böse ist, dann könnte man versuchen, da irgendwie auf diese Dateien zuzugreifen. Und dieses Public-Folder-Setup ist halt insofern ganz nett, als dass man innerhalb dieser Struktur so einen Folder anlegt, der sich da Public nennt, und da dann ein paar wichtige Dateien reinlegt. Das sind dann sowas wie Icons oder Assets, also CSS und JavaScript, vielleicht noch mal den einen oder anderen Font. Quasi alles, was nach außen ausgeliefert werden muss, das liegt in diesem Public-Folder. Plus eine PHP-Datei, die so ein bisschen Routing-Magie betreibt.

Und dann kann man den Document-Root auf diesen Public-Folder setzen. Und selbst, wenn man von außen auf diese Domain zugreift, hat man keine Chance, diesen Public-Folder zu verlassen und auf eben diese ganzen anderen Ordner zuzugreifen, die da dann gar nicht mehr in dieser Ebene unterwegs sind, sondern ich habe wirklich nur noch die Dateien, die auch nach außen verfügbar sein müssen. Und zum Beispiel der Kirby-Folder oder das Panel sind über die Domain im direkten Zugriff gar nicht mehr erreichbar. Und das, finde ich, ist noch mal so ein kleiner Sicherheitsaspekt obendrauf, den man da noch mal gut draufpacken kann. Ja, meines Erachtens sehr, sehr wichtig. Einfach auch für mich tatsächlich im Konkreten als Gefühl, da ich da weniger Angriffsfläche biete und keiner eine Chance hat, über irgendwelche Lücken da ins System zu kommen, so sicher irgendwas ist. Nur dann hast du da eine Zero-Day-Lücke, irgendwas als Baustelle und schwupps hast du ein Problem.

Insofern finde ich das einen sehr guten Weg und das Ganze noch mal in sich einen extra Boden und noch solider ganz aufzustellen. Ja, ich mache es inzwischen bei jeder Kirby-Installation, die ich so im Laufen habe. Ich finde es auch einfach übersichtlicher, also abgesehen von dem Sicherheitsaspekt. Man hat so zwei wichtige Ordner, der Content-Ordner und eben dieser Public-Ordner, wo die meisten Sachen passieren, die halt nach außen wahrnehmbar sind. Absolut in der Idee, sehr angenehm. Ja, und jetzt haben wir das tolle Public-Folder-Setup, wir haben das über Composer alles installiert. Jetzt muss das ganze Zeug natürlich noch irgendwo hin, es muss ja irgendwo eine Domain geschaltet werden, irgendwo gehostet werden und irgendwie müssen die Dateien vom eigenen Rechner dahin wandern.

Da haben wir uns auch was überlegt und zwar haben wir ein Deployment über GitHub Actions realisiert. Das heißt, wann immer Mark irgendwas auf seinem Main-Branch in Git, das ist die Code-Verwaltung, die wir da benutzen, wenn du da irgendwas postest, dann landet das bei GitHub und bei GitHub wiederum liegt so eine Action, das ist quasi eine Sammlung von Skripten, wenn man so will. Und sobald auf diesem Main-Branch bei GitHub irgendeine Änderung passiert, laufen diese Skripte los. Genau, und das macht das für mich halt super angenehm, einen Push und gefühlt eine Sekunde später ist das Ganze auch live. Und wenn ich mir lokal durch das einfache Kopieren den Content vom Produktivsystem auf meinen Rechner gezogen habe, meine Anpassung vornehme, sei es im Styling, sei es irgendwie einen neuen Bereich irgendwo hinzugefügt habe oder was auch immer ich mir an Funktionalität ausgedacht habe, kann ich mir das lokal angucken. Wenn es das lokal tut, wird committet, gepusht und eine Sekunde später ist das Ganze live. Ich kann es noch einmal über yaddle.info prüfen, mich zurücklehnen und einfach freuen, dass es nicht Stunden dauert, bis irgendwas live ist.

Es muss nichts Wildes passieren, das ist halt schlank und einfach und so wie ich es halt mag. Ja, wir hatten noch kurz überlegt, glaube ich, ob es noch irgendwie so ein Stage oder sowas geben soll, also so ein Zwischenserver, auf dem man nochmal kontrolliert, aber für das kleine Setup haben wir uns zumindest erstmal dagegen entschieden, weil es soll einfach schnell da sein und im Zweifel arbeitest du da auf dem Feature-Branch und dann landest halt eben nicht bei der Live-Seite automatisch, sondern es wird halt nur der Main-Branch automatisch deployed. Nächster Step wäre dann wahrscheinlich nochmal so eine Art R-Sync oder so, dass auch dein Content, der nicht in Git liegt aktuell, dass der nochmal irgendwie hin und her synchronisiert wird, dass du den auch lokal dann immer hast, das wäre wahrscheinlich auch nochmal ganz cool. Ja, was ich auch noch cool fände, wenn da irgendwie ein kleiner magischer Button in meinem Kirby-Panel ist, wo ich drauf drücke und aufgrund des Settings, der sich das dann automatisch gleich holt und ich irgendwie ein Tool bedienen muss wie Cyberduck oder so, um irgendwas runter zu kopieren, daher gibt es da vielleicht nochmal eine Kleinigkeit oder ein Plugin, was wir schreiben können, einfach damit wir auch mal ein Plugin geschrieben haben. Also, du kennst das ja, aber für mich wäre das auch nochmal ganz spannend. Ja, apropos Plugins, schöne Überleitung, so ein paar Plugins haben wir dann auch nochmal installiert, damit das bei dir alles ein bisschen smooth und schnell läuft. Wesentlicher Bestandteil von gerade von dem Schnelllaufen war das Static Cache, wie auch immer man das aussprechen mag, Plugin, was halt so ein bisschen so eine, wie soll man sagen, generiert.

Das heißt, sobald jemand eine Seite aufruft, wird eine statische HTML-Datei aus der gerenderten Seite erstellt, die wird tatsächlich so als HTML abgelegt und solange jetzt keine Änderungen am Content stattfinden oder irgendwie ein Template geändert wird, bleibt diese HTML-Datei so da im Filesystem liegen und wird dann künftig ausgeliefert, wenn die nächste Person halt die gleiche Seite aufruft. Das heißt, wir haben da irgendwie so eine, fast schon einen Static Site Generator, aber irgendwie doch nicht, aber wir haben halt die Geschwindigkeit von so einer Static Site und im schlimmsten Fall dauert es mal ein, zwei Sekunden länger, wenn eben gerade Content geändert wurde und diese HTML-Datei neu geschrieben werden muss, aber ich finde, man merkt schon, deine Seite ist richtig, richtig schön schnell und das hat sicherlich im Wesentlichen mit diesem Static Cache zu tun und mit der Tatsache, dass da eben einfach nur eine HTML-Datei ausgeliefert wird und nicht irgendein PHP-Prozess angeworfen wird, der womöglich in irgendwelche Datenbanken gucken muss oder so. Auf jeden Fall ein sehr großartiges Plugin, absolut. Und vergleichsweise einfach zu konfigurieren, also es ist eigentlich wirklich nur so ein Anknipsen, wenn man so will, das ist sehr, sehr angenehm. Dann haben wir zwei Plugins von mir installiert, weil konnte ich natürlich nicht sein lassen. Ich wollte, dass du unbedingt ans Indie-Web angeschlossen bist, das heißt, wir haben bei dir den Indie-Connector und mein Kommentar-Plugin installiert, sorgt am Ende dafür, dass deine Webseite Webmentions empfangen und senden kann und die dann wiederum als Kommentar darstellen kann oder als Liste von Avataren, wenn da zum Beispiel Leute ein Like geklickt haben. Das Like findet dann beispielsweise bei BlueSky oder bei Mastodon statt, was auch der Indie-Connector übernimmt, denn wenn du eine Seite veröffentlichst, einen Blog-Post oder eine Notiz bei dir, dann landet das automatisch bei Mastodon als Mastodon-Post und wenn ihr dann den Mark da jetzt alle fleißig abonniert bei Mastodon und einen Post von ihm seht, der auf die Seite verweist, dann könnt ihr bei Mastodon antworten, liken oder boosten und das holt der Indie-Connector dann zurück ins Blog und wir haben es dann unten unter dem Post als eine Art Kommentar dargestellt und ich finde das ganz angenehm, weil selbst wenn man auf der eigenen Seite noch nicht so eine aktive Community hat, die jetzt viele Kommentare schreibt, hat man doch ein bisschen was Lebendiges auf der Seite, weil eben doch bei Mastodon mal eher was passiert oder bei BlueSky als auf der eigenen Seite, zumindest am Anfang.

Finde ich ganz charmant, da hat man da doch ein bisschen Bewegung und hoffentlich motiviert es dann auch andere Leute mal den einen oder anderen Kommentar zu schreiben. Und dann haben wir quasi noch zwei inoffizielle Plugins, die ich so für meine eigene Seite geschrieben habe, die ich auch für sehr wichtig halte für einen Blog, das ist zum einen der RSS-Feed, ich finde jedes Blog sollte auch einen RSS-Feed haben und dann haben wir noch ein Sitemap-Plugin, was halt so eine XML-Sitemap erstellt, die man dann bei Google und Co. einreichen kann, damit du dann hoffentlich auch da im Suchindex auftauchst. Wir haben noch ein paar Besonderheiten auf deiner Seite, willst du da mal was erzählen? Noch ein paar Besonderheiten? Stimmt, da war ja was, wir haben ja noch ein bisschen weiter gezaubert, also tatsächlich mussten wir gar nicht so viel zaubern, denn für die Multi-Language-Settings, also Deutsch wie Englisch, das war dann eine Idee, die wir doch dann schnell aufgegriffen haben, dass es sich durchaus lohnt, das Ganze in Deutsch oder Englisch zu machen und dank der ganzen KI-Tools, die es da draußen gibt, ist ja auch ein Text, in welcher Sprache auch immer verfasst, in Deutsch oder Englisch, schnell in die jeweils andere übersetzt, bringt das gar nicht mehr so viel Aufwand mit sich, erhöht aber die potenzielle Reichweite und wenn wir uns schon die Mühe machen, so viele Plugins und Tools zu installieren, um irgendwie Reichweite zu erzeugen, ist es natürlich dann auch gut, einfach die Sprachbarriere da schon mal aus dem Weg zu nehmen. Insofern haben wir die Multi-Language-Features von Kirby genutzt und es war erschreckend einfach, also tatsächlich non-issue, also ich klicke auf DE oder EN und habe meine Texte jeweils in den verschiedenen Sprachen, ich habe die Möglichkeit, die Texte jeweils anzupassen, die Bilder anzupassen, dass das alles irgendwie in der Summe rund, einfach und schnell geht.

Also das fand ich einfach nur zauberhaft. Ja, das ist auch ganz angenehm, finde ich, mit diesen Template-Strings, das heißt, wenn man da irgendwo in einem Template selber irgendwas stehen hat, irgendeine Überschrift, die fix ist oder so, dann kann man da mit so einer speziellen Kirby-Methode quasi so einen Platzhalter-Text reingeben und den kann man dann im Panel übersetzen, was ich auch sehr angenehm finde, gerade wenn man so zurückdenkt an so andere Content-Management-Systeme, mit denen man so über die Jahre mal so gearbeitet hat, wie nervig und kompliziert das da teilweise ist, so eine Multi-Language-Geschichte zum Laufen zu bringen. Finde ich super angenehm, dass das bei Kirby einfach standardmäßig mit dabei ist und so gut funktioniert. Absolut. Und ich habe dann ja noch den Weg gewählt, dass ich meine Blog-Artikel in Kategorien unterteile. Anfangs habe ich dort tatsächlich richtige Texte reingeschrieben im Sinne von Journaling oder Software-Engineering und es ist mir ein bisschen später aufgefallen, die werden ja nicht mit übersetzt, die werden ja einfach nur angezeigt. Der Weg war dann relativ schnell gegangen, das Ganze irgendwie in einfache Kürzel zu verändern, dazu passende Übersetzungen anzulegen und das Ganze über das Templating schlichtweg zu übersetzen und zu sagen, hey, mach dann Präfix, Unterstrich, die eigentliche Kategorie, die schlägst du bitte nach Kirby in deiner Übersetzungsdatei und zeigst das Ergebnis an.

Und schubs, war auch das übersetzt. Tatsächlich ein Aufwand von 15 Minuten, sofern man denn weiß, was man tut und wie die Mechanismen funktionieren. Und ja, ich sage mal, sein Content-Management-System gilt es dann doch durchaus zu verstehen, wenn man es dann intensiver benutzen möchte und dann kann man so etwas, glaube ich, als Voraussetzung nehmen und den Rest bringt, wie gesagt, Kirby mit und damit Besonderheit Multilanguage, Haken hinter, einfach und richtig, richtig gut. Und man muss ja dazu sagen, du hast jetzt angefangen, diese Sachen umzusetzen, wir haben ja den initialen Text quasi zusammen gemacht, aber du hast jetzt so nach zweieinhalb Wochen ja dann auch schon angefangen, jetzt eigene Features umzusetzen. Das spricht ja auch nochmal sehr für so ein System, finde ich, wenn man nach so kurzer Zeit schon irgendwie einfach da vorher nur über die Schulter geguckt, in Anführungszeichen und jetzt dann da sitzt und einfach mal selber Features umsetzt. Also spricht für mich für ein System, wenn das so möglich ist und man nicht davor sitzt und denkt, fuck, wie gehe ich dann da jetzt vor, wie mache ich das denn jetzt? Ja, das fand ich sehr cool, das zu sehen, dass du dann irgendwie morgens im Daily irgendwie gesagt hast, ach übrigens, ich habe das jetzt auch nochmal umgesetzt und ich habe jetzt hier PrevNext oder ich habe jetzt hier diese Übersetzung eingebaut und so.

Das ist ja okay, cool. Ja, auf das PrevNext Feature, wenn du das so kurz anreißt, war ich doch dann überrascht und dass es so einfach ging und stolz, dass ich es hinbekommen habe. Für euch das kurz umrissen, mir war es irgendwie wichtig, wenn ich in einen Blogpost einsteige, quasi nicht in so einer Art Sackgasse gefangen bin, sondern die Möglichkeit habe, von der Detailansicht halt PrevNext zu den vorherigen oder nächsten Artikeln zu springen und da ich jetzt das Ganze auch noch über Kategorien gefiltert habe, war natürlich auch dann gleich der Anspruch zu sagen, hey, wenn mein Filter irgendwie in der Übersicht aktiv ist und ich dann in einen Artikel einsteige, möchte ich natürlich im PrevNext Bereich genauso bitte nur den nächsten oder den vorherigen Artikel aus der Filterung heraus bitte anwählen können und das Ganze ging auch erschreckend einfach mit den Features, die da vor Ort sind. Das ist wirklich sehr, sehr angenehm. Dabei war dann die Kirby Reference tatsächlich mein Kerneinstiegspunkt. Ich glaube, an seinem ersten oder zweiten Tag meintest du, dass das sei dein bester Freund, da würdest du immer hingehen und alles rausfinden. Anfangs war ich noch komplett überfordert von der Seite und konnte das gar nicht so richtig einordnen, wie die mir helfen soll.

Nachdem ich die das ein oder andere Mal beim Über-die-Schulter-Schauen quasi für mich als Erklärung genommen habe, um zu verstehen, wie du darauf kommst, was du tust, war dann einfach klar, wo ich da welche Informationen rausziehe und in Summe hat es mir dann sehr geholfen, um genau dann so ein Feature dann zügig umzusetzen, weil ich wusste, welche Objekte habe ich an der Hand, welche Methoden habe ich an diesen jeweiligen Objekten dran und wie kann ich dann das umsetzen, was ich gerade gerne machen möchte. Ja, man muss so ein bisschen die Struktur von Kirby kennen, um sich dann in dieser Reference da irgendwie zurechtzufinden. Man muss wissen, wo man jetzt reinklicken muss, um eben auf diese Methoden zu kommen, die man jetzt braucht. Aber ich finde, wenn man das einmal drauf hat, ich glaube, das ist tatsächlich eine Seite, die ich wahrscheinlich mit am häufigsten offen habe. Da müsste man mal gucken in die Browser History, wie oft ich diese Seite aufhabe, aber es ist oft. Also das ist so mein Nachschlagewerk Nummer eins, was Kirby angeht. Genau, für mich, wie du schon meintest, war die absolut zentrale Geschichte dahinter, dieses mentale Modell aufzubauen, dass ich weiß, wie so Blueprint, Page, Template, Snippet und so, wie diese ganzen Schlagwörter zusammenarbeiten und wie die ganzen Zahnrädchen da so ineinandergreifen.

Vielleicht hätte mir da tatsächlich sogar noch eine Zeichnung innerhalb der Kirby-Intros irgendwie geholfen. Ich glaube, die da nicht gesehen zu haben, sondern schrittweise aus den Erklärungen von dir, als wir durch die Ordner gegangen sind, um irgendwas zu bauen, hat sich das so langsam erschlossen und vielleicht wird das noch mal eine nette Ergänzung, falls ihr einer von Kirby mal mithört. Das könnte da in eurer Webseite aufgenommen werden und würde zumindest den Einsteigern helfen. So ein kleines Baumdiagramm oder so, wo man so diese Abstufungen sieht dann. Ja, genau, um so zu erkennen, hey, hier sind die Beziehungen zueinander. Am Ende, wenn wir, ich komme ja aus dem Domain-Driven Design, irgendwie eine Idee davon haben, wie diese Fachdomäne, diese ganzen, ja, wichtigen Worte, die es da gibt, wie gesagt, Template, Blueprint oder Page, wie die zusammenarbeiten und wie man damit halt sich das Leben wirklich sehr, sehr einfach gestalten kann. Wollen wir das kurz mal anreißen, also das betrifft ja auch deine Seite, wie wir die aufgebaut haben. Ja, klar.

Also anfangen würde ich wahrscheinlich am ehesten mit dem Template, das sehe ich so als oberste Ebene. Ein Template ist quasi so eine Art Referenz auf eine Seite, wenn man so will. Das ist quasi die oberste Ebene, die wir in Kirby haben. Ich könnte in ein Template alles reinpacken. Ich könnte die komplette HTML-Seite inklusive Header, Footer, könnte ich alles in ein Template packen. Dann müsste ich noch, wenn ich dann das Kirby Panel benutze, ein entsprechendes Blueprint anlegen. Die beiden spielen immer zusammen.

Das Blueprint ist eine YAML-Datei, die quasi im Kirby Panel, also in diesem Admin-Bereich, wenn man so will, bei Kirby, die festlegt. Für dieses Template gibt es folgende Felder und folgende Optionen und ich kann hier nochmal den Titel ändern oder ich darf eben nicht den Titel ändern und das kann ich alles in so einem Blueprint festlegen. Das ist quasi die Panel-Seite von so einem Template und dann gibt es die gleichnamige Template-Datei. Das ist dann eine PHP-Datei, die quasi nach außen hin dann die eigentliche Seite rendert, wenn man so will. Die Heißen sind immer gleich, das heißt, wenn ich irgendwie einen Blog-Post habe und mein Blueprint heißt Post-YAML, dann heißt mein Template entsprechend Post-PHP. So sind die beiden dann quasi miteinander verknüpft und das ist so die oberste Ebene, wenn man so will, bei Kirby und man möchte natürlich nicht ständig Code kopieren und duplizieren, sondern das möchte man, wenn man so tickt wie wir, so ein bisschen ordentlicher haben und deswegen kommt dann sowas wie zum Beispiel Snippets ins Spiel. Das sind halt kleine Code-Blöcke, die ich dann wiederverwenden kann, das heißt, mein HTML-Header, wo vielleicht noch oben die Navigation drin ist, steckt, die packe ich jeweils in ein eigenes Snippet.

Ich habe einmal ein Snippet für den Header und ich habe für die Navigationsleiste oben ein eigenes Snippet und diese Snippets kann ich dann in jedem beliebigen Template wiederverwenden und einfach quasi in das Template reinladen und habe dadurch sehr viel weniger Code-Duplizierung in den Templates, weitaus saubereren Code, als wenn ich irgendwie alles ständig wiederholen würde. Das ist so die eine Abstraktionsebene, wenn man so will, ganz oben das Template, dann stecken da drinnen die Snippets. Dann müssen irgendwo die Daten herkommen, das sind, haben wir schon erzählt, das sind Markdown und dann stecken da drin noch ein paar weitere Informationen, das heißt, alle Felder, die man im Blueprint anlegt, die werden am Ende auch in dieser Textdatei gespeichert als einfach Key-Value-Pairs, wenn man so will und um an diese Daten zu kommen, verwenden wir jetzt Collections, zumindest an einigen Stellen, zum Beispiel für sowas wie, gib mir mal alle Blog-Posts, gib mir mal alle Notizen, da bietet sich einfach so eine Collection an, das ist quasi eine kleine PHP-Datei, die die eigentliche Abfrage macht, die sagt, okay, gib mir mal alle veröffentlichten Unterseiten von der Seite Blog und im Zweifel filtert die mir noch nach irgendwas oder was auch immer man da möchte, aber die Ursprungsidee ist quasi da, so eine Collection zu haben, wo man weiß, die nutze ich und ich habe, wenn ich die benutze, immer alle Blog-Posts zur Hand oder immer alle Notizen zur Hand. Die können wir dann in den Controller reingeben, das ist dann die nächste Ebene bei Kirby. Der Controller speist quasi Daten in das Template und im Controller kann ich dann noch ein bisschen mehr mit diesen Daten machen, ich kann die Daten umwandeln, wenn ich möchte, ich kann die filtern, das haben wir bei dir zum Beispiel gemacht, was Kategorien und so weiter angeht, das könnte man dann alles in den Controller filtern. Wir haben durch die Multi-Language-Geschichte bei dir auch einen Sprachfilter drin. Das Standardverhalten von Kirby ist, wenn es keine Übersicht gibt, dann kann ich die Daten in den Controller filtern, wenn ich möchte, aber wenn es keine Übersetzung gibt, zeigt der die Hauptsprache an, das heißt, wenn bei dir die Hauptsprache Deutsch ist, jemand jetzt aber einen Artikel auf Englisch aufruft, für den es gar keine Englisch-Übersetzung gibt, dann würde Kirby die deutsche Version anzeigen, finde ich persönlich nicht so gut und habe deswegen auch bei dir eingebaut, dass wenn es keine Übersetzung gibt, dass es dann eine 404-Seite gibt und damit dann ein nicht übersetzter Blog-Post dann auch gar nicht erst im Blog-Listing auftaucht, finden im Controller dann halt zum Beispiel Filter statt, wo dann gesagt wird, okay, filter mir Posts raus, die gar keine Übersetzung für die aktuelle Sprache haben.

Das kann man wunderbar alles in diesen Controllern dann machen. Dazu kann ich eine spannende Anekdote erzählen zu dem rausfiltern. Das hattest du ja gleich am Anfang quasi eingebaut und ich habe dann ja genickt und dachte mir, okay, ja, leuchtet total ein und als ich dann anfing, meine Buchkritiken aufzunehmen, wunderte ich mich, warum denn im Englischen ständig mein einer Artikel fehlt. Bis ich das dann geschnallt habe, weil das nicht so schnell offensichtlich war im Admin-Panel, dass der haltenden Text steht, ja, aber halt der deutsche, der Default-Text und da ich dann nie eine Anpassung vorgenommen habe und gesagt, bitte separat für Englisch diesen Text speichern, hat er mir das natürlich rausgefiltert. Und so saß ich dann nach einiger Analyse da und konnte mal wieder konstantinieren und sagen, hey, das war ein Feature und kein Bug. Schön, dass der Text nicht da ist und der Artikel wirklich ausgeblendet wird. Also ja, dieses Feature funktioniert sehr gut und ist sehr einfach und effektiv.

Hat erfolgreich den Blog-Autor verwirrt, sehr schön. Ja, man muss halt wissen, was man tut. Das war eine sehr herrliche Geschichte. Neben deinen Hauptbereichen sozusagen Blog, Notizen, jetzt auch ganz neue Bücher, was du dann ja auch schon ohne meine Federführung quasi umgesetzt hast, gibt es ein paar Sonderseiten bei dir auch, die hast du ein bisschen anders aufgebaut. Ja, das sind ja tatsächlich am Ende die statischen Dateien, wo ich wenig was machen möchte. Da kannst du auch Sonderseiten nennen. Das sind ja die Klassiker Imprint und Privacy oder tatsächlich auch Seiten, die als solches gar nicht wirklich auftauchen.

Zum Beispiel die Blogs wie auch meine Notizen oder Bücher sind ja untergliedert in Jahre, damit dann wiederum in den jeweiligen Jahren eine Handvoll Artikel liegen über die Zeit, aber nicht über den gesamten Lebensraum des Blogs. Der soll natürlich reich gefühlt und sehr langlebig sein. Ich dann irgendwann Hunderte, wenn nicht gar Tausende von Artikel untereinander habe und solche Sonderseiten sind dann quasi zur Strukturierung vorhanden, aber als solche gar nicht da, sondern nur als Platzhalter vorhanden. Das ist ja auch noch so ein ganz netter Ansatz, den du glaube ich auch als solches mitgebracht hast, mit dem veröffentlicht, aber nicht gelistet. So hattest du das glaube ich bezeichnet. Interessant, genau an diese Sonderseiten hatte ich tatsächlich gerade gar nicht gedacht, sondern ich wollte gerade darauf hinaus, dass du ja auch quasi so ein paar statische Seiten hast, die so ein bisschen abweichen. Ich dachte gerade an sowas wie die About-Page, die ziemlich grafisch aufgebaut ist, wo wir uns dann entschieden haben zu sagen, okay das bauen wir jetzt nicht alles im Kirby-Panel nach, weil wir wollen jetzt schnell online gehen und das wäre einfach zu viel Aufwand.

Da sind wir dann ein bisschen anders rangegangen. Ja, da war das dann der Weg, dass wir das Template zerschnibbelt haben, um es in der Form zu dynamisieren, dass da im Wesentlichen die Textblöcke aus dem Übersetzungsbereich kommen, also aus dem Sprachenfeature, womit wir wieder bei der Multilingualität sind. Und ja, aber ansonsten halt der Rest tatsächlich einfach nur HTML und CSS, in dem Fall ja Tailwind, in der Seite und keine weiteren Inhalte in dem Admin-Panel zu pflegen sind. Genau und so war es dann ein leichtes und schnelles, die Templates zu übersetzen und mit dem eigentlichen Lorem Ipsum durch meinen Content zu ersetzen. Das war gut und da ich die Texte nicht ändern will, passt das soweit. Also da muss ich mir nicht die Mühe machen, da 50 Felder zu bauen, die dann wiederum eigentlich nur 1 zu 1 übernommen werden. Das war ein sehr guter Ansatz, um Zeit zu sparen.

Ja, die Alternative wäre noch gewesen, diesen Blog-Editor von Kirby zu nutzen und diese einzelnen Design-Elemente in eigene Blöcke zu gießen, da eigentlich eigene View-Komponenten und Plugins zu schreiben, aber auch das wäre für das schnelle Online-Kommen ein bisschen too much gewesen. Von daher denke ich auch, dass es ein guter Ansatz ist. Und wenn man irgendwann doch nochmal merkt, da passiert doch zu viel, dann muss man sich dann nochmal überlegen, wie man es dynamisiert. Wobei es ja schon zum Teil dynamisiert ist, wenn ich an deine Homepage denke, die ja auch so ein Template ist, was sich hauptsächlich inhaltlich aus diesen Übersetzungen speist, aber dann doch Teile hat, wie zum Beispiel die drei neuesten Blog-Posts, die angezeigt werden. Das ist dann ja so halbdynamisch. Also auch da kann man ja rangehen und sagen, man splittet das ein bisschen auf. Ja, was da ganz angenehm ist, diese halbdynamischen Seiten, als auch die volldynamischen, wie Blog oder die Bücherseite, füllen sich ja aus den Collections, die du vorhin erwähnt hast.

Und ich habe mir die Mühe gemacht, tatsächlich in die Collections den Filter hochzuziehen, sowohl für die Kategorien als auch für die Sprache und das gar nicht in Controller zu machen, weil das mir die Möglichkeit bat, wenn ich im einzelnen Blogartikel oder in den Detailansichten meiner Buchkritik bin, auch auf diese Collection zuzugreifen und nicht einen separaten Controller für das Ding nochmal schreiben zu müssen, weil die bei mir alle das gleiche gemacht hätten. Bitte sortiere nach Zeit, bitte filter nach Kategorie und filter mir je nach Sprache die Inhalte raus, um dann zum Beispiel PrefNext in der Detailansicht anzuzeigen oder im Blog-Post den Filter nach der Kategorie. Und da das eh immer überall gleich war, habe ich das tatsächlich auf die Collection-Ebene hochziehen können, was auch schön einfach ging, sehr angenehmes Refaktorieren und ich kann mir sicher sein, dass dann entsprechend überall da, wo auf die Collections zugegriffen wird, immer die gleiche mit derselben Logik passiert. Und ja, don't repeat yourself funktioniert hier ganz hervorragend und reduziert dann auch die Fehlerquelle. Was mir noch einfiel, was ich auch noch unbedingt erwähnen wollte für diejenigen, die das mit den Snippets verwenden wollen, dass ich dann ja gelernt habe, ich kann die Snippets nicht nur einfach als wiederverwendbaren statischen Blog nehmen, ich kann die Snippets auch parametrisieren, womit sie ja faktisch eine Funktion sind, die Eingangsparameter hat. Und kann sagen, ich gebe hier einmal eine Liste von Büchern rein und das andere mal eine Liste von Blog-Artikeln oder eine Liste von Notes. Und in meiner ursprünglichen Seite, wo ich das einbetten will, heißen die Variablen anders, sind aber vom Prinzip her ähnliche Typen, kann die dann entsprechend in mein Snippet reingeben und der kann dann daraus die entsprechenden Codeschnipsel bauen.

Das war zum Beispiel sehr sinnvoll beim Paginieren oder halt auch mein PrefNext, wo ich das dann auch sehr sinnvoll nutzen konnte, weil ich in meinem PrefNext-Navigationselement einen kleinen Button in der Mitte habe, der mir wieder zurück auf die Hauptseite springen soll. Was im Falle der Bücher die Bücher-Hauptseite ist, im Falle der Blog-Post natürlich die Blog-Hauptseite. Und könnte ich die Snippets nicht parametrisieren, könnte ich wiederum denselben Snippet nicht nutzen, sondern ich muss ja irgendwie unterschiedliche Informationen dort reingeben können, damit ich möglichst viel davon wiederverwenden kann. Also auch dort hat die Kirby-Fraktion gut nachgedacht und uns einen einfachen Weg gegeben, das entsprechend vielfältig und flexibel zu nutzen. Ja, man kann sogar noch einen Schritt weitergehen, wenn man möchte. Das mache ich gerade recht intensiv auf meinem Redesign-Branch, den es nicht gibt. Denn diese Snippets, die haben seit, lass mich lügen, Kirby 4 auch eine sogenannte Slot-Funktion.

Das heißt, man kann in den Snippets selber dann so Slots definieren, zum Beispiel Header. Keine Ahnung, man hat so eine klassische Card, wo man so einen kleinen Header und einen Footer mit einem Button hat und in der Mitte dann der eigentliche Content. Das heißt, man könnte da drei Slots definieren und kann die dann, wenn man das Snippet benutzt, individuell überschreiben, diese einzelnen Slots. Was sehr cool ist, wenn man so leicht abgeänderte Darstellungsweisen dann hat und trotzdem immer das gleiche Snippet und keine Ahnung, bei einem Buch zeigst du eben oben nicht den Subtitel, sondern den Autor an. Also überschreibst dann einfach den Header-Slot und gibst dann da nicht als Parameter das rein, sondern gibst dann direkt irgendwie das HTML rein für den Autor, weil da irgendwie noch ein SVG dranhängt oder so. Das ist auch nochmal ganz angenehm. Bei dir waren jetzt die Snippets noch nicht so umfangreich, als dass ich es gelohnt hätte, aber wollte ich zumindest mal erwähnt haben, dass da sogar noch mehr Möglichkeiten gibt, wo man echt coole Sachen mitbauen kann.

Ich konnte bei mir ganz, ganz, ganz viele Snippets jetzt einfach wegschmeißen, weil ich das in ein Snippet packen konnte und dann einfach über Slots regeln und überschreiben konnte. Ist sehr angenehm. Macht sehr viel cleaneren Code am Ende dann. Das musst du mir unbedingt zeigen, weil ich war genau an diesem Punkt nämlich jetzt auch, weil ich unterschiedliche Templates, also so unterschiedlich waren sie dann nämlich gar nicht, für mein Buch und für meinen Blog hatte, weil in meinem Buch schreibe ich halt kurz, hey, ich habe das gelesen, ungefähr ging es so darum und wenn ihr eine genaue Kritik lesen wollt, hier habe ich noch eine detaillierte Blog-Post-Variante geschrieben und würde die halt gerne verlinken. Und letztendlich hat sich damit das Template in Teilen doch dann verändert und mir war ein bisschen unklar, wie ich das ohne großes Copy-Pasten lösen soll. Und ich glaube, genau da gerät diese Slot-Nummer rein. Das zeigt mir unbedingt bei der nächsten Pairing-Session, weil dadurch könnte ich auch einige Zeilen-Code sparen.

Dann haben wir schon die nächste Aufgabe für nach diesem Podcast. Ich habe noch ein Bullet-Point hier mit Panel-Setup, den würde ich jetzt einfach mal so ein bisschen außen vor lassen, weil wir haben schon so ein bisschen drüber gesprochen, wie wir das so aufgebaut haben mit den Blueprints. Gibt so ein paar Details, dass wir dann noch Tabs haben für Dateien und eben für die Kommentare und so ein paar Metadaten. Kann man ja vielleicht nochmal irgendwann drüber sprechen. Weil wir jetzt schon so lange dabei sind, würde ich einfach nochmal ganz kurz dich fragen, der jetzt quasi seit dreieinhalb Wochen mit Kirby arbeitet. Wie fühlt sich das jetzt so an, so nach der Zeit? Nicht nur was die Entwicklung angeht, sondern auch mit dem Bloggen und so.

Wie kommst du klar? Ja, gut.

Also tatsächlich, ich habe es ja zwischendurch schon erwähnt. Die Kirby-Reference ist mein bester Freund. Die mentalen Modelle sind langsam klar. Du hast sie ja eben auch nochmal schön skizziert. Ich konnte bei jedem der Punkte nicken und dachte mir, das passt zusammen. Und über die Snippets habe ich auch gleich nochmal was gelernt. Großartig. Ich muss sagen, unsere Automatisierungsschritte, sei es das Posten Richtung Mastodon durch deinen Indie-Connector, als auch die GitHub-Actions, die mir das Deployment vereinfachen, reduzieren den gesamten Schmerz in der Summe, um irgendwie Content rauszubringen.

Also letztendlich ist es genau das. Ich mache jetzt nichts anderes, außer coole Ideen irgendwo haben. Ich lese Artikel, ich lese ein Buch. Irgendwas geistert mir rum. Der Stift wird rausgezogen. Ich mache mir nur noch Gedanken über Inhalte und die gehen halt raus. Das ist großartig.

Wenn ich da nur an die Zeiten zurückdenke, ich glaube vor zwölf Jahren oder so, hatte ich mal überlegt über irgendwelche wordpress.org oder wie die Seite da hieß, irgendwas da rauszubringen. Und das war immer einfach nur gefummelt und nervig. Und vielleicht hatte ich auch damals einfach keinen so guten Mentor im CMS mit an der Hand, der mich da begleitet hat. Insofern da auch nochmal ganz, ganz vielen lieben Dank in deine Richtung. Ja, gerne. Ich freue mich immer, wenn ich Leute zum Bloggen bringen kann. Ja, und insofern, ich fühle mich auch einfach schlichtweg gut gewappnet um solche Aspekte wie, wie mache ich eine Artikelserie.

Das ist zum Beispiel so eine Baustelle, die ich jetzt demnächst mal anpacken möchte, wenn ich nicht nur einen großen Artikel schreibe, sondern mehrere, die irgendwie zusammenhängen und wie baue ich das sinnvoll in meine Seitenstruktur rein. Dann habe ich in einem befreundeten Blog, maurice-renk. de, sowas gesehen wie ähnliche Inhalte. Finde ich ja auch super interessant, weil ähnlich wie der PrevNext nimmt das so ein bisschen diese Sackgasse von dem einzelnen Artikel irgendwie weg. Also wie baue ich mir sowas? Ja. Und was bei mir auch noch ganz groß steht, ist dann so ein Autopublished bei Medium.

Selbst wenn das da nicht der Hauptfaktor ist, wo wir hinschreiben, finde ich es doch durchaus interessant, da eine gewisse Präsenz zu haben, weil viele Leute dort unterwegs sind und auch dort wieder Reichweite zu gewinnen. Und grundsätzlich fühle ich mich für die ganzen Ideen sehr gut gewappnet und habe das Gefühl, mit Kirby da auch ein gutes Werkzeug in der Hand zu haben. Deswegen nach drei Wochen so vertraut, zumindest so vertraut, wie ich mich fühle, aber wie es dann so ist mit der Lernkurve. Noch bin ich ja auf dem aufsteigenden Ast und denke, ich kann alles und irgendwann kommt ja dieser tiefe Fall, das Tal der Tränen, wo ich denke, ich weiß dann doch gar nichts, weil ich tausend Wege kenne. Warum hat das überhaupt mal funktioniert? Ja, der Klassiker, genau. Das hätte doch eigentlich nie gehen dürfen.

Nur das ist ja der typische Weg, wie einfach Lernkurven stattfinden und ich genieße da, wo ich jetzt gerade bin, einfach diesen Wow-Effekt. Insofern ist es einfach nur großartig. Ich arbeite gern mit Kirby und das ist einfach schön. Das freut mich zu hören. Und du hast ja so ein paar Dinge angesprochen, sowas wie Medium und auch, dass du zum Beispiel automatisch zu Blue Sky crosspostest. Das können wir nochmal so als kleinen Cliffhanger aufnehmen. Das ist bestimmt nochmal was, worüber wir in einer der kommenden Folgen sprechen könnten.

Wir haben dann nämlich so einen kleinen Crossposter am Start, den wir auch der Öffentlichkeit zur Verfügung stellen wollen, wo man dann einfach eine Quelle angibt und von dort aus woanders hin verteilt. Das wird bestimmt nochmal Folgeninhalt für später. Ich würde jetzt abschließen, wenn ihr Marks Blog, Notizen, Bücherrezension lesen wollt, könnt ihr direkt auf seine Seite gehen oder folgt ihm bei Mastodon oder bei LinkedIn oder bei Blue Sky. Und wenn euch dann noch langweilig ist, dann könnt ihr diesen Podcast auch noch abonnieren. Und im Zweifel dürft ihr auch gerne bei mir nochmal auf der Seite vorbeischauen. Alle Infos, alle Links findet ihr in der Beschreibung dieser Folge. Und ich würde sagen, von uns war es das jetzt erstmal.

Ist doch ganz schön lang geworden, die Folge. Habe ich gar nicht so mit gerechnet. Wir freuen uns, dass du uns zugehört hast, dass ihr uns zugehört habt. Wir würden uns noch mehr freuen, wenn ihr in zwei Wochen, da streben wir so einen Rhythmus an, wieder dabei wärt, wenn ihr diesen Podcast abonnieren würdet. Und wir würden uns natürlich bis dann auch über euer Feedback freuen. Und ich würde sagen, fürs Erste sagen wir mal Tschüss. Mark, es war mir eine Freude.

Ich würde sagen, bis zum nächsten Mal in zwei Wochen. Maurice, es war großartig. Und wie man so schön sagt in Hamburg. Tschüss und bis zum nächsten Mal. Tschüss. Bye bye. Untertitel von Stephanie Geiges