Mc Cordova

Eigentlich wollte ich den Post mit „Mc Docker“ betiteln, aber tatsächlich läuft Docker auf meinem iMac Mini nicht. Was aber daran liegt, dass der iMac Mini verdammt alt ist und nur macOS 10.12 als Betriebssystem hat. Wenn ich nicht ganz falsch liege, verträgt der auch gar kein Update auf eine neuere Version von macOS. Und Docker braucht mindestens die Version 10.13. Was nach nicht Viel klingt, aber wohl entscheidend ist. Aber das trifft auch auf andere Software zu, wie ich gerade beim Versuch des Installierens eines Screenshot-Programms bemerkt habe. Für diverse neue Apple-Programme benötigt es wohl diese Version 10.13 als untere Grenze und da kann ich den iMac Mini anscheinend nicht mehr drüber hiefen. Was nicht schlimm ist, denn außer für die Remoteproben mit meiner Band über JamKazam benutze ich den iMac Mini sowieso nicht. Maximal für die Erstellung von iOS-Apps, wenn es dessen außnahmsweise mal wieder bedarf.

Cordova

Und Cordova hat sich ohne Probleme installieren lassen und läuft „Out-of-the-box“. Bis hin Aktualisieren mit npm und dem Start der App im Simulator geht das wie ein heißes Messer durch die Butter. Damit ist von Seiten der Infrastruktur alles vorbereitet für die kommende Vorlesung zu Cordova im kommenden Sommersemster an der TH Bingen – sofern ich da überhaupt auf den Mac wechseln muss. Auf meinem Linux-Rechner geht Cordova sowieso und unter Windows kann ich mit Visual Studio 2017 oder dem von mir angepassten Docker-Image in meinen Linux-VMs auch gut arbeiten. Also sind auch da alle Voraussetzungen geschaffen.

Wobei gestern die Installation von Docker auf meinem uralten Terra-Notebook mit Windows 10 Pro sogar funktioniert hat und auch das Cordova-Image im zweiten Anlauf installiert und dann sauber gestartet wurde. Heute morgen wollte ich dann frohgemut das Docker-Image anpassen, aber ich hatte nach dem Start von dem Terra-Notebook die gleichen Fehler, die ich schon auf meiner Workstation mit Windows 10 Pro bzw. meinem Mate-Notebook mit Windows 10 Home hatte. Aber interessanter Weise hat auf dem Terra-Notebook der Neustart von Rechner und Docker das Problem beseitigt und ich konnte das Cordova-Image starten und umkonfigurieren. Das ist schon alles sehr rätselhaft.

Vorteile und Graus der Virtualisierung – Docker & Co

Cordova

Da ich für das kommende Sommersemester an der Technischen Hochschule Bingen wieder einen Lehrauftrag zum Thema Cordova und plattformneutrale App-Entwicklung angenommen und gerade Zeit für die Vorbereitung habe, habe ich die letzten Tage in den aktuellen Stand von Cordova reingeschaut und meine alten Projekte und Matrialien zusammengetragen. Ich hatte dieses Thema eine ganze Weile schleifen lassen, da Python, Big Data, Web-Programmierung, Cobol, C# & „Was auch sonst immer“ die Arbeit in eine andere Richtung gelenkt hatten.

Die meisten Dinge, die ich die vergangenen Jahre zusammengestellt und programmiert habe, sind jedoch noch weitgehend auf Stand. Allerdings haben sich auch durchaus Sachen geändert. Daher bedarf die neue Vorlesung einiger Vorbereitung und eine Anpassung.

Zudem habe ich auch ganz einfach Lust, meine ganzen Apps zu aktualisieren. Parallel will ich aus einigen Apps  Python-Programme machen. Ohne konkrete Ziele, aber vielleicht kommen mir dabei ein paar neue Ideen und ich lerne natürlich was dazu – auch wenn das im Grunde aktuell ein reines Programmieren aufgrund von Zeit und Lust darstellt.

Anyway – bei Cordova gibt es ein paar Sachen, die mich schon stutzig gemacht und zu einigen Arbeiten im Hintergrund sowie grundsätzlichen Überlegungen genötigt haben. Das reine Installieren der neuen Version von Cordova mit npm geht wie gehabt und das Erstellen von Cordova-Projekten in dem Cordova-CLI auch. Ebenso das Hinzufügen der verschiedenen Plattformen und das Ausführen in dem Browser-Emulator ist unverändert. Die eigentlichen Quellcodes auf Basis von JavaScript & Co sowieso.

Aber wenn man etwa beim konkreten Kompilieren Android als Plattform für die Cordova-Apps haben will, wird das JDK 8 vorausgesetzt. Im Moment ist aber schon das JDK 15 aktuell und damit funktioniert es nicht. Zumindest bekomme ich es im Moment nicht hin, mit der derzeit aktuellen Java-Version Android-Apps zu erstellen. Ehrlich gesagt ist mir nicht einmal klar, ob das an Android (da soll ja Java auch sukzessive abgelöst werden) oder Cordova liegt. Wie angedeutet, habe ich die App-Entwicklung eine Weile aus den Augen verloren.

Und dann hatte ich das Android Studio bzw. das Android SDK als auch Xcode komplett von meinen Rechnern gelöscht, da ich eben das Entwickeln für Android und iOS die letzte Zeit nicht gebraucht hatte. Zumal ich mich sowieso auch dabei auf das Visual Studio committed hatte. Dabei kann man ja wunderbar auch Android- bzw. iOS-Apps erstellen.

Aber um die verschiedenen Möglichkeiten im Vorfeld der Vorlesung mal wieder auszutesten, werde ich auf meinem Mac vermutlich Xcode neu installieren (wenn ich die Sache mit meiner Apple-ID geklärt habe – die habe ich auslaufen lassen) und das Android Studio habe ich mittlerweile wieder neu installiert.

Aber irgendwie hat es bei meinem ersten naiven Versuch nicht funktioniert, damit Cordova-Projekte zu öffnen – oder besser –  zum Laufen zu bringen. Irgendwie mag ich das Android Studio aber auch nicht wirklich. Ich sollte der Sache zwar auf den Grund gehen, aber ich werde ja sowieso Visual Studio nehmen.

Wobei es da auch ein seltsames Problem gibt. In Visual Studio 2019 ist die Erweiterung für Cordova nicht mehr dabei und damit kann man weder Cordova-Projekte anlegen noch vorhandene Cordova-Projekte öffnen. Also musste ich die schon gelöschte Version 2017 von Visual Studio mit der Cordova-Erweiterung wieder auf meine Rechner aufspielen. Damit geht aber alles wunderbar und ich habe mittlerweile diverse Cordova-Apps erstellt, aus Visual Studio in verschiedenen Emulatoren sowie per USB-Debugging sogar direkt auf mehreren Geräten ausgeführt. Auch die Installation auf ein paar Testgeräten funktioniert problemlos. Seltsam sind die Begleiterscheinungen jedoch schon und ich bin nicht sicher, ob Cordova noch lange auf dem Markt bleibt. Was Cordova aber nicht als gute Basis für die kommende Vorlesung diskreditiert, um grundsätzlich die Erstellung von plattformneutralen Apps auf Basis von Webtechnologien zu lernen. Denn im Umfeld von Xamarin sind die gleichen Bedingungen/Probleme vorzufinden. Die Frage ist also wohl eher, ob Apps auf Basis von Webtechnologien sich auf Dauer etablieren oder nicht?

Wie dem auch sei – ich habe eigentlich keine Lust, das alte JDK 8 auf meine Rechner zu installieren und auch nicht die ganzen Emulatoren und SDKs von Android Studio auf Teufel komm raus zu konfigurieren. Entweder es geht „out-of-the-box“ wie bei Visual Studio 2017 oder die Sache kann mir im Grunde gestohlen bleiben. Es geht mir um die eigentlich Programmierung innerhalb des Cordova-Wrappers mit JavaScript und HTML/CSS und nicht um das Geraffel rundherum. Das hat mich schon immer an der App-Programmierung genervt.

Und da kam ich auf die Idee, eine andere Sache mal wieder aufzugreifen, die ich vor einigen Monaten angefangen, dann aber wegen anderer Dinge – wie so oft – beiseite gelegt habe: Docker.

Warum nicht einfach ein gut konfiguriertes Docker-Image für Cordova laden und dann ohne das ganze Installieren und Konfigurieren die Apps bauen? Das war meine Idee. Sollte doch einfach sein.

Und wie immer, wenn etwas auf den ersten Blick so einfach und logisch aussieht, steckt der Teufel im Detail. Genau genommen sind es in dem Fall sogar gleich mehrere Teufel gewesen.

Denn obwohl ich mich schon mit Docker beschäftigt und auch schon Images bzw. Container zum Laufen gebracht hatte, habe ich das Zeug zwischenzeitlich wieder von meinen Rechner gelöscht gehabt. Also musste ich Docker erst einmal „schnell“ installieren. Was (natürlich) wieder gar nicht schnell war und letztendlich sogar auf meinen Windows-Rechnern gescheitert ist. Weder unter Windows 10 Pro noch unter Windows 10 Home ist Docker bei mir richtig gelaufen. Natürlich kam ich bei den Problemen mit Windows 10 Pro sofort auf Hyper-V und diesen ganzen Virtualisierungs-Kram im Hintergrund von Windows, denn damit habe ich schon seit Jahren Ärger im Zusammenspiel mit VirtualBox und dem VMWare Player. Und auch wenn der VMWare Player ab der Version 16 wohl mit dem Hyper-V-Geraffel kann und auch Docker in Windows 10 Pro irgendwas mit Hyper-V macht und ich die Anleitungen für die ganzen Einstellungen umgesetzt habe, hat das Zeug irgendwelche Probleme mit den Rechten. Dazu kommt – bei Windows 10 Home gibt es ja kein Hyper-V und da muss man dann andere Sachen konfigurieren bzw. installieren. Alles doch ein elendes Gefuddel, was ich ja ausdrücklich vermeiden wollte und ich habe nach diversen Versuchen die Lust verloren.

Also auf meinen Linux-Rechner gewechselt, auf dem Docker erwartungsgemäß problemlos läuft. Zwischenzeitlich war ich auch in Eppstein und habe Docker mal auf meinem iMac getestet – auch keine Probleme. Also Docker sollte doch ein lohnenswerter Ansatz sein.

Aber dann bin ich auf das nächste blöde Problem gestoßen, erst einmal ein geeignetes Cordova-Image für Docker zu finden. Auf Git gibt es da was, aber der Git-Zugriff scheitert durch Rechteprobleme. Das Image scheint entweder gesperrt oder verschoben worden zu sein. Dann habe ich noch eine Anleitung gefunden, wie ich mir selbst ein Cordova-Image erstellen kann, aber das ist ja das Gegenteil von dem, was ich eigentlich wollte – keine Arbeit mit der blöden Konfiguration. Letztendlich habe ich nur ein Docker-Image gefunden, dass (angeblich) mit einem einfache Pull vom Docker Hub zu installieren wäre. Also so (vermutlich als root notwendig):

sudo docker pull beevelop/cordova:latest

Das Starten des Image soll dann einfach so funktionieren:

sudo docker run -it beevelop/cordova bash

Unter Windows habe ich wie gesagt Docker nicht stabil zum Laufen gebracht und das Image wurde angeblich nicht gefunden. Beim iMac muss ich es noch probieren, aber auf meinem Linux-Rechner ging der Pull einwandfrei. Bis 98% durch waren. Dann kam reproduzierbar immer wieder der Abbruch.

Mittlerweile war es Krieg – die Technik gegen mich. Oder umgekehrt. Und wenn etwas einfach nicht laufen will, werde ich zum Berserker. Auch wenn im Grunde alles Notwendige zur Vorlesung über Cordova mit Visual Studio bereit gestanden hat – ich lasse mich doch nicht von so einem Mist in die Knie zwingen.

Mein Mint Linux-Rechner ist noch in der Version 19 und das System wollte ich auch nicht verpfuschen. Von daher kam mir die Idee, meine Linux-VM (Mint Linux 20) unter Windows 10 zu verwenden. Nur konnte die plötzlich auf meiner Workstation mit VirtualBox nicht mehr gestartet werden und auch die Installation einer neuen Linux-VM ist gescheitert. Möglicherweise aufgrund der Hyper-V-Einstellungen und dem Kram, aber ich hatte einfach keinen Bock mehr auf das Gefummel. Also eine neue Version von VMWare-Player aufgespielt, dort eine Version von Mint-Linux 20 installiert und da ging dann der Pull des Docker-Images. Ohne Probleme. Wenn man „Von hinten durch das Auge“ wortwörtlich haben will, ist das diese Konstruktion – eine Virtualisierung in einer Virtualisierung.

Wer aber jetzt glaubt, die Sache wäre vorbei, täuscht sich. Denn in dem Cordova-Image war kein passendes JDK 8 dabei. Die Erstellung eines Cordova-Projekts ging damit problemlos, aber das geht ja auch in meiner normalen Cordova-CLI und damit bringt mich ein Docker-Image keinen Millimeter weiter.  Als ich eine Android-App kompilieren wollte, war war auch im Docker-Container Schicht im Schacht.

Aber es war mittlerweile schon lange persönlich und jetzt wollte ich es durchziehen. Also in dem Docker-Container das JDK 8 nachinstalliert. Das geht so:

apt-get update && apt-get install -y openjdk-8-jdk && apt-get install -y ant && apt-get install -y gradle && apt-get clean

Unter Umständen tut ein Update der Zertifikate noch gut (bei mir nicht notwendig gewesen):

apt-get update && apt-get install ca-certificates-java && apt-get clean && update-ca-certificates -f

Und letztendlich müssen u.U. die Umgebungsvariablen gesetzt werden (bei mir auch nicht mehr notwendig gewesen):

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/

oder

set JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/

und dann:

export JAVA_HOME

Danach konnte ich endlich eine Android-App im Docker-Container kompilieren. Nur sind Docker-Systeme ja flüchtig und wenn der Docker-Container beendet wird, sind alle Änderungen samt der gespeicherten Daten weg. Also waren Snapshots des aktuellen Stands notwendig. Das geht aus einem zweiten Terminal heraus etwa so:

sudo docker commit -p 532a5b3584e8 container1

Dabei braucht man die ID oder den Namen des Docker-Containers.Bekommt man so:

sudo docker ps

Dann bekommt man was der Art angezeigt:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
532a5b3584e8 container1 „bash“ 19 minutes ago Up 19 minutes eloquent_liskov

Und dann muss die kompilierte App ja auch noch raus aus dem Docker-Container oder man muss was reinkopieren. Also stellte sich die Frage, wie man aus einem zweiten Terminal aus dem Clientsystem auf den Host rauskopiert oder umgekehrt? Das geht formal so (wieder mit sudo):

docker cp <SRC> <DEST>

Also konkret was der Art (in den Container):

sudo docker cp /home/ralph/Schreibtisch/www eloquent_liskov:/tmp/HalloWelt
sudo docker cp /home/ralph/Schreibtisch/rjsedv.jks eloquent_liskov:/tmp/HalloWelt
sudo docker cp /home/ralph/Schreibtisch/build.json 532a5b3584e8:/tmp/HalloWelt

Aus dem Container auf den Host geht für die generierte Android-App etwa so:

sudo docker cp eloquent_liskov:/tmp/HalloWelt/platforms/android/app/build/outputs/apk/debug/app-debug.apk /home/ralph/Schreibtisch

Die späteren Neustarts der Snapshots zeigten, dass noch (weitgehend) alle Daten waren und jetzt schien alles ok.

Pustekuchen. Denn auf meinem Notebook mit Windows 10 Home konnte der VMWare-Player die virtuelle Maschine nicht starten, die ich auf der Workstation erstellt hatte. Und ist auch beim Neuinstallieren eines Linux-Systems gescheitert. Irgendwas mit der Anzeige ging schief. Warum auch immer.

Also habe ich auf dem Notebook VirtualBox genommen, denn das ist dann dort im Gegensatz zum VMWare Player auch mit Linux als Clientsystem sauber gelaufen. In der damit erzeugten VM für Mint-Linux 20 das ganze Zeug mit Docker nochmal gemacht und das hat dann auch funktioniert.

Letztendlich hat das „Mal schnell“ zu gut einem vollen Tag Arbeit geführt, aber ungelöste Probleme lassen mir keine Ruhe und ich habe dabei vor allen Dingen wieder eine Menge gelernt. Vielleicht kann ich das neue Wissen ja nochmal brauchen.

 

Update: Irgendwann habe ich dann festgestellt, dass das Docker-Cordova-Image die Cordova-Version 9 verwendet hat und mittlerweile die Version 10 aktuell ist. Was im Grunde nicht schlimm ist, aber so kann man das dann im Container noch aktualisieren:

npm i -g cordova to update

 

 

Nummer 4 lebt

Damit ist der letzte Teil der Saga draußen. Mit dem Videotraining App-Entwicklung mit iOS Grundkurs 4: Die Anwendungsarchitektur – Lebenszyklus einer Anwendung, Konzepte, anwendungsübergreifende und spezifische Ereignisse ist mein Zyklus an Trainings für Video2Brain rund die Entwicklung von Apps für iOS erst einmal abschlossen. Das waren ja alles Adaptionen von US-Vorlagen.
Der vierte Teil der Grundkursreihe stellt zunächst den Lebenszyklus einer iOS-Anwendung dar. Danach dreht sich alles um Konzepte in Aktion: Dazu sehen Sie, wie Sie anwendungsübergreifende Ereignisse überwachen und spezifische Ereignisse anzeigen lassen können. Weitere Themen sind das Debugging einer Sichthierarchie mittels des Debuggers in XCode, mit dessen Hilfe Sie Fehler in Ihrem Code schnell und einfach beheben können.

Das geht ja wie beim Bretzelbacken

Da wurde doch vor wenigen Tagen erst mein letztes Videotraining „App-Entwicklung mit iOS Grundkurs 2: Das User Interface“ veröffentlicht, da kommt schon der 3. Teil des Grundkurses hinterher. Video2Brain schafft die Produktion ja in einem rasanten Tempo. Es sind zwar von mir noch ein paar Sachen eingespielt und auf Lager bzw. in der Produktion, aber ich muss schleunigst mit der Planung für neues Futter beginnen, dünkt mir.
Der ausführliche Titel lautet bei dem neuen Training App Entwicklung mit iOS Grundkurs 3: Erweitertes UI-Design – Moderne Benutzeroberflächen, Storyboards, Auto-Layout. In dem Teil der Kursreihe dreht sich alles um Benutzeroberflächen: Das umfasst die Arbeit mit Storyboards, die Erstellung von Benutzeroberflächen für bestimmte Geräte und die Verwendung eines Auto-Layouts, um sicherzustellen, dass Ihre Entwürfe über mehrere Geräte, Auflösungen und Orientierungen hinweg konsistent sind und bleiben. Schritt für Schritt wird das Erlente in einer App live umgesetzt.

App-Entwicklung mit iOS Grundkurs 2: Das User Interface

Da isses ja :-).


Das zweite Training zur App-Entwicklung mit iOS ist draußen. Aufbauend auf den Kurs App-Entwicklung mit iOS Grundkurs 1: Meine erste eigene App – Tools und einfache Oberflächenelemente konzentriert sich der zweite Teil dieser Grundkursreihe (mit vollem Namen

App-Entwicklung mit iOS Grundkurs 2: Das User Interface – Bilder, Schieberegler, Schalter, Fortschrittsbalken und andere UI-Elemente kennen lernen und nutzen
) auf das Design der Benutzeroberfläche einer App. Sie sehen zunächst, wie man die verschiedenen UI-Objekte in iOS benutzt: Bilder, Auswahlmöglichkeiten, Schieberegler, Fortschrittsbalken, Schalter und viele mehr. Ausführlich geht es dann weiter mit dem Einsatz von Web-Ansichten. Das schließt das Laden von Daten aus einem String, einer Datei und einer URL ein. Schritt für Schritt entsteht so eine einfache Web-Browser-App.

Demovideos zu App-Entwicklung mit iOS Grundkurs 1

App-Entwicklung mit iOS Grundkurs 1: Meine erste eigene App
App-Entwicklung mit iOS Grundkurs 1: Meine erste eigene App

Vor wenigen Tagen ist ja mein erstes Videotraining zur Programmierung von iOS-Apps erschienen (App-Entwicklung mit iOS Grundkurs 1: Meine erste eigene App – Tools und einfache Oberflächenelemente). Es sollen in kurzen Abständen 3 Folgetrainings zur iOS-Programmierung nachkommen, die aufeinander aufbauen.

Nun gibt es zu solchen Trainings immer eine Reihe an Demovideos.

App-Entwicklung mit iOS Grundkurs 1: Meine erste eigene App

App-Entwicklung mit iOS Grundkurs 1: Meine erste eigene App

Nun ist es soweit. Mein erstes Videotraining im Umfeld von Apple ist erschienen. Es geht im die Entwicklung von iOS-Apps, was vermutlich aus dem Titel „App-Entwicklung mit iOS Grundkurs 1: Meine erste eigene App – Tools und einfache Oberflächenelemente“ ziemlich offensichtlich wird. Vielleicht sollte man aber noch erwähnen, dass Swift und Xcode die entscheidenden Techniken sind.
Wobei es auch nicht wirklich mein aller erstes Videotraining im Apple-Habitat wird, denn mit meinen Videotrainings zu Cordova bzw. PhoneGap habe ich ja die Erstellung von plattformneutralen Apps zum Thema gehabt und da natürlich auch iOS/Apple berücksichtigt. Aber so rein auf Apple und iOS fokussiert bin ich mit dem Training das erste Mal. Es folgen in kurzen Abständen nun auch noch gleich 3 Folgetrainings zur iOS-Programmierung, die aufeinander aufbauen.

Wie schmeckt der Apfelsaft?

Apple habe ich ja wie der Teufel das Weihwasser gemieden,  seit ich mit IT angefangen habe (was vor der Gründung von Apple liegt). Wobei ich nicht so ganz um gelegentliche Kontakte mit Apple herum kam.

Meine Kids haben über die Schule 2 iPads gestellt bekommen – von daher gibt es Apfelgewächse schon eine gewisse Zeit in meinem Umfeld. Und bei der Erstellung von Cordova-Apps bin ich ebenso (natürlich) mit Apple-Produkten konfrontiert worden. Auch in meinen Vorlesungen an der Hochschule Rhein-Main in Wiesbaden haben eine große Anzahl meiner Studenten mit Apple gearbeitet – war ja auch ein mehr Designer-orientierter Studiengang, wo ich als „Fremdkörper“ die Programmierseite abgedeckt habe.

Nachdem ich jetzt doch aber selbst immer stärker in die Apple-Welt einsteige, will ich mal den aktuellen Stand meiner Eindrücke festhalten. Natürlich aus Sicht des Programmierers bzw. IT-Experten und nicht aus Sicht des Anwenders. Bei reinen Anwendern werden insbesondere die Gewichtungen sicher anders aussehen und manche Punkte gar keine Rolle spielen.

Neutral

  • Xcode ist eine vernünftige IDE. Nicht besser als die Konkurrenz, aber ich sehe auch kaum qualitative Unterschiede oder Abstriche zu Eclipse, NetBeans oder Visual Studio. Xcode liefert das, was man derzeit von einer IDE erwartet.
  • Swift ist eine verständliche und eigentlich sehr einfache Sprache. Ich sehe sie als Mischung aus JavaScript und Java mit ein paar seltsamen Eigenheiten. Ist aber wie gesagt einfach zu verstehen und Programmierung damit macht mir Spaß.
  • macOS ist besser als ich vermutet habe. Nicht so intuitiv wie etwa Windows und vor allen Dingen die verschiedenen Linux-Desktops. Aber auch nicht so schlecht, wie es mir bei den Kontakten in der Vergangenheit immer vorkam. Man merkt auch den „Linux-Unterbau“ und mit dem Design muss man halt leben.

Positiv

  • Der iMac mini ist einfach klasse.

Negativ

  • Die Tastaturbelegung ist elend. Ich muss ständig nachsehen, wo sich wichtige Sonderzeichen befinden. Zumal die auf den Apple-Tastaturen auch nicht angegeben werden. Man merkt deutlich, dass Programmierer in der Apple-Welt ein bisschen wie Aussätzige angesehen werden. Apple soll für Leute sein, die sich nicht für Computer interessieren und die dürfen nicht mit Wissen verwirrt werden. Ich spiele ja seit gut 40 Jahren Saxophon und greife ganz selbstverständlich gewisse Griffe für bestimmte Töne. Und wenn ich jetzt ein anderes Instrument spielen soll, dass genauso aussieht, bei dem aber die Griffkombinationen umgestellt wurden, würde ich ständig in Probleme kommen. So geht es mir bei der Apple-Tastaturbelegung :-(.
  • Es gibt kaum deutsche Quellen für Entwickler. Von Apple selbst eigentlich gar nicht. Ich kann schon ganz gut Englisch (habe auch auch schon IT-Bücher übersetzt), aber es ist trotzdem unbequem und anstrengend.
  • Preisgestaltung von Apple. M.E. etwa 50% – 75% zu teuer im Vergleich zu gleichwertigen Produkten aus anderen Welten.
  • Über die inakzeptable Zensur von Apple bzgl. Inhalten will ich mich nicht weiter auslassen, zumal sie mir im Moment noch nicht in die Quere gekommen ist.

Derzeitiges Fazit

Muss nicht sein, aber man kann auch mit Apple leben – das hätte ich vor ein paar Monaten noch nicht zugegeben.