• +43 660 1453541
  • contact@germaniumhq.com

Tagged: python-development

How to Create Qt5 Python Applications Using PySide2

When doing GUIs in Python, I always see tutorials on either TkInter or PyQt5. Most people don't realize that "The Qt Company" (that's their name, really) has their own API, called PySide2, and it's trivial to use. Let's explore how.


Read more

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: 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

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

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