Ob das wirklich nötig war?

Ich bin am Zweifeln, ob es wirklich notwendig war, mir ein neues SmartPhone zuzulegen. Denn in der Mittagspause kam ein solches an und eigentlich benötige ich keine neuen Features, die in den letzten Jahren im Umfeld von SmartPhones aufkamen. Aber mein aktuelles Honor View hat seit geraumer Zeit einen Riss im Display, der sich komplett über den zentralen Bereich des Displays erstreckt sowie sukzessive größer wird und sich mehr und mehr verästelt. Dazu hat sich die letzten Tage rechts oben ein weiterer kleiner Riss gebildet. Ich fürchte, dass das Gerät irgendwann ausfällt und das ist ein echtes Problem. Denn die elende 2-Wege-Authentifizierung nimmt immer mehr zu und ich komme damit ohne ein SmartPhone nicht mehr an diverse Dienste wie GitHub, SharePoint etc. Dazu muss ich auch beim Onlinebanking, ebay, Paypal etc. Anmeldungen mit dem SmartPhone bestätigen. Ohne die dazu installierten Apps bzw. mobile Erreichbarkeit wäre es einfach elend umständlich. Ich habe wegen des drohenden Ausfalls von dem Honor View die letzten Monate ein ganz einfaches Nokia-SmartPhone als Notfall-Gerät aufgebaut,. Das habe ich vor einigen Jahren geschenkt bekommen und bisher nur als Testgerät für die App-Entwicklung mit Cordova verwendet – insbesondere im Rahmen meiner Vorlesgungen zur Entwicklung von plattformneutralen Apps an der TH Bingen. Allerdings ist das SmartPhone von einem meiner Söhne mit einem Riss im Display (Zufall) so gut wie unbedienbar geworden und ich habe ihm das Nokia abgetreten. Damit fehlt mir aber ein Backup-Gerät, denn mein altes Galaxy S4 ist zwar noch im W-LAN im Einsatz (Bestätigung von Online-Authentifizierungen, Infrarot-Fernbedienung etc.), aber durch die uralte Software nicht sicher außerhalb vom W-LAN einzusetzen und selbst mir etwas zu schwachbrüstig.

Ich beobachte deshalb schon ein paar Monate einige SmartPhones und nachdem mein Favorit, der sich nach vielen Überlegungen und Testberichten herauskristalisiert hat, am Montag in einer Blitzaktion bei einem Händler signifikant unter den Preisen angeboten wurde, die ich die letzten Monate gesehen hatte, habe ich zugeschlagen.

Es ist ein Samsung XCover 5 Pro Enterprise geworden. Das ist ein Outdoor-SmartPhone bzw. ein Gerät, das explizit für den Einsatz auf Baustellen und im dreckigen Umfeld konzipiert ist. Da ich zu einigen „rustikalen“ Hobbies wie Gleitschirmfliegen oder Montainbiken neige, macht bei mir das SmartPhone schon Einiges mit. Wobei der Riss im Display nicht bei den Aktivitäten aufgetreten ist, wenn ich mich nicht täusche.

Anyway – mir war wichtig, dass das neue SmartPhone robuster und damit nachhaltig wird. Ebenso waren Dinge wie die Navigation inklusive sehr gutem GPS- und Telefonempfang sowie eine lange Laufzeit wichtig. Mein erster Eindruck von dem XCover ist, dass es recht „klobig“ daherkommt. Das gefällt mir gut, denn ich kann diese ultradünnen „Pussy“-SmartPhones nicht leiden. Wobei es im Vergleich zu den üblichen Outdoor-SmartPhones (neudeutsch werden die „Rugged-Phone“ genannt) immer noch fast grazil ist. Es sieht ein bisschen so aus, wie die SmartPhones vor 5 – 10 Jahren ausgesehen haben. Sehr angenehm.

Ich habe mich für das Samsung entschieden, weil ich mit dem S2 und dem S4 früher schon gute Erfahrungen gemacht hatte und Samsung der einzige große Hersteller ist, der den Markt der Rugged-Phones überhaupt bedient. Der Rest sind irgendwelche China-Firmen oder Nischenanbieter. Außer Gigaset ist für mich keiner der anderen Anbieter wirklich infrage gekommen, zumal das alte SmartPhone meines Sohns auch ein Outdoor-Gerät von einem dieser China-Anbieter war – von wegen robust.

Wie sich das XCover in der Praxis bewährt, kann ich noch nichts sagen, denn ich werde es erst die nächsten Tage sukzessive einrichten, vom Honor umsteigen und dieses dann als Backup-Gerät aufbewahren (in der Hoffnung, dass das Display nicht weiter kaputtgeht, wenn das Gerät weitgehend in Ruhe gelassen wird). Was aber an Highlights das XCover schon auszeichnet, ist das:

  • Wechselbarer Akku. Unglaublich, dass das andere SmartPhones kaum noch anbieten.
  • Klinkenbuchse. Auch das fehlt mittlerweile bei diversen SmartPhones
  • Diverse Outdoorfeatures.
  • Bis zu 1GByte große SD-Karte wird unterstützt

Vor Ort – oder doch lieber remote?

Aktuell bereite ich gerade für nächste Woche eine Cobol-Schulung vor. Auch wenn ich die letzten Wochen Vor-Ort-Schulungen gehalten habe – die Sache wird wieder remote laufen. Ebenso wie meine Videoaufnahmen für LinkedIn Learning in der übernächsten Woche. Für mich stellt sich mittlerweile die Frage, ob und wann meine Arbeit wieder ganz oder zumindest überwiegend auf „Präsenz“ umgestellt wird? Denn ich habe für die kommenden Wochen und Monate wieder Schulungsanfragen, die zwingend Vor-Ort laufen sollen. Zum Teil habe ich sie schon zugesagt. Aber Corona, die aktuell katastrophalen Rahmenbedingungen beim Fliegen (heute wird zusätzlich zu den total chaotischen Flughafenbedingungen durch den Urlaubswahnsinn sogar noch in FFM gestreikt), die permanent unzuverlässige Bahn sowie die explodierenden Benzinpreise bzw. allgemeinen Reisekosten lassen mich meine Zusagen bereuen und  überlegen, ob ich nicht konsequent auf „Remote“ bestehe? Vielleicht mit Ausnahme von Schulungen hier in der Umgebung, die ich u.U. sogar mit dem Rad anfahren kann (wie die letzten Wochen) und Videoaufnahmen bei LinkedIn Learning in Graz, denn ich will da unbedingt mal wieder hin. Aber ansonsten?

Ich muss Ende September nach Hamburg. Wie soll ich denn da hinkommen?

  • Inlandsflug? Theoretisch billig, gut und schnell. In der Praxis eine Umweltsauerei und besagtes Chaos an den Flughäfen lassen das im Grunde als Option nicht zu.
  • Bahn? Das klappt bei mir einfach nie. Mein Sohn hat letzte Woche wieder 5,5 Stunden für eine Strecke gebraucht, die nach Plan 90 Minuten dauern sollte, ich habe mein letztes Ziel vor 3 Wochen (Marburg) gar nicht erreicht, weil es einfach in Giessen nicht mehr weiterging, Anschlusszüge erreiche ich sowieso fast nie und ich kann nicht mehr zählen, wie oft meine Fernzüge unterwegs stehengeblieben sind.
  • Auto? Bei den Kosten, den Staus durch die vielen Baustellen und auch wegen der Umwelt wirklich nicht gut. Nach HH sind es weit über 500 Km und da brauche ich ja 6 – 7 Stunden einfach.

Ich liebe HH und das war mit ein Grund, warum ich diese Maßnahme Vor-Ort zugesagt habe, aber ich hoffe dennoch, dass Corona die Sache auch für den Kunden auf Remote zwingt. Doch die Kunden wollen eben wieder verstärkt von Remote weg. Gestern habe ich von einem Schulungspartner, für den ich die letzten Wochen UML und Java bei Fachinformatikern geschult habe, einen Hilferuf bekommen. Denn rein zufällig soll er in einigen Tagen für einen Teil dieser Gruppe eine Cobol-Schulung halten. Mein Schulungspartner ist nun Cobol-Spezialist und macht das seit gut 35 Jahren – früher Host und mittlerweile unter Linux. Er ist also in Cobol fitter wie ich und der Hilferuf ging nicht um konkrete Cobol-Fragen und auch nicht darum, ob ich das übernehmen könne.

Es ging darum, dass beim Kunden neue Corona-Regeln in Kraft getreten sind. Die Gruppe, die Cobol in den Räumlichkeiten des Kunden (einer Bank) lernen soll, besteht aus 4 Fachinformatiker-Azubis und dem Trainer (besagtem Schulungspartner). Wenn in der Schulungszeit auch nur ein Corona-Fall bei einem der 5 Leute auftritt, besteht für die gesamte Gruppe ein Betretungsverbot der Räumlichkeiten des Kunden für die kommenden 5 Tage. Nun hatte ich die Azubis ja über die letzten 5 Wochen immer 2 Tage die Woche in einer Berufsschule unterrichtet und ständig hat jemand wegen Corona gefehlt. Ich selbst habe am letzten Tag auch ein Andenken mitgenommen – trotzt Mehrfachimpfung/Boostern. Was mir nur zufällig aufgefallen war, denn meine Symptome waren so, dass ich normalerweise nie auf die Idee gekommen wäre, mich zu testen oder gar krankzufeiern. Rein die Sensibilität aufgrund des Corona-Hotspots Schule hat dazu geführt, dass mir die Möglichkeit überhaupt in den Sinn gekommen ist. Aber sei es drum – auch wenn die aktuelle Corona-Variante wohl bei 99,9% der Infizierten entweder nicht bemerkt wird oder nicht an die Auswirkungen eines Sommerschnupfens heranreicht – wenn so strikte Zugangsregeln bzw. Isolationsregeln etc. gelten – wie soll man dann noch Maßnahmen vor Ort planen können?

In dem Fall meines Schulungspartners ist die Planung einfach – sie werden vor Ort beginnen (erzwungen vom Kunden) und dann ist es nur die Frage, an welchen Tag abgebrochen wird. Der einzige Grund, warum das im besten Fall durchgehen kann ist, dass die Azubis Ihre Corona-Infektion bei mir in der Schulung bereits hatten und gerade immun sind. Bis zur nächsten Variante des Virus. Aber wie gesagt – vermutlich wird die Schulung abgebrochen und dann muss halt auf remote umgestellt werden. Theoretisch. Denn im Fall von Cobol wird das auf dem Host verwendet oder unter Linux, die Azubis müssen aber im Remote-Fall Notebooks der Firma verwenden, unter denen dann ein Host-Zugriff oder Linux und die verwendete Cobol-Distribution nicht laufen. Der Kunde lässt also Remote quasi technisch scheitert, verbietet aber Vor-Ort mit hoher Wahrscheinlichkeit. Quadratur des Kreises.

Um kurz abzuschweifen – ich habe OpenCobolIDE, MinGW und ein Docker-Image für Cobol als Lösung vorgeschlagen, um Cobol dann unter Windows bei den Azubis zum Laufen zu bringen und gerade die Sache mit dem Docker-Image gestern erstmal selbst getestet, um das nächste Woche selbst neu in meine Schulung zu integrieren. Geht wunderbar und ist quasi die Verbindung der Vergangenheit (Cobol) mit der Gegenwart (Docker). Genau da sehe ich auch in meiner sehr Laienhaften Betrachtungsweise den Hauptsinn von Docker, denn so nutze ich Docker ja auch für Cordova bei meinen Vorlesungen an der TH Bingen.

Aber um die Sache zum Abschluss zu bringen – ich habe die letzten Wochen Kundenwünschen nach Vor-Ort-Maßnahmen wieder zugestimmt, werde das aber beenden. Solange ich es mir leisten kann, werde ich wieder auf reines Remote zurückgehen. Die fehlende Planungssicherheit, die aktuell unmöglichen Reiseumstände und auch, dass mich Corona trotz Boostern und extremer Vorsicht erwischt hat (auch wenn ich keine wirklichen Symptome mitgenommen habe), geben mir keine andere Wahl. Freiberufliche Arbeit muss extrem flexibel sein und richtig planen kann man nie – aber so extreme Unsicherheit ist mir zu viel. Zumal auch das gesamte Risiko bei mir liegt. Wenn ich Corona bekomme, muss ich die Maßnahme abbrechen. Entweder weil es der Kunde oder die Politik immer noch 5 Tage Isolation fordert – auch ohne Symptome (da ist Deutschland leider noch nicht so weit wie etwa Österreich, wo diese Maßnahme endlich abgeschafft wurde). Remote arbeite ich einfach weiter. Oder die Maßnahme wird abgebrochen, weil irgendjemand in der Gruppe Corona hat. Das explodierende Risiko von Reiseproblemen muss ich auch noch tragen. Nein, so geht es einfach nicht, wenn auf der anderen Seite Remote alles einfach und sicher macht.

Ende des Semesters an der TH Bingen

Letzten Donnerstag haben die Studenten meiner Blockveranstaltung zur Entwicklung von plattformneutralen Apps an der TH Bingen ihre Praxisarbeiten vorgestellt. Von den ursprünglich gut 25 – 30 Studenten waren am Ende der Remote-Blockveranstaltung über 6 Tage zu Beginn des Semesters noch so etwa 15 – 20 übrig, von denen etwa ein Duzend dann auch das Projekt abgegeben und in einer Teams-Sitzung vorgestellt haben. Zum Teil haben mich die Apps richtig beeindruckt.

Heute stelle ich noch die Bewertungen ein, schreibe meine Abrechnung und dann ist auch für mich meine Semester an der TH Bingen beendet. Mal sehen, ob ich diese Veranstaltung in den kommenden Semestern noch einmal halte, denn die Basis Cordova fällt so langsam ein bisschen aus der Zeit – auch wenn die verwendeten Webtechnologien und das Cordova-API einwandfrei funktionieren. Aber auch die Fachbereiche an der TH Bingen werden umstrukturiert und Mobile Computing, wo diese Veranstaltung bisher untergebracht war, wird in die „normale“ Informatik eingegliedert. Aber ich würde schon gerne wieder an der Hochschule eine Vorlesung halten – bis auf die extreme Bürokratie und maximal rückständige Verwaltung macht das immer wieder Spass.

OpenStreetMap statt Google oder Bing

Im Rahmen meiner Vorlesung zur Entwicklung von plattformneutralen Apps mit Cordova an der TH Bingen ist mir aufgefallen, dass die Verwendung des Google Map-APIs nicht mehr so funktioniert hat, wie ich es gewohnt war. Ältere, aber erprobte/getestete Codes haben einen Fehler produziert. Ich stelle den Studenten schon seit ein paar Semestern als eine mögliche Semesterarbeit eine App als Aufgabe, die unter anderem die aktuelle Position in einer Karte zeigen soll. Dabei habe ich bisher Google Maps und als Alternative Bing Maps verwendet. Die jeweiligen APIs ließen sich bisher problemlos verwenden. Nur benötigt man mittlerweile bei neuen Versionen der APIs dafür API-Keys. Die sind zwar kostenfrei zu bekommen (mit ein paar Einschränkungen hinsichtlich der erlaubten Verwendung), aber die Generierung ist dennoch mittlerweile etwas umständlich bzw. ich komme mit den unendlich vielen Details und unübersichtlichen Entwicklerwebseiten einfach nicht klar. Die speziellen Features der neuen Versionen habe ich auch bisher nicht benötigt.

Die Version 2 des Google Maps API hat aber keinen API-Key erfordert und war deshalb sowohl für meine Beispiel-Apps als auch viele Webseiten immer noch eine sehr gute Wahl. Nur das Problem in der Vorlesung beim Verwenden der alten Codes hat mich zu der Info auf den Entwicklerseiten von Google gebracht:

The Maps JavaScript API v2 is no longer available as of May 26, 2021. As a result, your site’s v2 maps will stop working, and will return JavaScript errors. To continue using maps on your site, migrate to the Maps JavaScript API v3. This guide will help you through the process.

Ganz toll – einfach die API-Version eingestellt und die bisherigen Webseiten und Apps sind an die Wand gefahren. Bei Bing Maps war es nicht besser – die alten Codes funktionieren auch nicht mehr.

Oft haben das die Betreiber von Webseiten auch gar nicht bemerkt bisher, denke ich. Gestern war ich auf einer entsprechenden Webseite eines Gleitschirmvereins, wo die Karte nicht mehr funktioniert. Klar – man kann argumentieren, dass Entwickler die Verantwortung haben, die Funktion ihrer Produkte regelmässig zu kontrollieren. Aber das ist m.E. nur die eine Seite der Medaille. Man kann auch argumentieren, dass es eine Art „Bestandschutz“ gibt. Was einmal getestet ist, sollte auf Dauer funktionieren. Da sieht man mal wieder, in welche Abhängigkeiten man sich begibt, wenn man fremde Ressourcen und Leistungen nutzt. Die aktuellen Probleme bei einigen Cloud-Anbietern passen in diese Problematik.

Und me culpa – auch auf einer meiner Seiten hatte ich eine Karte mit dem Google Maps API, die nicht mehr korrekt angezeigt wurde und was ich bisher nicht bemerkt hatte – es hatte sich bisher auch kein Besucher beschwert.

Einer meiner Studenten hatte sich vor einigen Tagen wegen dieser ganzen Umstände mit dem Google Maps bzw. Bing Maps API so geäußert, dass er auf OpenStreetMap umsteigen würde. Fand ich eine gute Idee und deshalb hatte ich schon vor ein paar Tagen damit sowie Mapbox experimentiert. Auch in Verbindung mit einer Django-Webseite, weil ich die nächsten Wochen dazu ein Videotraining bei  LinkedIn Learning einspielen will, wo ich diese Techniken in Beispielen nutzen will.

Aber erst einmal habe ich jetzt die Webseite, die ich betreue, auf OpenStreetMap umgestellt.

Die Seite arbeitet mit Joomla! und da taugt das OSModul ziemlich gut, um auf einfache Weise eine Karte von OpenStreetMap in eine Webseite zu integrieren.

 

April-Scherz?

Am Montag habe ich meine Blockveranstaltung zur Entwicklung von plattformneutralen Apps mit Cordova an der TH Bingen begonnen und eben den ersten Block über 6 Tage beendet. Ich glaube, das war das 1. Mal überhaupt, dass ich 6 Tage am Stück bei einer Veranstaltung unterrichtet habe. Klar habe ich schon Samstags geschult, aber nicht Montag – Samstag bei einer Veranstaltung. Aber ich wollte den Block auf jeden Fall vor der nächsten Woche mit dem offiziellen Semesterbeginn durch haben und konnte erst am Montag dieser Woche anfangen. 

Jetzt folgen noch ein paar Fragestunden über das Semester und am Ende im Juli einer Vorstellung der Semesterarbeit durch die Studis. Alles remote vermutlich. 

Anyway – gestern war der 1. April und heute morgen dachte ich, da wäre ein verspäteter April-Scherz am Laufen oder ich in der falschen Jahreszeit aufgewacht. Selbst in Bodenheim liegt etwas Schnee und am Büro in Eppstein sogar wirklich.

Eigentlich wäre ich heute gerne zum Hammerwerfen nach Niederselters gegangen, aber bei dem Wetter bedauere ich nicht, dass ich heute arbeiten musste. Ich habe per WhatsApp auch Bilder vom Sportplatz da gesehen und da ist noch mehr Schnee.

Cordova-Vorlesung an der TH-Bingen

Seit Montag läuft meine Blockveranstaltung zur Entwicklung von plattformneutralen Apps an der TH Bingen. Remote und zu Beginn als Blockveranstaltung über 6 Tage mit ein paar Fragestunden über das Semester und am Ende im Juli einer Vorstellung der Semesterarbeit durch die Studis. Als Basis verwende ich wieder Cordova – auch wenn dessen „Aktualität“ bzw. Verbreitung etwas angekratzt ist. Aber man kann viel daran lernen und es funktioniert. Der Fokus liegt ja sowieso an den verwendeten Webtechnologien und dem Cordova-API.

Preisexplosion beim Raspi

Ich muss zugeben, dass ich mir lange keine Preise für Hardware angesehen habe. Und schon gar nicht für den Raspberry Pi. Hin und wieder krame ich meinen alten Raspi der Version 1 raus und experimentiere damit rum. Aber die Version 1 ist wirklich so schwach auf der Brust, dass man damit eigentlich nur testen kann, welche Minimalhardware für gewisse Dinge notwendig ist und dabei braucht man viel Zeit und Geduld, bis die Programme starten bzw. fertig sind. Und wirklich nützliche Anwendungen habe ich in dem Bereich wenig gefunden, weil ich keine Hardwaresteuerung programmiere. Einzig die Ausführung von einem Python-Skript zur Spamabwehr ist derzeit eine produktive Anwendung des kleinen Raspi. Aber obwohl ich immer noch unter massivem Spambeschuss stehe, haben sich mittlerweile wohl die Antispam-Cloud-Dienste und die internen Spam-Abwehrmechanismen auf die neue Art des Spams eingestellt, die vor einigen Wochen wie eine Schlammlawine durchs Netz gewalzt ist. Der Raspi hat also als Torwächter wieder weniger zu tun. Bei einer anderen Anwendung hat aber die extrem schwache Hardware die Hürden nicht geschafft. Ich wollte für die kommende Cordova-Vorlesung, die ich an der TH Bingen ab übernächster Woche halte, ein Linux-System so konfigurieren, dass Cordova-Android-Apps kompiliert und nach Möglichkeit auch in einem Emulator (oder zur Not auf einem per USB angeschlossenen SmartPhone) ausgeführt werden. Da für Cordova eine ganze Reihe an recht alten Bibliotheken (JDK 8) auf der einen Seite und den elend vielen Ressourcen im Fall von Android auf der anderen Seite verlangt werden, ist meine Workstation nicht passenden konfiguriert – von meinem Matebook mit der kleinen SSD ganz zu schweigen. Und ich habe keine Lust, nur für die Vorlesung meine gesamten Konfigurationen durcheinander zu bringen und zig Sachen da zu installieren, die ich sonst nicht mehr brauche.

Zwar habe ich einen passenden Docker-Container noch von der letzten Vorlesung vorbereitet und auf den neusten Stand gebracht und auch mein altes Terra-Notebook hat Cordova sogar mit Visual Studio verfügbar (das geht maximal bis Visual Studio 2017 und das habe ich aus dem Grund auch noch auf dem alten Notebook gelassen). Aber unter meinen Linux-Systemen klappt die Installation von Cordova und den Android-Ressourcen nicht so richtig. In dem parallel auf dem alten Notebook installierten Linux ist irgendwas zerschossen und ich kann gar keine Aktualisierungen vornehmen. Das muss ich vermutlich komplett neu aufsetzen. Und bei den virtuellen Maschinen habe ich sowohl bei VM Ware als auch VirtualBox eine Reihe von anderen – und ganz verschiedenen – Problemen. Alles nix Tragisches, aber es kostet Zeit und wenn ein Problem gelöst ist, kommt das nächste. Unbefriedigend und es raubt Zeit.

Da kam mir die Idee, entgegen meiner bisherigen Planungen vielleicht doch einen neuen Raspi zu kaufen und den als Linux-System ins lokale Netz zu hängen und je nach notwendigem Ziel immer wieder neu aufzusetzen. Also so eine Art Hardware-Docker-Container-VM-Ersatz. Ich hatte für den ersten Raspi so um die 35 – 40 EUR ausgegeben, bin mit der Erwartung gerade auf die Suche gegangen und fast vom Glauben abgefallen. Die wollen ja teils weit über 200 EUR für die Platine mit ein bisschen Krimskrams dazu. Ne, wirklich nicht. Das hat ja gar nichts mehr mit der ursprünglichen Idee einer möglichst billigen Platine zu tun. Ich schaue mal weiter oder vielleicht gebe ich doch alternativen Platinen eine Chance, bei denen nicht noch zusätzlich ein Hype die Preise hochtreibt. Oder lasse es.

Derzeit kann man wohl weder Sprit bzw. Öl als auch Hardware kaufen. Benzin muss leider ab und zu sein (auch wenn ich weniger fahre und zudem wenn möglich auf das Rad oder eBike umsteige), aber Hardwarekauf kann verschoben werden, bis die Preise wieder normal sind.

Neuer Lehrauftrag an der TH Bingen im kommenden Semester

Eben habe ich meinen Lehrauftrag für das nächste Semester an der TH Bingen unterschrieben und bin wegen der überbordenden Bürokratie auf 180. Ich halte Ende März wieder eine Vorsemester-Veranstaltung zur Entwicklung von plattformneutralen Apps auf Basis von Cordova. Das habe ich schon ein paar mal gemacht und auch wenn Cordova nicht mehr der neuste Schrei ist, finde ich die Idee immer noch sehr interessant. Mit Flutter und Xamarin werde ich aber auch ein paar Alternativen – wenngleich mit anderem Ansatz – einfließen lassen.

Obwohl es als Lehrbeauftragter nur recht kleines Geld gibt – ich halte solche Vorlesungen schon seit mehreren Jahren in verschiedenen Varianten und zu mehreren Themen (früher an der Hochschule RheinMain in Wiesbaden und seit 2016 an der Hochschule Bingen) und auch sehr gerne. Aber der bürokratische Aufwand, der mittlerweile damit einhergeht, verleitet den Spass.

Es ist ist unmöglich, was da an Formularen von der TH Bingen im Vorfeld gefordert wird.

Mehrfach zu unterzeichnende Lehraufträge. Auf Papier. Ok, das kann man noch tolerieren, wenngleich es natürlich DocuSign & Co gibt. Gerade bei einer technischen Hochschule sollte man erwarten, dass solche Techniken da bekannt sind und angewendet werden. Aber sei es drum – mit dem Zeug kann ich leben.

Aber nicht damit, dass ich zig Datenschutzverordnungen und sonstige Formulare ausfüllen musste. In 3-facher Ausführung und von A-Z von Hand. Name, Adresse, Funktion, Ort, Datum, Unterschrift. Dass ich meine Stunden dann auch wieder auf Papier dokumentieren und abrechnen muss, ist nur ein weiterer Stein in der Bürokartiemauer.

So lächerlich, umständlich, unbequem und Steinzeit, dass es mir vollkommen verleitet wird, noch einmal so einen Lehrauftrag anzunehmen. Die Zeit, die ich da brauche, ist zwar nicht die Welt. Aber diese lächerliche Bürokratie regt mich auf. Ich komme mir da – vor allen Dingen mit den Strafandrohungen in diesen angeblichen Datenschutzformularen – vor wie ein Schwerverbrecher, der um Begnadigung ersucht. Solche Zumutungen habe ich nicht einmal gehabt als ich für Polizei und ähnlichen Behörden oder Firmen mit sensiblen Daten gearbeitet habe. Auf der einen Seite kaum Geld zahlen wollen und auf der anderen Seite noch unverschämte Forderungen haben und Steine in den Weg legen – geht es noch? 🙁

Wobei die TH Bingen an sich nicht der richtige Adressat für meinen Zorn ist – die zuständigen Behörden im Hintergrund gehören endlich mal aus der Steinzeit abgeholt. Da muss man sich nicht wundern, dass kein IT-ler für Behörden irgendetwas machen will.

Der erste neue Tipp des Jahres

Nachdem es zwischen den Jahren keinen neuen Tipp gab, wurde heute bei LinkedIn Learning wieder der nächste regelmäßige Entwickler-Tipp zu Python freigeschaltet. Der erste Tipp im Jahr 2022. Dieses Mal verbinde ich die Themen Python und Docker. Gerade mit Docker habe ich ja Anfang letzten Jahres etwas mehr beschäftigt, um eine Cordova-Umgebung für meine Vorlesung bei der TH Bingen bereitzustellen. Damit kann man ja alle möglichen verschiedenen Konfigurationen und Systeme bereitstellen, ohne immer wieder seinen Rechner umkonfigurieren zu müssen. Auch für Python.

Wenn man Docker installiert hat, dann kann man ein Python-Image laden und auf dem Rechner installieren. Das heißt, man hat eine virtuelle Laufzeitumgebung für Python. Das ist vor allen Dingen dann interessant, wenn man verschiedene Versionen von Python benötigt. Dazu muss allerdings auf dem Rechner Docker installiert sein. Das Zusammenspiel zwischen Python und Docker geht in zwei Richtungen. Nicht nur kann man mit Docker eine Python-Umgebung, eine virtuelle Python-Umgebung schaffen, es gibt auch die Möglichkeit, ein Docker-SDK für Python zu installieren.

Von der Hochschule ins Schreibbüro

Mein Engagement bei der TH Bingen ist für dieses Semester beendet (muss nur noch Noten eintragen und meine Abrechnung erstellen) und jetzt werde ich wieder zum Autor. Erst überarbeite ich die erste Fahne meiner Schulungsunterlagen zum neuen Joomla! 4 und dann geht es an die Aktualisierung eines meiner Bücher.

Aus dem Tonstudio an die Hochschule

Cordova

Ich habe meine aktuellen Aufzeichnungen für LinkedIn Learning (LiL)  abgeschlossen und nächste Woche geht es (virtuell) wieder für 2 Tage an die Technische Hochschule Bingen. Ich hatte da für dieses Semester im Studiengang „Mobile Computing“ nach 2 oder 3 Jahren Pause erneut einen Lehrauftrag angenommen.

Ende März/Anfang April hatte ich da mehrere Tage zu Cross Plattform Entwicklung mit Cordova remote unterrichtet und meinen Studenten die Entwicklung einer App als Semesterarbeit aufgegeben. Die Vorführung steht jetzt am Ende des Semesters an

 

Android 11 für mein Test-SmartPhone

Ich habe vor einigen Wochen ein ganz einfaches Nokia-SmartPhone bekommen, das bei einer Firma überzählig war, weil ein Mitarbeit gegangen war. Das Gerät ist zwar ziemlich neu, aber wirklich ganz, ganz einfach und schwach auf der Brust, wenn ich es mit meinem Honor View10 vergleiche. Obwohl das ja auch schon in die Jahre gekommen ist und mittlerweile wohl nicht einmal mehr als Einsteiger-Gerät zu haben ist. Aber ich will gar nicht über das Nokia-SmartPhone lästern, sondern ich bin sogar dankbar, dass ich es als Testgerät für mein Seminar zu Cross Plattform Entwicklung mit Cordova an der TH Bingen zur Verfügung habe. Damit muss ich mir nicht meine tatsächlich in Betrieb befindlichen Geräte mit Demo-Apps vollhauen.
Nun hat das Nokia gestern sogar Android 11 bekommen, was weder auf dem Honor View10, meinem alten Asus-Tablet oder gar meinem „Best-SmartPhone-Ever“ (einem Galaxy S4, was ich immer noch ohne SIM-Karte für die Authentifizierung bei Online-Banking etc. verwende) bereitgestellt wird. Damit kann ich die Apps jetzt auch real in dem aktuellen Android testen und nicht nur in einer Emulation.
Gerade habe ich mal eine Tour gestartet, was denn Android 11 Neues bringt. Fazit: heiße Luft und nichts, was ich je brauchen werde. Mein Vorurteil wird weiter gestärkt – die Entwicklung von mobilen Geräten als auch deren Betriebssystemen bzw. der Software stagniert seit vielen Jahren bzw. bringt rein gar nichts wirklich Neues bzw. Relevantes.

Deutschland, Deine Bürokratie und IT-Rückständigkeit

Vor ein paar Tagen habe ich mein virtuelles Vorsemster-Seminar zu Cross Plattform Entwicklung mit Cordova an der TH Bingen erst einmal beendet bzw. bis zum Ende des Semesters mit 2 (vermutlich) Präsentationstagen der Ergebnisse der Semesterarbeiten unterbrochen. Gestern kam ein Brief von der TH mit dem offiziellen Lehrauftrag bzw. Vertrag.

Im Grunde nicht bedeutend, aber dabei ist mir wieder die unendliche Bürokratie und Rückständigkeit aufgefallen, wenn man in Deutschland etwas mit offiziellen Stellen zu tun hat. Natürlich kommt der Vertrag noch auf Papier und so etwas wie DocuSign will ich nicht fordern, geschweige denn erwarten. Es sind Behörden. Die dreifache Ausfertigung ist natürlich auch typisch Deutsch. Nicht umsonst ist hier auch Klopapier meist dreilagig.

Aber da war noch ein Bürokratie-Zeug dabei, dass ich nur den Kopf schütteln kann. Von einem Blatt zum Datenschutz mit vollkommen an der Realität vorbeigehenden Ausführungen/Anordnungen über ein Corona-Merkblatt mit Regeln, die man seit einem Jahr schon auswendig kennt. Beides war aber noch mal zu bestätigtigen – als hätte man diesen Mist die letzten Jahre und Monate nicht schon zig Mal zur Kenntnis genommen und immer und immer wieder diese Tatsache bestätigt.

Die Krönung ist, dass meine Stundenabrechnung auf Papier (!!) erfolgt. Ich muss handschriftlich (!!) jede gehaltene Stunde eintragen. Man sollte bedenken, dass das T in TH für „Technische“ steht. Da lacht die ganze Welt über deutsche Behörden, weil sie noch Fax verwenden, und eine Hochschule mit modernsten Ansprüchen erwartet Kommunikation und Abrechnung auf Papier und per Post. Wobei ich die TH zumindest teilweise in Schutz nehmen muss – die Abrechnung geht über das Landesamt für Finanzen und mit denen hatte ich auch schon direkt bei Schulungen dort zu tun. Damit sollte mich dieses Level im Grunde nicht überraschen. Das ist nicht nur eine unmögliche Bürokratie, das ist auch technische Steinzeit. Zumindest das Niveau vor Einführung von Computern.

Vorlesungsende zum Semesterbeginn

Heute ist mein virtuelles Vorsemster-Seminar zu Cross Plattform Entwicklung an der TH Bingen erstmal beeendet. Direkt bevor die eigentliche Vorlesungszeit beginnt. Nach den 6 vollen Tagen rund um die App-Entwicklung mit Cordova haben die Studenten von mir zum Abschluss eine Praxisaufgabe (Entwicklung einer App) bekommen, die sie über das Semenster dann bewältigen sollen. Am Ende des Sommersemesters „sehe“ (vermutlich wieder nur virutell) ich sie nochmal an 2 Päsentationstagen, an denen sie dann ihre Ergebnisse vorstellen können.

Server-Umzug abgeschlossen

Der Umzug meines V-Servers sollte jetzt fertig sein. Der E-Mail-Server läuft und ist hinreichend konfiguriert. Der Spamschutz scheint besser wie vorher zu sein und auch die Kommunikation mit einer E-Mail-Adresse, die bisher nie durchging, hat eben funktioniert.

Soweit ich das sehen kann, sind jetzt auch alle Webseiten von mir wiederhergestellt und gleich mal auf den neusten Stand aktualisiert. Die unwichtigste Seite hat – natürlich ;-(  – die meiste Arbeit gemacht. Aber ich habe zumindest wieder etwas zu der Bedeutung von Eigentum und Gruppenzugehörigkeit unter Linux (und auch WordPress) gelernt und diverse Linux-Shell-Befehle geübt. Bisher war ich wirklich so naiv und dachte, dass Dateirechte die entscheidenden Stellen sind und man spätestens mit 755 auf der sicheren Seite hinsichtlich der Ausführung, dem Zugriff und ggfl. Schreiben in entsprechende Verzeichnisse auf dem Server sein sollte, wenn man Webseiten bereitstellt. Ich habe wegen diverser Probleme eine gefühlte Ewigkeit erfolglos mit den Schreibrechten herum experimentiert (sowohl über FTP als auch direkt per SSH mit chmod bis hin zu 777), bis mir aufgefallen war, dass bei den Webseiten ohne Probleme ganz andere Eigentumsrechte und Gruppenzugehörigkeiten da waren als bei denen mit Problemen. Da lag der Hase im Pfeffer und root ist nicht immer root (zumindest nicht im universellen Sinn – der root des SSH ist nicht immer der root der Webserver oder gar irgendeiner Verwaltungssoftware wie Plesk). Admin fuddeln vielleicht da rum – unglaublich.

Mit chown -R für den Eigentümer und chown : für die Gruppenzugehörigkeit haben sich dann aber (fast) alle Probleme in Luft aufgelöst. Nur die Zugriffs- bzw. Rechteprobleme bei der unwichtigsten Seite (einem Joomla!-System) habe ich einfach nicht in Griff bekommen. Die Seite habe ich dann kurzentschlossen komplett neu aufgesetzt (jetzt aber als WordPress-System) und dann einfach die wichtigsten Inhalte aus meiner lokalen Sicherung eingefügt.

Und da ich gerade dabei war, habe ich auf dem neuen V-CordovaServer Docker angeschaltet und gleich mit meinem Cordova-Skript für die kommende Vorlesung an der TH Bingen getestet. Das ging wie Butter durch ein heißes Messer – oder auch umgekehrt. Alle notwendigen Programme und Bibliotheken wurden problemlos (und fix) installiert und der Container ist sofort gelaufen. Das konkrete Erstellen der Cordova-App für eine Android-Plattform ging ebenso perfekt. Ich habe mich dann noch von einem anderen Rechner per SSH auf dem Server eingeloggt und aus dem Terminal die generierte App aus dem Docker-Container auf das Host-System kopiert. Null Problemo. Unter Linux läuft so Zeug die Docker einfach perfekt.

Ich komme immer mehr auf den Geschmack, meine Kenntnisse um Docker etwas zu intensivieren und zudem mehr mit dem Server zu machen als bisher.

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

 

 

Lehrauftrag TH Bingen

Für das kommende Sommersemester habe ich mal wieder einen Lehrauftrag an der Technischen Hochschule Bingen angenommen. Im Studiengang Mobile Computing, was ein Unterzweig des Informatik-Studiengangs ist. Thema ist die Erstellung von Apps mittels Web-Technologien und da werde ich Cordova als Basis nehmen. Dazu hatte ich auch 2016 und 2017 schon Lehraufträge an der TH übernommen und zudem ein Buch beim Springer-Verlag veröffentlicht. Die bisherigen Vorlesungen muss ich zwar aktualisieren und mich auch wieder richtig einarbeiten bzw. auf den aktuellen Stand bringen, aber weitgehend steht das Konzept.

Cordova

Aber im Gegensatz zu meinen Lehraufträgen an der Hochschule Rhein-Main in Wiesbaden, wo ich in den Jahren davor mehrere Semester Vorlesungen zu verschiedenen anderen IT-Themen rund um Programmierung im Web gehalten hatte, waren die Veranstaltungen an der TH Bingen immer Blockveranstaltungen vor dem eigentlichen Semester. So wird es auch dieses Mal wieder, denn regelmäßige Kurztermine über 2 oder 4 Unterrichtseinheiten über mehrere Wochen blockieren zu viele potentielle andere Aufträge. Auch wenn ich solche Schulungen in frühen Jahren mit Kursen an Volkshochschulen und dann später eben Vorlesungen an der Hochschule Rhein-Main oft gemacht habe, möchte ich das mittlerweile nicht mehr. Das rechnet sich nicht, ist zeitaufwändiger und zerpflückt über Wochen hinweg meine Tage. Auch das Ausweichen auf Wochenenden oder die späten Abendstunden, was bei mir in frühen Jahren über viele Jahre Usus war, vermeide ich mittlerweile. Zwar arbeite ich eigentlich durchgängig über das gesamte Jahr sowohl Nachts als auch am Wochenende, aber nicht mit Schulungen.

Aber die TH Bingen ist auf meine Vorschläge eingegangen und somit wird es für das SS 2021 eine Veranstaltung mit 7 vollen Tagen unmittelbar vor Semesterbeginn bzw. Ostern sowie einem Termin am Ende des Semesters, bei dem ich eine Überprüfung der praktischen Semesterarbeiten der Studenten vornehmen will. Auf diese Weise kann ich die Geschichte in meine übrigen Jobs unterbringen, zumal die gesamte Veranstaltung Corona-bedingt remote laufen wird und die Fahrtzeiten entfallen. Das spart einige Zeit, auch wenn Bingen ja von mir nicht weit weg und gut zu erreichen ist.