<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on Niklas Deutschmann</title>
    <link>https://niklas-deutschmann.de/posts/</link>
    <description>Recent content in Posts on Niklas Deutschmann</description>
    <generator>Hugo</generator>
    <language>de</language>
    <lastBuildDate>Tue, 18 Aug 2026 07:31:34 +0200</lastBuildDate>
    <atom:link href="https://niklas-deutschmann.de/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Stromverbrauch durch (lokale) KI</title>
      <link>https://niklas-deutschmann.de/posts/20260818-stromverbrauch-durch-ki/</link>
      <pubDate>Tue, 18 Aug 2026 07:31:34 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260818-stromverbrauch-durch-ki/</guid>
      <description>&lt;p&gt;Ich habe mal versucht, den Stromverbrauch und die CO&lt;sub&gt;2&lt;/sub&gt;-Emissionen durch KI ausgehend von meinem eigenen Computer zu berechnen, also auch mit einem lokalen KI-Modell:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Während ich diese Zeilen hier tippe, liegt die Leistungsaufnahme meines Desktop-PCs bei etwa 100 Watt (einschließlich Monitor und FritzBox)&lt;/li&gt;
&lt;li&gt;Wenn ich hingegen &lt;a href=&#34;https://trainsimworld.com/de&#34;&gt;Train Sim World&lt;/a&gt; spiele, also CPU und Grafikkarte (GeForce RTX 3060) voll ausgelastet sind, komme ich auf 350-380 Watt.&lt;/li&gt;
&lt;li&gt;Nehmen wir der Einfachkeit halber an, dass ein lokal laufende KI-Modell (das ja ähnlich viele Berechnungen auf der Grafikkarte ausführt) zu einer ähnlichen Leistungaufnahme führt.&lt;/li&gt;
&lt;li&gt;250 Watt mehr macht bei 4 Stunden am Tag, in denen das Modell arbeitet, also &lt;strong&gt;eine Kilowattstunde&lt;/strong&gt; mehr pro Tag. 4 Stunden sind schon eine ganze Menge, schließlich wird man einen Teil der Zeit immer damit beschäftigt sein, den Output der KI zu überprüfen, nachzubearbeiten usw. Bei 220 Arbeitstagen im Jahr also 220 kWh.&lt;/li&gt;
&lt;li&gt;Angenommen, ich würde den deutschen Durchschnitts-Strommix beziehen und nicht 100% Ökostrom von den &lt;a href=&#34;https://www.ews-schoenau.de/&#34;&gt;Elektrizitätswerken Schönau&lt;/a&gt;: Dann wären wir bei &lt;strong&gt;&lt;a href=&#34;https://www.umweltbundesamt.de/themen/co2-emissionen-pro-kilowattstunde-strom-2025-nur&#34;&gt;344 Gramm&lt;/a&gt; CO&lt;sub&gt;2&lt;/sub&gt; pro kWh&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Bei 220 kWH wären das also ca. &lt;strong&gt;76 kg CO&lt;sub&gt;2&lt;/sub&gt; mehr im Jahr&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Das entspricht &lt;strong&gt;630 km&lt;/strong&gt; mit einem Verbrenner-Kleinwagen oder etwas mehr als der Hälfte eines Kurzstreckenflugs (Nürnberg-Frankfurt, einfache Strecke, mit Airbus A320 121 kg laut &lt;a href=&#34;https://co2.myclimate.org/de/flight_calculators/new&#34;&gt;Myclimate&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Nicht einberechnet sind hier natürlich die Emissionen zum Trainieren des Modells. Die Zahlen, die man dazu findet, liegen Bereich von einigen hundert Tonnen CO&lt;sub&gt;2&lt;/sub&gt; für einen Lauf (z.B. &lt;a href=&#34;https://www.ki-academy.at/post/ki-nutzung-und-co2-fu%C3%9Fabdruck-in-%C3%B6sterreich&#34;&gt;hier&lt;/a&gt;), die sich dann aber über sehr viele Nutzungen verteilen&lt;/li&gt;
&lt;li&gt;Es gibt auch noch High-End-Grafikkarten mit wesentlich höherer Leistungsaufnahme als bei meiner (&lt;a href=&#34;https://www.computerbase.de/artikel/grafikkarten/grafikkarten-2025-leistungsaufnahme.92789/&#34;&gt;über 500 Watt&lt;/a&gt;). Das sind auch genau die, mit denen sich auch größere KI-Modelle ausführen lassen.&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe mal versucht, den Stromverbrauch und die CO<sub>2</sub>-Emissionen durch KI ausgehend von meinem eigenen Computer zu berechnen, also auch mit einem lokalen KI-Modell:</p>
<ul>
<li>Während ich diese Zeilen hier tippe, liegt die Leistungsaufnahme meines Desktop-PCs bei etwa 100 Watt (einschließlich Monitor und FritzBox)</li>
<li>Wenn ich hingegen <a href="https://trainsimworld.com/de">Train Sim World</a> spiele, also CPU und Grafikkarte (GeForce RTX 3060) voll ausgelastet sind, komme ich auf 350-380 Watt.</li>
<li>Nehmen wir der Einfachkeit halber an, dass ein lokal laufende KI-Modell (das ja ähnlich viele Berechnungen auf der Grafikkarte ausführt) zu einer ähnlichen Leistungaufnahme führt.</li>
<li>250 Watt mehr macht bei 4 Stunden am Tag, in denen das Modell arbeitet, also <strong>eine Kilowattstunde</strong> mehr pro Tag. 4 Stunden sind schon eine ganze Menge, schließlich wird man einen Teil der Zeit immer damit beschäftigt sein, den Output der KI zu überprüfen, nachzubearbeiten usw. Bei 220 Arbeitstagen im Jahr also 220 kWh.</li>
<li>Angenommen, ich würde den deutschen Durchschnitts-Strommix beziehen und nicht 100% Ökostrom von den <a href="https://www.ews-schoenau.de/">Elektrizitätswerken Schönau</a>: Dann wären wir bei <strong><a href="https://www.umweltbundesamt.de/themen/co2-emissionen-pro-kilowattstunde-strom-2025-nur">344 Gramm</a> CO<sub>2</sub> pro kWh</strong></li>
<li>Bei 220 kWH wären das also ca. <strong>76 kg CO<sub>2</sub> mehr im Jahr</strong></li>
<li>Das entspricht <strong>630 km</strong> mit einem Verbrenner-Kleinwagen oder etwas mehr als der Hälfte eines Kurzstreckenflugs (Nürnberg-Frankfurt, einfache Strecke, mit Airbus A320 121 kg laut <a href="https://co2.myclimate.org/de/flight_calculators/new">Myclimate</a>)</li>
<li>Nicht einberechnet sind hier natürlich die Emissionen zum Trainieren des Modells. Die Zahlen, die man dazu findet, liegen Bereich von einigen hundert Tonnen CO<sub>2</sub> für einen Lauf (z.B. <a href="https://www.ki-academy.at/post/ki-nutzung-und-co2-fu%C3%9Fabdruck-in-%C3%B6sterreich">hier</a>), die sich dann aber über sehr viele Nutzungen verteilen</li>
<li>Es gibt auch noch High-End-Grafikkarten mit wesentlich höherer Leistungsaufnahme als bei meiner (<a href="https://www.computerbase.de/artikel/grafikkarten/grafikkarten-2025-leistungsaufnahme.92789/">über 500 Watt</a>). Das sind auch genau die, mit denen sich auch größere KI-Modelle ausführen lassen.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>DOSBox (2)</title>
      <link>https://niklas-deutschmann.de/posts/20260812-dosbox-2/</link>
      <pubDate>Wed, 12 Aug 2026 12:17:47 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260812-dosbox-2/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Nun ja, das Wordle mit Turbo Pascal 5.5 &lt;a href=&#34;https://codeberg.org/SonstHarmlos/tpwordle&#34;&gt;habe ich jetzt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nur 32-Bit-Varianten von Windows können die Programme, die man in der DOSBox kompiliert, überhaupt noch ausführen. War etwas eine Überraschung für mich.&lt;/li&gt;
&lt;li&gt;Ich war von diesem „Nur eine Datei gleichzeitig offen“ schon so genervt, dass ich nach einer Weile angefangen habe, VSCode (mit einem Pascal-Plugin) zu benutzen. Ich dachte schon „Naja, nettes Experiment, aber jetzt ist auch mal gut mit Programmieren wie vor 35 Jahren“, aber dann&amp;hellip;&lt;/li&gt;
&lt;li&gt;&amp;hellip;fand ich heute heraus, dass es gar nicht so schwierig ist, Programme zu schreiben, die mit Turbo Pascal 5.5 &lt;strong&gt;und&lt;/strong&gt; dem aktuellen &lt;a href=&#34;https://www.freepascal.org/&#34;&gt;Free Pascal&lt;/a&gt; übersetzbar sind und laufen (z.B. unter Linux). Wie geil ist denn das?&lt;/li&gt;
&lt;li&gt;D.h. vielleicht wird’s tatsächlich etwas mit der ablenkungsfreien Textverarbeitung im Geist von Word Perfect 5.1&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<ul>
<li>Nun ja, das Wordle mit Turbo Pascal 5.5 <a href="https://codeberg.org/SonstHarmlos/tpwordle">habe ich jetzt</a></li>
<li>Nur 32-Bit-Varianten von Windows können die Programme, die man in der DOSBox kompiliert, überhaupt noch ausführen. War etwas eine Überraschung für mich.</li>
<li>Ich war von diesem „Nur eine Datei gleichzeitig offen“ schon so genervt, dass ich nach einer Weile angefangen habe, VSCode (mit einem Pascal-Plugin) zu benutzen. Ich dachte schon „Naja, nettes Experiment, aber jetzt ist auch mal gut mit Programmieren wie vor 35 Jahren“, aber dann&hellip;</li>
<li>&hellip;fand ich heute heraus, dass es gar nicht so schwierig ist, Programme zu schreiben, die mit Turbo Pascal 5.5 <strong>und</strong> dem aktuellen <a href="https://www.freepascal.org/">Free Pascal</a> übersetzbar sind und laufen (z.B. unter Linux). Wie geil ist denn das?</li>
<li>D.h. vielleicht wird’s tatsächlich etwas mit der ablenkungsfreien Textverarbeitung im Geist von Word Perfect 5.1</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>DOSBox (1)</title>
      <link>https://niklas-deutschmann.de/posts/20260809-dosbox-1/</link>
      <pubDate>Sun, 09 Aug 2026 10:58:01 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260809-dosbox-1/</guid>
      <description>&lt;p&gt;Vor ein paar Tagen bin ich bei Mastodon auf &lt;a href=&#34;https://oldbytes.space/@gloriouscow/117044736309312697&#34;&gt;diesen Thread&lt;/a&gt; gestoßen. Da hat jemand mit Assembler ein sehr kleines DOS-Programm geschrieben, dessen Binärcode gleichzeitig auch eine Folge gültiger Emoji ist. Es hat bei mir nicht funktioniert (wahrscheinlich ist die Codierung einiger Zeichen beim Kopieren und Abspeichern im Texteditor kaputtgegangen), aber dadurch habe ich &lt;a href=&#34;https://www.dosbox.com/&#34;&gt;DOSBox&lt;/a&gt; entdeckt. Das ist ein DOS-Emulator (oder besser gesagt, x86-CPU-Emulator), der so gut gepflegt wird, dass er auch unter Windows 11 alte DOS-Programme besser ausführen soll als Windows selbst. Er emuliert natürlich auch eine Soundblaster-Karte, so dass dem Spielevergnügen nichts im Wege steht.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Vor ein paar Tagen bin ich bei Mastodon auf <a href="https://oldbytes.space/@gloriouscow/117044736309312697">diesen Thread</a> gestoßen. Da hat jemand mit Assembler ein sehr kleines DOS-Programm geschrieben, dessen Binärcode gleichzeitig auch eine Folge gültiger Emoji ist. Es hat bei mir nicht funktioniert (wahrscheinlich ist die Codierung einiger Zeichen beim Kopieren und Abspeichern im Texteditor kaputtgegangen), aber dadurch habe ich <a href="https://www.dosbox.com/">DOSBox</a> entdeckt. Das ist ein DOS-Emulator (oder besser gesagt, x86-CPU-Emulator), der so gut gepflegt wird, dass er auch unter Windows 11 alte DOS-Programme besser ausführen soll als Windows selbst. Er emuliert natürlich auch eine Soundblaster-Karte, so dass dem Spielevergnügen nichts im Wege steht.</p>
<p>Allerdings sind die Spiele, die ich Mitte der 90er Jahre häufig gespielt habe, auch auf anderen Kanälen verfügbar. <a href="https://de.wikipedia.org/wiki/Descent_%28Computerspiel%29">Descent</a> läuft z.B. auch <a href="https://archive.org/details/Descent_896">im Browser</a>, und <a href="https://de.wikipedia.org/wiki/Command_%26_Conquer:_Der_Tiberiumkonflikt">Command&amp;Conquer</a> kann man heute als „Remastered Collection“ <a href="https://store.steampowered.com/app/1213210/Command__Conquer_Remastered_Collection/">bei Steam kaufen</a> oder als Open-Source-Nachbau auch bei <a href="https://www.openra.net/">OpenRA</a> herunterladen, um nur zwei Beispiele zu nennen. Aber wir kommen trotzdem noch mal darauf zurück.</p>
<p>Aber wie sieht es mit Programmieren aus? In der DOSBox läuft natürlich kein volles MS-DOS, deshalb gibt es leider kein <a href="https://de.wikipedia.org/wiki/QBasic">QBasic</a>. Aber Turbo Pascal 5.5 lässt (oder ließ sich) ganz offiziell und kostenlos bei Borland (heute „Embarcadero“) <a href="https://web.archive.org/web/20040203055603/http://bdn.borland.com/museum/">herunterladen</a>.</p>
<p>Also, rein mit dem Inhalt der Ordner DISK1 und DISK2 ins virtuelle 3,5″-Diskettenlaufwerk, INSTALL.EXE starten und los geht’s:</p>
<p><img alt="Turbo Pascal nach dem Start in der DOSBox" loading="lazy" src="/images/turbo-pascal-01.png"></p>
<p>Was es damals schon gab:</p>
<ul>
<li>Einen Debugger, der fast alles konnte, was man heute wirklich braucht (Breakpoints, Ausführung in Einzelschritten, Überwachung von Variablen usw.)</li>
<li>Objektorientierung, zumindest rudimentär - 5.5 war die erste Version von Turbo Pascal, in der es „Klassen“ und Objekte gab</li>
<li>Eine gute Online-Hilfe</li>
</ul>
<p>Was es nicht gab:</p>
<ul>
<li>Die Möglichkeit, mehrere Dateien in der Entwicklungsumgebung gleichzeitig offen zu haben - das kam erst mit der Version 6.0 1990, die die „Turbo Vision“-UI-Bibliothek nicht nur benutzte, sondern auch in eigenen Programmen nutzbar machte.</li>
<li>Irgendeine Möglichkeit, auf das Internet zuzugreifen, jedenfalls nicht ohne Riesenaufwand (woher bekomme ich einen TCP/IP-Stack?)</li>
<li>Syntax-Highlighting, Autocomplete, KI-Unterstützung usw. :-)</li>
</ul>
<p>Ein „Hello World“-Programm war jedenfalls schnell geschrieben:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-objectpascal" data-lang="objectpascal"><span style="display:flex;"><span><span style="color:#66d9ef">program</span> HelloWorld;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">uses</span> Crt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span>
</span></span><span style="display:flex;"><span>   key<span style="color:#f92672">:</span> <span style="color:#66d9ef">Char</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">begin</span>
</span></span><span style="display:flex;"><span>     WriteLn<span style="color:#f92672">(</span><span style="color:#e6db74">&#39;Hello World&#39;</span><span style="color:#f92672">)</span>;
</span></span><span style="display:flex;"><span>     key <span style="color:#f92672">:=</span> ReadKey;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span>.<span style="color:#960050;background-color:#1e0010"></span>
</span></span></code></pre></div><p>Aber was könnte man im Jahr 2026 damit entwickeln?</p>
<ul>
<li>Vielleicht könnte ich mein <a href="https://codeberg.org/SonstHarmlos/anywordle">Wordle für die Kommandozeile</a> nach Turbo Pascal portieren</li>
<li>Ein schön „ablenkungsfreier“ Editor bzw. eine kleine Textverarbeitung (Export des formatierten Textes nach HTML oder Markdown), der natürlich die Tastenkombinationen des legendären Word Perfect 5.1 unterstützen muss!</li>
</ul>
<p><strong>Nachtrag:</strong> Ich sehe gerade, QBasic und QuickBasic <a href="https://en.wikipedia.org/wiki/QBasic#External_links">lassen sich auch herunterladen</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>MySQL Collations Deep Dive</title>
      <link>https://niklas-deutschmann.de/posts/20260808-mysql-collations/</link>
      <pubDate>Sat, 08 Aug 2026 08:57:00 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260808-mysql-collations/</guid>
      <description>&lt;p&gt;When you have some experience with databases, you probably know that the „collation“ is a setting related to the language und character set that is relevant for sorting strings. But it is far more than that. So, let’s do some hands-on experiments:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;create database collation_demo;    
use collation_demo;    
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;latin-1&#34;&gt;Latin-1&lt;/h2&gt;
&lt;h3 id=&#34;sort-order&#34;&gt;Sort order&lt;/h3&gt;
&lt;p&gt;Back in the days before UTF-8 when &lt;code&gt;latin1&lt;/code&gt; was the most frequently used character set, MySQL was well known for the fact that the Swedish sort order was the default order for &lt;code&gt;latin1&lt;/code&gt; - „Ä“ and „Ö“ come after „Z“. Which felt always a bit like a bug in applications with German strings.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>When you have some experience with databases, you probably know that the „collation“ is a setting related to the language und character set that is relevant for sorting strings. But it is far more than that. So, let’s do some hands-on experiments:</p>
<pre><code>create database collation_demo;    
use collation_demo;    
</code></pre>
<h2 id="latin-1">Latin-1</h2>
<h3 id="sort-order">Sort order</h3>
<p>Back in the days before UTF-8 when <code>latin1</code> was the most frequently used character set, MySQL was well known for the fact that the Swedish sort order was the default order for <code>latin1</code> - „Ä“ and „Ö“ come after „Z“. Which felt always a bit like a bug in applications with German strings.</p>
<p>It is still like this today, a historical reminder of the <a href="https://en.wikipedia.org/wiki/MySQL#History">Swedish origin</a> of MySQL.</p>
<pre><code>show character set like 'latin1%';
+---------+----------------------+-------------------+--------+
| Charset | Description          | Default collation | Maxlen |
+---------+----------------------+-------------------+--------+
| latin1  | cp1252 West European | latin1_swedish_ci |      1 |
+---------+----------------------+-------------------+--------+

create table cities(id int auto_increment primary key, name varchar(20)) character set latin1;    
insert into cities(name) values (&quot;Aachen&quot;);    
insert into cities(name) values (&quot;Zürich&quot;);    
insert into cities(name) values (&quot;Öhringen&quot;);

select name from cities order by name;
+-----------+
| name      |
+-----------+
| Aachen    |
| Zürich    |
| Öhringen  |
+-----------+        
</code></pre>
<p>So let’s just change the table collation to <code>latin1_german1_ci</code> and this will fix the sort order, won’t it?</p>
<p>Well, no:</p>
<pre><code>alter table cities character set latin1 collate latin1_german1_ci;
select name from cities order by name;
+-----------+
| name      |
+-----------+
| Aachen    |
| Zürich    |
| Öhringen  |
+-----------+
</code></pre>
<p>This is already a new thing that I learned while writing this article:</p>
<ul>
<li><a href="https://dev.mysql.com/blog-archive/mysql-8-0-collations-migrating-from-older-collations/">Changing the database collation will only affect new tables</a></li>
<li>Changing the table collation will only affect new columns</li>
</ul>
<p>So let’s just change the column collation:</p>
<pre><code>alter table cities modify name varchar(20) character set latin1 collate latin1_german1_ci;
select name from cities order by name;
+-----------+
| name      |
+-----------+
| Aachen    |
| Öhringen  |
| Zürich    |
+-----------+
</code></pre>
<h3 id="sort-order-options-for-german">Sort order options for German</h3>
<p>There is not only a <code>german1</code>, but also a <code>german2</code>, what’s the difference? We’ll explain it now, because the different collations are also available with UTF-8 character sets. „German 1“ is <em>dictionary sort order</em> („Ä“ is treated like „A“), whereas „German 2“ is <em>phonebook sort order</em> („Ä“ is treated like „AE“). There seem to be DIN norms for this. Let’s try it:</p>
<pre><code>insert into cities(name) values (&quot;Oer-Erkenschwick&quot;);
select name from cities order by name;
+------------------+
| name             |
+------------------+
| Aachen           |
| Oer-Erkenschwick |
| Öhringen         |
| Zürich           |
+------------------+

alter table cities modify name varchar(20) character set latin1 collate latin1_german2_ci;
select name from cities order by name;
+------------------+
| name             |
+------------------+
| Aachen           |
| Öhringen         |
| Oer-Erkenschwick |
| Zürich           |
+------------------+
</code></pre>
<p>But now, let’s look at collations for UTF-8 character sets, because this is the default today.</p>
<hr>
<h2 id="utf-8">UTF-8</h2>
<pre><code>alter table cities modify name varchar(20) character set utf8mb4;
</code></pre>
<p>(we still have to use <code>utf8mb4</code>, because <code>utf8</code> will give us only 3-byte UTF-8 characters, which won’t allow emojis 😥 - but this is an entirely different story worth a separate blog article)</p>
<p>This will give as us the same sort order as <code>german1</code>:</p>
<pre><code>select name from cities order by name;
+------------------+
| name             |
+------------------+
| Aachen           |
| Oer-Erkenschwick |
| Öhringen         |
| Zürich           |
+------------------+
</code></pre>
<p>Why? Because the default collation for <code>utf8mb4</code> is <code>utf8mb4_0900_ai_ci</code></p>
<pre><code>show character set like 'utf8mb4';
+---------+---------------+--------------------+--------+
| Charset | Description   | Default collation  | Maxlen |
+---------+---------------+--------------------+--------+
| utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci |      4 |
+---------+---------------+--------------------+--------+
</code></pre>
<p>The <code>_ai_</code> means „accent insensitive“ and the <code>_ci_</code> „case insensitive“. „Accent insensitive“ means that „ü“ is equivalent to „u“.</p>
<p><strong>And this also relevant to finding data and the definition of „equality“ - I wasn’t fully aware of this until yesterday!</strong></p>
<h3 id="equality">Equality</h3>
<pre><code>select * from cities where name = &quot;Zurich&quot;;
+----+---------+
| id | name    |
+----+---------+
|  2 | Zürich  |
+----+---------+
</code></pre>
<p>Which has further effects, of course, for things like unique indices:</p>
<pre><code>alter table cities add unique index unique_name(name);

insert into cities(name) values (&quot;Zurich&quot;);
ERROR 1062 (23000): Duplicate entry 'Zurich' for key 'cities.unique_name'
</code></pre>
<p>We can avoid this by changing the collation to an „accent sensitive“ one:</p>
<pre><code>alter table cities modify name varchar(20) character set utf8mb4 collate utf8mb4_0900_as_ci;
insert into cities(name) values (&quot;Zurich&quot;);
select name from cities order by name;
+------------------+
| name             |
+------------------+
| Aachen           |
| Oer-Erkenschwick |
| Öhringen         |
| Zurich           |
| Zürich           |
+------------------+

select * from cities where name = &quot;Zurich&quot;;
+----+--------+
| id | name   |
+----+--------+
|  6 | Zurich |
+----+--------+
</code></pre>
<p>Now we can’t change back to the accent-insensitive collation because this would violate the unique constraint:</p>
<pre><code>alter table cities modify name varchar(20) character set utf8mb4 collate utf8mb4_0900_ai_ci;
ERROR 1062 (23000): Duplicate entry 'Zurich' for key 'cities.unique_name'
</code></pre>
<p>Is there also a Unicode collation in which „ue“ and „ü“ are equivalent? Yes, but it is German-specific:</p>
<p><code>utf8mb4_german2_ci</code> will use the „phonebook“ sort order and consider „ü“ and „ue“ as equal when finding strings, but not „ü“ and „u“</p>
<pre><code>alter table cities modify name varchar(20) character set utf8mb4 collate utf8mb4_german2_ci;
select name from cities order by name;
+------------------+
| name             |
+------------------+
| Aachen           |
| Öhringen         |
| Oer-Erkenschwick |
| Zürich           |
| Zurich           |
+------------------+

select * from cities where name = &quot;Zurich&quot;;
+----+--------+
| id | name   |
+----+--------+
|  6 | Zurich |
+----+--------+

insert into cities(name) values (&quot;Oehringen&quot;);
ERROR 1062 (23000): Duplicate entry 'Oehringen' for key 'cities.unique_name'
select * from cities where name = &quot;Zuerich&quot;;
+----+---------+
| id | name    |
+----+---------+
|  2 | Zürich  |
+----+---------+
</code></pre>
<p>The <code>utf8mb4_de_pb_0900_ai_ci</code> collation will still use „phonebook“ properties for „ä“, „ö“ and „ü“ (I guess that’s the <code>_pb_</code>), but „accent insensitivity“ for other letters like „è“ - that’s really interesting:</p>
<pre><code>alter table cities modify name varchar(20) character set utf8mb4 collate utf8mb4_de_pb_0900_ai_ci;

select * from cities where name = &quot;Zuerich&quot;;
+----+---------+
| id | name    |
+----+---------+
|  2 | Zürich  |
+----+---------+

select * from cities where name = &quot;Ohringen&quot;;
Empty set (0,000 sec)

insert into cities(name) values (&quot;Ohringen&quot;);
Query OK, 1 row affected (0,009 sec)

insert into cities(name) values (&quot;Sélestat&quot;);    
select * from cities where name = &quot;Selestat&quot;;
+----+-----------+
| id | name      |
+----+-----------+
|  9 | Sélestat  |
+----+-----------+

insert into cities(name) values (&quot;Selestat&quot;);
ERROR 1062 (23000): Duplicate entry 'Selestat' for key 'cities.unique_name'
</code></pre>
<h3 id="language-specific-quirks">Language-specific quirks</h3>
<p>By the way, there is no collation with a „phonebook“ property for all languages at once (at least not in MySQL and probably MariaDB)</p>
<p>Let’s try Norwegian, where „aa“ is considered equivalent to „å“, and its <code>utf8mb4_nb_0900_ai_ci</code> collation:</p>
<pre><code>create table players(id int auto_increment primary key, first_name varchar(20), last_name varchar(20)) 
    charset utf8mb4 collate utf8mb4_nb_0900_ai_ci;    
insert into players(first_name, last_name) values (&quot;Erling&quot;, &quot;Håland&quot;);    
insert into players(first_name, last_name) values (&quot;Thomas&quot;, &quot;Müller&quot;);    
</code></pre>
<p>Then we will we find „Haaland“, but not „Mueller“, and vice versa with the German collation:</p>
<pre><code>select * from players where last_name  = &quot;Haaland&quot;;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  1 | Erling     | Håland    |
+----+------------+-----------+

select * from players where last_name  = &quot;Mueller&quot;;
Empty set (0,001 sec)

alter table players modify last_name varchar(20) character set utf8mb4 collate utf8mb4_german2_ci;
select * from players where last_name  = &quot;Haaland&quot;;
Empty set (0,001 sec)

select * from players where last_name  = &quot;Mueller&quot;;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  2 | Thomas     | Müller    |
+----+------------+-----------+
</code></pre>
<h3 id="utf-8-character-quirks">UTF-8 character quirks</h3>
<p>One last experiment: There is more than one way to write a „ü“ in UTF-8. You can write it as a single codepoint „ü“ or as a „u“ combined with a <a href="https://en.wikipedia.org/wiki/Combining_Diacritical_Marks">combining diacritical mark</a> (the dots) - this is <code>&quot;u\u0308&quot;</code> when written as a Java string literal.</p>
<p>I discovered that this kind of „ü“ is considered different to a normal „ü“ <strong>even</strong> with an accent-insensitive collation. The „Müller“ in the insert statement contains the „special“ „ü“. The different hash values show that the binary column value is indeed different.</p>
<pre><code>alter table players modify last_name varchar(20) character set utf8mb4 collate utf8mb4_de_pb_0900_ai_ci;
insert into players(first_name, last_name) values (&quot;Thomas&quot;, &quot;Müller&quot;);

select id, last_name, sha2(last_name, 256) from players;
+----+-----------+------------------------------------------------------------------+
| id | last_name | sha2(last_name, 256)                                             |
+----+-----------+------------------------------------------------------------------+
|  1 | Håland    | cfe11ffd6ad90f7f5bb7ecb0ea31f08c22fd427552c4f7bf7cfbbc397d36a1ff |
|  2 | Müller    | a78429899bb825ce667d25d92e2cde488f8a7d6871bb2be7365601cad6b0a8f2 |
|  5 | Müller    | fa6a2313ed2910a7ea010814b90a5e6d4815d667f30132010deb6c0ddf524a07 |
+----+-----------+------------------------------------------------------------------+

select * from players where last_name = &quot;Müller&quot;;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  2 | Thomas     | Müller    |
+----+------------+-----------+
</code></pre>
<p>However, it is considered equivalent to „u“!</p>
<pre><code>select * from players where last_name = &quot;Muller&quot;;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  5 | Thomas     | Müller   |
+----+------------+-----------+
</code></pre>
<p>This means that you can have „Müller“ (visually) twice in the database even with a unique constraint on the column. I’m just wondering whether this can be exploited security-wise in some way in some applications&hellip;</p>
]]></content:encoded>
    </item>
    <item>
      <title>Folien zum DI.DAY 08/2026</title>
      <link>https://niklas-deutschmann.de/posts/20260802-folien-zum-di-day/</link>
      <pubDate>Sun, 02 Aug 2026 11:42:00 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260802-folien-zum-di-day/</guid>
      <description>&lt;p&gt;Beim &lt;a href=&#34;https://di.day/de&#34;&gt;Digital Independence Day&lt;/a&gt; im August 2026 habe ich einen Vortrag zu Alternativen zu den großen US-Konzernen fürs Fitness-Tracking gehalten. Dabei stand natürlich &lt;a href=&#34;https://fitpub.social&#34;&gt;FitPub&lt;/a&gt; im Mittelpunkt - eine Fediverse-Alternative zu Strava und ein &lt;a href=&#34;https://codeberg.org/fitpub/fitpub&#34;&gt;Open-Source-Projekt&lt;/a&gt;, an dem ich ab und zu mitwirke.&lt;/p&gt;
&lt;p&gt;Hier sind die Folien:
&lt;a href=&#34;https://niklas-deutschmann.de/download/DI_Day_202608.pdf&#34;&gt;Fitness-Tracking digital souverän und datensparsam&lt;/a&gt; (PDF)&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Beim <a href="https://di.day/de">Digital Independence Day</a> im August 2026 habe ich einen Vortrag zu Alternativen zu den großen US-Konzernen fürs Fitness-Tracking gehalten. Dabei stand natürlich <a href="https://fitpub.social">FitPub</a> im Mittelpunkt - eine Fediverse-Alternative zu Strava und ein <a href="https://codeberg.org/fitpub/fitpub">Open-Source-Projekt</a>, an dem ich ab und zu mitwirke.</p>
<p>Hier sind die Folien:
<a href="https://niklas-deutschmann.de/download/DI_Day_202608.pdf">Fitness-Tracking digital souverän und datensparsam</a> (PDF)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hände weg vom Informationsfreiheitsgesetz!</title>
      <link>https://niklas-deutschmann.de/posts/20260725-haende-weg-vom-ifg/</link>
      <pubDate>Sat, 25 Jul 2026 07:42:00 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260725-haende-weg-vom-ifg/</guid>
      <description>&lt;p&gt;Das Informationsfreiheitsgesetz (IFG), das 2005 noch von der Regierung Schröder eingeführt wurde, war ein Meilenstein für Deutschland für den Zugang zu Behördenunterlagen. Für einen funktionierenden Rechtsstaat ist es unverzichtbar, dass Privatpersonen, Nichtregierungsorganisationen (NGOs) und Medien staatliches Handeln nachvollziehen können und die Verwendung unserer Steuergelder aufgeklärt werden kann. Ausnahmen – etwa wenn es um den Schutz personenbezogener Daten oder militärischer Geheimnisse geht – sind natürlich möglich, müssen von der verantwortlichen Behörde aber begründet werden.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Das Informationsfreiheitsgesetz (IFG), das 2005 noch von der Regierung Schröder eingeführt wurde, war ein Meilenstein für Deutschland für den Zugang zu Behördenunterlagen. Für einen funktionierenden Rechtsstaat ist es unverzichtbar, dass Privatpersonen, Nichtregierungsorganisationen (NGOs) und Medien staatliches Handeln nachvollziehen können und die Verwendung unserer Steuergelder aufgeklärt werden kann. Ausnahmen – etwa wenn es um den Schutz personenbezogener Daten oder militärischer Geheimnisse geht – sind natürlich möglich, müssen von der verantwortlichen Behörde aber begründet werden.</p>
<p>2005 war Deutschland <a href="https://netzwerkrecherche.org/blog/10-fragen-und-10-antworten-zum-informationsfreiheitsgesetz-ifg/">neben Luxemburg, Malta und Zypern das einzige EU-Land</a> ohne ein solches Gesetz. Durch das IFG wurde der Standard „umgedreht“: Während Unterlagen öffentlicher Stellen vorher nicht zugänglich waren, außer in begründeten Ausnahmen, sind sie jetzt für jeden zugänglich – ein Antrag muss auch nicht begründet werden.</p>
<p><a href="https://grafkerssenbrock.com/informationsfreiheitsgesetz-grundlagen-und-bedeutung">Eine Vielzahl von Skandalen</a> kam nur durch IFG-Anfragen ans Licht, so z.B. die Vorgänge um Andreas Scheuers geplante PKW-Maut, Jens Spahns Maskenbestellungen oder die Kommunikation zwischen Friedrich Merz und dem Berliner OB Kai Wegner beim Stromausfall in Berlin Anfang 2026. Auch der Einfluss von Lobbygruppen auf Gesetzgebungsprozesse ließ sich häufig nachweisen.</p>
<p>Was plant der Koalitionsausschuss der Bundesregierung nun? <a href="https://netzpolitik.org/2026/informationsfreiheit-schwarz-rot-plant-frontalangriff-auf-journalismus-und-transparenz/">Das IFG soll so stark beschnitten werden, dass es oft nutzlos wird</a>. So soll z.B. die Deckelung der Kosten auf 500€ abgeschafft werden, was viele Privatpersonen schon abschrecken dürfte. Antragstellende müssen auch jedes Mal nachweisen, dass sie einen besonderen Anspruch auf Informationen haben. Nur noch natürliche Personen sollen Anfragen stellen dürfen – nicht mehr Organisationen wie z.B. Amnesty International, Greenpeace oder „Frag den Staat“. Letztere Plattform scheint dem Bundesinnenministerium besonders lästig zu sein, weil sie die Erstellung von IFG-Anfragen für Privatpersonen noch einmal vereinfacht. Das wurde gerade erst diese Woche (23.7.) <a href="https://netzpolitik.org/2026/fragdenstaat-co-dobrindt-will-transparenz-plattformen-aus-dem-weg-raeumen/">durch Recherchen des MDR bekannt</a>.</p>
<p>Wie begründet die Bundesregierung die geplanten Einschränkungen? Kanzleramtsminister Thorsten Frei behauptete in einem Interview mit der ZEIT ohne weitere Belege, dass einzelne IFG-Anfragen den beantwortenden Behörden Kosten von „einigen Hunderttausend Euro“ verursacht hätten – was den ehemaligen Bundesbeauftragten für den Datenschutz und die Informationsfreiheit Prof. Ulrich Kelber (SPD) prompt zu einer <a href="https://fragdenstaat.de/anfrage/aussagen-von-herrn-minister-frei-zum-ifg">IFG-Anfrage</a> dazu veranlasste. Oft wird auch auf „hybride Kriegsführung“ durch feindliche Mächte und den „Schutz kritischer Infrastrukturen“ verwiesen, sowie auf Fälle, in denen Behördenpersonal persönlich bedroht wurde. Aber auch für letzteres <a href="https://www.n-tv.de/politik/Informationsfreiheitsgesetz-Antworten-von-Ministerien-bringen-Regierungssprecher-Stefan-Kornelius-in-Bedraengnis-id31085243.html">konnte kein Bundesministerium Belege liefern</a>, wie der „Stern“ herausfand.</p>
<p>Die Protestwelle ist daher schon beachtlich. Die SPD-Bundestagsfraktion wendete sich bereits <a href="https://fragdenstaat.de/artikel/policy/2026/07/spd-fraktion-stellt-sich-gegen-vizekanzler/">gegen die Pläne der eigenen Regierungsspitze</a>. Eine von „Frag den Staat“ initiierte <a href="https://weact.campact.de/petitions/spd-stoppt-den-frontalangriff-auf-die-informationsfreiheit">Petition</a> wurde über 600.000-mal unterzeichnet. 135 weitere Organisationen unterzeichneten einen <a href="https://fragdenstaat.de/artikel/policy/2026/07/xy-organisationen-fordern-rettet-die-informationsfreiheit/">offenen Brief</a> an die Bundesregierung.</p>
<p>Macht braucht Kontrolle und Verantwortung, und wir sollten diesen schweren Angriff auf staatliche Rechenschaftspflicht und Pressefreiheit nicht hinnehmen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Draußen unterwegs ohne BigTech</title>
      <link>https://niklas-deutschmann.de/posts/20260607-draussen-unterwegs-ohne-bigtech/</link>
      <pubDate>Sun, 07 Jun 2026 08:58:00 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260607-draussen-unterwegs-ohne-bigtech/</guid>
      <description>&lt;p&gt;Ein kleiner Beitrag zum &lt;a href=&#34;https://di.day&#34;&gt;Digital Independence Day&lt;/a&gt; 06/2026 und eine Vertiefung meines &lt;a href=&#34;https://niklas-deutschmann.de/posts/20260422-europaeische-alternativen/&#34;&gt;Artikels von letztem Jahr&lt;/a&gt;&amp;hellip; und es war schon Thema der Veranstaltung beim DI-Day 05/2026 in Erlangen.&lt;/p&gt;
&lt;p&gt;Ich unterscheide zwischen vier verschiedenen „Use Cases“:&lt;/p&gt;
&lt;h2 id=&#34;karten-und-navigation&#34;&gt;Karten und Navigation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Big Tech: &lt;a href=&#34;https://www.google.com/maps&#34;&gt;Google Maps&lt;/a&gt;, &lt;a href=&#34;https://maps.apple.com/&#34;&gt;Apple Maps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Alternativen:
&lt;ul&gt;
&lt;li&gt;Natürlich &lt;a href=&#34;https://www.openstreetmap.org&#34;&gt;OpenStreetMap&lt;/a&gt;, wenn man einfach nur eine Karte im Browser betrachten möchte. &lt;a href=&#34;https://mapcomplete.org/&#34;&gt;MapComplete&lt;/a&gt; macht aber z.B. das Bearbeiten des Kartenmaterials sehr einfach.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.comaps.app&#34;&gt;CoMaps&lt;/a&gt; - App (Mac, Linux, iOS, Android). Open Source.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://osmand.net&#34;&gt;OSMAnd&lt;/a&gt; - App (iOS, Android, Huawei). Open Source. Mächtig, eher für Power-User.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mapy.com&#34;&gt;Mapy&lt;/a&gt; - Webseite und App (iOS, Android). Kommerziell, aber europäische Firma (Tschechien)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;routentouren-planen&#34;&gt;Routen/Touren planen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;BigTech: &lt;a href=&#34;https://www.komoot.com&#34;&gt;Komoot&lt;/a&gt;, &lt;a href=&#34;https://www.outdooractive.com&#34;&gt;Outdooractive.com&lt;/a&gt; - Komoot ist zwar eine europäische Firma, wurde aber 2025 vom italienischen Investor &lt;a href=&#34;https://en.wikipedia.org/wiki/Bending_Spoons&#34;&gt;Bending Spoons&lt;/a&gt; übernommen (ähnlich wie auch WeTransfer, Meetup, Evernote und Vimeo), der erst mal &lt;a href=&#34;https://www.dcrainmaker.com/2025/05/komoot-team-goodbye.html&#34;&gt;85% der Mitarbeiter*innen entließ&lt;/a&gt; - zweifelhafte Geschäftspraktiken!&lt;/li&gt;
&lt;li&gt;Alternativen:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bikerouter.de&#34;&gt;BikeRouter&lt;/a&gt; - Webseite, Anwendung kann auch selber gehostet werden. Open Source. Erfordert keinen Login, sondern die Route ist in der URL und kann auch so weitergegeben werden. Routenberechnung mit passenden Einstellungen für viele verschiedene Fahrradtypen (Rennrad, Tourenrad, Mountainbike usw.) aber auch Wandern und Auto.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wanderer.adminforge.de/&#34;&gt;Wanderer&lt;/a&gt; - Webseite, Anwendung kann auch selber gehostet werden, Fediverse-fähig, Open Source.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;aktivitäten-aufzeichnen&#34;&gt;Aktivitäten aufzeichnen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;BigTech: &lt;a href=&#34;https://www.strava.com&#34;&gt;Strava&lt;/a&gt;, Hardware von Garmin, Polar, Apple, FitBit usw.&lt;/li&gt;
&lt;li&gt;Alternativen:
&lt;ul&gt;
&lt;li&gt;Die &lt;a href=&#34;https://www.comaps.app&#34;&gt;CoMaps&lt;/a&gt;-App kann auch einen Track (GPX-Datei) aufzeichnen, der auf vielen anderen der genannten Plattformen hochgeladen werden kann.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gadgetbridge.org/&#34;&gt;GadgetBridge&lt;/a&gt; - App (Android), um Daten von diversen GPS-Uhren, Fitness-Trackern usw. auszulesen und weiterzuverarbeiten. Leider konnte ich meine Uhr (Garmin Forerunner 745) nicht damit koppeln. Open Source.&lt;/li&gt;
&lt;li&gt;Viele Geräte (z.B. meine Garmin-Uhr und mein Wahoo-Radcomputer) sind aber auch als USB-Speicher zugänglich, so dass man die neuesten Aktivitäten als Dateien hochladen kann.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;aktivitäten-veröffentlichen&#34;&gt;Aktivitäten veröffentlichen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;BigTech: &lt;a href=&#34;https://www.strava.com&#34;&gt;Strava&lt;/a&gt;, &lt;a href=&#34;https://connect.garmin.com&#34;&gt;Garmin Connect&lt;/a&gt; und andere Cloud-Plattformen der Hardwarehersteller&lt;/li&gt;
&lt;li&gt;Alternativen:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://fit.adminforge.de&#34;&gt;FitTrackee&lt;/a&gt; - Webseite, Anwendung kann auch selber gehostet werden. Open Source.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fitpub.social&#34;&gt;FitPub&lt;/a&gt; - Webseite, Anwendung kann auch selber gehostet werden, Fediverse-fähig. Open Source. &lt;a href=&#34;https://codeberg.org/fitpub/fitpub&#34;&gt;Junges Open-Source-Projekt&lt;/a&gt; (den offiziellen Server gibt es erst seit 1.6.2026). Ich habe da selber ein wenig &lt;a href=&#34;https://codeberg.org/SonstHarmlos/fitpub&#34;&gt;mitentwickelt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://runalyze.com/&#34;&gt;Runalyze&lt;/a&gt; - Webseite. Keine Social-Funktionen, sondern eher Analyse von Trainingsdaten für Leistungssportler. Kommerziell, aber deutsche Firma.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<p>Ein kleiner Beitrag zum <a href="https://di.day">Digital Independence Day</a> 06/2026 und eine Vertiefung meines <a href="https://niklas-deutschmann.de/posts/20260422-europaeische-alternativen/">Artikels von letztem Jahr</a>&hellip; und es war schon Thema der Veranstaltung beim DI-Day 05/2026 in Erlangen.</p>
<p>Ich unterscheide zwischen vier verschiedenen „Use Cases“:</p>
<h2 id="karten-und-navigation">Karten und Navigation</h2>
<ul>
<li>Big Tech: <a href="https://www.google.com/maps">Google Maps</a>, <a href="https://maps.apple.com/">Apple Maps</a></li>
<li>Alternativen:
<ul>
<li>Natürlich <a href="https://www.openstreetmap.org">OpenStreetMap</a>, wenn man einfach nur eine Karte im Browser betrachten möchte. <a href="https://mapcomplete.org/">MapComplete</a> macht aber z.B. das Bearbeiten des Kartenmaterials sehr einfach.</li>
<li><a href="https://www.comaps.app">CoMaps</a> - App (Mac, Linux, iOS, Android). Open Source.</li>
<li><a href="https://osmand.net">OSMAnd</a> - App (iOS, Android, Huawei). Open Source. Mächtig, eher für Power-User.</li>
<li><a href="https://mapy.com">Mapy</a> - Webseite und App (iOS, Android). Kommerziell, aber europäische Firma (Tschechien)</li>
</ul>
</li>
</ul>
<h2 id="routentouren-planen">Routen/Touren planen</h2>
<ul>
<li>BigTech: <a href="https://www.komoot.com">Komoot</a>, <a href="https://www.outdooractive.com">Outdooractive.com</a> - Komoot ist zwar eine europäische Firma, wurde aber 2025 vom italienischen Investor <a href="https://en.wikipedia.org/wiki/Bending_Spoons">Bending Spoons</a> übernommen (ähnlich wie auch WeTransfer, Meetup, Evernote und Vimeo), der erst mal <a href="https://www.dcrainmaker.com/2025/05/komoot-team-goodbye.html">85% der Mitarbeiter*innen entließ</a> - zweifelhafte Geschäftspraktiken!</li>
<li>Alternativen:
<ul>
<li><a href="https://bikerouter.de">BikeRouter</a> - Webseite, Anwendung kann auch selber gehostet werden. Open Source. Erfordert keinen Login, sondern die Route ist in der URL und kann auch so weitergegeben werden. Routenberechnung mit passenden Einstellungen für viele verschiedene Fahrradtypen (Rennrad, Tourenrad, Mountainbike usw.) aber auch Wandern und Auto.</li>
<li><a href="https://wanderer.adminforge.de/">Wanderer</a> - Webseite, Anwendung kann auch selber gehostet werden, Fediverse-fähig, Open Source.</li>
</ul>
</li>
</ul>
<h2 id="aktivitäten-aufzeichnen">Aktivitäten aufzeichnen</h2>
<ul>
<li>BigTech: <a href="https://www.strava.com">Strava</a>, Hardware von Garmin, Polar, Apple, FitBit usw.</li>
<li>Alternativen:
<ul>
<li>Die <a href="https://www.comaps.app">CoMaps</a>-App kann auch einen Track (GPX-Datei) aufzeichnen, der auf vielen anderen der genannten Plattformen hochgeladen werden kann.</li>
<li><a href="https://gadgetbridge.org/">GadgetBridge</a> - App (Android), um Daten von diversen GPS-Uhren, Fitness-Trackern usw. auszulesen und weiterzuverarbeiten. Leider konnte ich meine Uhr (Garmin Forerunner 745) nicht damit koppeln. Open Source.</li>
<li>Viele Geräte (z.B. meine Garmin-Uhr und mein Wahoo-Radcomputer) sind aber auch als USB-Speicher zugänglich, so dass man die neuesten Aktivitäten als Dateien hochladen kann.</li>
</ul>
</li>
</ul>
<h2 id="aktivitäten-veröffentlichen">Aktivitäten veröffentlichen</h2>
<ul>
<li>BigTech: <a href="https://www.strava.com">Strava</a>, <a href="https://connect.garmin.com">Garmin Connect</a> und andere Cloud-Plattformen der Hardwarehersteller</li>
<li>Alternativen:
<ul>
<li><a href="https://fit.adminforge.de">FitTrackee</a> - Webseite, Anwendung kann auch selber gehostet werden. Open Source.</li>
<li><a href="https://fitpub.social">FitPub</a> - Webseite, Anwendung kann auch selber gehostet werden, Fediverse-fähig. Open Source. <a href="https://codeberg.org/fitpub/fitpub">Junges Open-Source-Projekt</a> (den offiziellen Server gibt es erst seit 1.6.2026). Ich habe da selber ein wenig <a href="https://codeberg.org/SonstHarmlos/fitpub">mitentwickelt</a>.</li>
<li><a href="https://runalyze.com/">Runalyze</a> - Webseite. Keine Social-Funktionen, sondern eher Analyse von Trainingsdaten für Leistungssportler. Kommerziell, aber deutsche Firma.</li>
</ul>
</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Gute Aktion gegen Rechenzentrum bei Frankfurt</title>
      <link>https://niklas-deutschmann.de/posts/20260524-gute-aktion-gegen-rechenzentrum/</link>
      <pubDate>Sun, 24 May 2026 14:08:00 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260524-gute-aktion-gegen-rechenzentrum/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.golem.de/news/maintal-widerstand-gegen-rechenzentrum-in-deutschland-2605-208999.html&#34;&gt;Sehr gute Aktion&lt;/a&gt; - und übel manipulativer Anreißer des &lt;a href=&#34;https://www.spiegel.de/wirtschaft/rechenzentren-wie-buergerproteste-milliardenschwere-ki-projekte-bremsen-a-a208859d-3ab5-4f15-9dd1-e5bf232c6e9f&#34;&gt;SPIEGEL(€)&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In Maintal bei Frankfurt soll ein gewaltiges Rechenzentrum samt Gaskraftwerk entstehen. Doch die Investoren haben die Rechnung ohne die Anwohner gemacht. Typisch Deutschland?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Das Entscheidende hier ist, dass der jährliche CO&lt;sub&gt;2&lt;/sub&gt;-Ausstoß des geplanten Gaskraftwerks etwa drei Viertel aller Starts und Landungen am Frankfurter Flughafen entsprechen würde.&lt;/p&gt;
&lt;p&gt;Rechenzentren mit einer eigenen fossil befeuerten Stromversorgung, die über Notstromgeneratoren hinausgeht, sollten grundsätzlich nicht erlaubt sein. Wenn das öffentliche Stromnetz die Leistung nicht hergibt, dann gibt’s halt erst mal kein Rechenzentrum. So what?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://www.golem.de/news/maintal-widerstand-gegen-rechenzentrum-in-deutschland-2605-208999.html">Sehr gute Aktion</a> - und übel manipulativer Anreißer des <a href="https://www.spiegel.de/wirtschaft/rechenzentren-wie-buergerproteste-milliardenschwere-ki-projekte-bremsen-a-a208859d-3ab5-4f15-9dd1-e5bf232c6e9f">SPIEGEL(€)</a>:</p>
<blockquote>
<p>In Maintal bei Frankfurt soll ein gewaltiges Rechenzentrum samt Gaskraftwerk entstehen. Doch die Investoren haben die Rechnung ohne die Anwohner gemacht. Typisch Deutschland?</p></blockquote>
<p>Das Entscheidende hier ist, dass der jährliche CO<sub>2</sub>-Ausstoß des geplanten Gaskraftwerks etwa drei Viertel aller Starts und Landungen am Frankfurter Flughafen entsprechen würde.</p>
<p>Rechenzentren mit einer eigenen fossil befeuerten Stromversorgung, die über Notstromgeneratoren hinausgeht, sollten grundsätzlich nicht erlaubt sein. Wenn das öffentliche Stromnetz die Leistung nicht hergibt, dann gibt’s halt erst mal kein Rechenzentrum. So what?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Erlangen unter OB Volleth - ein Ausblick</title>
      <link>https://niklas-deutschmann.de/posts/20260328-erlangen-unter-ob-volleth-ein-ausblick/</link>
      <pubDate>Sat, 28 Mar 2026 06:11:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260328-erlangen-unter-ob-volleth-ein-ausblick/</guid>
      <description>&lt;p&gt;&lt;strong&gt;2027:&lt;/strong&gt; Lothar Matthäus (Fußball-Weltmeister 1990 und 1961 in Erlangen geboren), verstirbt auf tragische Weise, Erlangen wird in „Loddastadt Erlangen“ umbenannt (ähnlich wie „Lutherstadt Wittenberg“). Der 21. März (Geburtstag von Matthäus) wird zum lokalen Feiertag (St. Matthäi) erklärt, um bei der Anzahl der Feiertage mit Augsburg und anderen katholischen Gemeinden mithalten zu können.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2028:&lt;/strong&gt; Der grüne OB Dominik Krause schafft es, mit immer neuen Umwelt-, Lärmschutz- und Suchtpräventions-Auflagen, das Oktoberfest aus München zu vertreiben. Volleth gewährt der Veranstaltung Asyl (die einzige Art von Asyl, die CSUler befürworten) und es findet ab sofort eine zweite Bergkirchweih im Herbst statt. Leider müssen dafür die meisten Villen am Burgberg abgerissen und durch Bierbänke ersetzt werden. Und leider führt auch die Menge an anfallenden Körperflüssigkeiten zum ökologischen Umkippen der Regnitz unterhalb von Erlangen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><strong>2027:</strong> Lothar Matthäus (Fußball-Weltmeister 1990 und 1961 in Erlangen geboren), verstirbt auf tragische Weise, Erlangen wird in „Loddastadt Erlangen“ umbenannt (ähnlich wie „Lutherstadt Wittenberg“). Der 21. März (Geburtstag von Matthäus) wird zum lokalen Feiertag (St. Matthäi) erklärt, um bei der Anzahl der Feiertage mit Augsburg und anderen katholischen Gemeinden mithalten zu können.</p>
<p><strong>2028:</strong> Der grüne OB Dominik Krause schafft es, mit immer neuen Umwelt-, Lärmschutz- und Suchtpräventions-Auflagen, das Oktoberfest aus München zu vertreiben. Volleth gewährt der Veranstaltung Asyl (die einzige Art von Asyl, die CSUler befürworten) und es findet ab sofort eine zweite Bergkirchweih im Herbst statt. Leider müssen dafür die meisten Villen am Burgberg abgerissen und durch Bierbänke ersetzt werden. Und leider führt auch die Menge an anfallenden Körperflüssigkeiten zum ökologischen Umkippen der Regnitz unterhalb von Erlangen.</p>
<p><strong>2029</strong>: Nach weiteren drei Jahren Diskussion wird die Stadt-Umland-Bahn so umgeplant, dass jeder sein Lieblingsspielzeug bekommt: Straßenbahn bis Tennenlohe, von dort eine Magnetschwebebahn bis Loddastadt Erlangen Hbf, dann eine Seilbahn über den Wiesengrund, anschließend eine U-Bahn bis Loddastadt Erlangen-Bruck und schließlich die Reaktivierung der Aurachtalbahn bis Herzogenaurach. Anschließend wird das Projekt in Rekordzeit realisiert, und nur drei Monate nach der Eröffnung wird der erste Fahrgast beobachtet, der die Strecke in voller Länge bereist.</p>
<p><strong>2030:</strong> Der Russe tut‘s tatsächlich und überfällt die NATO, Loddastadt Erlangen wird in Putingrad umbenannt und eine Putin-Statue auf dem Schlossplatz aufgestellt. Keine schönen Aussichten, aber immerhin ist die StUB jetzt kostenlos für Ukraine-Veteranen und verdiente Putin-Fans (Mitglieder von AfD, BSW und Linkspartei sowie herausragende Social-Media-Trolle). St. Matthäi wird abgeschafft und durch den 7. Oktober (Putins Geburtstag) ersetzt.</p>
<p><strong>2031:</strong> Der Siemens-Campus wird komplett durch ein KI-Rechenzentrum ersetzt, die intelligenten Agenten betreiben den Weltkonzern komplett autonom ohne menschliches Eingreifen. Leider geraten Prozessorlast und Wärmeentwicklung außer Kontrolle und ein großer Krater entsteht dort, wo einmal die Stadtteile Bruck und Anger waren. Das führt aber dazu, dass der neue Stadtteil „West III“ und das Gewerbegebiet G6 in Tennenlohe endlich realisiert werden.</p>
<p><strong>2032:</strong> Der Klimawandel hat sich so stark beschleunigt, dass es den russischen Besatzungstruppen zu heiß wird und sie sich freiwillig zurückziehen. In Putingrad finden wieder demokratische Kommunalwahlen statt. Volleth wird wiedergewählt und die neue schwarz-grüne Koalition macht Loddastadt Erlangen (wie es jetzt auch wieder heißt) zu einem tropischen Öko-Paradies (mit dem Kratersee in Bruck und dem Sebalder Reichswald als Dschungel-Naturpark). Auf dem ehemaligen Wildpferdegelände im Tennenloher Forst tummeln sich Elefanten, Nashörner und Gazellen. Das führt zu einem Tourismusboom, es kommen jetzt mehr Touristen als nach Nürnberg!</p>
<p><strong>2033:</strong> Der Ostast der StUB wird mit Flugtaxis realisiert, die von einem Mini-Fusionsreaktor angetrieben werden. Doro Bär und Markus Söder kommen persönlich zum Jungfernflug vorbei, allerdings hat Söder mittlerweile so an Gewicht zugelegt, dass das Maximalgewicht überschritten wird und es zu einer Notlandung im Sebalder Reichswald kommt. Der Überlebenskampf der beiden im Dschungel wird ein Social-Media- und TV-Hit, der höhere Einschaltquoten als das Dschungelcamp von RTL erzielt.</p>
<p><strong>2034:</strong> Im Tennenloher Forst tummeln sich jetzt auch Mastodonten, Säbelzahntiger und Dinosaurier, die von <a href="https://nerdlangen.de">Nerdlangen</a> im <a href="https://www.zam.haus">ZAM</a> aus fossiler DNA geklont wurden.</p>
<p><strong>2035:</strong> Eine Dengue-Fieber-Epidemie führt dazu, dass die Touristenzahlen einbrechen und das Loddastadt Erlanger Oktoberfest abgesagt werden muss. Volleth gibt entnervt auf, es kommt zu Neuwahlen und die Loddastadt Erlanger*innen besinnen sich mit großer Mehrheit auf Florian Janik (mittlerweile 55) zurück.
Tragischerweise wird er einen Tag vor seinem Amtsantritt von einem vermeintlich harmlosen Baby-Säbelzahntiger gefressen, <a href="https://www.nn.de/erlangen/gewinner-und-verlierer-so-schnitten-die-ob-kandidierenden-in-erlangen-auf-dem-podium-ab-rep1-1.15016941?login_success=true">den seine Patchwork-Familie sich als Haustier zugelegt hat</a> (€).</p>
]]></content:encoded>
    </item>
    <item>
      <title>Linksammlung zum Thema Social-Media-Verbot</title>
      <link>https://niklas-deutschmann.de/posts/20260222-linksammlung-zum-thema-social-media-verbot/</link>
      <pubDate>Sun, 22 Feb 2026 08:58:00 +0100</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260222-linksammlung-zum-thema-social-media-verbot/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://netzpolitik.org/2026/jugendschutz-debatte-spd-politikerinnen-fordern-ausweispflicht-oder-netzsperren/&#34;&gt;Jugendschutz-Debatte: SPD-Politiker*innen fordern Ausweispflicht oder Netzsperren&lt;/a&gt; (Netzpolitik)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://netzpolitik.org/2026/von-kinderhilfswerk-bis-lehrerverband-so-breit-ist-die-kritik-am-social-media-verbot/#netzpolitik-pw&#34;&gt;Von Kinderhilfswerk bis Lehrerverband: So breit ist die Kritik am Social-Media-Verbot&lt;/a&gt; (Netzpolitik)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ardmediathek.de/video/phoenix-der-tag/gefahren-von-social-media-gro-e-probleme-auch-fur-erwachsene/ard/Y3JpZDovL3Bob2VuaXguZGUvNTE3NDY4NA&#34;&gt;Gefahren von Social Media: „Große Probleme auch für Erwachsene“&lt;/a&gt; (Phoenix-Interview mit Linus Neumann (Chaos Computer Club))&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.spektrum.de/kolumne/social-media-verbot-fuer-minderjaehrige-ausgrenzung-statt-schutz/2310987&#34;&gt;Social-Media-Verbote für Minderjährige: Ausgrenzung unter dem Deckmantel des Jugendschutzes&lt;/a&gt; (Spektrum)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stefanpfeiffer.blog/2026/02/22/kw8-kuratiert/#auch-der-kanzler-fordert-social-media-verbot-aber&#34;&gt;Auch der Kanzler fordert Social-Media-Verbot, aber …&lt;/a&gt; (Stefan Pfeiffer)&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<ul>
<li><a href="https://netzpolitik.org/2026/jugendschutz-debatte-spd-politikerinnen-fordern-ausweispflicht-oder-netzsperren/">Jugendschutz-Debatte: SPD-Politiker*innen fordern Ausweispflicht oder Netzsperren</a> (Netzpolitik)</li>
<li><a href="https://netzpolitik.org/2026/von-kinderhilfswerk-bis-lehrerverband-so-breit-ist-die-kritik-am-social-media-verbot/#netzpolitik-pw">Von Kinderhilfswerk bis Lehrerverband: So breit ist die Kritik am Social-Media-Verbot</a> (Netzpolitik)</li>
<li><a href="https://www.ardmediathek.de/video/phoenix-der-tag/gefahren-von-social-media-gro-e-probleme-auch-fur-erwachsene/ard/Y3JpZDovL3Bob2VuaXguZGUvNTE3NDY4NA">Gefahren von Social Media: „Große Probleme auch für Erwachsene“</a> (Phoenix-Interview mit Linus Neumann (Chaos Computer Club))</li>
<li><a href="https://www.spektrum.de/kolumne/social-media-verbot-fuer-minderjaehrige-ausgrenzung-statt-schutz/2310987">Social-Media-Verbote für Minderjährige: Ausgrenzung unter dem Deckmantel des Jugendschutzes</a> (Spektrum)</li>
<li><a href="https://stefanpfeiffer.blog/2026/02/22/kw8-kuratiert/#auch-der-kanzler-fordert-social-media-verbot-aber">Auch der Kanzler fordert Social-Media-Verbot, aber …</a> (Stefan Pfeiffer)</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Offener Brief an Tim Klüssendorf, Generalsekretär der SPD</title>
      <link>https://niklas-deutschmann.de/posts/20260222-offener-brief-an-tim-kluessendorf/</link>
      <pubDate>Sun, 22 Feb 2026 08:34:00 +0100</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260222-offener-brief-an-tim-kluessendorf/</guid>
      <description>&lt;p&gt;Hallo Tim,&lt;/p&gt;
&lt;p&gt;Ich bin 46 Jahre alt und 2024 hier in Erlangen der SPD beigetreten, weil ich der Ansicht war, dass es wichtig ist, sich in einer demokratischen Partei zu engagieren, wenn die Demokratie aus allen möglichen Richtungen unter Druck gerät.&lt;/p&gt;
&lt;p&gt;Selbstverständlich war mir auch klar, dass ich nicht immer mit allem einverstanden sein werde, was auf Bundesebene beschlossen wird - normal in einer großen Partei.&lt;/p&gt;
&lt;p&gt;Beim Thema Social-Media-Verbot habe ich jedoch eine Reihe schwerwiegender Bedenken.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hallo Tim,</p>
<p>Ich bin 46 Jahre alt und 2024 hier in Erlangen der SPD beigetreten, weil ich der Ansicht war, dass es wichtig ist, sich in einer demokratischen Partei zu engagieren, wenn die Demokratie aus allen möglichen Richtungen unter Druck gerät.</p>
<p>Selbstverständlich war mir auch klar, dass ich nicht immer mit allem einverstanden sein werde, was auf Bundesebene beschlossen wird - normal in einer großen Partei.</p>
<p>Beim Thema Social-Media-Verbot habe ich jedoch eine Reihe schwerwiegender Bedenken.</p>
<p>Ich teile komplett deine Meinung, dass das Agieren der großen Digitalkonzerne (insbesondere der aus den USA) ein Riesenproblem ist und die Art und Weise, wie dort Aufmerksamkeit gesteuert wird und Inhalte verbreitet werden, den gesellschaftlichen Zusammenhalt und die psychische Gesundheit vieler Menschen (nicht nur von Kindern und Jugendlichen) gefährdet. Ich habe das selbst im Zusammenhang mit X (damals noch Twitter) während der Corona-Pandemie erlebt. Die amerikanischen Digitalkonzerne sind auch mehr oder weniger offen mit der Trump-Administration verbündet (inbesondere natürlich X, dessen Chef offen die Machtübernahme rechtsradikaler Parteien in Europa fordert, auf seiner Plattform die Anfertigung von Porno-Deepfake-Bildern durch Grok zulässt und schon vor mehr als einem Jahr auf offener Bühne den Hitlergruß zeigte)</p>
<p>Jetzt sehe ich aber, dass du selbst Accounts bei Facebook, Instagram, TikTok und YouTube betreibst, also trotz des äußerst problematischen Geschäftsmodells die Reichweite gerne mitnimmst. Damit fängt es schon an. Wenigstens scheinst du keinen Account mehr bei X zu betreiben, aber selbst diesen wirklich minimalen Schritt sind einige Kollegen wie z.B. Lars Klingbeil noch nicht gegangen. Von den Politikern bei unserem Koalitionspartner ganz zu schweigen.</p>
<p>Mich stört an eurem Konzeptpapier als erstes z.B., dass nicht klar ist, welche Plattformen und Apps es überhaupt betreffen wird. Muss in Zukunft jeder, der ein Forum, eine Mailingliste oder ein Blog mit Kommentarmöglichkeit betreibt, sich um Altersverifikation kümmern? Jede Webseite und jede App, auf der sich Benutzer registrieren und miteinander interagieren können, könnte man ja als „Social Media“ ansehen. Für Kinder und Jugendliche sind da z.B. auch Multiplayer-Spiele relevant.</p>
<p>Man löst das Problem des schädlichen Einflusses von Digitalkonzernen nicht, indem man diese zum „Gatekeeper“ macht und für das Betreiben von Social-Media-Angeboten Anforderungen schafft, die nur Großkonzerne umsetzen können. Du wirst jetzt wahrscheinlich behaupten, dass es ganz einfach sei, eine Schnittstelle zur EUDI-Wallet-App einzubinden.</p>
<p>Nach jetzigem Stand ist aber für die Nutzung der EUDI-Wallet-App ein Apple-Gerät erforderlich oder ein Android-Gerät, das die Google Play Services unterstützt. Das würde bedeuten, dass man für die Nutzung großer Teile des Internets einen Abhängigkeit von Apple oder Google schafft. Außen bleiben nicht nur freie Android-Varianten wie z.B. GrapheneOS, sondern auch Menschen ohne (die richtigen) Ausweispapiere wie z.B. Geflüchtete. Die EU-Vorordnung zu „Digital Identity Wallets“ sagt im Übrigen:</p>
<blockquote>
<p>The use of European Digital Identity Wallets shall be voluntary. Access to public and private services, access to the labour market and freedom to conduct business shall not in any way be restricted or made disadvantageous to natural or legal persons that do not use European Digital Identity Wallets. It shall remain possible to access public and private services by other existing identification and authentication means. (<a href="https://eur-lex.europa.eu/eli/reg/2014/910/2024-05-20/eng">https://eur-lex.europa.eu/eli/reg/2014/910/2024-05-20/eng</a>)</p></blockquote>
<p>Wenn man sich andere anschaut, die die Koalition beschlossen und die SPD mitgetragen hat, bekomme ich im Übrigen nicht den Eindruck, dass das (psychische) Wohlergehen von Kindern und Jugendlichen eine besondere Rolle gespielt hat. Wenn uns das Wohlergehen von Kindern und Jugendlichen wichtig ist, dann müssen viele der Verschärfungen beim Bürgergeld zurückgenommen werden, es dürfen nicht Jugendliche direkt aus ihrer Ausbildungsstelle gerissen und abgeschoben werden, und es muss wieder echter Klimaschutz stattfinden.</p>
<p>Im digitalpolitischen Bereich müssen freie, nichtkommerzielle Angebote wie z.B. das Fediverse gestärkt werden. Diese sind nicht den oben beschriebenen aufmerksamkeitsökonomischen Zwängen unterworfen und ermöglichen digitale Souveränität und eine bewusste Entscheidung über die konsumierten Inhalte. Das Betreiben solcher Angebote durch zivilgesellschaftliche Organisationen, Vereine und Einzelpersonen sollte vereinfacht und nicht mit zusätzlichen Hürden versehen werden. Alle Politiker und öffentlichen Einrichtungen sollten sofort(!) ihre Präsenz zumindest bei X beenden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Processing time series data in MySQL using subqueries and window functions</title>
      <link>https://niklas-deutschmann.de/posts/20260208-mysql-time-series-data/</link>
      <pubDate>Sun, 08 Feb 2026 12:01:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260208-mysql-time-series-data/</guid>
      <description>&lt;p&gt;Let’s assume we have daily weather records with the maximum temperature:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;day&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;max_temp_celsius&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-01&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;25&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-02&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;27&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-03&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;30&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-04&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;32&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-05&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;35&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-06&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;29&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-07&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;31&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-08&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;31&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-09&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;28&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2025-07-10&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;22&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now, we want to find the &lt;strong&gt;longest heatwaves&lt;/strong&gt; (the longest sequences of days with a maximum temperature &amp;gt;= 30 degrees) using SQL only. We can achieve this using multiple subqueries with window functions - here’s the complete SQL statement:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Let’s assume we have daily weather records with the maximum temperature:</p>
<table>
  <thead>
      <tr>
          <th style="text-align: center">day</th>
          <th style="text-align: center">max_temp_celsius</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: center">2025-07-01</td>
          <td style="text-align: center">25</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-02</td>
          <td style="text-align: center">27</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-03</td>
          <td style="text-align: center">30</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-04</td>
          <td style="text-align: center">32</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-05</td>
          <td style="text-align: center">35</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-06</td>
          <td style="text-align: center">29</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-07</td>
          <td style="text-align: center">31</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-08</td>
          <td style="text-align: center">31</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-09</td>
          <td style="text-align: center">28</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-10</td>
          <td style="text-align: center">22</td>
      </tr>
  </tbody>
</table>
<p>Now, we want to find the <strong>longest heatwaves</strong> (the longest sequences of days with a maximum temperature &gt;= 30 degrees) using SQL only. We can achieve this using multiple subqueries with window functions - here’s the complete SQL statement:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">WITH</span> numbered_records <span style="color:#66d9ef">AS</span> (
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">-- Assign row numbers to all records and to records meeting the condition
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">day</span>,
</span></span><span style="display:flex;"><span>    max_temp_celsius,
</span></span><span style="display:flex;"><span>    ROW_NUMBER() OVER (<span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> <span style="color:#66d9ef">day</span>) <span style="color:#66d9ef">AS</span> overall_row,
</span></span><span style="display:flex;"><span>    ROW_NUMBER() OVER (
</span></span><span style="display:flex;"><span>      PARTITION <span style="color:#66d9ef">BY</span> <span style="color:#66d9ef">CASE</span> <span style="color:#66d9ef">WHEN</span> max_temp_celsius <span style="color:#f92672">&gt;=</span> <span style="color:#ae81ff">30</span> <span style="color:#66d9ef">THEN</span> <span style="color:#ae81ff">1</span> <span style="color:#66d9ef">ELSE</span> <span style="color:#ae81ff">0</span> <span style="color:#66d9ef">END</span> 
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> <span style="color:#66d9ef">day</span>
</span></span><span style="display:flex;"><span>    ) <span style="color:#66d9ef">AS</span> hot_or_cold_row
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">FROM</span> weather
</span></span><span style="display:flex;"><span>),
</span></span><span style="display:flex;"><span>numbered_heatwaves <span style="color:#66d9ef">AS</span> (
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">-- Create group identifiers for consecutive sequences
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">day</span>,
</span></span><span style="display:flex;"><span>    max_temp_celsius,
</span></span><span style="display:flex;"><span>    overall_row <span style="color:#f92672">-</span> hot_or_cold_row <span style="color:#66d9ef">AS</span> heatwave_id
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">FROM</span> numbered_records
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">WHERE</span> max_temp_celsius <span style="color:#f92672">&gt;=</span> <span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span>),
</span></span><span style="display:flex;"><span>longest_heatwaves <span style="color:#66d9ef">AS</span> (
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">-- Count the length of each sequence
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>    heatwave_id,
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">MIN</span>(<span style="color:#66d9ef">day</span>) <span style="color:#66d9ef">AS</span> start_date,
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">MAX</span>(<span style="color:#66d9ef">day</span>) <span style="color:#66d9ef">AS</span> end_date,
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">COUNT</span>(<span style="color:#f92672">*</span>) <span style="color:#66d9ef">AS</span> heatwave_length
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">FROM</span> numbered_heatwaves
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">GROUP</span> <span style="color:#66d9ef">BY</span> heatwave_id
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">-- Find the longest sequence
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>  start_date,
</span></span><span style="display:flex;"><span>  end_date,
</span></span><span style="display:flex;"><span>  heatwave_length
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">FROM</span> longest_heatwaves
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> heatwave_length <span style="color:#66d9ef">DESC</span>;
</span></span></code></pre></div><p>I’ll explain the subqueries step by step now.</p>
<p><strong>Subquery 1</strong> defines (using window functions) a row number for all days, and a row number that counts records above and below 30 degrees separately:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">WITH</span> numbered_records <span style="color:#66d9ef">AS</span> (
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">day</span>,
</span></span><span style="display:flex;"><span>    max_temp_celsius,
</span></span><span style="display:flex;"><span>    ROW_NUMBER() OVER (<span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> <span style="color:#66d9ef">day</span>) <span style="color:#66d9ef">AS</span> overall_row,
</span></span><span style="display:flex;"><span>    ROW_NUMBER() OVER (
</span></span><span style="display:flex;"><span>      PARTITION <span style="color:#66d9ef">BY</span> <span style="color:#66d9ef">CASE</span> <span style="color:#66d9ef">WHEN</span> max_temp_celsius <span style="color:#f92672">&gt;=</span> <span style="color:#ae81ff">30</span> <span style="color:#66d9ef">THEN</span> <span style="color:#ae81ff">1</span> <span style="color:#66d9ef">ELSE</span> <span style="color:#ae81ff">0</span> <span style="color:#66d9ef">END</span> 
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> <span style="color:#66d9ef">day</span>
</span></span><span style="display:flex;"><span>    ) <span style="color:#66d9ef">AS</span> hot_or_cold_row
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">FROM</span> weather
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><p>Result:</p>
<table>
  <thead>
      <tr>
          <th style="text-align: center">day</th>
          <th style="text-align: center">max_temp_celsius</th>
          <th style="text-align: center">overall_row</th>
          <th style="text-align: center">hot_or_cold_row</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: center">2025-07-01</td>
          <td style="text-align: center">25</td>
          <td style="text-align: center">1</td>
          <td style="text-align: center">1</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-02</td>
          <td style="text-align: center">27</td>
          <td style="text-align: center">2</td>
          <td style="text-align: center">2</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-03</td>
          <td style="text-align: center">30</td>
          <td style="text-align: center">3</td>
          <td style="text-align: center">1</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-04</td>
          <td style="text-align: center">32</td>
          <td style="text-align: center">4</td>
          <td style="text-align: center">2</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-05</td>
          <td style="text-align: center">35</td>
          <td style="text-align: center">5</td>
          <td style="text-align: center">3</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-06</td>
          <td style="text-align: center">29</td>
          <td style="text-align: center">6</td>
          <td style="text-align: center">3</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-07</td>
          <td style="text-align: center">31</td>
          <td style="text-align: center">7</td>
          <td style="text-align: center">4</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-08</td>
          <td style="text-align: center">31</td>
          <td style="text-align: center">8</td>
          <td style="text-align: center">5</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-09</td>
          <td style="text-align: center">28</td>
          <td style="text-align: center">9</td>
          <td style="text-align: center">4</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-10</td>
          <td style="text-align: center">22</td>
          <td style="text-align: center">10</td>
          <td style="text-align: center">5</td>
      </tr>
  </tbody>
</table>
<p><strong>Subquery 2</strong> creates a unique ID for each sequence of hot days simply by subtracting <code>hot_or_cold_row</code> from <code>overall_row</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>numbered_heatwaves <span style="color:#66d9ef">AS</span> (
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">day</span>,
</span></span><span style="display:flex;"><span>    max_temp_celsius,
</span></span><span style="display:flex;"><span>    overall_row <span style="color:#f92672">-</span> hot_or_cold_row <span style="color:#66d9ef">AS</span> heatwave_id
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">FROM</span> numbered_records
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">WHERE</span> max_temp_celsius <span style="color:#f92672">&gt;=</span> <span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><table>
  <thead>
      <tr>
          <th style="text-align: center">day</th>
          <th style="text-align: center">max_temp_celsius</th>
          <th style="text-align: center">heatwave_id</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: center">2025-07-03</td>
          <td style="text-align: center">30</td>
          <td style="text-align: center">2</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-04</td>
          <td style="text-align: center">32</td>
          <td style="text-align: center">2</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-05</td>
          <td style="text-align: center">35</td>
          <td style="text-align: center">2</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-07</td>
          <td style="text-align: center">31</td>
          <td style="text-align: center">3</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-08</td>
          <td style="text-align: center">31</td>
          <td style="text-align: center">3</td>
      </tr>
  </tbody>
</table>
<p><strong>Subquery 3</strong> is transforming the result of the second subquery into a form that makes it easy to retrieve the longest sequences:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>longest_heatwaves <span style="color:#66d9ef">AS</span> (
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>    heatwave_id,
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">MIN</span>(<span style="color:#66d9ef">day</span>) <span style="color:#66d9ef">AS</span> start_date,
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">MAX</span>(<span style="color:#66d9ef">day</span>) <span style="color:#66d9ef">AS</span> end_date,
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">COUNT</span>(<span style="color:#f92672">*</span>) <span style="color:#66d9ef">AS</span> heatwave_length
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">FROM</span> numbered_heatwaves
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">GROUP</span> <span style="color:#66d9ef">BY</span> heatwave_id
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><table>
  <thead>
      <tr>
          <th style="text-align: center">heatwave_id</th>
          <th style="text-align: center">start_date</th>
          <th style="text-align: center">end_date</th>
          <th style="text-align: center">heatwave_length</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: center">2</td>
          <td style="text-align: center">2025-07-03</td>
          <td style="text-align: center">2025-07-05</td>
          <td style="text-align: center">3</td>
      </tr>
      <tr>
          <td style="text-align: center">3</td>
          <td style="text-align: center">2025-07-07</td>
          <td style="text-align: center">2025-07-08</td>
          <td style="text-align: center">2</td>
      </tr>
  </tbody>
</table>
<p>And here we are with the result of the complete query:</p>
<table>
  <thead>
      <tr>
          <th style="text-align: center">start_date</th>
          <th style="text-align: center">end_date</th>
          <th style="text-align: center">heatwave_length</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: center">2025-07-03</td>
          <td style="text-align: center">2025-07-05</td>
          <td style="text-align: center">3</td>
      </tr>
      <tr>
          <td style="text-align: center">2025-07-07</td>
          <td style="text-align: center">2025-07-08</td>
          <td style="text-align: center">2</td>
      </tr>
  </tbody>
</table>
<p>Note that window functions require at least MySQL 8.0</p>
<p>We might explore more of this topic in the future and try to achieve the same with Oracle, Postgres and older MySQL versions&hellip;</p>
]]></content:encoded>
    </item>
    <item>
      <title>Nürnberger Ringstraße im Test</title>
      <link>https://niklas-deutschmann.de/posts/20251214-nuernberger-ringstrasse-im-test/</link>
      <pubDate>Sun, 14 Dec 2025 19:21:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20251214-nuernberger-ringstrasse-im-test/</guid>
      <description>&lt;p&gt;Hier ist jemand zweimal zur Hauptverkehrszeit um den Ring in Nürnberg geradelt (19 km) und hat die Radwege komplett gefilmt - beeindruckend zu sehen, an wie vielen Stellen es nicht sicher oder einladend ist, da zu fahren.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=tlZYhmTmcqI&#34;&gt;Uhrzeigersinn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=CqlGLgSOeao&#34;&gt;Gegenuhrzeigersinn&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hier ist jemand zweimal zur Hauptverkehrszeit um den Ring in Nürnberg geradelt (19 km) und hat die Radwege komplett gefilmt - beeindruckend zu sehen, an wie vielen Stellen es nicht sicher oder einladend ist, da zu fahren.</p>
<p><a href="https://www.youtube.com/watch?v=tlZYhmTmcqI">Uhrzeigersinn</a></p>
<p><a href="https://www.youtube.com/watch?v=CqlGLgSOeao">Gegenuhrzeigersinn</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Zitat des Tages</title>
      <link>https://niklas-deutschmann.de/posts/20250919-zitat-des-tages-20250919/</link>
      <pubDate>Fri, 19 Sep 2025 07:19:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250919-zitat-des-tages-20250919/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Windows 11 is a travesty, a loose collection of dark patterns and incompetence, run by people who have zero interest in lovingly crafting an operating system they can be proud of. Windows has become a vessel for subscriptions and ads, and cannot reasonably be considered anything other than a massive pile of user-hostile dark patterns designed to extract data, ad time, and subscription money from its users.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://www.osnews.com/story/143376/dark-patterns-killed-my-wifes-windows-11-installation/&#34;&gt;Dark patterns killed my wife’s Windows 11 installation&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>Windows 11 is a travesty, a loose collection of dark patterns and incompetence, run by people who have zero interest in lovingly crafting an operating system they can be proud of. Windows has become a vessel for subscriptions and ads, and cannot reasonably be considered anything other than a massive pile of user-hostile dark patterns designed to extract data, ad time, and subscription money from its users.</p></blockquote>
<p><a href="https://www.osnews.com/story/143376/dark-patterns-killed-my-wifes-windows-11-installation/">Dark patterns killed my wife’s Windows 11 installation</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Zum Thema Deutschlandticket</title>
      <link>https://niklas-deutschmann.de/posts/20250918-zum-thema-deutschlandticket/</link>
      <pubDate>Thu, 18 Sep 2025 22:19:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250918-zum-thema-deutschlandticket/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.adac.de/verkehr/tanken-kraftstoff-antrieb/deutschland/kraftstoffpreisentwicklung/&#34;&gt;Hier sieht man sehr schön&lt;/a&gt;, dass Benzin und Diesel in den letzten zwei Jahren sogar billiger geworden sind. Seit 2011 ist der Sprit nur um 14,2% (Benzin) bzw. 16,8% (Diesel) teurer geworden. Ein Großteil des Anstiegs fand von 2020 bis 2022 statt.&lt;/p&gt;
&lt;p&gt;Beim Deutschlandticket wird die Verteuerung 30% in zweieinhalb Jahren sein.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://www.adac.de/verkehr/tanken-kraftstoff-antrieb/deutschland/kraftstoffpreisentwicklung/">Hier sieht man sehr schön</a>, dass Benzin und Diesel in den letzten zwei Jahren sogar billiger geworden sind. Seit 2011 ist der Sprit nur um 14,2% (Benzin) bzw. 16,8% (Diesel) teurer geworden. Ein Großteil des Anstiegs fand von 2020 bis 2022 statt.</p>
<p>Beim Deutschlandticket wird die Verteuerung 30% in zweieinhalb Jahren sein.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Diskriminierung aufgrund von Browser und Betriebssystem?</title>
      <link>https://niklas-deutschmann.de/posts/20250908-diskriminierung-nach-browser-und-betriebssystem/</link>
      <pubDate>Mon, 08 Sep 2025 09:11:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250908-diskriminierung-nach-browser-und-betriebssystem/</guid>
      <description>&lt;p&gt;Ob einem beim Online-Shopping abhängig von verwendetem Browser und Betriebssystem unterschiedliche Preise angezeigt werden, ist ein bisschen umstritten - es gibt Untersuchungen, nach denen dies zumindest im deutschen Online-Handel &lt;a href=&#34;https://www.heise.de/news/Teurer-mit-iPhone-BMJV-findet-keine-Preisdifferenzen-beim-Online-Shopping-5078411.html&#34;&gt;nicht oder kaum der Fall ist&lt;/a&gt;. Eine ähnliche Geschichte habe ich aber am Freitag direkt erlebt und es war eine absolute Premiere für mich.&lt;/p&gt;
&lt;p&gt;Ich hatte bei Ryanair einen Flug von Nürnberg nach London gebucht (übrigens mein erster Flug seit 7 Jahren). Leider erfuhr ich erst danach vom &lt;a href=&#34;https://www.bbc.com/news/articles/c33rnnvmgkyo&#34;&gt;geplanten Streik in London&lt;/a&gt;, durch den bis Freitag dieser Woche die U-Bahn fast gar nicht fährt. Ich beschloss deshalb, die ganze London-Reise um zwei Tage zu verschieben. Für den Ryanair-Flug sah es auch so aus, als sei dies problemlos möglich. Allerdings war der neue Flug um 42,50€ teurer. Für diese 42,50€ wurde aber kein Zahlungsmittel akzeptiert - weder die für die ursprüngliche Buchung verwendete Kreditkarte noch Paypal. Ich habe dann angefangen, diverse Dinge im Browser (Firefox unter Linux Mint) auszuprobieren (Adblocker abschalten, Cache und Cookies löschen usw.)&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ob einem beim Online-Shopping abhängig von verwendetem Browser und Betriebssystem unterschiedliche Preise angezeigt werden, ist ein bisschen umstritten - es gibt Untersuchungen, nach denen dies zumindest im deutschen Online-Handel <a href="https://www.heise.de/news/Teurer-mit-iPhone-BMJV-findet-keine-Preisdifferenzen-beim-Online-Shopping-5078411.html">nicht oder kaum der Fall ist</a>. Eine ähnliche Geschichte habe ich aber am Freitag direkt erlebt und es war eine absolute Premiere für mich.</p>
<p>Ich hatte bei Ryanair einen Flug von Nürnberg nach London gebucht (übrigens mein erster Flug seit 7 Jahren). Leider erfuhr ich erst danach vom <a href="https://www.bbc.com/news/articles/c33rnnvmgkyo">geplanten Streik in London</a>, durch den bis Freitag dieser Woche die U-Bahn fast gar nicht fährt. Ich beschloss deshalb, die ganze London-Reise um zwei Tage zu verschieben. Für den Ryanair-Flug sah es auch so aus, als sei dies problemlos möglich. Allerdings war der neue Flug um 42,50€ teurer. Für diese 42,50€ wurde aber kein Zahlungsmittel akzeptiert - weder die für die ursprüngliche Buchung verwendete Kreditkarte noch Paypal. Ich habe dann angefangen, diverse Dinge im Browser (Firefox unter Linux Mint) auszuprobieren (Adblocker abschalten, Cache und Cookies löschen usw.)</p>
<p>Was dann aber tatsächlich geholfen hat: Windows 10 in der Virtual Box booten und dort Edge benutzen.</p>
<p>Kann man so etwas irgendwo melden? Verbraucherzentrale oder so?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Summer of AI - Nachtrag</title>
      <link>https://niklas-deutschmann.de/posts/20250903-summer-of-ai-2/</link>
      <pubDate>Wed, 03 Sep 2025 06:38:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250903-summer-of-ai-2/</guid>
      <description>&lt;p&gt;Nach 2-3 Wochen habe ich das &lt;a href=&#34;summer-of-ai/&#34;&gt;Interesse am Vibe Coding&lt;/a&gt; wieder verloren. Es fühlt sich irgendwie leer und hohl an - so als hätte man das, was man da baut, nicht wirklich selbst gebaut. Ich habe auch ab ca. 2000 Zeilen Code das Bedürfnis verspürt, kleine Änderungen lieber direkt von Hand zu machen anstatt umständlich in natürlicher Sprache zu beschreiben.&lt;/p&gt;
&lt;p&gt;Vielleicht kommt es eines Tages wieder.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Nach 2-3 Wochen habe ich das <a href="summer-of-ai/">Interesse am Vibe Coding</a> wieder verloren. Es fühlt sich irgendwie leer und hohl an - so als hätte man das, was man da baut, nicht wirklich selbst gebaut. Ich habe auch ab ca. 2000 Zeilen Code das Bedürfnis verspürt, kleine Änderungen lieber direkt von Hand zu machen anstatt umständlich in natürlicher Sprache zu beschreiben.</p>
<p>Vielleicht kommt es eines Tages wieder.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Europäische Alternativen zu Microsoft, Facebook &amp; Co (Ergänzung 2)</title>
      <link>https://niklas-deutschmann.de/posts/20250831-europaeische-alternativen-3/</link>
      <pubDate>Sun, 31 Aug 2025 16:30:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250831-europaeische-alternativen-3/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://wero-wallet.eu/&#34;&gt;Wero&lt;/a&gt; positioniert sich als europäische Alternative zu PayPal. Es funktioniert schon in Deutschland, Belgien und Frankreich mit einigen Banken (die Bank muss mitmachen). Im Moment kann man damit aber nur als Privatperson Geld an eine andere Privatperson schicken - es gibt (noch) keine Online-Shops oder Dienste, die es als Bezahlmethode akzeptieren.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://wero-wallet.eu/">Wero</a> positioniert sich als europäische Alternative zu PayPal. Es funktioniert schon in Deutschland, Belgien und Frankreich mit einigen Banken (die Bank muss mitmachen). Im Moment kann man damit aber nur als Privatperson Geld an eine andere Privatperson schicken - es gibt (noch) keine Online-Shops oder Dienste, die es als Bezahlmethode akzeptieren.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cyber Cyber!</title>
      <link>https://niklas-deutschmann.de/posts/20250830-cyber-cyber/</link>
      <pubDate>Sat, 30 Aug 2025 10:19:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250830-cyber-cyber/</guid>
      <description>&lt;p&gt;Das &lt;a href=&#34;https://www.heise.de/news/Mehr-IT-Sicherheit-Dobrindt-will-den-Cyber-Dome-10623448.html&#34;&gt;Cyber-Bullshit-Gelaber aus dem Innenministerium&lt;/a&gt; nimmt gerade wieder überhand, da ist es &lt;a href=&#34;https://netzpolitik.org/2014/cyber-cyber-die-hymne-zur-digitalen-agenda/&#34;&gt;Zeit für diesen Klassiker&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Party on!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Das <a href="https://www.heise.de/news/Mehr-IT-Sicherheit-Dobrindt-will-den-Cyber-Dome-10623448.html">Cyber-Bullshit-Gelaber aus dem Innenministerium</a> nimmt gerade wieder überhand, da ist es <a href="https://netzpolitik.org/2014/cyber-cyber-die-hymne-zur-digitalen-agenda/">Zeit für diesen Klassiker</a>.</p>
<p>Party on!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Manchmal sind soziale Netzwerke doch zu etwas gut</title>
      <link>https://niklas-deutschmann.de/posts/20250831-manchmal-sind-soziale-netzwerke-doch-zu-etwas-gut/</link>
      <pubDate>Fri, 29 Aug 2025 13:48:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250831-manchmal-sind-soziale-netzwerke-doch-zu-etwas-gut/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://mstdn.social/@stux/115112969150916874&#34;&gt;Dieser Post bei Mastodon&lt;/a&gt; hat dazu geführt, dass ich jetzt den Hersteller der Spielzeugeisenbahn kenne, die wir als Kinder Mitte der 80er Jahre in Japan hatten. Und mit der mein Neffe und meine Nichte heute wieder spielen - hier gab es offensichtlich gerade ein schweres Erdbeben, oder einen Godzilla-Angriff:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Spielzeugeisenbahn auf einem Teppich, diverse Wagen, Brückenteile und Häuser sind umgekippt und liegen wild verstreut in der Gegend herum&#34; loading=&#34;lazy&#34; src=&#34;https://niklas-deutschmann.de/images/plarail.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Es gibt sogar einen &lt;a href=&#34;https://japan-figure.com/de-de/collections/plarail&#34;&gt;deutschsprachigen Online-Shop&lt;/a&gt;, man könnte jetzt den 40-jährigen Investitionsstau auflösen und neues Rollmaterial beschaffen, z.B. die &lt;a href=&#34;https://japan-figure.com/de-de/collections/plarail/products/takara-tomy-plarail-s-03-e5-series-shinkansen-hayabusa-f-s-takara-tomy&#34;&gt;aktuelle Shinkansen-Baureihe&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://mstdn.social/@stux/115112969150916874">Dieser Post bei Mastodon</a> hat dazu geführt, dass ich jetzt den Hersteller der Spielzeugeisenbahn kenne, die wir als Kinder Mitte der 80er Jahre in Japan hatten. Und mit der mein Neffe und meine Nichte heute wieder spielen - hier gab es offensichtlich gerade ein schweres Erdbeben, oder einen Godzilla-Angriff:</p>
<p><img alt="Spielzeugeisenbahn auf einem Teppich, diverse Wagen, Brückenteile und Häuser sind umgekippt und liegen wild verstreut in der Gegend herum" loading="lazy" src="/images/plarail.jpg"></p>
<p>Es gibt sogar einen <a href="https://japan-figure.com/de-de/collections/plarail">deutschsprachigen Online-Shop</a>, man könnte jetzt den 40-jährigen Investitionsstau auflösen und neues Rollmaterial beschaffen, z.B. die <a href="https://japan-figure.com/de-de/collections/plarail/products/takara-tomy-plarail-s-03-e5-series-shinkansen-hayabusa-f-s-takara-tomy">aktuelle Shinkansen-Baureihe</a>.</p>
<p>Problem ist nur, dass Neffe und Nichte mittelfristig selbst zu alt werden dafür. Da hilft nur doch noch selber Kinder in die Welt setzen - oder auf die nächste Generation warten.</p>
]]></content:encoded>
    </item>
    <item>
      <title>30 Jahre Windows 95 - 30 Jahre Spaß am Gerät</title>
      <link>https://niklas-deutschmann.de/posts/20250828-30-jahre-windows-95/</link>
      <pubDate>Thu, 28 Aug 2025 19:05:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250828-30-jahre-windows-95/</guid>
      <description>&lt;p&gt;Bei Heise gab’s vor kurzem &lt;a href=&#34;https://www.heise.de/hintergrund/Warum-Microsoft-mit-Windows-95-den-modernen-PC-definierte-10590863.html&#34;&gt;diesen schönen Artikel&lt;/a&gt;, der eine Menge nostalgischer Erinnerungen ausgelöst hat. In den Kommentaren sagen einige, dieser Artikel sei zu Microsoft-freundlich, aber mein IT-Leben begann schon kurz vor Windows 95 und Linux spielte dann schon wenige Jahre später auch eine Rolle. Aber mal schön der Reihe nach&amp;hellip;&lt;/p&gt;
&lt;p&gt;Das hier&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Damit wurden schließlich auch bei den großen PC-Ketten Escom und Vobis Computer mit vorinstalliertem OS/2 verkauft.&#34; loading=&#34;lazy&#34; src=&#34;https://niklas-deutschmann.de/images/30-jahre-windows-95-zitat-01.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;..habe ich nämlich direkt miterlebt, bei meinem ersten wirklich „eigenen“ PC. Meine Mutter hatte schon ein paar Jahre lang einen 286er, den sie hauptsächlich für Textverarbeitung mit Word Perfect 5.1 benutzt hat, aber da durften wir Kinder nie wirklich viel ran.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Bei Heise gab’s vor kurzem <a href="https://www.heise.de/hintergrund/Warum-Microsoft-mit-Windows-95-den-modernen-PC-definierte-10590863.html">diesen schönen Artikel</a>, der eine Menge nostalgischer Erinnerungen ausgelöst hat. In den Kommentaren sagen einige, dieser Artikel sei zu Microsoft-freundlich, aber mein IT-Leben begann schon kurz vor Windows 95 und Linux spielte dann schon wenige Jahre später auch eine Rolle. Aber mal schön der Reihe nach&hellip;</p>
<p>Das hier</p>
<p><img alt="Damit wurden schließlich auch bei den großen PC-Ketten Escom und Vobis Computer mit vorinstalliertem OS/2 verkauft." loading="lazy" src="/images/30-jahre-windows-95-zitat-01.png"></p>
<p>..habe ich nämlich direkt miterlebt, bei meinem ersten wirklich „eigenen“ PC. Meine Mutter hatte schon ein paar Jahre lang einen 286er, den sie hauptsächlich für Textverarbeitung mit Word Perfect 5.1 benutzt hat, aber da durften wir Kinder nie wirklich viel ran.</p>
<p>Es war ein <strong>Riesenfehler</strong> von den Einzelhandelsketten, Rechner mit vorinstalliertem OS/2 und 4 MB RAM zu verkaufen. Genau so viel hatte nämlich meine Vobis-Kiste, ungefähr die ganz links hier (<a href="https://archive.org/details/vobis-denkzettel-1993-05-21/Vobis%20Denkzettel%201995-02-02/page/n3/mode/2up">Quelle</a>)</p>
<p><img alt="Ausschnitte aus dem Vobis-Prospekt von Februar 1995" loading="lazy" src="/images/30-jahre-windows-95-denkzettel-01.png"></p>
<p>Es war&hellip; vermutlich das langsamste digitale Endgerät, das ich jemals hatte. 5 Minuten zum Booten und dann noch mal mehrere Minuten für jeden Programmstart. Es hat damals <strong>Monate</strong> gedauert, bis ich herausgefunden hatte, wie man den „Win-OS/2-Gesamtbildschirm“ startet (die Windows 3.11-Oberfläche im Vollbildmodus), was die Sache etwas erträglicher gemacht hat. Und noch mal Monate, bis ich herausgefunden hatte, wie man direkt in DOS bootet und ab diesem Zeitpunkt war’s dann halt ein DOS + Windows 3.11 PC.</p>
<p>So viel zum Thema Erfolgschancen von OS/2. Immerhin war dadurch meine erste Programmiersprache dadurch <a href="https://de.wikipedia.org/wiki/REXX">REXX</a>, die Skriptsprache von OS/2, und nicht BASIC oder Turbo Pascal.</p>
<p>Es sei noch erwähnt, dass</p>
<ul>
<li>4 MB RAM damals 350 DM kosteten.</li>
<li>Das mit dem „Aufgrund erhöhter Nachfrage ist nicht immer alles sofort lieferbar“ auch gestimmt hat (Gerät im November 94 bestellt, im Januar 95 konnten wir es abholen)</li>
</ul>
<p>Und wann gab’s dann tatsächlich Windows 95? Mit dem PC Nr. 2 zwei Jahre später. Das war dann schon eine andere Geschichte (Pentium 133, 16 MB RAM), und vor allem bekam diese Maschine dann schon bald:</p>
<ul>
<li>32 MB RAM</li>
<li>Eine Soundkarte (endlich!)</li>
<li>Eine 3Dfx-Beschleunigerkarte. Damit konnte dann schon richtig die Post abgehen in Spielen wie Half-Life, FIFA 98, Bleifuss 2, Need for Speed 2 oder dem Microsoft Flugsimulator 98.</li>
</ul>
<p>Und 1998 kam dann auch dieses Betriebssystem namens „SuSE“ (Version 6.0) dazu, dass damals noch in Buchhandlungen in Schachteln mit mathematischen Gebilden darauf verkauft wurde&hellip;</p>
]]></content:encoded>
    </item>
    <item>
      <title>Peak AI Hype?</title>
      <link>https://niklas-deutschmann.de/posts/20250824-peak-ai-hype/</link>
      <pubDate>Sun, 24 Aug 2025 21:35:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250824-peak-ai-hype/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.theverge.com/news/761338/microsoft-excel-ai-copilot-spreadsheet-cell-filling&#34;&gt;Microsoft baut noch mehr Copilot-Funktionalität in Excel ein&lt;/a&gt; und warnt gleichzeitig davor, sie für &amp;hellip;äh&amp;hellip; eigentlich alles zu benutzen, was man mit einer Tabellenkalkulation macht.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Microsoft also warns against using the AI function for numerical calculations or in “high-stakes scenarios” with legal, regulatory, and compliance implications, as COPILOT “can give incorrect responses.”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Was auch noch dazugehört: Vor 5 Monaten &lt;a href=&#34;https://www.businessinsider.com/anthropic-ceo-ai-90-percent-code-3-to-6-months-2025-3&#34;&gt;hat der Anthropic-CEO vorhergesagt&lt;/a&gt;, dass KI in 3-6 Monaten 90% des Codes schreiben wird.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://www.theverge.com/news/761338/microsoft-excel-ai-copilot-spreadsheet-cell-filling">Microsoft baut noch mehr Copilot-Funktionalität in Excel ein</a> und warnt gleichzeitig davor, sie für &hellip;äh&hellip; eigentlich alles zu benutzen, was man mit einer Tabellenkalkulation macht.</p>
<blockquote>
<p>Microsoft also warns against using the AI function for numerical calculations or in “high-stakes scenarios” with legal, regulatory, and compliance implications, as COPILOT “can give incorrect responses.”</p></blockquote>
<p>Was auch noch dazugehört: Vor 5 Monaten <a href="https://www.businessinsider.com/anthropic-ceo-ai-90-percent-code-3-to-6-months-2025-3">hat der Anthropic-CEO vorhergesagt</a>, dass KI in 3-6 Monaten 90% des Codes schreiben wird.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Wie soziale Netzwerke die Wirklichkeit verzerren (eine Anekdote)</title>
      <link>https://niklas-deutschmann.de/posts/20250818-wie-soziale-netzwerke-die-wirklichkeit-verzerren/</link>
      <pubDate>Mon, 18 Aug 2025 05:50:00 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250818-wie-soziale-netzwerke-die-wirklichkeit-verzerren/</guid>
      <description>&lt;p&gt;Ich habe gestern folgendes bei Mastodon und Bluesky gepostet und kurze Zeit später wieder gelöscht:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gerade in der S-Bahn angeschnauzt worden, weil ich ein Gepäckstück eigenmächtig bewegt habe&lt;/p&gt;
&lt;p&gt;JA DANN STELL HALT DEINEN 1-KUBIKMETER-KOFFER NICHT SO HIN, DASS ER ZWEI ANDERE SITZPLÄTZE BLOCKIERT, USCHI&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ich habe es krawalliger formuliert, als in der Realität war. Ich habe zwei Menschen angesprochen und im gleichen Moment schon den Koffer beiseite geschoben - aber die falschen zwei Menschen. Der Koffer gehörte der Person im Sitz gegenüber und nicht dem Paar eine Sitzreihe weiter. Es war zwar objektiv rücksichtslos und die Person hätte nicht so ausrasten sollen, aber mit 10 Sekunden warten und herumfragen hätte ich die Situation vielleicht vermeiden können.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe gestern folgendes bei Mastodon und Bluesky gepostet und kurze Zeit später wieder gelöscht:</p>
<blockquote>
<p>Gerade in der S-Bahn angeschnauzt worden, weil ich ein Gepäckstück eigenmächtig bewegt habe</p>
<p>JA DANN STELL HALT DEINEN 1-KUBIKMETER-KOFFER NICHT SO HIN, DASS ER ZWEI ANDERE SITZPLÄTZE BLOCKIERT, USCHI</p></blockquote>
<p>Ich habe es krawalliger formuliert, als in der Realität war. Ich habe zwei Menschen angesprochen und im gleichen Moment schon den Koffer beiseite geschoben - aber die falschen zwei Menschen. Der Koffer gehörte der Person im Sitz gegenüber und nicht dem Paar eine Sitzreihe weiter. Es war zwar objektiv rücksichtslos und die Person hätte nicht so ausrasten sollen, aber mit 10 Sekunden warten und herumfragen hätte ich die Situation vielleicht vermeiden können.</p>
<p>Achtet mal darauf, ob ihr Dinge online „krawalliger“ beschreibt, als sie tatsächlich waren, um Likes abzugreifen.</p>
<p>Im Übrigen bin ich der Meinung, dass es in Zügen regelmäßig Durchsagen geben sollte: „Bitte belegen Sie mit Ihrem Gepäck keine Sitzplätze“</p>
]]></content:encoded>
    </item>
    <item>
      <title>Europäische Alternativen zu Microsoft, Facebook &amp; Co (Ergänzung)</title>
      <link>https://niklas-deutschmann.de/posts/20250817-europaeische-alternativen-2/</link>
      <pubDate>Sun, 17 Aug 2025 13:06:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250817-europaeische-alternativen-2/</guid>
      <description>&lt;p&gt;Noch ein paar Ergänzungen zum vorigen Artikel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kalender und Notizen in iPhone und Thunderbird von iCloud auf Posteo umzustellen, war kinderleicht, und ich habe es bloß aus Faulheit lange nicht gemacht :-)&lt;/li&gt;
&lt;li&gt;Möglicherweise brauche ich doch wieder einen Github-Account - für die Zusammenarbeit mit anderen OpenSource-Projekten. Ich habe im &lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod&#34;&gt;Template&lt;/a&gt;, das für diese Seite verwendet wird, &lt;a href=&#34;https://codeberg.org/SonstHarmlos/hugo-PaperMod/issues/1&#34;&gt;einen Bug&lt;/a&gt; gefunden, und konnte ihn erst mal nur für &lt;a href=&#34;https://codeberg.org/SonstHarmlos/hugo-PaperMod&#34;&gt;meinen Fork&lt;/a&gt; &lt;a href=&#34;https://codeberg.org/SonstHarmlos/hugo-PaperMod/commit/7b45c18a39895f12ba33666d289675db801909a2&#34;&gt;fixen&lt;/a&gt; - aber ihn nicht beim Originalprojekt in Github eintragen und keinen Pull Request erstellen.&lt;/li&gt;
&lt;li&gt;Bei &lt;strong&gt;Grafiksoftware&lt;/strong&gt; (Pixel- und Vektorgrafik sowie Desktop Publishing) ist die britisch-australische Firma Serif mit &lt;a href=&#34;https://affinity.serif.com/de/&#34;&gt;Affinity Photo, Affinity Designer und Affinity Publisher&lt;/a&gt; eine gute Alternative zur Adobe-Cloud. Leider nicht für Linux - aber zu sehr fairen Preisen (180€ für alle Programme auf allen unterstützen Betriebssystemen) und ohne Abo-Zwang. Serif wurde zwar 2024 vom australischen Unternehmen &lt;a href=&#34;https://www.canva.com&#34;&gt;Canva&lt;/a&gt; aufgekauft, bis jetzt hat sich aber an der Preispolitik nichts geändert.&lt;/li&gt;
&lt;li&gt;Hier läuft jetzt auch &lt;a href=&#34;https://nextcloud.com/de/&#34;&gt;NextCloud&lt;/a&gt; - es hat mich überrascht, wie gut es auf einem relativ günstigen Webspace mit LAMP-Stack läuft, zumindest mit wenig Usern, auch wenn nicht alle Funktionen zur Verfügung stehen. Aber zum Fotos hochladen sieht es ganz OK aus (Immich läuft nämlich leider nicht bei mir) und ich habe auch eine &lt;a href=&#34;https://apps.nextcloud.com/apps/news&#34;&gt;RSS-Reader-„App“&lt;/a&gt; gefunden.&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<p>Noch ein paar Ergänzungen zum vorigen Artikel:</p>
<ul>
<li>Kalender und Notizen in iPhone und Thunderbird von iCloud auf Posteo umzustellen, war kinderleicht, und ich habe es bloß aus Faulheit lange nicht gemacht :-)</li>
<li>Möglicherweise brauche ich doch wieder einen Github-Account - für die Zusammenarbeit mit anderen OpenSource-Projekten. Ich habe im <a href="https://github.com/adityatelange/hugo-PaperMod">Template</a>, das für diese Seite verwendet wird, <a href="https://codeberg.org/SonstHarmlos/hugo-PaperMod/issues/1">einen Bug</a> gefunden, und konnte ihn erst mal nur für <a href="https://codeberg.org/SonstHarmlos/hugo-PaperMod">meinen Fork</a> <a href="https://codeberg.org/SonstHarmlos/hugo-PaperMod/commit/7b45c18a39895f12ba33666d289675db801909a2">fixen</a> - aber ihn nicht beim Originalprojekt in Github eintragen und keinen Pull Request erstellen.</li>
<li>Bei <strong>Grafiksoftware</strong> (Pixel- und Vektorgrafik sowie Desktop Publishing) ist die britisch-australische Firma Serif mit <a href="https://affinity.serif.com/de/">Affinity Photo, Affinity Designer und Affinity Publisher</a> eine gute Alternative zur Adobe-Cloud. Leider nicht für Linux - aber zu sehr fairen Preisen (180€ für alle Programme auf allen unterstützen Betriebssystemen) und ohne Abo-Zwang. Serif wurde zwar 2024 vom australischen Unternehmen <a href="https://www.canva.com">Canva</a> aufgekauft, bis jetzt hat sich aber an der Preispolitik nichts geändert.</li>
<li>Hier läuft jetzt auch <a href="https://nextcloud.com/de/">NextCloud</a> - es hat mich überrascht, wie gut es auf einem relativ günstigen Webspace mit LAMP-Stack läuft, zumindest mit wenig Usern, auch wenn nicht alle Funktionen zur Verfügung stehen. Aber zum Fotos hochladen sieht es ganz OK aus (Immich läuft nämlich leider nicht bei mir) und ich habe auch eine <a href="https://apps.nextcloud.com/apps/news">RSS-Reader-„App“</a> gefunden.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Europäische Alternativen zu Microsoft, Facebook &amp; Co</title>
      <link>https://niklas-deutschmann.de/posts/20260422-europaeische-alternativen/</link>
      <pubDate>Sat, 16 Aug 2025 08:27:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20260422-europaeische-alternativen/</guid>
      <description>&lt;p&gt;Spätestens seit Trump II ist es offensichtlich, dass Europa in vielen Bereichen mehr auf eigenen Füßen
stehen muss, dazu gehört neben den miltärischen Fähigkeiten (darauf werde ich jetzt nicht näher eingehen) vor allem
das Digitale. Ich habe in den letzten Monaten - aber auch schon davor - versucht, Hardware, Software und Dienste von
US-Tech-Giganten durch europäische Alternativen zu ersetzen. In einigen Bereichen war ich dabei sehr erfolgreich,
in anderen ist es sehr schwierig. Ich möchte mal einen kleinen Überblick geben:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Spätestens seit Trump II ist es offensichtlich, dass Europa in vielen Bereichen mehr auf eigenen Füßen
stehen muss, dazu gehört neben den miltärischen Fähigkeiten (darauf werde ich jetzt nicht näher eingehen) vor allem
das Digitale. Ich habe in den letzten Monaten - aber auch schon davor - versucht, Hardware, Software und Dienste von
US-Tech-Giganten durch europäische Alternativen zu ersetzen. In einigen Bereichen war ich dabei sehr erfolgreich,
in anderen ist es sehr schwierig. Ich möchte mal einen kleinen Überblick geben:</p>
<h3 id="hardware">Hardware</h3>
<p>Hier gibt es zur Zeit (neben dem PC) ein iPhone 12 mini (Apple), eine Sportuhr von Garmin und einen Radcomputer von
Wahoo. Solange diese Hardware funktioniert, werde ich sie auch weiterbenutzen. Würde ich jetzt eine neue
Sportuhr kaufen, käme möglicherweise <a href="https://www.polar.com/de">Polar</a> (Finnland)
in Frage und beim Radcomputer der deutsche Hersteller <a href="https://sigma.bike/de/product-category/bike-computer/">Sigma</a></p>
<h3 id="betriebssysteme">Betriebssysteme</h3>
<p>Gerade auf dem PC von Windows 10 auf <a href="https://linuxmint.com/">Linux Mint</a> umgestiegen,
das ist aber nichts neues - ich hatte seit ca. 1999 immer wieder mal Linux auf meinen Rechnern (SuSE, Debian, Ubuntu
seit der ersten Version 2004 und Elementary OS, etwa in dieser Reihenfolge). Auf dem Smartphone ist natürlich iOS nicht ersetzbar,
Android höchstens durch eine Google-freiere Variante. Wenn das iPhone den Geist aufgibt, käme evtl. ein Google Pixel mit
<a href="https://grapheneos.org/">Graphene OS</a> in Frage.</p>
<h3 id="browser">Browser</h3>
<p>Firefox statt Internet Explorer, Chrome oder Edge - das war schon immer so. Nehme ich gar nicht als
bewussten Schritt wahr.</p>
<h3 id="e-mail">E-Mail</h3>
<p>Ähnlich - statt Google Mail oder Outlook schon seit 2014 <a href="https://posteo.de">Posteo</a>, eine
kleiner und symphatischer Anbieter aus Berlin, bei dem ihr ab 1 Euro/Monat (abhängig vom gewünschten Speicherplatz) dabei
seid. Vorher auch schon die üblichen deutschen Freemail-Anbieter (GMX, Web.de und Strato)</p>
<h3 id="messenger">Messenger</h3>
<p>WhatsApp ist installiert, aber deutlich mehr Kontakte habe ich bei <a href="https://signal.org/de/">Signal</a>
und einige wenige bei <a href="https://threema.com/de">Threema</a>. Telegram spielt keinerlei Rolle mehr.</p>
<h3 id="office">Office</h3>
<p>LibreOffice statt Microsoft war im privaten Bereich schon immer so (früher hieß es OpenOffice),
ebenfalls ein absoluter „No-Brainer&quot;. Etwas schwieriger ist es bei den browserbasierten Office-Programmen.
Ich benutze diese nicht besonders oft, habe aber trotzdem mal einen Account bei
<a href="https://cryptpad.fr/">CryptPad</a> angelegt. Es ist aber deutlich hakeliger als Google Drive und fühlt sich
weniger geschmeidig und desktop-artig an.</p>
<h3 id="soziale-netzwerke">Soziale Netzwerke</h3>
<p>Sicher das spannende und emotionalste Kapitel.</p>
<p><strong>X</strong> habe ich schon zu Silvester 2022, kurz nach
der Übernahme durch Elon Musk, verlassen, als es noch Twitter hieß. Der einzige Ersatz war zunächst nur
<a href="https://franken.social/@SonstHarmlos">Mastodon</a>, einige Kontakte sind aber auch zu
<a href="https://bsky.app/profile/sonstharmlos.bsky.social">Bluesky</a> gewandert,
ein kommerzielles, aber deutlich kleineres und bis jetzt halbwegs vernünftiges US-Unternehmen, dessen Netzwerk
deutlich an das „alte&quot; Twitter erinnert. <!-- raw HTML omitted --></p>
<p><strong>Instagram</strong> hat sich bis vor kurzem hartnäckig gehalten, wenn auch mit viel
Schauen und wenig selbst Posten. Ende April 2025 war damit aber auch Schluss.<!-- raw HTML omitted --></p>
<p><strong>Facebook</strong> war schon immer eine On-Off-Geschichte, zuletzt war ich 2024 für ein paar Monate während
dort (während des StuB-Wahlkampfs hier in Erlangen)</p>
<p>Bei <strong>LinkedIn</strong>, <strong>TikTok</strong> und <strong>Threads</strong> hatte ich noch nie einen Account und plane es auch nicht.<!-- raw HTML omitted --></p>
<p>Schwer zu ersetzen bleiben <strong>Strava</strong>, <strong>Reddit</strong> und <strong>YouTube</strong> - letzteres betreibe ich auch nur im
„passiven&quot; Modus.</p>
<h3 id="kartendienste">Kartendienste</h3>
<p>Hier ist Google Maps für viele Dinge schwer zu ersetzen (bzw. ich habe es noch nicht wirklich
ausprobiert). Street View dient natürlich auch als Grundlage für Geoguessr, das ich oft spiele.<!-- raw HTML omitted -->
Im Wander- und Fahrradbereich hat sich aber der <a href="https://bikerouter.de">BikeRouter</a> sehr bewährt (so
sehr, dass ich z.B. extrem selten Komoot benutzt habe), und als mobile App ist <a href="https://www.comaps.app/">CoMaps</a> sehr
vielversprechend.</p>
<h3 id="ki">KI</h3>
<p>Wie schon gesagt, das superheiße Thema im Moment und auch sehr umstritten! Ich habe die bewusste Entscheidung
getroffen, als einzige KI-App auf dem Smartphone das französische <a href="https://chat.mistral.ai/chat">Mistral</a> zu
installieren und benutze es recht sparsam (hauptsächlich, um Bildbeschreibungen für Posts bei Mastodon und Bluesky zu
generieren). Bei den <a href="https://sonstharmlos.codeberg.page/#summer-of-ai">gerade beschriebenen</a>
Programmierexperimenten bin ich aber stark auf US-Modelle angewiesen (GPT 5, Claude 4). Ich habe auch die bewusste
Entscheidung getroffen, für KI privat kein Geld auszugeben - die Kosten dürften grob mit dem Token-Verbrauch bzw. der
Rechenleistung korrellieren und diese mit den CO2-Emissionen.</p>
<h3 id="softwareentwicklung">Softwareentwicklung</h3>
<p>Gerade auch von GitHub zu <a href="https://codeberg.org/">Codeberg</a> gewechselt - auch die
Seite, die ihr hier gerade lest, liegt dort. Ob ich wirklich dauerhaft ohne GitHub-Account auskommen kann, ist aber fraglich,
wenn ich zu anderen Open-Source-Projekten etwas beitragen oder die diversen Dienste nutzen möchte, die einen GitHub-Account
voraussetzen.</p>
<h3 id="shopping-und-e-books">Shopping und E-Books</h3>
<p>Ein Account bei Amazon ist auch vorhanden, wird aber nicht sehr stark benutzt, vielleicht 3-4 Einkäufe im Jahr.
Als E-Book-Reader habe ich seit Ende 2022 (oder so) einen <a href="https://mytolino.de/">Tolino</a>.</p>
<h3 id="streaming-und-musik">Streaming und Musik</h3>
<p>Hierzu kann ich nicht so viel sagen, da ich kein großer Film- oder Serienjunkie bin und mir für Dokus YouTube und die
öffentlich-rechtlichen Mediatheken meistens ausreichen. Ich hatte für einige Jahre Netflix (im Moment aber nicht)
und habe auch schon einige Male Spielfilme bei Amazon Prime Video geschaut. Welcher Streaming-Dienst der geeignetste
ist, hängt auch stark von den eigenen Lieblingsserien und Vorlieben ab.<!-- raw HTML omitted -->
Ähnlich bei Musik - hier habe ich bis jetzt immer Apple Music benutzt. Spotify, der dominierende Konzern hier,
der <a href="https://de.wikipedia.org/wiki/Spotify#Kritik">in vielen Bereichen fragwürdig</a> ist, ist auch kein
US-amerikanisches, sondern ein schwedisches Unternehmen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Summer of AI</title>
      <link>https://niklas-deutschmann.de/posts/20250816-summer-of-ai/</link>
      <pubDate>Fri, 15 Aug 2025 20:21:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-summer-of-ai/</guid>
      <description>&lt;p&gt;Künstliche Intelligenz ist ja spätestens seit dem Erscheinen von ChatGPT Ende 2022 das superheiße Thema und
hat vorherige Tech-Hypes wie Kryptowährungen weitgehend abgelöst. Ich hatte da natürlich meine Ausprobierphase, aber insgesamt
war die Entwicklung bis vor kurzem so, dass mein Bild immer negativer wurde. Grund dafür sind z.B. der immense
Ressourcenverbrauch, die noch weitergehenden Möglichkeiten, die öffentliche Meinung zu manipulieren, und auch die enge
Bande zwischen vielen Silicon-Valley-Größen und der Trump-Administration. Es wird &lt;a href=&#34;https://www.wertstoffsammler.info/kuenstliche-intelligenz-braucht-echte-verantwortung-mit-johannes-link/&#34;&gt;hier in diesem Podcast&lt;/a&gt; ganz gut zusammengefasst. Ich habe schon angefangen, an meinem Beruf zu zweifeln, und mich zu fragen, ob ich überhaupt damit in Verbindung gebracht werden möchte.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Künstliche Intelligenz ist ja spätestens seit dem Erscheinen von ChatGPT Ende 2022 das superheiße Thema und
hat vorherige Tech-Hypes wie Kryptowährungen weitgehend abgelöst. Ich hatte da natürlich meine Ausprobierphase, aber insgesamt
war die Entwicklung bis vor kurzem so, dass mein Bild immer negativer wurde. Grund dafür sind z.B. der immense
Ressourcenverbrauch, die noch weitergehenden Möglichkeiten, die öffentliche Meinung zu manipulieren, und auch die enge
Bande zwischen vielen Silicon-Valley-Größen und der Trump-Administration. Es wird <a href="https://www.wertstoffsammler.info/kuenstliche-intelligenz-braucht-echte-verantwortung-mit-johannes-link/">hier in diesem Podcast</a> ganz gut zusammengefasst. Ich habe schon angefangen, an meinem Beruf zu zweifeln, und mich zu fragen, ob ich überhaupt damit in Verbindung gebracht werden möchte.</p>
<p>Das hat sich in den letzten 2-3 Wochen ein wenig geändert. Ich habe nämlich das sogenannte „Vibe Coding“ für mich entdeckt.
Der Begriff ist erst Anfang diesen Jahres entstanden und bezeichnet eine Art des Programmierens, bei der der Code zu (fast)
100% von einer KI generiert wird, so dass man nur noch mit Anweisungen in natürlicher Sprache formuliert, wie das Programm
sich verhalten soll. Im Beruf kannte ich zwar schon ein KI-Tool, die Nutzung beschränkte sich aber im Wesentlichen darauf, die
KI wie eine Suchmaschine zu fragen, oder vielleicht mal ein paar Kommentare, Doku oder Tests zu generieren. Bei einer deutlich
sechsstelligen Anzahl Codezeilen ist man natürlich auch sehr vorsichtig und möchte nichts kaputtmachen. Vollgas geben, und wirklich
mal testen, was geht, kann ich nur zu Hause.</p>
<p>Das begann mit <a href="https://claude.ai/">Claude</a> und einer <a href="https://niklas-deutschmann.de/timer/">kleinen Timer-App</a>. Schon hier war es beeindruckend, einfach sagen zu können „Bau mal das ganze Progressive-Webapp-Zeug ein,
damit es auf dem Smartphone gut aussieht“ - aber ich musste auch ein paar Dinge von Hand reparieren. Als nächstes kam dann
etwas, was ich schon immer mal haben wollte: Die Möglichkeit, in meinem sehr geschätzten <a href="https://www.geoguessr.com/">GeoGuessr</a>
die in den letzten Monaten „besuchten“ Orte als KML-Datei zu <a href="https://codeberg.org/SonstHarmlos/gg2kml">exportieren</a>,
um sie in Google Earth usw. darstellen zu können.
Hier wurde schon eine „inoffizielle“ <a href="https://efisha.com/2022/04/18/geoguessr-api-endpoints/">API</a> benutzt und ich
achtete ein wenig darauf, den Server nicht mit Requests zu bombardieren, um nicht den Account gesperrt zu bekommen.</p>
<p>Was habe ich jetzt bei dem Ganzen gelernt?</p>
<ul>
<li>Es ist cool, mal wieder ein paar Hobbyprojekte zu haben. Die paar, die ich vorher auf Github hatte, waren sehr klein
und/oder sehr angestaubt.</li>
<li>Man kann jetzt Dinge in Programmcode gießen, so schnell, wie man denken kann. Nicht mehr nur so schnell, wie man
den Programmcode tippen kann. Man muss es nur noch in natürlicher Sprache tippen (viel kompakter)</li>
<li>Das lässt es für das Management so attraktiv aussehen. Das Management bleibt in dieser Stufe der Begeisterung stehen,
weil es ja hauptsächlich an schnellen Ergebnissen interessiert ist, und nicht daran, wie sie zustandekommen.
Und auch nicht immer daran, wie das Produkt langfristig betrieben und gewartet werden soll.</li>
<li>Grundsätzlich gab es früher schon Tools, um schnell und mit wenig Programmierkenntnissen zu vorzeigbaren Ergebnissen zu
kommen („Rapid Application Development“, „Low Code“ usw., was auch immer das aktuelle Buzzword ist), diese waren aber
deterministisch im Gegensatz zu natürlicher Sprache.</li>
<li>Natürliche Sprache ist unpräzise und doppeldeutig im Vergleich zu Programmcode und dadurch entstehen Fehler.
Fehler entstehen aber auch so. Wo Software entwickelt wird, entstehen immer Fehler. Mehr oder weniger.
Es geht darum, sie schnell zu finden, je früher, desto kostengünstiger und nervenschonender ist die Behebung.</li>
<li>Das „Vibe Coding“ kam mir jetzt manchmal so vor, als hätte ich einen immer freundlichen und willigen Junior-Entwickler zur
Verfügung, der im Prinzip alles auswendig weiß, aber ein bisschen schusselig ist, beaufsichtigt werden muss und auch
nur zwei Stunden am Tag arbeiten kann (im kostenlosen Plan von Claude&hellip;)</li>
<li>Man begibt sich stark in Abhängigkeiten und gibt Produktionsmittel aus der Hand, wenn man ohne KI nichts mehr
entwickeln kann. LLMs von Grund auf aufsetzen und trainieren können aufgrund der immensen benötigten Rechenleistung
nur große Unternehmen.</li>
<li>Es wurde schon viel darüber geschrieben, das die ganze Technologie strukturell „rechts“ oder konservativ sei (weil z.B.
immer nur vorhandene Kulturgüter wiedergekäut werden, anstatt etwas wirklich neues zu schaffen), aber ein entscheidender
Aspekt fehlt da noch: Man gewöhnt sich daran, Befehle zu geben, die widerspruchslos befolgt werden.</li>
<li>Etwa das, was Jürgen Geuter hier als <a href="https://tante.cc/2025/07/30/friction-and-not-being-touched/">„Reibungslosigkeit“</a> bezeichnet. Die Illusion einer Welt, die auf einen zugeschnitten ist. Dabei brauchen wir die „Reibung“, um die Bedürfnisse anderer Menschen zu erkennen und zu sozialen Wesen zu werden.</li>
<li>Du hast <em>etwas</em>, das deine Befehle stets willig ausführt. Das dir nie widerspricht. Ich habe noch keine KI gesehen, die mir gesagt hat „Nein, das geht so nicht. Überleg dir etwas anderes.&quot; Ich habe noch keine KI mit einer <em>Meinung</em> gesehen. Das muss irgendwann auf den Umgang mit Menschen abfärben.</li>
<li>Ich kann jetzt besser nachvollziehen, wie die Musks und Thiels denken.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Setzt Vibe Coding eine alte Tradition fort?</title>
      <link>https://niklas-deutschmann.de/posts/20250816-vibe-coding-alte-tradition/</link>
      <pubDate>Thu, 14 Aug 2025 10:45:00 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-vibe-coding-alte-tradition/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://mastodon.social/@mschfr&#34;&gt;@mschfr&lt;/a&gt; am &lt;a href=&#34;https://mastodon.social/@mschfr/115022500442848113&#34;&gt;13.08.2025&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Das wirklich coole an KI ist, dass es einem selbst eine neue Welt des wirklichen Personal Computings ermöglicht: Ich kann so mittel programmieren, aber definitiv nicht professionell und habe auch keine riesige Erfahrung im täglichen Umgang. Aber ich hab jetzt einfach so nach Feierabend, weil ich eine Idee hatte, ein Firefox-Addon gebastelt ohne vorher Ahnung gehabt zu haben, wie das geht.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Wäre das dann vielleicht so etwas wie Basic? Basic war für viele auf dem Commodore 64, Amiga oder unter MS-DOS die erste Programmiersprache. Mit Visual Basic konnte man mit relativ geringen Programmierkenntnissen kleine Desktop-Anwendungen für Windows entwickeln, die von Profis immer etwas belächelt wurden.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://mastodon.social/@mschfr">@mschfr</a> am <a href="https://mastodon.social/@mschfr/115022500442848113">13.08.2025</a>:</p>
<blockquote>
<p>Das wirklich coole an KI ist, dass es einem selbst eine neue Welt des wirklichen Personal Computings ermöglicht: Ich kann so mittel programmieren, aber definitiv nicht professionell und habe auch keine riesige Erfahrung im täglichen Umgang. Aber ich hab jetzt einfach so nach Feierabend, weil ich eine Idee hatte, ein Firefox-Addon gebastelt ohne vorher Ahnung gehabt zu haben, wie das geht.</p></blockquote>
<p>Wäre das dann vielleicht so etwas wie Basic? Basic war für viele auf dem Commodore 64, Amiga oder unter MS-DOS die erste Programmiersprache. Mit Visual Basic konnte man mit relativ geringen Programmierkenntnissen kleine Desktop-Anwendungen für Windows entwickeln, die von Profis immer etwas belächelt wurden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Sind LLMs wie Spielautomaten?</title>
      <link>https://niklas-deutschmann.de/posts/20250816-sind-llms-wie-spielautomaten/</link>
      <pubDate>Wed, 13 Aug 2025 13:21:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-sind-llms-wie-spielautomaten/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://mamot.fr/@pluralistic/115033250480201431&#34;&gt;Sehr gute Beobachtung vom großen Cory Doctorow&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;LLMs are like slot machines, in that an incorrect answer (the slot machine eating your dollar) is unremarkable, while the LLM solving a problem (a jackpot) is amazing, and the latter stands out in your memory, causing you to overestimate the reliability of LLMs.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Der &lt;a href=&#34;https://blog.glyph.im/2025/08/futzing-fraction.html&#34;&gt;Blogbeitrag&lt;/a&gt;, auf den er sich bezieht, ist auch lesenswert.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://mamot.fr/@pluralistic/115033250480201431">Sehr gute Beobachtung vom großen Cory Doctorow</a></p>
<blockquote>
<p>LLMs are like slot machines, in that an incorrect answer (the slot machine eating your dollar) is unremarkable, while the LLM solving a problem (a jackpot) is amazing, and the latter stands out in your memory, causing you to overestimate the reliability of LLMs.</p></blockquote>
<p>Der <a href="https://blog.glyph.im/2025/08/futzing-fraction.html">Blogbeitrag</a>, auf den er sich bezieht, ist auch lesenswert.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Braucht Nürnberg eine Magnetschwebebahn?</title>
      <link>https://niklas-deutschmann.de/posts/20250816-braucht-nuernberg-eine-magnetschwebebahn/</link>
      <pubDate>Tue, 12 Aug 2025 13:21:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-braucht-nuernberg-eine-magnetschwebebahn/</guid>
      <description>&lt;p&gt;Die kurze Antwort: &lt;strong&gt;Nein&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Die etwas längere Antwort: Auch wenn Markus Söder es immer wieder suggeriert - die Magnetschwebebahn ist kein besonders neues oder revolutionäres Verkehrsmittel. Schon Ende der 80er Jahre war in Berlin die &lt;a href=&#34;https://de.wikipedia.org/wiki/M-Bahn&#34;&gt;M-Bahn&lt;/a&gt; am damaligen Niemandsland am Potsdamer Platz unterwegs. Diese wurde aber nach der Wiedervereinigung sehr schnell abgerissen, da sie der Wiederherstellung der durch die Mauer unterbrochenen Strecke der U2 im Weg stand. Der &lt;a href=&#34;de.wikipedia.org/wiki/Transrapid_Shanghai&#34;&gt;Transrapid Shanghai&lt;/a&gt; fährt auch schon seit 2004 zwischen dem Flughafen und&amp;hellip; einer Station weit außerhalb der Innenstadt, was auch die eher bescheidenen Fahrgastzahlen begründet.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die kurze Antwort: <strong>Nein</strong></p>
<p>Die etwas längere Antwort: Auch wenn Markus Söder es immer wieder suggeriert - die Magnetschwebebahn ist kein besonders neues oder revolutionäres Verkehrsmittel. Schon Ende der 80er Jahre war in Berlin die <a href="https://de.wikipedia.org/wiki/M-Bahn">M-Bahn</a> am damaligen Niemandsland am Potsdamer Platz unterwegs. Diese wurde aber nach der Wiedervereinigung sehr schnell abgerissen, da sie der Wiederherstellung der durch die Mauer unterbrochenen Strecke der U2 im Weg stand. Der <a href="de.wikipedia.org/wiki/Transrapid_Shanghai">Transrapid Shanghai</a> fährt auch schon seit 2004 zwischen dem Flughafen und&hellip; einer Station weit außerhalb der Innenstadt, was auch die eher bescheidenen Fahrgastzahlen begründet.</p>
<p><img alt="M-Bahn Berlin, 1990" loading="lazy" src="/images/m-bahn.jpg">
M-Bahn Berlin, 1990 (Quelle: Von Bassaar - Eigenes Werk, CC BY-SA 3.0, <a href="https://commons.wikimedia.org/w/index.php?curid=12726621">https://commons.wikimedia.org/w/index.php?curid=12726621</a>)</p>
<p>Eine Magnetschwebebahn ist vor allem eine Insellösung, die einen Umsteigezwang für die Fahrgäste schafft. Das Verkehrsunternehmen muss ein weiteres System beherrschen und warten, braucht eine zusätzliche Werkstatt usw. In einer Stadt von der Größe Nürnbergs fällt das noch mal mehr ins Gewicht. Schon für eine U-Bahn ist Nürnberg eigentlich zu klein - wahrscheinlich wäre man besser gefahren, wenn man in den 1970er Jahren das Straßenbahnnetz in voller Länge beibehalten und nur wenige Abschnitte (z.B. in der Innenstadt) unter die Erde verlegt hätte. So wie Frankfurt, Stuttgart, Düsseldorf, Dortmund, Hannover, Bielefeld und viele andere Städte ähnlicher Größe halt auch.</p>
<p>Das Problem der Magnetschwebebahn ist auch, dass sie wie eine U-Bahn <strong>immer</strong> eine vollständig vom restlichen Verkehr abgetrennte Trasse braucht. Die Straßenbahn kann hingegen direkt auf der Straße, auf einem eigenen Gleiskörper, als Hochbahn oder im Tunnel fahren - je nachdem, was vor Ort gerade am besten ist. Ein eigener Gleiskörper kann als Rasengleis realisiert werden, was viel grüner und stadtbildschonender ist als eine kilometerlange aufgeständerte Betontrasse. Ich empfehle, sich einfach mal die Magnetschwebebahn in Nagoya (Japan) <a href="https://maps.app.goo.gl/7S2TFwWGDYTsLkds8">bei Google Street View anzuschauen</a>. Bei einem ebenerdigen Verlauf sind ihre Haltestellen auch automatisch barrierefrei.</p>
<p>Wenn Nürnberg Geld ohne Ende hätte, wäre es auch eine Option, einen zweiten Ast der U1 von der Bauernfeindstraße zum Südklinikum zu bauen. Unter den jetzigen Rahmenbedingungen ist aber eine Verlängerung der Straßenbahnlinie 7 die beste Alternative.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Foto des Tages</title>
      <link>https://niklas-deutschmann.de/posts/20250816-foto-des-tages-2025-08-11/</link>
      <pubDate>Mon, 11 Aug 2025 13:13:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-foto-des-tages-2025-08-11/</guid>
      <description>&lt;p&gt;Heute vor einem Jahr am Zürser See bei Lech in Vorarlberg.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Hochmoor mit Wollgras in der Nähe des Zürser Sees, Vorarlberg&#34; loading=&#34;lazy&#34; src=&#34;https://niklas-deutschmann.de/images/zuerser_see.jpg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute vor einem Jahr am Zürser See bei Lech in Vorarlberg.</p>
<p><img alt="Hochmoor mit Wollgras in der Nähe des Zürser Sees, Vorarlberg" loading="lazy" src="/images/zuerser_see.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>Alternativen zu Pocket</title>
      <link>https://niklas-deutschmann.de/posts/20250816-alternativen-zu-pocket/</link>
      <pubDate>Sun, 10 Aug 2025 13:21:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-alternativen-zu-pocket/</guid>
      <description>&lt;p&gt;Den Bookmarking-Dienst &lt;strong&gt;Pocket&lt;/strong&gt; habe ich seit über 10 Jahren benutzt (schon, als er noch nicht in Firefox integriert war), um interessante Artikel zum später lesen zu speichern. Jetzt hat Mozilla ihn abgeschaltet.&lt;/p&gt;
&lt;p&gt;Eine gute Alternative ist &lt;a href=&#34;https://wallabag.org/&#34;&gt;Wallabag&lt;/a&gt;. Man kann die Software selbst hosten oder &lt;a href=&#34;https://wallabag.it/&#34;&gt;wallabag.it&lt;/a&gt; für 11 Euro im Jahr nutzen. Die Webanwendung sieht etwas altbacken aus und für manche Seiten kann kein Preview-Bild generiert werden, ansonsten funktioniert aber alles wie vorher.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Den Bookmarking-Dienst <strong>Pocket</strong> habe ich seit über 10 Jahren benutzt (schon, als er noch nicht in Firefox integriert war), um interessante Artikel zum später lesen zu speichern. Jetzt hat Mozilla ihn abgeschaltet.</p>
<p>Eine gute Alternative ist <a href="https://wallabag.org/">Wallabag</a>. Man kann die Software selbst hosten oder <a href="https://wallabag.it/">wallabag.it</a> für 11 Euro im Jahr nutzen. Die Webanwendung sieht etwas altbacken aus und für manche Seiten kann kein Preview-Bild generiert werden, ansonsten funktioniert aber alles wie vorher.</p>
<p><img alt="Screenshot von Wallabag" loading="lazy" src="/images/wallabag.png"></p>
<p>In den nächsten Tagen wird es einen längeren Artikel über europäische und Open-Source-Alternativen zu den Diensten der großen amerikanischen Technologiekonzerne geben - stay tuned!</p>
]]></content:encoded>
    </item>
    <item>
      <title>10 Jahre #landesverrat</title>
      <link>https://niklas-deutschmann.de/posts/20250816-zehn-jahre-landesverrat/</link>
      <pubDate>Sat, 09 Aug 2025 14:19:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-zehn-jahre-landesverrat/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://netzpolitik.org/2025/zehn-jahre-landesverrat-ein-angriff-auf-die-pressefreiheit-der-vieles-veraenderte/&#34;&gt;netzpolitik.org&lt;/a&gt; ruft die damaligen Ereignisse noch mal in Erinnerung. Hatte schon völlig vergessen, dass damals Hans-Georg Maaßen Chef des Verfassungsschutzes war.&lt;/p&gt;
&lt;p&gt;Und ich habe das T-Shirt noch.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Schwarzes T-Shirt mit dem Schriftzug „Ein Abgrund von Landesverrat! - 🌍Netzpolitik.org“&#34; loading=&#34;lazy&#34; src=&#34;https://niklas-deutschmann.de/images/landesverrat.jpg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://netzpolitik.org/2025/zehn-jahre-landesverrat-ein-angriff-auf-die-pressefreiheit-der-vieles-veraenderte/">netzpolitik.org</a> ruft die damaligen Ereignisse noch mal in Erinnerung. Hatte schon völlig vergessen, dass damals Hans-Georg Maaßen Chef des Verfassungsschutzes war.</p>
<p>Und ich habe das T-Shirt noch.</p>
<p><img alt="Schwarzes T-Shirt mit dem Schriftzug „Ein Abgrund von Landesverrat! - 🌍Netzpolitik.org“" loading="lazy" src="/images/landesverrat.jpg"></p>
]]></content:encoded>
    </item>
    <item>
      <title>Autoverfettung</title>
      <link>https://niklas-deutschmann.de/posts/20250816-autoverfettung/</link>
      <pubDate>Fri, 08 Aug 2025 17:45:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-autoverfettung/</guid>
      <description>&lt;p&gt;So schmal war ein BMW früher mal:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Altes BMW-Modell (BMW 1800) neben einem heutigen VW Touran&#34; loading=&#34;lazy&#34; src=&#34;https://niklas-deutschmann.de/images/bmw_1800.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Die „Autoverfettung“ kann man &lt;a href=&#34;https://www.carsized.com/en/&#34;&gt;hier gut für fast alle Modelle anschauen&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>So schmal war ein BMW früher mal:</p>
<p><img alt="Altes BMW-Modell (BMW 1800) neben einem heutigen VW Touran" loading="lazy" src="/images/bmw_1800.jpg"></p>
<p>Die „Autoverfettung“ kann man <a href="https://www.carsized.com/en/">hier gut für fast alle Modelle anschauen</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Foto des Tages</title>
      <link>https://niklas-deutschmann.de/posts/20250816-foto-des-tages-2025-08-07/</link>
      <pubDate>Thu, 07 Aug 2025 18:02:16 +0200</pubDate>
      <guid>https://niklas-deutschmann.de/posts/20250816-foto-des-tages-2025-08-07/</guid>
      <description>&lt;p&gt;Oldtimerstraßenbahn an der Haltestelle Nürnberg-Steinbühl - hätte ich unter der Woche gar nicht erwartet.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Oldtimerstraßenbahn an der Haltestelle Nürnberg-Steinbühl&#34; loading=&#34;lazy&#34; src=&#34;https://niklas-deutschmann.de/images/oldtimerbahn.jpg&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Oldtimerstraßenbahn an der Haltestelle Nürnberg-Steinbühl - hätte ich unter der Woche gar nicht erwartet.</p>
<p><img alt="Oldtimerstraßenbahn an der Haltestelle Nürnberg-Steinbühl" loading="lazy" src="/images/oldtimerbahn.jpg"></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
