Posts in English

Migrating Python setup.cfg / setup.py to pyproject.toml

This is how I migrate my old style of Python project setup using setup.cfg and setup.py to pyproject.toml using uv and setuptools.

Before, I used pyenv with .python-project containing the name of a project-specific Python version to switch automatically on cd’ing to the project directory.

Read more ...


Zitronensäure Pulver Amazon Preisvergleich mit Mistral AI

Suchanfrage: https://www.amazon.de/s?k=zitronensäure+pulver

Dort habe ich den Text aller Produkte markiert und Mistral Large 2 gebeten, mir eine Tabelle daraus zu machen:

Read more ...


Kitty Terminal Emulator

https://sw.kovidgoyal.net/kitty/

noctuid/tdrop: A Glorified WM-Independent Dropdown Creator via Any way to make Kitty or Alacritty work as a dropdown terminal(gnome extension ddterm/yakuake)? : r/linuxquestions

Read more ...


TIL: SOA Refresh Value

[mxtoolbox.com warns] if DNS SOA TTL is lower than 20 minutes (1200 seconds) or higher than 12 hours (43200 seconds).

Read more ...


Vodafone Internet Down

Heute seit 1600.

Locutus ist direkt mit dem Modem verbunden.

Read more ...


NVMe broken?

https://bbs.archlinux.org/viewtopic.php?pid=1959161#p1959161

Well… Nothing to do here. Let’s wait and see. Meanwhile, I’ll use nvme1n1 as a temporary media storage.

Read more ...


Cleanup Git Repo (Rewrite)

Do not do this on public repos unless you are absolutely sure what you are doing!

My homeassistant config is in a git repo (of course). No knowing any better, I added the database file config/home-assistant_v2.db. It is growing fast and I want to exclude it from the repo.

Read more ...


Spülmaschine kaputt

Wir haben eine alte Ignis ADL 350 IP Spülmaschine.

Am Freitag, den 26.07.2024 fiel uns auf, dass die Maschine irgendwie nicht richtig spült. Am Samstag habe ich sie sauber gemacht und hatte gefühlt ein halbes Taschentuch am Putztuch. Vielleicht ist ein Taschentuch oder ein Küchentuch beim Einräumen mit reingerutscht - oops. Die Maschine spült, verwendet aber je Spülgang das ganze Salz (kein Witz). Erste Research legt die Vermutung nahe, dass der Schmutzsensor verstopft ist, und die Maschine deswegen so viel Salz in den Spülraum bringt. Gestern (Sonntag) habe ich Essigessenz probiert. Hat nicht viel geholfen.

Read more ...


Postgres Recursive Query

Suppose we have a hierarchy of industries:

root1

Read more ...


TIL: vim K

I was having fun with my Neovim config, but do not know the Lua API at all.

That’s why I was looking to find help for a word under my cursor. Thus, I googled “neovim open help under cursor”. Ingo Karkat delivered on Stackoverflow:

Read more ...


gigabit WAN

Vodafone was successful in upselling a faster connection to me. Now we have 1Gbps downstream and 50Mbps upstream. Just yesterday, the modem came by mail.

It’s a CGA6444VF.

Read more ...


setup.cfg –> pyproject.toml

https://pypi.org/project/ini2toml/

Read more ...


DuckDB

DuckDB just released 1.0.0. I bet on DuckDB. Let’s see what the future holds.

https://duckdb.org/2024/09/09/announcing-duckdb-110.html

Read more ...


Playing with llm

Journey:

https://www.google.com/search?q=chatgpt+cli

Read more ...


Public PostgreSQL?

I want a tool that can easily ingest arbitrary data that I can use for personal data science.

At first I was thinking of running Postgres publicly - of course with TLS enabled and strict access control.

Read more ...


Caddy Compression and Caching

This blog is built with Sphinx and served by Caddy.

Unfortunately https://pagespeed.web.dev/ says that https://blag.felixhummel.de/ is slow on mobile. Let’s do something about that.

Read more ...


TIL: Pycharm: Remember Database Query Results

As the docs state:

By default, PyCharm updates the same tab with results each time you run a new query after the previous one. You can change this behavior and create a tab each time you run a new query.

Read more ...


TIL: KeepassXC never ask

The KeepassXC-Browser extension asks if a domain is allowed to access credentials. I want to skip this dialog, as I always save passwords with a concrete domain. Here’s how (via):

Tools > Settings > Browser Integration > Advanced tab

Read more ...


KeepassXC Keeshare

https://keepassxc.org/docs/KeePassXC_UserGuide#_database_sharing_with_keeshare

Tools > Settings > KeeShare

Read more ...


LVM Snapshot Create / Merge / Rollback

Example use-case: Snapshot Gitlab VM disk before running an upgrade.

Check volume groups and logical volumes:

Read more ...


Git Sign Commits With SSH

https://docs.gitlab.com/ee/user/project/repository/signed_commits/ssh.html

First, make sure that your pubkey is present in Gitlab.

Read more ...


TIL: inxi system information

I was looking through the packages supplied by the Tuxedo apt repo:

That’s when I came across inxi.

Read more ...


TIL: Gitlab CI: The needs Keyword

Gitlab CI has the needs keyword since 2021. It allows building stageless pipelines, but has many uses.

Sometimes we run different test suites in parallel (e.g. unit-tests and integration tests), but want aggregated coverage results. This results in a pipeline like this:

Read more ...


TIL: Vim Last Opened Files

Vim can show a list of recently opened files:

🤓

Read more ...


TIL: Pycharm Open All Modified Files

Pycharm can open all modified files in new tabs.

Open the “Commit” tool window (Alt+0) and hit F4 on “Changes”:

Read more ...


TIL: Dockerfile Heredocs

I did not even know that Docker has support for heredocs until today.

Then I read the official blog post from 2021. In my defense: Using this depends on buildkit, which only became default in Docker Engine v23 released in 2023.

Read more ...


git bisect

Given that HEAD is a bad commit and v2.6.13-rc2 is good, start the bisect process:

Next, choose either one of:

Read more ...


OpenWrt on Linksys EA7300 V2

OpenWrt Table of Hardware Record

Linksys firmware download

Read more ...


Neovim Spell Checking for Multiple Languages

~/.config/nvim/init.vim

To enable spelling globally, run

Read more ...


Brooks’ Law

There is an image in The Bluffer’s Guide to The Mythical Man-Month that fits my mental model of one aspect of Brooks’ Law perfectly.

By increasing the number of people you increase the number of communication channels exponentially.

Read more ...


Static Sites as Gitlab Review Apps with Caddy

For our book’s page at Grundkurs agiles Software-Engineering we use Sphinx with myst-parser as a static site generator and Gitlab CI to build and deploy.

We use GitLab Review apps to deploy the site on a subdomain, e.g. some-branch.grundkurs-agiles-software-engineering.de.

Read more ...


setfacl

Allow writing to a directory for an unprivileged user using linux acl (setfacl).

Allow the user gitlab-runner to write to /var/www/felixhummel.de/.

Read more ...


Words Written This Year

The year is coming to an end. I promised myself to write more, so now would be a good time to count things, that is: words. Let’s count words!

I tried a top-down approach a while ago, but it did not work out, because I got side-tracked with technicalities. Let’s try a bottom-up approach this time.

Read more ...


TIL: Monitoring Docker Memory with Limits on Prometheus

One of our CI jobs failed seemingly without any reason. When a Celery job established a new HTTP connection, then its container stopped working. Later on I noticed the following message from docker-compose:

The exit code 137 means that a process was out of memory (OOM). In this case, the celery container had a limit of 2GiB and docker killed it when it went over that. Here is how we define the memory limit in our docker-compose.yml:

Read more ...


TIL: Thunderbird Keyboard Shortcuts

wshanks/tbkeys

Thunderbird > Addons: Search “tbkeys”

Read more ...


Rofi

A window switcher, application launcher and dmenu replacement

I am still on Ubuntu 20.04, so I only get version 1.5.4

Read more ...


TIL: vim docker-compose.yml completion using vim-coc

https://www.reddit.com/r/vim/comments/gs1f7j/any_dockercomposeyml_and_dockerfile_autocomplete/

~~neoclide/coc-yaml~~

Read more ...


TIL: Systemd Journald Cannot Clear the Logs of a Specific Unit

Some logs of my Docker containers got out of hand, so I tried Docker’s Journald logging driver. It did not take long for the log of the service to grow again, but no problem. Here’s the plan:

reconfigure service to be less verbose

Read more ...


Tuxedo Akku Aufgebläht

Stolz habe ich von meinem Tuxedo InfinityBook S 14 - Gen6 berichtet, nachdem wir es vor knapp 1,5 Jahren am 20.09.2021 gekauft hatten.

Vorgestern ist mir dann aufgefallen, dass sich der Akku aufgebläht hat:

Read more ...


Letsencrypt Wildcard With Hetzner DNS

https://community.hetzner.com/tutorials/letsencrypt-dns

Example domain: felixhummel.de

Read more ...


TIL: Grafana Dashboard Link Time Range

If you want to link from one dashboard to another, simply use

For example:

Read more ...


Wezterm

Origin:

coming from https://news.ycombinator.com/item?id=35397994

Read more ...


Python Ellipsis

You can use the ellipsis literal ... to show the general structure of some code while keeping it valid Python, e.g.:

src/ellipsis.py

Read more ...


TIL: Loki LogQL Pattern Matching for uWSGI Logs

Suppose you have log lines like this as uWSGI generates them:

First, let’s show the logs in a “Logs” view and filter them:

Read more ...


TIL: Prometheus file_sd_configs to Organize Static Scrape Configs

https://stackoverflow.com/a/71267679/241240

Changes to all defined files are detected via disk watches and applied immediately.

Read more ...


TIL: git restore

https://stackoverflow.com/questions/1463340/how-can-i-revert-multiple-git-commits by “meh”

Given

Read more ...


Vodafone

Ich bin seit vielen Jahren Kunde bei Vodafone - sogar noch seit der Zeit als Kabel Deutschland noch eine eigenständige GmbH (KDG) war. Da habe ich gerade gelernt, dass Kabel Deutschland aus der Telekom ausgegliedert wurde.

Fast alle Internetanbieter haben spezielle Angebote für Neukunden. Warum sollte ich als Bestandskunde, der dem Anbieter treu ist, mehr zahlen als ein Neukunde?

Read more ...


Bose Soundsport Return

The microphone of my Bose Soundsport Wireless headphones went dead today.

So I went to the Support Page. The chat was unavailable [1], so used Whatsapp. You can find the complete chat log below [2]. The input style of using numbers to select answers reminded me of old text adventure games and interfaces of the DOS-era.

Read more ...