MK Bits

Blog von Dr. Markus Kreuz

Dieses Jahr stand etwas mehr im Zeichen von “einen Schritt zurückzugehen” und zu analysieren, was ich gerne noch an der App anpassen möchte, ohne dabei die Identität zu verlieren. Daher war dieses Jahr nicht viel Neues zu sehen (zumindest auf der Oberfläche).

Download-Zahlen

Zugegeben, man gewöhnt sich schon etwas daran, dass die App quasi jeden Tag “neu” heruntergeladen wird, und es auch jede Woche einen In-App Kauf gibt. Vor noch einen Jahr war dies ein phänomenaler Zustand. Daran muss ich mich auch immer wieder erinnern.

Support-Systeme

Im Laufe des Jahres wurden diverse Backend-Systeme migriert, um die App robuster zu machen. Dabei wanderte insbesondere die nächtliche Erstellung der “Master”-Daten auf den Heimserver, sodass die Public-Server sich darauf konzentrieren können, die Daten an die App auszuliefern. Darüber hinaus habe ich ein Monitoring-System aufgebaut, um sicherzustellen, dass alle notwendigen Backend-Systeme einwandfrei funktionieren.

Liquid Glass

Dieses Jahr hat Apple mit iOS 26 ein ganz neues Design eingeführt. Daher stand auch an, die App an das neue Design anzupassen. Was im letzten Jahr nur ein Rebuild war, dauerte jetzt mehrere Wochen/Monate. Nach der WWDC habe ich erwartungsvoll die neue XCode geladen, das Projekt geöffnet und die App gebaut. Und... direkt ein Feld an Fehlern, die gar nichts mit dem Code zu tun hatten. Also hieß es erst einmal warten, bis Apple die Bugs in XCode behoben hat. Nach dem ersten “erfolgreichen” Build, direkt die nächste Ernüchterung: Der frisch gebaute Einführungsassistent ist komplett zerschossen, weil iOS 26 die Abstände ganz anders interpretiert. Also habe ich die Zeit bis zum Release von iOS 26 nur damit verbracht die App ans neue Design anzupassen und diese kleinen Fehler zu beheben. Das Update ist rechtzeitig fertig geworden und für die meisten User sollte sich nichts geändert haben – unter der Haube jedoch einiges, damit Liquid Glass funktioniert.

iOS 16

Mit der Einführung von iOS 26 kommt immer wieder das Thema bei mir auf, welche Versionen von iOS ich noch unterstützen möchte. Meine (anonymen) Auswertungen zeigen durchaus noch Nutzer mit iOS 16. Interessanterweise ist iOS 17 quasi verschwunden, auch weil alle Geräte ebenfalls iOS 18 unterstützen. Ich habe mich daher im ersten Schritt entschieden, den Schnitt zwischen iOS 16/17 und iOS 18+ zu machen. Das bedeutet, dass iOS 16 zwar noch technisch unterstützt wird, aber nicht mit allen neuen Features. Die App funktioniert weiterhin einwandfrei.

Erweiterung aufs EU-Ausland

Ein großes Thema dieses Jahr war es den Datensatz so anzupassen, dass er sich auch aufs EU-Ausland erweitern lässt. Dazu musste ich die komplette Daten-Pipeline anpassen. Hier ist noch einiges an Arbeit zu tun, aber ich konnte große Schritte machen, um die App in 2026 auch fürs EU-Ausland anzubieten. Es sei noch nicht zu viel verraten, aber die ersten internen Tests laufen bereits mit guten Erfolgsquoten.

Ausblick auf 2026

Auch wenn es dieses Jahr scheinbar um die App etwas ruhiger geworden ist, sind die Pläne weiterhin groß. Es fühlt sich aktuell wie ein großes Puzzle an und so langsam kommen alle Einzelteile zusammen, um mit der App Placetopee den besten Helfer für Autobahnfahrten anbieten zu können.

Mein Homelab hat sich auch schon etwas weiterentwickelt. Die größte Änderungen kam in den letzten Monaten mit neuen Switches und einem eigenen NAS.

Separates NAS

An sich war ich sehr zufrieden mit dem TrueNAS Setup im Desktop Server. Jedoch hatte ich immer zwei Punkte, die mich etwas gestört haben: 1. Kein eigenes Interface für die Daten Kommend von einer Synology, habe ich gerne die Möglichkeit, mir die Daten auf dem NAS direkt anzuschauen, ohne zusätzliche Software. 2. Platz für Festplatten Im Desktop Server war nur wirklich Platz für zwei Festplatten, die dritte lag so im Gehäuse. Eine Erweiterung war somit gar nicht möglich.

Als langjähriger Nutzer von UniFi, habe ich mir das UNAS Pro angeschaut. Auch wenn inzwischen neuere Geräte auf dem Markt sind, ist es ein recht gutes Paket: Insgesamt 7 Bays mit 10Gbit SFP.

Somit habe ich zugeschlagen und alle Daten von TrueNAS übertragen. Aktuell bin ich wirklich sehr zufrieden mit den Übertragungsraten, dem Interface und auch dem Möglichkeiten für Backups.

Neuer Switch

Zusammen mit dem NAS habe ich mir auch noch einen separaten Switch besorgt, damit nicht alles über den Router laufen muss. Mit 10Gbit SFP, 2,5Gbit und auch POE++ bin ich sehr überzeugt von der Leistung und Flexibilität. Mit entsprechenden Ethernet-Adaptern, kann ich die Laptops auch mit 2,5Gbit anbinden.

Server

Damit ist der Homeserver jetzt ohne Festplatten und läuft deutlich ruhiger. Ich habe den Arbeitsspeicher noch etwas aufgerüstet und kann somit auch größere Instanzen von Open Street Map laufen lassen.

Monitor

Der Monitor ist vielleicht nur ein kleiner Teil des Homelabs, aber auch hier ein kurzes Update. Bisher habe ich auf einem Ultra-Wide gearbeitet mit 38 Zoll. Auch wenn das für die Arbeit sehr viel Fläche ist, habe ich immer wieder festgestellt, dass ich häufiger nur am Laptop gearbeitet habe, weil der Bildschirm sonst zu groß war. Nach viel Hin und Her bin ich jetzt auf einen 27 Zoll, 5K Monitor gewechselt und bin begeistert. Es muss wirklich nicht das Apple Studio Display sein. Ein Asus ProArt tut es auch. Gerade auf dem Mac macht es so viel mehr Spaß nun Texte zu lesen und zu schreiben durch die native Retina-Auflösung. Interessanterweise sind es jetzt sogar mehr Pixel als vorher, aber der Schreibtisch ist nicht mehr ganz so voll. Und ich nutze den Monitor wieder häufiger, der Rücken freut sich.

Wenn es nach Apple und Google geht, vereint das Smartphone alles was man im Alltag so braucht: Kommunikation, Unterhaltung, Bezahlen und auch Schlüssel und Ausweise. Wenn man jedoch versucht auf ein neues Smartphone zu wechseln fangen die Probleme an. Teilweise liegt das bei Apple/Google, teilweise dann aber auch bei den Apps selbst. Beim Wiederherstellen aus dem letzten Backup sieht das Smartphone schon genauso aus wie vorher, jedoch nur auf den ersten Blick.

Manche Einstellungen / Verbindungen wie zur Smartwatch oder dem Auto werden einfach komplett vergessen und müssen neu eingestellt werden. Die eSIM wird nur bei einem der beiden Provider problemlos übertragen. Und mit absteigendem Sicherheitslevel haben die Apps nicht den richtigen Zustand oder erfordern neue Authentifizierung. Bei den Apps der Banken reicht das Verhalten von “bitte beantragen Sie erst einen neuen QR Code per Brief”, über einem aufwendigen Wechsel des vertrauten Geräts (warum auch immer nicht mehrere erlaubt sind) hin zu “du bist eingeloggt, darfst aber erst einmal ein paar Tage nicht alles machen”. Ohne das alte Smartphone oder analogen Token wäre man hier sehr aufgeschmissen. Gleiches gilt auch bei einigen Messaging Apps, die nur einen Teil der Chats übertragen oder irgendwie vergessen haben, wer man ist. Bei einigen ist es wirklich einfacher die Apps zu löschen und neu einzurichten.

Und dann nicht zu vergessen die ganzen Apps für die Arbeit, weil es ja BYOD ist. Alle Auth-Apps müssen komplett neu eingerichtet werden, und ohne das alte Smartphone oder zusätzlichem IT Support quasi unmöglich.

Das Einstellen aller Apps hat bisher schon diverse Stunden gedauert, und ich habe das alte immer noch daneben liegen. Mal schauen, wann ich mich traue das alte Smartphone zu löschen.

Gestern kam erneut eine Mail von BMW Charging mit der Ankündigung einer Änderung der Ladekonditionen. Einen kurzen Schritt zurück: BMW bietet für Fahrer elektrifizierter Fahrzeuge (Plug-In und Elektro) die Möglichkeit einen eigenen Ladetarif zu verwenden, um die Barriere zu senken. Es gibt einen kostenlosen Tarif “Flex” mit variablen Ladekosten je nach Ladeanbieter und einen kostenpflichtigen “Active” Tarif, der fürs erste Jahr kostenlos ist. Dieser “Active” Tarif war von Anfang an eine gute Option, wenn man nicht diverse Ladekarten haben möchte. Der Preis war nicht immer der günstigste, aber mehr als fair. Im letzten Jahr fing es jedoch an: Die Mails mit der Ankündigung einer Änderung der Ladekonditionen. Zuerst war es nur eine zusätzliche Gebühr pro Ladevorgang. Danach wurden die Preise erhöht. Im Anschluss das Modell komplett geändert und der “Active” Tarif bot einen Rabatt auf den “Flex”-Tarif. Es kamen “Preferred Partner” hinzu, bei denen man zu festen Konditionen laden konnte; und die sich jeden Monat verändert haben. Und gestern dann die vierte Mail mit der nächsten Änderung: Der Rabatt wird fast gestrichen, und auch die Konditionen bei den “Preferred Partnern”. Damit hat sich BMW Charging von einer soliden Option zu fast einem Lotto entwickelt. Ich kann nicht mehr wirklich und verlässlich planen, was mich eine Ladung kosten wird. Und ja, auch Tankstellen ändern ihre Preise, jedoch nicht ständig das Berechnungsgrundlage. Ich habe das Feedback an BMW Charging weitergegeben, bekam jedoch die Standardantwort mit steigenden Preisen bei den Infrastrukturkosten und dem Hinweis, dass sie bemüht sich wettbewerbsfähige Preise anzubieten. Ich werde mir daher gut überlegen, ob ich den Vertrag nach der kostenlose Phase verlängere. Bis dahin werden sich die Konditionen aber sicherlich noch ein paar mal ändern.

Es dauert immer länger als gewünscht, aber ich wollte einmal meine ersten Erfahrungen mit dem Homelab teilen. Vielleicht hilft es jemandem, der das gleiche Problem hat.

Alle Teile für den PC waren rechtzeitig da, außer natürlich das Case. Daher musste ich das noch einmal über einen anderen Shop bestellen. Der Zusammenbau hat deutlich mehr Zeit eingenommen, als ich dacht hätte. Liegt vermutlich auch daran, dass ich noch nie einen PC zusammengebaut habe, und keinen Fehler machen wollte. Insgesamt habe ich mehr als 5 Stunden gebraucht, immerhin ohne größere Probleme. Und beim ersten Druck auf den Startknopf ging der PC auch an, ein schönes Gefühl.

Die Installation von Proxmox verlief auch ohne Probleme, ich konnte sogar die SSD aus dem alten Server in den neuen verbauen. Ein paar Treiber mussten nachgeladen werden, das war es dann aber auch.

Dann finden jedoch die ersten Probleme an. Auf dem Mainboard von MSI ist ein 5G LAN verbaut, der leider nicht direkt erkannt wurde. Auch das deaktivieren von Secure Boot hat hier nicht geholfen. Nach mehreren Tagen debugging konnte ich einen Custom Treiber finden, der funktioniert. Aber dann war noch das Problem mit dem Reboot. Immer, wenn ich den PC neu gestartet habe, meldete er sich nicht im Netzwerk an. Sobald ich dann Monitor und Tastatur angeschlossen habe, lief wieder alles problemlos. Es hat einige Wochen gebraucht, um hierfür eine Lösung zu finden: Es war eine BIOS Einstellung, die das “Boot Logo” beim Start anzeigen soll. Ohne Monitor war dies natürlich nicht möglich und daher auch kein Boot.

Ich habe mir noch eine 10G SFP+ Netzwerkkarte von Intel auf Ebay besorgt. Diese wurde ohne Probleme erkannt und auch die Einstellungen in Proxmox waren einfach. Und dann stand wieder ein Update mit Reboot an... wieder lief der 5G LAN Port nicht mehr. Daher läuft aktuell alles über die 10G Karte.

Abseits davon hat es sehr geholfen die Lüfter und Pumpe einzustellen, um das Geräuschniveau zu senken. Als Ingenieur war dies sehr spaßig. Abgesehen davon, dass sich das BIOS manchmal ohne Grund zurücksetzt (letztes Mal schon etwas her), ist dies sehr praktisch. Die Leistung des PC ist gleich zu vorher, aber man hört nichts bis zu 75% Last.

Als letzten Schritt habe ich mit noch ein paar Festplatten bestellt, um die Synology als NAS abzulösen. Leider sind nun die Festplatten das lauteste am PC. TrueNAS lies sich einfach installieren, die Datenübertragung dauerte natürlich etwas. Das Backup und die Datenübertragung sind inzwischen deutlich schneller geworden, ein schöner Nebeneffekt.

Aktuelles Fazit ist sehr positiv. Der Intel Ultra 7 265K war die richtige Entscheidung, Thunderbolt ist eine sehr hilfreiche Technologie. Die Unterstützung ist problemlos mit Proxmox. Und die Leistung ist sehr beeindruckend. Das einzige, was etwas nervt sind die Probleme mit dem 5G LAN Port. Immerhin ist die 10G Karte eine Lösung.

Es gibt eine recht interessante Video-Serie von Carwow auf YouTube. Sie vergleichen Fahrzeuge von heute mit dem gleichen Modell von vor knapp 20-25 Jahren (Beispielsweise VW Passat, BMW 5er). Es ist sehr spannend zu sehen, was sich in 20 Jahren getan hat oder auch nicht. Es wird der Eindruck erweckt, dass sich beim Verbrauch quasi kaum etwas getan hat, die Autos hauptsächlich länger geworden sind und nur mehr Displays haben. Auch wenn sich das vermutlich gut verkaufen lässt, entspricht es nicht so ganz der Wahrheit. Sie müssten mal neben dem Verbrauchstest auch einen Test der Abgasemissionen machen. Dabei würde dann herauskommen, dass diverse Emissionen deutlich gesunken sind, teilweise eben auch auf Kosten eines höheren Verbrauchs. Und ein zweiter Aspekt ist die Sicherheit, sowohl passiv als auch aktiv. Ein Auto von vor 25 Jahren würde vermutlich nicht einmal einen Stern im heutigen Crashtest bekommen. Vielleicht als ein Vorschlag fürs nächste Video.

Vorweg: Ich mag Schnee sehr gerne. Es verlangsamt das Treiben vieler (weil sie eventuell denken, es ist kurz vor Weihnachten) und ist auch einfach schön anzuschauen.

Gleichzeitig ist es dann aber auch die Zeit von: Hilfe eine Schneeflocke im Straßenverkehr. Damit einher kommt auch die Zeit, in der viele die geringeren Reibwerte spüren und mal merken, dass insgesamt nur knapp die Fläche eines DIN A4 Blattes für den Bodenkontakt zwischen Auto und Straße sorgt. Es ist auch die Zeit der zugefrorenen Radarsensoren und Besitzer, die dann erst merken, dass ihr Auto einen hat. Und die Zeit, in der man merkt, welche Räder angetrieben werden. Immerhin ist es auch die Zeit, in der moderne Systeme wie ein ABS oder ESP häufiger im Einsatz sind und Auffahrwarnungen diverse Unfälle vermeiden können. Immerhin ist es auch die Zeit, in der Autofahrer mal etwas umsichtiger Fahren und man als Radfahrer gesehen wird. Leider ist es aber auch die Zeit der Autofahrer, die sich mit dicker Jacke direkt ins Auto setzen ohne zu Wissen, dass sie dann im Falle eines Unfalls nicht geschützt werden können und das Rückhaltesystem erst einmal die Luft aus der Jacke pressen muss.

Und leider ist es auch die Zeit der Vorurteile. Ein Allrad hilft natürlich beim Beschleunigen, aber quasi alle Autos bremsen über alle vier Räder. Und auch wenn ein Elektroauto weniger Reichweite im Winter hat (wie ein Verbrenner auch), so bietet es die Möglichkeit der Vorkonditionierung. Es ist wirklich sehr schön in ein warmes Auto einzusteigen. Es hilft bei einem Verbrenner leider nur sehr wenig den Motor laufen zu lassen, “damit es warm wird”. Insbesondere, wenn das Auto länger stand ist auch der Motor kalt. Und der muss erst einmal warm werden, bevor er Wärme an den Innenraum abgeben kann. Mal ganz abgesehen, dass dies gesetzlich verboten ist. Zum Abschluss noch, warum ich den Schnee noch mag. Es erlaubt mir (in sicherer Umgebung) die fahrphysikalischen Grenzen meines Autos zu erfahren. Der Allrad war sehr beeindruckend, jetzt wieder mit Heckantrieb dürfte es wieder spaßiger werden. Allen eine gute Fahrt.

Dieser Blog soll es nicht ausschließlich um meine App drehen, auch wenn diese natürlich einen Großteil meiner Zeit aktuell einnimmt. Schon seit vielen Jahren experimentiere ich Zuhause mit einem eigenen Server und eigenen Diensten. Es fing damals an mit einem Pi-Hole gegen Werbung und Tracker.

So ziemlich alles hat ja einen Begriff und vor ein paar Wochen lerne ich, dass sich das unter dem Schlagbegriff “Homelab” zusammenfassen lässt.

Aktuelles Setup

Den Kern meines Homelabs stellt das Netzwerk da, das durch eine UniFi Dream Maschine Pro aufgespannt wird. Dieses ermöglicht mir eine schöne Trennung in einzelne VLANs und stellt auch Funktionen wie ein VPN, Gastnetz und Redundantes Internet sicher. Ganz klassisch übernimmt eine Synology die Rolle des NAS für Speicher und Backups. Im Zentrum des Homelabs steht aktuell ein “alter” Intel NUC8i5BEH, den ich mir einmal für die Simulationen bei meiner Dissertation zusammengestellt und aufgerüstet hatte. Der i5 hat 4 Kerne, 8 Threads und reicht für die meisten Projekt vollkommen aus. Die 64GB RAM sind auch mehr als ausreichend. Als Betriebssystem läuft inzwischen Proxmox und darin diverse VMs, bzw. Container. Ich bin ein sehr großer Fan von Proxmox, da es mir erlaubt diverse Sachen problemlos auszuprobieren, seien es neue VMs oder even leichte Linux Container. Momentan laufen 2x Pi-Hole für Redundantes DNS, das GitLab, ein Plex-Server samt xTeVe für das transcoden des Kabel-TVs, sowie ein Container mit diversen “Admin”-System. Dies ist hauptsächlich ein Nginx Proxy Manager für locales SSL, Homarr als Dashboard (Noch nicht zu sehr in Verwendung) und Uptime Kuma fürs Monitoring diverser Webseiten und Dienste. Letzteres ist wirklich sehr praktisch und einfach einzurichten.

Aktuelle Baustelle

Momentan bin ich noch etwas am Experimentieren, ob ich bei Docker bleibe oder doch wie von einigen empfohlen zu Podman wechsle. Wirkliche Probleme mit Docker hatte ich nicht und auch das “Root”-Problem ist im aktuellen Setup wenig dramatisch. Mit Podman dagegen hatte ich schon ein paar Probleme beim Aufsetzen, die sich wirklich nur durch eine Neuinstallation lösen ließen. Im Homelab bleibe ich daher noch bei Docker.

Kleiner Ausblick

Eine etwas größere VM auf meinem Server ist ein OSM-Server, der es mit erlaubt schneller zu entwickeln, da die öffentlichen OSM-Instanzen verständlicherweise etwas langsam sind. Irgendwann kommt hier aber der NUC an seine Grenzen, sodass ich mich entschieden habe einen neuen Server zu bauen. Dieser soll dann auch die Rolle des NAS übernehmen, da die zwei Festplatten in der Synology langsam knapp wurden. Nach wirklich Wochen der Planung und des hin- und her, habe ich mich für einen Intel-Build entschieden und hoffe in den nächsten Wochen die Erfahrungen hier teilen zu können. Der Ultra 7 265K ist recht spannend, da er kein Hyperthreading mehr hat, sondern wie in den Prozessoren von Apple/ARM auf Performance und Efficiency Kerne setzt. Ich bin gespannt, wie das im Homelab Setup sich auswirkt. Ich plane mit dem OSM-Server dann auch aufwendigere Vorberechnungen lokal machen zu können und somit dann neue Funktionen bereitstellen zu können. Und nebenbei ist es ja auch immer schön zu basteln und zu entdecken. Die ersten Teile sind heute angekommen.

Die App ist im Oktober 2023 live gegangen – also ist es schon etwas über ein Jahr her. Seitdem ist einige Zeit vergangen und ich wollte die Gelegenheit nutzen, das Jahr 2024 Revue passieren zu lassen.

Soft Lauch

Nach einiger Überlegung hatte ich mich dazu entschieden, die App einfach in den AppStore zu stellen und keine große Werbung zu machen. Das erlaubte mir die ersten User etwas näher zu verfolgen und potentielle Fehler schnell zu entdecken. Die App bedient ehrlicherweise eine Nische und kann hauptsächlich über die Suche im AppStore gefunden werden. Umso spannender war zu sehen, wie die ersten Downloads verzeichnet werden. Das verdeutlichte mir, dass ein Interesse an dieser Nische besteht. Als dann auch die ersten User die App freigeschaltet haben, erfüllte es mich mit großem Stolz. Jeden Tag habe ich die Download-Zahlen verfolgt und jeden In-App Kauf innerlich gefeiert. Es ist schön zu sehen, dass die App gut ankommt und dann auch bei so etwas, woran man so lange gearbeitet hat.

Erste Artikel

Nachdem ein paar Wochen vergangen waren, habe ich mich dazu entschieden Blogs anzuschreiben und auf die App aufmerksam zu machen. Ich war sehr überrascht, dass die Artikel direkt am folgenden Tag erschienen sind! Danke dafür! Und es war sehr spannend zu sehen wie die Download-Zahlen durch die Decke gegangen sind. Innerhalb eines Tages haben über Tausend User die App geladen und viele davon auch die App freigeschaltet.

Erstes Feedback

Insbesondere im anonymen Internet kann es durchaus vorkommen, dass man das ungefilterte Feedback bekommt. Gerade am Anfang bin ich sehr intensiv durch die Kommentare in den Blogs gegangen und habe diese fleißig beantwortet. Es war schön zu lesen, dass das allgemeine Feedback sehr positiv war. Insbesondere das Preismodell fand positiven Anklang, liegt vielleicht an den vielen Abos. Weiterhin gab es auch einige Vorschläge und Anregungen für die Weiterentwicklung, die ich mir sehr genau angeschaut habe.

Erste Erweiterungen

Natürlich hatte ich schon einige Ideen für die Weiterentwicklung der App. Wie anfangs geschrieben, war die erste Version ein recht solider MVP. Am Ende des Tages soll die App ja den Usern helfen. Die ersten User Themen waren:

  1. Anzeige behindertengerechter Toiletten
  2. Anzeige der Kosten für die Toiletten
  3. Möglichkeit der Verwendung von alternativen Navigations-Apps

Durch den flexiblen Aufbau der App war es mir möglich, die Themen innerhalb von wenigen Tagen umzusetzen und somit schnell auszuliefern. Und es ist schön zu lesen, wenn diese Funktionen am Ende des Tages jemandem helfen.

Erste größere Updates / Tests

Über die Zeit habe ich natürlich auch die Code-Basis immer wieder angepasst und aktualisiert. Jedoch je mehr User die App hat, desto mehr schaute ich auch drauf, alles einmal komplett zu testen. Jedoch ist dies bei einer App für die Autobahn nicht immer so einfach. Immerhin lässt sich viel simulieren, vor den größeren Updates habe ich aber mindestens einmal selbst eine längere Strecke abgewartet. Zudem bin ich dazu übergegangen neue Funktionen über Feature-Flags mit kleineren Nutzergruppen auszuprobieren.

Migrationen im Laufenden Betrieb

Eine der größeren Aktionen im letzten Jahr war die Migration auf einen komplett neuen Datensatz. Bisher war die Basis der Datensatz vom Bund und darauf aufbauend habe ich mehr Informationen gespeichert. Wie ja bereits berichtet, hatte dieser viele Probleme und lässt sich auch nicht auf andere Länder skalieren. Daher hatte ich mich entschieden, auf eine unabhängige Datenbasis zu wechseln. Jedoch war es nicht ohne Risiko einmal den kompletten Datensatz neu zu erstellen. So war auch hier viel Testen nötig und ich habe viele historische Daten verwendet, um die Suchen mit dem alten und neuen Datensatz miteinander zu vergleichen. Über das Feature-Flag haben danach Stück für Stück immer mehr Nutzer den neuen Datensatz erhalten und ich habe die Ergebnisse mir genau angeschaut. Am Ende war es für die Nutzer zum Glück unsichtbar, für mich selbst aber natürlich sehr aufregend.

Lesson(s) learned

Nach einem guten Jahr gibt es auch eine Lesson Learned, die ich gerne teilen möchte. Insbesondere auch, damit eventuell jemand anderes direkt alle Infos an der Hand hat. Es betrifft die Kommission, die Apple für In-App Purchases einkassiert. Normalerweise sind dies 30%, es gibt jedoch ein Programm für kleinere Unternehmen (unter 1 Mio. Umsatz bei Apple), dann sind es nur noch 15%. Und das macht dann am Ende schon einen Unterschied aus. (Seite bei Apple)

Nächstes Jahr

Es hat mich sehr gefreut die “App des Jahres” bei Appgefahren zu sein (Link). Die Reise für die App hat auch erst begonnen. Natürlich muss ich immer schauen, wie viel Zeit neben dem Job bleibt. Aber es gibt viele weitere Ideen, die App auszubauen, die Daten zu verbessern und noch mehr Nutzer zu erreichen. Ich bin daher sehr gespannt, was die nächsten Wochen und Monate mit sich bringen.

Alles begann mit einer einfachen Frage: Wann kommt das nächste WC? Wir waren zusammen auf der Autobahn unterwegs und so langsam drückte die Blase. Die Frage war nun, wann das nächste WC entlang unserer Autobahn kommt. Über das Navi im Auto konnten wir die nächsten Rastplätze (also mit Restaurant) finden, diese liegen jedoch auch manchmal etwas weit weg. Daher war die Idee geboren, eine einfache App zu bauen, die einem die Distanz und Zeit zum nächsten WC anzeigen kann.

Erste Recherche zu Daten

In einer ersten Recherche zeigte sich, dass noch keine anderen Apps diese Info bereitstellen. Auch die Suche nach WCs in diversen Kartenanwendungen führt nur manchmal zum Erfolg. Spannend ist, dass der Bund eine eigene App für die Autobahnen anbietet. In dieser lassen sich auch Informationen für einzelne Parkplätze aufrufen, unter anderem auch, ob dieser über ein WC verfügt. Dies ist eine sehr vielversprechende Option. Zudem ist die API hinter der Autobahn-App auch unabhängig aufrufbar.

Erste App-Versuche

Jetzt ist also die Frage, wie sich die Daten in einer App verwenden lassen. Dazu brauche ich in erster Linie einen Server, der die Daten aufbereitet und bereitstellt. Als zweite Komponente braucht es eine App, die den Standort des Benutzers erfassen und verarbeiten kann. Kommend eher aus der Backend-Entwicklung war für mich der Ansatz klar (Spoiler-Alert: Und es wird dann anders kommen): Ich verwende die App, um den Standort mittels GPS zu erfassen und an das Backend zu schicken. Dieses gibt dann die Informationen über das nächste WC zurück an die App. Also habe ich eine kleine Web-App geschrieben, die über GPS den Standort mittels 3 Koordinaten bestimmen kann. Screenshot Webapp

Erstes Server-Backend

Fürs Backend wollte ich zum ersten Mal die “Cloud” ausprobieren, da ich mir davon erhofft hatte, besser skalieren zu können. Für Azure gab es eine kostenlose Testversion, sodass ich damit direkt starten konnte. Um nicht zu viele Komponenten verwenden zu müssen, habe ich mich für eine Azure Function entschieden. Diese hat allerdings den Nachteil, dass jedes Mal die gesamte Berechnung laufen musste. Die Funktion erhält dabei die 3 Koordinaten und liefert die nächsten WCs als Ergebnis zurück. Nach einem Hin und Her lief die Berechnung einwandfrei. Allerdings zeigte sich ein anderes Problem: Der Kaltstart der Azure-Funktion. Dies bedeutet, dass das Hochfahren der Cloud eine gewisse Zeit in Anspruch nimmt. Das führt dann dazu, dass insbesondere wenn länger keine Anfragen erfolgt sind, das Ergebnis teilweise 10 Sekunden braucht. Auch nach diversen Optimierungen konnte ich die Zeit nur auf 5 Sekunden reduzieren. Das ist aus Nutzerperspektive wenig optimal.

Neue Architektur

Daher musste die Architektur noch einmal angepasst werden und ich von meiner bisherigen Denkweise abweichen. Die neue Idee war es nun, dass auf dem Server alle Daten vorab berechnet werden und sich die App die Daten lädt, lokal speichert und dann die ganze Berechnung lokal durchführt. Dafür musste natürlich das Backend angepasst werden. Mittlerweile läuft es auf meinem IONOS-Server. Auch die App ist nun in Swift und SwiftUI geschrieben, sodass die lokale Berechnung deutlich effizienter erfolgt. Durch den Cache dauert die Bestimmung des nächsten WCs nun weniger als 1 Sekunde.

Swift / SwiftUI

Swift als Programmiersprache war sehr einfach zu verstehen. Es war für mich schon eine größere Umstellung mit einer Reactive UI zu arbeiten. Aber nach einer gewissen Einarbeitungszeit, habe ich sehr geschätzt, mich nicht um den Zustand kümmern zu müssen (außer in CarPlay, mehr dazu später). Über das Jahr Entwicklungszeit sind die eigenen Ansprüche immer weiter gewachsen, auch beim Vergleich wie andere Apps etwas umsetzen. Immer wenn ich einen neuen Trick in SwiftUI herausgefunden hatte, wollte ich es gleich an allen Stellen umsetzen. Angefangen mit nur einer Startseite und einer Liste der nächsten WCs, umfasst die App jetzt auch eine interaktive Karte mit Slideover, eine Detailansicht, Einstellungen und auch Feedbackfunktionen. Mit dem Release-Stand bin ich wirklich sehr zufrieden und stolz auf meine erste iOS App. Screenshot App

CarPlay

Während wir die App bei unseren Autobahnfahrten ausprobierten, wurde deutlich, dass sie aktuell nur vom Beifahrer verwendet werden darf. Allerdings sind auch viele Personen einzeln unterwegs und hierfür wäre eine Integration in CarPlay notwendig. Da dies nicht automatisch jeder App zur Verfügung steht, musste ich einen Antrag bei Apple einreichen. Dieser Prozess ist allerdings sehr intransparent. Nachdem mehrere Monate keine Antwort kam, füllte ich das Formular erneut aus und stellte parallel eine Anfrage an den Support. Nach ein paar weiteren Wochen habe ich die Freigabe für CarPlay erhalten. Es war sehr spannend zu sehen, dass die Entwicklung für CarPlay sich sehr von SwiftUI unterscheidet. Es fühlt sich wie eine ganz andere Welt an. Nach viel Try-and-Error und diversen Hacks mit der Dokumentation funktioniert die CarPlay-Version der App. Hierbei stehen alle Funktionen zur Verfügung, die fürs Fahren relevant sind.

Screenshot CarPlay

Daten

Wie sich im Laufe der Entwicklung herausstellte, sind die Daten vom Bund eine gute Basis, aber weit davon entfernt, vollständig zu sein. Bei unseren Testfahrten haben wir häufiger festgestellt, dass Rastplätze fehlten oder auch die Information, ob ein Rastplatz ein WC hat fehlerhaft sind. Daher habe ich auch einen Großteil der Zeit damit verbracht, die Daten automatisiert und manuell aufzubereiten. Dies erfolgte mittels Abgleich weiterer Quellen wie Here Maps oder TomTom, da auch dort nicht immer die Angaben korrekt waren. Darüber hinaus habe ich auch eigene Tools entwickelt, um die Daten auf Plausibilität zu prüfen oder auch die Autobahnrichtung automatisch zu bestimmen. Die schlechte Datenlage ist einer der Hauptgründe, warum die Entwicklung der App so viel Zeit in Anspruch genommen hat. Daher seht es mir bitte nach, sollten weiterhin Fehler in den Daten sein. Meldet sie mir gerne, dann kann ich sie korrigieren. Neben den Daten zu WCs enthält der Datensatz inzwischen auch weitere Informationen über einen Rastplatz; ob eine Tankstelle / Lademöglichkeit vorhanden ist und auch ob es sich um einen Rastplatz oder Rasthof (mit Restaurant) handelt.

Weitere Herausforderungen

Wie es bei vielen Entwicklungen vorkommt, bin auch ich im Laufe der Zeit auf weitere spannende Herausforderungen gestoßen. Da wäre zum einen das Problem der Autobahnbaustellen. In den Baustellen ist es nicht möglich die korrekte Fahrdistanz zu bekommen, da das iPhone denkt, dass man sich auf der anderen Fahrbahn befindet. Daher musste ich ein Verfahren entwickeln, um zwischen der Luft- und Fahrdistanz zu wechseln. Dies ist auch ein Herausforderung bei der Bestimmung der Fahrtrichtung. Weiterhin sind Autobahnen wie die A44 spannend, da diese mehrfach unterbrochen ist. Daher habe ich die Unterbrechungen automatisch bestimmt, um korrekt ausgeben zu können, wann das nächste WC kommt. So habe ich in der Zeit vieles über die Deutschen Autobahnen und den Aufbau von Rastplätzen gelernt.

Kosten der App

Kurz möchte ich noch auf das Kostenmodell der App eingehen. Ich habe mich lange damit befasst, welches Modell insgesamt fair wäre. Da mir durch den Betrieb der App und auch die Entwicklung durchaus Kosten entstanden sind und entstehen, war für mich klar, dass ich sie nicht gratis zur Verfügung stellen möchte. Somit blieben noch die Möglichkeiten eines Abos, Einmalkauf oder In-App Kauf. Ich selbst bin kein großer Fan von Abos, insbesondere wenn ich auch nicht garantieren kann, dass regelmäßig große neue Feature entwickelt werden. Bei einem Einmalkauf war meine Befürchtung, dass viele die App gerne vorher ausprobieren wollen und nicht wissen, dass sie Apps zurückgeben können. Somit bleibt noch der einmalige In-App Kauf. Diesen habe ich kombiniert mit einer Anzahl an Freisuchen, bevor der Benutzer oder die Benutzerin eine Freischaltung benötigt. Dies ist aus meiner Sicht sehr fair, um die App ausprobieren zu können.

Abschließende Gedanken

Es war und ist weiterhin eine spannende Herausforderung, diese anfangs einfach erscheinende Frage nach dem nächsten WC auf einer Autobahn. Die App ist jetzt im AppStore, die Entwicklung ist aber nicht beendet. Ich habe viele weitere Ideen für die App, die je nach Zeit umgesetzt werden. Daher ist die App eher als MVP zu sehen und ich freue mich auf eure Rückmeldungen.

Weiterhin möchte ich noch einen großen Dank an gpskoordinaten.de/ richten. Die Seite war super hilfreich bei der Validierung und dem Testen.

Zum Abschluss gilt mein besonderer Dank Allen, die an der Entwicklung mitgewirkt haben; sei es beim Brainstorming, Suchen nach Fehlern oder dem Testen.