Java 16 ist da

Jetzt lerne ich JavaDie Version 16 von Java wurde gerade freigegeben. Seit der Einführung von Java 10 im Jahr 2018 verfolgt Oracle einen halbjährlichen Release-Plan. Damit soll man schneller auf Neuerungen im IT-Umfeld reagieren können. Ich persönlich finde die permanenten neuen Versionen allerdings nervig bzw. lästig. Die jeweiligen Neuerungen sind oft nur unter der Oberfläche, eher von kleiner Natur oder werden groß angekündigt und dann doch nicht implementiert. Das habe ich oft genug bei den letzten Versionen mitbekommen.

Aber sei es drum – auch wenn ich mich immer noch als Fan von Java sehe (vor allen Dingen den frühen Versionen), mache ich mit Java die letzten Jahre nicht mehr wirklich viel. Hin und wieder ein paar Online-Training für LiL (LinkedIn Learning) oder das Buch „Jetzt lerne ich Java“ von MuT. Aber irgendwie hat Java für mich ein wenig seinen Reiz verloren und auch die Anfragen für Schulungen oder Projekte im Java-Umfeld haben bei mir exorbitant abgenommen. Java fällt bei mir mittlerweile vor allen Dingen bei Schulungen zugunsten von Python fast komplett hinten runter. Was erstaunlich ist, denn Java war für viele Jahre neben clientseitiger Web-Programmierung meine Hauptsäule.

Was zu dem Fazit führt, dass ich gerade für April eine Java-Einzelschulung angenommen habe. Logisches Fazit, oder? 🙂

Es ist wieder Zeit für meinen Tipp der Woche

Mein Entwickler-Tipp der Woche bei LiL (LinkedIn Learning) behandelt dieses Mal einen kleinen, aber feinen Trick, um sichere Typvergleiche durchführen zu können. Der Trick an sich ist unabhängig von Python und in einigen anderen Sprachen wie JavaScript sogar noch nützlicher.

Per pickle-Modul Objekte persistent machen – der neue Python-Entwickler-Tipp

Der Name des Moduls (pickle) klingt vielleicht etwas komisch, aber es ist im Standard-API von Python eine wunderbar einfache Möglichkeit, um damit Objekte persistent zu machen. Mein Entwickler-Tipp der Woche bei LiL (LinkedIn Learning) behandelt genau dieses Thema und ist gerade veröffentlicht worden.

Aufnahmen im Kasten

Die Aufnahmen für mein neustes Videotraining für LiL (LinkedIn Learning) sind im Kasten und es stehen jetzt nur noch ein paar Korrektur- und Nacharbeiten an. Nach dem Chaos-Tag gestern mit diversen Problemen ist es dann heute ganz ok gelaufen. Nur hatte ich auch heute mehrere Abstürze – sowohl von der Aufnahmesoftware, aber auch Browser-Tabs bis hin zu Windows selbst. Letzte Woche hatte ich das Problem bei meiner Remote-Schulung schon einmal, aber da hatte ich das auf das Meeting-Tool geschoben. Das hatte ich vorher noch nie verwendet und einfach als instabil eingestuft.

Nun scheint es mir aber, dass ich bei meinem Notebook ein Problem habe. Dabei fallen mir zwei Gründe ein, die dafür verantwortlich sein könnten:

  1. Der Platz auf meiner Festplatte ist extrem eng und ich habe schon an der Auslagerungsdatei geknapst, um da etwas Luft zu bekommen. Neben dem Auslagern von Programmen auf eine externe SSD. Aber da wird die Luft verdammt eng.
  2. Ich arbeite bei Remote-Schulungen und Videoaufnahmen mit drei Bildschirmen. Neben dem Notebookbildschirm schließe ich über Adapter zwei externe Monitore an und an den Adaptern hängen zusätzlich externe Festplatten und andere Periferiegeräte. Das ist ein ziemliches Kuddel-Muddel und möglicherweise kommt da Windows mit den Kanälen durcheinander.

Ich muss beide mögliche Ursachen untersuchen. So Abstürze habe ich sonst nicht und die sind verdammt lästig.

Wieder im „Studio“

Heute habe ich wieder mit neuen Aufnahmen für LiL (LinkedIn Learning) begonnen. Aber die Sache lässt sich ungewöhnlich mühseelig an. Ständig knallen mir Fehler während der Aufnahme rein. Von Rechnerabstürzen über Authentifizierungsprobleme bis hin zu Fehlern bei den Ressourcen. Alles dabei :-(.

Aber so ganz langsam finde ich in die Spur. Ich habe genug Zeit einkalkuliert und hoffe, dass es dann ab morgen besser läuft.

Mein Tipp der Woche – plattformneutrale Skripte mit Python

Im Rahmen meiner Serie mit wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL) ist das nächste Video draußen. Es geht die Woche um die Erstellung von plattformneutralen Skripten mit Python.

CronTab, Schedule und Python

Nachdem ich vor ein paar Wochen meinen neuen V-Server auch gleich auf eine neue Version von Ubuntu umgestellt hatte, musste ich sämtliche Webseiten wieder neu einspielen. Bis auf meine Webseite zum Gleitschirmfliegen, in der ich eine Webcam und Wetterdaten von einem Flughang bereitstelle, konnte ich auch alle Seiten problemlos wieder einspielen. Nur diese Seite (ein Joomla!-System) hatte herumgezickt und deshalb habe ich sie einfach neu aufgesetzt (jedoch mit WordPress). Aber ein Feature habe ich da auf die Schnelle nicht hinbekommen – das Kopieren und Sichern des aktuellen Bildes der Webcam, das minütlich mit FTP auf meinen V-Server geladen wird.

Es ist aber ganz hilfreich, wenn man über eine gewisse Zeitspanne verfolgen kann, wie etwa schon vor Ort befindliche Gleitschirme oder Windfahnen sich verhalten, um zu entscheiden, ob sich ein Tripp an den Hang lohnt. Ich wurde sogar explizit gebeten, dieses Feature wieder bereitzustellen.

Die originalen PHP-Skripte hatte ich noch alle, aber das Zeug war so zusammengefrickelt (wie so oft), dass ich erst einmal meine eigenen Codes nicht mehr verstanden habe.

Aber da ich parallel im Moment Themen sammle, die ich irgendwann in meinen wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL) verwenden kann, kam ich auf die Idee, das Kopieren doch mit Python statt mit PHP zu machen sowie auch das Schedulen vielleicht auch gleich mit Python. Es gibt ja dazu das sched-Modul und/oder die klassischen Module shutil, datatime und time. Dazu gibt es noch in der Community das zusätzliche Module schedule. Also habe ich mich damit eine Weile beschäftigt. Allerdings kam ich darüber über kurz oder lang auch auf die eigentlichen Crontabs von Linux/Unix. Und wenn man die genauer ansieht, ist es fast einfacher, die direkt zu schreiben, als sie von einem Framework wie dem schedule-Modul generieren zu lassen.

Auf der anderen Seite musste ich zudem noch meinen V-Server weiter konfigurieren. Dabei habe ich auf dem Weg nano nachinstalliert, denn ich greife ja per SSH auf den V-Server zu und mit Erschrecken festgestellt, dass da bisher mir nur vim zur Verfügung stand. Also so rudimentär will ich doch nicht mehr arbeiten.

In der Folge habe ich meine neu erstellen Python-Skripte zum Kopieren der Dateien und dem täglichen Löschen des Verzeichnisses (mein Server soll ja nicht volllaufen) hochgeladen und in die CronTab direkt eingebunden. Das geht ganz einfach und logisch, wenn man sich von der Syntax nicht abschrecken lässt.

  • crontab -e öffnet die CronTab-Datei.
  • Wenn man mit nano arbeitet, kann man mit Strg+o die Datei speichern und mit Strg+x den Editor verlassen. Mehr braucht man da eigentlich nicht zu wissen.
  • Mit crontab -l kann man sich alle Cronjobs anzeigen lassen und
  • mit crontab -r bei Bedarf alle Cronjobs löschen (was aber brutal ist, weil direkt alles weg ist).

Die eigentlichen Einträge in der CronTab sehen etwa so aus:

# m h dom mon dow command
*/2 8-20 * * * python3 [pfad]/copierereichenbach.py >> /var/www/vhosts/rjs.de/rb.autoren-net.de/thumb/log.txt
* 5,23 * * * python3 [pfad]/loeschereichenbach.py

Das kopiert dann alle 2 Minuten in der Zeit von 8 bis 20 Uhr das aktuelle Bild der Webcam und um 5 und 23 Uhr wird das Verzeichnis gelöscht.

In Python selbst arbeite ich mit shutil.rmtree() und os.mkdir() beim Löschen des Verzeichnisses. Einfach alles weghauen und dann das Verzeichnis neu erstellen.

Beim Kopieren nehme ich shutil.copy2() und hänge an den Standarddateinamen einfach einen Timestamp an der von datetime.datetime.now().timestamp() geliefert wird.

Das Anzeigen der Bilddateien mache ich natürlich weiter mit PHP – da konnte ich eines meiner altern Skripts nach einer kleinen Anpassung wieder verwenden.

Tipp Nummer 2 der wöchentlichen Python-Entwicklertipps bei LinkedIn Learning

Letzte Woche ist meine Serie mit wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL) gestartet, in denen ich ergänzend zu meinen „normalen“ Kursen bei LiL über einige Monate jede Woche neu einzelne Videos mit Python-Entwicklertipps veröffentliche.

Der heute veröffentlichte Beitrag zeigt, wie man in Python über ein Objekt iterieren kann. Die Sache passt ganz gut zu dem heutigen Tag, denn genau das habe ich so ziemlich als Letztes in meiner aktuellen Python-Schulung, die ich über die Woche als Remoteveranstaltung halte, vorgeführt.

Python-Entwicklertipps: Jede Woche neu bei LinkedIn Learning

Heute starten meine wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL). Ergänzend zu meinen „normalen“ Kursen bei LiL werden ab sofort über einige Monate jede Woche neu einzelne Videos mit Python-Entwicklertipps veröffentlicht.

Der heute als „Starttipp“ veröffentlichte Beitrag zeigt, wie man in Python eine angepasste To-String-Funktionalität bereitstellen kann.

Performance von SSD und HDD testen

Ich bin mit meinem Huawei Matebook sehr zufrieden. Nur ist die Festplatte einfach zu klein. Ich bin dermaßen am Limit, dass ich immer wieder Sachen löschen muss, wenn ich neue Daten oder Programme da benötige. Gerade aktuell musste ich wegen Cordova noch zusätzlich Visual Studio 2017 installieren und damit ist meine Festplatte jetzt nahezu dicht. Ich habe schon diverse Sachen deinstalliert und nur noch eine Auswahl meiner Daten auf der SSD.

Nun hänge ich sowieso immer wieder eine externe Festplatte per USB an. Das taugt für Daten ganz gut (etwa Videos, die ich für LinkedIn Learning einspiele). Aber da die Festplatte nicht einmal USB-3 unterstützt, ist das Auslagern von Programmen auf die Festplatte nur suboptimal und auch bei großen Datenmengen dauert das Laden und Schreiben mir zu lange. Deshalb habe ich mir eine externe SSD mit USB-3/Thunderbold-Anschluss bestellt. Darauf sollte auch das Installieren von Programmen Sinn machen. Gerade portable Versionen werde ich darauf auslagern.

Um aber überhaupt einmal mitzubekommen, wie groß die Unterschiede beim Lesen und Schreiben sind, habe ich mir gerade das Programm CrystalDiskMark geladen. Aber im Grunde kann man die Performance von Datenträgern auch mit Windows-Bordmitteln testen.

In einer Admin-Console oder der Powershell kann die Tests ausführen:

winsat disk -seq -read -drive x
winsat disk -seq -write -drive x
winsat disk -ran -read -drive x
winsat disk -ran -write -drive x

Das werde ich mal auf meinen Rechnern durchspielen – sowohl auf die fest verbauten SSD und HDD als auch die externen Ressourcen an verschiedenen Anschlüssen.

Docker und Windows – nicht wirklich prickelnd

Je mehr ich mich mit Docker beschäftige, desto mehr macht mir die Sache Spaß. Docker ist verdammt interessant und ich sehe für mich da wirklich einige Anwendungen – auch über Cordova hinaus.

Cordova

Ich werde das Docker-Thema auf jeden Fall vertiefen und wohl auch mein Cordova-Training bei LinkedIn Learning (LiL) dahingehend auf Stand bringen. In meiner Linux-VM habe ich jetzt das Cordova-Image soweit aktualisiert, angepasst und erweitert, dass das Kompilieren einer Android-App sauber durchgeht. Das war ja das ursprüngliche Ziel, warum ich mich wieder mit Docker beschäftigt habe.

Aber unter Windows bekomme ich Docker einfach nicht vernünftig zum Laufen. Ich habe den Standard-Docker-Desktop installiert und Docker läuft im Grunde auch unter Windows. Aber ich kann kein Image laden und nicht einmal den beiliegenden Testcontainer starten. Weder auf meiner Workstation mit Windows 10 Pro noch meinem Mate-Notebook mit Windows 10 Home. Die meisten Fehler deuten darauf hin, dass die Docker-Engine nicht gefunden wird (sowas open \\.\pipe\docker_engine_linux), Rechteprobleme oder das Image nicht geladen werden kann. Fängt man an zu schrauben, gibt es auch leicht Probleme mit dem Daemon etc.

Im Internet findet man zu den Problemen gut 30 – 40 verschiedene Lösungsvorschläge. Leider nur die klassischen Ideen, auf die man auch selbst kommt. So etwas wie

  • Neustart von Daemon, Console, Rechner etc.,
  • Admin-Rechte nutzen,
  • an Hyper-V und WLS2 rumdrehen,
  • Firewall konfigurieren,
  • mit net stop und net start den Service neu starten,
  • die Powershell statt der normalen Konsole verwenden bis hin
  • zur Neuinstallation von Docker.

Also reine Standardware bzw. die üblichen Tipps, die bei mir nicht den geringsten Erfolg gebracht haben.

Nun kam aber das Komische. Auf meinem alten Notebook – auch mit Windows 10 Pro – läuft Docker. Keine Ahnung warum. Sehr seltsam … – aber ich werde auch da dann mal das Cordova-Image versuchen zu installieren. Es scheint im Moment zu laden, aber im ersten Versuch gab es schon nach einer Weile einen Abbruch :-(.

Ich werde Docker wohl morgen auf meinem iMac testen, aber ich gehe davon aus, dass ich auch da keine Probleme bekomme. Ist ja die gleiche Basis wie Linux.

Neue Marketingaktion von LinkedIn Learning: Kurse, die Jobsuchenden zum passenden Job verhelfen

Aktuell bin ich wieder an den Aufnahmen zu einem neuen Training für LiL (LinkedIn Learning). Nachdem ich gestern bis ca 21:30 Uhr am Schaffen war, war ich heute morgen ziemlich früh wach geworden, weil vor dem Haus eine Schneeschippe über den Asphalt gekratz hat. Ein kräftiges Schneegebiet ist in der Nacht über die Gegend gezogen.

Erst einmal bin ich wieder an weitere Aufnahmen gegangen, aber der schöne Schnee hat mich dann gleich zu einer Unterbrechung mit einem Waldlauf gebracht, um das Winterwunderland zu geniesen, bevor wieder alles wegtaut.

Danach bin ich weiter an die Aufnahme, wobei eben die E-Mail reinkam, dass bei einer neue Marketingaktion von LinkedIn Learning, die heute angelaufen ist, mein Kurs zu Python dabei ist. Es handelt sich dabei um 5 Kurse, die bis zum 30. Januar 2021 freigeschaltet sind.

Die Kampagne im Überblick

Die Jobsuche ist immer eine Herausforderung, jedoch in der aktuell schwierigen wirtschaftlichen Situation ist diese noch viel schwerer.

LinkedIn Learning möchte gerne helfen. Dazu haben wurde eine Liste der Top-Kurse aufgestellt, die Mitglieder, die im letzten Jahr erfolgreich einen neuen Job gefunden haben am meisten angesehen haben. Einer dieser Kurse ist eben mein Kurs zu Python.

Es stehen die erste Videoaufnahmen 2021 an

 

Nächste Woche geht es richtig los mit neuen Videoaufnahmen für LinkedIn Learning (LiL).
Das Jahr 2021 startet für mich also direkt mit Videoaufnahmen.

Heute habe ich mich aber schon in meinem „Studio“ in Eppstein eingerichtet, das erste Probevideo aufgenommen und auf Sharepoint geladen.

Während ich der Dinge (sprich – der Kontrolle, ob alle Einstellungen ok sind) geharrt habe, habe ich einen kurzen Waldlauf über den Staufen gemacht. Obwohl es am Anfang brutal hochgeht, ist das meine absolute Lieblingsstrecke. Und da im Moment Eppstein direkt an der Schneefallgrenze liegt, gibt es im Tal zwar kaum Schnee, aber oben auf dem Staufen ist es richtig schön winterlich. Zwar nur ein paar Zentimeter, aber immerhin.

 

 

Weihnachtsgeschenk von LinkedIn Learning

Eben kam ein etwas verfrühtes Weihnachtsgeschenk von LinkedIn Learning (LiL) an. Vor einigen Wochen konnte sich alle LinkedIn-Instructors melden, wenn sie eine Kappe aus einem gewissen Kontingent haben wollen. „First come first serve“ oder so. Und bei mir hat es geklappt :-).

KI und Datenauswertung von Facebook anscheinend komplett fehlerhaft

Da redet alle Welt von „Künstlicher Intelligenz“ (KI oder AE) und „Big Data“ bzw. der automatisierten Datenanalyse und gerade Facebook scheint es nicht hinzubekommen, aus Daten die richtigen Schlüsse zu ziehen. Ich werde seit einigen Monaten mit irrelevanter Werbung genervt. Dummerweise habe ich mich auf das Spiel eingelassen und die dann versucht zu verbergen und auch explizit als „irrelevant“ angeklickt. Seit dem bekomme ich sie immer mehr angezeigt. Rein aus Ärger habe ich das Prozedere jetzt gut 20 – 30 Mal gemacht und jetzt bekomme ich als Resultat diese Werbung ausschließlich vorgesetzt.

Frei nach dem Motto. „Dich interessiert das nicht und du wirst es nie kaufen? -Dann nerven wir so lange, bis du aufgibst!“

Es ist so auffällig, dass es nur so sein kann, dass in irgendeinem Auswertealgorithmus von Facebook ein Pluszeichen und ein Minuszeichen wohl vertauscht sind. Je weniger ein Thema interessant ist, desto mehr Werbung aus dem Bereich schicken wir. Das sollten die Werbetreibenden auch mal beachten, bevor sie der Datenkrake Geld für vollkommen falsch platzierte Werbung in den Rachen werfen. Und als Anwender darf man nicht eine der angebotenen Interaktionslinks von Facebook anklicken. Auch wenn man da anscheinend gewisse Dinge einstellen kann – das wird in jedem Fall negative Folgen haben :-(.

Vielleicht sollten die Programmierer bei Facebook mal meine Trainings bei LinkedIn Learning zur Datenanalyse ansehen.

Tools mit Python entwickeln – neuer Onlinekurs

Und da isses ja – mein neues Onlinetraining von LinkedIn Learning (LiL). Gerade rechtzeitig zum Wochenende veröffentlicht. Thema bzw. Titel ist „Tools mit Python entwickeln – Software & Tools„.

Es handelt sich wieder einmal um eine US-Adaption, in der die Strategien und Techniken der Erstellung von Tools mithilfe von Python ausgearbeitet werden.

Künstliche Intelligenz und Überwachung – sehenswerter, wichtiger Beitrag auf ZDF Info

Bei ZDF Info ist ein sehr guter, informativer und ziemlich beunruhigender Beitrag zum Thema „Künstliche Intelligenz und den Wettlauf der Großmächte“ zu finden. Weniger technisch, aber die Auswirkungen auf die Arbeitswelt und vor allen Dingen auf die Privatsphäre werden da beleuchtet. Mit den „üblichen“ Ausführungen zu der kompletten Spionage durch Facebook, Google und Co über ihre Webseiten als auch die sogenannten „Smart“-Geräte (Synonym für Wanzen), aber auch wie Staaten versuchen, mit Überwachung als auch KI (oder auch kurz AI für artifizielle Intelligenz oder englisch AE für artificial intelligence) das ganze Volk unter komplette (Gedanken-)Kontrolle zu bekommen (und leider tut sich da gerade China ziemlich negativ hervor). Aber es wird auch vertieft, wie man durch (as-)soziale Medien gezielt manipulieren kann. Die damalige Cambridge-Manipulation der US-Wahl durch Facebook-Daten als Aufhänger, wird auch das Thema weiter gesponnen.

Alles in allem beunruhigende Vorstellungen, ich mich sowohl als reines Opfer (Bürger bzw Kunde bzw einfach Mensch) betreffen, aber zudem meine eigene Arbeit berühren. Denn ich verdiene ja durchaus an Techniken wie Künstlicher Intelligenz, Datenauswertung im Allgemeinen, Data Science oder Big Data und Maschinenenlernen sowie Datenanalyse. Sei es durch Videotraining bei LinkedIn Learning (LiL), sei es durch Schulungen, die in dem Umfeld ablaufen (gerade heute habe ich ein Vorabgespräch zu so einer Schulung gehabt).

Ich habe definitiv kein schlechtes Gewissen dabei, denn per se sind die Techniken nicht schlecht oder böse. Aber man muss verdammt wachsam sein, dass sie nicht missbraucht werden und wo sie es schon werden – sei es bei Facebook, Google, Apple, Amazon oder auch Staaten, muss man dies immer wieder deutlich machen. Das gilt gerade für Leute für mich, die zumindest im weiteren Zirkel der Entwicklung aktiv sind.

Es gibt einfach zu viele Eloi in der Welt und die Morlocks haben zu leichtes Spiel.

Und was ich gerade beim Schreiben des Beitrags nur beiläufig bemerkt habe – in meinem Firefox Browser war plötzlich die Standardsuchmaschine von DuckDuckGo auf Bing umgestellt. Die Jäger versuchen wirklich mit allen Tricks Opfer zu erlegen. Eine Sekunde nicht aufgepasst und man verwendet keine sichere Suchmaschine wie DuckDuckGo mehr, sondert landet mit Suchanfragen bei einer Datenkrake.

Uffbasse Leute, uffbasse!