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.
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.)
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!
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!
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.
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:
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.
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!
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.
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:
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!
Ich hatte heute beim Mittag kochen etwas Zeit, schaute auf Twitter und fand diesen Tweet von Michel. Da die Tortellini eh vier Minuten brauchten um fertig zu ziehen dachte ich mir, warum baue ich das nicht mal schnell?
Also kurz eine HTML-Seite mit einem winzigen Formular aufgesetzt und ein süßes Babyfoto für den Hintergrund. Nun brauchte ich noch JavaScript um eine .ics-Datei zu erstellen. Hier unterlief mir ein Fehler, der mich etwas Zeit kostete: ich suchte zu erst nach “npm ical” und fand dieses Package. Nach dem Einbinden stellte ich fest, dass es leider keine .ics-Dateien erzeugt, die meine Calendar.app importieren will. Laut dem offiziellen Validator waren sie sogar kaputt!
Kurz verzweifelte ich, doch dann googelte ich nach “npm ics” und schwupps, fand ich das ics-Paket, welches wunderbar funktioniert. Dazu installierte ich noch file-saver um die erzeugte Datei komfortabel als Download auszuspielen. Keine Ahnung, ob die Browser eigentlich schon weit genug wären, das ohne so ein dickes quasi-Polyfill zu erledigen. Zu guter Letzt ergänzte date-fns das Trio der Dependencies in diesem riesigen Projekt.
Ich bastelte alles schnell zusammen und lies es von Parcel bundlen, einer wirklich tollen Software, die einfach das macht, was ich will, ohne, dass ich jemals eine Zeile Dokumentation gelesen hätte. Dass das Bundle am eine 400kb groß ist für diese minimale Funktion finde ich allerdings etwas fragwürdig, habe aber auch wirklich keine Lust, herauszufinden, warum.
Natürlich musste noch eine passende Domain her und ich habe ja einen kleinen Faible für diese ganzen verrückten TLDs, die es seit ein paar Jahren gibt. Das von Michel vorgeschlagene u.baby hätte leider fast 4.000€ gekostet, also entschied ich mich für termine.baby, auch ganz nett. Hier gab es die zweite zeitliche Verzögerung: Ich hab nur wenige Domains bei Namecheap, kannte das DNS-Tool nicht so gut und hab was in die falsche Zeile eingetragen, upsi!
Auftrag erteilt um 12:20, Fertigstellung um 15:00 und zwischendurch noch Mittag gekocht und gegessen, das ist ganz ok!
Nachdem Michel nun hoffentlich seine Termine exportiert hat, ist natürlich die Frage, was man jetzt damit macht. Es war lustig, ganz schnell was zusammen zu klöppeln, aber natürlich wäre es auch schade, wenn das jetzt so brach liegt — von alleine wird es wohl keiner finden. Vielleicht kaufe ich mal für fünf Euro ein bisschen Keyword-Werbung bei Google, es wird super bekannt und am Ende kann ich es für 1,2 Milliarden Euro an eltern.de verkaufen, das wäre es doch!
Wenn ihr auch eine Projekt-Idee habt, die sich hinter eine schöne Domain legen lässt, und die man kurz zwischendurch umsetzen kann, sagt Bescheid!
Vor zwei Jahren baute ich mal eine Kalenderansicht fürs Kirby-Panel, die ich nie so richtig veröffentlichte. Im Zuge der Aufräumerei habe ich sie mal 3.7-kompatibel gemacht und jetzt auch als v1.0.0 getaggt.