knuspermagier.de

Der privateste Blog von Philipp.

Serie: BetterJournal
BetterJournal (1)

Ja, ihr wisst was jetzt kommt. Ihr werdet wieder sagen, warum Philipp, warum benutzt du nicht einfach weiter Day One und ein paar andere Apps um genau das abzubilden, was du willst. Meine Antwort ist: Ja, werde ich in drei Wochen wahrscheinlich wieder machen, wenn mir aufgefallen ist, dass ich wieder nur einen Proof of Concept baute, der mir nach wenigen Tagen keinen Spaß mehr macht. Nichtsdestotrotz ist es mal wieder an Zeit der Zeit für ein paar Posts zum Thema “Philipp hat ein neues Laravel-Projekt erstellt”.

Inhaltsverzeichnis

Status Quo

Seit 2012 benutze ich Day One. Mal mehr, mal weniger. Zuerst war ich sehr zuverlässig, was das anging, später wechselte ich mal kurz auf Papier-Tagebücher, was auch irgendwie schön war, aber jetzt fehlt mir einfach ein Jahr, das ich nochmal abtippen müsste, um es mir wirklich angucken zu können — falls ih es noch lesen kann. Blöd.

Schlimmer als ein Papiertagebuch ist allerdings, wenn man gar kein Tagebuch führt, was zu einer ziemlich großen Lücke führt, keine Ahnung, was so 2018 und 2019 passierte. Damals ging man noch raus, oder? Hahaha, ein verzweifelter Pandemie-Witz.

Wie kam es dazu? Ich war Day One-Müde und fand keine bessere App um meine täglichen Ergüsse zu notieren. Ich konnte mich nicht dazu überwinden, die App zu öffnen, weil sie mir einfach mittlerweile zu überladen war. Allein, dass ich zwanzig verschiedene Sachen hinzufügen kann, obwohl ich eigentlich nur Text will, nervte mich, dazu fand ich die Darstellung nicht mehr so schön wie damals. Keine Ahnung.

Nach dem ich also ziemlich lange gar nichts schrieb, weil ich mich nicht dazu überreden konnte, Day One zu benutzen, aber auch keine andere App fand, baute ich mir kurz einen Shortcut, mit dem ich in einfache Text-Dateien schreiben konnte. Einige Monate funktionierte das, bis ich, Achtung, doch wieder Day One nutzte. Ich überwand mich quasi aus Gruppenzwang, da viele, die ich kenne, es auch nutzen und wir regelmäßig einen Screenshot unseres “Current Streak” iOS-Widgets austauschen, zur Motivation.

Ich fing mit der Zeit an, neben dem normalen “Ja, heut bin ich aufgestanden, hab gearbeitet und was gegessen”, auch ein paar andere Sachen festzuhalten, die vielleicht mal wichtig sein könnten. Ich habe ja eine chronische Darmerkrankung und ich mache mir nun Notizen, wie es meinem Darm so geht, damit ich jetzt, nach zehn Jahren, vielleicht mal herausfinden kann, welches Essen oder sonstige Einflüsse da etwas triggern. Schlau, hätte man auch vor zehn Jahren schon anfangen können. Besser spät als nie!

Dazu kommen Events wie, keine Ahnung, wenn ich ein vierblättriges Kleeblatt finde, oder, ähnlich selten, wenn ich in Everdell gewinne.

Dieses und andere ähnliche Sachen regelte ich bisher indem ich Tags in den Posts verwende. Somit kann ich immerhin danach suchen.

Als Computerentwickler reichte mir das natürlich nicht. Ich will das in Grafen sehen, oder genau anzeigen, wie viele Tage zwischen meinen Everdell-Siegen und anderen Events lagen. Zudem kam ja meine allgemeine Unzufriedenheit mit Day One. Aber wie schaffe ich es, mit sehr geringen Zeitaufwand etwas zu bauen, das am Ende auch wirklich benutzbar ist und wo die Chance besteht, dass ich es länger als drei Tage benutzen werde?

Sprint 1

Ich habe erstmal damit angefangen mir eine wirklich kleine Todo-Liste zu machen und eine Runde Version 1 zu überlegen. Einen ersten Sprint sozusagen, nach dem ich direkt am Abend meinen ersten neuen Tagebuch-Eintrag absetzen kann. Da es bereits 22 Uhr war, betrug die Länge meines Sprints also zwei Stunden. Das ist eine angenehm überschaubare Zeit, was sollen immer diese zwei oder dreiwöchigen Sprints.

Sprint 1 enthielt Folgendes:

Umsetzung

Natürlich erstellte ich eine neue Laravel-App, ich überlegte mir nämlich, dass ich mal was ganz klassisches machen will, ohne React oder Vue. Einfach ein bisschen serverseitig rerenderte PHP-Templates. Nichtmal Livewire (bisher).

Nachdem ich überlegte, ob ich mir jetzt wirklich lokal MySQL (oder Docker) installieren will auf mein bisher sehr sauberes Macbook, viel mir ein, dass ich in letzter Zeit etwa zweitausend Artikel las, in denen Stand, wie geil SQLite einfach ist, also fackelte ich nicht lange und schrieb folgendes in meine .env:

DB_CONNECTION=sqlite
DB_FOREIGN_KEYS=true

Ich habe auch kurz über Flatfiles nachgedacht, ja, mein letzter Versuch, BetterJournal zu bauen, basierte auch auf Kirby, als ich kurz in meiner Kirby-Honeymoon-Phase war, aber nee, darauf habe ich gerade keine Lust.

Naja. Das Datenmodell für die eine Tabelle erstellen war nun nicht besonders aufwändig, die Authentifizierung über die ganzen Laravel-Bordmittel auch nicht. Ein paar Formulare, eine Liste, ein bisschen CSS, damit es nicht ganz furchtbar aussieht, schon konnte man es quasi benutzen, nett!

Für die Grafen benutzte ich schnell Chart.js, ich habe die JS-Dateien heruntergeladen und nicht per npm installiert, uiuiui. Das werde ich, wenn noch mehr JavaScript hinzu kommt aber sicherlich noch etwas schlauer machen. Das CSS ist bisher auch nur eine einfache style.css-Datei im public-Ordner.

Der aufwändigste Punkt war alles auf den Homelab-Server zu werfen, der war nämlich aus, da der Elektriker, der letztens den Herd reparierte, leider die Sicherungen herausfliegen ließ und der Rechner daher aus war. Schade. Ich musste also aufstehen, hingehen und den Knopf drücken — und alles rüberkopieren. Ich richtete sogar einen Cronjob ein, der die Datenbank regelmäßig als Backup kopiert, wow!

Review

Tatsächlich konnte ich meinen ersten neuen Tagebucheintrag direkt verfassen. Ziel des Sprints erreicht!

artboard.png
Daten natürlich random, aber man sieht ungefähr, worauf ich hinaus will

Retro

Nachdem ich aus ein paar verschiedenfarbigen Sticky-Notes im Miro-Board eine Giraffe als Warmup malte, kann ich sagen, dass es mir gut gefallen hat, zur Abwechslung mal nicht vue create betterjournal als ersten Befehl einzugeben. Das schnell mit Laravel zusammenklöppeln funktionierte, wie schon vor zehn Jahren super gut. Kein Bash gegen irgendwas, einfach nur der Fakt, dass man in dem, was man tausend Jahren macht, einfach am schnellsten ist. Falls ich mich entscheiden sollte, das wirklich intensiv zu benutzen und weiterzuentwickeln, sollte ich den Code allerdings etwas aufräumen.

Außerdem sollte ich dafür sorgen, dass der Homelab-Server nach einem Stromausfall automatisch wieder angeht.

Planning

Mein Backlog ist jetzt nach wenigen Tagen der Nutzung schon ganz gut gefüllt. Der nächste Zwei-Stunden-Sprint ist schon gut gefüllt und beinhaltet erstmal ein bisschen visuellen Schmuck und eine Anzeige der aktuellen Streak – und natürlich den Import der ganzen Day One-Posts.


PS: Mein erster Gedanke, also nach dem, es mit Kirby zu bauen, oder mit einer ganz anderen Technologie, also eigentlich eher mein siebter Gedanke, war es, die Sachen einfach in InfluxDB (oder einer anderen Time-Series-Datenbank) zu speichern. Zumindest was Messwerte und Events angeht könnte man somit auf das ganze Ökosystem von Dashboard und Charting-Software zurückgreifen, also z.B. ein schönes Grafana-Dashboard für sein Leben bauen — da mein Tagebuch allerdings doch hauptsächlich aus Text besteht und die anderen Sachen nur, eher temporäres, Beiwerk sind, sah ich wieder davon ab.

Post-Serie BetterJournal:

Kommentare, Feedback und andere Anmerkungen? Schreib mir eine E-Mail 🤓