Linux und die Denkfabrik

Für die Umorganisation meiner Hardware brauche ich einen PC, auf dem ich Linux installiere. Ich habe deshalb tief in die Tasche gegriffen und etwa 40 EUR in einen wiederaufbereiteten Lenovo Desktop PC ThinkCentre M71e Intel G850 4GB RAM 120GB SSD Tiny mini gesteckt. Vorgestern bestellt und jetzt ist er schon geliefert und installiert. Das Teilchen sollte so von 2015 oder 2016 sein und ist bei irgendeiner Firma ausgemustert worden. Als Bildschirm nutze ich einen ausgemusterten Minifernseher, für den ich vor einigen Jahren auch maximal 80 EUR gezahlt hatte und der ansonsten überflüssig ist.

Ich habe nun als IT-Trainer und Programmierer andere Ansprüche als „normale“ Anwender, denen so ein Gerät sicher nicht mehr langt – von Daddlern (also Spielern) ganz zu schweigen. Aber mit einem passenden Linux ist so ein PC (fast) allen Anforderungen gewachsen, die mal als professioneller Anwender hat. Ich habe mich für Mint 21 mit Xfce entschieden. Die optischen Gimicks von Mate oder gar Cinnamon brauche ich nicht (s.o.), aber es ist trotz meiner einleitenden, ironischen Anmerkungen natürlich klar, dass das alte „Denkzentrum“ keine Power ohne Ende hat. Xfce spart da schon viel überflüssige Belastung und auch sonst ist diese Edition speziell auf ältere Hardware optimiert. Auch mein altes Terra-Notebook, das ich ins Büro nach Eppstein verlagert habe, hat im Dual Boot Mint Linux mit Xfce und da ich damit wirlich gute Erfahrungen gemacht habe, nutze ich das auch hier. Auch wenn das ThinkCenter viel neuer als das Terra-Notebook ist und ich Alternativen wie Lubuntu oder MX Linux gerne mal ausprobiert hätte.

Interessanter Weise hat die Installation ziemlich Probleme gemacht, denn nach der Installation gab es immer die Meldung von wegen „Operating system not found“. Das ThinkCenter nutzt nun kein BIOS mehr (obwohl uralt, ist es doch dafür schon wieder zu neu), sondern leider EFI. Ich habe schon mehrfach mitbekommen, dass es damit eine Menge Probleme geben soll. Gerade dann, wenn da noch Sicherheitsschranken eingezogen sind. Ich hatte die Probleme auch bei einem alternativen Linux, dass ich testweise installiert hatte, ebenso, aber nach dem 5. oder 6. Installationsvorgang hatte ich plötzlich einen Bootmanager und alles war gut. Keine Ahnung, was ich da anders eingestellt habe.

Anyway – mein erster Eindruck von dem laufenden ThinkCenter mit Mint Linux 21 Xcfe ist, dass die Kiste damit brutal schnell ist. Weit jenseits von dem, was viel neuere und potentere Hardware mit Windows erreicht.
Auch wenn meine Aufträge einfach dazu führen, dass ich fast nur noch mit Windows arbeite – Linux ist so viel besser, einfach, schneller, intuitiver, leistungsfähiger, dass es im Grunde eine Schande ist.

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.

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.

Das Windows-11-Update ist durch

Ich bin immer wieder erstaunt (oder besser erschrocken), wie lange ein Update von Windows dauern kann. Das Update von Windows 10 auf Windows 11 auf meinem UBook war gerade wieder so ein Frusterlebnis. Der Download der Installationsdateien von Windows 11 ging recht fix, da ich in meinem Büro in Eppstein DSL100 habe. Ich habe nicht wirklich aufgepasst, aber das war in so einer guten Stunde wohl durch. Danach habe ich die Installation auf  meinem Microsoft-Surface-Billig-Klon von CHUWI gestartet. Den Installationsprozess habe ich etwa 1,5 Stunden so beiläufig verfolgt und dann bin ich ins Bett gegangen, um die Sache über Nacht durchlaufen zu lassen. Ich hatte es nicht eilig, den Rechner wieder in Gang zu bekommen.

Am nächsten Morgen stand auf dem Bildschirm, dass die Installation soweit beendet wäre und der Rechner zum Abschließen der Installation und erstem Einrichten neu gestartet werden könnte. Gemacht, Kaffee gekocht und gewartet. Nach gut 20 Minuten stand die Fortschrittsanzeige auf ca. 2%. Ich wollte sowieso den Garten hinter meinem Zweitbüros von Dornen und Unkraut befreien und habe, während Windows 11  die Einrichtung und den 1. Start versucht hat, den gesamten oberen Teil mit Gartenschere und Hacke von Dornen und Unkraut befreit. Dabei bin ich mit der Hacke gut 7 – 8 Mal den gesamten Bereich durchgegangen. Selbst in der Zeit hat es Windows nicht geschafft, sich einzurichten. Erst nachdem ich den Hof noch von Blättern befreit und gekehrt hatte, war Windows mit der Sache dann fertig. Das waren 4 Stunden! Wie gesagt – ich bin jedes Mal entsetzt, wenn ich so etwas mache.

Ich sollte nicht so viel Linux verwenden, denn das versaut die Erwartungshaltung. Linux wäre auf vergleichbarer Hardware in vielleicht 10% der Zeit durch.

Aber man installiert in der Regel ja nur einmal und wenn das durch ist, muss die Sache nur funktionieren. Auch wenn es um das Tablet nicht schade gewesen wäre, wenn  die Installation schiefgegangen oder Windows 11 das Teilchen ruiniert hätte – ich wollte ja schon, dass ich Windows 11 mal ausprobieren kann. Und tatsächlich läuft Windows 11 auf diesem zwar ziemlich neuen, aber einfachen und recht schwachbrüstige Gerät.

Mein erster Eindruck von Windows 11 ist wie erwartet negativ, aber da greift sicher meine Aversion gegen Änderungen von Bewehrtem. Die Oberfläche finde ich grausam – sieht fast aus wie macOS (und das ist aus meinem Mund ein vernichtend negatives Urteil, weil ich mit Apple-Geräten einfach nicht zurechtkomme). Aber ich denke, dass ich die anpassen kann und vermutlich werde ich die Classic Shell bzw. Open Shell installieren, mit denen ich mich auch schon gegen den Desktop von Windows 10 erfolgreich verteidige. Aber erst einmal will ich die neue Oberfläche lassen (zumal Open Shell offiziell noch nicht für Windows 11 verfügbar ist) und schauen, ob meine Ablehnung wirklich nur die Aversion gegen das Neue oder fundiert ist. Denn bei Linux habe ich gegen neue Oberflächen meist weniger Aversion als bei Windows und macOS.

Microsoft hat auch unzähligen Bloatware mit Windows 11 installiert, aber die Deinstallation ging zumindest vernünftig. Weitere Bereinigungen und Optimierungen gehe ich die Tage an. Auch um das Gerät zu beschleunigen, denn gefühlt starten die Programme mi Vergleich zu Windows 10 extrem zäh und laufen auch langsamer. Ich habe zwar gehört, dass Windows 11 hier eigentlich besser als Windows 10 sein sollte, aber ich habe den gegenteiligen Eindruck. Was aber auch daran liegen kann, dass das UBook vermutlich am unteren Ende der notwendigen Hardware rangiert. Ich werde auf jeden Fall Windows 11 auf dem UBook lassen und je nach meinen persönlichen Erfahrungen entscheiden, ob ich weitere Rechner darauf umstelle oder nicht.

Liegengebliebene Tasks

Nachdem ich mit einer Remote-UML-Einzelschulung am Montag und Dienstag eine brutal lange Schulungsphase erst einmal abgeschlossen bzw. unterbrochen habe, kann ich mich jetzt endlich ein paar Tage liegengebliebenen Aufgaben widmen. Ich kann mich nicht mehr entsinnen, wann ich das letzte Mal so viele Schulungen so lange Zeit mehr oder weniger am Stück gehalten habe. Die letzten Jahre definitiv nicht mehr. Im Grunde ging diese Phase am 1. Oktober los und wurde zwar von einer Videosession für LiL und auch hin und wieder von einigen Tagen ohne Schulung unterbrochen. Aber an denen musste ich ja meine andere Arbeit samt den dauerhaften ILS-Korrekturen und Vorbereitungen der Schulungs-Sesions erledigen. Wenn man die letzten 3 Monate betrachtet, war meine Schulungsaktivität also prozentual höher als zig Jahre zuvor.
Was ich auch merke, denn ich habe die letzten Tage schon abgebaut. Ich bin mit der falschen Brille zum Radfahren gegangen, habe Stufen auf der Treppe übersehen, hatte Rücken vom vielen Sitzen, war gereizt etc. Die freien Tage über das Jahresende kommen dieses Mal wirklich dringend.
Ein Teil meiner liegengebliebenen Aufgaben dreht sich auch um die Synchronisation, Bereinigung und Neuinstallation meiner Rechner bzw. Datensicherungen. Das ist zwar auch Arbeit, aber macht mir Spaß und ist – für mich zumindest – eine entspannte bzw. sogar entspannende Tätigkeit.
Da ich gestern „geboostert“ wurde, hänge ich heute mit leichten Impfreaktionen sowieso etwas in den Seilen – zu der angesprochenen Erschöpfung durch die letzten Monate – und habe mal im Hintergrund meine Datensicherungen bereinigt bzw. mehrere externe Festplatten bereinigt und aufeinander abgestimmt. Bei der Datensicherung bin ich grundsätzlich „übervorsichtig“ und speichere im Grunde „ALLES“ redundant sowie zeitlich in ziemlich kurzen Abständen. Aber damit wird die Datenmenge auch gewaltig groß und nicht mehr wirklich überschaubar. Eine Bereinigung hatte wirklich Sinn gemacht.
Dazu habe ich mit meinem Matebook ein wirklich super schnelles, leistungsfähiges, transportables und hochwertiges Notebook. Aber als ich es Anfang 2019 gekauft hatte, gab es das Gerät zu einem adäquaten Preis nur mit einer Mini-SSD. Demensprechend bin ich dort leider immer am Limit der 256 GByte und muss regelmäßig das Teil säubern. Damit das aber nicht zu extrem wird, arbeite ich mit externen Festplatten – auch weil ich oft zwischen meiner Workstation und dem Notebook wechsele. Workstation in Bodenheim, das Matebook in Eppstein oder bei externen Einsätzen jeder Art. Die Daten will ich nicht ständig in die Cloud verschieben müssen – zumal ich der Verwendung einer Cloud sowieso in vielen Bereichen kritisch gegenüberstehe.
Nur habe ich mittlerweile zwei externe USB-Festplatten im Einsatz – eine große HD und eine kleine SSD mit 1 TByte. Zuerst war die HD (USB-2) da, aber der Performancegewinn mit der externen SSD (USB-3 bzw. Firewire) ist so groß (gemessen – Zugriffszeiten fast identisch wie bei der internen SSD), dass ich immer mehr Daten (Programme sowieso) auf diese verlagere. Damit schlägt die fehlende Kapazität meiner internen SSD nicht mehr so zu. Nur große Daten wie Videos für LiL und eines der Backups der NAS bleiben auf jeden Fall auf der externen HD. Aber …
Ich habe in der letzten UML-Schulung gemerkt, dass sich über die letzten Monate die Daten ziemlich unstrukturiert auf die externe HD und die externe SSD verteilt haben und ich auch da komplett die Übersicht verloren habe. Suchtools sei Dank habe ich zwar immer gefunden, was ich gebraucht habe. Aber die Abstimmung bzw. Neustrukturierung der beiden externen Datenträger aufeinander war mal dringend gegeben.
Eine weitere Aufgabe, die ich mir für die Jahresendtage aufgeschrieben habe, war die Reaktivierung meines uralten HP EliteBook. Das hatte ich mal als Gebrauchtgerät gekauft und es muss m.E. mindestens 12 – 15 Jahre alt sein. Vermutlich noch älter. Ich brauche es nicht wirklich und die Reaktivierung kann man fast als „Hobby“ abtun. Aber es läuft in der Tat mit Windows 10 und ich habe darauf auch lizenziertes MS-Office installiert. Die Lizenzen will ich eigentlich nicht verlieren und deshalb habe ich die Lizenzen versucht auszulesen, um sie ggfls. auf einem anderen Gerät noch zu nutzen. Das war leider nur teils erfolgreich und deshalb habe ich versucht, das EliteBook mit allen denkbaren Tools zu bereinigen, zu entschlacken und zu beschleunigen. Denn der Start von Windows als auch vor allen Dingen Programmen ist dermaßen langsam – eigentlich kann man damit nicht arbeiten. Wenn nur nicht die Lizenzen wären, die ich zum Teil einfach nicht mehr rausbekomme bzw. deren Keys ich nicht mehr finde. Als Resultat meiner Optimierung läuft das EliteBook jetzt wirklich etwas besser, aber es ist absolut an der Grenze der Verwendbarkeit. Ich bin noch am Überlegen, ob die Lizenzen es wert sind oder ich nicht lieber ein Linux darauf installieren, dass mit der uralten Hardware besser zurecht kommen wird. Wie gesagt – ich brauche das EliteBook nicht wirklich und auch die Neuinstallation mit Linux wäre unter „Hobby“ bzw. ggf.. Wissenserweiterung (wobei da nichts Neues auftreten sollte) zu verbuchen.

Der letzte Tipp mit leichter Verspätung, der aktuelle dafür schon heute am frühen Morgen

Mein regelmäßiger Entwickler-Tipp zu Python wurde letzte Woche bei LinkedIn Learning erst an Freitag freigeschaltet, aber der Entwickler-Tipp zu Python in der Woche ist heute – als am üblichen Mittwoch – schon früh  am Morgen da.

Ich begebe mich dieses Mal etwas in die Welt der Administration bzw. von Administratoren. Eigentlich für mich ein etwas fremdes Gebiet, denn ich bewege mich sonst in der Regel rein im Umfeld der Programmierung. Genaugenommen sogar überwiegend der Anwendungs- und Web-Entwicklung. Aber über die Jahre kommt man auch immer wieder mit Themen aus dem Admin-Bereich in Berührung. Ich behaupte, dass ich mittlerweile theoretisch sogar als Admin arbeiten könnte. Vielleicht wäre ich kein wirklich guter Admin, aber die meisten administrativen Dinge – insbesondere unter Linux – würde ich wohl hingekommen.

Und bei dem aktuellen Tipp geht es ja immer noch um Python. Nur halt um einen Einsatzzweck, der für Admins von Interesse ist – wie man mit Python zeitgesteuerte Befehle auf dem Server ausführen kann. Konkret nutze ich dabei Linux als Serversystem und zeige, wie man CronJobs erstellen bzw. CronTabs mit Python schreiben kann.

Deepin Linux

In der Familie wird ein Notebook für ein bisschen Textverarbeitung benötigt und wegen Black Friday & Co stand zur Diskussion, ein solches zu kaufen. Doch da ich die Preise eine Weile schon verfolge – das lohnt sich n.E. im Moment gar nicht. Für mich sieht es nach meinen Aufzeichnungen der Preise über die letzten Wochen so aus als wären die – wie üblich – die letzten Tage massiv erhöht und jetzt nur auf einen Stand reduziert worden, der immer noch über dem vor einigen Wochen liegt. Gerade bei Notebooks und anderer PC-Hardware.

Zudem schlummerten unter dem Sofa noch ein paar uralte Notebooks, für die eine Wiederbelebung eine Option war. Mein altes HP EliteBook habe ich mit diversen Tools komplett bereinigt und es scheint halbwegs zu laufen. Windows 10 und Office ist drauf und deshalb durchaus eine Option. Allerdings ist das Teil ziemlich „träge“.

Ein anderes Notebook von meinem Sohn musste ich erst an verschiedenen Stellen kleben und da war Windows nicht wirklich mehr vernünftig instand zu setzen gewesen.

Also ein Kandidat für Linux. Deepin Linux ist mir da untergekommen. Kommt aus China und basiert vom Unterbau auf Debian. Von der Oberfläche ein Mix aus macOS und Windows 11 verspricht es dennoch geringe Hardwareanforderungen. Ausprobiert und ich muss sagen – sieht verdammt schön von der Oberfläche aus und läuft smart auf dem uralten Notebook. Sonst nutze ich Mint Linux mit Xfce auf alter Hardware, aber Deepin scheint auch auf alter Hardware eine modernere und schöne GUI hinzuzaubern. Auch wenn mir Design und Optik eigentlich vollkommen egal sind – wenn es von der Funktionalität gleichwertig ist – warum nicht das optisch schöne System verwenden? Die Nachinstallation von Software, die nicht standardmäßig in den Repos zu finden ist, ist nach ersten Versuchen mau, aber als „Out-of-the-box“-System für reine Anwender scheint das zu taugen.

Mac Mini als Druckserver

Im Rahmen der Neugestaltung meines Büros mit eingeschlossenem grundlegendem Neuaufbau meiner IT bin ich zwei Probleme bzw. Fragen angegangen, die ich schon viele Monate nicht so richtig gelöst habe.

  1. Wie bekomme ich meinen Drucker-Fehlkauf – den Samsung Xpress M2026w Laserdrucker – doch noch vernünftig im Netzwerk zu laufen?
  2. Was mache ich mit meinem uralten, überzähligen Mac Mini?

Der Samsung-Drucker bekommt von mir die Krone für meine schlechteste IT-Anschaffung ever. Billig war er, aber ständig hat das Dreckding Ärger gemacht. Dabei ist es nicht einmal so schlimm, dass man den Papierschacht nur halb voll machen kann und Papierstau oder nicht richtig eingezogene Blätter den Ausdruck behindern. Das Schriftbild ist zumindest ok. Aber – der Drucker ist funktioniert im W-LAN total unzuverlässig. Deshalb habe ich ihn nach viel Arbeit und Ärger irgendwann per USB an mein NAS angeschlossen. Von ein paar Rechnern – vor allen Dingen aus Linux heraus – war er damit halbwegs zuverlässig anzusprechen. Aber von mehreren anderen Rechnern ging auch dann einfach nichts. Nun habe ich beim Neuaufbau der IT in meinem Büro eine Weile experimentiert. Sowohl an mehreren Windows- als auch Linux-Rechnern wird der Drucker per USB erkannt. Aber im Netzwerk ist er – trotz Freigabe und allen denkbaren Einrichtungen – nicht anzusprechen. Man sieht ihn, aber er reagiert einfach nicht auf Druckaufträge oder die Abfrage des Status. In alle Richtungen:

  • Linux -> Linux
  • Linux -> Windows
  • Windows-> Linux
  • Windows-> Windows

Keine Chance. Ich habe sogar meinen Rasberry PI 1 als Druckserver ausprobiert, aber da wurde der Drucker noch nicht einmal richtig erkannt.

Dann kam mir mein zweites IT-Problem in den Sinn – was mache ich mit dem Mac Mini? Meine Abneigung gegen Apple-Produkte ist ja bekannt, wenn man meinen Blog liest. Die Dinger sind viel zu teuer, zu unfrei bzw. zensiert, zu eigenwillig zu bedienen und zu viel auf Schein statt Sein optimiert (Design statt Funktionalität). Aber in einem Punkt hatte ich meinen alten Mac Mini über die Corona-Krise schätzen gelernt. Über mehrere Monate musste ich mit meiner Band Corona-bedingt eine Pause hinsichtlich von Live-Proben einhalten. Aber wir hatten uns zu regelmäßigen virtuellen Proben mit JamKazam aufgerafft und das ging mit keiner anderen Hardware auch nur ansatzweise so gut wie mit dem Mac Mini. Seit wir aber wieder live proben können, habe ich einfach keinen Bedarf mehr an dem Mac Mini. Ich kann das macOS einfach nicht bedienen. Es ist mir (!) viel zu wenig intuitiv, unlogisch, beschränkt und unbequem.

Aber unter dieser unangenehmen Oberfläche und hinter dem ganzen lächerlichen Rummel um Apple befindet sich eine solide Basis. Denn der Drucker war am Mac Mini sofort eingerichtet (ok – das ging unter Linux und Windows am USB-Port auch) als auch direkt im Netzwerk verfügbar. Und das habe ich wie gesagt mit keiner anderen Konstellation hinbekommen.

Der alte Mac Mini von 2013 wird also sein – vermutlich 4. oder 5. – Leben in Zukunft als Druckserver fristen. Ohne Monitor, Tastatur oder Maus. Aber natürlich ist SSH- und VNC-Zugriff auf dem Teilchen eingerichtet – für alle Fälle.

Apropos „Für alle Fälle“: wenn die Sache mit Corona sich weiter so schlimm entwickelt, kann er (leider) vielleicht seinen Zwei-Job für virtuelle Proben mit JamKazam wiederaufnehmen :-(.

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.

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

 

 

Mint Linux 20

Mittlerweile bin ich hinsichtlich Betriebssystemen Multisprachler. Selbst einen iMac Mini habe ich gelegentlich im Einsatz (für Remotesessions mit JamKazam), obwohl ich an die Apple-Welt einfach nicht ran will und den eigentlich nur einige Jahre zur iOS-Programmierung mit XCode gebraucht habe. Natürlich muss ich mit Windows arbeiten und in der Version 10 fand ich das Betriebssystem bisher auch durchaus gut. Aber die aktuelle Update-Politik von Microsoft ist ärgerlich und zudem würde ich niemals sicherheitskritische Dinge wie Onlinebanking auf einem Windows-PC machen. Da geht für mich einfach nichts über Linux. Linux ist halt sicher, schnell, bequem, mächtig, ressourcenschonend.

Wobei ich zugeben muss, dass ich im Moment aber nur zwei Rechner unter Linux laufen lasse – die zudem mit Dualboot mit Windows. Und auch meine virtuellen Maschinen mit Linux nutze ich selten. Dennoch – alles in Allem ist und bleibt Linux mein Lieblingsbetriebssystem, wobei ich gar nicht so sicher bin, welche Distribution mein Favorit ist. Aber irgendwie bin ich bei Mint Linux hängen geblieben.

Jetzt habe ich gerade in einer Computerzeitschrift gelesen, dass die Version 20 von Mint Linux freigegeben wurde und dabei ist mir erst bewusst geworden, dass ich bei meinem Linux-Hauptrechner (meinem Terra-Notebook) auf der Version 18 (Sarah) stehen geblieben bin. Die habe ich zwar regelmäßig auf den neusten Stand gebracht, aber eben nicht upgeradet. Die Version 19 habe ich mir nur in einer VM angesehen und verpasst, diese dann in die Praxis zu übernehmen.

Jetzt musste ich den Preis zahlen, denn ein direktes Upgrade von 18 auf 20 geht nicht. Wenn man in Linux Zwischenversionen auslässt, ist das Upgrade leider etwas aufwändiger.

Erst einmal musste ich mit der Aktualisierungsverwaltung auf 18.3 upgraden und dabei zuerst den Displaymanager von MDM auf LightDM wechseln (sudo apt install lightdm lightdm-settings slick-greeter, dann sudo apt remove –purge mdm mint-mdm-themes* und dann sudo dpkg-reconfigure lightdm mit anschließendem Reboot), wobei vorher bereits mit sudo apt install timeshift Timeshift zu installieren und für Snapshots auszuführen war.

Erst danach konnte ich das eigentliche Upgrade durchführen, wobei erst auf die Version 19, dann auf 19.3 mit der Aktualisierungsverwaltung und dann (vermutlich – die genauen Upgrade-Anweisungen kommen erst im Juli raus) mit der gleichen Befehlsfolge auf die Version 20 aktualisiert werden kann:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install mintupgrade

mintupgrade check

mintupgrade download

mintupgrade upgrade

Wenn alle Rückfragen bejaht wurde und alles sauber durchgelaufen ist, kann man die Versionsnummer mit cat /etc/issue oder inxi -Sz oder auch lsb_release -a überprüfen.

Aber da die konkreten Upgrade-Features für die Version 20 wie gesagt im Juli rauskommen, lade ich mir die ISO-Dateien für XFce und Mate und installiere passende VM. Und darin werde ich mal die nächsten Tage testen, ob Mint Linux 20 wirklich so gut ist, wie es in dem Beitrag in der Computerzeitschrift beschrieben wurde.

Mein Linux-Hauptrechner ist aber zumindest auf die Version 19.3 hochgeschoben.

Speed it up – Vol 2

Ich bin verwirrt – ich habe die MTU-Werte bei meinem Linux-Rechner als auch die iMac Mini in Eppstein kontrolliert und beide stehen auf dem ungünstigen Wert von 1.500. Trotzdem ist die Download-Geschwindigkeit deutlich über den Werten, die ich mit meiner Windows-Workstation in Bodenheim erreiche. Bei dem iMac kann ich das auf die bessere Leitungsqualität in Eppstein schieben, aber warum reproduzierbar mein altes Linux-Notebook in Bodenheim einen bessern Datendurchsatz hat als die viel potentere Windows-Workstation am gleichen DSL-Anschluss, bleibt mir ein Rätsel. Aber auch mein relativ neues Huawei-Notebook (mit Abstand der leistungsfähigste PC in meiner Armada von mehr als ein Duzend Rechnern) schafft nur unwesentlich bessere Downloadergebnisse als die Workstation. Auf jeden Fall unter den Werten von dem alten Linux-Notebook – trotz dessen ungünster MTU-Einstellung.

Es bleibt mir eigentlich nur der Rückschluss, dass Windows das Problem ist und sowohl Linux als auch das macOS einfach besser sind. Auch wenn die Tests nach der Anpasung des MTU-Werts in Windows reproduzierbar weniger schlechte Messwerte im Download liefern.

Docker & wasm

Im Moment geht es in der IT mit neuen Themen schneller wie beim Bretzelbacken. Und vor allen Dingen gibt es permanent was Neues. Bzw. ich komme einfach nicht hinterher, was die Lage besser trifft.

Aktuell habe ich „Big Data“ und „Maschinelles Lernen“ im Zusammenhang mit Python „in Arbeit“. M.a.W – ich bin gerade am richtigen Einarbeiten, wobei da ja ziemlich viel Überschneidung zu meinem Studium und dem sonstigen täglichen Programmiergeschäft die Sache einfach macht.

Aber irgendwie habe ich zwei andere Megatrends bisher weitgehend ignoriert.

  • Docker
  • Webassemblies

Docker habe ich zumindest am Horizont schon länger wahrgenommen, aber einfach noch nie ausprobiert. Und da Docker mittlerweile auch schon massiv in der Kritik steht, wollte ich da eigentlich nicht ran. Aber die Entwickler auf der letzten Schulung in Köln haben auf Docker-Container geschworen und deshalb bin ich jetzt doch wieder neugierig geworden. Zumal ich eine Anfrage nach einer SQL-Schulung in der Pipeline habe, die aber nicht – wie sonst bei mir üblich – unter MySQL oder zur Not MS SQL-Server, sondern DB2 laufen soll. Ja woher soll ich denn jetzt auch noch eine DB2-Installation haben? Mit dem Teil hatte ich noch nie vorher direkten Kontakt. Antwort – ich installiere mir gerade einen passenden Docker-Container! Es ist wohl doch so, dass meine bisherige geringe Anteilnahme an der Docker-Welt ein Fehler war. Wobei ich die Installation von dem Docker-Desktop unter Windows gleich wieder gelöscht habe. Das läuft ja mit Hyper-V und das wiederum killed mein Virtual Box. No way. Ich will keine permanente Umschaltung der Virtualisierungsumgebungen. Einfach zu lästig. Also wird aus der Not eine Tugend gemacht und Docker in seinem natürlichen Habitat – Linux – betrieben. Entweder auf meinem Notebook mit dem Dualboot oder aber auf der Workstation mit Windows 10 in der Linux-VM in der Virtual Box. Geht wunderbar bei 12 Kernen und 32 Gigabyte RAM.

Das Thema Webassemblies ist dagegen vollkommen an mir vorbeit gegangen. Nur habe ich vor wenigen Tage die Meldung mitbekommen, dass wasm neben HTML, CSS und JavaScript nur die 4. offiziell von W3C abgesegnete Technologie im Web ist. Das erzwingt dringend, dass ich mir das die nächsten Tage mal genauer ansehe.

 

Windows mittlerweile viel sicherer als macOS

Ich bin überzeugt, dass Linux (von BSD ganz zu schweigen) erheblich sicherer und eigentlich auch ganz allgemein besser als Windows ist. Aber Windows 10 ist m.E. dennoch ein richtig gutes Betriebssystem. Was mich aber überrascht – ein ehemaliger Hacker der NSA hat nun dokumentiert, dass macOS erheblich unsicherer als Windows ist. Dabei stehlen sich zahlreiche Anwender von Macs aus der technischen Verantwortung, indem sie das Märchen glauben oder gar verbreiten, dass ein Mac nicht zu hacken wäre.

Dummheit trifft Sorglosigkeit – Ransomware „Wanna Cry“

Die Schadsoftware „Wanna Cry“ hat die letzten Tage zehntausende Computer weltweit blockiert. Vor allem bei Unternehmen und öffentliche Institutionen. Angeblich handelt es sich um einen der bislang größten Angriffe auf Computersysteme in aller Welt. Der Erpressungstrojaner verschlüsselt Daten und die Ersteller verlangen zur Entschlüsselung ein „Lösegeld“ in Form von BitCons. Betroffen waren unter anderem Krankenhäuser, Energieversorger oder die Deutsche Bahn.
Doch zumindest dieser Angriff war nur möglich, weil bei den Betroffenen Dummheit und Sorglosigkeit zusammen gekommen sind.

  • Wer immer noch Windows XP verwendet (was davon wohl so gut wie ausschließlich betroffen war), ist beides. 
  • Und da der Trojaner per Spam in Netzwerke infiltriert wurde, haben auch die Anwender auch ihren Teil beigetragen. Der Anwender, der jeden E-Mail-Anhang anklickt, kombiniert eben auch Dummheit mit Sorglosigkeit. 
  • Und wer nicht regelmäßig Backup macht? 
  • Und wer nicht regelmäßig Updates einspielt? 

Seltsam, dass es immer nur eine Antwort gibt. Man kann sich so einfach schützen – zumindest gegen so triviale Attacken. Zumindest soll Windows 10 immun gegen diesen einen Trojaner sein.
Mich würde auch mal interessieren, welche Konsequenzen diese Attacke für die Entscheider bei den betroffenen Unternehmen und öffentliche Institutionen hat? Müssen die den Schaden ihrer Fahrlässigkeit selbst tragen? Die angekündigten Ermittlungen gehen aber vermutlich in die falsche Richtung und versuchen die Hacker zu finden. Why? Das sind vermutlich Spy-Kiddies, die eine Einladung angenommen haben.
Auch wenn ich mittlerweile Windows 10 gut finde – bei Sicherheit gibt es keinen Kompromiss und da hilft auf die Schnelle nur Linux und mittelfristig ein gehärtetes Linux. Hallo München!! Auuuuuuffwachen! Eure Stadtverwaltung ist (noch) sicher und ihr stellt bewusst auf eine Sicherheitslücke mit riesigem Ausmaß um. Wie dumm ist das denn? Letztendlich kann der Hinweis darauf, dass Linux-Systeme so gut wie nie betroffen sind, leider bestochene (dumme und sorglose) Entscheider und unkundige Anwender aber wohl nie überzeugen.

Mit Volldampf zurück in die Steinzeit – die Münchner Stadtverwaltung migiert zurück auf Windows

Seit gut 10 Jahren arbeitet man in der Stadtverwaltung München erfolgreich mit einem angepassten Linux mit Namen LiMux. Das war bisher das(!) Vorzeigeprojekt rund um Open Source und Linux im professionellen Umfeld. Doch jetzt kommt scheinbar das Aus. Es geht zurück zu Windows. Über die Gründe wird in der Szene heftig spekuliert:

  • Bestechung der Entscheidungsträger durch Microsoft
  • Politische Gründe
  • Ideologische Gründe
  • Doch zu ausgeprägte Dummheit der Beamten

Da gibt es die wildesten Spekulationen und viele sind sicher weit hergeholt. Trotzdem – ich persönlich kann die Entscheidung in keiner Weise nachvollziehen und keinerlei objektiv greifbare Gründe finden. Und ich bin wirklich kein Microsoft-Feind (zumindest die letzten Jahre nicht mehr). Gerade die Woche habe ich C#-Programmierung geschult und ich nutze auch Windows 10 recht oft.
Aber für Laien ist Windows m.E. im öffentlichen Dienst und auch meist im Business-Umfeld einfach nicht zu gebrauchen. Als reiner Anwender, der auf seinen schmalen und eingefahrenen Wegen bleibt und bei dem ein Crash des Systems oder Befall durch Viren und Trojaner nicht wirklich relevant ist, kann man damit gerne arbeiten. Windows ist ein gutes Spiel-, Customer- und Normalanwender-System.
Aber es geht hier um die öffentliche Verwaltung und damit sensible, sicherheitskritische Bereiche. Da hat Windows rein gar nichts zu suchen.
Zumal Linux gerade für Laien so viel einfacher zu bedienen ist. Fast jeder kommt mit einem Android-SmartPhone klar. Hat schon irgend jemand ein SmartPhone mit Windows bedienen können? Solche Leute sind m.E. seltener als der Yeti ;-). Und auch die Integration in das Web ist bei Linux um Welten besser. In Zeiten von RIAs und Web 2.0 bzw. HTML5 ist das ein unschätzbarer Vorteil. Darüber hinaus klappt der Datenaustausch mit Linux und Programmen wie LibreOffice einfach besser als mit dem eingeschränkten Microsoft-Zeugs.
Die klassischen Tugenden von Linux gegenüber Windows wie Sicherheit, Stabilität, Performance, Quelloffenheit, bessere Hardwareunterstützung greifen zusätzlich.
Und wenn all das nicht überzeugt – in Zeiten von einem unberechenbaren Trump darf man einfach keine Kontrolle an US-Firmen abtreten. Never-ever. Die werden garantiert gezwungen alle Firmen, Behörden, etc. auszuspionieren, um diesem „America first“-Wahnsinn zu dienen.
Es bleibt also nur die Umstellung zu stoppen und Ermittlungsverfahren gegen die Entscheider einzuleiten, warum man in diese offensichliche Falle gezwungen werden soll.

Update auf Windows 10 bei meinem Dual-Boot-Notebook

Nachdem ich auf meiner Workstation mit Windows 10 ganz zufrieden bin, habe ich mich auch bei meinem Notebook (bisher immer noch mit Windows 7 bestückt) zu einem Update entschlossen. Zumal Windows 7 wirklich in die Jahre kommt und es über kurz oder lang mit Updates eng werden wird. Und mit der Classic Shell kann man auch unter Windows 10 das Look an Feel von Windows 7 wiederherstellen und muss sich nicht mit den Verirrungen der Oberflächengestaltung und extremen Behinderung bei der Bedienung über Kacheln  ab Windows 8 quälen. Mit der neuen SSD sollte die Hardware von dem Notebook auch ausreichend leistungsfähig sein.

Microsoft kennt immer noch kein Dual-Boot 🙁

Dummerweise verwende ich auf dem Notebook Windows parallel mit einem Linux und Dual-Boot über Grub. Tja – ich hatte gedacht, dass es Microsoft endlich geregelt bekommt, wenn es außer Windows noch weitere Betriebssysteme auf dem Rechner gibt. Falsch gedacht :-(. Die Upgrade-Routine haut Grub dermaßen in die Tonne, dass danach gar nichts mehr geht. Windows muss beim Update mehrfach neu starten und beim 2. Neustartversuch konnte weder Windows noch Linux starten. Ganz toll – nur noch Grub rescue war da. Klar gibt es die üblichen Befehle (von ls über set bis insmod), um Grub manuell wiederzubeleben. Aber leider gab es auch dabei ständig die Meldung, dass das Dateisystem nicht zu erkennen sei. Ich hab dann schnell die Faxen dicke gehabt und mein Mint Linux als Live-Version vom USB-Stick gestartet und dann einfach nochmal neu installiert. Da hatte ich sowieso keine wichtigen Daten drauf und das repariert ganz nebenbei und vollkommen problemlos Grub. Danach konnte sich dann Windows weiter aktualisieren.

Wir warten auf das Christkind

Das gesamte Update hat gefühlte Ewigkeiten gedauert. Als ich vor einigen Monaten meine Workstation von Windows 8.1 auf Windows 10 aktualisiert hatte, war das erheblich schneller abgelaufen. So genau kann ich das nicht mehr sagen, aber für dieses Update hat die Setuproutine die 3 – 4-fache Zeit gebraucht, denke ich. Das war der nächste Punkt im Updateprozess, den ich für mich als grottenschlecht bewerte.

Als dann aber die Geschichte endlich durch war, schien soweit alles erhalten geblieben zu sein und das System zu laufen. Muss jetzt in der Praxis ausprobieren, ob der Umstieg wirklich sinnvoll war.