knuspermagier.de
Er bloggt noch? Krass!

Nachdem ich es schon überall schrieb, nur nicht hier: Ich habe aktuell offene Kapazitäten! Wenn ihr also was programmiert braucht, oder einen Code gereviewed haben wollt, oder irgend so etwas, kommt gerne auf mich zu!

Wordpress zu statischen HTML-Seiten: javier-lite

Ok, also kommen wir zu Schritt eins, bzw zwei: Export erstellen, alles downloaden und in statische Dateien konvertieren, um alles besser archivieren zu können.

Ich schreibe also ein… paar Zeilen PHP um aus der WRX-Datei statische HTML-Files zu machen und alle verlinkten Bilder herunterzuladen. Weil selbst die schlimmsten Zeilen PHP einen Namen verdient haben, nenne ich es javier-lite.

Wie kam er nur auf diesen Namen, werden sich alle nun fragen. Ich kann es euch sagen. Meine erste Idee war “Just Another Wordpress Importer”. Es sollte ja ursprünglich ein Kirby-Import werden und kein Export in statische Dateien, aber aus der sicht einer leeren HTML-Datei ist es ja auch irgendwie ein Import. Jedenfalls könnte man das jetzt “JAWI” abkürzen und weil ich gerade Ozark gucke und es dort einen Javier gibt, machte es 🔔 Klick 🔔 und der Name war geboren!

finder.png

Ich habe nun ein ganzes Verzeichnis mit viel sehr nostalgischen Blogposts, die ich schon lange vergessen habe, zum Beispiel dieser Klassiker aus dem November Zweitausend-fucking-fünf.

krankpower.png

Schnell alles gezippt und auf die NAS ins Archiv geschoben, dann kann da schonmal nix mehr passieren.

CSS-Animation mit Verzögerung zwischendurch

Für den letzten Post wollte ich, dass sich meine schöne Zeitmaschinen-Animation unendlich oft wiederholt, aber natürlich sollte es einen Abstand zwischen den Iterationen geben. animation-delay funktioniert da leider nicht. Also eigentlich wollte ich es, damit man die Animation auch sieht. Die Alternative wäre gewesen, mit JavaScript zu schauen, ob das Bild sichtbar ist und die Animation erst dann abzuspielen, aber mein Blog hat nur ein “Custom Styles”-Feld pro Post und kein “Custom JavaScript” und deswegen entschied ich mich für die infinite Animation.

Jedenfalls gibt es kein animation-delay-between-iterations, es gibt aber einen Trick, der passenderweise auf css-tricks.com steht. Man baut die Keyframes einfach so um, dass die meiste Zeit nichts passiert! Der Post erklärt es ganz gut, es hat ein Bisschen mit ✨Mathematik✨ zu tun.

Danke für diesen Trick!

Zeitmaschine

Als ich diesen Blog hier auf Kirby umzog, legte ich die alte Wordpress-Seite auf archiv.knuspermagier.de ab und da ist sie nun heute noch. Ab und zu schaue ich dort etwas nach, aber insgesamt brauche ich es eigentlich nicht mehr. Vor allem habe ich keine Lust so ein potentiell löchriges Wordpress zu hosten. Aber naja, wie das so ist, die Zeit vergeht und anderes ist wichtiger.

Naja, jedenfalls hatte ich nun mal wieder den Urge was zu ändern und das Archiv endlich abzuschalten. Dafür sind einige Schritte notwendig. Also, natürlich sind sie das nicht wirklich, aber mein Kopf denkt sich, dass diese Schritte toll wären:

  • Einen Export erstellen und alle Bilder downloaden
  • Den Wordpress-Export einmal in statische HTML-Files konvertieren, die ich archivieren und gegebenenfalls aber auch schnell angucken kann, ohne ein XML zu dekodieren
  • Die Posts von 2005 - 2008 oder so, die nur so Schul/Studiums-Tagesberichte waren, die eher Tagebuchcharakter haben und die eh seit Ewigkeiten ausgeblendet sind, in mein Tagebuch überführen.
  • Die restlichen Posts durchgehen und schauen, was mir davon nicht peinlich ist und die Posts hier importieren. Vor allem für meine umfassende Liste von Projekten, bzw. Experimenten, fehlt da noch einiges. Nicht, dass es wichtig wäre, dass ich 2015 mal drei Zeilen React schrieb, aber man will ja alles beisammen haben.
  • Das Wordpress löschen!

Statt etwas von der Liste zu erledigen, entschied ich mich jedoch erst einmal dafür, den allerersten Post mit dem passenden Titel “Nummer 1” zu importieren. Am 6. November 2005 (ich will immer 2015 schreiben) startete ja diese Reise hier und das sollte auf keinen Fall verloren gehen. (Eigentlich hatte ich davor schon einen Blog, der ist aber wohl komplett lost. Hatte aber auch nur so drei Posts.)

knuspermagier.de_posts_2005_nummer-1.png

Viele Blogs haben so eine “Dieser Post ist sehr alt und vielleicht mittlerweile Quatsch”-Notiz über alten Einträgen und das fand ich schon immer ganz charmant. Da der Nummer 1-Post nun zwar kein Quatsch, aber wirklich schon sehr alt ist, dachte ich mir, das ist nun der perfekte Zeitpunkt ist, so etwas auch einzufügen. Weil ich in letzter Zeit gerne auf meinem iPad Bilder male, musste ich natürlich noch eine kleine Zeitmaschine dazu malen!

miraiiiii.png

Synology-Recycling

Letztes Jahr wechselte ich ja wieder von meiner Backup-Lösung, die aus zwei Festplatten bestand, die ich in zu seltenen Abständen synchronisierte, zu einer Synology NAS, die das dank RAID1 automatisch macht.

Seit dem hatte ich die alten zwei 4TB-Platten rumliegen und fragte mich, was ich damit wohl machen könnte, ich dachte, vielleicht packe ich sie mit in die NAS und erweitere meinen Speicherpool damit vielleicht ein bisschen, aber tatsächlich bin ich weit davon entfernt, den aktuellen Speicher auszulasten.

Letztens fand ich im Keller noch meine alte Synology DS213j oder so und da kam mir die Idee, die Platten da rein zu packen und per HyperBackup die Große auf die Kleine backuppen zu lassen. Ich wollte eh früher oder später noch eine externe Platte besorgen, die ich in regelmäßigen Abständen anschließen und bespielen wollte. So habe ich mehrere Fliegen mit einer Klappe geschlagen: Alte Hardware, die seit Ewigkeiten im Keller gammelt recycelt, eine weitere Backup-Version der Daten und ich muss nichtmal eine externe Festplatte managen (holen, anschließen, abstöpseln, wegbringen) sondern muss nur die alte NAS an einen Ort mit Internetverbindung stellen, per Wake on LAN anschalten und los gehts!

nas.png
Backupstrategie 2022, die gestrichelten Pfeile sind eigentlich Internet-Kabel

Insgesamt war ich bei der Sache sehr überrascht, dass die alte DiskStation noch eine relativ moderne Version der DSM-Oberfläche als Update bekam (natürlich leider ziemlich langsam) und dass sie überhaupt als HyperBackup-Ziel dienen kann! Dass das Initialbackup fast drei Tage dauerte, trotz direktem Gigabit-Link überraschte mich ebenfalls, aber naja, ist ja auch kein Weltuntergang.

BetterReminders (3)

Einer der noch fehlenden Punkte war ja das Anlegen neuer Todos, also baute ich das mal ein. Funktionierte mehr oder weniger auch fast so wie ich mir das vorstellte. Ich wollte noch einen Keyboard-Shortcut dafür hinterlegen und das funktioniert auch wieder ziemlich easy:

Weiterlesen →

BetterReminders (2)

Wie versprochen ein paar weitere Gedanken zu diesem kleinen SwiftUI-Experiment.

Mein Ziel ist es ja irgendwie, eine brauchbare App zu bekommen, an der ich auch tatsächlich mehr Spaß habe, als an der originalen Reminders-App. Ich will alles ein kleines bisschen mehr so haben, wie Things das macht. Allerdings habe ich mir auch ein paar Grenzen gesetzt, da ich auch nicht ein zu großes Fass aufmachen wollte.

Weiterlesen →

Ein Jahr R6

Seit fast einem Jahr habe ich nun die EOS R6. Eigentlich war ich ja ein großer Fan der EOS RP, die musste ich im Zuge meines Jobwechsels aber abgegeben und, weil die Gelegenheit da war, habe ich halt auf die R6 gewechselt. Ich könnte kaum zufriedener sein!

Weiterlesen →

BetterReminders (1)

Seit einigen Monaten benutze ich Reminders.app, weil es die Einzige vernünftige Todo-App ist, bei der man Todo-Listen teilen kann. Jaja, es gibt noch Todoist und so, alles ausprobiert. Reminders funktioniert am Ende am Besten und ich bin ja auch immer sehr froh, wenn man die Apple-Standardapps benutzen kann. Also eigentlich wäre ich natürlich froher, könnte ich einfach Things nutzen, aber die wollen ja einfach kein Sharing einbauen.

Jedenfalls gibt es ein paar Sachen, die mich an Reminders sehr stark stören. Das mit Abstand Schlimmste ist es, dass die Checkboxen zum Abhaken rund sind. Wer bitte möchte sein Kreuzchen in einen Kreis machen. Also, gut, Wahlzettel sind auch immer so, aber bei Todolisten hat man ja keine Wahl, alles will erledigt werden!

Abgesehen davon gibt es noch so ein paar Kleinigkeiten. Zum Beispiel finde ich die Überschriften in SF UI Rounded irgendwie hässlich und — ja jetzt kommt endlich ein wirklicher Grund, der nicht nur visuell ist — die Smart-List-Funktion ist einfach ein bisschen zu dumm. Schön, dass ich Listen anlegen kann, um alle Todos mit einem Tag anzuzeigen, aber manchmal würde ich auch noch gerne ein “Todos die TAG nicht enthalten”, oder so, mit reinhauen. Geht nicht.

Außerdem habe ich gern visuell ein paar Trenner in der Listen-Übersicht und würde Listen, die gerade nicht relevant sind gerne ausblenden. Wenn ich… gerade im Urlaub bin, brauche ich die Arbeitsliste nicht zu sehen. Ebenfalls nicht sehen, möchte ich Todos mit einem Due Date, das in ferner Zukunft ist. Die Tatsache, dass ich etwas am 23.05.2023 erneuern muss, will zwar festgehalten werden, aber ich muss es nicht jedes mal sehen, wenn ich in meine Todoliste gucke.


Weil UARRR gerade so motiviert an seiner Swift-App schraubt, juckte es mir natürlich auch mal wieder in den Fingern und ich recherchierte mal etwas, ob ich gut an die Daten komme, und wie ich damit was anfangen kann. Natürlich guckte ich auch erstmal nach alternativen Reminders-Apps, die genau das schon tun, aber es ist eine furchtbare Sache, danach zu suchen, und dabei die tausend anderen normalen Todo-Apps auszublenden. Die einzige, die ich, bzw Markus fand, hatte auch runde Checkboxen, meine Güte.

Jedenfalls kommt man ganz gut an die Daten, denn das EventKit, das von Apple bereitgestellt wird hat da ein paar Schnittstellen im Angebot. Ich überlegte mir also ein kleines MVP und baute drauf los. Mittlerweile fällt es mir schon etwas leichter, liegt vielleicht auch daran, dass seit dem letzten Versuch nicht 23 neue Swift und SwiftUI-Versionen erschienen sind.

obsi.png
Screenshot aus meiner Obsidian-Notiz, ja runde Checkboxen, ich weiß, gräßlich.

Weil der Post jetzt schon ziemlich lang ist und ich daraus eh mal wieder eine ganze Strecke mache, werde ich jetzt nicht auf größere Details eingehen und das in folgenden Posts nachholen, aber natürlich darf ein Screenshot des aktuellen Ergebnisses nicht fehlen:

btrr.png

Besonders gefreut hat es mich, dass hier direkt auch eine Mac-App herausfällt. So konnte ich das Ding gut testen, ohne meine ganzen Reminder irgendwie in den Simulator zu kriegen. Der SwiftUI-NavigationView macht offensichtlich auch direkt eine coole Master-Detail-Ansicht. Man bekommt so viel geschenkt, was früher gefühlt eher anstrengend war.

Links sieht man auf jeden Fall schonmal die Liste der Todo-Listen, inklusive der Trenner-Funktion, die ich schon einbaute! (if(calendar.title == "---"), hochkomplex!)

Rechts habe ich bereits die Funktion eingebaut um Todos, die in ferner Zukunft liegen, auszublenden.


Im nächsten Post erzähle ich bald, auf welche Probleme ich stieß und was ich mir für Lösungen dafür ausdenke. Also, falls meine Motivation noch ein paar Tage hält. Stay tuned!