I'm a coder - Lessons Learned anwenden
Während der Software Entwicklung lernt man viel, teils in Bezug auf neue Programmiersprachen und ähnliches und teils allgemeine Dinge. Zu letzteren zähle ich so etwas wie: “Keine IDE Updates kurz vor einem Release”, nicht “einfach so Libraries aktualisieren” und “das sollte einfach so funktionieren” ist meistens nicht wahr. Die Liste geht noch weiter, quasi unendlich lang, doch worum es mir geht ist diese Lesson Learned auch anzuwenden.
Wir wissen diese Dinge, doch wir vergessen, wir sind im Stress und missachten eigentlich klare Abläufe und dadurch machen wir Fehler. Ich selber habe erst vor kurzem auf meinem privaten System ein Update von IntelliJ Idea 18.1 auf 19.2 gemacht, ohne auch nur eine Sekunde über aktuelle Projekte nachzudenken. Dies wurde natürlich prompt damit quittiert, dass das Projekt nicht mehr baute und ich erstmal das Projekt und die IDE debuggen musste, statt ein neues Feature zu entwickeln.
Um Lessons Learned anwenden zu können muss man sich erst einmal an sie erinnern, somit hilft es im ersten Schritt sie aufzuschreiben. Egal ob in einem Wiki oder auf einem Post-It am Monitor, man sollte den für sich persönlich richtigen Platz finden. Denn hier geht es vor allem um Sichtbarkeit im Alltag. Im nächsten Schritt versuche ich aktuell meine Aufzeichnungen zu bestimmten Kontexten von Zeit zu Zeit erneut zu betrachten, denn was hilft die beste Dokumentation, wenn man sie nicht liest. Um die entsprechenden Dinge dann final anwenden zu können bleibt eigentlich nur der gesunde Menschenverstand. Nicht überstürzt handeln, Backups erstellen, erst prüfen ob z.B. mit Updates Probleme bekannt sind und ähnliches kann helfen Probleme zu vermeiden. Auch Automatisierung in Form von Skripten oder ähnlichem kann hier und da vor Fehlern schützen. Generell fasse ich für mich die Abläufe in Document (z.B. Wiki), Repeat (regelmäßig erneut lesen), Apply (denken und anschließend handeln) und Protect (Skripte, Berechtigungen restriktiv setzen) zusammen.
Mich würden eure Lesson Learned im Bereich der IT interessieren und ich würde mich freuen einige in den Kommentaren finden zu können, denn wir alle lernen nicht aus.
I'm a coder - Der Wert einer guten Community
Niemand weiß alles und deswegen ist es in der Softwareentwicklung meiner Meinung nach sehr wichtig eine aktive Community zu haben. In einer solchen kann man sich bezüglich der genutzten Sprache, Frameworks und ähnlichen Dingen austauschen. Denn auch wenn es Dokumentationen gibt, die erklären wie man performant eine Sprache nutzt oder wie man in einem Framework konkrete Use-Cases umsetzen kann, so gibt es zu viele unterschiedliche Aufgaben, als das alles dokumentiert sein könnte.
Community-Portale wie Stack Overflow open_in_new, Gitter open_in_new oder auch öffentliche Slack oder RocketChat Channels bieten hier eine Möglichkeit sich asynchron oder synchron auszutauschen und sich gegenseitig zu helfen. Vor allem Stack Overflow dürfte fast jedem Entwickler ein Begriff sein, denn z.B. im Android Bereich findet man quasi alles was man braucht dort.
I'm a coder - Grafiken sagen mehr als Texte
Obwohl ich aktuell eigentlich viel im Coding Bereich zu sagen hätte, komme ich zurzeit leider nicht wirklich dazu umfangreiche I’m a coder Beiträge zu erstellen. Doch heute nehme ich mir, bei entspannten 32°, einfach mal wieder etwas Zeit.
Thema ist heute die Erstellung von Grafiken und Diagrammen zur Erklärung von Konzepten oder Abläufen innerhalb von Software. Denn wer kenn es nicht, man hat Software entwickelt, verschiedene Konzepte und Ansätze angewendet und dann vergehen einige Monate und vieles gerät in Vergessenheit oder aber ein neues Teammitglied möchte eingearbeitet werden. Bei mir trifft aktuell beides zu, denn bei meinen privaten Projekten vergesse ich durch häufige Kontextwechsel gerne Dinge und auf der Arbeit versuche ich gerade neue Kollegen in mein aktuelles Projekt einzubinden.
Geht wählen - Europawahl 2019
Auch wenn heute Sonntag ist und der geneigte Mensch an diesem Tag gerne länger schläft und am besten gar nichts tut, solltet ihr euch heute zumindest einmal bewegen. Denn die Europawahl steht an und in Bremen sogar ebenfalls die Bürgerschaftswahl.
Dabei werde ich hier keine Empfehlungen geben wen man wählen sollte, denn dies ist kein Politikblog, sondern ein IT und Gaming Blog. Wer jedoch in den letzten Wochen Meldungen rund um das Thema Europapolitik mitbekommen hat, sollte zumindest wissen wen man vielleicht nicht wählen sollte.
Doch am Ende ist es ohnehin nur relevant überhaupt wählen zu gehen. Also aufraffen, ein paar Meter Bewegung schaden ja nicht, ein paar Kreuze machen und somit seinen wichtigen Anteil am großen Ganzen leisten. Danach sollte noch genug vom Sonntag übrig bleiben, würde ich sagen.
Server Informationen - Grund für die Ausfälle
Vor ca. 14 Tagen endeten die über zwei Wochen andauernden Probleme meines Servers, mit einem Umzug auf ein anderes System. Begonnen hatten die Probleme Ende März mit einem Update auf Ubuntu 18.04. Grund für das Update war der auslaufende Support für das bis dahin genutzte Ubuntu 14.04. Die Neuinstallation und Neueinrichtung verlief generell gut, bis zum Start meiner Java Micro-Services.
Ich konnte lediglich die Suche oder die Kommentarfunktion aktivieren und vermutete zu Beginn Java Probleme. Nach einigen weiteren Test mit nativen Programmen (ein Go Programm, welches lediglich einen simplen String in eine Datei schreibt, wurde genutzt) konnte ich allerdings feststellen, dass die Problematik das gesamte System betraf. Aus einem mir bis heute nicht komplett ersichtlichen Grund war es nicht möglich über eine bestimmte Anzahl von Threads zu kommen.
Diverse Debugging Runden mit und ohne den Strato-Support, das Auslesen aller möglichen Limits, Erhöhen von verfügbaren Ressourcen und Anpassen von Config-Dateien brachte leider keine Besserung. Nach ca. 10-20 gestarteten Threads mit meinem Standard Nutzer oder dem Root Nutzer und einem variierenden globalen Limit von ca. 200 Threads war immer Schluss. Die Hard- und Soft-Limits lagen dabei bei 400 - 800. Im Fall des Erreichens der Threadgrenze war nicht mal mehr das Forken auf der Shell möglich.
Serverprobleme behoben
Es ist geschafft, nach zwei Wochen voller Problemen und Downtimes ist Boehrsi.de wieder komplett online. Dies gilt für den Blog an sich, die Suche, die Kommentarfunktion und ebenfalls für das automatische Deployment. Letzteres ist für mich persönlich durchaus relevant, da ich dadurch einiges an Zeit und Aufwand spare.
Auf die konkreten Probleme werde ich noch einmal gesondert eingehen, ebenso wie auf die Fehlerbehebung, welche eher rabiat ist. Denn ich habe den Server gewechselt, bin allerdings bei Strato geblieben. Denn alles in allem bin ich seit vielen Jahren sehr zufrieden und auch wenn die aktuellen Probleme sehr unschön und langwierig waren, so war der Support durchaus gut.
Doch lange Rede kurzer Sinn, Boehrsi.de ist wieder online und wird in der nächsten Zeit wieder gewohnt viele Inhalte bringen. Außerdem gibt es ein paar geplante kleine Optimierungen für den Blog, welche ich mir in den letzten zwei Wochen überlegt habe. Dies bezieht sich vor allem auf das Aussehen. Seid also gespannt, bald gibt es vielleicht die eine oder andere Änderung zu sehen.
Serverprobleme dauern an
Auch wenn hier nun wieder Content zu sehen ist, die Serverprobleme bestehen leider weiterhin und ich arbeite zusammen mit Strato an einer Lösung, welche hoffentlich bald wieder die volle Funktionalität meiner Seite und der weiteren Dienste zur Verfügung stellen wird.
Konkret bedeutet dies das aktuell wenig bis keine News veröffentlicht werden, da ich die komplette Automatisierung für das Deployment des Blogs deaktiviert habe und manuell für die Aktualisierungen sorgen muss. Zusätzlich sind alle erweiternden Dienste offline. Dies bedeutet sowohl die Suche, wie auch die Kommentare sind derzeit nicht aktiviert und entsprechend nicht nutzbar. Weitere Dienste die normalerweise auf dem Server aktiv sind, sind leider ebenfalls deaktiviert und können nicht genutzt werden.
Sobald die Seite wieder komplett online ist, wird es diversen neuen Content geben, den ich aktuell entsprechend meines normalen täglichen Rhythmus erstelle. Somit dürft ihr euch zumindest über diverse neue Beiträge freuen, sobald alles wieder online ist. Sofern möglich werde ich auch die aktuellen Serverprobleme und die dazugehörige Lösung noch einmal thematisieren. Da das letzte Gewinnspiel von den Ausfällen betroffen ist, wird es sehr zeitnah eine erweiterte Version meines bekannten monatlichen Gaming Gewinnspiels geben. Ich hoffe ich kann euch binnen der nächsten Tage meinen Blog wieder vollständig zur Verfügung stellen.
Server Update wird durchgeführt
Wie bereits erwähnt plane ich ein Update meines Servers, welches mit einer kompletten Neuninstallation verbunden ist. Dadurch ergeben sich offline Zeiten und eventuelle Migrationsprobleme meiner vorhandenen Skripte und Tools auf die neue Ubuntu Version. Heute beginnt der Prozess das Backups und der Vorbereitung der Neuinstallation. Je nach Fortschritt wird es entweder heute oder am Montag die finale Umstellung geben. Geplant ist den Ausfall der Seite bei unter zwei Stunden zu halten, dies hängt allerdings stark davon ab wie schnell das neue Image vom Hoster eingespielt werden kann. Da dies aber ein automatisierter Prozess ist, hoffe ich alles geht fix von statten. Sobald alles wieder online ist wird es eine weitere News zum Thema geben. Falls euch mein geplantes Vorgehen bei diesem Prozess interessiert, schaut euch ruhig meinen etwas älteren, aber durchaus noch validen, Beitrag zu meinen Server-Update-Plänen an.
#SaveYourInternet - Nein zum Uploadfilter
Ich versuche mich mit meinem Blog auf die Themen Gaming, Software, Hardware und die Entwicklung von Software zu beschränken. Ich schreibe bewusst wenig über die Politik und dortige Entwicklungen, was nicht daran liegt das ich keine Meinung habe, sondern eher daran das ich meinen Blog für das was ich gerne mache nutzen möchte und die Anzahl an Rants open_in_new gering halten möchte. Dies ist zwar eine bewusste Entscheidung, aber auf Artikel 13 und Konsorten und die damit verbundenen Demos möchte ich heute einfach noch einmal hinweisen.
Ich werde das Problem mit Artikel 13 und dem Uploadfilter nicht noch einmal erklären, denn ich denke die meisten haben es bereits mitbekommen und für alle anderen binde ich ein sehr gutes Erklärungsvideo im unteren Teil der News ein. Abgesehen davon dass das Konzept an sich eher fragwürdig ist und es technisch quasi nicht realistisch umsetzbar ist, wurde im Rahmen der Debatte um den Uploadfilter derart viel Schindluder seitens diverser Politiker getrieben, dass sich mir die Haare zu Berge stellen.
Alles in allem dürfte der Uploadfilter und alle Artikel + Regeln die damit verbunden sind diverse Dinge verschlechtern, Dienste komplett ins Aus treiben und generell zu einer Veränderung des Internets führen die eigentlich keiner will. Falls auch ihr wollt dass dies nicht geschieht, folgt den Related Links und werdet aktiv. Ich denke nicht dass das Internet perfekt ist, allerdings denke ich auch nicht das der Uploadfilter irgendwas positives in diesem Kontext verändern würde. In diesem Sinne #SaveYourInternet.
Kommentare importiert und Such-Service aktualisiert
Wie bereits am letzten Wochenende angekündigt habe ich nun alle Kommentare aus dem alten System importiert. Dadurch sind nun knapp 1800 Kommentare im neuen System vorhanden. Formatierungen und ähnliches sollten übernommen worden sein. Das Ganze wurde über ein halbautomatisches Shell-Script umgesetzt, welches den JSON Export des alten Systems mit den Referenzen des Neuen verknüpfte und kleinere Änderungen durchführte, sodass alles direkt via SQLite Befehlen importierbar war.
Ebenfalls durchgeführt habe ich das angekündigte Update des Such-Services. Dadurch ist es nun möglich erfolgreichere Suchen mit mehreren oder kürzeren Begriffen durchzuführen. Zusätzlich sind Suchen mit Wildards (*) nun umfangreicher möglich. Konkret bedeutet dies, dass man nun auch bei mehreren Suchbegriffen ein Wildcard-Zeichen am Ende des letzten Begriffes nutzen kann. Als Beispiel kann man nun also auch nach “The Divi*” suchen und erhält Ergebnisse zu “The Division”. Die Geschwindigkeit sollte dabei gewohnt performant bleiben.
Beide Dienste sind selbst entwickelt und in Java als Micro-Services geschrieben. Ich plane weiterhin selbige als Open-Source Lösungen zur Verfügung zu stellen. Aktuell teste ich allerdings gerade etwas mit Go als Programmiersprache und plane einen der beiden Dienste mit ähnlichem Umfang nach Go zu portieren, sodass ich vielleicht sowohl die Performance wie auch die Ressourcennutzung optimieren kann.