Mein Blog

Zahlen & Fakten

Ich wollte schon immer eine Statistik-Seite haben und nun ist sie da. Erst mal mit drei grundlegenden Grafiken, um verschiedene Diagrammformen auszuprobieren.

  • Posts je Jahr als horizontales Diagramm.
  • Posts je Typ als vertikales Diagramm.
  • Posts je Monat wären weder horizontal noch vertikal praktikabel gewesen. Also habe ich mich für eine Heatmap entschieden.

Bei der Gelegenheit musste ich mich ein wenig mit SVG auseinandersetzen und habe die Diagramme dann auch vollständig als SVG generiert. Keine externen Pakete oder irgendein fancy stuff. Nur ein bisschen rechnen. Sogar mit einer hübschen Farbumkehr im Darkmode.


Update: Es sind noch zwei Charts hinzugekommen. Posts je Stunde und Posts je Wochentag, und es hat sich herausgestellt, dass ich gar nicht mal so ein extremer Wochenendblogger bin, wie ich vermutet hatte.

Tagebuch

Vor einer Weile habe ich angefangen, ein digitales Offline-Tagebuch zu schreiben. Also schon in digitaler Form auf einem Rechner, aber nicht im Web veröffentlicht. Das hat zur Folge, dass wesentlich weniger Hirnfürze hier im Blog landen. Und das ist gut.

Inhaltlich geht es im Großen und Ganzen um Fakten zum Tag und um Gespräche oder Ereignisse, an die ich mich später mal erinnern möchte oder muss. Nichts, das zu privat ist.

Die Texte schreibe ich in Markdown mit einer Art Frontmatter. Jeden Tag erstelle ich eine Datei, e. g. 2026-07-18.md, und schreibe dort mehr oder weniger ungeordnet rein. Zettlr hat sich als das ultimative Schreibwerkzeug erwiesen und hat sogar eine LanguageTool-API-Integration.

Plaintext, was Markdown ja letztendlich ist, erscheint mir als nachhaltiges Format, um Texte längerfristig zu speichern. Wer schon das eine oder andere Jahrzehnt bloggt, hat sich vielleicht auch schon mal Gedanken darüber gemacht, ob es nachhaltig ist, ein Blog ausschließlich in einer Datenbank zu halten.

Damit ich von jedem Gerät aus schreiben kann, lagern die Texte in einem privaten Git-Repository. Um den Spaß bequem lesen zu können, gibt es noch ein kleines Git-PHP-Projekt zur Ausgabe des Tagebuchs im Browser.

Das Schöne an einem privaten Blog ist: Man muss gar nicht jeden Tag „abliefern“. Zurzeit habe ich mal wieder keine Lust zu schreiben und daher gibt es an solchen Tagen auch nur ein Foto, wenn überhaupt. Später vielleicht.

standard.site || Blogs schnell in die ATmosphere bringen

Vor einer kurzen Weile bin ich von verschiedener Seite auf standard.site und den Reader aufmerksam gemacht worden. Ich fand’s toll und wollte auch dabei sein. Und da das AT Protokoll eine recht überschaubare Sache ist, habe ich meinem Blog einen bsky-Account gegönnt und ein Composer-Päckchen geschnürt, um eine beliebige PHP-basierte Publikationsplattform recht einfach anbinden zu können.

Und siehe da. Nach nur wenigen Stunden ist mein Blog auf der standard-reader.app sichtbar.

Das Package macht ein Blog und seine Posts im Atmosphere-Netzwerk (eg. standard-reader.app) sichtbar und crosspostet auf BlueSky. Es hat keine weiteren Abhängigkeiten außer ext-curl und ext-json und kann mit ein paar Handgriffen im eigenen PHP Code eingebunden werden. Zurzeit gibt es noch keine Registrierung bei Packagist und man muss das Repo in der composer.json des Host-Projekts bekannt machen:

  "repositories": [
    {...}
    {
      "type": "git", 
      "url": "git@github.com:kniebes/io-atmosphere.git"
    }
  ]

Naja, und der Rest steht im README und im Implementierungsbeispiel.

Soo … Endlich habe ich mir mal ein paar Minuten genommen und das Layout von der Last.fm-RecentTracks-WebComponent tauglich gemacht für mobile Endgeräte. Bei langen Titeln oder Künstlernamen sah das immer etwas gruselig aus.

Last Fm Recent Tracks Web Componente
Last Fm Recent Tracks Web Componente

Ein weiterer Tag hinter geschlossenen Fenstern.

Ein weiterer Tag hinter geschlossenen Fenstern. Bis gerade eben. Da es sich draußen mittlerweile auf manierliche 27 °C abgekühlt hat, konnte ich nicht widerstehen, ein bisschen frische Luft zu atmen.

Tagsüber habe ich mich noch etwas mit dem Movie Tracker beschäftigt. Zum einen gibt es jetzt mehr als nur Titel, Datum und Bewertung. Und ein RSS-Feed darf natürlich nicht fehlen. Beim Tracken eines Films werden nun alle anderen Daten aus der TMDb-API geladen. Es hoffe, das hält mich etwas bei der Stange, und ich gebe das Tracken nicht wieder aus Faulheit auf, wenn ich nur den Titel, die Bewertung und evtl. einen Kommentar eingeben muss.

Darüber hinaus habe ich versucht, den Schlaf, der mir in den zu warmen Nächten entgangen ist, nachzuholen.

Movie Tracker

Seit einer Weile halte ich die Filme fest, die ich mir anschaue. Naja, nicht immer. Manchmal vergesse ich es auch oder habe mein Handy nicht zur Hand und denke später einfach nicht mehr dran. Wie auch immer, gibt es eine neue /slashpage: Movie Tracker Das Design ist vielleicht noch nicht endgültig, aber es ist ein brauchbarer Anfang.

Update: Hmm… ich denke, den Darkmode muss ich noch anpassen.

Notes wiederbelebt.

Zur Feier des Tages, weil heute Donnerstag ist, habe ich die Notes wiederbelegt. Wiederbelebt ist vielleicht etwas großspurig. Sie haben lediglich eine eigene Seite bekommen und ich habe mich an das Format erinnert.

Anglifiziert.

Wenn man mehrere Blogs hat, stellt sich halt die Frage: Warum?

Das habe ich mich bei dem Photostream schon eine Weile gefragt. Letztendlich taucht dort nur eine Auswahl der Fotos auf, die es hier ohnehin gibt. Das ist eine vage Daseinsberechtigung. Nach ein wenig Hin und Her habe ich mich entschlossen, der Domain kniebes.photo ein kleines Plus zu geben, das den Inhalt von dieser Seite unterscheidet.

Und so habe ich mich entschieden, den Stream auf Englisch zu führen. Wenn ich mich hier schon nur einer Nischensprache bediene, kann ich zumindest dort ein nicht deutschsprachiges Publikum ansprechen. Nebenbei zwingt mich die andere Sprache, mir für den Stream eigene Worte zu suchen, statt den Blogtext zu recyceln.

Ich muss zugeben, es brennt mir auch unter den Fingern, dieses Blog auf Englisch weiterzuführen.

Photoblog aufgemöbelt.

Ich habe den etwas verregneten Tag genutzt, um das Photoblog zu generalüberholen.

Die Detailseiten könnten grob an Flickr erinnern. Allerdings mag ich lieber echtes Schwarz. Ein Klick auf das Featured-Foto zoomt rein und man kann es im Image-Viewport mit der Maus oder per Touch-Event bewegen.

Der Stream ist nun ein ordinäres Grid, in dem die einzelnen Elemente das gleiche Seitenverhältnis haben. Das läuft ohne viel Javascript und ist unkompliziert. Ich hatte eine Masonry‑Implementierung ausprobiert, bei der die Elemente in Spalten einsortiert wurden. Beim ersten Versuch in die kürzeste zuerst und beim nächsten Versuch Round Robin. Natürlich wollte ich je nach Weite des Viewports 1 bis 5 Spalten haben. Wenn in die kürzeste Spalte einsortiert wird, ändert sich die visuelle Reihenfolge beim Resize und Neusortieren. Bei Round Robin, kann man das Problem haben, dass in Spalte X vorwiegend Bilder im Querformat landen und in Spalte Y vorwiegend Bilder im Hochformat landen. Das führt dann zu sehr unterschiedlichen Spaltenhöhen. Beides ein Krampf.

Und viel spannender: Es gibt jetzt eine paar sehr grobe Kategorien. Ich muss gestehen, dass ich die 1126 Fotos von Haiku habe kategorisieren lassen. Dazu war ich dann doch etwas zu faul. Und das klappt recht gut. Für solche Jobs sind LLM geradezu gemacht.

Und wie das bei den meisten Hobbyprojekten so ist: Es ist nie fertig und ich werde bestimmt noch weitere daran basteln. Ja, und es ist noch immer auf skurrile Weise zweisprachig.

Anders bloggen

Dieser Post ist ein kleines Experiment. Ich schreibe den Text als Frontmatter. Also ein paar key-value-Pairs oder YAML im Kopf und Markdown im Body. Claude checkt dann einmal ob ich Tinnef geschrieben habe, macht Witze über meine Tippfehler und erstellt dann einen Post über den MCP Server für das Blog.

So weit der Grundgedanke. Und während ich in vi noch fröhlich vor mich hin schreibe, weiß ich natürlich noch nicht wie gut das klappen wird.

Falls sich das Ganze als praktikabel herausstellt, muss ich dem create_entry-Tool noch Zugriff auf Last.fm geben um den zuletzt gescrobbelten Titel abzuholen um den im Post zu verankern. Und ein photo_tool ist in Anbetracht des Inhalts in diesem Blog vielleicht auch ganz sinnvoll.

Update: Und nach dem Posten, weiss ich nun, dass es perfekt funktioniert hat.

Update: Zum Foto-Upload: Ein MCP-Tool dafür ist leider keine gute Idee. Das Problem liegt darin, dass alle Tool-Parameter durch den Kontext des Sprachmodells müssen. Ein base64-kodiertes JPEG von ein paar Megabyte ergibt einen ebenso großen Textstring und das übersteigt schnell, was sinnvoll durch den Kontext geht. Stattdessen läuft der Upload direkt per curl an einen separaten HTTP-Endpunkt, komplett am Modell vorbei. Das MCP-Tool kümmert sich dann nur noch um die Metadaten.

Bokehodon Maximus V2

Letztes Jahr im Mai gab es das Foto und nun benutze ich ein daraus abgeleitetes Video, um das neue Video-Feature im Blog mal auszuprobieren.

Und wird es in Zukunft mehr Videos geben? Ja, vielleicht. Und vielleicht auch echte. Videofunktion an der Z8 ist schon beeindruckend. In der Vergangenheit war das für mich immer ein bloßes Beiwerk, das ich mal ausprobiert, aber danach nie wieder ernsthaft genutzt habe.

Da isser wieder!

Ich hatte schon eine Weile dieses Ziehen in den Rippen, da, wo sie alle mal in Reihe durchgeknackst sind. Mein Frühwarnsystem. Aber nun ist er wieder da und sitzt an meinem Schreibtisch und grinst blöd vor sich hin: der Wochenendblogger. Und ich fürchte, der wird noch eine Weile bleiben.

Und was hat er im Gepäck? Ja, klar! Was sonst. Eine weitere sinnlose Folge Starfleet Academy. Normale Menschen hätten ja nach den ersten beiden bemerkt, dass datt nix wird. Aber nicht Paramount. Die haben von dem Quatsch gleich 10 Folgen gemacht?!

Aber was soll ich auch posten, wenn ich keine Fotos mache. Rumlabern? Wie das in den meisten Blogs so läuft? Nicht mein Ding.

Bis neulich.