Categories
Artificial Intelligence Encryption License Linux python

Slim PDF: from a PDF signing tool to a slim PDF editor in three days

How a small PAdES signing tool grew into slim-pdf: smartcards and KeePass as key sources, a ribbon GUI, form filling, OCR with each system’s own engine, text search, and why the license ended up as GPL-3.0.

Categories
Artificial Intelligence Linux Nextcloud python

Slim Scan: a feeder-to-PDF scanner app for Linux, built in a week

How a document scanner without eSCL/AirScan led to slim-scan: a pure-Python WSD client, a GTK 4 desktop app, image clean-up on the scanned pages, a SANE backend, and two upstream bugs in the epsonds driver.

Categories
Artificial Intelligence Dovecot Keycloak Mail OIDC python SSO

OAuth2 for an MCP mail server: what I learned on the way

Building an OAuth2-secured MCP mail server against a real Dovecot/Postfix mailbox surfaced four separate Keycloak client registrations, a Default-vs-Optional scope trap, and a genuinely counter-intuitive Audience-mapper gotcha behind a mysterious active: false.

Categories
Database Mariadb Mysql

Portabase mysql/mariadb backup fails

I recently tried to migrate my database backup strategy to portabase. It has a (c)lean interface and can handle the most common database types (postgres, mysql/mariadb but also mongodb or redis). While setting up things looked promising (once you configured the agent it regularly checks connections using the provided credentials and shows the results). This […]

Categories
Artificial Intelligence

Debugging MCP servers

MCP communication MCP servers and clients can talk to each other in different technical ways: Type Description Transport URL stdio In/output using stdio stdio SSE Server-Sent Events Network (HTTP) /sse Streamable HTTP Streamable HTTP Network (HTTP) /mcp Classic MCP Alternative: mcpo (openapi.json) Tools like openwebui prefer to use open APIs (like openapi) to achieve the […]

Categories
Linux

eduMFA/privacyIdea - convert TOTP secrets

eduMFA (privacyIDEA) only accepts hex‑encoded TOTP secret keys; this post shows why, and how to convert between hex and Base32 with ready‑to‑use Python scripts.

Categories
Artificial Intelligence Large Language Model (LLM)

LLM VRAM usage with llama.cpp

While trying to get some of Qwen’s latest models up and running on my AMD iGPU I encountered some crashes. The errors were misleading, but in the end it turned out to be out of memory errors, so I started to think about how much memory different components of a LLM use. The data in […]

Categories
Linux Ubuntu

Restore middle mouse button paste

I just installed a desktop machine with brand new Ubuntu 26.04. One of the things I missed was the possiblity to paste selected text by pressing the middle mouse button. The fix for Ubuntu default desktop (Gnome) is as easy as: Of course the first command is only needed to check the default setting (which […]

Categories
Linux

Deploying cert-manager for k3s using DNS-based ACME

Beware! This is still work in progress – I’ll need to re-run all steps on a clean install to verify everything really works as expected! I also assume, that you’re familiar with DNS-based ACME and that the required infrastructure is already in place. Installation of cert-manager Based on this description. Check installation: Creating first ACME […]

Categories
Cloud Linux Virtualization

Adding persistent storage to k3s

Basics Kubernetes/k3s is using the Container Storage Interface (short CSI) to provide persistent storage. More details about that can be found here. Options By default k3s/rancher ships with a storage class called “local-path“. According to k3s documentation an alternative is “longhorn” (see here). But there are plenty of other options based on NFS, Ceph (both […]