Damals gab es ein Video, in dem ein Teenager den Canon in D von Pachelbel in einer Rock-Version darbot und es war schon eines der wichtigsten Videos für mich damals, denn danach wollte ich unbedingt eine Gitarre.
Mittlerweile gibt eine neue Version, die irgendeine Firma in Auftrag gegeben hat und sie brachte mich mal wieder dazu, das Lied zehn mal anzuhören und mich zu freuen, wie toll es ist.
Zwischen diesen Videos liegen zwanzig Jahre und damals kaufte ich mir von meinem ersten Zivildienstgeld auch eine Gitarre. Leider habe ich es in all den Jahren nie geschafft auch nur einen Takt des Lieds zu lernen, denn nach dem ruhigen Intro knallt es auch einfach direkt so rein, dass es wahrscheinlich gleichzeitig die frustrierendste Lernerfahrung direkt am Anfang meiner Gitarrenkarriere war. Also, wenn ich jetzt noch einmal in die Guitar Pro-Datei reinschaue, sieht es wieder gar nicht so komplex aus, aber es ist halt sehr schnell und erfordert ein sehr sauberes spielen, was einfach nicht geht, wenn man gerade erst eine Gitarre gekauft hat.
Die Guitar Pro-Datei von damals habe ich natürlich auch noch!
Hätte ich beim Gitarrespielen lernen mehr Ausdauer als eine Eintagsfliege, wäre ich vielleicht weiter gekommen, aber mittlerweile begnüge ich mich damit, dass ich einfach drei Stundenlang die Canon-Akkorde spiele, das ist auch schön, wenn auch nicht ganz so… fancy.
D A Bm F♯m / G D G A
(Ich hab in den zwanzig Jahren das ein oder andere Lied gelernt, aber insgesamt bin ich sehr gut darin alles auf fehlendes Talent zu schieben, statt darauf, dass ich einfach gar keine Lust habe zu üben)
Ich habe ja eigentlich aufgegeben, meine Blogposts, für die ich keine Bilder habe, mit schlechten KI-Bildern aufzuwerten, aber ich hatte gerade Claude offen und ich mag die Pelikane von Simon Willison immer so sehr, daher dachte ich, ich probiere es hier doch einmal:
please generate a svg of a man with long curly hair playing guitar sitting in his bedroom at the desk. also can you add some css to animate the svg in a cute way?
Ich hatte noch keine Zeit, mir das neue Album von Betterov genauer anzuhören, sollte ich aber demnächst mal machen. Diese Woche lief dafür der Titeltrack sehr häufig durch meine Ohren.
Du interessiert dich doch für Goethe, hier kommt meine Faust
In den letzten Tagen habe ich hauptsächlich einige Sachen in meine Tagebuch-App eingebaut und ich muss sagen, dass es natürlich zu einem gewissen Featurecreep einläd, wenn man einfach alles machen lassen kann, was einem einfällt.
Ich schrieb ja schon von dem Transkriptionsfeature für meine Voice Memos. Ich kann mein sinnloses Gestammel hochladen und daraus schnell Text-Einträge machen, juchu!
Besonders schön hat er das hier nicht gemacht.
Als nächstes baute ich einen Habit Tracker ein. Jahresanfangsmotivation lässt grüßen. Bisher läuft es immerhin ziemlich gut mit dem abhaken, was aber auch ein bisschen daran liegt, wie gut dieses 1-Prompt-Feature tatsächlich funktioniert. Zusätzlich zur Tagebuch-App lasse ich mir die Habit-Liste auch direkt auf meiner Browser-Startseite (die ich mir auch letztens habe bauen lassen) anzeigen und habe es somit immer im Blick.
New feature: habit tracker. add a new menu point habit tracker. add a new model habit that can be edited in the filament admin panel. the habit tracking page should display the habits in some kind of horizontal table with the days of the year as columns and a green dot if the habit has been done, and a gray dot if not. the dot is clickable to mark the habit as done. the table should be horizontally scrollable to show the whole year sometime. it should always be scrolled to the current day.
Sieht ganz nett aus. Den Kram unten hat er sich allerdings selber überlegt.
Nachdem ich seit ein paar Wochen (auch hier lässt das neue Jahr grüßen), wieder ab und zu joggen gehe, war es natürlich der nächste logische Schritt, dass ich die Läufe ebenfalls im Tagebuch anzeige. Natürlich automatisch. Ich ließ Claude Code also eine Anbindung an Runtastic bauen, was er auch schnell fertig stellte. Leider musste ich feststellen, dass ich gar nicht Runtastic, sondern Runkeeper auf dem iPhone nutze, also musste er nochmal ran und etwas umbauen. Zu guter Letzt merkte ich, dass beide Apps gar keine öffentliche API haben. Das war 2014 aber noch etwas verbreiteter!
i want a new section (yes, again..) thats called "external services" that will contain links to external services that can be used to import new types of stuff. the first will be an integration of the RUNTASTIC api. after connecting with oauth it should show a list of my 10 most recent runs with runtastic.
since runtastic does not even have an api remove all the runtastic things. you can leave the abstract "external services" stuff in, we may need it later
Es gibt aber ja noch einen weiteren Ort, wo alle Läufe gespeichert sind: In Apple Health. Dank der tollen Auto Health Export-App kann ich mir meine Workouts und, warum auch nicht, meine Heart Rate-Daten, da in regelmäßigen Abständen an eine API schicken lassen. Ich machte einmal einen manuellen Export um an das Schema der Daten zu kommen, und instruierte Claude damit, eine API zu bauen, die Daten in dem Format annimmt, speichert und das alles schön inklusive einer Karte und Graphen für die Herzrate anzeigt. Fertig! Schön.
look at the workout_export.json, build a api endpoint that accepts a json in this format. create a table called workouts. fields: foreign_id, location, distance, intensity, elevationUp, start, end, stepcount (just a summed up stepcount from the “stepCount” array in the data), activeEnergyBurned, duration, heartRateRecovery (put the heartRateRecovery json array from the export here), route (put the route json array from the export here), heartRateData (put the heartRateData json array from the export here)
add a “workouts” page in the frontend, that shows the workouts.
create a detail page. add a map using leaflet and openstreetmaps that displays the route. add a chart that display heartRate and heartRateRecovery. use charts.js for the chart
https://github.com/DantSu/php-osm-static-api use this library to render a static version of the map when importing a workout. add a field (static_map_path) to the workout model. adda command to re create static maps for workouts who have non
revise the layout of the detail page. put the static map small on the right side of the stats. put both graphs side by side. make the whole page only 80% width
okay, a fun one: for each heart rate reading, try to find a route point and try to get the elevation. add the elevation as a second y axis to the heart rate chart
in heartrate.json there is an example heartrate export. build an api that can parse this json. create a heartrate model to save the heartrate readings. create a new section to show daily graphs for the heartrate. the heart rate charts should show the whole day ( 0 - 24) and if there is no reading for a bigger time period there should be no line, just space
Ein wundervolles anderes Feature ist, dass ich loggen kann, was sich zum Mittag hatte, und zwar nicht nur als Freitext-Feld, sondern ich kann einfach ein Rezept aus meiner Rezepteverwaltung auswählen, wie cool ist das denn! Dann läd der das da einfach inklusive Vorschaubild rein. Toll. Ein hoch auf APIs.
Außerdem habe ich die ganze Startseite überarbeiten lassen und endlich so einen mitscrollenden Kalender an die Seite gepappt
Das sind nur Testdaten, ich hab nicht wirklich gemalt.
Mir macht das alles viel Freude und es macht auch Spaß in der Benutzung, aber ein paar Sachen stoßen mir schon übel auf und in den nächsten Tagen werde ich versuchen, ob ich Claude davon überzeugen kann, manches etwas anders anzugehen. Natürlich sind meine Prompts bisher auch sehr… dünn und ich lasse ihn erstmal machem, was er für richtig hält, das muss man natürlich bedenken.
Dinge, von denen ich ihn noch überzeugen will:
Wenn neues Javascript eingebunden wird, dann über npm und nicht einfach wild CDN-script-Tags ins Template hauen.
Ebenfalls, wenn JavaScript benötigt wird, das schön in eine AlpineJS-Komponente auslagern und entsprechend einbinden und nicht wild ins Tempalte hauen
Allgemein nicht einfach riesige Blöcke von PHP ins… Template hauen
Bei allen gebauten Sachen darauf achten es in kleinere Blade-Komponenten aufzuteilen und sie auch wiederzuverwenden. In einem Projekt habe ich drei verschiedene Autocomplete-Implementierungen.
Abgesehen davon würde ich mir wünschen, dass er es irgendwie schafft sich konsistenter an das… Design zu halten. Also, nicht, dass meine Tagebuch-App irgendwie ein Design hätte, ich hab das ja auch nur eben mit Tailwind zusammengeklöppelt, aber teilweise sieht jedes Feature im ersten Anlauf komplett anders aus und fügt sich schlecht ein. Das wäre natürlich das i-Tüpfelchen, wenn das etwas besser laufen würde.
Ich habe bei der Recherche gerade auch entdeckt, dass Laravel mit Boost selber sogar ein paar Hilfestellungen anbietet, das werde ich wohl gleich mal installieren.
Gestern Abend wollte ich noch eben ein Kirby mit meinem Authentik verbinden. Ein Service weniger mit eigenem Passwort! An sich funktionierte das auch sehr gut. Mit kirby-oauth gibt es ein leicht einzubindendes Plugin, das auch schon Support für mehrere OAuth2-Provider mit bringt. Zwar nicht direkt für Authentik, aber man kann problemlos einen eigenen Provider anlegen, in dem man nur die nötigen URLs kurz rüberkopiert.
Leider war es damit aber noch nicht ganz gegessen. Das Plugin erwartet, dass das email_verified-Feld im OAuth-Response auf true gestellt ist und Authentik hat es standardmäßig auf false. Theoretisch kann man das im Authentik-Interface irgendwie umstellen, aber ich habe es einfach nicht gefunden, also dachte ich, es ist leichter in dem Plugin eine weitere Option hinzuzufügen, um den email_verified-Check abzuschalten. In meinem Fall, wo es eh nur einen festgelegten erlaubten User gibt, dessen E-Mail-Adresse ich kenne, ist das ja auch ok.
Starten wir ins Jahr mit einem Suter. Zum Glück gibt es noch ein paar, die ich nicht kenne. Dieses Buch ist Allmen-typisch und schön und passend und dass er hier mit Weynfeld einen anderen Charakter aus dem Suter-Kosmos trifft ist witzig, manchmal erscheint es aber auch ein bisschen wie eine… Fanfiction. Als würde Luke Skywalker auf Picard treffen.
Im Rahmen des letztjährigen Black Fridays tat ich etwas, was ich nie erwartet hätte. Ich kaufte einen neuen Dyson V8. Den Letzten kaufte ich 2016 oder so und über all’ die Jahre war ich sehr zufrieden mit dem Gerät. So zufrieden, dass ich nie auf die Idee gekommen wäre, einen neuen Staubsauger zu kaufen.
Zwischendrin kaufte ich einmal einen Third-Party-Wechselakku, weil mir die Akkulaufzeit etwas kurz vorkam. Der war günstig, funktionierte auch gut und ist bisher nicht explodiert.
Eine der wenigen Nachteile an so einem Stab-Staubsauger ist leider, dass man ihn schlecht mal eben sicher abstellen kann. Immer, wenn man ihn irgendwo dagegen lehnt, besteht die Gefahr, dass er umfällt und der wichtigste Teil, der Motor, ist natürlich ganz oben und fällt am weitesten.
Leider ist er nach fast zehn Jahren Benutzung wohl das ein oder andere mal zu häufig umgefallen, was dazu führte, dass hinten irgendwo neben dem Luftfilter Luft rausströmt. Die Saugleistung fühlte sich dadurch nicht vermindert an, aber ein schönes Gefühl war das nicht.
Im Black Friday begab es sich nun, dass genau das gleiche Modell einfach im Sale war. Knapp über 200€ sind zwar immer noch eine Stange Geld für einen Staubsauger, aber wesentlich weniger als diese ganzen neuen V-Modelle in der Dyson-Produktpalette, die ich überhaupt nicht verstehe. Warum hat man 5 verschiedene Produktgenerationen gleichzeitig im Angebot?
Ich hoffe, der Neue hält mindestens genauso lang. Wenn der Akku versagt, kann ich vielleicht endlich auch so einen Makita 18V-Adapter dranschrauben, darauf freu ich mich besonders. Der alte darf jetzt noch für ein paar Spezialaufgaben weiterleben, z. B. den Staub aufsaugen, wenn ich ein Loch bohre.
Ich habe im letzten Jahr angefangen in der Voice Memo-App ab und zu mal einen oder mehrere Tagebucheinträge aufzunehmen, wenn ich gerade keine Zeit zum Schreiben hatte.
Nun könnte man es sich ja einfach machen und den von Apple automatisch transkribierten Text nehmen und ins Tagebuch kopieren, aber leider ist die Qualität gar nicht mal so gut. Vielleicht nuschel ich zu sehr, aber ohne größere Nachbearbeitungen kann ich die Texte nicht benutzen.
Auf dem Rechner habe ich die Memos mal in Whisper Transcription geworfen, welches das Open AI-Whisper-Modell (v3-large) lokal benutzt und die Qualität ist wesentlich besser, das war schonmal ein Fortschritt.
Nun könnte man es sich ja einfach machen und den Text nehmen und ins Tagebuch kopieren, aber das wäre ja zu einfach. Da ich die Soundschnipsel eh auch im Tagebuch haben wollte, falls man in 40 Jahren mal seine eigene Stimme hören will, dachte ich mir, ich könnte ja direkt auch einen Transkriptionsservice mit anbinden.
Am liebsten hätte ich natürlich etwas genommen, was lokal läuft und trotzdem eine gute Qualität hat. Auf dem Mac läuft whisper-large-v3 ja gut, aber wie würde das auf meinem Homelab mit schwacher AMD Ryzen-CPU ohne GPU funktionieren?
Ich gab mein bestes und probierte verschiedene Docker-Container, die versprachen, eine “Faster Whisper”-Implementierung anzubieten, leider ohne Erfolg. Der Erste stürzte einfach immer ab, wenn ich eine Datei hinschickte, der zweite beschwerte sich über irgendwelche fehlenden Sachen. Was ebenfalls nicht funktionierte war Parakeet TDT.
Wenn lokal nicht funktioniert, wollte ich es aber zumindest in einem privaten Bereich, bzw. in der EU gehostet haben, also schaute ich weiter. Amazon Bedrock kann leider kein Whisper-Model. Huggingface bietet whisper-large-v3 an und ich war schon kurz davor, das jetzt zu nutzen, aber die Erkennungsqualität war erstaunlicherweise wesentlich schlechter als in Whisper Transcription auf meinem Macbook, häää.
Letzendlich bin ich jetzt beim voxtral-small-Model von Mistral gelandet. Das Ergebnis der Transkription ist gut, es ist schnell und in Europa gehostet. Damit kann ich jetzt einfach die Voice Memo in mein Tagebuch werfen, und daraus einen entsprechenden Eintrag erstellen.
Falls jemand einen funktionierenden Docker-Container hat, der mit faster-whisper lokal auf einem Rechner ohne GPU läuft, sagt gerne Bescheid, lokal würde mir natürlich noch besser gefallen!
Kaum schreibt man eine ganze Woche lang jeden Tag einen Post, kommt man auf die dumme Idee auch noch mit Wochenrückblicken anzufangen, als könnte ich das länger als zwei Wochen durchhalten!
Hier eine zufällige Aneinanderreihung von Dingen, die in dieser Woche passiert sind, über die ich nicht gesondert schrieb:
🏚️ Un-Smart: Heut morgen konnte ich das Licht nicht anmachen, da Home Assistant down war. Ich schaute schnell in Proxmox, da stand nur, dass alle VMs mit io-error down waren. Äh ja. Turns out: Festplatte voll. Mein kleiner Rechner, der eigentlich nur eine Firewall war, hat nur eine 128GB SSD und die war wohl voll gelaufen. Ich habe ein paar Gigabyte Log-Dateien gelöscht und jetzt sicher wieder ein paar Wochen Ruhe.
🥣 Lecker: Vor Monaten kaufte ich so eine Fertigpackung Milchreis, weil ich dachte, es wäre mal wieder lecker, nach so 20 Jahren. War es auch! Mhhh.
🔥 Unschienbar: Unser Backofen hat nur so normale Dinger, wo man das Backblech drauf schiebt und keine Schienen, die mit Rausfahren. Ich dachte, man könnte das vielleicht schnell nachrüsten, aber der Bosch-Ersatzteilshop hat für meine Artikelnummer leider keine im Angebot. Man könnte natürlich irgendeinen Satz schienen für 80€ bei Amazon bestellen, aber wenn es am Ende nicht passt, ist das auch blöd.
🫣 Frech: In einem Bücher-Tausch-Schrank im Park stand eines Morgens eine Gesamtausgabe von Game of Thrones-Taschenbüchern, also alle fünfundzwanzig Teile, oder wie viele das sind, die in Deutschland rausgekommen sind. Ich dachte mir, ich kann den ersten Band ja mal mitnehmen, vielleicht komme ich ja dazu, die fünfhundert Seiten kurz zu lesen. Als ich am nächsten Tag wieder vorbei kam, waren alle anderne Bände weg. Nun fühl ich mich natürlich etwas blöd, da die andere Person nun den ersten Band nicht auch mitnehmen konnte, andererseits finde ich es auch frech, da einfach Bücher im Neuwert von 100€ einfach komplett aus dem Tausch-Schrank zu nehmen.
🏃🏻 +300%: Im Dezember merkte ich, dass ich 2025 noch kein einziges Mal joggen war und holte das kurz nach. In dieser Woche schaffte ich es nun schon dreimal morgens eine Runde zu drehen, und das trotz Schnee und Eis. Das ist schon dreimal soviel wie im ganzen letzten Jahr!
🫨 Vibe: Ich habe in dieser Woche versucht meine Claude AI-Quota, für die ich bezahle, möglichst komplett auszunutzen und habe immer einen neuen Prompt parat gehabt, sobald es wieder ging. Hauptsächlich habe ich meine Tagebuch-App aufräumen und erweitern lassen. Es macht mir weiterhin sehr viel Spaß und motiviert mich, endlich mal wieder mehr an meinen Side-Projects zu bauen.
💸 NameExpensive: Namecheap hat mir diese Woche mitgeteilt, dass sich für ein paar meiner Domains mal wieder die Preise erhöhen. Betroffen sind vor allem .io und .space. Ich muss mal schauen, ob ich die betreffenden Domains nochmal umziehe. Insgesamt bin ich immer mehr der Überzeugung für alles nur noch .de zu benutzen. Das ist günstig und ich hab irgendwie mehr vertrauen, dass die nicht plötzlich verschwindet.
📖 Lesen & Schlafen: Seit Jahren konsumiere ich ja eigentlich nur noch Hörbücher. Zum Einschlafen versuche ich jetzt immer noch ein bisschen ganz klassisch mit den Augen zu lesen, aktuell das Hunger Games Prequel. Allerdings ist der Fortschritt echt langsam, da ich am nächsten Abend manchmal erstmal wieder fünf Seiten zurückblättern muss, da ich anscheinend während des Lesens einschlafe, aber trotzdem noch weiter blättere.
🎉 Erfolgstoot: Dieser grandiose Witz ist mir diese Woche eingefallen. Warum ich dafür 14 Jahre brauchte, weiß ich auch nicht. Ich kichere immer noch darüber.
🧑🏼🦱 Authentisch: Eigentlich hatte ich vor Monaten mal KeyCloak installiert um meine ganzen Projekte mit einem einheitlichen Login zu versehen. Ich kam auf die dumme Idee, das zu Aktualisieren und nach dem docker compose pull ging natürlich gar nichts mehr, weil irgendetwas, was ich nutzte, deprecated wurde. Natürlich. Ich bin nun kurzerhand auf Authentik umgestiegen und es läuft!
Der Trend der lustigen kleinen Spiele, bei denen man jeden Tag eine kleine Aufgabe hat, reißt nicht ab. Der aktuellste Trend ist enclose.horse, was an sich erstmal eine wunderschöne Domain ist. .horse ist sowieso meine Lieblings-TLD, leider hatte ich bisher noch keine gute Idee für eine schöne Webseite!
Hier muss man versuchen das Pferd in eine, basierend auf der Menge der Wände, die man hat, möglichst große Weide einzusperren und es macht mir… im Gegensatz zu den meisten anderen Spielen dieser Art, tatsächlich Spaß. Normalerweise wehrt sich ja alles in mir dagegen, nachzudenken, aber irgendwas an diesem Spiel triggert in mir die Motivation, da viele Punkte machen zu wollen. Sehr schön!
Subway to Sally haben mit Feuerkind (Nackt Version) ein Lied veröffentlicht, das mich sehr erfreut, denn zum einen ist es ein toller Song und zum anderen ist damit die dritte Iteration der NACKT-Tour angekündigt. Das find ich wirklich richtig oberklasse.
Nackt kam ja schon 2006, Nackt II kam 2010. Damals schaffte ich es nicht zu den Konzerten, war aber auch kein großer Konzertgänger. Im Nachhinein ärgerte ich mich immer sehr, denn die Akustik-Live-Alben sind mir immer das Allerliebste von Subway to Sally. Nun bin ich zwar auch kein großer Konzertgänger mehr, da es mich irgendwie immer nur noch genervt hat, ewig herumzustehen, aber für Nackt III werde ich eine Ausnahme machen und mich im Mai 2026 nochmal ins Getümmel bewegen, ich freue mich!