Heute kommt nun also der zweite Post dieser Serie – bisher halte ich offensichtlich durch ;-)
-
🎨 Für mein Pixelix-LED-Status-Display habe ich ein Gehäuse gestaltet und gedruckt. Es ist jetzt erst mal bei Printables zu finden. Ich bin aber nur halb zufrieden und habe noch eine Liste von Verbesserungen und Bug-Fixes für die nächste Version:
- Anschraubpunkte für das ESP32-Board (aktuell fliegt es lose im Gehäuse umher)
- die DC-Buchse soll ein paar Millimeter versenkt werden, optional sollte sie auch an der Unterseite des Gehäuses positioniert werden können
- Ösen zum Aufhängen an der Rückseite
Das Gehäuse für mein Pixelix-Status-Display in Fusion 360 … … und in echt -
🗺️ bikerouter.de: Ich habe das verwendete Image für die Server-Komponente BRouter in der vergangenen Woche mit der aktuellsten Version (1.7.2 + ein paar Commits) gebaut und auf die Server gebracht.
Dadurch sind jetzt unter anderem genauere (je nach Profil sogar sehr genaue) Fahrzeitangaben möglich, da die Berechnung in BRouter zwischenzeitlich einige Verbesserungen und Bugfixes erhalten hat. Beispiel: Die Strecke von mir zu Hause bis auf den Wehlaberg im Unterspreewald mit dem Profil „Gravel quaelnix” wird mit 1:20 h Fahrzeit angegeben, was ziemlich genau der Zeit entspricht, welche ich auch tatsächlich beim entspannten Fahren auf dem Gravelbike benötige (abweichende Profil-Settings: totalMass = 87 kg; maxSpeed = 30 km/h; Power = 150 W; S_C_x = 0.30; C_r = 0.005).
Ein Riesendank geht hier an „quaelnix“, der sowohl etliche Verbesserungen in BRouter eingebracht hat, als auch ein neues und ziemlich gutes Profil für Gravel-Bikes erstellt hat (direkt zu bikerouter.de mit aktiviertem quaelnix-Gravel-Profil).
Bei der Gelegenheit bin ich auch gleich einmal durch das
Dockerfile
für meine BRouter-Server gegangen und es etwas aufgeräumt. Es ist jetzt in einem Zustand, in dem ich es mich fast trauen würde, es öffentlich zu machen … ;-)Die Routing-Daten werden jetzt ebenfalls mit der aktuellen BRouter-Version erstellt, dabei gab es auch ein Update der
lookups.dat
. Da sich hier aber nur die Minor-Version geändert hat (10.13 auf 10.14), sollte das keine negativen Auswirkungen haben (das beträfe sonst die Leute, welche sich die Routing-Daten bei mir herunterladen).Die Routing-Daten erstelle ich nach wie vor viermal täglich mit meinem Docker-Image, auch dieses verwendet jetzt die neueste Version von BRouter: brouter-routingdata-builder.
-
🤖 Ich bin mittlerweile der festen Überzeugung, dass ChatGPT, CoPilot und Konsorten aus dem Arbeitsalltag nicht mehr wegzudenken sein werden bzw. schon sind – jedenfalls im Spektrum der Berufsgruppen zwischen Software-Entwicklung und SysOps. In andere Bereiche habe ich weniger Einblick.
Ich nutze beide Tools täglich und habe ernsthafte Schwierigkeiten mir die Arbeit ohne sie vorzustellen. Auch wenn das „Halluzinieren“ allgegenwärtig ist und Aufmerksamkeit erfordert – die Vorteile überwiegen trotzdem massiv.
Ein Beispiel aus der vergangenen Woche: ich hatte eine Abfrage gegen ElasticSearch zu formulieren, welche in einem Index mit einem oder mehreren Wildcard-Queries gegen verschiedene Felder eines Mappings sucht und die Ergebnisse über ein weiteres Feld aggregiert (absteigend nach Anzahl gefundener Dokumente). In Deutsch: finde die häufigsten Kategorien von Artikeln für einen Suchbegriff.
Da ich nur sporadisch ElasticSearch-Queries schreiben muss, ist für mich bei solchen Aufgaben immer erst mal das Lesen der Dokumentation angesagt. Ich schätze, dass ich den Query ohne „AI“-Hilfe mit Doku lesen und Herumprobieren in vielleicht 20 Minuten hinbekommen hätte. Mit ChatGPT war ich mit einmal Nachhaken nach gut drei Minuten komplett am Ziel, nachdem ich die Problemstellung stichpunktartig formuliert hatte.
Zweites Beispiel, was mir zigfach täglich widerfährt: das Schreiben von Boilerplate-Code. Seien es Klassen-Konstruktoren, try-catch-Blöcke, switch/match-Statements, Hinzufügen von Kontext-Daten beim Logging (alles in PHP) oder auch nur das Herunterschreiben grundlegender Flexbox- oder Grid-Properties in CSS – GitHub Copilot liefert mit einer Konsistenz und Geschwindigkeit, die man mit der Hand einfach nicht hinbekommt.
Auch hier ist natürlich immer mal wieder Quatsch dabei – den erkennt man aber sofort und kann ihn gleich fixen bzw. den Vorschlag ignorieren und/oder die nächste Idee anzeigen lassen. Der Signal-Rausch-Abstand ist einfach so hoch, dass sich nicht „AI“-unterstütztes Coden über weite Strecken einfach nur noch ineffizient anfühlt.
-
🔆 Ich habe jetzt doch noch mal das Projekt „Home Assistant einrichten und gucken, ob sich etwas ergibt“ gestartet. In den vergangenen Jahren bin ich ja nie so richtig mit Home Assistant warm geworden. Es liegt zum großen Teil sicher daran, dass ich zwar hier im Haus so viele Sensorwerte wie möglich aufzeichnen und auswerten möchte, bei der Steuerung aber am liebsten ganz auf vernetzte Aktoren verzichte.
Die Aufgabenstellung der Aufzeichnung und Auswertung löst mein zigbee2mqtt-Mosquitto-Telegraf-InfluxDB-Grafana-Setup mehr als zufriedenstellend, sodass hier nie wirklich Bedarf nach einer anderen Lösung bestand. Andererseits sind Raspberry Pi 4 jetzt wieder zur halbwegs annehmbaren Preisen verfügbar und ich habe mir in der vergangenen Woche einen mit 4 GiB RAM gekauft und dann eben ein Home Assistant-Image auf die μSD geschrieben und davon gebootet. Mal schauen, wohin die Reise führt.
-
🛠 Ich habe begonnen, die Schaltsteckdosen welche hier im Haushalt verteilt sind auf aktuelle Softwarestände zu patchen. Die Delock 11827 haben jetzt die aktuelle Tasmota 13 bekommen, die ersten Shelly Plug S laufen nun mit der aktuellsten Firmware von Shelly. Ich überlege noch, ob ich bei den Shellys auch direkt auf Tasmota gehe – dann hätten alle Schaltsteckdosen die gleiche Software.
-
In einem Varianten-Sudoku kam ein magisches 3×3 Quadrat („Magic Square”) vor. Das einzige was mir bisher bekannt war: dass die Summe der Zeilen, Spalte und Diagonalen jeweils 15 ist. Seit dieser Woche weiß ich außerdem, dass in der Mitte eines magischen 3×3-Quadrats immer eine 5 steht und in den Ecken immer die geraden Ziffern 2, 4, 6 und 8. Daraus ergibt sich auch, dass sich in der Mitte der Kanten immer die restlichen ungeraden Ziffern 1, 3, 7 und 9 befinden. Nach kurzem Nachdenken wird auch sofort klar, warum das so sein muss (Hint: Parität der Summe von geraden und ungeraden Ziffern). Diese und viele weitere Informationen gibt es zum Beispiel hier: Magic Square. [1]
„Magical Berlin “ – dieses Sudoku orientiert sich an Berlin (die grüne „German Whispers Line“ als Stadtgrenze, die blau eingefärbten „Killer Cages“ als Müggelsee, Tegeler See und Wannsee). Der Bezirk Berlin-Mitte ist durch ein magisches Quadrat dargestellt. Das betreffende Sudoku selbst lösen? → Magical Berlin
-
🏞️ sips – “scriptable image processing system”. Ein Command Line Tool, welches in macOS dabei ist und das Manipulieren von Bilddateien erlaubt.
man 1 sips
für mehr Infos. Danke @haentz für den Tipp. Die Syntax der Optionen ist nicht die schönste, aber auch nicht so schlimm wie bei ImageMagick. -
🔣 Codepoint noch mal. Wie der Zufall es will, habe ich gestern festgestellt, dass Codepoint auch auf iOS-Devices genutzt werden kann. Das macht die Anschaffung gleich noch mal lohnenswerter.
-
🔌 Gestern hatten wir hier in der Region (unser Ort sowie einige Nachbarorte, Radius ~ 5-10 km) einen Stromausfall, welcher 91 Minuten lang anhielt. In den ganzen gut sechs Jahren, seit wir hier hergezogen sind, gab es vielleicht zwei oder drei Ausfälle, welche jeweils nur eine einstellige Zahl von Sekunden dauerten – so gesehen was das gestern schon außergewöhnlich. Gerade erst am Samstag las ich einen Blogpost zum Thema USV und war gerade mitten in der Überlegung, mir ebenfalls mal eine zuzulegen. Da kam der Stromausfall als kleiner Wink mit dem Zaunpfahl also gerade recht. Demnächst mehr dazu.
-
🔊 Sets, welche ich diese Woche gehört habe und zwischen welchen 18 Jahre liegen:
-
📺 erneut eine Hand voll Folgen Frasier
-
META Bilder hier im Blog werden über ein figure-Shortcode eingefügt: ich lege das Bild in das Unterverzeichnis
images
neben dem Post und referenziere es im figure-Shortcode:1 2 3
{{< figure figcaption="Ein Bild von mir" >}} {{< img src="images/thats-me-over-there.jpg" alt="Ein Bild von mir" >}} {{< /figure >}}
Hugo erstellt dann verschiedene Größen, welche dann passend in
srcset
undsizes
des<img>
-Elements eingefügt werden. In der bisherigen Konfiguration war die Bildqualität ziemlich mau, da Hugo die Bilder mit dem Box-Resizer verarbeitet und mit einen Qualitätsfaktor von 75 gespeichert hat. Beides zusammen war keine gute Kombination – jetzt laufen die Bilder durch MitchellNetravali und werden mit einem Qualitätsfaktor von 85 gespeichert. Das Ergebnis ist deutlich besser. Alle Infos dazu sind übersichtlich in der Hugo-Dokumentation zu finden: Image Processing.