OnUpgrade - Mein erstes Dart / Flutter Package

Während es für fast alles ein Plugin / Package gibt im Dart / Flutter Kontext, existieren natürlich trotzdem die kleinen Ausnahmen die einem fehlen. Für diese Dinge schreibt man dann selber Code, verwendet ihn in der nächsten App wieder und entscheidet sich dann vielleicht eine Library daraus zu machen.
Selbiges tat ich vor kurzem und in diesem Zuge habe ich mein erstes Dart / Flutter Package veröffentlicht. OnUpgrade open_in_new soll dem Entwickler helfen eventuell nötige Migrationen bei App-Upgrades durchzuführen oder den Nutzer über neue Funktionen zu informieren. Das Package stellt dabei die Logik zum Speichern, Vergleichen und Auswerten der zuletzt installierten und aktuell genutzten App-Version zur Verfügung. Was im Falle eines Updates ausgeführt wird, wie ein eventueller Dialog aussieht oder wie der generelle weitere Ablauf ist, entscheidet der Entwickler.
I'm a coder - Die Workaround-Hölle

Eigentlich möchte man defensiv programmieren und entsprechend dem Nutzer möglichst viele Fehler vom Leib halten, das macht auch Sinn. Doch Workarounds und Fallbacks über und über einzusetzen, sodass man irgendwann eher Probleme einbaut als sie zu verhindern, ist meiner Meinung nach schlimmer als ein ordentlich kommunizierter Fehler. Als Beispiel würde ich hier ein Auto nehmen. Es hat Benzin im Tank und falls selbiger bald leer ist fährt man zur Tankstelle. Sollte diese geschlossen sein, macht es Sinn zur Sicherheit einen Kanister mit Benzin auf Reserve zu haben. Was aber eher wenig Sinn macht, ist alle zufällig herumstehenden Kanister des Nachbarn in den Tank zu schütten und zu hoffen es war Benzin dabei. Mit diesem Vorgehen hat man vielleicht in wenigen Fällen Glück, meist ist es aber eher eine wenig zielführende Idee.
GitHub Actions - Flutter automatisieren und mit Codecov testen

Sowohl GitHub Actions, wie auch Flutter waren bereits häufiger Thema hier im Blog und heute geht es um die Kombination aus beiden. Bei einem Großteil meiner GitHub Projekte nutze ich mittlerweile GitHub Actions für diverse Aufgaben und bei meinen Flutter Projekten sieht dies nicht anders aus.
Aktuell nutze ich Flutter Action open_in_new für die eigentlichen Flutter Befehle, Codecov open_in_new für das automatische Hochladen der Tests und abschließend Dart/Flutter Package Analyzer open_in_new, um das Formatting und meinen Pub.dev Score zu überprüfen. Diese Kombination erlaubt es mir mit nur einem Push einen Build zu analysieren, die Tests auszuführen und direkt bei Codecov zu hinterlegen.
Badges - Zeigt her den Projektstatus

Auf eine übersichtliche und schön Art informieren wie der Projektstatus ist, wo man die Downloads findet und welche Lizenz genutzt wird? All das geht und zwar in Form kleiner hübscher Badges. Diese Information ist nicht neu, aber ich habe im Rahmen von einem meiner Projekte nun das erste Mal aktiv mit selbigen gearbeitet.
Für eine kleines Dart / Flutter Package, über welches ich in den kommenden Tagen berichten werde, wollte ich gerne den Status diverser Eigenschaften anzeigen und schaute mich nach verfügbaren Lösungen um.
Badges sind kleine automatisch generierte Bilder, die meist aus einem Label und der dazugehörigen Information bestehen. Normalerweise müsst ihr nur euren Projektnamen, eine öffentliche Id oder eine andere Referenz eintragen und schon geht es los.
Kommentar-Service - Funktionsupdate abgeschlossen

Das Kommentar-Service Update ist abgeschossen und im Rahmen des Updates habe ich direkt noch ein paar weitere Dinge erledigt. Das Hauptfeature ist allerdings die neue Kommentare-Abonnieren Funktion. Dies könnt ihr einfach pro News machen. Sobald dann ein neuer Kommentar in der jeweiligen News erstellt wird, erhaltet ihr eine E-Mail. Solltet ihr kein Interesse mehr an einer News haben, enthält jede der E-Mails einen One-Click Link und schon gibt es keine Nachrichten mehr.
Das Update wurde heute gegen 13 Uhr gestartet und die eigentlichen Ausfallzeiten des Kommentar- bzw. Such-Services lagen bei 5 – 10 Minuten. Nach Abschluss der eigentlichen Aktualisierung erfolgten ein paar letzte Tests auf dem Live-System und dann die Anpassung der UI. Alle Komponenten waren gegen 16 Uhr aktualisiert und liefen wieder, die gesamten Release Notes gibt es im unteren Teil der News.
Kommentar-Service - Funktionsupdate am 30. März

Am morgigen Dienstagvormittag werde ich die neue Version meines Kommentar-Service ausrollen. Dafür werden meine beiden Services die hier im Blog laufen, also die Suche und die Kommentare, kurzzeitig offline gehen. Der Zeitraum dürfte sich auf wenige Minuten belaufen, da das eigentliche aktualisieren extrem schnell geht.
Der Rollout wird von minimalen Ergänzungen und Anpassungen an Config-Dateien begleitet und alles weitere passiert automatisch. Sobald der automatische Teil erreicht ist, ist die Suche schon wieder online und der Kommentar-Service wird wenige Moment später wieder aktiv sein.
Ich werde dann auf dem Live-System noch ein paar kleine Tests fahren und hoffentlich im laufe des Tages auch das UI Update ausrollen, welches die erweiterte API bedienen kann. Der gesamte Ablauf kann auf meiner Statusseite feingranularer verfolgt werden.
Git - Conventional Commits Spezifikation für Commit Messages

Git ist ein tolles Tool um Code und andere Inhalte zu verwalten, egal ob alleine oder gemeinsam. Ich habe mittlerweile alles was nicht nur ein kleiner Test ist in Git Repositories. Im Rahmen der Nutzung von Git gibt es diverse unterschiedliche Ansätze und Meinungen, wie man Dinge angehen soll und was die jeweilige Best Practice ist.
Im Bereich der Commit Messages habe ich in der letzten Zeit immer mehr Wildwuchs in meinen Projekten bemerkt, obwohl ich eigentlich versucht habe die Dinge überall ähnlich zu benennen. Wichtig ist dies z.B. wenn man später nach Dingen sucht oder z.B. automatisiert Release Notes aus den Commit Messages generieren will.
Durch Zufall bin ich auf die Conventional Commits Spezifikation in einem Flutter Plugin Repository gestoßen und fand den Ansatz sehr passend. Das Ganze basiert auf Ideen des Semantic Versioning open_in_new und der Angular Entwickler Community open_in_new. Die Conventional Commits Spezifikation erweitert die Ideen und Ansätze um feste Richtlinien. Mich persönlich interessiert vor allem der Prefix für Commit Messages, denn eben dieser ist ohne viel Aufwand gesetzt, hilft aber bei den oben genannten Punkten sehr.
Kommentar-Service - Funktionsupdate geplant

Vor einiger Zeit gab es eine Feature-Anfrage zu meinem Kommentarsystem, welche ich nun endlich umsetze. Es geht darum Kommentare zu einer News abonnieren zu können. An sich eine simple Funktion, welche aber in ein vorhandenes System integriert werden soll, welches stabil und sicher bleiben sollte, deswegen muss man ein paar mehr Schrauben anziehen.
Da ich aktuell etwas Zeit habe, konnte ich vorgestern die finale Planung und gestern die Implementierung durchführen. In den nächsten Tagen folgt nun weiteres Testing und Debugging. Ich hoffe bis zum Ende der Woche, aber spätestens bis zum Ende der nächsten Woche alle Tests und eventuelle weitere Optimierungen abgeschlossen zu haben, sodass die neue Version online gehen kann.
Die Aktualisierung selbst wird nur wenige Minuten dauern und dürfte die meisten Nutzer nicht betreffen. Alle Informationen zum Service-Update, die kompletten Release Notes und der geplante Update-Termin wird es sobald bekannt in einer separaten News geben.
Meine Statusseite - Hosting und Deployment via GitHub

Heute folgt der letzte Teil meiner kleinen Newssammlung rund um meine Boehrsi.de Statusseite. Denn sobald die eigentliche Seite erstellt ist, geht es ans Hosting und Deployment. Ich habe bekanntlich einen eigenen Server zur Hand, aber Hosting auf diesem macht für eine Statusseite offensichtlich wenig Sinn. Denn wenn der Server, für welchen die Seite den Status anzeigen soll, offline ist, dann wird die Seite natürlich auch offline sein. Ich entschied mich basierend auf meinen Erfahrungen mit GitHub, für eben selbige Plattform fürs Hosting und Deployment. Dort war ich wie bereits erwähnt durchaus glücklich wie umfangreich die Auswahl an vorhandenen Deployment-Workflows ist und auch das Hosting selbst ist sehr unkompliziert.
I'm a coder - Schlechter Code kostet Zeit und Geld

Ich hatte schon häufiger das Thema der Codequalität hier im Blog und habe dafür geworben selbige hochzuhalten. Soll heißen bestehenden Code auch mal zu modernisieren, während der Entwicklung Dinge zu optimieren, statt zu duplizieren und Fehler die man zwischendurch entdeckt direkt zu beheben. Es gibt noch viele, viele weitere Möglichkeiten die Codequalität zu steigern, doch darum soll es heute gar nicht gehen.
Ich wollte mal konkret mitteilen warum ich es für wichtig halte nicht nur links und rechts Dinge anzubauen, sondern eben auch das große Ganze im Blick zu behalten. Ich habe vor kurzem die Ehre gehabt in ein halbwegs umfangreiches Projekt eine neue Funktion einzubauen, welche auf bestehender Logik aufsetzt und diese erweitert. An sich war der Ansatz recht simple, denn es sollte einfach ein bestehender Flow erweitert und mit verschiedenen Kontexten erneut ausgeführt werden. Alle anderen Abläufe, die auf diesem bestehenden Flow aufsetzen, mussten entsprechend angepasst werden, sodass sie den neuen Kontextbezug auch erfassen. Generell wäre das ein Aufgabe für einige Tage gewesen, allerdings wurde alles wesentlich umfangreicher.