knuspermagier.de

Hallo. Ich bins! Philipp!

Serie: BetterJournal
BetterJournal (2)

Zwei Tage und zwei weitere Kurz-Sprints weiter und mittlerweile ist es nicht mehr ganz so weiß und grau. Außerdem baute ich folgende Dinge ein, damit es Day One noch etwas näher kommt und benutzbar wird:

bejouv3.png

Ich hätte dazu jetzt gerne noch ausufernd was geschrieben und meine Arbeit beschrieben, aber letztendlich war nichts spannendes dabei. Also, vielleicht die Query für die Streaks, die benutzt nämlich eine Common Table Expression, wovon ich vorher noch nie hörte. Es ist quasi eine temporäre Tabelle, die man in der Query erzeugt und aus der man Kram herauslesen kann.

WITH groups AS (
    SELECT  RANK() OVER (ORDER BY date) AS row_number,
            date,
            date(date, "-" || RANK() OVER (ORDER BY date) || " days") AS date_group
            FROM journals
            group by date(date)
)

SELECT  COUNT(*) AS days,
        MIN (date) AS start,
        MAX (date) as max_date
FROM groups
GROUP BY date_group
ORDER BY max_date DESC
LIMIT 1

Natürlich habe ich das auch nur aus dem Internet zusammengesucht und auf meine Anforderungen angepasst, da wär ich ja niemals drauf gekommen.

Mit dem WITH groups () wird eine temporäre Tabelle erzeugt, die sich aus dem innenliegenden SELECT-Statement speist, die enthält die spannende Spalte date_group, in der die ganze Magie liegt.

Bisschen verwirrend, das alles date heißt, aber gut. Also, Folgendes: date() ist die SQLite-Funktion um ein Datum im Format YYYY-MM-DD auszugeben, und sie kann das Datum auch modifizieren. Hier nehmen wir also die Spalte date eines journals und ziehen davon die Zeilennummer (RANK() OVER (ORDER BY DATE)) ab. Die Pipes sind der SQLite-way um Strings aneinander zu pappen. Was ist jetzt die Magie daran, werdet ihr euch Fragen?

Angenommen, ihr habt eine Streak vom 1.9. bis zum 3.9. und eine vom 5.9. bis zum 7.9., hätte die Tabelle folgenden Inhalt:

Umso öfter ich es mir angucke, umso magischer finde ich es. Ich wünschte, ich käme auch mal auf so eine Idee und müsste es nicht erst auf Stack Overflow finden.

Hat man einmal diesen Teil, kann man nun aus der temporären groups Tabelle einfach die aktuelle Streak rausholen, in dem man nach date_group gruppiert und halt das Aktuellste nimmt.


Nach diesem kurzen Exkurs in die Welt von SQL, zurück zum Thema. Meine Todoliste wuchs beim Herumbasteln noch weiter, wie immer, typisches Ideenfeuerwerk, während man etwas baut und Spaß hat. Keine Davon ist jetzt allerdings so wichtig, dass ich sie dringend einbauen müsste, jetzt werde ich alles erstmal ein paar Tage oder Wochen Probelaufen lassen, hoffe ich. Man soll ja aufhören, wenn es am schönsten ist.

Eigentlich hätte ich auch Lust endlich mal wieder was auf Github hochzuladen, was tatsächlich auch andere benutzen können. Dazu müsste ich zumindest noch reindengeln, dass man die Defaults im “Hinzufügen”-Screen anpassen kann. Oder so. Mal sehen.

Automation is magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic. It's magic.

This Post Was Written By Github Copilot auf flower.codes

Das lustigste, was ich in den letzten Wochen las. Musste mehrfach auf der Toilette laut lachen. Bin schon immer Fan von KI-Generierten Texten. Damals verbrachte ich Stunden mit SCIgen – was mittlerweile leider nicht mehr zu funktionieren scheint.

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”.

Weiterlesen →

Meat Loaf

Ich war gerade auf dem Weg zum Getränkemarkt, als ich im Radio hörte, dass Meat Loaf gestorben ist. Ich verstand zuerst „im Alter von 55 Jahren“ oder so was und war sehr überrascht, das kam mir komisch vor. Am Ende waren’s dann 75, das passt schon eher.

Tatsächlich hörte ich nie wirklich viel von Meat Loaf und trotzdem hatte ich doch kurz so einen „Ja, schade“, Gedanken im
Kopf, den ich normalerweise nicht habe, wenn eine Todesmeldung eines x-beliebigen Prominenten veröffentlicht wird.


Meine erste Erinnerung an Meat Loaf ist ein Wetten Dass-Auftritt zu der Zeit als sein Album „I couldn’t have said it better“ aktuell war. Der Song „Did I say that?“ mit seinem starken Tempo-Wechsel hatte es mir irgendwie angetan, abgesehen von seiner Stimme.

Soweit ich mich erinnere, war eben dieses Album dann auch eine meine ersten physischen Musik-CDs, die ich geschenkt bekam, oder selber kaufte, was aufs selbe hinaus läuft, denn alles Geld, was ich damals besaß, war geschenkt.

Da ich zu dem Zeitpunkt aber auch schon diverse MP3s auf dem Rechner hatte, hörte ich die CD nicht mal besonders viel, glaube ich. Insgesamt habe ich, wie gesagt, nie besonders viel Meat Loaf gehört, nichtmal Bat out of Hell, das werde ich mir aber wohl die Tage mal anhören.


Fünf Minuten googeln bringt jetzt natürlich auch die ganzen quatschigen Ansichten von Herrn Aday zu Tage, schade. Auch Eric Clapton haben wir ja leider schon verloren. Ich tu mal so, als hätte ich das alles nicht gelesen und behalte meine Meat-Loaf-Wetten-Dass-Erinnerung ohne den Ballast im Kopf.

RIP Meat Loaf.

Hier ein Lied von 1982 und ein Cover von 2021. Beides super. Hans Hartz sang übrigens auch den Beck‘s Song Sail Away.

Kein Sass mehr, Nesting mit PostCSS nachrüsten

Jahrhunderte lang benutzte ich Sass für alles mögliche. Wenn man vorher nur normales CSS schrieb war das ja auch eine Offenbarung, Variablen, Loops und Nesting! Naja. Wie das so ist, benutzt man sowas dann Ewigkeiten und hinterfragt es auch nie wirklich.

Nun kaufte ich aber ja diesen M1 Mac und musste meine gesamte Entwicklungsumgebung neu einrichten und habe diverse Probleme, die ich damals schon mit verschiedensten Legacy-Projekten hatte - node-sass. Teilweise habe ich Projekte mit Node 9 betrieben, weil ich den node_modules-Ordner nicht löschen und mit einer aktuelleren Node-Version wiederherstellen wollte, weil jedes mal irgendwas beim Kompilieren von libsass kaputt war. Kurz austauschen durch die modernere Variante, die in Dart implementiert ist, ersetzen war leider auch nie drin, man hat ja nie Zeit (und Lust) für sowas, vor allem, wenn der Quickfix, einfach kurz Node 9 benutzen, so nahe liegt. Also, bei Projekten, die man halt alle 6 Monate mal öffnet, um eine Zeile Code zu ändern.


Das Problem war nun etwas ausgeprägter, da die Node-Version nicht half, da libsass anscheinend auf M1 Macs einfach gar nicht kompiliert, zumindest bekam ich es nicht dazu. Hier und da habe ich mich also dazu durchgerungen, den beschwerlichen weg zu gehen und die Dependencies auszutauschen, was meistens auch ganz gut funktionierte, für ein paar egalere und kleinere Projekte, wie diesen Blog hier, zum Beispiel, überlegte ich mir allerdings mal, wozu ich Sass überhaupt noch brauche. Schon vor Monaten fing ich hier an, das CSS meistens einfach in <style>-Tags mit ins Blog-Template zu schreiben, als normales CSS, sorry, es ist ja nur mein Blog.

Ansonsten kann CSS mittlerweile auch Variablen und Nesting ist auch in einer (noch nicht umgesetzten) Spezifikation, lässt sich aber mit einem Tool wie PostCSS leicht nachrüsten. Die ganzen anderen Sass-Features habe ich eh eigentlich nie benutzt.

Jetzt tausche ich also den Sass-Postprocessor, den ich über mein CSS jage gegen PostCSS, was habe ich dadurch gewonnen, könnte man sich fragen. Ist wahrscheinlich auch ein berechtigter Einwand, trotzdem spart man sich eine Abhängigkeit (von sass) und PostCSS ist wahrscheinlich eh schon in vielen Stacks drin (bei mir selbst in diesen uralt-Projekten, wegen dem autoprefixer) und zum anderen schreibt man immerhin schonmal theoretisch, in der Zukunft, gültiges CSS – wenn der Build-Prozess in ein paar Jahren also mal wieder nicht funktioniert, aber die Browser die CSS-Spec dafür implementiert haben, kann man ihn auch einfach weglassen. Juchu.


Um das zu bewerkstelligen, braucht ihr nur Folgendes installieren:

npm install --save postcss postcss-preset-env

Dazu eine postcss.config.js:

const postcssPresetEnv = require('postcss-preset-env');

module.exports = {
  plugins: [
    postcssPresetEnv({
        stage: 0
    })
  ]
}

Und schwupps aufgerufen:

./node_modules/.bin/postcss test.css
/* Vorher */
div {
    & p {
        font-size:  12px;

        & .fett {
            font-weight: bold;
        }
    }
}

/* Nachher */
    div p {
        font-size:  12px
    }
div p .fett {
            font-weight: bold;
        }

Abgesehen vom abenteuerlichen Whitespace ist das Nesting nun korrekt aufgelöst. Leider muss man hier natürlich beachten, dass das Nesting nicht genau so funktioniert wie bei Sass, um genau zu sein braucht man hier immer noch so ein &, und es gibt natürlich tausend Dinge zu beachten, siehe die oben verlinkte Spezifikation. Theoretisch gibt es auch ein PostCSS-Plugin, welches das Sass-Nesting versteht, aber das Ziel war ja theoretisch gültiges CSS zu schreiben.

Ich werde jetzt versuchen meine Privatprojekte Stück für Stück von Sass zu befreien. Lang lebe CSS!

1% Weihnachtsbaum

Als wir letztes Jahr den Weihnachtsbaum kauften, bekamen wir einen kleinen Setzling dazu. Also wir konnten entscheiden, ob wir einen Setzling oder zehn Eier wollen, und naja, was wir entschieden uns natürlich für die coolere Variante. Jetzt müsste man nur regelmäßig gießen und schwupps hat man in nur einem Jahrzehnt oder so einen kostenlosen Baum, während sich niemand mehr an die Eier erinnern würde.

Als wir ihn vor einem Monat bekamen, waren nur die unteren, dunkelgrünen, Nadeln dran, vor ein paar Tagen ist nun die nächste Reihe Nadeln geschlüpft. Noch könnte man jeder Nadel einen Namen geben, ich bin gespannt, wie es sich weiter entwickelt!

20220116-215918-pwa-7747.jpg
20220116-220008-pwa-7752.jpg

Auf Youtube entdecke ich in letzter Zeit viel interessante neue Musik. Zum Beispiel Khruangbin.

Ich habe die Like-Herzen mal deaktiviert, da ich… für meinen Geschmack zu oft gucke, ob jemand etwas geliked hat. Ihr dürft meine Sachen natürlich weiterhin gut finden!

Sisi auf RTL

Bei DWDL las ich davon, dass RTL+ eine Sisi-Serie produziert hat. Da ich ja Elisabeth-das-Musical-Ultra bin und allgemein nichts dagegen habe, mir mal eine wegen des hohen Budgets wahrscheinlich visuell ansehnliche Serie anzugucken, schaute ich mal rein. Also natürlich musste ich alle sechs Folgen gucken, man will ja wissen, wie schlimm es wirklich ist!

Naja, was soll ich sagen. Es ist relativ schlimm. Ich habe diese uralten Sisi-Filme nie gesehen, also wahrscheinlich schon, als ich fünf oder sechs Jahre alt war und nach Weihnachten bei Oma auf dem Sofa lag und das halt im Fernsehen lief, aber ich habe keine Erinnerung daran und ich habe natürlich auch keine Ahnung, ob die historisch korrekt waren, aber diese neue Adaption hat die Zeittafel auf jeden Fall einmal in den Mixer geworfen, kräftig durcheinander gewirbelt und mit einer Prise aus dem Erotik-Gewürzregal, aus dem Game of Thrones vielleicht schon etwas zu viel hatte, gewürzt.

Nach den sechs Folgen kam mir, basierend auf meinem Musical-Wissen, jedenfalls einiges spanisch vor und ich wollte mal wissen, was nun wirklich passiert ist im Leben der Elisabeth Amalie Eugenie von Wittelsbach, Kaiserin von Österreich, Königin von Ungarin, Mother of Dragons, Breaker of Chains. Zu diesem Zwecke erwarb ich eine relativ kurzgefasste Sisi-Biografie von Lisbeth Exner. Tatsächlich las ich sie quasi in einer Session weg, was erstaunlich ist, denn ich hatte die letzten sechs Monate gar nichts gelesen. Aber irgendwie war ich interessiert und es war schön zu merken, wie sich beim Lesen die verschiedensten Erinnerungsfetzen in meinem Kopf zu einem Gesamtbild verbanden.

In der RTL-Serie ist auf jeden Fall einiges durcheinander. Der ganze Ungarn-Plot mit Graf Andrássy etwa, scheint erstmal ein paar Jahre nach vorne gezogen, ebenso erwirbt sie ihre Kenntnisse der ungarischen Sprache erst wesentlich später. Das Musical wiederum scheint sich relativ nah an der historisch belegten Ereignissen und deren Reihenfolge zu orientieren.


Letztendlich ist es natürlich auch egal, es ist eine Unterhaltungssendung und RTL behauptet auch nirgens, dass es eine historisch korrekte Abhandlung der Begebenheiten enthält und ich hinterfragte es jetzt auch nur, weil es mir halt durch das Musical komisch vorkam.

Wie auch immer. Die Serie ist schon relativ dumm, hat aber auch ein paar schöne Landschaftsaufnahmen, ich würde sie nicht zwingend empfehlen. Was ich allerdings empfehlen kann, ist das verlinkte Buch, wenn man sich doch kurz für das Leben von Sisi interessiert, das war nämlich doch ganz spannend und… deprimierend.

Wenn man etwas weniger deprimierendes und statt dessen wundervoll, perfekt und jederzeit vollkommen Glückselig machendes sucht, dann würde ich euch natürlich immer das Elisabeth-Musical ans Herz legen. Zum Beispiel auf Spotify oder mal bei Youtube suchen, da gibt es einige furchtbar aufgelöste Varianten.