• +43 660 1453541
  • contact@germaniumhq.com

Tutorial

Migrating From Docker to Kubernetes

If you already have some containerized infrastructure running with docker-compose, or just plain docker containers that are provisioned by a config management tool, you definitely want to switch to Kubernetes. Here's how I did it.


Read more

Using Boundary Timer Events in Adhesive BPMN

When having a critical long running task, it's imperative we get immediate feedback on things that run longer than they are allowed. With the new Timer boundary events, that's trivial to model.


Read more

Force Named Argument Calling in Python Revisited

If you remember the last article on how to force function calling, by always specifying the argument names in our previous article, we were going with an *args argument that captured extra junk. Turns out there's an easier way. Simply use *. Unbelievable!


Read more

Event Deduplication in BPMN

When ingesting a lot of events it makes sense to process only the last relevant event from the received events, and discard the previous ones. Since BMPN already works with execution tokens, which are in themselves events, how can we drop duplicated events?


Read more

Creating REST Endpoints Using BPMN Messages in Python

Sometimes we just want to process events that arrive from an outside system, but still model these in an BPMN process. BPMN natively supports that representation in the form of input messages starting events. We'll be wiring Flask to stream messages directly into the process using the message_calback function.


Read more

Managing Microk8s and Regular Clusters by Merging Configs

After we install the snap of microk8s, we notice that the default .kube/config is not there, furthermore we need to use the microk8s.kubectl binary to access it. One option is aliasing the kubectl to microk8s.kubectl, but that has its own drawbacks, such as not being able to use it in scripts. Furthermore if we already have a .kube/config we'd want the configs to be merged. So how do we achieve that?


Read more

Creating a New Python BPMN Process With Adhesive

BPMN is great. We draw what we want to execute, and the engine takes care about the parallelism parts. We visually represent how the parts of the program are wired. With adhesive, we take it one step further and instantly implement the backing process. So let's start designing!


Read more

How to Automatically Upload Public Ssh Keys to Hosts

Whenever a new server needs to be managed, the first task is to upload my public key on that system, so I don't need to ever remember the password again, and use it again. Here's how I automated that process.


Read more

Force Named Argument Calling in Python

When calling functions in python, it makes sense to name the arguments, since they convey what values mean. A call to update(3, 5) is communicating less than update(major_version=3, minor_version=5). So how do we enforce that?


Read more

Essential Windows Subsystem for Linux (WSL) Settings

As an alternative to cygwin, I'm using more and more the Windows Subsystem for Linux (WSL). Unfortunately when trying to use it, esp. if coming from cygwin you'll need to consider the filesystem permissions, and how the drives are mounted so docker plays well when doing volume mounts. Here's how:


Read more