• +43 660 1453541
  • contact@germaniumhq.com

Tutorial

Errata on Better Closures

This article is an errata to the previous article I just wrote. Why? It turns out I was wrong in stating that ordinary objects would be better than nested functions. How do I know? Benchmarks. Let's see them now.


Read more

Better Closures in Python Using Regular Objects

If you remember, a while back, I've run into an issue regarding creating callbacks that were bound to the local context. Namely, the garbage collector pressure, and memory usage, since these functions are invisibly linking to the previous stack frames. I found an easy pattern to break these links down, using regular Python objects.


Read more

Python BPMN Event Deduplication With Adhesive

What happens when we might receive many events, but only need to process the last one? For example, in a Kubernetes operator, where events from a custom resource keep streaming in, we want to process only the custom resource's last state. This approach is called event deduplication. Before we created a whole scaffolding around in BPMN, that would wait using locks and manually track the events. Using this is prone to problems that we'll analyze and see the bundled solution offered by Adhesive.


Read more

Vim Auto-Formatting for Asciidoc and Markdown

When writing a Markdown file, or an Asciidoc, you might want to use the vim formatter, to do automatic text wraps. You type gq to call the formatter, and the text splits and wraps correctly. Oh, wait a minute, now all the lists are broken. Now what?


Read more

Python: Fighting the Invisible Memory Thief

I noticed that when processing a lot of events, adhesive would significantly slow down. I always assumed it was because of the way the processing created the execution tokens - with new callbacks tied to each execution. It's all clear now what was going on.


Read more

Writing BPMN Let's Encrypt Kubernetes Operators in Python II

As I already mentioned, I wasn't too happy about the currently available DNS operators out there that integrate with let's encrypt. What I wanted was one that works right of the box, and allows me to add new Ingress objects, and magically generate their TLS certificates. I'm going to break down in a small mini-series of articles on how I ended up implementing it.


Read more

Writing BPMN Let's Encrypt Kubernetes Operators in Python I

As I already mentioned, I wasn't too happy about the currently available DNS operators out there that integrate with let's encrypt. What I wanted was one that works right of the box, and allows me to add new Ingress objects, and magically generate their TLS certificates. I'm going to break down in a small mini-series of articles on how I ended up implementing it.


Read more

Optimizing Docker Containers

When creating containers, having multiple layers dramatically reduces the time of development. Unfortunately, having a bunch of layers is a bad practice. So how do we reconcile the two? Simple, by compiling the Dockerfiles with docker-optimizer.


Read more

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