My Profile Photo

Sheogorath's Blog


Depending on the time of the day a friend, a colleague, a wise guy. The beauty of the world is its sense of humor to show humans their way by letting them search their own.


  1. Electron-builder offline

    Today I learned how hard it is to package electron-based applications in an offline environment. It’s not just electron itself that causes issues, but various build steps/packages in the node ecosystem simply assume that an internet connection is accessible and will fail if they can’t call the network. Today I encountered yarn that only works offline, when you pass the --offline flag to it, which doesn’t work when it’s called within project shell-scripts you don’t control. I encountered electron-builder that will download various libraries and doesn’t want you do something about it or offer to pre-download them via dependency management. All in all, it was a rather frustrating experience and didn’t end as productive as I would have wished for. …


  2. OKD without Red Hat is dead

    Today I learned that OKD, the free software version of Red Hat OpenShift, is basically a dead Kubernetes distribution for everyone who doesn’t have a Red Hat subscription. When looking at it, there is the “stable” version 3.11.0 and the “preview” version 4.x. So while you are not supposed to use the 4.x version of OKD anywhere in production, the 3.11 version got its last release in October 2018. And there are no plans to improve this situation. Means if you want to run OKD, you have to maintain it yourself, which makes the whole idea of an Kubernetes distribution obsolete. In other words: Pay Red Hat or do it yourself. And I don’t think it’s worth the pain. …


  3. In Ansible "omit" doesn't omit sometimes

    Today I learned that in Ansible the | default(omit) filter doesn’t omit the value within a string. Instead it replaces the statement with a random string looking like this: __omit_place_holder__17ce35dc24337a3145aee27cda2d6baefa37ddea. This is rather unintuitive as one would expect that omit would result in an empty string or alike, but it seems like the Ansible implementation of omit works by replacing it with randomly generated string, and then check if each parameter is equal for this string. The lifetime of this string is limited to the lifetime of the Ansible process and used throughout its runtime wherever someone using omit as value. …


  4. smtps is dead, long live submissions

    Today I learned that in 2018 with RFC8314 a new mail submission service was standardized by the IETF and the IANA. It’s called submissons and re-allocates the original well-known port of smtps which was introduced in 1997 and revoked again in 1998 after the standardization of STARTTLS for SMTP and submission. submissions standardizes the quite common but not standard-conform usage of the smtps port 465 as a port for mail submission by clients (MUAs) instead of MTAs, which should have used the submission port 587 instead when following the IETF and IANA standards at the time. RFC8314 tries to fix that but might causes just more chaos as people like me are, or better were, still convinced that 465 was not to be used as it was revoked as well-known port in 1998. Well, now we can say, not any more. …


  5. 'Today I learned…' is hard

    Today I learned that this series is harder to make that I thought in first place. I thought you happen to do so many things every day, that there is for sure something new, worth writing about. Turns out, not necessarily. It seems like one might learns something every day, but not everything you learn about is what you want to share on your website. …


  6. Steueridentifikationsnummer

    Today I learned that the German “Steueridentifikationsnummer”, in English “tax identification number”, was introduced with the warning about, but also the explicit promise that it would not become a universal identifying number for citizens. And that the German constitution or “basic law” also was already used to protect German citizens from such attacks on their privacy. For the first time in 1969 when the government wanted to collect general statistics about German citizens and how they live. …


  7. Coconut milk vs Coconut water

    Today I learned that coconut milk is not the same as coconut water. While coconut water is found in young coconuts, coconut milk extracted from “mature coconuts”. Coconut water, also known as coconut juice, is rather clear and nice to drink in summer. Coconut milk on the other hand is rather rich and contains a lot more fat and oil. There are even different kinds of Coconut milk based on how much fat it contains. …


  8. Font Hinting

    Today I learned that font hinting is a thing. Font hinting is used to optimize fonts to display properly on low resolution screens. In web fonts they can increase the size of the font-file drastically but are almost never used since screen sizes are rarely that small these days. …


  9. SELinux kernel flags

    Today I learned that SELinux can be disabled in two ways during boot. Besides enforcing=0 there is also selinux=0. The former will obviously set SELinux in permissive mode but still label all new files properly. While the latter will disable SELinux entirely and therefore break your system by labelling all newly created files with default_t on next SELinux-enabled reboot. …


  10. 30€ Infrastructure

    Today I learned that I spend roughly 30€ per month on my private IT infrastructure. I collected all server, storage and backup storage cost as well as calculating the domain costs down to a monthly basis. I think those 30€ are well invested and provide me a lot better web experience than most people out there have, even when I have to solve problems myself. …