• +43 660 1453541
  • contact@germaniumhq.com

Tutorial

Blacklisting Modules for the Linux Kernel

After the fiasco with the previous graphic card, I ordered a new one. Since Linux is Linux, nouveau was picked as the driver instead of the nvidia-drm. Because now we have a race condition: we just need to make sure that nouveau is never loaded first though.


Read more

Embedding Diagrams Into Documentation in AsciiDoctor

AsciiDoctor integrates well with diagram editors that take their input from text, in a seamless way. AsciiArt, GraphViz Dot, and even UML are supported. Here's how to achieve that.


Read more

Synchronizing Time With NTP and Ansible

When having multiple machines it makes sense to have them all using the same time. Otherwise it's pretty hard to track what happened where, especially when looking at logs. This is managed using the Network Time Protocol (ntp), and there's a package for that named ntp.


Read more

Try Kubernetes in a Snap in Ubuntu 18.04

If you want to try Kubernetes locally you're in for a lot of trouble. Installing it requires you to deal with changing apt repos, installing docker, installing kubectl and kubeadm, provisioning, installing networking, configuring the keys for cluster access, etc. Fortunately Ubuntu offers an easier way, via snaps.


Read more

Command Line Drawing on SVGs With XSLT 2.0

If we want to post process images, one way to have basic post processing, is to just process the SVG file with XSLT. This is possible, since SVG images are just simple XML files. Let's achieve that.


Read more

Fixing Virtual Desktops on Multiple Monitors in Ubuntu 18.04

When using multiple monitors, Gnome in Ubuntu 18.04 picks only the monitor where the panel is as a virtual desktop, with the other attached monitors as a place to pin windows. Fortunately there's an easy fix with an internal settings editor for Gnome named dconf-editor.


Read more

Creating WebDriver Browser Instances With Germanium's open_browser()

If you want to open a WebDriver browser instance using Selenium, you need a few steps. The binary driver available is required to be in the PATH, and you need to create a specific configuration object, depending on the browser type, to get the browser instance. In Germanium it's only open_browser("chrome"). Since Germanium is Selenium, how is that working?


Read more

Staying Organized With Freeplane (and Scripts)

As the number of blog posts keeps increasing on this blog, organizing and keeping track of all the tags that are available becomes more complicated. Fortunately it involves only a mindmap program, and a small script.


Read more

Configuring Containers via ConfigMaps Volumes in Kubernetes

Kubernetes provides ConfigMap objects that allow storing key value pairs into its own etcd storage. The backup of Kubernetes also includes then those objects. Mounting a single key from the config as a file in a container is also straightforward. We'll see in this article exactly how.


Read more

Disabling Swap for Kubernetes in an Ansible Playbook

If you're trying to install a Kubernetes on bare metal, it's useful to document this experience in an Ansible playbook. This makes the installation of new clusters trivial. But after finishing the installation, on a reboot of the node, you might find out your cluster is not coming up. One possible reason is having the swap still enabled.


Read more