Was hast du letzte Woche gemacht?

Nullable, nullable, nullable

Was sind denn nun Nullables? Eine Hint an den Compiler, der darlegt, ob erwartet wird, dass eine Variable den Wert ’null‘ haben könnte oder nicht.

Dieser wird nicht zur Optimierung des Codes genutzt, sondern um den Programmierer darauf hinzuweisen, dass er jetzt doch eine Variable mit null bedient hat oder keinen Null-Reference-Check eingebaut hat. Es gibt dann amüsante Compiler Warnings…

Eine bestehende Bibliothek auf nullables umzurüsten, kostet einiges an Fleißarbeit, aber man findet viele potentielle Lücken. Und nicht immer trivial, insbesondere bei Generics, die sowohl Werte- als auch Referenztypen beinhalten können.

https://docs.microsoft.com/de-de/dotnet/csharp/nullable-references

Busy Beaver

Der heutige Abend war geprägt von leichter Erkältung und dem Willen ein vollständiges Programm zu implementieren.

Daraus wurde die Implementierung einer Busy Beaver ‚Maschine‘. Eigentlich wollte ich nur mnochmal wissen, ob ich performant implementieren kann und hier bin ich soweit glücklich. 47.000.000 Runden werden innerhalb einer halben Sekunde berechnet.

var states = BeaverRuleParser.ParseRule("1RB 0LC 1RC 1RD 1LA 0RB 0RE 1RH 1LC 1RA", beaver);

Was ist der Busy Beaver… Am Besten hier beschrieben: htttps://en.wikipedia.org/wiki/Busy_beaver.

Ich finde es immer wieder beeindruckend, wie man aus einem ganz kleinen Satz an Regeln (10 Regeln) eine Beschäftigung über mehr als 47 Millionen Schritten erzeugen kann ohne dass eine unendliche Wiederholung eintritt. Der fleißige Bieber ist beschäftigt, er ist sehr lange beschäftigt, wird jedoch fertig!

Der Quellcode ist natürlich auch unter https://github.com/mbrenn/busybeaver-csharp abrufbar…

Paar Erkenntnisse habe ich auch mitgenommen:

  • bit[] ist ähnlich schnell wie int[]
  • BitArray brachte keinen Geschwindigkeitsvorteil, eher im Gegenteil
  • Properties {get;set;} haben einen deutlichen Geschwindigkeitsnachteil, auch wenn sie nur auf ein internes Feld gehen
  • JetBrains Performance Viewer ist brauchbar und hilft bei der punktuellen Optimierung
  • Der Unterschied zwischen ‚Debug‘ und ‚Release‘ liegt grob bei Faktor 5 bis 10.

2019 geht vorbei, 2020 kommt

Gibt hier kein Jahresrückblick, sondern nur ein Wunsch an euch alle für ein erfolgreiches, amüsantes, abwechslungsreiches und herausforderndes Jahr 2020.

Meine Pläne für 2020:

  • Mehr Plastikmodellbau, eventuell mit ein wenig Elektronik
  • Klavier lernen… soweit der Plan
  • Weniger Arbeiten, mehr Freizeit
  • Weniger Ernsthaftigkeit… ja, sollte klappen
  • Der DatenMeister wird erwachsen und nutzbar…

Meine Wünsche 2020 für das Land:

  • Normalisierung der Debattenkultur
  • Einen erfolgreichen Anfang der Mobilitäts- und Energieversorgungswende
  • Weniger ‚Shitstorms‘ und gelenkte Empörung
  • Mehr Kuchen für alle… Gerne auch Knäckebrot

Projekt Katzenwohnhaus

Nachdem wir zwei schöne Katzen haben, Flamiau (wie das Pokémon) und Rocky, steht natürlich die Frage: Freigänger (damit Vogelmörder oder platt vom Auto) oder kein Freigänger. Problem: Im Sommer sind die Türen offen…

Daher: Die Katzen brauchen ein Katzenhaus draußen. Eindeutig. Sonst frieren die armen Katzileins.

Der Grobplan steht… bin gespannt, wie gut die Umsetzung klappen wird. Habe auch auf einen Projekt- und Verifikationsplan verzichtet.

Morgen geht es erstmal zum Bauhaus

Docker, Jenkins and Asciidoctor

The today’s afternoon was highly occupied by Jenkins, Docker and Asciidoctor. I never used any of them before but I have a local server „left over“, so I tried to build up an automatic builder and deployer.

Continuous deployment as a hype… Hyper, hyper.

So… What was done?

  1. Fighting against Docker and understanding how Jenkins can be installed…
  2. Fighting again against Docker to figure out how Asciidoctor can be ‚injected‘ into the docker. Ok… using ‚docker exec‘ is not the correct way. I should have created my own Dockerfile… But where is the application data stored? Is it resetted whenever I create a new docker file?
  3. Now, everything is running up and the fights against Asciidoctor began
  4. By the way: The SCP plugin for Jenkins is also a mess.

There is a mess on several levels:

  • SCP plugin does not like default crypto of the sshd server… Now, I did some changes… but Security on a public server… I should know, what I have introduced in sshdconfig. Probably, I will get rid of the SCP plugin and use the scp being delivered with the Docker Container. When I learn how I get the Jenkins user account aware of my SSH keys.
  • Asciidoctor is a mess regarding relative directories. Now I put everything into two folder… The .adoc files and the images… Flat as flat…
  • SCP plugin is again a mess since it is not capable to copy with hierarchy, but a relative hierarchy to the target file

So… What is achieved:

  • Docker runs
  • Jenkin runs
  • Whenever I publish to ‚develop‚ on Github, the website is updated… Yeahaa…
    • Ok… not really… Jenkins pulls every 10 minutes whether a new update on Github was done. I did not manage to figure out how a push notification from Github to my local server in my house is done… Probably also not possible since the server is not reachable from the outside (at least I hope so).

Yeahaa… I’m happy. Time to get some cheese.

Finished: SUCCESS

Dinge, die mir in Chile auffallen

  • Es wird demonstriert…
  • Etwas spanisch zu können, wäre schon von Vorteil
  • Sehr nette Menschen, hilfsbereit und fürsorglich
  • Sicheres Gefühl in der Stadt, allerdings sollte man schon wach sein
  • Tränengas ist scheiße und wirkt ziemlich krass
  • Klimakatastrophe macht auch hier keinen Halt
  • Das Ende der Welt ist windig… Und Wind geht auf die Laune
  • Pizza ist Pizza
  • Pisco Sour trinkt sich gut
  • 4G Ausbau geht auch in ländlichen Regionen
  • Da, wo man ist, sind auch Touristen…. (wir sind der Tourismus)
  • Sonnenschein im Dezember und weihnachtsarme Atmosphäre hebt die Laune.

In diesem Sinne. Bilder folgen

Auf Reisen

Die Gunst des Urlaubs nutze ich für eine schöne Reise in die Ferne. 10 Tage weit, weit weg. Nicht mehr. Nicht weniger. Auf der einen Seite soll sich die Reise und der Weg auch lohnen, auf der anderen Seite mag ich auch nicht zu lange alleine von zu Hause weg sein….

Gerade in Madrid gelandet und die nächste Station wartet.