1 September 2020

Shattenjagen

Debugging

Heute will ich etwas über eine beliebte Beschäftigung von Softwareentwicklern schreiben: dem Schattenjagen.

Schon früh lernt man als Softwareentwickler, Fehler zuerst bei sich zu suchen, bevor man Probleme bei anderen sucht. Oft genug ist es Lernen-durch-Schmerzen. Man behauptet, eine Library oder Code eines Kollegen hat einen Bug und bekommt dann nachgewiesen, dass es der eigene Code war. Man lernt also, erstmal auszuschließen, dass es sich bei dem Problem um den eigenen Code handelt, bevor man ihn woanders sucht.

Aber manchmal (oder öfter, je nach der einen Fähigkeit) ist es halt doch ein Problem, das man nicht selbst verursacht hat. Aber bis man dahin kommt, habt man oft schon lange Zeit bei der Fehlersuche verbracht.

Mein aktuelles Beispiel war z.B. ein Fehler in Liquibase, der bei der Nutzung von mariadb eine seltsame Exception geworfen hat (https://liquibase.jira.com/browse/CORE-3457). Und ausgerechnet bei einem neuen Pet-Project hatte ich mich entschieden, eine MariaDB zu nutzen. Und lief auf den Fehler. Ich habe an meinen Changelogs für Liquibase herumgeschraubt und sie solange umgeschrieben, bis ich einfach mal ein leeres Changelog nutzte und den gleichen Fehler bekam.

Und diesmal brachte mich Google dann auf die Jira-Issue CORE-3457. Ich habe also nun frohen Mutes einen Github-Issue für Quarkus 1.7.1.Final geöffnet – der derzeit aktuellen Version. Und dann wollte ich diesen Issue auch gleich lösen und einen Pullrequest dafür öffnen – man will ja auch etwas für die OpenSource tun und nicht immer nur geiern.

Also quarkus geforkt, in die IDE geladen und dann erst gesehen, dass im Master bereits liquibase 4.0.0 genutzt wird – und der Fehler wurde bereits vor ein paar Tagen gefixt.

Und so lebte mein Bug-Issue bei Quarkus ganze 10 Minuten, bevor ich ihn wieder kleinlaut geschlossen habe. Im Moment baue ich gerade das Snapshot-Quarkus, da ich keine 20 Tage warten will, bis ich weitermachen kann mit meinem Projekt. Aber alles in allem, habe ich sicherlich 5 Stunden wieder mal einen Schatten gejagt …

Titelbild: Meme von G.L Solaria  auf dev.to

7 April 2020

OpenShift or Kubernetes cluster configuration catalogue

Old Phonebook (lusi@rgbstock)

Kubernetes is not kubernetes. Every cluster is configured in a special way and offers additional features. Some of them are build in the distribution, like OpenShift contains for example a default ingress service (the router) – others are provided by the team maintaining the cluster. Or the maintaining team of the cluster decided not to provide certain features of k8s or the distribution used.

How do you communicate the feature set you provide to your customers. For a single cluster and a small group of users it’s easy: you explain it to your users. But the bigger the cluster grows and the more users you have, you find out: this does not scale. And adding multiple clusters in different versions, it becomes a mess.

But you could use a k8s feature to build a catalogue of features of the current cluster. You define the feature sets and add the installed features to the cluster and your users may query the cluster about the supported features of the cluster they want to use.

The k8s feature I’m talking about is the custom resource. Just create a custom resource containing the information you want to provide and add the features to the catalogue. Then the catalogue can be queried like this:

$ oc get ift
NAME                 GROUP          VERSION        AGE       DOCUMENTATION
features-catalogue   cluster-info   1.0.0-alpha1   1d        https://github.com/klenkes74/k8s-installed-features-catalogue/
$

I don’t want to double the information, so I point for the implementation to my github repo containing an implementation of this idea: https://github.com/klenkes74/k8s-installed-features-catalogue. Please comment and write your opinion of such a catalogue.

Titelbild: old phonebook (lusi@rgbstock, RGBStock Lizenz)

28 Mai 2019

Creating the s2i builder with ASCIIDOC generation software included

Vier aufgeschlagene Bücher auf einem Haufen

(Providing documentation the OpenShift way – Part 2)

For building the documentation pod, we need two components: the asciidoc html generator and the webserver for delivering the static pages later. There are several base containers published containing either the asciidoc generator or the webserver. I liked the converter published on https://github.com/asciidoctor/docker-asciidoctor. But that is only the generator part. On the other hand there are default bsic containers like httpd or nginx containing the web server part. Or, as third option you could use a ruby s2i builder as starting point and add both, Asciidoc and the web server later.

Weiterlesen
28 Mai 2019

Providing documentation the OpenShift way – Part 1

Vier aufgeschlagene Bücher auf einem Haufen

Documentation is one of the most hated part of the life of a developer. So the documentation is often the most neglected part of a project. At work I use Asciidoctor to write my customer documentation and it is quite acceptable. I loved LaTeX and Asciidoctor is an acceptable replacement for technical documentation – especially with the alternatives being google doc or word.

Weiterlesen
20 April 2019

Das 1. Zimmer ist fertig

viele gelbe Pöppel und in der Mitte ein einzelner blauer Pöpel

Was man immer vergisst, wenn man länger nicht umgezogen ist, ist dass es lange dauert, bis man wieder in der neuen Wohnung „angekommen“ ist. Nach dem Umzugstag stehen meistens noch längere Zeit einige Umzugskartons herum. Wenn man einen Speicher oder einen Keller hat, ist es auch nicht unüblich, dass einige wenige Kartons garnicht ausgepackt werden.

Aber auch wenn alles ausgepackt ist, braucht es einige Zeit, bis es wieder die eigene Wohnung ist. Dinge wandern erstmal, bis sie ihren Platz finden. Einige Dinge werden aussortiert, weil man sie nicht mehr braucht oder es einfach keinen Platz gibt (heutzutage wäre wohl der Ausdruck „sie machen keine Freude mehr“).

Und wenn man neben dem Umziehen und Einrichten noch arbeiten muss, kann es sein, dass man auch längere Zeit „in einer Baustelle“ wohnt. Einiges wird schneller erledigt, andere Dinge (wie bei mir einige Lampen, die wohl noch längere Zeit einfache Lampenfassungen sein werden) brauchen dafür länger.

Aber irgendwann kommt der Zeitpunkt, an dem ein Zimmer fertig ist. Zumindest für einige Zeit (das Leben besteht aus Veränderung, also ändert sich auch unsere Wohnungen ständig). Und so etwas ist heute passiert. Ein kleines aber wichtiges Zimmer ist fertiggeworden: mein Badezimmer. Es ist so ziemlich das kleinste Zimmer der Wohnung. Aber es ist meines und es ist fertig. OK, wir haben noch das große Badezimmer im 2. Stock – aber das ist das Badezimmer meiner Tochter, das ist schon gut nutzbar, wir müssen aber noch die Handtücher usw. in die Wandschränke einsortieren.

Aber das Badezimmer im 1. Stock ist nun fertig. Alles erledigt, was erledigt werden sollte. Ich bin stolz.

Oder man könnte auch einfach sagen: ich habe den Waschbeckenunterschrank aufgebaut und den Spiegelschrank aufgehängt. Aber das klingt so banal …

15 Februar 2019

Einkäufe, Einkäufe und Einkäufe

viele gelbe Pöppel und in der Mitte ein einzelner blauer Pöpel

Langsam gerate ich in einen Kaufrausch. Diverse Anschaffungen macht so ein Sesshaftwerden ja notwendig. So braucht man z.B. einen Kühlschrank, diverse Kochgerätschaften, Lebensmittel, Lampen, Teppiche, Fahrradpumpen, Ersatzbänder für das Beschriftungsgerät, technisches Equipment, um auch das letzte Eck des Hauses mit W-Lan und Internet auszustatten und und und.

Und das alles kommt entweder von Amazon (wie ein komplett neues Geschirrset, da das alte die letzten Umzüge nicht so ganz überstanden hat) und Besteck (Warum hat das alte Set 6 Messer, 4 Gabeln, 5 große und 3 kleine Löffel? Das ist eine komische Mischung).

Und zusammen mit den IKEA-Einkäufen der Kinderzimmer und des eigenen neuen Bettes und Ergänzungen sammelt sich Massen von Kartons an. Berge, ja ganze Gebirge. Und auch die Nahrungsmitteleinkäufe reißen nicht ab. Nudeln, Reis, Mehl, Zucker, Milch, ja auch Salz und andere Gewürze wollen wieder beschafft sein.

Da ich ja früher die ganze Woche im Hotel lebte und mir anfangs immer die Lebensmittel schlecht wurden, habe ich auch an den Wochenenden nicht gekocht (nunja, ich kann es sowieso nicht besonders gut). Aber nun wird wieder gekocht werden und all die kleinen Dinge, die sich sonst über längere Zeiten ansammeln, müssen wieder her. Und alles will ins Haus und in den 1. OG geschafft werden. Sowas schlaucht. Wo ich die letzten Jahre nach der Arbeit entspannt aufs Hotelzimmer bin, reicht jetzt ein Tag „leben“ ohne Arbeit (ich habe ja diese Woche wegen des Umzugs freigenommen) um mich komplett zu schlauchen.

Wie erwartet, strengt die Umgewöhnung ziemlich an. Aber bald kommen auch die positiven Seiten des häuslichen Lebens dazu. Sich unter der Woche mit Freunden treffen, die man nicht von der Arbeit kennt sondern in diesem seltsamen Umfeld von „Nachbarn“ zu finden sind z.B. – da gibt es viele neue Welten zu entdecken. To boldly go where lot of people have gone before …