Fliegen ist wirklich schöner

Angefangen hat meine Leidenschaft für Flugsimulatoren schon sehr, sehr früh. Das genaue Jahr kann ich gar nicht sagen, es muss aber so 1986/87 gewesen sein, als ich im Büro meines Vaters das erste mal den Flight Simulator von Microsoft in seiner ersten Version auf dem Bildschirm gesehen und mich gleich verliebt habe.

Schon damals habe ich jede freie Minute dort am Rechner verbracht, der eigentlich für die Erstellung von Steuererklärungen gedacht war und meiner dunklen Erinnerung nach sogar schon eine Modem-Verbindung zu DATEV hatte. Und neben uralten Spielen wie Gato, Night Mission Pinball und Castle Adventure gab es auch eine Diskette mit dem Flight Simulator drauf.

Ich hatte zwar vom Fliegen gar keine Ahnung, aber damals waren ja die Simulationen noch derart einfach gestrickt, dass ein kleiner Knirps wie ich es ohne Probleme geschafft hat, die Maschine in die Luft und auch wieder gelandet zu bekommen. Ich weiß nicht wie, aber durch irgendeinen Menüeintrag oder ein Tastaturkürzel konnte man den Simulator in einen WWI-Modus versetzen, und dann konnte man in einem relativ kleinen Terrain in einer Sopwitch Camel Dogfights gegen computergesteuerte Gegner fliegen, die von den entfernten Bergen in Wellen angeflogen kamen.

Den nächsten Kontakt hatte ich mit dem Flight Simulator 4, der schon viel umfangreicher war. Neben einem rudimentären Wettersystem, konnte man sogar auf Thermik-Feldern (die glaube ich wirklich als Felder auf dem Boden visualisiert waren) sich in einem Segelflugzeug in die Lüfte schrauben. Die Landungen auf einem Flugzeugträger im Meer vor San Francisco waren noch so ein Highlight, an das ich mich erinnern kann.

Mit dem FS95/98 und dann FS2000 wurde das Ganze dann bei mir “professioneller”. Mit einem Yoke und Ruderpedalen von CH Products wurde das Fluggefühl aufgebessert und über flightsim.com (die Website gibt es immer noch und sieht fast noch so aus wie damals!) wurden weitere Flugzeuge und Szenerien hinzu installiert. Auch die schönen AddOns von Aerosoft wurden gekauft, damit die deutschen Flughäfen noch besser aussahen. Das alles ist sogar so ausgeartet, dass ich mal ein paar Hardware-Artikel für das Magazin FlightXPress geschrieben habe und sogar Mitglied der virtuellen FLuglinie des Magazins war. Auf IVAO habe ich dann auch ein paar Flüge absolviert. Das ist ein Netzwerk, in dem auf der einen Seite Flugsimulator-Piloten ihre Maschinen durch die Lüfte steuern und auf der anderen Seite Leute ihr Hobby als Fluglotse nachgehen und den Piloten Anweisungen geben.

Mit Eintreten ins Berufsleben war dann immer weniger Zeit vorhanden und so habe ich jahrelang keine Simulatoren mehr angefasst. Es gab dann auch lange Zeit so richtig keine Innovationen mehr. Der Flight Simulator von Microsoft war auch nach dem Erscheinen der leidigen Version X eigentlich tot, als Alternative war nur noch XPlane auf meinem Schirm. Bis vor zwei (?) Jahren die ersten Bilder eines neuen Flight Simulators von Microsoft durch das Internet geisterten. Die aber schon damals so gut aussahen, dass ich erstmal an einen Fake dachte. Niemals sollte ein Flugsimulator so gut aussehen!

Am Beta-Programm durfte ich leider nicht teilnehmen und so viele News sickerten dann doch nicht durch. Aber nach der Veröffentlichung erschienen die ersten (echten) Videos und begeisterten mich sofort. Und auch wenn meine Freizeit selbst in Pandemie-Zeiten recht begrenzt ist, habe ich doch wieder Feuer gefangen. Ein neuer Joystick ist schon mal gekauft und ich glaube mit der Zeit kommen auch Yoke und Ruderpedale wieder ins Haus.

2021-2

In Zukunft möchte ich einmal die Woche die besten und nützlichsten Artikel/Websites in einer Liste zusammenfassen, um auf der einen Seite meine Liste an noch zu lesenden Artikeln in Pocket klein zu halten und vielleicht hilft es auf der anderen Seite dem ein oder anderen. Wenn jemand überhaupt mein Blog liest. Was ich nicht annehme.

Fangen wir also an:

  • Xdebug bzw. eigentlich die Sponsoring-Seite von Derick, dem Maintainer und Erfinder des besten Debug-Tools für PHP. Los! Unterstützen! Denn auch Entwickler wollen Geld verdienen.
  • TYPO3 Rector: eigentlich wollte ich meinen Urlaub über die Feiertage für ganz viel Lernen und Anschauen nutzen, nur kam wie es so nun mal so ist ganz anders. Wird aber für das nächste Refactoring/Migration verwendet und werde darüber bestimmt berichten
  • Laragon: ich bin ja strenger Verfechter von DDEV als Serverumgebung für die lokale Entwicklung für TYPO3. Laragon möchte scheinbar so etwas ähnliches sein. Leider auch noch nicht angeschaut, weil ich halt auch mit DDEV mehr als zufrieden bin
  • Ein schöner "Früher war alles besser (anders)"-Artikel über die OpenSource-Entwicklung: The Golden Age of Open Source is Over

Alles muss raus

Im letzten Jahr, das man nicht beim Namen nennen darf, hatte ich so viel vor und echt mal wenig davon geschafft. Irgendetwas mache ich nämlich falsch (oder anders) als alle anderen, die auch im HomeOffice waren und gefühlt dauernd Freizeit hatten oder wenigstens sowas von tiefenentspannt waren, dass ich im Spätsommer mit Meditation angefangen habe, um auf das gleiche Level zu kommen. Das mit der Meditation habe ich dann schnell wieder verworfen, das klappt bei mir einfach nicht. Da muss man scheinbar genauso wie bei Homöopathie dran glauben und dafür ist mein Gehirn einfach nicht gemacht.

Zum Bloggen bin ich dann nämlich auch nicht gekommen, wie ich mir das so vorgenommen hatte. Einfach mal Texte schreiben. Für mich. Und die ins Internet stellen. Warum auch immer. Weil man das im frühen Internet auch so gemacht hat. Wo das Internet noch nicht ganz so kaputt war wie heute.

Vielleicht werde ich sogar demnächst hier eine Blogroll veröffentlichen, denn es gibt sie immer noch! Die kleine Blogosphäre und auch die Tech-Blogger. Anfangen werde ich aber mit einer Auswahl von Artikeln und Websites, die ich im letzten Jahr in Pocket abgespeichert und mit Vergessen gestraft habe. Von den knapp 300 Einträgen habe ich diese mal hier gelassen, vielleicht findet der ein oder andere ja noch was, was ihn weiterbringt.

Webdesign

TYPO3

DevOps

PHP

Programmierung allgemein

Dämmerung

Dieses Jahr kann weg. Ich denke, da wird mir jeder zustimmen. Alles, was man sich so vorgenommen hat, war für die Tonne. Egal, ob das Dinge in der Familie waren, Urlaub, Weiterbildung oder auch im Job: alles wurde durch die Pandemie gestört oder sogar komplett zunichte gemacht.

Und wenn dann noch zwei Beerdigungen unter diesen Bedingungen stattfinden müssen, wird sogar dieser Teil des "Lebens" erschwert. Mal ganz davon abgesehen, dass es vielen Begleitern dadurch unmöglich gemacht wurde, sich zu verabschieden, wie man es bisher gewohnt war.

Mir ist klar, dass das trotz allem Meckern auf hohem Niveau ist. Ich nicht in einem Kriegsgebiet, in der dritten Welt oder in anderen, mir unvorstellbaren Umständen lebe. Sondern immer noch privilegiert so mit Haus über dem Kopf, genug Geld zum Leben im Luxus und mit den Möglichkeiten, die Umstellungen, die so eine Pandemie mit sich bringt, ganz gut abzufedern.

Von daher bin ich ganz dankbar, werde auch weiterhin diverse soziale Projekte wenigstens finanziell unterstützen und auch die Arbeit im Ehrenamt weiterführen.
Und hoffen, dass wir das zusammen im nächsten Jahr gewuppt bekommen, so dass es wieder möglich wird, sein soziales Umfeld zu genießen. Sich auszutauschen. Ohne Angst zu haben, dass man angesteckt wird oder andere anstecken könnte.

30 Jahre später

Vor nicht ganz 30 Jahren habe ich mir meinen ersten Game Boy gekauft. Es muss im Sommer 1991 gewesen sein, da war ich gerade zu einem Sprachkurs während der Sommerferien in England. Ich habe mein ganzes Taschengeld zusammengekratzt und voller Aufregung die Konsole und zwei Spiele gekauft: Dynablaster und Super Mario Land.

Ersteres war die europäische Version von Bomberman, das man sogar gegeneinander spielen konnte, zwei Module und den Mehrspieleradapter natürlich vorausgesetzt. Und Super Mario Land muss man ja eigentlich nicht erklären. Der Name spricht ja für sich.

Nur habe ich es nie geschafft, die gesamten zwölf Level durchzuspielen. Keine Ahnung warum. Bis gestern Abend. Mit dem allerletzten Leben. Ein Spiel weniger auf dem Pile of shame.

Surf mal anders

Update: Mit Erscheinen von TYPO3 10.4.8 hat sich das Problem erledigt, da hier die Dependencies angepasst wurden. Scheinbar gab es nicht nur mit Surf, sondern auch mit Solr und Abhängigkeiten zu PHP 7.2 Probleme. Ich werde trotzdem Surf nicht mehr per composer in das Projekt installieren, sondern global in den DDEV-Container.

Gestern wurde ein geplantes Maintenance-Release von TYPO3 veröffentlicht. Version 10.4.7. Vom besten Content Management System, das ich kenne. Und natürlich sollten gleich alle Projekte auf die neue Version gezogen werden. Was bisher ohne Probleme mit einem herzhaften 'composer update' auch ohne weitere Anstrengung möglich war. Nur gestern nicht.

composer weigerte sich partout die neue Version in die Projekte zu integrieren. Gut, kein Problem, gehen wir das Ganze mal systematisch an. Erstmal mittels

composer clear-cache && composer update

composer zwingen, alles zu vergessen, die ganzen Quellen abzugrasen und es erneut zu versuchen. Dies brachte aber auch kein neues TYPO3 auf die Festplatte.

Dann wollte ich mal schauen und mit der Frage

composer why-not typo3/cms-core:10.4.7

kristallisierte sich dann auch heraus, dass typo3/surf eine Dependency über symfony/console enthielt, die dann schlussendlich eine Dependency auf symfony/event-dispatcher-contracts hatte, die verhinderte auf eine Version größer 2.0 zu gehen. Was aber typo3/cms-core unbedingt voraussetzt. npm, ick hör dir trapsen!

Heute morgen dann nochmal versucht, selber eine Lösung zu finden, aber vielleicht sollte ich doch im gehobenen Alter über eine Umschulung nachdenken. Somit blieb nur noch Twitter übrig, mein Leid geklagt und Minuten später, kamen schon die beiden Retter @t3easy_de und @chriwode um die Ecke. 

Der erste Versuch, Surf lokal auf einem Windows laufen zu lassen, scheiterte kläglich. Ja, Windows. Möchte ich hier nicht drüber reden. Das Ganze scheitert daran, dass unter anderem Windows awk nicht kennt und selbst wenn man dieses nachinstalliert, werden einem weitere Fehler um die Ohren gehauen.

Um jetzt mal so langsam auf den Punkt zu kommen: bisher habe ich Projekte mittels DDEV aufgesetzt und per composer nicht nur TYPO3 und die verwendeten Extensions installiert, sondern auch Surf. Um dann zum Beispiel per Kommandozeile ein Projekt deployen zu können, wenn kein entsprechendes CI/CD-System zur Verfügung steht. Meine Lösung sieht jetzt so aus, dass Surf aus diesem composer.json rausgeflogen ist und global per DDEV Start-Hook installiert wird:

hooks:
  post-start:
  - exec: composer global require hirak/prestissimo
  - exec: composer global require typo3/surf:^2.0

So lässt sich TYPO3 10.4.7 installieren und ich kann per Surf das Projekt auf ein anderes System schieben.

Geschwindigkeit ist alles

Es gibt ja für alles Untersuchungen. Auch dafür, wie sich die Ladezeit einer Website auf die mögliche Absprungrate der Besucher auswirkt. Und man mag es kaum glauben, aber die Erkenntnis ist, dass je länger eine Website zum Laden benötigt, desto höher ist die Chance, dass der Besucher den Tab schließt. Unglaublich.

Man sollte also alles daran setzen, dass eine Website so schnell wie möglich ausgeliefert und vor allem angezeigt wird. Mal abgesehen, dass man dafür sorgen sollte, dass Elemente im sichtbaren Bereich zuerst gerendert werden und schon gar nicht während des Ladens hin- und herflippen sollten, ist ein weiterer Faktor, den man ganz gut beeinflussen kann, die Anzahl und vor allem die Größe der Ressourcen wie Stylesheets und JavaScript so gering wie möglich zu halten.

Mit TYPO3 10.3 ist hierfür der AssetCollector integriert worden. Mit diesem können Skripte und Stylesheets in Fluid-Dateien mit den Viewhelpern f:asset.script und f:asset.css dem Renderingprozess hinzugefügt werden. Und das ähnlich dem schon in 8.6 hinzugefügten renderAssetsForRequest, mit dem man über die beiden Fluid-Sections HeaderAssets und FooterAssets entsprechenden Code rausrendern konnte.

Der entscheidende Unterschied ist, dass, wie der Name schon vermuten lässt, der AssetCollector die Stylesheets und Skripte erstmal sammelt und dann nur einmal im Rendering inkludiert. Heißt, ich kann in diversen Fluid-Dateien mit dem gleichen Namen auf die gleiche JavaScript-Datei referenzieren, die ich zum Beispiel für einen Slider benötige, die dann aber am Ende des Dokuments nur einmal per Script-Tag im Dokument hinterlegt wird.

Ein weiterer Vorteil ist, dass man auf diese Art und Weise dafür sorgen kann, dass nur benötigte Ressourcen an den Browser gesendet werden und nicht ein JavaScript-Plugin für ein Akkordeon, welches gar nicht auf der Seite vorhanden ist. Natürlich hebelt das ein wenig das Konzept aus, dass man eigentlich immer die gleichen Ressourcen an den Browser sendet, damit dieser diese auf der zweiten Seite gar nicht mehr anfordert, weil er sie dann aus seinem Cache nimmt.

Aber mit der gleichzeitigen Verwendung von HTTP/2, das dafür sorgt, dass die Ressourcen zum Rendern der Website an den Browser ausgeliefert werden, bevor dieser überhaupt weiß, dass er sie benötigt, wird in Verbindung mit der geringen Datengröße trotzdem ein Geschwindigkeitsvorteil erzielt, der sich vor allem in einem schnelleren Rendering der Seite bemerkbar macht. Dabei ist es gar nicht schlimm, dass die Ressourcen nicht im Concatenate- oder Komprimierungs-Prozess von TYPO3 integriert werden, wie man das ja bisher gewohnt war, wenn man seine Ressourcen mittels TypoScript eingebunden hat.

Und schon hat man wieder ein paar mehr Besucher seiner Website glücklicher gemacht.
Und ja, ich weiß, hier auf der Seite habe ich leider noch kein HTTP/2 aktiviert. Liegt nicht an mir. Tut mir leid.

Wieder was gelernt und noch mehr

Ich nehme mir ja immer wieder vor, mehr aus diesem Blog zu machen. Mich mitzuteilen und vielleicht sogar anderen Input zu geben, der sie weiterbringt. So wie anderen zigtausend Blogs und Websites, von denen ich tagtäglich lernen darf.

Die letzten Wochen habe ich während meiner Freizeit ziemlich offline verbracht. Wir haben eine neue Terrasse gebaut, was schon feststand, als wir vor ein paar Jahren in dieses Haus eingezogen sind. Damals hätte ich nur nicht gedacht, dass wir das alles alleine machen werden.

Neben dem Mauern und verputzen einer Wand (immerhin 3,5 x 2 m groß), dem Auskoffern, Schottern, Split abziehen und Plattenschneiden habe ich außerdem gelernt, dass man Handwerker einfach nichts fragen muss. Fragt man, wie man das ein oder andere machen muss, bekommt man zwei bis drei Antworten, die aber schon eine Woche später obsolet sind. Fast so wie bei Entwicklern also.

Und dann habe ich mir noch das Lösen eines Rubik´s Cube beigebracht. Den hat mein kleiner Sohn angeschleppt und wollte es eigentlich auch lernen. Da ich ihm absolut nicht helfen konnte, musste ich es mir erst einmal beibringen und kann ihn mittlerweile in knapp über 2 Minuten mit der Anfängermethode lösen. Ob ich noch andere Algorithmen lerne, um wenigstens unter einer Minute zu gelangen... Ich weiß noch nicht.

Und dann fange ich jetzt wieder für die Zertifizierung zum TYPO3 Developer (TCCD) zu lernen. Die TCCI-Zertifizierung durfte ich letzten Freitag um ein Jahr verlängern, wobei ich das Verfahren echt, na sagen wir überdenkenswürdig halte. Nur weil ich an einer Präsentation der Neuerungen von TYPO3 10 teilgenommen habe, die ich selber kurz nach Erscheinen in ähnlicher Form in meiner Abteilung abgehalten habe, habe ich zwar eine Menge an Anregungen gesammelt, beherrsche sie aber nicht. Vielleicht liegt das auch daran, dass ich ja einer der letzten war, bei dem die Zertifizierung normalerweise drei Jahre gilt, die neuen Zertifikate gelten nur noch zwei Jahre.

Für die Vorbereitung ackere ich wieder den Exam Study Guide for the Official TCCD Certification of the TYPO3 Association (https://leanpub.com/typo3certifieddeveloper-en) durch und dieses Mal habe ich mir vorgenommen, bei jedem Thema/Frage, die ich beim Lernen nicht korrekt beantworte, einen Blogpost zu schreiben, in dem ich das Thema dann aufarbeite. So von wegen, wenn man einen Spickzettel schreibt, lernt man am besten. Es werden bestimmt einige Posts werden. ;-)

Eine verrückte Zeit

Es ist schon eine komische Zeit, in der keiner wirklich sagen kann, wie es sich entwickeln wird. Alle schwimmen.
Und auch wenn die Auswirkungen schon am Horizont zu erahnen sind und sie uns alle schwer treffen werden, sind alle (TM) Menschen momentan irgendwie freundlicher zueinander. Okay, außer die Leute, denen man beim Einkaufen zu nahe kommt. Die schauen jedenfalls ziemlich böse. Oder ängstlich.

Star Trek: 25th Anniversary - Hijacked

Das Sternenflottenkommando ruft uns keine zwei Minuten nach unserem letzten Abenteuer zu einer neuen Mission: wir sollen nach der vermissten USS Masada im System Beta Myamid schauen.
Eigentlich wollte ich der Crew eine wohlverdiente Pause gönnen, aber Dienst ist Dienst und so machen wir uns auf. Kurz nachdem wir angekommen sind, werden wir von einem Elasi Piraten unfreundlich aufgefordert, das System zu verlassen. Wo kommen wir denn dahin, wenn Kirk sich von so einem aufgeblasenen Kapitän etwas vorschreiben lässt!

Wir vertreiben das Piratenschiff mit einigen Treffern unserer Phaser und Photonentorpedos und schwenken in den Orbit ein. Dort befindet sich auch das vermisste Schiff mit hochgefahrenen  Schilden. Spock kann mit unseren Sensoren 27 Lebensformen an Bord ausmachen und schlägt vor, den Computer der Masada mit einem geheimen Schiffscode von außen zu übernehmen und dann die Schilde herunterzufahren, so dass wir herüberbeamen können.

Vorher lasse ich aber Uhura das Schiff rufen und umgehend meldet sich ein weiterer Elsa-Pirat, der das Schiff gekapert und die Mannschaft als Geiseln genommen hat. Kirk macht ihm deutlich klar, dass er das Schiff und die Geiseln übergeben soll. Was vielleicht etwas zu vorschnell war, denn dem Piraten gefällt der forsche Tonfall von Kirk mal so gar nicht und tötet erstmal einen Gefangenen. Das gibt bestimmt Abzüge bei der Bewertung...

Er fordert uns auf, alle Daten, die wir über Gefangene Elasi besitzen, ihm zu übermitteln. Wir stimmen zu, aber nur um etwas Zeit zu gewinnen. Uhura sendet den Code an die Masada, mit der wir die Schilde senken können und Kirk beamt mit Spock, Pille und dem üblichen Red-Shirt auf das andere Schiff. 

Im anderen Transporterraum angekommen bietet sich uns ein Bild der Verwüstung. Das am Boden bewußtlos liegende Crewmitglied wird umgehend von Pille versorgt. Dieser ist zwar noch ziemlich benommen, bedankt sich aber artig und übergibt uns noch ein spezielles Werkzeug, mit dem wir aber zunächst nichts anfangen können. Schon gar nicht den Transporter wieder in Gang zu bekommen, da scheinen uns noch einige Dinge für zu fehlen.

Wir verlassen den Transporterraum und stehen in einem Gang, der ähnlich ramponiert aussieht. Die hintere Tür wird von einem Kraftfeld verschlossen. Nachdem Kirk ein paar Drähte, metallenen Schrott und Phaser ohne Energiezelle aufgelesen hat, gehen wir in den Gefangenentrakt. Zwei Elasi-Piraten stehen dort Wache, die wir mit Leichtigkeit mit den Phasern betäuben können.

In der Arrestzelle sehen wir neun Crewmitglieder hinter einem Energiefeld gefangen. Da Pille ein ungutes Gefühl hat, betätigt Kirk erstmal nicht den Schalter, um das Energiefeld aufzuheben.   Wir entdecken eine Bombe direkt hinter dem Energiefeld und die bunten Drähte haben bestimmt etwas damit zu tun. Spock soll sich darum kümmern und natürlich kann er die Bombe entschärfen. Die längeren Drähte nehmen wir mit und öffnen auch gleich noch das Energiefeld.

Ein Crewmitglied verrät uns noch, wie wir das Kraftfeld um die Brücke entschärfen können, aber Spock und Kirk kümmern sich erstmal um die Reparatur des Transporterraums, damit wir gleich von hier wegbeamen können. Danach stürmen wir die Brücke und setzen die Elsa-Piraten außer Gefecht. Wobei natürlich der Red-Shirt sein Leben lassen muss. Es interessiert aber auch jetzt keinen großartig.

Nachdem wir auf die Enterprise gebeamt sind, meldet sich auch gleich das Sternenflottenkommando, aber irgendwas scheinen wir bei dieser Mission nicht richtig gemacht zu haben. Die Bewertung ist unterirdisch und wir erhalten auch keine Erfahrungspunkte.