In and out

Diese Woche bin ich wieder am Aufnehmen eines Videotrainings für LinkedIn Learning sowie der Erledigung einer weiteren Zusatzaufgabe, bei der ich bei einer Übersetzung eines Kurses fachliche Korrekturen einpflegen soll. Ich schaffe also weiteren Input und gleichzeitig gibt es aber bei  LinkedIn Learning neuen Output von mir.

Mein neuer Eclipse-Grundkurs wurde freigeschaltet. Das ist die aktuellste Version eines Videotrainings, das ich ursprünglich schon vor vielen Jahre aufgenommen und mittlerweile einige Male überarbeitet habe. Eclipse gilt als Schweizer Taschenmesser für die Softwareentwicklung. Die IDE, die ursprünglich überwiegend in der die Java-Entwicklung zum Einsatz kam, kann mittlerweile für fast alle denkbaren Programmiersprachen und Software-Techniken verwendet werden.

Polymorphismus in Python – aus meinem Tutorial zu Python

Mittwoch und bei LinkedIn Learning ist der neue Entwicklertipp der Woche ist verfügbar. Dieser Tipp zeigt, wie man in Python Polymorphismus implementieren bzw. nachbilden kann. In den meisten objektorientierten Programmiersprachen gibt es ein polymorphes Verhalten aufgrund einer Technologie, die man Überladen, Overload, nennt. In Python ist so etwas nicht vorhanden in dem Sinne, aber man kann es nachbilden. Dazu verlagert man die Funktionalität direkt in eine Funktion oder Methode und diese entscheidet, wie sie sich verhält. Im Gegensatz zur echten Polymorphie mit Überladen, wo es verschiedene Methoden gleichen Namens, gleichen Bezeichners, aber einer eindeutigen Unterscheidung im den Gültigkeitsbereich gibt, haben wir hier nur eine Methode oder Funktion.

Chatkontrolle?

Ich war – wie schon mehrfach erwähnt – in Urlaub und habe auch sonst mir ein bisschen Auszeit von der IT gegönnt. Deshalb ist mir das „Chatkontrolle“ genannte Projekt der EU bisher nicht so wirklich bewusst geworden. Eben habe ich aber darüber gelesen und nachdem in den Foren die Verantwortlichen EU-Beamten bzw. EU-Politiker durch die Bank als „Faschisten“ und/oder „Staatsverräter“ oder noch Schlimmeres oder (wohlwollend) nur als „unfähig“ bezeichnet werden, musste ich mich doch etwas genauer damit beschäftigen. Zumal alle etwas liberalen politischen Kräfte sowie Menschenrechtsorganisationen und Netzaktivisten diese Aktion ebenso massiv kritisieren – auch wenn diese die kräftige Wortwahl in den gängigen Foren vermeiden. Aber als illegal, extrem gefährlich und dennoch weitgehend wirkungslos wird diese Maßnahme wohl durch die Bank angesehen (außer von der EU-Kommission selbst natürlich).

Vordergründig geht es wieder einmal um Kindesmissbrauch. Der Kampf dagegen ist definitiv elementar und zweifelsfrei ungeheuer wichtig. Doch mit solchen Themen bzw. Schlagworten lassen sich leicht Aktionen rechtfertigen, die Grundrechte aushebeln oder gewisse Dinge vernichten wollen. Die klassische Taktik. Ein Problem benennen, gegen dessen Beseitigung niemand etwas haben kann, der nicht Teil der Problems ist. Nach dem Motto: „Wer nichts zu verbergen hat …“. Und dann eine Lösung anbieten, die scheinbar funktioniert. Dass es aber dann u.U. auch andere Ziele gibt, die als unvermeidliche und geringfügige Kollateralschäden dargestellt werden oder möglichst gar nicht auffallen, kann man einfach nicht ignorieren.

Konkret geht es darum, dass in Zukunft alle Kommunikation in Chats komplett überwacht werden soll. Was letztendlich nichts anderes bedeutet, als dass die Verschlüsselung verboten ist oder zumindest Behörden zwingend einen Schlüssel besitzen. Ist das mal etabliert, wird aber vermutlich die Erosion zunehmen und E-Mail darf auch nicht mehr verschlüsselt werden und letztendlich wird das Briefgeheimnis als Grundrecht abgeschafft. Diese Schrittfolge ist zwingend, wenn man die Argumente der EU-Kommission hört. Die EU-Kommission will im ersten Schritt, mit dem die Brandschutzmauer des Datenschutzes bzw. der Grundrechte des Fernmeldegeheimnisse oder die Integrität informationstechnischer Systeme eingerissen werden soll, Hostprovider und Anbieter von Messengerdiensten zur umfassenden Spionage der Internetkommunikation ihrer Kunden verpflichten. Die EU-Kommission nennt das selbst eine „harte, beispiellose und bahnbrechende Gesetzgebung“, wobei diese Formulierung vermutlich eher unfreiwillig deutlich macht, was da angestoßen wurde.

Kritiker sehen es so, dass es solch eine Chatkontrolle nicht einmal in Russland oder China gibt und dass eine solche anlass- und verdachtslose Durchleuchtung sämtlicher Kommunikation einer Demokratie unwürdig bzw. illegal ist. Das Missbrauchspotential ist sogar konzeptionelles Grundprinzip dieser Idee. Ob die Maßnahme auch überhaupt wirkt, ist sehr zweifelhaft, denn die Täter werden einfach auf Messangerdienste ausweichen, die sich den EH-Kontrollmaßnahmen entziehen. Die Opfer sind die unschuldigen Bürger, die IT-Wirtschaft und die Grundrechte.

Aber es steht zu hoffen, dass der Vorschlag politisch abgefangen wird.

Business a usal – so langsam komme ich wieder in den Arbeitrythmus

Ralph Steyer jQuery

Nach meinem Radurlaub habe ich noch eine Weile meine Arbeit auf Sparflamme gehalten, aber sukzessive hochgefahren. Muss ja. Ich bereite gerade ein neues Videotraining für LinkedIn Learning (LiL) vor, dass ich übernächste Woche aufnehmen will – zusammen mit einer fachlichen Lektorarbeit für ein anderes Training. Dazu bereite ich eine jQuery-Schulung für nächste Woche vor.

Ebenso ist am heutigen Mittwoch wieder ein neuer Entwickler-Tipp der Woche zu Python bei LinkedIn Learning freigeschaltet worden. Thema ist, wie man die Quersumme einer Zahl berechnen kann. Das ist gar nicht so unwichtig oder speziell. Denn die Quersumme  (die Summe aller Ziffern einer Zahl) kann man verwenden, um darüber die Veränderungen von Dingen beobachten. Das ist so was Ähnliches wie eine einfache Version eines Hashwerts.

Smarte (?) Trinkflasche

Gerade habe ich einen Beitrag gelesen, dass es mittlerweile „smarte“ Trinkflaschen gibt. Die überwachen, wieviel man aus ihnen trinkt. Angeblich soll das für die Gesundheit gut sein, weil viele Leute angeblich zu wenig trinken. So ein Ding kostet zwischen 80 € – 100 €.

Sorry, aber das ist einfach nur krank. Wie weit muss die Fremdüberwachung eigentlich noch gehen? Wie heftig will man die Natur noch durch Technik ersetzen? Wie stark will man Demenzsysteme für gesunde Leute als Fortschritt verkaufen?

Jeder soll auf die Weise glücklich werden, wie er will. Solange niemand geschädigt wird, ist das auch ok. Aber rein gesellschaftlich sehe ich die „smarte“ Entwicklung als Krebsgeschwür am gesunden Menschenverstand und dem natürlichen Leben. So eine Flasche zeigt ziemlich extrem, wie schlimm diese Krankheit die Menschheit schon befallen hat.

Die Krankheitserreger der Wirtschaft denken sich immer neue Möglichkeiten aus, wie man bei anfälligen Opfern einen Bedarf schaffen kann, auf den niemand bei klarem Verstand kommen kann. Egal wie abwegig eine Idee ist – sie schaffen es, einen Markt dafür zu schaffen. Das zumindest ist – bei allem Unverständnis – schon recht genial.

Edit: Ich habe den Beitrag etwas umformuliert, denn ich muss mir eingestehen, dass ich Käufer aber nicht beleidigen darf und will. Aber ich verstehe es dennoch nicht, dass man sich so etwas kaufen kann.

Eine Zahl in Faktoren zerlegen – neu in meinem Tutorial zu Python

Seit Dienstag der letzten Woche bis gestern habe ich zusammen mit meinem einen Sohn eine Radtour vom Bodensee Ecke Konstanz über Schaffhausen und die Rhein-Fälle, den Zürich-See, den Walen-See, Lichtenstein, Vorarlberg und dann auf der deutschen Seite des Bodensees zurück gemacht. 8 Tage waren wir unterwegs, wobei 2 Tage für die An- und Abreise gedient haben.

Auf so einer – für mich zumindest – langen Radtour über 6 Tage auf dem Rad haben wir Gepäck gespart, soweit es ging. Damit das bewegende Gewicht im Rahmen bleibt. Also auch keinen Rechner dabei. Nur halt SmartPhones, was in modernen Zeiten ja klar und irgendwie auch notwendig ist. Außerdem wollte ich in meinem ersten wirklichen Urlaub seit langer Zeit auch mal komplett von der IT und dem täglichen Business abschalten und habe mich weitgehend abwesend gemeldet.

Trotzdem habe ich natürlich meine E-Mails gelesen und letzte Woche die Meldung von LinkedIn Learning mitbekommen, dass mein Kurs jetzt verfügbar ist. Diese Info bekomme ich jede Woche per E-Mail, wenn in meinem Kurs der neuste Entwickler-Tipp der Woche zu Python bei LinkedIn Learning veröffentlicht wurde. Also „Business as usual“ dachte ich.

Mittwoch ist der neue Tipp am Morgen wie üblich freigeschaltet worden und am Donnerstag oder Freitag kam für mich die übliche Mail, damit ich diese Information auf LinkedIn und anderen sozialen Netzwerken teile, um die Anzahl der Kursansichten zu erhöhen. Nur war ich eben in Urlaub und habe die Zeit ausnahmsweise mal auf mein  sonst übliches Teilen als auch das Posten im Blog oder das Kontrollieren des Kurses verzichtet.

Nachdem ich gestern heimgekommen bin, ist mir aber aufgefallen, dass der neuste Tipp noch der war, der bereits vor meinem Urlaub schon freigeschaltet war – wie man grafische Oberflächen mit PyQt erstellen kann. Sieht so aus als hätte die Matrix eine Fehlfunktion gehabt und meine Urlaubszeit versehentlich auf die Veröffentlichungsroutine gespiegelt ;-).

Aber natürlich ist das kein Problem. Es geht ja nichts verloren und mittlerweile ist der Kurs auch schon ziemlich umfangreich. Ob das Wachstum da eine Woche steht oder nicht, ist nicht wirklich von Bedeutung.

Und heute kam jetzt wieder eine Aktualisierung. Es geht darin darum, wie man eine Zahl in Faktoren zerlegen kann. Wenn man eine Zahl vorliegen hat, kann es zu verschiedenen Zwecken interessant sein, die einzelnen Ziffern der Zahl einzeln zu haben, das heißt, diese Zahl in ihre Faktoren zu zerlegen. Dazu gibt es verschiedene Möglichkeiten, von denen ich vier in dem Video zeige.

Radreisen mit dem SmartPhone organisieren

Ich habe gerade mit meinem Sohn einen Radurlaub über gut 400 Kilometer vom Bodensee durch die Schweiz, Lichtenstein und Vorarlberg hinter mir und dabei versucht, von unterwegs mit dem SmartPhone wesentliche Aspekte der Reise (Kontakt zur Außenwelt, Routing, Organisation von Übernachtungen, Wettervorhersagen) zu organisieren. Mit mehr oder weniger Erfolg. Im Grunde bin ich etwas frustriert wegen der Probleme, die das SmartPhone dabei gemacht hat. Oder vielleicht besser – der Unzulänglichkeiten in der Realität gegenüber meinen Erwartungen und/oder den Versprechungen der Hersteller/Anbieter.

Klar nutze ich das SmartPhone im „täglichen Leben“ auch für die eben genannten Aufgaben. Nur wenn ich darüber nachdenke – fast immer ziehe ich den PC vor oder habe zumindest den PC als Unterstützung im Einsatz. Selbst das Routing zu einem Ziel bereite ich lieber am PC vor, auch wenn ich dann unterwegs natürlich nur von der App auf dem SmartPhone geführt werde. Aber bei der Reise haben wir extrem auf Gewicht geachtet und selbst das leichteste Notebook wäre mir mit Ladeteil einfach zu viel Zusatzgewicht gewesen. Deshalb eben haben wir uns eben für unterwegs voll auf SmartPhones verlassen.

Offensichtlich sind wir auch wohlbehalten von der Tour zurück. Aber mein Eindruck von dem ganzen Apps als auch dem SmartPhone als Hardware der Wahl sind sehr zwiespältig.
Was den Aspekt der Hardware angeht – mein Akku hat bei einem vollen Tag mit Wegführung durch eine App am Ende schlapp gemacht. Ok – das Gerät ist jetzt auch schon fast 3 Jahre alt und wegen des Hersteller-gewünschten Nachlassens des Akkus kann das bei einem Neugerät vielleicht besser sein. Aber dennoch enttäuschend und leider deshalb sehr suboptimal, weil mal ja gerade am Ende der Tour meist die Wegführung braucht, um Hotel etc. zu finden. Mein 2. Problem – der kleine Bildschirm, auf dem man etwa nicht so einfach die Beschreibung eines Hotels und die Anzeige der Karte parallel betrachten kann. Ich brauche einfach  in so Situationen mehr Informationen zeitgleich als es ein so winziger Screen anzeigen kann. Dazu kamen noch einige Unzulänglichkeiten mit dem Erkennen von Karten im Sonnenlicht und der Genauigkeit bzw. Verfügbarkeit von GPS sowie Kartenanzeigen im Offlinemodus (auch wenn ich die Karten – wenn es ging – bereits vorher geladen hatte).
Was nun die Apps angeht. Ich bin von den Routing-Apps total enttäuscht. Allen! Sie unterstützen das Reisen mit dem Rad einfach nicht so, wie es oft versprochen wird. Beim Autofahren sind sie (meist) ok, aber nicht beim Radfahren. Google Maps schon gar nicht, aber auch die speziell für Radfahrer etc. optimierten Apps wie MapsMe oder Koomot habe mich enttäuscht. Wir wurden oft in die Irre geleitet, der Weg wurde verloren, die angeblichen Entfernungen haben nicht gestimmt, die Anpassung während der Fahrt ging nicht wirklich bequem und wir wurden sogar auf eine Fähre geleitet, die an dem Tag gar nicht gefahren ist. Da ist noch verdammt viel Luft nach oben. Bei meiner nächsten Radreise werde ich auf jeden Fall – trotz Notwendigkeit zur Gewichtoptimierung – eine gute Karte mitnehmen, denn vor allen Dingen die Orientierung hinsichtlich weiter entfernter Ziele funktioniert auf dem SmartPhone grottenschlecht. Man muss sich zu viel darauf verlassen, dass der vorgeschlagene Weg und die nächste Abzweigung wirklich ok sind. Das mag ich gar nicht.
Das Buchen von Unterkünften habe ich mit mehreren Apps versucht und auch das war teils suboptimal. Definitiv ist es besser und günstiger, wenn man die Unterkünfte ohne Anbieter von Buchungsportalen auswählt – nur auf einem SmartPhone ist das eben ob der oben genannten Beschränkungen der Hardware kaum sinnvoll machbar. Also kommt man zwangsweise zu den Buchungsportalen und die wollen die Hotels etc. im Grunde ja nicht, da sie Provision abdrücken müssen. Also hat man immer ein schlechtes Gewissen, wenn man diese Übernachtungsdrücker dazwischenschaltet. Oder man bekommt das sogar vor Ort zu spüren, dass es angenehmer gewesen wäre, wenn man die Portale vermieden hätte. Dennoch – wenn man am Vortag oder am Morgen eine Übernachtungsmöglichkeit bereits suchen und buchen will, geht das zumindest zuverlässig mit den verschiedenen Apps.
Einzig überzeugend fand ich die Wetterprognosen von den verschiedenen Apps. Da sehe ich keinen Vorteil bei der Nutzung mit dem PC.
Den Mängel der Organisation der Reise von unterwegs mit dem SmartPhone steht aber eine insgesamt sehr schöne Tour gegenüber und das ist für mich am Ende das Wichtigste.

Lambda-Ausdrücke in JavaScript

Diverse Trainings von mir bei LinkedIn Learning (LiL) werden nach und nach modifiziert bzw. erweitert, wenn mir etwas einfällt und/oder die Entwicklung von Technologien über die Zeit das sinnvoll macht. In meinem aktuellen JavaScript Grundkurs 2: Programmiertechniken und Frameworks war das gerade wieder der Fall und gestern wurden die Erweiterungen freigeschaltet. Ich hatte da bisher Lambda-Ausdrücke sehr stiefmütterlich behandelt. Was 2 Gründen geschultet war:

  1. Ältere Browser haben diese nicht unterstützt.
  2. Anonyme Funktionen bzw. innere Funktionen decken in JavaScript im Grunde alles ab, was Lambda-Ausdrücke leisten. Diese Sprachvorteile haben die meisten anderen Programmiersprachen nicht und Lambda-Ausdrücke kompensieren dort hauptsächlich diesen Mangel. Die Notwendigkeit für Lambda-Ausdrücke in JavaScript besteht also im Grunde nicht oder besser nicht so stark.

Dennoch war es Zeit, das Thema zu ergänzen. Denn mittlerweile sollten die Browser, die Lambda-Ausdrücke nicht unterstützen, verschwunden sein, viele Programmierer setzen diese Lambda-Asudrücke in der Praxis ein (oft, weil vom Konzept analog zu anderen Sprachen) und die Syntax ist oft kompakter als bei anonymen Funktionen.

Deshalb habe ich gleich drei Videos rund um Lambda-Ausdrücke in JavaScript ergänzt:

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.

 

Es muss nicht immer tkinter sein – die PyQt-Alternative

Wenn Sie grafische Oberflächen mit Python erzeugen wollen, ist das integrierte tkinter-Framework in der Regel die erste Anlaufstelle. Der Grund ist offensichtlich – tkinter steht standardmäßig im Python-API zur Verfügung und hiermit können Sie bereits wunderbar grafische Oberflächen erzeugen.

Es gibt allerdings Alternativen. Beispielsweise PyQt. Zwar muss man PyQt in der Regel erst einmal installieren, aber man erhält damit ein GUI-Framework, das  eigentlich auf C++ aufbaut, wovon es aber diverse Derivate für verschiedene Sprachen gibt. Eben auch für Python in Form von PyQt. Damit kann man Oberflächen recht leicht zwischen verschiedenen Programmierapachen bzw. Systemen portieren.

Die Grundidee basiert, wie bei allen grafischen Oberflächen mittlerweile, auf Widgets und einem sehr verwandten Konzept. In dem neusten Entwickler-Tipp der Woche zu Python bei LinkedIn Learning zeige ich den Ansatz, wie man grafische Oberflächen mit PyQt erstellen kann.

Da isses endlich – mein neues Training bei LiL zu Kryptografie und Steganografie mit Python

Gerade wurde mein neustes Training Kryptografie und Steganografie mit Python bei LinkedIn Learning (LiL) freigeschaltet. Als Sicherheitsthema mehr oder weniger „zeitlos“ und deshalb – da nicht zeitkritisch – ungewöhnlich lange in der Produktion gewesen, finde ich es persönlich aber wahnsinnig interessant. Mir hat da die Einarbeitung und das praktische Umsetzen von den theoretischen Konzepten mit Python bei dem Training so richtig viel Spaß gemacht.

Um ein bisschen abzuschweifen – ich werde immer wieder gefragt, ob ich noch viel mit Mathematik zu tun habe? In der Tat ist die Frage nicht ganz einfach zu beantworten, denn wie viele Mathematiker bin ich komplett in die Computerschiene geraten. Aber hin und wieder bricht auch in dieser IT-Welt die „echte“ Mathematik durch. Beispielsweise bei Kursen wie Mathematik-Grundbegriffe für Programmierer:innen von LiL, wo „Mathematik“ schon im Titel steckt. Oder auch LiL-Kurse wie Python: Statistische Auswertungen haben offensichtlich eine Verbindung zu Teilen der Mathematik – wenngleich in Bezug zu einer Programmiersprache. Ebenso kommt Mathematik rund um die Datenanalyse und das Maschinenlernen (Python für die Datenanalyse 1: Grundlagen und Python für die Datenanalyse 2: Machine Learning) im Hintergrund massiv zum Einsatz. Wenngleich alles auf einem einfachen und praxisorientiertem Level – aus Sicht von Mathematikern gesehen. Also mathematische Beweise habe ich etwa seit meinem Studium nicht mehr geführt.

In meinem neusten Training hingegen kommt die Mathematik sogar ebenso recht intensiv zum Einsatz – mehr als es der Titel Kryptografie und Steganografie mit Python deutlich macht. Denn die Verfahren, die hierbei eine Rolle spielen, erinnern mich durchaus an das Thema Zahlentheorie, das ich im 2. Semester hatte, und allgemein die Algebra und Logik sowie sogar ganz wenig die Stochastik. Aber das Training versucht dennoch die Mathematik mehr in den Hintergrund zu stellen und das praktische Probieren in den Fokus zu nehmen. Was liegt denn hinter den ganzen Fachbegriffen und Techniken und kann man das auch ganz einfach und praktisch sich veranschaulichen? Ich selbst brauche bei komplexen Themen immer einen maximal vereinfachten Ansatz und wenn ich den verstanden habe, kann ich mich Schritt-für-Schritt an die komplexen Level ranarbeiten. Getreu dem Motto, dass Mathematik ganz einfach ist – die Komplexität entsteht nur daraus, dass ganz viele einfache Dingen zusammengesetzt sind. Hat man die Einzelteile verstanden, versteht man auch das Gesamte.

Also kümmere ich mich in dem Training darum, was genau hinter Sicherheitstechniken wie Verschlüsselung und Signaturen steckt oder was unter Steganografie zu verstehen ist. Die Programmiersprache Python eignet sich hervorragend dazu, sich mittels praktischen Beispielen in diese Thematik einzuarbeiten, da wichtige Funktionen bereits in der API bereitgestellt werden. In diesem Videokurs erfahren Sie alles Wichtige zu AES und RSA und Sie lernen einfache Verschlüsselungs- und Angriffstechniken zu entwickeln und anzuwenden. Anhand von Code-Challenges am Ende eines Kapitels können Sie das Erlernte sofort testen und Ihre Lösung mit der angebotenen »Solution« vergleichen. Parallel zu vielen kleinen und einfachen Beispielen entsteht in dem Training ein komplexes Programm, das eine grafische Oberfläche bereitstellt und Daten sowohl verschlüsseln, verstecken und signieren sowie die Informationen wieder herstellen kann.

Ich gehe davon aus, die Zielgruppe von dem Training eher geringer ist als bei vielen anderen Grundlagenthemen von mir, aber was rein meine Interessen und das Fachliche angeht, sehe ich in dem Kurs vermutlich das Highlight meiner bisherigen Videotraining.

Der JSON-Kleber zwischen Python und JavaScript

Ich ömmel mich immer noch weg, wenn ich mich daran erinnere, wie JavaScript früher schlechtgeredet wurde. Oder wenn auch heute noch Leute abschätzig von JavaScript reden und dann ständig mit JSON arbeiten. Das ist wie bei den Unwissenden, die über Linux lästern oder angeblich niemals verwenden würden und dann ihr Android-Handy, ihren Smart-TV, ihr Entertainment-System im Auto etc. verwenden. JSON ist ja pures JavaScript, aber zudem mittlerweile ein Datenformat, was aus dem modernen Datenaustausch nicht mehr wegzudenken ist. Auf Klartextbasis kann man über JSON beliebige Datenstrukturen austauschen, man kann aber auch Programme konfigurieren und ähnliche Dinge machen. Und nahezu alle Sprachen unterstützen JSON mittlerweile. Natürlich auch Python.

In Python gibt es im Modul json Möglichkeiten, womit man JSON serialisieren und deserialisieren kann. Mit anderen Worten – man kann ein JSON-Objekt bzw. eine JSON-Datenstruktur nehmen und daraus einen String machen und einen so stringifizierten JSON-Ausdruck wieder zurück in ein Objekt wandeln. In dem aktuellen Entwickler-Tipp der Woche zu Python bei LinkedIn Learning geht es genau um das Thema.

all und any

In dem aktuellen Entwickler-Tipp der Woche zu Python bei LinkedIn Learning geht es um die Funktionen all und any. Das sind zwei Funktionen, mit denen Sie bei sequentiellen Datentypen überprüfen können, ob die Elemente darin True- oder False-Zuständen entsprechen. Dabei wird ja in Python alles, was ungleich 0 bzw. einem Leerstring ist, als True gewertet.

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.

Mittwochs in meinem Tutorial zu Python – die Funktion map nutzen

In dem aktuellen Entwickler-Tipp der Woche zu Python bei LinkedIn Learning stelle ich die Funktion map vor, die in gewisser Weise einem Lambda-Ausdruck ähnelt. Man hat eine iterierbare Struktur und wendet auf jedes Element dieser Struktur eine bestimmte Funktionalität, sprich eine Funktion, an.

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.

Mein erstes Buch in 2022

In der letzten Zeit schreibe ich bedeutend weniger Bücher als früher. Über viele Jahre war es üblich, dass ich neben Schulungsunterlagen und Beiträgen in Fachzeitschriften pro Jahr regelmäßig noch mindestens  2 – 3 Bücher geschrieben habe. Meine Publikationen haben sich mittlerweile aber mehr auf Schulungsunterlagen und vor allen Dingen Videoproduktionen bei LiL verlagert.

Aber ganz kann ich das Schreiben von Büchern nicht lassen. Entweder im Selbstverlag, aber auch weiter bei großen Verlagen wie Springer. Und da ist heute mein Buch zu JavaFX bzw. OpenJFX erschienen.

Es handelt sich um eine Aktualisierung meines JavaFX-Buchs aus dem Jahr 2014. Das war also wirklich in die Jahre gekommen, aber jetzt ist die Sache wieder auf dem aktuellen Stand.

Auch wenn JavaFX mittlerweile „offiziell“ in OpenJFX umbenannt wurde, ist der Name JavaFX weiter präsenter und wird auch in vielen Quellen weiter verwendet. Deshalb auch der etwas „sperrige“ Name „Einführung in JavaFX/OpenJFX“.

Telekommunikationsmindestanforderungsverordnung der Bundesnetzagentur

Gerade lese ich einen Artikel, dass die Bundesnetzagentur in dem Entwurf der sogenannten „Telekommunikationsmindestanforderungsverordnung“ 10 Mbit/s im Download, eine Uploadrate von 1,3 Mbit/s und 150 Millisekunden bei der Latenz für einen Internetzugang als ausreichend ansieht. Die Bundesnetzagentur nennt das ausdrücklich „Mindestanforderungen an einen Internetzugang, der alle relevanten Online-Dienste ermöglicht“. In dem Artikel wird sich echauffiert, dass das total lächerlich wäre.

Auch wenn ich kein Freund der Bundesnetzagentur bzw. bürokratischen und veralteten Behörden bin (ganz und gar nicht) – ich teile die Ansicht, dass diese Mindestanforderungen genügen. Was da in den Medien als Mindestanforderungen gehyped und von Drückern Kunden für unbedingt notwendig verkloppt wird, ist rein auf Gaming und Streaming von HD-Inhalten ausgerichtet. Es gibt doch kein Grundrecht auf latenzfreies Daddeln von Internet-Spielen oder stumpfem Konsumieren von HD-Videos irgendwelcher Streamingplattformen.

Die Zeitschrift, die ich gerade lese, behauptet sogar glatt, dass mit 10 MBit/s keine Videokonferenzen möglich wäre. Das ist so ein lächerlicher Bullshit, dass man der Zeitschrift jede Kompetenz absprechen muss. So fundiert wie ein Umsonst-Werbeblättchen, was den Briefkasten verstopft. Angeblich ein PC-Magazin und so etwas Falsches und Dummes zu schreiben. Ich habe viele Jahre mit weniger Datendurchsatz meine Online-Schulungen gehalten und parallel haben noch andere Familienmitglieder das Internet genutzt. Angeblich hatte ich da 16 MBit/s, aber es kamen real nur etwa 8 – 9 MBit/s an. Und es ging auch. Klar – mit Glasfaser geht es jetzt besser. Das ist nicht das Thema. Reinen Unterhaltungsbedarf als Maßstab für einen ausreichenden Internet-Anschluss anzusetzen, ist dumm, tendenziös und einfach nur unseriös.

Ich bin zufällig gestern von einem Glasfaseranbieter kontaktiert worden, der mich zum Wechseln animieren und mir deren Standardtarif mit 250 MBit/s andrehen will. Den langsamsten Tarif mit 100 MBit/s würden nur ältere Leute nehmen, die nicht viel mit Internet machen. Ich musst echt an mich halten. Zwar werde ich wohl schon den Vertrag eingehen, aber hauptsächlich wegen der geringeren Kosten gegenüber meinem derzeitigen Vertrag. Da habe ich zudem „nur“ (!) 50 MBit/s, aber nicht die geringsten Bedürfnisse bisher gemerkt, die mich einen schnelleren Anschluss wünschenswert erscheinen lassen.

Und ich betone nochmal – ich schule ständig remote und lade große Datenmengen ins Netz oder runter. Nur bin ich halt kein Daddler und Streamingdienste brauche ich so notwendig wie einen Kropf.

Ich will nicht infrage stellen, dass die zukünftigen Anwendungen immer mehr Datendurchsatz verlangen werden, aber derzeit ist die Aussage der Bundesnetzagentur einfach nur sinnvoll und seriös.

Multiplikation von sequenziellen Datentypen – wieder was Neues in meinem Tutorial zu Python

Mittwoch und ich schaue., welcher neue Entwickler-Tipp der Woche zu Python bei LinkedIn Learning veröffentlicht wurde. Denn in welcher Reihenfolge die Tipps freigeschaltet werden, entzieht sich meiner Kenntnis – oder besser meinem Bewusstsein. So gesehen bin ich selbst jeden Mittwoch überrascht und immer ganz aufgeregt, was denn hinter dem Türchen des Weihnachtskalenders verbirgt. 🙂

Es geht in der Woche um die Multiplikation von sequenziellen Datentypen. Es gibt meiner Meinung nach kaum eine Sprache, die diese Multiplikation von sequenziellen Datentypen so einfach macht wie Python.