<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linuxkurs-Blog (Posts about Programmieren)</title><link>https://lannert.de/debloss/</link><description></description><atom:link href="https://lannert.de/debloss/en/categories/programmieren.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:lannert@hhu.de"&gt;Detlef Lannert&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Wed, 01 Apr 2026 17:17:17 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Endlich: Niederländisches SQL</title><link>https://lannert.de/debloss/en/posts/endlich-niederlandisches-sql/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;&lt;a class="reference external" href="https://duckdb.org"&gt;DuckDB&lt;/a&gt; ist eine moderne, schnelle und vielseitige
Datenbankimplementierung, die von einem niederländischen Team federführend
als Open-Source-Software entwickelt wird. Heute (!) gibt es nun endlich eine
Erweiterung dazu
(&lt;a class="reference external" href="https://duckdb.org/community_extensions/extensions/eenddb.html"&gt;EendDB&lt;/a&gt;,
eend ist das niederländische Äquivalent zu duck), die eine passende Lokalisierung
der ansonsten am Englischen orientierten Abfragesprache SQL bereitstellt.
Nach der Installation von DuckDB – wenn noch nicht vorhanden – mit&lt;/p&gt;
&lt;pre class="literal-block"&gt;curl https://install.duckdb.org | sh
ln -s ~/.duckdb/cli/latest/duckdb ~/.local/bin/duckdb&lt;/pre&gt;
&lt;p&gt;kann man die EendDB-Erweiterung sehr einfach laden und sofort benutzen:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ duckdb
DuckDB v1.5.1 (Variegata)
Enter ".help" for usage hints.
memory D INSTALL eenddb FROM community;
memory D load eenddb;
memory D CALL enable_dutch_parser();
┌─────────┐
│ success │
│ boolean │
└─────────┘
  0 rows
memory D MAAK TABEL eenden (id GEHEEL_GETAL, naam TEKST, gewicht KOMMAGETAL);
memory D TOEVOEGEN AAN eenden WAARDEN (1, 'Donald', 1.2), (2, 'Daffy', 1.5),
         (3, 'Dagobert', 3.7);
memory D SELECTEER * VAN eenden WAARBIJ gewicht &amp;gt; 1.3 VOLGORDE PER naam;
┌───────┬──────────┬─────────┐
│  id   │   naam   │ gewicht │
│ int32 │ varchar  │  float  │
├───────┼──────────┼─────────┤
│     2 │ Daffy    │     1.5 │
│     3 │ Dagobert │     3.7 │
└───────┴──────────┴─────────┘
memory D .q
$&lt;/pre&gt;
&lt;p&gt;Bleibt zu hoffen, dass nun auch deutsche, vielleicht sogar bayerische oder
rheinische Lokalisierungen in Angriff genommen werden (TU INFÜJEN, ERKLÄR
MISCH, ROLLE RÜCKWÄRTS).&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/endlich-niederlandisches-sql/</guid><pubDate>Wed, 01 Apr 2026 17:01:03 GMT</pubDate></item><item><title>Cooler gegen cool: Angriffe mit manipulierten Softwarepaketen gehen weiter</title><link>https://lannert.de/debloss/en/posts/cooler-gegen-cool-angriffe-mit-manipulierten-softwarepaketen-gehen-weiter/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Anscheinend sind zahlreiche Nutzer dazu übergegangen, sich mit einer
„Cooldown“-Frist gegen bösartig manipulierte Softwarepakete zu schützen, also
neue Pakete erst einzusetzen, wenn eine Woche lang keine Probleme bekanntgeworden
sind. Darauf reagieren nun die Urheber der Schadsoftware: Offenbar werden
einige der bösartigen Payloads nun erst nach einigen Tagen aktiv – wenn der
Cooldown-Schutz nicht mehr wirkt …&lt;/p&gt;
&lt;p&gt;Zur Zeit werden auch andere mögliche Abwehrmaßnahmen diskutiert, beispielsweise
die Überprüfung hochgeladener Software auf verdächtige große Binärdateien (Blobs).
Mal sehen, wer das Wettrennen gewinnt; einstweilen sollte man mit Versionsupgrades
vorsichtig sein.&lt;/p&gt;
&lt;p&gt;Diese Vorsicht muss sich (einstweilen??) nicht auf Pakete der gängigen
Linux-Distributionen erstrecken, da deren Aktualisierungen wohl noch gut genug
von den Teams kontrolliert werden.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/cooler-gegen-cool-angriffe-mit-manipulierten-softwarepaketen-gehen-weiter/</guid><pubDate>Sun, 29 Mar 2026 18:00:00 GMT</pubDate></item><item><title>Vibe Coding in Python, Rust oder Go?</title><link>https://lannert.de/debloss/en/posts/vibe-coding-in-python-rust-oder-go/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Ein &lt;a class="reference external" href="https://lifelog.my/episode/why-i-vibe-in-go-not-rust-or-python"&gt;Blog-Post&lt;/a&gt;
berichtet von guten (beeindruckenden!) Erfahrungen mit Vibe-Coding in Go und
erklärt, weshalb der Autor keine Chance sieht, mit Python oder Rust ähnlich
produktiv zu sein.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/vibe-coding-in-python-rust-oder-go/</guid><pubDate>Fri, 27 Mar 2026 16:30:00 GMT</pubDate></item><item><title>OpenAI übernimmt Astral – was bedeutet das für die Python-Welt?</title><link>https://lannert.de/debloss/en/posts/openai-ubernimmt-astral-was-bedeutet-das-fur-die-python-welt/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Astral ist die Firma, die die (aus gutem Grund inzwischen sehr beliebten)
Python-Tools uv, ruff und ty entwickelt und entsprechende Kompetenz in
Rust-basierter Python-Software aufgebaut hat. Sie war risikokapitalfinanziert
und ist jetzt von OpenAI, der Firma hinter ChatGPT und DALL-E, übernommen
worden.&lt;/p&gt;
&lt;p&gt;Über mögliche Auswirkungen auf das Python-Universum
&lt;a class="reference external" href="https://simonwillison.net/2026/Mar/19/openai-acquiring-astral/"&gt;schreibt Simon Willison&lt;/a&gt;
in seinem Blog. Es scheint so, als müsste man sich wegen der Nutzung der
Astral-Tools (einstweilen) keine Sorgen machen …&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/openai-ubernimmt-astral-was-bedeutet-das-fur-die-python-welt/</guid><pubDate>Fri, 27 Mar 2026 16:00:00 GMT</pubDate></item><item><title>Angriffe auf Software-Lieferketten: Updates verzögern?</title><link>https://lannert.de/debloss/en/posts/angriffe-auf-software-lieferketten-updates-verzogern/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Immer wieder wird Software entdeckt, beispielsweise auf GitHub, die manipuliert
und mit Hintertüren versehen ist, durch die Bösewichte die Kontrolle über jeden
Rechner erlangen können, auf dem die Software läuft. Durch solche Malware kann man
auch betroffen sein, wenn man für seine eigene Python-Software die
Paketabhängigkeiten aktualisiert – und das vielleicht gerade deshalb, weil man
durch neuere Pakete Fehler in früheren Versionen beheben lassen will.&lt;/p&gt;
&lt;p&gt;Gerade jetzt ist das Python-Paket LiteLLM als
&lt;a class="reference external" href="https://lwn.net/Articles/1064479/"&gt;kompromittiert aufgefallen&lt;/a&gt;, das in der
Version 1.82.8 SSH-Keys, Zugangsdaten, Krypto-Börsen etc. geklaut hat.&lt;/p&gt;
&lt;p&gt;Deshalb gehen manche Entwickler und Admins dazu über, nicht die neuesten
Versionen der Abhängigkeiten zu benutzen, sondern ein paar Tage abzuwarten,
ob in der Zwischenzeit Probleme erkannt werden.&lt;/p&gt;
&lt;p&gt;Einige Subkommandos von &lt;code class="docutils literal"&gt;uv&lt;/code&gt; haben eine Option &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;--exclude-newer&lt;/span&gt;&lt;/code&gt;
(z.B. &lt;cite&gt;run &amp;lt;https://docs.astral.sh/uv/reference/cli/#uv-run&amp;gt;_&lt;/cite&gt;), mit der
Paketversionen, die neuer als ein bestimmtes Datum oder ein Zeitraum (&lt;code class="docutils literal"&gt;'1 week'&lt;/code&gt;)
sind, von der Auflösung von Abhängigkeiten ausgeschlossen werden können.
(Stattdessen kann global die Variable &lt;code class="docutils literal"&gt;UV_EXCLUDE_NEWER&lt;/code&gt; auf einen
geeigneten Wert gesetzt werden.)&lt;/p&gt;
&lt;p&gt;Dieses Feature ist für reproduzierbare Builds gedacht, kann aber auch zum
&lt;a class="reference external" href="https://sethmlarson.dev/pip-relative-dependency-cooling-with-crontab"&gt;Dependency Cooling&lt;/a&gt;
genutzt werden, um Probleme mit solchen Malware-Paketen zu vermeiden.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/angriffe-auf-software-lieferketten-updates-verzogern/</guid><pubDate>Wed, 25 Mar 2026 19:00:00 GMT</pubDate></item><item><title>Kampagnen zur „Altersverifikation“ im Internet – kommt die freie Software dabei unter die Räder? [Update]</title><link>https://lannert.de/debloss/en/posts/altersverifikation-im-internet-freie-software/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Einer &lt;a class="reference external" href="https://github.com/upper-up/meta-lobbying-and-other-findings"&gt;umfangreichen Recherche&lt;/a&gt;
zufolge hat Meta viele Millionen $$ und mehr als 80 Lobbyisten eingesetzt,
um Google und Apple mit ihren App-Stores für eine Altersverifikation im Internet
verantwortlich zu machen – und selbst, mit seinen Social-Media-Angeboten, damit
keinen Aufwand zu haben.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://lwn.net/Articles/1062779/"&gt;LWN&lt;/a&gt; macht darauf aufmerksam, zumal in einigen
US-Bundesstaaten schon (offenbar als Ergebnis dieser Lobbyarbeiten) entsprechende
Gesetze verabschiedet wurden. Dabei soll die Altersverifikation, natürlich
verbunden mit biometrischer Identifikation der Nutzer, vom Betriebssystem
erzwungen werden. Dies wäre nicht nur eine großartige Basis für eine totale
Überwachung aller Internetaktivitäten der ganzen Bevölkerung (Big Brother lässt
grüßen!), sondern womöglich auch das Ende freier Betriebssystemsoftware.&lt;/p&gt;
&lt;p&gt;Sollten die Internetaktivitäten Minderjähriger nicht am besten von ihren Eltern
kontrolliert (und mitverantwortet) werden? Vielleicht durch administrative
Einstellungen im System? Kinder können auch ohne „Root-Rechte“ ein Smartphone,
ein Tablet oder einen Laptop / PC sinnvoll für Schul- und Freizeitzwecke
nutzen und dabei Medienkompetenz erwerben …&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Ein &lt;a class="reference external" href="https://www.theregister.com/2026/03/13/opinion_os_verification/"&gt;Artikel von The Register&lt;/a&gt;
behandelt ebenfalls dieses Thema und die Auswirkungen auf Linux.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/altersverifikation-im-internet-freie-software/</guid><pubDate>Fri, 13 Mar 2026 16:00:00 GMT</pubDate></item><item><title>Allzu neue Python-Pakete ausschließen</title><link>https://lannert.de/debloss/en/posts/allzu-neue-python-pakete-ausschliessen/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Einige Subkommandos von &lt;code class="docutils literal"&gt;uv&lt;/code&gt; haben eine Option &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;--exclude-newer&lt;/span&gt;&lt;/code&gt;
(z.B. &lt;a class="reference external" href="https://docs.astral.sh/uv/reference/cli/#uv-run"&gt;run&lt;/a&gt;), mit der
Paketversionen, die neuer als ein bestimmtes Datum oder ein Zeitraum (&lt;code class="docutils literal"&gt;'1 week'&lt;/code&gt;)
sind, von der Auflösung von Abhängigkeiten ausgeschlossen werden können.
(Stattdessen kann global die Variable &lt;code class="docutils literal"&gt;UV_EXCLUDE_NEWER&lt;/code&gt; auf einen
geeigneten Wert gesetzt werden.)&lt;/p&gt;
&lt;p&gt;Dieses Feature ist für reproduzierbare Builds gedacht, kann aber auch zum
&lt;a class="reference external" href="https://sethmlarson.dev/pip-relative-dependency-cooling-with-crontab"&gt;Dependency Cooling&lt;/a&gt;
genutzt werden, um Probleme mit Malware-Paketen zu vermeiden.
(Der verlinkte Artikel beschreibt, wie man diese Funktionalität mit &lt;code class="docutils literal"&gt;pip&lt;/code&gt;
erreichen kann, das sie noch nicht voll unterstützt.)&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/allzu-neue-python-pakete-ausschliessen/</guid><pubDate>Thu, 05 Mar 2026 12:00:00 GMT</pubDate></item><item><title>eBPF-Programme mit Pythoncode erzeugen</title><link>https://lannert.de/debloss/en/posts/ebpf-programme-mit-pythoncode-erzeugen/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Mit &lt;a class="reference external" href="https://github.com/pythonbpf/python-bpf"&gt;PythonBPF&lt;/a&gt;
kann man eBPF-Programme direkt von Python-Code aus erzeugen, ohne selbst den
C-Code schreiben zu müssen. PythonBPF generiert und compiliert das Programm
im Hintergrund, und die entstehende Objektdatei kann man direkt ins System laden.
Auch Hashmaps können mit Python-Mitteln definiert werden.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://xeon.me/gnome/pythonbpf/"&gt;Dieser Blog-Post&lt;/a&gt;
beschreibt das Vorgehen anhand eines Beispiels, und es gibt eine
&lt;a class="reference external" href="https://docs.google.com/presentation/d/1DsWDIVrpJhM4RgOETO9VWqUtEHo3-c7XIWmNpi6sTSo/edit"&gt;Präsentation&lt;/a&gt;
dazu.&lt;/p&gt;
&lt;p&gt;Was ist eBPF überhaupt? „Extended Berkeley Packet Filter“ steht für eine Methode, Code
in den Linux-Kernel einzubringen, ohne Kernelmodule zu schreiben und in den Kernel
hineinzubinden. Außerdem wird dieser Code formal verifiziert, damit er möglichst
nicht den Kernel lahmlegen oder kompromittieren kann.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/ebpf-programme-mit-pythoncode-erzeugen/</guid><pubDate>Fri, 28 Nov 2025 19:00:00 GMT</pubDate></item><item><title>Einen Python-Editor oder ein Jupyter-Notebook in eine Webseite einbetten</title><link>https://lannert.de/debloss/en/posts/einen-python-editor-oder-ein-jupyter-notebook-in-eine-webseite-einbetten/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Mit &lt;a class="reference external" href="https://getpynote.net/"&gt;pynote&lt;/a&gt; kann man Python-Notebooks in Webseiten
einbetten – es genügt dafür ein Script-Tag und ein Element
&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;&amp;lt;pynote&amp;gt;&amp;lt;/pynote&amp;gt;&lt;/span&gt;&lt;/code&gt;. Wenn das Element leer ist, bekommt man einen
Python-Editor mit leerem Arbeitsbereich, in den man Programmzeilen eintippen
und ausführen lassen kann; alternativ kann auch Code für den Editorbereich
vorgegeben oder aus einer Datei geladen werden. Wird eine &lt;code class="docutils literal"&gt;.ipynb&lt;/code&gt;-Datei
geladen, stellt pynote das Jupyter-Notebook dar, das wie gewohnt eine bearbeit- und
ausführbare Mischung aus Text- und Programmabschnitten sein kann.&lt;/p&gt;
&lt;p&gt;Auf der verlinkten Webseite gibt es eine Reihe von Beispielen zum Ausprobieren.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/einen-python-editor-oder-ein-jupyter-notebook-in-eine-webseite-einbetten/</guid><pubDate>Thu, 27 Nov 2025 19:00:00 GMT</pubDate></item><item><title>CPython in Rust programmieren?</title><link>https://lannert.de/debloss/en/posts/cpython-in-rust-programmieren/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Es gibt einen &lt;a class="reference external" href="https://discuss.python.org/t/pre-pep-rust-for-cpython/104906"&gt;„Pre-PEP“&lt;/a&gt;
zur Verwendung von Rust in CPython.&lt;/p&gt;
&lt;p&gt;Guido und andere Core-Entwickler stehen diesen Ideen recht positiv gegenüber,
aber natürlich gibt es auch Bedenken und Vorbehalte (unterschiedlicher,
technischer wie nichttechnischer Art). Der Fokus des Pre-PEP wurde erst einmal
verändert – einstweilen soll das Augenmerk auf eigenständigen
Erweiterungsmodulen liegen. Die Umstellung der gesamten Python-Codebasis auf
Rust soll zu einem späteren Zeitpunkt neu betrachtet und diskutiert werden.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/cpython-in-rust-programmieren/</guid><pubDate>Mon, 24 Nov 2025 19:00:00 GMT</pubDate></item></channel></rss>