RSSAmplifier

Blog

Philipp Hahn

Open Source Software Developer

blog.pmhahn.deRSS feed ↗10 posts

Latest posts

Building Python packages via GitLab pipeline with type checking

My main programming language is Python and I’m a huge fan of static type hinting. As of 2026 there are four type checkers: Dropbox mypy (Python) Microsoft pyright (TypeScript) Facebook pyrefly (rust) Astral ty (rust) I like to integrate them into my GitLab workflow, which includes generatin a Code Quality report. On top of this my pipeline also runs Astral ruff as a linter and code formatter and…

Running linters in GitLab

Linters run as part of GitLab Continuous Integration pipelines to guarantee code quality. A Merge Request based workflow will start from a branch main being currently at some commit start. You normally fork a branch develop from that branch base and will create several commits c1, c2, …, cN. When you push that branch and create a Merge Request, a pipeline may start and will run several jobs.

Linux and the Windows NT file system

The Windows New Technology File System (NTFS) has a long history with Linux: Driver Type Based on Kernel Period Read-write Original Kernel Scratch 2.1.74 1995-2001 Read-only Linux-NTFS Kernel Scratch 2.5.11 2002-2024 Read-only Captive FUSE ntfs.sys 2003-2006 Read-write NTFS-3G FUSE Linux-NTFS 3.18 2006- Read-write NTFS3 Kernel Paragon 5.15 2021- Read-write NTFS Plus Kernel Linux-NTFS 7.1 2026-…

Proper dependency tracking in GNU make

make is used to build projects, e.g. compile source code into binaries. If the project consists of multiple files, explicit dependencies must be specified to run the command in the correct order. In addition to that Makefiles can also be used to track implicit dependencies: If one file is modified, only those commands are re-run which are needed. For large projects that can be a big time-saver if…

Padding and alignment of C structs

Q: How to debug padding and alignment issues of C struct? A: gdb --silent --batch -ex 'ptype /o struct my_t' some.o

Linux Kernel Module Symbol Versioning

The Linux kernel itself and its modules may export symbols, so that other modules can import and use them. As the functions are written in C, it is important that the function signature matches: the number of arguments must match the ordering of the arguments must match the data types must match, which includes the structure and layout of all input and output parameters If any of them changes, the…

Shell-trivia #3: set -e

Es gab bereits zwei Blog-Eintrag Shell-trivia #1 und Shell-trivia #2 zum Thema set -e. Mein Kollege N. Schier hat mich heute Morgen aber mit einer weiteren Shell-Absurdität überrascht: #!/bin/sh set -e date && false && true date Wie häufig wird date ausgeführt?

Debian 13 Trixie released

Last Saturday - 2025-08-09 - Debian 13 “Trixie” has been released after 2 years of work. 🥳

shell `trap` signal

What’s wrong with signal handling like this: #!/bin/sh trap 'echo Cleanup…' EXIT HUP INT TERM ...

shell `trap` and proper quoting

What’s wrong with #!/bin/bash TMPDIR=$(mktemp -d) trap 'rm -r $TMPDIR' EXIT ...