Aare.guru API: Auftakt Saison 2022 – Expansion nach Olten

Gute Neuigkeiten: Wir erweitern auf 2022 unser Einflussbereich aus und nehmen Olten als neuen Ort in der Aare.guru-API auf. Dank der privaten Messstation von Tobias Oetiker (TemperAare, iOS & Android) können wir diese Lücke im Messnetz schliessen.

Die schlechte Nachricht: Jetzt gibt’s ein Lehrstück in defensivem Programmieren: Da die neues Messstation nur die Temperatur, aber nicht die Wassermenge misst, wird die API für Olten einige null-Werte liefern.

Und ihr müsst jetzt sicherstellen, dass eure Integrationen & Apps damit umgehen können. (Hint: Die offizielle Aare.guru-App tut’s nicht…)

Die Änderungen sind auf der TEST-Instanz (https://aareguru-test.existenz.ch) bereits implementiert. Auf der LIVE-Instanz (https://aareguru.existenz.ch) folgen sie am 1. April 2022.

Betroffene Keys, welche neu null sein können:

  • flow (Insbesondere auch im Key aarepast)
  • flow_text
  • flow_gefahrenstufe

Betroffene LIVE-URLs, ab April:

Test-URLs:

Zukünftige Expansionspläne: Solothurn und Aarau

Wir würden auch gerne Solothurn und Aarau in der App aufnehmen und suchen für die Installation einer kleinen Messstation (Winziges Kästchen mit LoRaWAN-Anbindung, autonome Stromversorgung) Standorte an der Aare dafür.

Hast du in Solothurn oder Aarau einen Kontakt für einen Ort, z.B. ein Bootshaus, Ruderclub, Schwimmclub, Angler, Yachthafen, ARA-Ausfluss, Steg etc.? Melde den bitte bei mir (cstuder@existenz.ch).

P.S.: Das Techstack-Webinar vom letzten November ist hier online.

Video: Aare Guru Techstack Webinar

Oder direkt auf Vimeo: https://vimeo.com/652964623

Links & Zeugs

Umsysteme

Bilderquellen

Referenzmaterial Softwarearchitektur

Dieses Jahr habe ich erfolgreich das CAS Softwarearchitektur an der Berufsfachhochschule Bern absolviert. Anbei eine Sammlung von relevantem Material zum Thema:

Bücher

Das Standardwerk im deutschen Sprachraum: Gernot Starke – Effektive Softwarearchitekturen. Eines der vier Module meines CAS‘ hat durch dieses Buch geführt; als Gruppenarbeit haben wir eine Architekturdokumentation anhand der arc42-Vorlage aus dem Umfeld des Autoren erstellt.

Kurz und knapp, ziemlich frisch: John Ousterhout – A Philosophy of Software Design. Einzige das Thema Testing handelt er viel zu knapp ab.

Auf meiner Noch-zu-Lesen-Liste: Das Tandem der beiden Werke Derek Jones – Evidence-based Software Engineering (Das Cover lohnt sich zu studieren) und Laurent Bossavit – The Leprechauns of Software Engineering.

Essays & Talks

Noch immer ein Favorit von mir: Das Essay Dan McKinley – Choose Boring Technology.

Einen Überblick über die Rolle Softwarearchitekt:in gibt der Talk Gregor Hohpe – The Architect Elevator. (Das Buch dazu kenne ich nicht.)

Kritischer ist da der Talk Greg Wilson – Software Engineering’s Greatest Hits, welcher dieselben Fragen stellt wie die oben erwähnten Derek Jones & Laurent Bossavit.

Und weil es gerade so schön frech ist: Allen Holub – The Death Of Agile

Blogs & Podcasts – Auf dem Laufenden bleiben

Der Klassiker: Martin Fowler und Freunde schreiben regelmässig in ihrem Blog neue Essays.

Im deutschen Sprachraum verfolge ich gerne Eberhard Wolff -Software Architektur Im Stream.

secrethubwarden – Secrets von Bitwarden zu GitHub synchronisieren

Bitwarden ist aktuell mein persönlicher Passwortmanager. Und meine privaten Projekte deploye ich bevorzugt über GitHub Actions. Dabei verwende ich Repository Secrets um sensitive Daten wie Passwörter oder Secret Keys sicher abzulegen. Das manuelle Herumkopieren dieser Daten ist allerdings fehleranfällig und hätte ich gerne automatisiert. Eine existierende Lösung für mein Problem fand ich nicht, dafür ein Projekt mit ähnlicher Funktionalität: envwarden. Davon inspiriert habe ich mir ein eigenes Skript geschrieben und veröffentlicht:

secrethubwarden

(Habe ich an dieser Stelle schon mal erwähnt, dass ich schlecht im Namen vergeben bin?)

Dieses Bash-Skript nimmt die Konfigurationsdatei .secrethubwarden mit folgendem Format:

MY_SECRET_PASSWORD=secrethubwarden Example Password
MY_SECRET_NOTE=Secret Note Name

Danach benutzt es die Bitwarden-CLI um im Passwort-Vault das entsprechende Passwort (z.B. secrethubwarden Example Password) zu suchen, und schreibt dieses mit der GitHub-CLI als Repository Secret (Hier: MY_SECRET_PASSWORD) hinein. Ohne dass du dein Passwort je zu Gesicht bekommst.

Ich benutze secrethubwarden bereits erfolgreich in verschiedenen Projekten. Es ist etwas langsam, aber es nimmt mir viel Handarbeit ab. Und animiert mich damit dazu sensitive Daten noch konsequenter aus dem Sourcecode rauszuhalten.

Feedback ist willkommen.

Link zum Wochenende: Datasette.io

Screenshot api-datasette für hydro_parameters

Das Open Source-Tool Datasette verwandelt SQLite-Datenbanken (Oder indirekt quasi jede CSV-Datei) schnell und unkompliziert in eine Webseite inkl. API. Es erlaubt einfach durch die Daten zu reisen, filtern, analysieren.

Screenshot api-datasette für hydro_locations

Erweiterbar mit Python-Plugins erlaubt es zusätzliche Visualisierungsmöglichkeiten wie diese Kartendarstellung.

Ich benutze es für meine OpenData-APIs für die Metadaten der Hydrologie- und SwissMetNet-Datenbanken. Dazu ruft ein Skript jeweils beim Deployment die API-Methoden auf und speichert die Resultate in die SQLite-Datenbank. Das ganze Skript als anschauliches Beispiel gibt es auf GitHub.

Office Hours

Auf das Projekt bin ich via diesem Artikel gestossen: Open source projects: consider running office hours. Letzte Woche habe ich einen dieser Slots gebucht und 20 Minuten mit Simon Willison konferiert.

Alles in allem ist Datasette eine ausserordentlich tolle Erfahrung, sowohl technisch wie auch menschlich. Ich kann es kaum erwarten noch mehr Anwendungsfälle dafür zu finden.

Aare.guru- & Existenz-API Newsletter Auftakt 2021

Den folgenden Text habe ich am 6. April 2021 an die API-Newsletter-Liste verschickt. Trag dich in den Newsletter ein um auf dem Laufenden zu bleiben.

Christian

Eine kurzfristige Ansage: Aufgrund einer Änderung an der Datenlieferung der Wasserwerte musste ich das sorgfältig entwickelte Refactoring der Existenz-API ohne weiteres Testen deployen. Es sind keine grossen Änderungen passiert, aber vielleicht habe ich etwas übersehen.

Keine Änderung an der bestehenden Aare.guru-API. Ein neuer Endpoint: widget

Minimale Änderungen an den Metadaten (Stations- und Parameterliste) der Existenz-API: Die details-Felder sind umgestellt und etwas ausführlicher.

Was gibt’s sonst noch Neues?

  • Die APIs sind intern poliert und auf den neuesten Stand gebracht: Bessere Testabdeckung, schnellere Deployments, zentralisierteres Logging, neues Hintergrundbild für die Doku. Wir sind damit etwa auf Faktor 327 von 12.
  • Eine experimentelle InfluxDB-Datenbank steht zum Ausprobieren zur Verfügung. Die Credentials für die Verbindung sind auf api.existenz.ch dokumentiert. Es gilt Bring-Your-Own-Visualization. Ich hoffe im Verlauf des Sommers das ganze Datenarchiv der letzten Jahre dort hinaufzuladen.
  • Alle Metadaten zu den SwissMetNet- und Hydrologie-Zeitreihen sind jetzt als nifty Datasette verfügbar: api-datasette.konzept.space. Das ersetzt meine handgestrickte Karte.

Zu guter Letzt bin ich stolz mein Lockdown-Projekt zu präsentieren: Das AareDisplay.

Und jetzt heisst es warten bis der Schnee zusammen mit den Viren endgültig definitiv verschwindet, die Wassertemperaturen steigen und wir hoffentlich einen gemütlichen Sommer geniessen dürfen.

GitHub Action: Mehrzeiliges Secret in eine Datei schreiben

Um beispielsweise eine .env-Datei in einer GitHub Action aus einem Secret heraus zu befüllen, muss sich leider mit fehlenden Zeilenumbrüche herumschlagen.

Ein einfacher Trick habe ich in einem Stackoverflow-Kommentar gefunden: Die unerwünschten Leerzeichen mit tr in Newlines verwandeln.

- name: Write .env
  run: |
    echo $ENV_FILE | tr ' ' '\n' > .env
  shell: bash
  env:
    ENV_FILE: ${{secrets.DOTENV}}

Nachteil dieser Methode: Das Secret selber darf keine Leerzeichen enthalten.