• +43 660 1453541
  • contact@germaniumhq.com

Blog

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

Containerizing the Build Process

Having the adhesive build process as code it's a nice feature to have. In combination with containers it makes the source code the only truth on how the build is being performed. But that still means we have a dependency now on the build system itself. So how do we get rid of it? We're going to containerize the local build system.


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

Germanium Selector Builder Chrome Plugin Is Now Available

After a lot of work, the Germanium Selector Builder Chrome Plugin is finally completed. It's now available on the Chrome Store as both a Free and a Pro Version.


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