Globales Ignorieren

Es gibt nichts Schlimmeres als fremde IDE-Konfigurationsdateien in einem Repository. Damit ich meine IDE-Konfiguration auch nicht anderen Entwicklern aufdrücke, gibt es eine globale gitignore-Datei, in der wenigstens folgende Zeilen erstmal enthalten sind:

.DS_Store
.idea

Die Datei kann man nennen wie man möchte, muss sie dann lediglich per

git config --global core.excludesfile ~/.gitignore_global

der globalen git-Konfiguration mitgeben.

Von Stöckchen und Software

Vor fast 15 Jahren habe ich ein neues Laptop kaufen wollen und auf der Suche nach einem vernünftig verbauten und soliden Case haben mich die aus Aluminium bestehenden Gehäuse der MacBooks angelacht. Ich kannte zwar den Ein oder Anderen durch die Arbeit mit Agenturen, der mit macOS gearbeitet hat, aber so richtig haben mir nur die ganzen Blogs geholfen, die im deutschsprachigen Raum zu dieser Zeit erblühten.

Damals hat man noch mit Stöckchen geworfen und in der Sidebar Blogrolls gepflegt, um andere auf lesenswerte Seiten aufmerksam zu machen. Und kommentiert. Twitter (oder eher twttr) war in der Pre-Smartphone-Zeit noch unbekannt und auf StudiVZ/Facebook... naja.

Aber es gab unzählige Blogs, die sich mit macOS und der Software dafür beschäftigten. Man bloggte, wie sein System aufgesetzt ist, wo man gerade irgendwelche Rabatte für den Einkauf von Software bekam und so weiter.

Da ich mir gerade durch einen Jobwechsel einen neuen Laptop aussuchen durfte und ich die letzten zwei Jahre wegen eines Windows-Systems geflucht habe, bin ich echt dankbar, dass ich diesen Text auf macOS schreiben darf. Hätte es WSL2 nicht gegeben, wäre ich schon im letzten Jahr mit dem Auto über das Laptop gefahren. Nachdem ich es angezündet und aus einem Hochhaus geworfen hätte.

Und es gibt fast nichts Schöneres als ein neues macOS einzurichten. Ich hätte zwar das Profil und die Software von meinem privaten MacBook während der Installation übertragen können, aber irgendwie war es mir wichtig, das Ganze frisch aufzusetzen. Und da mache ich es doch wie vor 15 Jahren und schreibe auf, was ich so alles installiert habe.

Die erste App, die ich installiert habe, ist iA Writer, mit der ich diesen Text auch schreibe. Schon seit Jahren meine Wahl für Texte schreiben, aber auch Notizen finden hier ihren Platz.

Und dann kommt neben dem ganzen Entwicklerkram das Wichtigste: die Shell. Keine Ahnung, es soll immer noch Entwickler da draußen geben, die so gut wie keine Berührung mit Shells haben, ich kann gar nicht ohne. macOS kommt ja seit 10.15 mit zsh als Standard-Shell daher. Ich haue da noch iTerm2 und oh-my-zsh drauf und in Verbindung mit meiner geliebten Konfiguration, Syntax-Highlighting, Autosuggestions und einem schönen Theme will ich eigentlich gar nicht raus. Aus ihr.

Was schon bei der Installation der Shell nicht fehlen darf, ist Homebrew. Ein Paketmanager für macOS und in Verbindung mit dem AppStore von Apple braucht man eigentlich keine weiteren Quellen mehr, um Software zu installieren.

Neben den üblichen verdächtigen Browsern und Firefox als Standard-Browser, kommen dann noch Tweetbot (Links lasse ich jetzt einfach mal aus Bequemlichkeit weg, ihr könnt ja bestimmt Suchmaschinen bedienen), Slack, Discord und Signal, sowie ReadKit auf den Rechner, um mit der Außenwelt zu kommunizieren und Feeds abzugreifen.

Mit Thunderbird versuche ich mal wieder warm zu werden. Sonst gefallen mir auf macOS eigentlich bisher gar keine Mail-Clients. Die Hübschen haben zu wenig Funktionen wie Verschlüsselung und die Funktionalen sehen alle scheisse aus.

Neben den üblichen Tools wie 1Password (auch wenn die gerade böse geworden sind) und Lastpass für das Passwort-Management, Things für ToDos (obwohl ich das eigentlich kaum noch benutze, es spielt sich ja zum Glück alles in Ticketsystemen ab), odrive für das Handling aller Cloud-Dienste, VLC für Videodateien und Pixelmator für Bilder, werkelt dann noch Little Snitch herum. Ja, ist ne Software-"Firewall", aber zum Placebo-Blocken von Ressourcen ist es halt was fürs "besser fühlen".

Die GPG Suite fürs Verschlüsseln (Keybase ist ja auch böse geworden und hat sowieso kaum einer genutzt) und Tunnelblick für die VPNs. Achso, Moom als Fenstermanager. Warum Apple sowas immer noch nicht in macOS integriert hat, ist mir schleierhaft. Die ganzen Standardtools wie einen PDF-Reader und Office... geschenkt.

Kommen wir nun zum eigentlich Wichtigsten: dem Enwicklerkram. Da ich die meiste Zeit PHP schreibe, sollte es nicht verwundern, dass PhpStorm meine IDE der Wahl ist. Mit VSCode mögen Frontendler klarkommen, mir reicht das aber nicht. GitKraken ist der schönste Git-Client, da lasse ich mir nichts anderes erzählen und mit Sequel Ace kann man schön Datenbanken kaputtmachen. Atom ist auch dabei, aber wirklich nur im Notfall einen einfachen Text-Editor starten zu können. Und ja, ich habe sogar noch Transmit installiert. In der Hoffnung, es nie brauchen zu müssen.

Neben der Installation von Docker und DDEV habe ich dann noch git aktualisiert (die Version von macOS ist zwar halbwegs aktuell, aber neuer und sicherer ist immer gut) und sowas wie wget/curl kann man auch immer gebrauchen.
So bin ich schon mal bereit, da kommt aber mit der Zeit bestimmt noch mehr Software nach.

Eine Runde Hack

Ich habe ja irgendwie ein Faible für alte Spiele. Meistens sind es irgendwelche Grafikadventures, da man die alten Action- oder sogar Simulationsspiele nicht mehr auf aktueller Hardware zum Laufen bekommt oder sie von der Steuerung so schlecht gealtert sind, dass man sie einfach nicht mehr spielen kann.

Strike Commander ist so eins, was ich damals geliebt habe, aber das ich einfach nicht so konfiguriert bekomme, wie es sich damals angefühlt hat. Es mag sein, dass da romantisierte Erinnerungen eine Rolle spielen und die Steuerung damals vielleicht auch schon so "schlecht" war. Nur hatte man damals einfach nichts besseres.

Meine ersten Computerspiel-Erfahrungen habe ich damals auf dem IBM-XT im Büro meines Vaters gemacht. Irgendwie existierten neben der Steuerberater-Software ein paar Disketten mit Spielen und unter anderem war dort Castle Adventure zu finden, das ich fasziniert stundenlang spielen konnte. Obwohl meine Englisch-Kenntnisse zu dem Zeitpunkt eigentlich gar nicht vorhanden waren. Ich befand mich nämlich noch in der Grundschule.

Trotzdem fesselte es mich an den Monitor, ich wechselte die Räume und Orte und wurde dann von Monstern getötet. Die ich nicht besiegen konnte, weil ich gar nicht verstanden hatte, wie man weitere Gegenstände aufnehmen konnte, um sich zu verbessern. Was mir aber egal war. Ich startete das Spiel immer wieder aufs Neue.

Nethack basiert zum großen Teil auf den Regeln von "Dungeons & Dragons", was nach dem deutschen Rollenspiel "Das schwarze Auge" meine erste Bekanntschaft mit sogenannten Pen & Papers war. Und was haben wir damals selber Abenteuer geschrieben und dabei natürlich den ein oder anderen Dungeon auf Kästchenpapier entworfen. Mit all seinen Fallen und Monstern.

Nethack ist kein Rogue-like, sondern quasi die Verbesserung des Klassikers Rogue und quasi nichts weiter als prozedural erzeugte Dungeons auf Kästchenpapier. Mit einem D&D-ähnlichen Regelset. Gekauft! Bzw. heruntergeladen und ausprobiert.

Ich habe so gut wie nichts im Internet vorher über Nethack gelesen (es gibt Wikis, in denen scheinbar so gut wie alles Wissenswerte steht), nur dass man als Anfänger am Besten als neutrale Walküre starten sollte. Und die Seite mit den ganzen Tastaturbefehlen habe ich offen. Auf gehts!

Im ersten Raum befinden sich neben meinem Hund und mir ein Zauberspruch ANDOVA BEGARIN, den ich mir gleich schnappe, eine geschlossene Tür im Norden und ein offener Weg nach Westen. Neugierig wie ich bin lese ich den Zauberspruch, was sich nicht als sonderlich kluge Idee rausstellt, denn dieser scheint verflucht gewesen zu sein und lässt meinen Schild wegbröckeln. Super! Mein Rüstungsschutz ist damit quasi nicht mehr vorhanden.

Der nach Westen verlaufende Weg verzweigt sofort in alle Himmelsrichtungen und ich folge ihm nach Norden. Nach ein paar Windungen gelange ich in einen neuen Raum, der aber auch nach einigem Suchen keine spannenden Dinge enthält, außer einem Weg im Süden, dem ich folge, der mich aber wieder in meinen Startraum zurückbringt. Also auf nach Norden durch die verschlossene Tür.

Der Weg dahinter führt in einen großen Raum, in dem eine Treppe nach unten in das nächste Dungeonlevel führt. Da sich noch weitere Türen in dem Raum nach Osten und ein weiterer Weg nach Süden befinden, beschließe ich erstmal nach Süden aufzumachen. Ein Schakal versperrt meinen Weg, um den sich mein Hund und ich uns aber liebevoll kümmern und ihm den Weg in die Hölle zeigen. Soll er da mal schmoren.

Auf dem südlichen Weg läuft uns ein Goblin in die Arme, der aber keine große Gefahr für uns darstellt. Ich erbeute seinen Helm, den ich direkt anziehe. Seinen Körper nehme ich auch mal lieber als Nahrungsquelle mit. Kein Leckerbissen, aber wer weiß, wann der nächste Grill hier in den Dungeons zu finden ist.

Ich muss erstmal eine versperrte Tür auftreten, hinter der sich ein großer Raum befindet, in dem sich zwei Käfer gleich auf mich stürzen...
Herrlich!

Gib dem Code Statik

Ja, ich weiß, Statik und statische Code Analyzer haben in erster Linie nicht viel miteinander zu tun, aber im Endeffekt wird Code durch deren Verwendung trotzdem um einiges besser. Härter. Und tragen somit zu einem soliden Code-Gerüst bei, das unsere Anwendungen noch stabiler und besser macht.

Wie Roland Golla in der 5.2021 vom Entwickler Magazin schreibt: "Legacy-Code macht krank." In seinem Artikel geht es um PHPStan. Wie man diesen Static Code Analyzer in seine Entwicklungsumgebung (und damit ist nicht nur die IDE gemeint) einbinden kann, um nicht nur bisher unentdeckte Fehlerquellen zu finden, sondern um seine Fähigkeiten und vor allem sein Wissen als Entwickler zu verbessern.

Man kann einfach nicht alles wissen, die Entwicklung in PHP findet auch in immer kürzeren Releaes-Zyklen statt. Auf der anderen Seite pflegt man die in die Jahre gekommenen Anwendung des Kunden. So muss jeder Entwickler eine ungeheure Bandbreite von Features abdecken, die einem die im jeweiligen Projekt eingesetzte PHP-Version zur Verfügung stellt.

Das unfassbar schöne und immer wieder faszinierende am Beruf eines Softwareentwicklers ist in meinen Augen, dass man jeden Tag etwas lernt. Wirklich jeden Tag. Und Tools wie Static Code Analyzer helfen einem dabei. Ich glaube jeder kennt das Gefühl, wenn man Code von vor drei, vielleicht vier Jahren anschaut, den Kopf schüttelt und dann nach einem beherzten "git blame" am liebsten im Boden versinken möchte, wenn man feststellt, dass man selber diesen Legacy Code produziert hat.

Static Code Analyzer setzen hier schon beim ersten Entwickeln an und helfen einem, sehr viel sauberen Code zu schreiben. Sie helfen einem jetzt nicht unbedingt, bessere Programm-Logiken zu schreiben, man kann also immer noch die Business-Logik so dermaßen unnütz verschachteln und schwer zu verstehen umsetzen. Aber hey, dafür gibt es ja wiederum andere Tools wie Performance Profiler (Blackfire usw.), die man auf dieses Problem werfen kann.

Ich kann jedem eigentlich nur Tools wie PHPStan, rector, Psalm usw. neben den hoffentlich schon seit Jahren verwendeten Tools wie PHP-CS-Fixer oder PHPMD ans Herz legen. Um Code zu analysieren, zu refactoren und vor allem zu lernen. Quasi als Pair-Programming mit einem Tool und nicht mit einem anderen Entwickler. Oder als Code review vor dem eigentlichen Code review.

Disclaimer: Roland Golla hat mir die oben erwähnte Ausgabe kostenlos zur Verfügung gestellt, wofür ich ihm herzlich Danke. Print-Produkte habe ich schon lange aus den Augen verloren, wenn es um Programmierung oder Themen im Web geht. Es war aber mal wieder eine wunderbare Erfahrung, beim Lesen Papier in der Hand zu haben. Ich werde jetzt zwar kein Abo abschließen, aber sollte ich mal wieder irgendwelche Reisen per Bahn oder so unternehmen, werde ich am Bahnhofskiosk auf die Suche nach solchen Zeitungen gehen. Ansonsten kann ich euch seinen YouTube-Kanal "Never Code Alone" ans Herz legen, den ich regelmäßig verfolge. In seinen Videos geht es vor allem um Testing, Refactoring und allgemeinen Themen rund um das Entwicklerdasein.

AusgeFLoCkt

Ich habe noch keine Nachricht der ganzen Browser neben Chrome gesehen, die Googles Cookie-“Ersatz” FLoC zum Tracken des Userverhaltens integrieren wollen. Aber nur um auch wirklich sicherzugehen, dass die eigene Website bei der ganzen Sache nicht mitmacht, sollte man per Permissions-Policy das ganze unterbinden. Da es zur Zeit nur den OptOut mittels des HTTP Response Headers gibt, muss man entweder direkt über die Serverkonfiguration, der htaccess-Datei oder dem Setzen der Header mittels TypoScript dem Ganzen einen Riegel vorschieben:

config {
    additionalHeaders {
		10.header = Permissions-Policy: interest-cohort=()
    }
}

Die Reihenfolge im additionalHeaders-Array natürlich bitte anpassen, ich gehe doch davon aus, dass da noch ein paar weitere Header wie Content-Security-Policy usw. gesetzt sind.

Home-Office FTW!

Ich war heute zum ersten Mal seit knapp über neun Monaten wieder einen Tag in der Firma zum Arbeiten. Weil ich mal raus musste. Andere Wände und Fenster beim Arbeiten sehen. Wie viele von den knapp hundert Angestellten auch anwesend waren, kann ich gar nicht sagen. Über den Tag verteilt habe ich nur fünf weitere Gesichter gesehen. Der Rest befindet sich seit Anfang März letzten Jahres komplett wie ich im Home-Office oder wie man wahrscheinlich besser sagen muss: arbeiten sie mobil. Rein rechtlich hat ja meines Wissens Home-Office eine Menge Auswirkungen nicht nur auf den Arbeitnehmer, sondern auch auf den Arbeitgeber. Aber das ist nicht-fundiertes Laienwissen.

Was ich aber nach diesem Tag für mich sagen kann: Arbeiten in einem Büro hat ausgedient. Klar mag das an mir liegen, dass ich zu Hause und auch in einem Büro die gleiche Arbeit leiste. Vielleicht sogar zu Hause etwas besser, weil ich meine Arbeitszeit auf den Tag verteilen kann, auch wenn ich das eigentlich so gut wie nie mache. Aus dem Grund, dass ich verhindern möchte, dass die Trennung zwischen Arbeit und Freizeit zu sehr schwindet. Da möchte ich lieber von 8 - 16:30/17 Uhr mein Pensum abgerissen haben und wissen, dass der Rechner erst am nächsten Tag für die Arbeit ruft.

Aber was ich so gar nicht vermisse, ist die Pendelei zur Arbeit. Auch wenn ich mein Backlog an Podcasts mittlerweile nicht mehr abarbeiten kann, was ich sonst in der Bahn oder im Auto gemacht habe, aber diese Zeit von einer knappen Stunde am Tag ist echt mal so viel mehr wert. Das möchte ich eigentlich nicht mehr im ÖPNV oder auf der Straße verbringen. Selbst nicht mit dem Fahrrad, was ich ab und zu auch genutzt habe. Da fahre ich doch lieber am Abend bald wieder durch Wälder als in die stinkende Stadt.

Man sollte Arbeitgeber irgendwie dazu "zwingen" ihren Angestellten es zu ermöglichen, solange es ihre Arbeit zulässt und die Ergebnisse stimmen, den Ort ihrer Arbeit selbst zu wählen. Die Kosten an Miete und laufenden Kosten (Strom, Heizung, Wasser...) in die gewünschte Ausrüstung ihrer Leute zu stecken. Um den Zusammenhalt der Teams und die Bindung an das Unternehmen zu festigen reicht es meiner Meinung nach aus, wenn man sich vielleicht einmal die Woche oder alle zwei Wochen trifft, um an diesem Tag wichtige Meetings abzuhalten und zusammen zu arbeiten. Klar, da hängt auch mehr dran, als dass es nur mir als Arbeitnehmer besser geht. Allein wie Personalverantwortliche die Arbeit bewerten sollen oder wie der Arbeitgeber es schaffen muss, nicht beliebig austauschbar zu werden, sind große Aufgaben, die auf diese zukommen würden. Aber auch die "normalen" Arbeitnehmer müssen wahrscheinlich noch eine Menge ändern, um mit den anderen Gegebenheiten zurecht zu kommen.

Wie es weitergeht

Irgendwie geht ja immer alles weiter. Auch wird in naher oder ferner Zukunft diese Pandemie soweit im Griff sein, dass man wieder halbwegs normal mit anderen Menschen interagieren kann. Am meisten trauere ich Konzerten hinterher. Ich habe keine Vorstellung, wann man seine Ängste vor einer Ansteckung durch Viren oder der gefühlt immer stärker werdenden Misanthropie ablegen kann, um im Moshpit die schwitzigen Körper anderer Leute herumzuschubsen.

Nach einem Jahr Ausnahmezustand fange ich auch langsam an, müde zu werden. Müde von dem immer weiter anhaltenden "Lockdowns", den immer gleichen Nachrichten, dem Home-Office und -Schooling, aber vor allem dem Fehlen von jeglichen sozialen Kontakten. Man hat ja so viel Zeit auf einmal, aber auf der anderen Seite dann auch wieder nicht. Momentan kann ich mir nicht vorstellen, wie man es früher mit den ganzen Terminen (Sport, Kinder, Freunde usw.) überhaupt geschafft hat, ein wenig Zeit am Tag zum Nichtstun zu haben. Oder man hat sich an diesen Zustand der sozialen Isolation schon so gewöhnt, dass man gar nicht merkt, wie man eigentlich so gut wie nichts tut. Oder gebacken bekommt.

2021-3

Tja, wie immer ist das mit den Vorhaben so eine Sache. Hat man (ich) sich entschlossen, genau diesen Weg zu verfolgen, kommen von links und rechts Lawinen angeschossen, um mich davon abzubringen. So rein metaphorisch gesprochen.

Fangen wir aber einfach mal wieder an, den hohen Berg der Links abzubauen:

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.