Today I launched my first iOS app

Today is the day I launched my first iOS app, and that sentence still feels slightly unreal.

A few days ago, I wrote about falling into a new rabbit hole of building iOS apps (sorry, German only) and why creating iOS apps has been a quiet dream for a long time. Not in a “startup” or “side hustle” sense, but in the idea of building small, delightful tools that live on a device people carry every day. Tools that feel calm, intentional, and finished.

For years, that idea stayed abstract. Even with a few Swift courses during Covid, my skills weren’t enough to deliver on what were probably overly ambitious ideas. And then there also was just everything else, work, family, life.

Today, with coding assistants capable of generating large parts of an app, the entry barrier felt low enough that I decided to try again.


Coding assistants are incredibly good at getting ideas onto the screen, and the generated code is often surprisingly solid. In my experience, it helps if you understand the fundamentals such as software architecture, how user interfaces are composed, and how system permissions work.

I personally believe that understanding your own code is essential. Without that, a codebase quickly becomes overly complex once exceptions and edge cases accumulate. Keeping an app well-structured and efficient still requires human judgment.

But the most important aspect is, that you need to understand the core use-case of your app and really try to focus on that as clearly as possible. Keep away from adding more and more features, just because it’s cheap. This will in the end kill your app.


A lot of this experience was surprisingly fun, at least most of the time. But a few things nearly killed the project.

Widgets for example look simple, but they are not. Once they become interactive, they are essentially small apps with their own constraints.

Making them work reliably meant sharing core logic and data with the main app, without corrupting the database along the way. It took time to understand that properly, and I also realized why many apps simply don’t offer widgets at all.

Another beast is notifications. Getting notifications to show up is easy. Getting them to be reliable is not, at least if you don’t want to run servers to manage notifications for users, which I don’t.

In particular, badge counts turned out to be more subtle than expected. After several evenings of trial and error, the final solution felt obvious in hindsight, which is usually a sign that the learning actually stuck.

And then there was the whole Apple developer experience. App Store Connect, at least to me, feels like a CRM from the 90s. It’s easy to get lost in its many sections, nested views, and hidden requirements. Adding in-app purchases, even when they are purely voluntary donations, comes with a surprising amount of bureaucracy.

The App Store review process itself also requires patience. Reviews take time, and feedback can be very detailed. That said, Apple clearly takes this responsibility seriously. I genuinely appreciate that. The strict review process enforces a minimum level of quality across the platform.

This becomes especially noticeable when working with Apple Health. If you want to read or write Health data, Apple is extremely precise about user flows, wording, and disclosure. Every screen, every explanation, every sentence matters.

This all can be exhausting, but it also explains why the platform works the way it does.

Bottom line

Putting something together that just works is easy. Putting something together that works reliably across edge cases and offers a good experience throughout the core use cases is hard work.

In that sense, it does help to be a perfectionist, at least about the things that matter. And that difference mattered more than I expected.

Der Tiger (1/5)

Das Poster für den Film "Der Tiger" zeigt fünf Kriegsgefangene, die sich in militärischer Kleidung um einen Panzer gruppieren, während im Hintergrund eine zerstörte Stadtlandschaft zu sehen ist. Der Titel des Films steht dominant in großen Buchstaben oben auf dem Poster.

Von allen Filmen, in denen vermeintliche Helden an der Front irgendwen suchen und retten müssen, ist Der Tiger (1/5) mit Abstand der dümmste. Auch, aber nicht nur, weil Panzer bekanntlich nicht gerade leise sind und viel Diesel für eine mickrige Reichweite brauchen.

Am Anfang ist zumindest noch etwas Spannung da, aber dann driftet der Film komplett in eine merkwürdige Richtung ab. Spätestens beim Ende wird dann klar, das hier irgendwer gewillt war, ein deutsches Apocalypse Now abzuliefern. Das ist wirklich krachend gescheitert.

Apple-App-Store-Review-Hölle

Ein Update aus der Apple-App-Store-Review-Hölle: Du musst Nutzer:innen erklären, warum im nächsten Screen die Apple-Health-Abfrage kommt. Du darfst sie aber nicht bitten, diese zu erlauben.

Aufgeräumtes Zuhause

Felix hat vor kurzem dazu aufgerufen, das man sich ein Zuhause im Netz baut. Mein Blog ist im Grunde schon seit 2002 mein Zuhause, auch wenn es viele Jahre gab in denen es brach lag und ich mehr als einmal mit dem Gedanken gespielt habe, es endgültig zu löschen. Zum Glück habe ich diese Entscheidung immer ausgesessen, auch wenn ich in der Vergangenheit nicht immer so egal unterwegs war.

So wie bei Felix und vielen anderen auch, ist meine Webseite mein kleiner Hobbykeller im Internet, oder anders gesagt, eine einzige Dauerbaustelle. Man schraubt hier, man optimiert da und so gedeiht alles vor sich hin.

Heute, während ich kränkelnd auf der Couch saß und mich frage, was die nächste belanglose Ablenkung auf Netflix sein kann, die einfach nur leise durch mein von Ibuprofen vernebeltes Hirn rieselt, habe ich mit etwas Abscheu auf eben jenen Hobbykeller geschaut. Im Second-Screen, wie man das eben heute so macht.

Ein überladener Tisch mit Stapeln von Magazinen und Zeitschriften, darunter Comics und ältere Ausgaben von Playboy. Verschiedene Sammelgegenstände wie Geschirr und Küchenutensilien stehen im Hintergrund.
Symbolbild Rumpelkammer (Foto: Mr. Brown, Unsplash)

Dann kam die Erkenntnis: Mein Hobbykeller ist eine Rumpelkammer. Vollgestellt bis unter die Decke mit nutzlosem Zeug, das vermutlich niemand jemals braucht, mir aber wichtig genug erschien es irgendwann mal in den Raum zu stellen. Alles ruft laut hier, und schenk mir Aufmerksamkeit.

Klassischer Feature Creep. Vermutlich die größte Gefahr von Vibe-Coding. Man kann sich ja ganz einfach alles bauen lassen, was man sich so einbildet. Sehr verlockend, aber am Ende zerstört man damit nicht nur das Produkt sondern verliert auch seine User.


Flucht nach vorne, damit muss jetzt Schluss sein. Das Theme ist jetzt dramatisch entschlackt und verzichtet auf säntliche Spielerein. Im nächsten Schritt sind dann radikal alle selbstgeschraubten Skripte und auch die Fotogalerie rausgeflogen. Damit steht ab jetzt der eigentliche Inhalt im Vordergrund und das ganze technische Gedöns und Gerümpel steht, versteckt vor dem Blick des geneigten Besuchers in der Abstellkammer. Das fühlt sich herrlich aufgeräumt und befreiend an.

Sieben Fischköpfe liegen auf einem weißen Untergrund, einige in verschiedenen Größen und leicht unterschiedlichen Winkeln angeordnet. Die Köpfe haben eine glänzende, silbrige Oberfläche mit charakteristischen Augen und Kiemen.
Symbolbild alles ordentlich aufgeräumt (Foto: Gunnar Ridderström, Unsplash)

In diesem Sinne: Baut euer Eigenheim im Netz, aber räumt von Zeit zu Zeit auch mal auf.

Mac aufräumen mit Pearcleaner #stuffthatworks

Ich habe im Laufe der Jahre mehr “Aufräumtools” für meinen Mac gekauft, als ich zugeben möchte. Alle diese Tools eint, das sie auf hübschen Webseiten mit großen Versprechen und einem meist erschreckend hohen Preisschild angeboten werden. Kurz nach dem Kauf hat sich dann aber schon Ernüchterung eingestellt, mal wieder auf Marketingversprechen und Empfehlungswebsites hereingefallen zu sein. Und kurz darauf hat die Suche nach einem neuen Mac-Cleaner begonnen.

Seit ein paar Monaten habe ich diesen Teufelskreis dank Pearcleaner endgültig durchbrochen. Dieses kostenlose Open-Source-Tool liefert genau das, was kommerzielle Lösungen in der Regel nur versprechen: Apps werden nicht nur gelöscht, sondern wirklich entfernt, inklusive aller Einstellungen, Caches, alter Support-Dateien und verwaister Reste längst deinstallierter Programme. Dinge, von denen man meist gar nicht weiß, dass sie noch existieren.

Das Bild zeigt eine Benutzeroberfläche eines Dateimanagers mit einer Suchleiste oben. Auf der linken Seite sind verschiedene Ordner und Anwendungen aufgelistet, während auf der rechten Seite eine Liste von Dateien mit dem Namen "Reeder" und anderen dazugehörigen Elementen angezeigt wird.

Garniert wird das Ganze von einem Sentinel-Monitor der Apps automatisch sauber entfernt, sobald sie im Papierkorb landen. Der Ressourcenverbrauch ist dabei so gering, dass man ihn praktisch vergessen kann.

Als Bonus lassen sich ungenutzte Sprachpakete und unnötige Architekturen aus Universal-Apps entfernen, das spart auf meinem Mac regelmäßig mehrere Gigabyte. Mein Xcode konnte ich so beispielsweise um satte 3,4 GB schmaler machen. Und ein grafisches Frontend for Brew gibt es auch noch oben drauf.

Die Benutzeroberfläche des Homebrew-Managers zeigt eine Liste installierter Anwendungen wie Firefox und Visual Studio Code. Jede Anwendung hat Größenangaben und Schaltflächen zum Deinstallieren.

Pearcleaner ersetzt für mich eine ganze Kategorie meist kostenpflichtiger Tools. Es ist unaufgeregt, robust und tut genau das, was es soll, und bekommt an dieser Stelle meine ausdrückliche Empfehlung.

Ein kurzes Winken aus dem Kaninchenbau

Der eine oder andere wird sich vielleicht fragen, warum hier aktuell relativ wenig neue Artikel erscheinen. Ich finde das gar nicht so ungewöhnlich, immerhin habe ich keinen Urlaub mehr, und die wenige freie Zeit muss für Freunde, Familie und meine viel zu vielen Projekte und Hobbys reichen. Und da ich mir keinen Druck mache, hier etwas aufschreiben zu müssen, gibt es hier aktuell halt weniger zu lesen.

Ein weiterer Grund ist, dass ich mal wieder in einen neuen Kaninchenbau gestolpert bin und angefangen habe, meine eigenen iOS-Apps zu schreiben. Das macht dermaßen viel Spaß und ich ärgere mich, dass ich nicht schon viel früher damit angefangen habe. Irgendwas programmiert habe ich ja eigentlich schon immer, angefangen mit ersten Batch-Skripten als Jugendlicher und Turbo Pascal in der Schule, später Visual Basic, Java und auch PHP, letzteres vor allem für die Automatisierung meines Zuhauses. Aber iOS-Entwicklung war irgendwie immer eine Nummer zu groß für mich.

Während der Pandemie hatte ich schon mal einen Anlauf genommen und mir einige Swift-Kurse reingezogen. Das war zäh, und etwas Vorzeigbares ist nie daraus entstanden, vermutlich auch, weil meine Ideen viel zu groß waren und ich realisiert habe, dass ich mit meinen Fähigkeiten Monate, vielleicht sogar Jahre bräuchte, um sie zu realisieren. Diese Geduld hatte ich damals nicht.

Jetzt, ein paar Jahre später, passt plötzlich alles zusammen:

  • Viele Jahre, in denen ich beruflich Verantwortung für Softwareprodukte hatte und sehr viel darüber gelernt habe, das vor allem die fehlende Vision und das fehlende Verständnis über den Anwender, neben einem klaren Nein zu noch mehr Features ein Produkt zerstören.
  • Mein generelles Verständnis über Softwareentwicklung und meine rudimentären Swift-Grundlagen von damals.
  • Ausgereiftere Entwicklungstools die einem mittlerweile schon von Haus aus sehr viel abnehmen.
  • Und ja, natürlich auch Coding-Assistenten, die nicht nur beim Boilerplate und Standard-Patterns helfen, sondern auch wirklich gut Dinge automatisiert umsetzen können, von denen man selbst keine Ahnung hat und dann nur staunend daneben sitzt.

Das auch andere von dieser Entwicklung profitieren, sieht man an der Schwemme von Apps und Services die gerade auf den Markt geworfen werden. Leuten, die sehr schnell sehr viel Code erzeugen können, aber wenig Gefühl dafür haben, ob das Ergebnis wirklich gut ist. Diese Apps sind oft ungetestet, fragil und mit dem alleinigen Ziel der schnellen Monetarisierung gebaut. Im besten Fall kosten sie dem Anwender nur etwas Lehrgeld und erzeugen Frust, im schlimmsten Fall sind sie echte Datenschutzrisiken.

Die reine technische Funktion wird damit zur Commodity, aber es reicht nicht mehr, dass eine App “einfach nur funktioniert”. Ich behaupte, das Menschen in Zukunft nicht mehr für Features an sich bezahlen, sondern für Vertrauen, Datensicherheit und eine herausragende User Experience. In einer Welt voller generischer Massenware wird die persönliche Handschrift und die Sorgfalt zum eigentlichen Wettbewerbsvorteil.

Sanus per Aquam

Seit einiger Zeit gönnen wir uns 2-3 mal im Jahr ein sogenanntes Wellness-Wochenende. Zwischen dem Check-in am Freitagnachmittag und dem Check-out am Sonntag wird das Hotel in aller Regel nicht verlassen und für 2 Tage reduziert sich der Tagesablauf auf den steten Wechsel zwischen Sauna, Pool, Essen und Schlafen.

Noch vor gar nicht so langer Zeit habe ich sehr vehement gesagt, dass ich zum Entspannen nicht einfach nur nichts machen kann, sondern auch aktive Bewegung an der frischen Luft, am liebsten in Form von Wandern oder Mountainbiken brauche. Weihnachten 2023 auf Fuerteventura hat mir dann die Augen geöffnet, wie entspannend es sein kann, wenn man sich einfach mal auf das fokussiert, was direkt vor der eigenen Nase ist und das aktive Verpassen von Möglichkeiten zum Programm macht.

Na ja, dieses Wochenende war jedenfalls aktives Nichtstun und das Verpassen von Möglichkeiten angesagt. Das war schon alles sehr toll nur habe ich das Gefühl, das es mindestens doppelt so lang hätte sein müssen, um das übliche Entspannungsniveau zu erreichen. Dass ich so früh im Jahr den Wunsch nach so viel Entspannung verspüre, macht mir etwas Sorge.

Zwei Menschen liegen entspannt auf einer Decke. Im Hintergrund ist ein heller Raum mit großen Fenstern, Pflanzen und einer gemütlichen Sitzgelegenheit zu sehen.

Ein moderner Wellnessbereich mit einem kleinen Pool, umgeben von Steinwänden und beleuchtet mit sanftem, violettem Licht. Im Vordergrund sind Liegen mit grauen Decken und ein Tisch mit einer Lampe zu sehen.

Das frühere Internet-Ich

In meinem Feiertagsurlaub habe ich nicht nur mein Blog umgezogen, sondern auch an einer Automatisierungslösung geschraubt, die mittlerweile ziemlich zuverlässig funktioniert. Dann kam mir dann noch der Gedanke, das es doch clever wäre, neue Artikel auch automatisch in die Wayback-Machine zu übertragen. Und wie ich feststellen musste, war das auch relativ einfach erledigt.

Ich muss dabei ehrlich gesagt über mich selbst lachen. Noch vor ein paar Jahren habe ich meine damalige Domain radikal aus archive.org gelöscht und die Indexierung anschließend blockiert. Das finde ich heute sehr betrüblich, zumal ich nicht einmal mehr weiß, warum ich damals so vehement gegen eine Archivierung war.

Und während ich so durch die Wayback-Machine klicke, habe ich dann etwas überraschend doch noch ein altes Blog von mir gefunden. Nicht mein allererstes, das lief ab 1999, auf Blogger. Dort habe ich hauptsächlich Tech-News aufgeschrieben, ähnlich wie René und Caschy das damals und mit beachtlicher Ausdauer auch heute noch machen. Dieses Blog ist wirklich gelöscht. Und da wäre auch nichts gewesen, was man heute noch herzeigen müsste. Nichts ist irrelevanter, wie News von vorgestern.

Aber es gab eine Domain, die ich damals als persönliche Visitenkarte registriert und auch mit Posterous und später Tumblr verbunden hatte. Die wenigen, von diesem Blog archivierten Seiten, hielten ein paar interessante Fundstücke bereit, mit deren Hilfe ich ein paar Ereignisse zeitlich genauer einordnen konnte.

Zum Beispiel weiß ich jetzt definitiv, wann ich meinen Facebook-Account gelöscht habe, den ich irgendwann in 2007 registriert habe. Ich habe ja immer gescherzt, dass ich Facebook verlassen habe als mein Vater sich dort registriert hat. Das war vielleicht provokativ und hat Leute zum Lachen gebracht, hat aber nicht der Realität entsprochen. Meines Wissens hat mein Vater nie einen Facebook-Account besessen. Jedenfalls habe ich am 2. Oktober 2011 meinen Facebook Account zuerst stillgelegt und dann am 13. Januar 2012 final gelöscht und seitdem auch nie wieder zurückgeschaut.

Außerdem ich weiß jetzt, das ich am 2. Januar 2012 von Android auf Windows Phone umgestiegen bin. Ehrlich gesagt finde ich die Kachel-Oberfläche von Windows Phone auch heute noch ein erfrischend spannendes UX-Konzept, das aus meiner Sicht viel zu früh wieder gehen musste. Hier ist mein damaliger wunderbar blauer Home-Screen.

Ein schwarzes Smartphone mit einem blauen Startbildschirm, der Apps wie Telefon, Nachrichten, Google Mail und Internet Explorer anzeigt. Die Uhrzeit ist 11:25 und es gibt ein Wetterwidget mit einer Sonnensymbolik.
Mein früherer Home-Screen meines geliebten Windows Phones

Und ich habe im Dezember 2009 schon mal etwas über meinen Nerd-Vater geschrieben. Damals komplett aus der Erinnerung und nicht ansatzweise so gut recherchiert wie mein aktueller Versuch, in dem ich nicht nur meinen Vater, sondern auch andere DDR-Bastler befragt habe, um das Thema inhaltlich korrekt zu beleuchten.

Was mir beim Lesen meiner alten Posts auf jeden Fall auffällt ist, das ich früher alle möglichen Ereignisse im Internet kommentiert habe. Ich war ja schon immer recht meinungsstark und habe damals meine Meinung halt auch im Netz dokumentiert. Dieses Verlangen zu allem etwas sagen zu müssen, hat irgendwie nachgelassen. Vermutlich ist das diese im Alter einsetzende Milde. Ich bin weder Politiker noch Lehrer und verspüre auch nicht den Drang, mich zu benehmen als müsste ich andere Menschen mit meiner Meinung beglücken oder sie ständig belehren.

Ich schreibe heute persönlicher und lasse mir beim Schreiben auch mehr Zeit. Ja ich weiß, es gibt Verfechter die sagen, das ein Blog nicht perfekt sein muss, aber ein Artikel in meinem Blog, unter den ich meinen Namen setze, der muss schon Hand und Fuß haben. Und leider bin ich Perfektionist und kann das nur unschwer ablegen. Das heißt, für einen solchen Artikel hier, brauche ich schon mal einen Tag und manchmal auch drei. In diesem konkreten Fall hier hat der Entwurf sogar seit dem 5. Januar darauf gewartet, das ich auf veröffentlichen drücke.