<?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>cbrueggenolte.de</title>
    <link>https://cbrueggenolte.de/</link>
    <description>Neueste Beiträge auf cbrueggenolte.de</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-DE</language>
    <managingEditor>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</managingEditor>
    <webMaster>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</webMaster>
    <copyright>2018-2026 cbrueggenolte</copyright>
    <atom:link href="https://cbrueggenolte.de/rssall.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CLI-Tools, die ich im September gefunden habe</title>
      <link>https://cbrueggenolte.de/cli-tools-die-ich-im-september-gefunden-habe/</link>
      <pubDate>Sun, 27 Sep 2026 12:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/cli-tools-die-ich-im-september-gefunden-habe/</guid>
      <description>&lt;p&gt;Ich verbringe einen großen Teil meines Tages im Terminal.&#xA;Und wie wohl jeder, der das tut, bin ich ständig auf der Suche nach Dingen,&#xA;die mir die tägliche Arbeit ein bisschen leichter machen.&#xA;Kommandozeilen-Tools sind dafür für mich einfach unschlagbar.&lt;/p&gt;&#xA;&lt;p&gt;Manche davon nutze ich wirklich jeden Tag,&#xA;andere hole ich nur raus, wenn ich ein ganz bestimmtes Problem habe.&#xA;Hier ist meine Liste – quer durch den Gemüsegarten:&#xA;Git, Docker, Netzwerk, Daten und inzwischen auch lokale KI.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich verbringe einen großen Teil meines Tages im Terminal.
Und wie wohl jeder, der das tut, bin ich ständig auf der Suche nach Dingen,
die mir die tägliche Arbeit ein bisschen leichter machen.
Kommandozeilen-Tools sind dafür für mich einfach unschlagbar.</p>
<p>Manche davon nutze ich wirklich jeden Tag,
andere hole ich nur raus, wenn ich ein ganz bestimmtes Problem habe.
Hier ist meine Liste – quer durch den Gemüsegarten:
Git, Docker, Netzwerk, Daten und inzwischen auch lokale KI.</p>
<p>Auch bemerke ich immer mehr, dass sehr viel mehr Menschen CLI Tools bevorzugen.
Viele Entwickler und Entwicklerinnen, die ich kenne, nutzen sie täglich.
Desktop-Apps sind oft überladen und berbrauchen zviel zu viele Ressourcen.
Ausserdem kann ich eine CLI auch auf einem Server nutzen, ohne dass ich eine GUI brauche.</p>
<h2 id="1-dnsglobe">1. DNSGlobe</h2>
<p><a href="/cli-tools-die-ich-im-september-gefunden-habe/images/dnsglobe-screenshot_hu_ca1bb0517f6464ee.webp"><img class="content-image" src="/cli-tools-die-ich-im-september-gefunden-habe/images/dnsglobe-screenshot_hu_caafc395f80bf28b.webp" alt="DNSGlobe Screenshot" loading="lazy" width="1440" height="677" /></a></p>
<p><a href="https://github.com/514-labs/dnsglobe">dnsglobe</a> ist ein DNS Propagation Checker und ein DNS Lookup Tool.
Betrachte deine DNS Einträge auf einer Weltkarte in deinem Terminal.
Es sind 34 öffentliche DNS Resolver voreingestellt, die du abfragen kannst.
Abgesehen davon kannst du auch eigene Resolver hinzufügen.</p>
<p>Installieren kannst du es mit dem Befehl:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">brew install dnsglobe   <span class="c1"># Homebrew (macOS/Linux)</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">cargo install dnsglobe               <span class="c1"># from crates.io</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">yay -S dnsglobe                      <span class="c1"># from archlinux aur (compile from source)</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">yay -S dnsglobe-bin                  <span class="c1"># from archlinux aur (install prebuilt binary)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">nix run github:514-labs/dnsglobe     <span class="c1"># Nix flakes (builds from source)</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">x eget use 514-labs/dnsglobe         <span class="c1"># from (from its GitHub release)</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="c1"># or grab a prebuilt binary from the GitHub Releases page</span></span></span></code></pre></div><p>Und starten kannst du es so:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">dnsglobe                            <span class="c1"># start empty, type a domain</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">dnsglobe example.com                <span class="c1"># query immediately and watch</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">dnsglobe example.com TXT            <span class="c1"># same, starting on TXT records</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">dnsglobe --once example.com TXT     <span class="c1"># no TUI: print results, exit (for scripts)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">dnsglobe example.com --ecs 203.0.113.0/24        <span class="c1"># see the zone as that client network does</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">dnsglobe --once example.com --ecs 203.0.113.0/24,198.51.100.0/24
</span></span><span class="line"><span class="ln">7</span><span class="cl">                                    <span class="c1"># one table per subnet + a convergence summary</span></span></span></code></pre></div><p><a href="https://github.com/514-labs/dnsglobe">dnsglobe</a> - Global DNS propagation checker TUI — watch a DNS record propagate across 34 public resolvers worldwide, on a world map in your terminal</p>
<h2 id="2-oxker">2. Oxker</h2>
<p><a href="/cli-tools-die-ich-im-september-gefunden-habe/images/oxker-screenshot_hu_360e77b775e5338e.webp"><img class="content-image" src="/cli-tools-die-ich-im-september-gefunden-habe/images/oxker-screenshot_hu_5c997ed911da0f21.webp" alt="Oxker Screenshot" loading="lazy" width="1440" height="822" /></a></p>
<p>Die Verwaltung von Docker-Containern im Terminal braucht
oft mehrere Befehle, um den Überblick zu behalten.</p>
<p><a href="https://github.com/mrjackwills/oxker">Oxker</a> vereinfacht das.
Es bündelt die wichtigsten Funktionen in einer einzigen
Konsolen-App. Du kannst Container anzeigen, ihre
Ressourcennutzung prüfen, Logs ansehen und verwalten,
ohne ständig neue Befehle einzutippen.</p>
<p>Zusätzlich lassen sich Container direkt über die
Benutzeroberfläche starten, stoppen oder neu starten.
Damit entfallen ständige ID-Kopieraktionen und das Openen
mehrerer Fenster. Gerade bei der Fehlersuche ist das ein
praktischer Vorteil.</p>
<p>Wenn du Logs und Status schnell prüfen willst, ohne immer
wieder Docker-Befehle zu tippen, ist Oxker eine sehr
effiziente Lösung.</p>
<p><a href="https://github.com/mrjackwills/oxker">Oxker</a> - A simple tui to view &amp; control docker containers</p>
<h2 id="3-croc">3. Croc</h2>
<p><a href="/cli-tools-die-ich-im-september-gefunden-habe/images/croc-demo.gif"><img class="content-image" src="/cli-tools-die-ich-im-september-gefunden-habe/images/croc-demo.gif" alt="Croc Demo Gif" loading="lazy" width="800" height="450" /></a></p>
<p>Dateien zwischen zwei Computern zu senden ist nicht immer
Einfach. Manchmal braucht es SSH-Zugriff, Schlüssel,
oder Port-Weiterleitungen, bevor ein Transfer klappt.</p>
<p><a href="https://github.com/schollz/croc">Croc</a> vereinfacht das. Du kannst Dateien und Ordner direkt
vom Terminal zwischen Rechnern verschieben. Die Übertragung
ist Ende-zu-Ende verschlüsselt, unterstützt mehrere
Dateien und kann nach einer Unterbrechung fortgesetzt
werden.</p>
<p>Croc ist ideal, wenn du Dateien schnell und ohne aufwendige
Netzwerk-Konfiguration austauschen möchtest.</p>
<p><a href="https://github.com/schollz/croc">Croc</a> - Easily and securely send things from one computer to another 🐊 📦</p>
<h2 id="4-worktrunk">4. Worktrunk</h2>
<p><a href="/cli-tools-die-ich-im-september-gefunden-habe/images/worktrunk-demo.gif"><img class="content-image" src="/cli-tools-die-ich-im-september-gefunden-habe/images/worktrunk-demo.gif" alt="Worktrunk Demo" loading="lazy" width="1600" height="900" /></a></p>
<p>Worktrunk ist ein Tool zur Verwaltung von Git-Worktrees im
Terminal. Es macht es einfacher, mehrere Worktrees zu
erstellen, zwischen ihnen zu wechseln und sie zu verwalten,
wenn man parallel an verschiedenen Aufgaben arbeitet.</p>
<p>Mit Befehlen wie <code>wt switch</code>, <code>wt list</code> und <code>wt remove</code>
kannst du Worktrees schnell anlegen, wechseln, prüfen und
aufräumen. Das Tool unterstützt außerdem Hooks, Merge-
Workflows, interaktive Worktree-Navigation, gemeinsame Build-
Caches und Integrationen, mit denen du Agenten wie Claude
Code direkt aus einem Worktree starten kannst.</p>
<p><a href="https://github.com/max-sixty/worktrunk">Worktrunk</a> - Worktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows.</p>
<h2 id="5-yq">5. Yq</h2>
<p><a href="/images/yq-screenshot.png"><img class="content-image" src="images/yq-screenshot.png" alt="Yq Screenshot" loading="lazy" /></a></p>
<p>Wenn du mit YAML-Dateien im Terminal arbeitest, musst du oft
immer wieder Datei öffnen, Wert finden, ändern und dann
wieder speichern. yq macht diese kleinen Aufgaben deutlich
schneller und komfortabler direkt in der Kommandozeile.</p>
<p>Du kannst damit strukturierte Daten wie YAML, JSON, XML,
CSV und TOML einfach lesen, filtern, aktualisieren,
zusammenführen und konvertieren. yq ist besonders praktisch,
wenn du Konfigurationsdateien, Skripte oder CI/CD-Pipelines
bearbeitest und Werte schnell auslesen oder ändern willst,
ohne die Datei manuell zu editieren.</p>
<h2 id="6-gitlogue">6. Gitlogue</h2>
<p><a href="/cli-tools-die-ich-im-september-gefunden-habe/images/gitlogue-screenshot_hu_35c5ba352aaaf435.webp"><img class="content-image" src="/cli-tools-die-ich-im-september-gefunden-habe/images/gitlogue-screenshot_hu_eb23243f8e8e08b2.webp" alt="Gitlogue Screenshot" loading="lazy" width="1440" height="766" /></a></p>
<p>Das Durchsehen von Git-Protokollen und Diffs kann zwar Aufschluss über Änderungen geben,
bietet aber nicht immer ein umfassendes Verständnis der Entwicklung eines Projekts im Laufe der Zeit.
Gitlogue löst dieses Problem, indem es Ihren Commit-Verlauf in eine animierte Wiederholung umwandelt,
sodass Sie die Entwicklung Ihrer Codebasis direkt vom Terminal aus Schritt für Schritt verfolgen können.</p>
<p>Gitlogue ist besonders nützlich, wenn Sie die Entwicklung Ihres Projekts im Allgemeinen überprüfen möchten,
anstatt jeden einzelnen Commit einzeln zu untersuchen.
Es bietet einen klareren und prägnanteren Überblick über Ihren Git-Verlauf und
erleichtert so das Verständnis der Entwicklung Ihres Projekts im Laufe der Zeit.</p>
<p><a href="https://github.com/unhappychoice/gitlogue">Gitlogue</a> - A cinematic Git commit replay tool for the terminal, turning your Git history into a living, animated story.</p>
<h2 id="7-visidata">7. Visidata</h2>
<p><a href="/images/visidata-screenshot.png"><img class="content-image" src="images/visidata-screenshot.png" alt="Visidata Screenshot" loading="lazy" /></a></p>
<p>Wenn du eine CSV-Datei schnell ansehen oder filtern willst,
ist die Arbeit mit strukturierten Daten im Terminal oft
nicht besonders angenehm. Mit VisiData kannst du Datensätze
sofort direkt im Terminal erkunden und analysieren.</p>
<p>VisiData bietet eine Tabellenoberfläche mit Funktionen zum
Sortieren, Filtern, Bearbeiten und Arbeiten mit Daten. Es
erspart dir oft das Kombinieren mehrerer Tools wie <code>awk</code>,
<code>sed</code> und <code>jq</code>, wenn du einen Datensatz schnell
überprüfen willst.</p>
<p><a href="https://github.com/saulpw/visidata">VisiData</a> - A terminal spreadsheet multitool for discovering and arranging data</p>
<h2 id="8-kondo">8. Kondo</h2>
<p><a href="/cli-tools-die-ich-im-september-gefunden-habe/images/kondo-screenshot_hu_edc05db5ef670176.webp"><img class="content-image" src="/cli-tools-die-ich-im-september-gefunden-habe/images/kondo-screenshot_hu_9502ffab336b7fa0.webp" alt="Kondo Screenshot" loading="lazy" width="1440" height="867" /></a></p>
<p>Wenn du an mehreren Projekten arbeitest, können Build-Dateien,
Abhängigkeiten und generierte Dateien still und leise viel
Platz verschwenden. Ordner wie <code>node_modules</code> oder <code>build</code>
manuell zu finden, kostet Zeit.</p>
<p>Mit <a href="https://github.com/tbillington/kondo">kondo</a> kannst du
Projekte direkt aus dem Terminal aufräumen. Es scannt deine
Projekte nach unnötigen Build-Artefakten und Abhängigkeiten
und zeigt dir an, was du entfernen kannst, um Speicherplatz
freizugeben.</p>
<p>Es zeigt auch, wie viel Platz diese Dateien einnehmen, und du
kannst auswählen, was du entfernen willst. Kondo unterstützt
verschiedene Sprachen und Frameworks und ist deshalb sehr
nützlich, um alte Abhängigkeiten und Build-Dateien im Laufe
der Zeit aufzuräumen.</p>
<p>Ein Wort der Warnung: Kondo ist im nichts anderes als &ldquo;rm -rf&rdquo;.
Benutzte es mit Vorsicht. Immer ein Backup deiner Projekte haben.</p>
<p><a href="https://github.com/tbillington/kondo">kondo</a> - A command-line tool for cleaning up dependencies and build artifacts from your projects.</p>
<h2 id="9-grex">9. Grex</h2>
<p><a href="/cli-tools-die-ich-im-september-gefunden-habe/images/grex-demo.gif"><img class="content-image" src="/cli-tools-die-ich-im-september-gefunden-habe/images/grex-demo.gif" alt="Grex Demo" loading="lazy" width="1200" height="850" /></a></p>
<p>Reguläre Ausdrücke zu schreiben ist nicht immer einfach.
Man weiß oft, was man abgleichen will, braucht aber dennoch
Zeit, um das richtige Muster und die passende Syntax zu
finden.</p>
<p><a href="https://github.com/pemistahl/grex">grex</a> macht das leichter.
Du gibst ihm Beispiel-Strings, die du abgleichen willst, und
es erzeugt automatisch ein passendes Muster. So musst du die
Regex nicht selbst schreiben.</p>
<p>Das Tool unterstützt auch Unicode, inklusive Zeichen außerhalb
von einfachem ASCII. grex ist deshalb nützlich für
Eingabevalidierung, Log-Parsing, Textverarbeitung und andere
Aufgaben, bei denen Muster abgeglichen werden müssen.</p>
<p><a href="https://github.com/pemistahl/grex">Grex</a> - A command-line tool and Rust library with Python bindings for generating regular expressions from user-provided test cases.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Windows 11 Suche nach Tiny11-Installation reparieren (WebView2 Fehler)</title>
      <link>https://cbrueggenolte.de/windows-11-suche-nach-tiny11-installation-reparieren-webview2-fehler/</link>
      <pubDate>Wed, 15 Jul 2026 23:35:44 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/windows-11-suche-nach-tiny11-installation-reparieren-webview2-fehler/</guid>
      <description>&lt;p&gt;Ich habe mir mit Hilfe von Tiny11 ein Windows 11 ISO gebaut, welches&#xA;von unnötigem Ballast wie dem Microsoft Edge Browser und vielen&#xA;anderen Dingen befreit wurde.&#xA;Doch stößt man oft auf ein nerviges Problem: Die normale&#xA;Windows-Suche funktioniert plötzlich nicht mehr.&lt;/p&gt;&#xA;&lt;p&gt;Der Grund dafür war bei mir, dass durch das Fehlen des Browsers Edge&#xA;auch die &lt;strong&gt;WebView2-Komponente&lt;/strong&gt; fehlte oder fehlerhaft war.&#xA;Windows braucht WebView2 aber zwingend, um bestimmte Inhalte&#xA;(wie eben die Websuche im Startmenü) anzuzeigen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe mir mit Hilfe von Tiny11 ein Windows 11 ISO gebaut, welches
von unnötigem Ballast wie dem Microsoft Edge Browser und vielen
anderen Dingen befreit wurde.
Doch stößt man oft auf ein nerviges Problem: Die normale
Windows-Suche funktioniert plötzlich nicht mehr.</p>
<p>Der Grund dafür war bei mir, dass durch das Fehlen des Browsers Edge
auch die <strong>WebView2-Komponente</strong> fehlte oder fehlerhaft war.
Windows braucht WebView2 aber zwingend, um bestimmte Inhalte
(wie eben die Websuche im Startmenü) anzuzeigen.</p>
<p>Das zweite Problem: Wenn man versucht, WebView2 über die normalen
Windows-Einstellungen zu reparieren oder zu löschen, passiert gar
nichts.
Auch eine manuelle Neuinstallation funktioniert nicht, weil die
Komponente laut Windows angeblich schon installiert ist.</p>
<p>Hier ist die einfache Anleitung, wie du WebView2 komplett löschst
und sauber neu installierst – und zwar ganz ohne die kaputte
Windows-Suche nutzen zu müssen.</p>
<h2 id="schritt-1-schlüssel-aus-der-registry-entfernen">Schritt 1: Schlüssel aus der Registry entfernen</h2>
<p>Damit wir das Programm löschen dürfen, müssen wir zuerst einen
Sperr-Schlüssel in der Windows-Registry entfernen.</p>
<ol>
<li>Drücke die Tastenkombination <strong>Win + R</strong>, tippe <code>regedit</code> ein
und bestätige mit <strong>Enter</strong> (oder Klick auf OK).</li>
<li>Navigiere auf der linken Seite zu folgendem Pfad:
<code>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\</code></li>
<li>Lösche dort auf der linken Seite den kompletten „Ordner“
(Schlüssel) mit dem Namen:
<code>{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}</code></li>
</ol>
<h2 id="schritt-2-webview2-deinstallieren">Schritt 2: WebView2 deinstallieren</h2>
<p>Nachdem die Sperre in der Registry weg ist, können wir die alte
(oder fehlerhafte) Installation entfernen.
Da unsere Windows-Suche kaputt ist, starten wir das Terminal über
das versteckte Power-Menü.</p>
<ol>
<li>Drücke <strong>Win + X</strong> auf deiner Tastatur (oder mache einen
Rechtsklick auf den Start-Button).</li>
<li>Klicke im aufklappenden Menü auf <strong>Terminal (Admin)</strong> oder
<strong>Windows PowerShell (Administrator)</strong>.
Bestätige die Sicherheitsabfrage mit &ldquo;Ja&rdquo;.</li>
<li>Gib nun den folgenden Befehl ein, um in das richtige Verzeichnis
zu wechseln, und drücke Enter:</li>
</ol>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">cd </span><span class="s2">&#34;C:\Program Files (x86)\Microsoft\EdgeWebView\Application\*\Installer&#34;</span></span></span></code></pre></div><p><em>(Hinweis: Das Sternchen <code>*</code> ist praktisch, da es automatisch den
Ordner mit der aktuellen Versionsnummer findet.)</em></p>
<ol start="4">
<li>Starte danach die Deinstallation mit diesem Befehl und drücke
Enter:</li>
</ol>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">.\</span><span class="n">setup</span><span class="p">.</span><span class="py">exe</span> <span class="p">-</span><span class="n">-uninstall</span> <span class="p">-</span><span class="n">-msedgewebview</span> <span class="p">-</span><span class="n">-system-level</span> <span class="p">-</span><span class="n">-verbose-logging</span> <span class="p">-</span><span class="n">-force-uninstall</span></span></span></code></pre></div><p>Das Programm wird jetzt im Hintergrund restlos deinstalliert.</p>
<h2 id="schritt-3-restliche-dateien-aufräumen">Schritt 3: Restliche Dateien aufräumen</h2>
<p>Um ganz sicherzugehen, dass für die Neuinstallation ein komplett
sauberes System bereitsteht, löschen wir noch die übrig gebliebenen
Ordner.</p>
<p>Kopiere diese beiden Befehle nacheinander in dein noch offenes
Terminal-Fenster und bestätige jeweils mit Enter:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="ln">1</span><span class="cl"><span class="n">cmd</span> <span class="p">/</span><span class="n">c</span> <span class="nb">rmdir </span><span class="p">/</span><span class="n">s</span> <span class="p">/</span><span class="n">q</span> <span class="s2">&#34;C:\Program Files (x86)\Microsoft\EdgeWebView&#34;</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">cmd</span> <span class="p">/</span><span class="n">c</span> <span class="nb">rmdir </span><span class="p">/</span><span class="n">s</span> <span class="p">/</span><span class="n">q</span> <span class="s2">&#34;</span><span class="nv">$env:localappdata</span><span class="s2">\Microsoft\EdgeWebView&#34;</span></span></span></code></pre></div><p><em>(Da wir uns in der PowerShell befinden, nutzen wir <code>cmd /c</code> davor,
damit der Löschbefehl sauber ausgeführt wird).</em></p>
<p>Du kannst das blaue/schwarze Fenster nun schließen.
Dein System ist jetzt komplett frei von WebView2-Resten.</p>
<h2 id="schritt-4-webview2-sauber-neu-installieren">Schritt 4: WebView2 sauber neu installieren</h2>
<p>Zum Schluss müssen wir die Komponente nur noch frisch installieren,
damit die Windows-Suche wieder funktioniert.</p>
<ol>
<li>Öffne deinen verbliebenen Browser und gehe auf die offizielle
Download-Seite von Microsoft: <a href="https://developer.microsoft.com/en-us/microsoft-edge/webview2/?ch=1&amp;form=MA13LH&amp;cs=2816712725">Microsoft Edge WebView2
herunterladen</a>.</li>
<li>Scrolle etwas nach unten zum Bereich <strong>&ldquo;Evergreen Standalone
Installer&rdquo;</strong>.
(Nimm unbedingt diesen Standalone-Installer, der funktioniert bei
modifizierten Systemen wie Tiny11 deutlich zuverlässiger).</li>
<li>Klicke auf den Button <strong>x64</strong> (für 64-Bit Systeme), stimme den
Bedingungen zu und lade die Datei herunter.</li>
<li>Mache einen Rechtsklick auf die heruntergeladene Datei in deinem
Download-Ordner und wähle <strong>&ldquo;Als Administrator ausführen&rdquo;</strong>.</li>
</ol>
<p>Sobald die Installation durchgelaufen ist, starte deinen Computer
einmal neu.
Danach sollte die Windows-Suche sofort wieder wie gewohnt reagieren!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Jan AI: Meine Erfahrungen mit der lokalen LLM-Desktop-App nach ein paar Monaten</title>
      <link>https://cbrueggenolte.de/jan-ai/</link>
      <pubDate>Sun, 28 Jun 2026 12:18:36 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/jan-ai/</guid>
      <description>&lt;p&gt;Ich nutze &lt;a href=&#34;https://github.com/janhq/jan&#34;&gt;Jan&lt;/a&gt; jetzt seit ein paar Monaten auf meinem Rechner und wollte mal ein kurzes Fazit ziehen. Wer mein Setup kennt, weiß: Ich behalte gerne die Kontrolle über meine Daten und setze wo immer möglich auf lokale KI-Lösungen. Jan ist genau dafür gebaut – eine Open-Source-Alternative (AGPLv3) zu den großen Cloud-Anbietern, die komplett offline läuft.&lt;/p&gt;&#xA;&lt;p&gt;Besonders eine Sache habe ich in der letzten Zeit im Arbeitsalltag extrem zu schätzen gelernt: die &lt;strong&gt;Assistenten-Funktion&lt;/strong&gt;. Die Möglichkeit, sich spezifische Agenten für unterschiedliche Aufgabenbereiche (z. B. gezieltes Code-Review, Brainstorming oder als Refactoring-Helfer) mit eigenen System-Prompts vorzukonfigurieren, beschleunigt den Workflow enorm.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich nutze <a href="https://github.com/janhq/jan">Jan</a> jetzt seit ein paar Monaten auf meinem Rechner und wollte mal ein kurzes Fazit ziehen. Wer mein Setup kennt, weiß: Ich behalte gerne die Kontrolle über meine Daten und setze wo immer möglich auf lokale KI-Lösungen. Jan ist genau dafür gebaut – eine Open-Source-Alternative (AGPLv3) zu den großen Cloud-Anbietern, die komplett offline läuft.</p>
<p>Besonders eine Sache habe ich in der letzten Zeit im Arbeitsalltag extrem zu schätzen gelernt: die <strong>Assistenten-Funktion</strong>. Die Möglichkeit, sich spezifische Agenten für unterschiedliche Aufgabenbereiche (z. B. gezieltes Code-Review, Brainstorming oder als Refactoring-Helfer) mit eigenen System-Prompts vorzukonfigurieren, beschleunigt den Workflow enorm.</p>
<p>Anders als LM Studio (Closed-Source) oder Ollama (klarer Fokus auf CLI) bringt Jan eine aufgeräumte grafische Oberfläche mit echter Open-Source-Transparenz und einer eigenen Plugin-Architektur mit.</p>
<h4 id="warum-jan-ai-aktuell-in-meinem-werkzeugkasten-liegt">Warum Jan AI aktuell in meinem Werkzeugkasten liegt</h4>
<ul>
<li><strong>Offline-First:</strong> Einmal das Modell (z. B. als GGUF) geladen, bleibt der gesamte Traffic auf meiner Maschine. Keine Telemetrie, keine Überraschungen.</li>
<li><strong>Die Assistenten:</strong> Mein persönliches Highlight. Verschiedene &ldquo;Personas&rdquo; lassen sich sauber trennen und per Klick umschalten, ohne dass ich jedes Mal den Kontext neu definieren muss.</li>
<li><strong>Ressourcenschonend:</strong> Basiert auf <code>llama.cpp</code> und greift direkt auf die Hardware-Beschleunigung (Metal, CUDA, Vulkan) zu.</li>
<li><strong>Nahtlose Remote-Provider:</strong> Auch wenn mein Ansatz ganz klar &ldquo;Local First&rdquo; ist, gibt es komplexe Aufgaben, für die man doch mal auf die großen Modelle der KI-Unternehmen zurückgreifen muss. Jan macht das extrem flexibel: Neben Anbietern wie Gemini oder LM Studio f0rge lassen sich unzählige weitere Remote-APIs wie OpenAI, Anthropic, Mistral, Groq, xAI, MLX, Azure, Hugging Face, NVIDIA NIM oder OpenRouter zuschalten (wie auch in <code>image_1567fe.png</code> zu sehen). Das Geniale daran: Man bleibt in derselben UI und nutzt seine perfekt konfigurierten lokalen Assistenten einfach temporär mit einem Cloud-Modell.</li>
</ul>
<h4 id="der-local-api-server">Der Local API Server</h4>
<p>Für Skripte und kleine Automatisierungen bringt Jan einen echten Vorteil mit: einen lokalen, OpenAI-kompatiblen API-Endpunkt.</p>
<ol>
<li>In den Settings den <strong>Local API Server</strong> aktivieren.</li>
<li>Der Dienst lauscht standardmäßig auf <code>http://localhost:1337</code>.</li>
</ol>
<p>Das lässt sich ganz simpel testen:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">curl http://localhost:1337/v1/chat/completions <span class="se">\
</span></span></span><span class="line"><span class="ln">2</span><span class="cl">  -H <span class="s2">&#34;Content-Type: application/json&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="ln">3</span><span class="cl">  -d <span class="s1">&#39;{
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="s1">    &#34;model&#34;: &#34;your-model-id&#34;,
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="s1">    &#34;messages&#34;: [{&#34;role&#34;: &#34;user&#34;, &#34;content&#34;: &#34;Hello&#34;}]
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="s1">  }&#39;</span></span></span></code></pre></div><p>Das funktioniert perfekt als lokales Drop-in-Replacement für IDE-Plugins oder Kommandozeilen-Tools, die eigentlich nach einem OpenAI-Key verlangen. Man verbiegt einfach die Base-URL auf localhost.</p>
<h4 id="jan-vs-lm-studio-vs-ollama">Jan vs. LM Studio vs. Ollama</h4>
<p>Je nach Einsatzzweck haben alle Tools ihre Berechtigung. Hier meine aktuelle Einordnung:</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Feature</th>
					<th style="text-align: left">Jan</th>
					<th style="text-align: left">LM Studio</th>
					<th style="text-align: left">Ollama</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>Lizenz</strong></td>
					<td style="text-align: left">AGPLv3 (Open-Source)</td>
					<td style="text-align: left">Proprietär (Freeware)</td>
					<td style="text-align: left">MIT (Open-Source)</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Fokus</strong></td>
					<td style="text-align: left">Desktop GUI, Assistenten, Offenheit</td>
					<td style="text-align: left">Desktop GUI, schnelle Modell-Tests</td>
					<td style="text-align: left">CLI, API-Serving im Cluster</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Extensions</strong></td>
					<td style="text-align: left">Ja</td>
					<td style="text-align: left">Ja</td>
					<td style="text-align: left">Nein</td>
			</tr>
	</tbody>
</table>
<h4 id="mein-fazit">Mein Fazit</h4>
<p>Wer primär schnelle, leichtgewichtige API-Endpunkte für Skripte oder zentrale Deployments sucht, ist mit Ollama nach wie vor gut bedient. Würde ich jedoch in 2026 immer direkt zu llama.cpp greifen weil es einfach flexibler ist. Für den Desktop-Einsatz als täglicher Begleiter hat Jan bei mir mittlerweile aber einen festen Platz – gerade wegen der sauberen Open-Source-Natur, der starken Assistenten-Verwaltung und der Flexibilität, bei Bedarf unkompliziert die großen Cloud-Modelle einzubinden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Das Token-Dilemma: Warum HTML für technische Agenten-Specs oft Overkill ist</title>
      <link>https://cbrueggenolte.de/das-token-dilemma-warum-html-fuer-technische-agenten-specs-oft-overkill-ist/</link>
      <pubDate>Sat, 23 May 2026 11:12:19 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/das-token-dilemma-warum-html-fuer-technische-agenten-specs-oft-overkill-ist/</guid>
      <description>&lt;p&gt;&lt;em&gt;Ein pragmatischer Reality-Check zum aktuellen &amp;ldquo;Effectiveness of HTML&amp;rdquo;-Trend aus Sicht der Pipeline-Effizienz und Kontext-Optimierung.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;In der AI-Engineering-Welt wird aktuell viel darüber diskutiert, wie überraschend effektiv das Generieren und Nutzen von nativem HTML im Umgang mit LLMs sein kann. Anthropic hat dazu vor Kurzem einen interessanten Blog-Post veröffentlicht: &lt;a href=&#34;https://claude.com/blog/using-claude-code-the-unreasonable-effectiveness-of-html&#34;&gt;Using Claude Code: The unreasonable effectiveness of HTML&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ich nutze in meiner lokalen Umgebung selbst einen kleinen LLM-gestützten &lt;strong&gt;PDF Intelligence &amp;amp; Renaming Agent&lt;/strong&gt;, um Scans nach dem Einlesen einen Dateinamen zu geben, der meiner bevorzugten Wahl entspricht. Das funktioniert hervorragend.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><em>Ein pragmatischer Reality-Check zum aktuellen &ldquo;Effectiveness of HTML&rdquo;-Trend aus Sicht der Pipeline-Effizienz und Kontext-Optimierung.</em></p>
<hr>
<p>In der AI-Engineering-Welt wird aktuell viel darüber diskutiert, wie überraschend effektiv das Generieren und Nutzen von nativem HTML im Umgang mit LLMs sein kann. Anthropic hat dazu vor Kurzem einen interessanten Blog-Post veröffentlicht: <a href="https://claude.com/blog/using-claude-code-the-unreasonable-effectiveness-of-html">Using Claude Code: The unreasonable effectiveness of HTML</a>.</p>
<p>Ich nutze in meiner lokalen Umgebung selbst einen kleinen LLM-gestützten <strong>PDF Intelligence &amp; Renaming Agent</strong>, um Scans nach dem Einlesen einen Dateinamen zu geben, der meiner bevorzugten Wahl entspricht. Das funktioniert hervorragend.</p>
<p>Aus Neugier habe ich dann zwei aktuelle Frontier-Modelle gebeten, meine schlanke Markdown-Spezifikation (<code>AGENTS.md</code>) in ein hochgradig durchgestyltes HTML-Dokument zu übersetzen – so, wie es in dem Blogpost vorgeschlagen wird. Das optische Ergebnis ist bei beiden zweifellos schick. Aber als DevOps- und Software-Engineer schaut man eben auch auf die Metriken unter der Haube. Und die sprechen eine ganz andere Sprache.</p>
<hr>
<h2 id="der-nackte-zahlenvergleich-markdown-vs-html">Der nackte Zahlenvergleich: Markdown vs. HTML</h2>
<p>Schauen wir uns an, was passiert, wenn man identische logische Anweisungen von Markdown in ein modernes HTML-Skelett gießt. Ich habe dafür zwei Generierungen durchgeführt: einmal mit <strong>Google Gemini</strong> (kompakteres Output, Print-CSS-Fokus) und einmal mit <strong>Claude Sonnet</strong> (vollständiges interaktives Layout mit aufklappbaren Sektionen, CSS-Grid, Animationen).</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Metrik</th>
					<th style="text-align: left">Original (<code>AGENTS.md</code>)</th>
					<th style="text-align: left">Gemini HTML</th>
					<th style="text-align: left">Claude Sonnet HTML</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>Zeichen</strong></td>
					<td style="text-align: left">3.648</td>
					<td style="text-align: left">10.181</td>
					<td style="text-align: left">19.365</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Wörter</strong></td>
					<td style="text-align: left">391</td>
					<td style="text-align: left">746</td>
					<td style="text-align: left">~1.500</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Geschätzte Tokens</strong></td>
					<td style="text-align: left"><strong>~490–960</strong></td>
					<td style="text-align: left"><strong>~2.000–2.200</strong></td>
					<td style="text-align: left"><strong>~5.100</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Faktor ggü. Markdown</strong></td>
					<td style="text-align: left">1×</td>
					<td style="text-align: left"><strong>~4×</strong></td>
					<td style="text-align: left"><strong>~5,3×</strong></td>
			</tr>
	</tbody>
</table>
<p><em>Hinweis zur Token-Schätzung: Die GPT-4o-Zahlen (Gemini-Spalte) basieren auf dem OpenAI-Tokenizer; die Claude-Schätzung auf ~3,8 Zeichen/Token (claude-sonnet-4-6).</em></p>
<h3 id="warum-explodiert-der-token-count-so-massiv">Warum explodiert der Token-Count so massiv?</h3>
<p>Die zugrundeliegende Programmlogik, die Systemgrenzen und die Verzeichnisstrukturen sind identisch geblieben. Der Mehrverbrauch resultiert ausschließlich aus syntaktischem Overhead: Inline-CSS-Klassen, verschachtelte <code>&lt;div&gt;</code>- und <code>&lt;table&gt;</code>-Strukturen, CSS-Variablen, JavaScript für Interaktionen und HTML-Entities wie <code>&amp;rarr;</code> oder <code>&amp;bull;</code>. Das alles landet vollständig im Kontextfenster – kein Modell kann da &ldquo;wegschauen&rdquo;.</p>
<p>Je ambitionierter das visuelle Design, desto schlimmer die Bilanz. Die Claude-Variante, die wirklich hübsch geworden ist (dunkles Terminal-Theme, aufklappbare Phasen, farbcodierte Blöcke), kostet über <strong>5× so viele Tokens</strong> wie das Original.</p>
<hr>
<h2 id="der-funktionale-blueprint-des-agenten">Der funktionale Blueprint des Agenten</h2>
<p>Damit wir vom selben Inhalt sprechen, hier die Kurzfassung dessen, was die Spezifikation regelt:</p>
<ul>
<li><strong>Zweck:</strong> Nimmt PDFs aus <code>new/</code>, jagt sie durch ein Python-OCR-Skript (<code>pdf-extract.py</code>), liest die Extraktion aus einem Buffer <code>output.txt</code> und generiert ein finales, sicheres Batch-Skript (<code>rename.sh</code> oder <code>rename.ps1</code>).</li>
<li><strong>Sicherheitsgrenze:</strong> Der Agent darf niemals selbst Dateien verschieben oder löschen, sondern schreibt ausschließlich idempotente Befehle (wie <code>mv -n</code>) in das Skript.</li>
<li><strong>Naming-Schema:</strong> <code>yyyy-mm-dd--[category]--[sender]--[subject].pdf</code> (Strict Lowercase, Kebab-Case, Umlaut-Sanitizing).</li>
<li><strong>Klassifizierung:</strong> Striktes Mapping auf elf vordefinierte Kategorien (z. B. <code>amt-behoerde</code>, <code>arbeitgeber</code>, <code>haendler-shop</code>, <code>versicherungen</code>).</li>
</ul>
<hr>
<h2 id="mein-fazit-markdown-bleibt-king-im-core-engineering">Mein Fazit: Markdown bleibt King im Core-Engineering</h2>
<p>Versteht mich nicht falsch: Man <em>könnte</em> das CSS auslagern, wenn man solche UI-Strukturen standardisiert und häufiger abruft. Aber warum sollten wir das im Entwicklungsalltag überhaupt erzwingen?</p>
<p>Heutzutage schickt doch niemand mehr lose, rohe Markdown-Dateien per E-Mail oder Chat durch die Gegend. Wir arbeiten in Git-Ökosystemen. Sobald du einen Link zu einer <code>.md</code>-Datei in GitHub, GitLab oder Codeberg teilst, übernimmt das Web-Interface das saubere Rendering für das menschliche Auge – ganz ohne eine einzige Zeile mitgeschlepptes CSS.</p>
<p>Wenn dieser Prompt oder diese Dokumentation nun Teil des Kontextfensters eines AI-Agenten wird (sei es lokal via Ollama/vLLM oder über externe APIs), zahlen wir bei HTML einen <strong>400–430% Token-Aufschlag</strong> für reines visuelles Lametta, das die LLM-Logik kein bisschen verbessert. Das ist kein akademisches Detail: Bei langen Agentenläufen mit vielen eingelesenen Dateien summiert sich das direkt in höhere Kosten und kürzere effektive Kontextfenster.</p>
<p>Der Thariq-Blogpost hat übrigens durchaus seinen Punkt – aber er beschreibt primär einen <strong>Output</strong>-Workflow: Claude Code <em>erzeugt</em> HTML-Berichte, die Menschen lesen. Für diesen Anwendungsfall ist HTML tatsächlich überlegen. Das Problem entsteht, wenn man HTML auch als <strong>Input</strong> für Agenten einsetzt, also als Systemkontext, Spec oder Instruktionsdatei. Da dreht sich der Vorteil um.</p>
<p><strong>Mein Fazit für schlanke Dokumentation:</strong> Für menschliche Interfaces im Browser ist HTML nett; im Herzstück meiner/unserer Engineering- und Automatisierungsumgebungen ist GitHub-Flavored-Markdown nach wie vor das ungeschlagene Optimum aus Lesbarkeit, Versionierbarkeit und Token-Effizienz.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Forgejo SSH hinter UniFi Gateway Ultra &amp; Double-NAT einrichten</title>
      <link>https://cbrueggenolte.de/forgejo-ssh-hinter-unifi-gateway-ultra-double-nat-einrichten/</link>
      <pubDate>Tue, 05 May 2026 11:28:38 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/forgejo-ssh-hinter-unifi-gateway-ultra-double-nat-einrichten/</guid>
      <description>&lt;p&gt;Wer Forgejo (oder Gitea) intern betreibt, steht oft vor der Wahl: Bequemes &lt;strong&gt;SSH&lt;/strong&gt; oder universelles &lt;strong&gt;HTTPS&lt;/strong&gt;? Während HTTPS über den Nginx Proxy Manager (NPM) leicht zu handhaben ist, bietet SSH via Public-Keys mehr Komfort für Entwickler.&lt;/p&gt;&#xA;&lt;p&gt;In einem &lt;strong&gt;Double-NAT-Setup&lt;/strong&gt; (Router -&amp;gt; UniFi Gateway Ultra -&amp;gt; Forgejo) müssen die Ports jedoch präzise kaskadiert werden.&lt;/p&gt;&#xA;&lt;h3 id=&#34;das-setup&#34;&gt;Das Setup&lt;/h3&gt;&#xA;&lt;p&gt;Der Datenfluss folgt dieser Kette, um den internen Forgejo-SSH-Dienst sicher nach außen zu führen:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Externer Router:&lt;/strong&gt; Leitet Port &lt;code&gt;33022&lt;/code&gt; (Public) an die WAN-IP des UniFi Gateways weiter.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;UniFi Gateway Ultra:&lt;/strong&gt; Nimmt die Anfrage auf Port &lt;code&gt;33022 &lt;/code&gt; entgegen und leitet sie an die interne Server-IP von Forgejo (z.B. &lt;code&gt;192.168.1.201&lt;/code&gt;) weiter.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Forgejo Instanz:&lt;/strong&gt; Nutzt den internen SSH-Server, konfiguriert auf Port &lt;code&gt;33022&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;die-lösung-für-verbindungsprobleme&#34;&gt;Die Lösung für Verbindungsprobleme&lt;/h3&gt;&#xA;&lt;p&gt;Oft scheitert die Verbindung am Standard-Port 22. Die Lösung: Den internen Forgejo-SSH-Dienst explizit auf den Zielport umstellen (z.B. &lt;code&gt;2222&lt;/code&gt;), damit die Port-Weiterleitung der Firewall direkt auf den lauschenden Dienst trifft.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Wer Forgejo (oder Gitea) intern betreibt, steht oft vor der Wahl: Bequemes <strong>SSH</strong> oder universelles <strong>HTTPS</strong>? Während HTTPS über den Nginx Proxy Manager (NPM) leicht zu handhaben ist, bietet SSH via Public-Keys mehr Komfort für Entwickler.</p>
<p>In einem <strong>Double-NAT-Setup</strong> (Router -&gt; UniFi Gateway Ultra -&gt; Forgejo) müssen die Ports jedoch präzise kaskadiert werden.</p>
<h3 id="das-setup">Das Setup</h3>
<p>Der Datenfluss folgt dieser Kette, um den internen Forgejo-SSH-Dienst sicher nach außen zu führen:</p>
<ol>
<li><strong>Externer Router:</strong> Leitet Port <code>33022</code> (Public) an die WAN-IP des UniFi Gateways weiter.</li>
<li><strong>UniFi Gateway Ultra:</strong> Nimmt die Anfrage auf Port <code>33022 </code> entgegen und leitet sie an die interne Server-IP von Forgejo (z.B. <code>192.168.1.201</code>) weiter.</li>
<li><strong>Forgejo Instanz:</strong> Nutzt den internen SSH-Server, konfiguriert auf Port <code>33022</code>.</li>
</ol>
<h3 id="die-lösung-für-verbindungsprobleme">Die Lösung für Verbindungsprobleme</h3>
<p>Oft scheitert die Verbindung am Standard-Port 22. Die Lösung: Den internen Forgejo-SSH-Dienst explizit auf den Zielport umstellen (z.B. <code>2222</code>), damit die Port-Weiterleitung der Firewall direkt auf den lauschenden Dienst trifft.</p>
<h3 id="wichtige-konfiguration-appini">Wichtige Konfiguration (<code>app.ini</code>)</h3>
<p>Damit die Links in der Weboberfläche stimmen, muss die Forgejo-Konfiguration angepasst werden:</p>
<ul>
<li><code>SSH_LISTEN_PORT = 33022</code> (Worauf der Dienst lauscht)</li>
<li><code>SSH_PORT = 33022</code> (Was der User von außen eingeben muss)</li>
<li><code>SSH_DOMAIN = deine.domain.de</code></li>
</ul>
<h3 id="client-tipp-ssh-config">Client-Tipp: SSH Config</h3>
<p>Um nicht jedes Mal den Port angeben zu müssen, hilft ein Eintrag in der lokalen <code>~/.ssh/config</code>:</p>





<pre tabindex="0"><code class="language-ssh" data-lang="ssh">Host mein-git
    HostName deine.domain.de
    Port 33022
    User git</code></pre><p>Ein einfaches <code>git clone ssh://git@deine.domain.de:33022/user/repo.git</code> genügt ab jetzt.</p>
<p><strong>Fazit:</strong> Durch die Trennung von Web-Traffic (via NPM auf 443) und SSH-Traffic (via Port-Forwarding auf 33022) erhält man ein performantes und sauberes Self-Hosting-Setup.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Fix Nextcloud Updates</title>
      <link>https://cbrueggenolte.de/fix-nextcloud-updates/</link>
      <pubDate>Sat, 11 Apr 2026 20:03:05 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/fix-nextcloud-updates/</guid>
      <description>&lt;p&gt;Ein Nextcloud Update funktioniert manchmal nicht so wie es soll. Denn wenn im Webinterface das nicht funktioniert, dann braucht es ein wenig Hilfe über die Kommandozeile.&lt;/p&gt;&#xA;&lt;p&gt;Dort wechselt man in das Verzeichnis seiner Nextcloud-Installation und kann mit &lt;code&gt;sudo -u www-data php occ app:update --all&lt;/code&gt; den Update-Vorgang starten. Wenn das dann aber auch hier - siehe Bild - so aussieht wie im Webinterface, dann gibt es Abhilfe.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/fix-nextcloud-updates/nextcloud-update-falsch_hu_ea0e3444ce3d2513.webp&#34;&gt;![nextcloud-update-falsch](nextcloud-update-falsch.png &amp;ldquo;nextcloud-update-falsch)&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mit dem Befehl&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ein Nextcloud Update funktioniert manchmal nicht so wie es soll. Denn wenn im Webinterface das nicht funktioniert, dann braucht es ein wenig Hilfe über die Kommandozeile.</p>
<p>Dort wechselt man in das Verzeichnis seiner Nextcloud-Installation und kann mit <code>sudo -u www-data php occ app:update --all</code> den Update-Vorgang starten. Wenn das dann aber auch hier - siehe Bild - so aussieht wie im Webinterface, dann gibt es Abhilfe.</p>
<p><a href="/fix-nextcloud-updates/nextcloud-update-falsch_hu_ea0e3444ce3d2513.webp">![nextcloud-update-falsch](nextcloud-update-falsch.png &ldquo;nextcloud-update-falsch)</a></p>
<p>Mit dem Befehl</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">sudo -u www-data php occ maintenance:repair</span></span></code></pre></div><p>least sich ein fehlgeschlagenes Update nämlich reparieren und wenn man dann erneut den Befehl <code>sudo -u www-data php occ app:update --all</code> für das Update ausführt, sollte nach kurzer Zeit die Ausgabe ähnlich aussehen:</p>
<p><a href="/fix-nextcloud-updates/nextcloud-update-repariert_hu_bc90559dc5693a8c.webp">![nextcloud-update-repariert](nextcloud-update-repariert.png &ldquo;nextcloud-update-repariert)</a></p>
<p>Und dann klappt das auch wieder mit den Updates.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Wenn Aliens auf die Erde kommen</title>
      <link>https://cbrueggenolte.de/wenn-aliens-auf-die-erde-kommen/</link>
      <pubDate>Tue, 07 Apr 2026 08:43:03 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/wenn-aliens-auf-die-erde-kommen/</guid>
      <description>&lt;p&gt;In den tiefen meiner Notizen habe ich diesen wundervollen Text wiedergefunden, den ich vor ein paar Jahren schon einmal gelesen habe. Leider ist der Account des Autors nicht mehr verfügbar, aber der Text ist zu gut, um ihn in Vergessenheit geraten zu lassen. Im &lt;a href=&#34;https://web.archive.org/web/20220930061140/https://twitter.com/foone/status/1572260363764400129&#34;&gt;WebArchive&lt;/a&gt; habe ich eine Kopie gefunden. Hier gibt es ihn mit einigen zusätzlichen Sprecherinformationen, um das Lesen zu erleichtern.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Someday aliens are going to land their saucers in a field somewhere in New Jersey and everything is going to go just fine right up until we try to explain our calendar to them.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In den tiefen meiner Notizen habe ich diesen wundervollen Text wiedergefunden, den ich vor ein paar Jahren schon einmal gelesen habe. Leider ist der Account des Autors nicht mehr verfügbar, aber der Text ist zu gut, um ihn in Vergessenheit geraten zu lassen. Im <a href="https://web.archive.org/web/20220930061140/https://twitter.com/foone/status/1572260363764400129">WebArchive</a> habe ich eine Kopie gefunden. Hier gibt es ihn mit einigen zusätzlichen Sprecherinformationen, um das Lesen zu erleichtern.</p>
<hr>
<p>Someday aliens are going to land their saucers in a field somewhere in New Jersey and everything is going to go just fine right up until we try to explain our calendar to them.</p>
<p>Humans: “yeah we divide our year into a number of sub units called ‘months’ made up a number of days, and they’re not all the same length”</p>
<p>Aliens: “I guess that’s unavoidable, if your rotations-count per orbit is a prime number”</p>
<p>Humans: “yeah, our’s isn’t prime”</p>
<p>Aliens: “but surely you have most of these ‘months’ the same length and just make the last one shorter or longer?”</p>
<p>Humans: “No… They’re different lengths following no logical pattern”</p>
<p>Aliens: “what”</p>
<p>Humans: “and we further subdivide the months into ‘weeks’, which is 7 days.”</p>
<p>Aliens: “ahh, so each month is an integer multiple of weeks?”</p>
<p>Humans: “that would make sense, but no. Only one is, sometimes”</p>
<p>Aliens: “SOMETIMES?!”</p>
<p>Humans: “yeah our orbit around the sun isn’t an integer number of days, so we have to change the number of days to in a year from time to time”</p>
<p>Aliens: “oh yes, a similar thing happens on Epsilon Indi 7, where they have to add an extra day every 39 years to keep holidays on track”</p>
<p>Humans: “yeah that’s how ours work! Although the ratio doesn’t work out cleanly, so we just do every 4 years, except every 100 years, except except every 400 years”</p>
<p>Aliens: “oh, you number your years? What’s the epoch?”</p>
<p>Humans: “uh, it’s supposed to be the birth of a religious leader, but they got the math wrong so it’s off by 4 years, if he existed at all.”</p>
<p>Aliens: “if? You based your calendar off the birth date of someone you’re not sure exists?”</p>
<p>Humans: “yeah. He’s written about in a famous book but historical records are spotty.”</p>
<p>Aliens: “interesting. I didn’t realize your planet was one of the ones with a single universal religion, that usually only happens in partial or complete hive minds.”</p>
<p>Humans: “uhh, we’re not.”</p>
<p>Aliens: “You’re not?!”</p>
<p>Humans: “yeah we have multiple religions.”</p>
<p>Aliens: “oh but they all have a common ancestor, which agrees on the existence of that leader, right?”</p>
<p>Humans: “uh, no. Two of the big ones do, but most of the others don’t believe in him”</p>
<p>Aliens: “YOUR CALENDAR IS BASED ON A RELIGIOUS LEADER THAT NOT EVERYONE BELIEVES IN?”</p>
<p>Humans: “well, on his birth. And yeah, we got it wrong by a couple years.”</p>
<p>Aliens: “OK, fine. So, you have somewhat complicated rules about when you change the length of your years, and I’m scared to ask this, but… You definitely just add or subtract that extra day at the end, right?”</p>
<p>Humans: “…. Nope.”</p>
<p>Aliens: “At the start of the year? &quot;</p>
<p>Humans: “nah. The end of the second month”</p>
<p>Aliens: “WHY WOULD IT BE THE SECOND MONTH?”</p>
<p>Humans: “I’m not sure, really.” Aliens: “huh. So at this point I’m dreading asking this, but how do you measure time within each day?”</p>
<p>Humans: “oh that’s much simpler. Each day is divided into hours, each hour has minutes, and each minute has seconds.”</p>
<p>Aliens: “ok. And 10 of each?”</p>
<p>Humans: “10 hours? No. There’s 24 hours, 60 minutes, 60 seconds”</p>
<p>Aliens: “…. I thought you said you used a base-10 counting system”</p>
<p>Humans: “we do! Mostly. But our time system came from some long gone civilization that liked base-60 like 5000 years ago”</p>
<p>Aliens: “and you haven’t changed it since?”</p>
<p>Humans: “No.”</p>
<p>Aliens: “huh. Okay, so why 24? That’s not a divisor of 60”</p>
<p>Humans: “oh because it’s actually 12!”</p>
<p>Aliens: “what”</p>
<p>Humans: “yeah each day is 24 hours but they are divided into two sets of 12.”</p>
<p>Aliens: “and that’s 5 12s, right, I see the logic here, almost. So like, after hour 12, it becomes the second half, which is 1?”</p>
<p>Humans: “No, after 11.”</p>
<p>Aliens: “oh, you zero-index them! So it’s hours 0-11 in the first half, then 12-23 in the second half?”</p>
<p>Humans: “No. 12 to 11 in the first half, and again in the second half”</p>
<p>Aliens: “please explain that before my brain melts out my mouth”</p>
<p>Humans: “the first hour is 12. Then the next one is 1, then it goes back up to 11, then 12 again”</p>
<p>Aliens: “that is not how numbers work. And how do you tell first 12 apart from second 12?”</p>
<p>Humans: “oh we don’t use numbers for that!”</p>
<p>Aliens: “you don’t number the two halves of your day?”</p>
<p>Humans: “nah, we call them AM and PM”</p>
<p>Aliens: “WHAT DOES THAT MEAN”</p>
<p>Humans: “I think it’s ante-meridian and post-meridian? But I’m not sure, I dont know much Latin”</p>
<p>Aliens: “Latin?”</p>
<p>Humans: “yeah it’s an ancient language from an old empire which controlled a lot of the world and we still use some of their terms”</p>
<p>Aliens: “oh, and that was the civilization that liked base-60 and set up your time system?”</p>
<p>Humans: “that would make sense, but… No, completely different one.”</p>
<p>Aliens: “okay, and what do you do to if you want to measure very short times, shorter than a second?”</p>
<p>Humans: “oh we use milliseconds and microseconds”</p>
<p>Aliens: “ahh, those are a 60th of a second and then 60th of the other?”</p>
<p>Humans: “No. Thousandths.”</p>
<p>Aliens: “so you switch to base-10 at last, but only for subdivisions of the second?”</p>
<p>Humans: “yeah.”</p>
<p>Aliens: “but at thousands, ie, ten tens tens”</p>
<p>Humans: “yeah. Technically we have deciseconds and centiseconds, which are 1/10 of a second, and 1/100 of a second, but no one really uses them. We just use milli.”</p>
<p>Aliens: “that seems more like a base-1000 system than a base-10 system.”</p>
<p>Humans: “it kinda is? We do a similar thing with measures of volume and distance and mass.”</p>
<p>Aliens: “but you still call it base-10?”</p>
<p>Humans: “yeah”</p>
<p>Aliens: “so let me see if I get this right: Your years are divided in 10 months, each of which is some variable number of days, the SECOND of which varies based on a complex formula… and each day is divided into two halves of 12 hours, of 60 minutes, 60 seconds, 1000 milliseconds?”</p>
<p>Humans: “12 months, actually.”</p>
<p>Aliens: “right, because of the ancient civilization that liked base-60, and 12 is a divisor of 60.”</p>
<p>Humans: “No, actually, that came from the civilization that used latin. Previously there were 10.”</p>
<p>Aliens: “what”</p>
<p>Humans: “yeah the Latin guys added two months part of the way through their rule, adding two more months. That’s why some are named after the wrong numbers”</p>
<p>Aliens: “you just said two things I am having trouble understanding. 1. Your months are named, not numbered? 2. THE NAMES ARE WRONG?”</p>
<p>Humans: “yep! Our 9th month is named after the number 7, and so on for 10, 11, and 12.”</p>
<p>Aliens: “your 12th month is named… 10?”</p>
<p>Humans: “yeah.”</p>
<p>Aliens: “what are the other ones named after?!”</p>
<p>Humans: “various things. Mainly Gods or rulers”</p>
<p>Aliens: “oh, from that same religion that your epoch is from?”</p>
<p>Humans: “uh… No. Different one.”</p>
<p>Aliens: “so you have an epoch based on one religion, but name your months based on a different one?”</p>
<p>Humans: “yeah! Just wait until you hear about days of the week.”</p>
<p>Aliens: “WHAT”</p>
<p>Humans: “so yeah we group days into 7-day periods-”</p>
<p>Aliens: “which aren’t an even divisor of your months lengths or year lengths?”</p>
<p>Humans: “right. Don’t interrupt”</p>
<p>Aliens: “sorry”</p>
<p>Humans: “but we name the days of the week, rather than numbering them. Funny story with that, actually: there’s disagreement about which day starts the week.”</p>
<p>Aliens: “you have a period that repeats every 7 days and you don’t agree when it starts?”</p>
<p>Humans: “yeah, it’s Monday or Sunday.”</p>
<p>Aliens: “and those names come from…”</p>
<p>Humans: “celestial bodies and gods! The sun and moon are Sunday and Monday, for example”</p>
<p>Aliens: “but… I looked at your planet’s orbit parameters. Doesn’t the sun come up every day?”</p>
<p>Humans: “yeah.”</p>
<p>Aliens: “oh, do you have one of those odd orbits where your natural satellite is closer or eclipsed every 7 days, like Quagnar 4?”</p>
<p>Humans: “no, the sun and moon are the same then as every other day, we just had to name them something.”</p>
<p>Aliens: “and the other days, those are named after gods?”</p>
<p>Humans: “yep!”</p>
<p>Aliens: “from your largest religion, I imagine?”</p>
<p>Humans: “nah. That one (and the second largest, actually) only has one god, and he doesn’t really have a name.”</p>
<p>Aliens: “huh. So what religion are they from? The Latin one again?”</p>
<p>Humans: “nah, they only named one of the God-days”</p>
<p>Aliens: “only on… SO THE OTHER DAYS ARE FROM A DIFFERENT RELIGON ENTIRELY?”</p>
<p>Humans: “Yep!”</p>
<p>Aliens: “the third or forth biggest, I assume?”</p>
<p>Humans: “nah, it’s one that… Kinda doesn’t exist anymore? It mostly died out like 800 years ago, though there are some modern small revivals, of course”</p>
<p>Aliens: “so, let me get confirm I am understanding this correctly. Your days and hours and seconds and smaller are numbered, in a repeating pattern. But your years are numbered based on a religious epoch, despite it being only one religion amongst several.”</p>
<p>Humans: “correct so far”</p>
<p>Aliens: “and your months and days of the week are instead named, although some are named after numbers, and it’s the wrong numbers”</p>
<p>Humans: “exactly”</p>
<p>Aliens: “and the ones that aren’t numbers or rulers or celestial objects are named after gods, right?”</p>
<p>Humans: “yup!”</p>
<p>Aliens: “but the months and the days of the week are named after gods from different religons from the epoch religion, and indeed, each other?”</p>
<p>Humans: “yeah! Except Saturday. That’s the same religion as the month religion”</p>
<p>Aliens: “and the month/Saturday religion is also from the same culture who gave you the 12 months system, and the names for the two halves of the day, which are also named?”</p>
<p>Humans: “right! Well, kinda.”</p>
<p>Aliens: “please explain, slowly and carefully”</p>
<p>Humans: “yeah so cultures before then had a 12 month system, because of the moon. But they had been using a 10 month system, before switching to 12 and giving them the modern names”</p>
<p>Aliens: “the… Moon? Your celestial body?”</p>
<p>Humans: “yeah, it completes an orbit about every 27 days, so which is about 12 times a year, so it is only natural to divide the year into 12 periods, which eventually got called months”</p>
<p>Aliens: “ok, that makes sense. Wait, no. Your orbital period is approximately 365.25 days, right?”</p>
<p>Humans: “yeah. That’s why we do 365 or 366 based on the formula”</p>
<p>Aliens: “but that doesn’t work. 365 divided by 27 is ~13.5, not 12”</p>
<p>Humans: “yeah I’m not sure why 12 was so common then. Maybe it goes back to the base 60 people?”</p>
<p>Aliens: “okay so one final check before I file this report: Years are numbered based on a religious leader. Years always have 12 months, but the lengths of those months is not consistent between each other or between years.”</p>
<p>Humans: “don’t forget the epoch we number our years from is wrong!”</p>
<p>Aliens: “right, yes. And your months are named, some after a different religion, and some after numbers, but not the number the month is in the year.”</p>
<p>Humans: “right. And when we change the month lengths, it’s the second one we change”</p>
<p>Aliens: “how could I forget? After months you have a repeating ‘week’ of 7 days, which is named after gods from two religons, one of which is the month-naming one, and a nearly extinct one. And you don’t agree when the week starts.”</p>
<p>Humans: “nope! My money is on Monday.”</p>
<p>Aliens: “that’s the Monday that’s named after your moon, which supposedly influenced the commonality of the 12 months in a year cycle, despite it orbiting 13 times in a year?”</p>
<p>Humans: “correct!”</p>
<p>Aliens: “and as for your days, they split into two halves, named after a phrase you don’t really understand in the long dead language of the same culture that named the months and Saturday.”</p>
<p>Humans: “Yep. I took some in college but all I remember is like, ‘boy’, ‘girl’, ‘stinky’, ‘cocksucker’”</p>
<p>Aliens: “charming. And then each half is divided into 12 hours, but you start at 12, then go to 1, and up to 11”</p>
<p>Humans: “all I can say is that it makes more sense on analog clocks.”</p>
<p>Aliens: “i don’t know what that is and at this point I would prefer you not elaborate. So each of those hours is divided into 60 minutes and then 60 seconds, and this comes from an ancient civilization, but not the one that gave you the month names”</p>
<p>Humans: “yep. Different guys. Different part of the world.”</p>
<p>Aliens: “ok. And then after seconds, you switch to a ‘base-10’ system, but you only really use multiples of a thousand? Milliseconds and microseconds?”</p>
<p>Humans: “right. And there’s smaller ones beyond that, but they all use thousands”</p>
<p>Aliens: “right. Got it. All written down here. Now if you’ll excuse me, I just gotta go make sure I didn’t leave my interociter on, I’ll be right back.”</p>
<p>The tall alien walks back into their saucer without a wave. The landing ramp closes.</p>
<p>The ship gently lifts off as gangly landing legs retract. There’s a beat, then a sudden whooshing sound as air rushes back into the space that previously held the craft, now suddenly vacuum.</p>
<p>NORAD alarms go off briefly as an object is detected leaving the earth’s atmosphere at a significant fraction of the speed of light.</p>
<p>In the years to come, many technological advances are made from what was left behind, a small tablet shaped object made of some kind of artifical stone/neutrino composite material.</p>
<p>The alien message left on screen is eventually translated to read “Untitled Document 1 has not been saved, are you sure you wish to quit? (yes) (no) (cancel)&quot;</p>
<p>Many years have passed, and we await the day the aliens return. They have not.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Mittwoch, 02. April 2026</title>
      <link>https://cbrueggenolte.de/02apr26/</link>
      <pubDate>Thu, 02 Apr 2026 20:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/02apr26/</guid>
      <description>&lt;p&gt;Heute war ich mit meiner Frau beim Optiker. Es ist beeindruckend, wie modern diese Geschäfte hier in den Niederlanden sind – viele Untersuchungen, die man früher nur vom Augenarzt kannte, werden heute direkt vor Ort erledigt.&lt;/p&gt;&#xA;&lt;p&gt;Besonders positiv fiel uns der Mitarbeiter auf: fachlich kompetent, sehr erklärungsfreudig und vor allem absolut unaufdringlich. Keine Verkaufsmaschen, kein Aufschwatzen, sondern einfach nur sachliche Empfehlungen.&lt;/p&gt;&#xA;&lt;p&gt;Die Sehkraft meiner Frau ist zum Glück stabiler als gedacht. Dennoch wird es nun die erste „Gleitsichtbrille“ geben – beziehungsweise eine Booster-Version, die technisch zwischen normalen Gläsern und Gleitsichtgläsern liegt.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute war ich mit meiner Frau beim Optiker. Es ist beeindruckend, wie modern diese Geschäfte hier in den Niederlanden sind – viele Untersuchungen, die man früher nur vom Augenarzt kannte, werden heute direkt vor Ort erledigt.</p>
<p>Besonders positiv fiel uns der Mitarbeiter auf: fachlich kompetent, sehr erklärungsfreudig und vor allem absolut unaufdringlich. Keine Verkaufsmaschen, kein Aufschwatzen, sondern einfach nur sachliche Empfehlungen.</p>
<p>Die Sehkraft meiner Frau ist zum Glück stabiler als gedacht. Dennoch wird es nun die erste „Gleitsichtbrille“ geben – beziehungsweise eine Booster-Version, die technisch zwischen normalen Gläsern und Gleitsichtgläsern liegt.</p>
<p>Dass Markengläser von Zeiss ihren Preis haben, war uns bewusst, aber die Endabrechnung ist dennoch eine Ansage: Ein einzelnes Glas kostet 278 Euro, womit wir allein für die Gläser bei 556 Euro liegen. Beim Gestell konnten wir sparen: Dank 50 % Rabatt auf ein Modell aus der Vorjahreskollektion kostete dieses „nur“ noch 150 Euro.</p>
<p>Insgesamt landen wir also bei über 700 Euro für eine Brille. Warum Gestelle generell so teuer sein müssen, bleibt mir ein Rätsel – ein 3D-gedrucktes Modell, das mir sehr gut gefallen hat, sollte sogar über 400 Euro kosten. Nur für den Rahmen!</p>
<p>In zwei Wochen habe ich dann meinen eigenen Termin – ich bin gespannt, ob ich preislich ähnlich „glimpflich“ davonkomme oder ob mich das 3D-Design doch noch schwach werden lässt.</p>
]]></content:encoded>
    </item>
    <item>
      <title>whisper.cpp: Lokale Sprachtranskription ausprobiert</title>
      <link>https://cbrueggenolte.de/whisper-cpp-lokale-sprachtranskription-ausprobiert/</link>
      <pubDate>Mon, 23 Mar 2026 23:11:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/whisper-cpp-lokale-sprachtranskription-ausprobiert/</guid>
      <description>&lt;p&gt;Heute habe ein wenig mit whisper.cpp herum probiert. Gar nicht mal so verkehrt. Mit minimal Aufwand kann man seine mp3&amp;rsquo;s transkribieren oder Live seine eigene Stimme in eine Datei reinschreiben lassen. Auf dem Pixel 10 verwende ich das 400MB Model für Spracheingabe, auf dem das Medium-Model mit 1,5 GB.&lt;/p&gt;&#xA;&lt;p&gt;Whisper.cpp habe ich mit homebrew installiert und ziemlich gute Ergebnisse erzielt. Startet man den Server, gibt es auch ein einfaches Web-Interface mit Beispiel-Befehlen wie man es anwenden kann.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute habe ein wenig mit whisper.cpp herum probiert. Gar nicht mal so verkehrt. Mit minimal Aufwand kann man seine mp3&rsquo;s transkribieren oder Live seine eigene Stimme in eine Datei reinschreiben lassen. Auf dem Pixel 10 verwende ich das 400MB Model für Spracheingabe, auf dem das Medium-Model mit 1,5 GB.</p>
<p>Whisper.cpp habe ich mit homebrew installiert und ziemlich gute Ergebnisse erzielt. Startet man den Server, gibt es auch ein einfaches Web-Interface mit Beispiel-Befehlen wie man es anwenden kann.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Der Ceado Hoop ist bestellt</title>
      <link>https://cbrueggenolte.de/der-ceado-hoop-ist-bestellt/</link>
      <pubDate>Fri, 20 Mar 2026 20:58:52 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/der-ceado-hoop-ist-bestellt/</guid>
      <description>&lt;p&gt;&lt;img class=&#34;content-image&#34; src=&#34;/der-ceado-hoop-ist-bestellt/ceado-hoop-radial-coffee-brewer_hu_9ca5ef8ebe859b9c.webp&#34; alt=&#34;ceado-hoop-radial-coffee-brewer&#34; title=&#34;ceado-hoop-radial-coffee-brewer&#34; loading=&#34;lazy&#34; width=&#34;1440&#34; height=&#34;901&#34; /&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ich überlege mir den &lt;a href=&#34;https://www.ceado.com/en/products/pour-over-coffee-brewer/&#34;&gt;Hoop von Ceado&lt;/a&gt; zuzulegen. Der Hoop ist ein Radial-Infusionsbrüher, der dafür sorgt, dass das Wasser gleichmäßig durch das Kaffeebett fließt – sanft und regelmäßig. Dies wird durch die seitlichen Löcher am Boden des sogenannten Flow Towers ermöglicht. Der Wasserfluss durch diese Löcher garantiert eine gleichmäßige Extraktion. Das Wasser filtert mit der gleichen Menge und Stärke durch den Kaffee und erreicht den Papierfilter erst, nachdem es den gesamten Weg durch den Kaffee zurückgelegt hat.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img class="content-image" src="/der-ceado-hoop-ist-bestellt/ceado-hoop-radial-coffee-brewer_hu_9ca5ef8ebe859b9c.webp" alt="ceado-hoop-radial-coffee-brewer" title="ceado-hoop-radial-coffee-brewer" loading="lazy" width="1440" height="901" /></p>
<p>Ich überlege mir den <a href="https://www.ceado.com/en/products/pour-over-coffee-brewer/">Hoop von Ceado</a> zuzulegen. Der Hoop ist ein Radial-Infusionsbrüher, der dafür sorgt, dass das Wasser gleichmäßig durch das Kaffeebett fließt – sanft und regelmäßig. Dies wird durch die seitlichen Löcher am Boden des sogenannten Flow Towers ermöglicht. Der Wasserfluss durch diese Löcher garantiert eine gleichmäßige Extraktion. Das Wasser filtert mit der gleichen Menge und Stärke durch den Kaffee und erreicht den Papierfilter erst, nachdem es den gesamten Weg durch den Kaffee zurückgelegt hat.</p>
<p>Update: Bestellt!</p>
<h2 id="erste-erfahrungen">Erste Erfahrungen</h2>
<p>Eigentlich gehört dieser Satz auf ein T-Shirt:</p>
<p><em>&ldquo;Ich mag es simpel, aber ohne Pre-Infusion geht es nicht.&rdquo;</em></p>
<p>Der direkte Vergleich zeigt: Mit Bloom-Phase (Pre-Infusion) schmeckt der Kaffee einfach besser. Ist bei der AeroPress auch nicht anders.</p>
<p>Meine Zeitangaben basieren auf den Filter von Scott Rae. Wer Next Level oder Standard AeroPress benutzt, mahlt eine Stufe gröber. Das Ergebnis überzeugt auch hier, selbst wenn die Zeiten leicht variieren.</p>
<p>Ein wichtiger Rat: Lass die serienmäßigen Hoop-Filter im Schrank.</p>
<p>Der Hoop sitzt leider auf den meisten Karaffen nicht waagerecht. Hier kann man entweder mit einem Werkzeug nachhelfen oder sich einen <a href="https://www.printables.com/model/1598972-carafecup-adapter-for-ceado-hoop-brewer">3D-gedruckten Adapter</a> zulegen. Oder einfach eine passende Karaffe nehmen.</p>
<p>Mein Setup-Tipp für den Alltag: 300 ml Brühmenge und 18-20g Kaffeepulver. Der Brühkopf passt damit perfekt in die meisten Standard-300-ml-Becher. Es bleibt genau der richtige Luftspalt zwischen dem Boden des Kopfs und der Oberfläche des Kaffees.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Nicht alles persönlich nehmen</title>
      <link>https://cbrueggenolte.de/nicht-alles-persoenlich-nehmen/</link>
      <pubDate>Fri, 20 Mar 2026 00:03:50 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/nicht-alles-persoenlich-nehmen/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/nicht-alles-persoenlich-nehmen/img_0593_hu_1676818acc91a715.webp&#34;&gt;![S-Bahn Berlin](img_0593.jpg &amp;ldquo;S-Bahn Berlin)&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Im Büro ist es gerade „etwas schwierig“. Die Deadline drückt. Die Kollegen nerven. Die Kaffeemaschine ist kaputt. Jeder versucht, seinen eigenen Kopf durchzusetzen. Ich nehme mich da gar nicht aus – manchmal bin auch ich fest davon überzeugt, dass mein Weg der bessere ist.&lt;/p&gt;&#xA;&lt;p&gt;Und dann ploppte heute dieser Text in mein Postfach, der mich kurz innehalten ließ:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;Unexpected forms of generosity:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Being early can be a form of generosity. You wait, so they don&amp;rsquo;t have to.&lt;/li&gt;&#xA;&lt;li&gt;Delivering your work on time can be a form of generosity. You make life easier for everyone downstream.&lt;/li&gt;&#xA;&lt;li&gt;Leaving something unsaid can be a form of generosity. You don&amp;rsquo;t always need the last word.&lt;/li&gt;&#xA;&lt;li&gt;Not taking things personally can be a form of generosity. You give people the space to say things imperfectly.&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Besonders diese beiden Punkte haben mich getroffen:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="/nicht-alles-persoenlich-nehmen/img_0593_hu_1676818acc91a715.webp">![S-Bahn Berlin](img_0593.jpg &ldquo;S-Bahn Berlin)</a></p>
<p>Im Büro ist es gerade „etwas schwierig“. Die Deadline drückt. Die Kollegen nerven. Die Kaffeemaschine ist kaputt. Jeder versucht, seinen eigenen Kopf durchzusetzen. Ich nehme mich da gar nicht aus – manchmal bin auch ich fest davon überzeugt, dass mein Weg der bessere ist.</p>
<p>Und dann ploppte heute dieser Text in mein Postfach, der mich kurz innehalten ließ:</p>
<blockquote>
<p>&ldquo;Unexpected forms of generosity:</p>
<ul>
<li>Being early can be a form of generosity. You wait, so they don&rsquo;t have to.</li>
<li>Delivering your work on time can be a form of generosity. You make life easier for everyone downstream.</li>
<li>Leaving something unsaid can be a form of generosity. You don&rsquo;t always need the last word.</li>
<li>Not taking things personally can be a form of generosity. You give people the space to say things imperfectly.&rdquo;</li>
</ul>
</blockquote>
<p>Besonders diese beiden Punkte haben mich getroffen:</p>
<p><strong>Leaving something unsaid.</strong><br>
<strong>Not taking things personally.</strong></p>
<p>Also:</p>
<p>Nicht immer das letzte Wort haben zu müssen.<br>
Und nicht alles persönlich zu nehmen.</p>
<p>Klingt simpel.</p>
<p>Ist es aber nicht.</p>
<p>Gerade dann nicht, wenn man überzeugt ist, im Recht zu sein.</p>
<p>Vielleicht ist genau das eine der wichtigsten Fähigkeiten in Zusammenarbeit:</p>
<p>Raum lassen.
Nicht sofort reagieren.
Und Menschen zugestehen, dass nicht alles perfekt formuliert sein muss.</p>
<p>Ich sollte mir das ausdrucken und an den Bildschirm kleben.</p>
<p>Nicht nur für mich, sondern auch für die anderen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Die .127-Falle: Wie ein /25-Subnetz meinen Reverse Proxy sabotiert hat</title>
      <link>https://cbrueggenolte.de/die-127-falle-subnetz-502/</link>
      <pubDate>Thu, 19 Mar 2026 00:11:52 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/die-127-falle-subnetz-502/</guid>
      <description>&lt;p&gt;Es gibt diese Fehler, bei denen man sich sicher ist: &lt;em&gt;Das kann eigentlich nicht falsch sein.&lt;/em&gt;&#xA;Alles sieht korrekt aus – und trotzdem funktioniert es nicht.&lt;/p&gt;&#xA;&lt;p&gt;In meinem Fall lief Gitea sauber auf &lt;code&gt;192.168.10.127:3000&lt;/code&gt;. Lokal war alles erreichbar, DNS zeigte korrekt auf den Server, und auch der Nginx Proxy Manager war wie gewohnt konfiguriert. Trotzdem endete jeder Zugriff über die Domain in einem &lt;strong&gt;502 Bad Gateway&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Die üblichen Checks brachten nichts. Upstream stimmte, Protokoll passte, keine offensichtlichen Netzwerk- oder Firewall-Probleme. Es sah einfach alles richtig aus.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Es gibt diese Fehler, bei denen man sich sicher ist: <em>Das kann eigentlich nicht falsch sein.</em>
Alles sieht korrekt aus – und trotzdem funktioniert es nicht.</p>
<p>In meinem Fall lief Gitea sauber auf <code>192.168.10.127:3000</code>. Lokal war alles erreichbar, DNS zeigte korrekt auf den Server, und auch der Nginx Proxy Manager war wie gewohnt konfiguriert. Trotzdem endete jeder Zugriff über die Domain in einem <strong>502 Bad Gateway</strong>.</p>
<p>Die üblichen Checks brachten nichts. Upstream stimmte, Protokoll passte, keine offensichtlichen Netzwerk- oder Firewall-Probleme. Es sah einfach alles richtig aus.</p>
<p>Der Wendepunkt kam durch einen simplen Test im Proxy-Container:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">ping 192.168.10.127</span></span></code></pre></div><p>Die Antwort war unerwartet:</p>





<pre tabindex="0"><code>Do you want to ping broadcast? Then -b.</code></pre><p>Spätestens da war klar: Das ist kein klassisches Proxy-Problem, sondern etwas auf Netzwerkebene.</p>
<p>Ein Blick auf die IP-Konfiguration brachte die Erklärung. Das Interface lief mit einem <code>/25</code>-Subnetz. Damit liegt der Adressbereich bei <code>192.168.10.0 – 192.168.10.127</code> – und die <code>.127</code> ist in diesem Fall die Broadcast-Adresse.</p>
<p>Genau diese Adresse hatte ich aber für Gitea verwendet.</p>
<p>Für den Container war <code>192.168.10.127</code> also kein gültiger Host, sondern Broadcast. Entsprechend konnte keine Verbindung aufgebaut werden. Der Reverse Proxy lief ins Leere und quittierte das mit einem 502.</p>
<p>Lokal funktionierte weiterhin alles, weil der Zugriff nicht über diesen Netzwerkpfad ging. Das machte den Fehler besonders verwirrend: Je nachdem, wo man testete, sah alles entweder völlig in Ordnung oder komplett kaputt aus.</p>
<p>Der Fix war letztlich simpel: Subnetz von <code>/25</code> auf <code>/24</code> ändern. Testweise direkt im Container – danach dauerhaft in der Proxmox-Konfiguration:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># vorher</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nv">ip</span><span class="o">=</span>192.168.10.105/25
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># nachher</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="nv">ip</span><span class="o">=</span>192.168.10.105/24</span></span></code></pre></div><p>Nach einem Neustart war das Problem sofort verschwunden. Der Proxy konnte den Upstream erreichen, Gitea war über die Domain verfügbar, und der 502 war Geschichte.</p>
<p>Am Ende war es weder ein Problem mit Gitea noch mit Nginx oder DNS – sondern schlicht ein falsch gewähltes Subnetz.</p>
<p>Die Lektion daraus: Wenn etwas komplett unlogisch wirkt, lohnt sich fast immer ein Blick aufs Netzwerk. Gerade bei Subnetzen reichen kleine Details, um alles scheinbar „korrekt“ aussehen zu lassen – während es in Wirklichkeit gar nicht funktionieren kann.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Tabby - a modern terminal</title>
      <link>https://cbrueggenolte.de/tabby-a-modern-terminal/</link>
      <pubDate>Sat, 14 Mar 2026 12:04:39 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/tabby-a-modern-terminal/</guid>
      <description>&lt;p&gt;Ich habe iTerm2 wirklich lange benutzt. Im Laufe der Zeit sind mir aber immer mehr nervige Macken aufgefallen. Die Theme-Unterstützung war oft fehlerhaft, der Wechsel zwischen Light- und Dark-Mode machte, was er wollte, und manche Einstellungen wurden vom System schlicht ignoriert. Als Admin brauche ich ein Tool, das zuverlässig funktioniert. Also musste etwas Neues her.&lt;/p&gt;&#xA;&lt;p&gt;Man hat mir dann Ghostty empfohlen, was nach kurzer Eingewöhnung auch mein Standard-Terminal wurde. Aber auch da stieß ich im Arbeitsalltag ab und zu auf Kleinigkeiten, die mich gestört haben.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe iTerm2 wirklich lange benutzt. Im Laufe der Zeit sind mir aber immer mehr nervige Macken aufgefallen. Die Theme-Unterstützung war oft fehlerhaft, der Wechsel zwischen Light- und Dark-Mode machte, was er wollte, und manche Einstellungen wurden vom System schlicht ignoriert. Als Admin brauche ich ein Tool, das zuverlässig funktioniert. Also musste etwas Neues her.</p>
<p>Man hat mir dann Ghostty empfohlen, was nach kurzer Eingewöhnung auch mein Standard-Terminal wurde. Aber auch da stieß ich im Arbeitsalltag ab und zu auf Kleinigkeiten, die mich gestört haben.</p>
<p>![tabby-website-screenshot](tabby-website-screenshot.jpg &ldquo;tabby-website-screenshot)</p>
<p>Bis ich schließlich auf <a href="https://tabby.sh">Tabby</a> gestoßen bin. Das ist eine moderne Terminal-App, die von Haus aus genau die Features mitbringt, die ich für meine Arbeit wirklich brauche.</p>
<p><strong>Tabby</strong> läuft auf Windows, Mac und Linux und lässt sich extrem gut anpassen. Es unterstützt direkt etliche Shells – egal ob PowerShell, WSL, Git-Bash oder CMD. Richtig stark finde ich die fest eingebauten Clients für SSH, Telnet und serielle Verbindungen. Für Server-Logins gibt es einen eigenen Connection-Manager samt verschlüsseltem Passwort-Safe für SSH-Secrets. Sogar Dateiübertragungen per SFTP oder Zmodem klappen direkt aus der laufenden SSH-Sitzung heraus.</p>
<p>Auch das Fenster-Management passt perfekt für den Admin-Alltag: Tabby merkt sich offene Tabs und geteilte Fenster (Panes) nach einem Neustart. Wer mag, kann es sich als Dropdown-Terminal im „Quake-Modus“ an den Bildschirmrand heften, aufrufbar über eine globale Tastenkombination. Abgerundet wird das Ganze durch tolle Anpassungsmöglichkeiten: Das Design lässt sich einfach per CSS verändern, Tastenkürzel kann man komplett frei belegen und wem das immer noch nicht reicht, der kann mit JavaScript-Plugins sogar noch eigene Funktionen nachrüsten.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Vom Suchen und Finden beim Prompten</title>
      <link>https://cbrueggenolte.de/vom-suchen-und-finden-beim-prompten/</link>
      <pubDate>Sat, 14 Mar 2026 08:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/vom-suchen-und-finden-beim-prompten/</guid>
      <description>&lt;p&gt;Passend dazu habe ich diese Woche eine Idee aufgeschnappt, die mich vor allem beim Arbeiten mit KI-Agenten beschäftigt hat.&lt;/p&gt;&#xA;&lt;p&gt;Das Zitat lautet:&lt;/p&gt;&#xA;&lt;p&gt;„Fragen werden beantwortet, während man sich bewegt, nicht bevor man sich bewegt. Mit einer teilweise richtigen Antwort voranzukommen, füllt die Lücken normalerweise schneller, als darauf zu warten, bis man einen Plan hat, der perfekt richtig ist.“&lt;/p&gt;&#xA;&lt;p&gt;Das bringt die Sache ziemlich genau auf den Punkt, wenn es um moderne Softwareentwicklung mit KI geht.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Passend dazu habe ich diese Woche eine Idee aufgeschnappt, die mich vor allem beim Arbeiten mit KI-Agenten beschäftigt hat.</p>
<p>Das Zitat lautet:</p>
<p>„Fragen werden beantwortet, während man sich bewegt, nicht bevor man sich bewegt. Mit einer teilweise richtigen Antwort voranzukommen, füllt die Lücken normalerweise schneller, als darauf zu warten, bis man einen Plan hat, der perfekt richtig ist.“</p>
<p>Das bringt die Sache ziemlich genau auf den Punkt, wenn es um moderne Softwareentwicklung mit KI geht.</p>
<p>Es ist oft ein schmaler Grat. Auf der einen Seite steht die „One-Shot-Falle“: Man versucht endlos, den perfekten, allumfassenden Master-Prompt zu konstruieren, um ein Projekt im Voraus komplett zu lösen. Auf der anderen Seite führen zu kurze oder vage Prompts ohne Kontext zu völlig falschen Erwartungen und unbrauchbaren Ergebnissen.</p>
<p>Die Lösung liegt in der Mitte – und genau hier greift das Zitat. Effiziente Arbeit mit KI braucht einen agilen, schrittweisen Ansatz.</p>
<p>Man startet mit einer klaren Zielsetzung für den ersten, überschaubaren Projektschritt und lässt den Agenten einen Entwurf generieren. Eine „nur“ teilweise richtige Antwort ist dabei kein Rückschlag, sondern wertvolles Material. Fehlerhafte Tests oder unerwartete Ergebnisse dienen als Taschenlampe, um die Unklarheiten in den eigenen Anweisungen aufzudecken. Durch diese stetige Vorwärtsbewegung schließt man Lücken im System wesentlich schneller und sicherer, als wenn man vor dem leeren Editor auf den perfekten Plan wartet.</p>
<p>Vor allem lassen sich Fehler so direkt im Keim ersticken. Bei großen Projekten sprengen die Anzahl der Dateien und die Menge des Codes ohnehin schnell das Kontext-Fenster der KI. Daher: Klein anfangen. Ein Basis-Projekt hinstellen, es so formen, wie man es wirklich haben will, und dann Schritt für Schritt Features anbauen. Der Rest erledigt sich, und die Lücken füllen sich dann einfach unterwegs.</p>
<p>Happy Coding.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ausgebrannt: Wenn man vier KI-Agenten gleichzeitig dirigiert</title>
      <link>https://cbrueggenolte.de/ausgebrannt-wenn-man-vier-ki-agenten-gleichzeitig-dirigiert/</link>
      <pubDate>Wed, 11 Mar 2026 21:31:43 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ausgebrannt-wenn-man-vier-ki-agenten-gleichzeitig-dirigiert/</guid>
      <description>&lt;p&gt;Eigentlich bin ich mir unsicher, ob ich das hier überhaupt als Blogpost schreiben soll. Ich erzähle dir zwar von all den Dingen, aber zeigen kann ich gerade leider nichts – es ist alles noch „Work in Progress“. Aber heute ist schon Mittwoch, die Zeit vergeht wie im Fluge und ich muss es einfach mal loswerden: Ich fühle mich ein klein wenig ausgebrannt.&lt;/p&gt;&#xA;&lt;p&gt;Das ist die Ironie, wenn man intensiv mit K.I.-Modellen arbeitet. Man lässt sie für sich schuften, hier ein Prompt, da ein Prompt. Ich lasse sie auf &lt;a href=&#34;https://wiki.zn80.net/books/programming/page/git-grundlagen-fork-vs-branch&#34;&gt;Forks&lt;/a&gt; meiner Projekte laufen und führe die Ergebnisse später einfach zusammen. Was ich dabei völlig unterschätzt habe, ist der enorme intellektuelle Aufwand, den man trotzdem selbst betreiben muss.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Eigentlich bin ich mir unsicher, ob ich das hier überhaupt als Blogpost schreiben soll. Ich erzähle dir zwar von all den Dingen, aber zeigen kann ich gerade leider nichts – es ist alles noch „Work in Progress“. Aber heute ist schon Mittwoch, die Zeit vergeht wie im Fluge und ich muss es einfach mal loswerden: Ich fühle mich ein klein wenig ausgebrannt.</p>
<p>Das ist die Ironie, wenn man intensiv mit K.I.-Modellen arbeitet. Man lässt sie für sich schuften, hier ein Prompt, da ein Prompt. Ich lasse sie auf <a href="https://wiki.zn80.net/books/programming/page/git-grundlagen-fork-vs-branch">Forks</a> meiner Projekte laufen und führe die Ergebnisse später einfach zusammen. Was ich dabei völlig unterschätzt habe, ist der enorme intellektuelle Aufwand, den man trotzdem selbst betreiben muss.</p>
<p>Das eigentliche Lösen von Problemen und das Austüfteln von Ansätzen nehmen einem die LLMs zwar ab – oft schneller und besser, als man es selbst könnte. Aber die Arbeit hat sich verschoben: weg vom Tippen, hin zum Orchestrieren. Während ein Agent am CSS schraubt, arbeitet der nächste an einem neuen Feature und ein dritter beobachtet alle Änderungen, um direkt die Dokumentation mitzuschreiben. Man steht in der Mitte, muss alles überwachen, kontrollieren und vor allem den Überblick behalten. Und mal ehrlich: Wie oft findet diese Kontrolle bei diesem Tempo eigentlich noch wirklich tiefgehend statt?</p>
<p>Gestern und heute habe ich noch extrem viel an der Demo für meine morgige Präsentation über OneNote und BookStack gearbeitet. Und wie das dann so ist: Auf den letzten Drücker fängt man an, noch Features einzubauen, die man selbst einfach geil findet, die aber eigentlich völlig unnötig sind. Man macht es dann trotzdem.</p>
<p>Immerhin rettet mich mein Setup: Die automatisierten Builds der Docker-Container laufen so reibungslos, dass ich – bis auf das Dashboard – absolut nichts mehr von Hand starten muss. In Codex habe ich die Umgebungen für BookStack mit MariaDB erstellen lassen, während in einem anderen Projekt das Dashboard entstand. Zeitweise habe ich an vier Demos gleichzeitig gearbeitet, jongliert zwischen VSCode-Chats, Codex-Fenstern und Browser-Tabs.</p>
<p>Hier ist ein Diagramm, das den Aufbau der Demo und der Komponenten ganz gut beschreibt. Meine Skripte sind alle in Python geschrieben und erzeugen automatisch Bücher, Kapitel und Seiten. Sie importieren ganze Ordner mit Markdown-Dateien samt dazugehöriger Bilder und Anhänge. Auch das Dashboard wird mit einbezogen. Das ist aber eher ein kleines Gimmick oben drauf, um zu zeigen, was man mit den Webhooks von BookStack alles machen kann – es ist dabei einfach ein kleines bisschen „eskaliert“.</p>
<p><a href="/ausgebrannt-wenn-man-vier-ki-agenten-gleichzeitig-dirigiert/img_0865_hu_3f0fcba67cd7377b.webp">![img_0865](img_0865.png &ldquo;img_0865)</a></p>
<p>Man spart sich zwar das manuelle Coden, zahlt aber mit mentaler Kapazität. Morgen ist die Präsentation. Ich bin bereit, die Demo steht – aber mein Kopf könnte definitiv einen Reboot vertragen. Gut, dass das Wochenende vor der Tür steht und ich in der Heimat ein, zwei Tage abschalten kann.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Meine Top 3 Dark-Themes für VS Code in 2026</title>
      <link>https://cbrueggenolte.de/meine-top-3-dark-themes-fuer-vs-code-in-2026/</link>
      <pubDate>Sun, 08 Mar 2026 13:02:57 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/meine-top-3-dark-themes-fuer-vs-code-in-2026/</guid>
      <description>&lt;p&gt;Wer wie ich täglich stundenlang im Editor verbringt, weiß: Ein gutes Theme ist mehr als nur Optik. Es geht darum, die Augen zu schonen und eine Umgebung zu schaffen, in der man sich gerne konzentriert.&lt;/p&gt;&#xA;&lt;p&gt;Ich bin ein großer Fan von Dark-Themes. Nachdem ich unzählige Setups ausprobiert habe, lande ich am Ende immer wieder bei diesen drei Favoriten.&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-catppuccin&#34;&gt;1. Catppuccin&lt;/h3&gt;&#xA;&lt;p&gt;Catppuccin bringt verschiedene „Flavors“ (Farbschemata) mit, je nachdem, wonach einem gerade der Sinn steht. Mein Favorit ist &lt;strong&gt;Moccha&lt;/strong&gt;. Die Töne sind satt und warm, mit genau dem richtigen Kontrast für lange Coding-Sessions. Die Pastell-Akzente setzen Akzente, ohne zu blenden – modern, aber angenehm ruhig für den Fokus.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Wer wie ich täglich stundenlang im Editor verbringt, weiß: Ein gutes Theme ist mehr als nur Optik. Es geht darum, die Augen zu schonen und eine Umgebung zu schaffen, in der man sich gerne konzentriert.</p>
<p>Ich bin ein großer Fan von Dark-Themes. Nachdem ich unzählige Setups ausprobiert habe, lande ich am Ende immer wieder bei diesen drei Favoriten.</p>
<h3 id="1-catppuccin">1. Catppuccin</h3>
<p>Catppuccin bringt verschiedene „Flavors“ (Farbschemata) mit, je nachdem, wonach einem gerade der Sinn steht. Mein Favorit ist <strong>Moccha</strong>. Die Töne sind satt und warm, mit genau dem richtigen Kontrast für lange Coding-Sessions. Die Pastell-Akzente setzen Akzente, ohne zu blenden – modern, aber angenehm ruhig für den Fokus.</p>
<p><a href="/meine-top-3-dark-themes-fuer-vs-code-in-2026/theme-catppuccin-mocha_hu_1445caf2fc025cb.webp"><img class="content-image" src="/meine-top-3-dark-themes-fuer-vs-code-in-2026/theme-catppuccin-mocha_hu_737117c71d21231a.webp" alt="" loading="lazy" width="1440" height="816" /></a></p>
<p>Besonders stark finde ich, dass die Catppuccin-Farbpalette mittlerweile für extrem viele Projekte und Tools verfügbar ist. Man kann sich so ein sehr konsistentes Setup über den Editor hinaus aufbauen. Das Team dahinter hat hier eine tolle Balance zwischen Ästhetik und Usability gefunden.</p>
<h3 id="2-minimal-kiwi">2. Minimal Kiwi</h3>
<p>Wenn du es lieber schlicht und ablenkungsfrei magst, ist <strong>Minimal Kiwi</strong> eine gute Wahl. Das Design ist sehr minimalistisch: ein dunkler Hintergrund kombiniert mit grünen Highlights, die die Syntax sauber hervorheben.</p>
<p><a href="/meine-top-3-dark-themes-fuer-vs-code-in-2026/theme-minimal-kiwi_hu_d3eb63af82c85da1.webp"><img class="content-image" src="/meine-top-3-dark-themes-fuer-vs-code-in-2026/theme-minimal-kiwi_hu_c6e37b89819bcea3.webp" alt="" loading="lazy" width="1440" height="816" /></a></p>
<p>Mir gefällt, dass sich das Theme dezent im Hintergrund hält. Die Farben sind unaufgeregt, aber funktional – perfekt für alle, die Wert auf Schlichtheit legen, statt auf unnötigen Schnickschnack.</p>
<h3 id="3-one-dark-pro">3. One Dark Pro</h3>
<p><strong>One Dark Pro</strong> ist ein Klassiker in VS Code, basierend auf „Atom One Dark“. Es liefert starken Kontrast, lebendige Farben und ein sehr aufgeräumtes Layout, das in fast jeder Umgebung funktioniert.</p>
<p><a href="/meine-top-3-dark-themes-fuer-vs-code-in-2026/theme-one-dark-pro-darker_hu_ff30fb867e4afefb.webp"><img class="content-image" src="/meine-top-3-dark-themes-fuer-vs-code-in-2026/theme-one-dark-pro-darker_hu_96c3abfb0007d4ac.webp" alt="" loading="lazy" width="1440" height="816" /></a></p>
<p>Das war jahrelang mein Standard-Theme, und ich kehre auch heute noch oft dazu zurück, wenn ich etwas Vertrautes und Zuverlässiges brauche. Es ist gut poliert und funktioniert einfach.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Vetternwirtschaft aus Personalnot? Das Paradoxon der AfD</title>
      <link>https://cbrueggenolte.de/vetternwirtschaft-in-der-afd/</link>
      <pubDate>Sat, 07 Mar 2026 09:56:12 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/vetternwirtschaft-in-der-afd/</guid>
      <description>&lt;p&gt;Vielen AfD-Wählern scheinen die internen Widersprüche der Partei völlig egal zu sein. Man gewinnt den Eindruck, dass sie andere Sorgen haben, als sich ernsthaft mit den tatsächlichen Inhalten oder den Praktiken der Partei auseinanderzusetzen. Ein bezeichnendes Beispiel ist die Vergabe von Posten an Familienmitglieder. Wenn man Anhänger mit dieser offensichtlichen Vetternwirtschaft konfrontiert, hört man oft eine erstaunliche Rechtfertigung: Es fänden sich – trotz hoher Umfragewerte – schlichtweg kaum Menschen, die bereit seien, offiziell für die Partei zu arbeiten.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Vielen AfD-Wählern scheinen die internen Widersprüche der Partei völlig egal zu sein. Man gewinnt den Eindruck, dass sie andere Sorgen haben, als sich ernsthaft mit den tatsächlichen Inhalten oder den Praktiken der Partei auseinanderzusetzen. Ein bezeichnendes Beispiel ist die Vergabe von Posten an Familienmitglieder. Wenn man Anhänger mit dieser offensichtlichen Vetternwirtschaft konfrontiert, hört man oft eine erstaunliche Rechtfertigung: Es fänden sich – trotz hoher Umfragewerte – schlichtweg kaum Menschen, die bereit seien, offiziell für die Partei zu arbeiten.</p>
<p>Zwar wird ein solcher Personalmangel von der Parteispitze offiziell dementiert, doch an der Basis dient dieses Argument extrem häufig als Schutzbehauptung. Meiner Meinung nach ist das eine äußerst fadenscheinige Ausrede für klassischen politischen Filz.</p>
<p>Diese Argumentation führt unweigerlich zu einer spannenden Frage im Umkehrschluss: Schämen sich die Unterstützer der AfD eigentlich in der Öffentlichkeit? Wenn sich angeblich niemand wegen drohender gesellschaftlicher Ausgrenzung traut, für die Partei zu arbeiten, ist es den Menschen offenbar peinlich, beruflich oder gesellschaftlich mit ihr in Verbindung gebracht zu werden. Und wenn das so ist: Warum macht man dann überhaupt sein Kreuz bei einer Partei mit einer derart verkorksten politischen Ausrichtung, zu der man nicht einmal offen stehen möchte?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Wenn Geopolitik die Heizkosten frisst</title>
      <link>https://cbrueggenolte.de/wenn-geopolitik-die-heizkosten-frisst/</link>
      <pubDate>Mon, 02 Mar 2026 11:28:47 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/wenn-geopolitik-die-heizkosten-frisst/</guid>
      <description>&lt;p&gt;Irgendetwas stimmt gerade ganz gewaltig nicht mit dieser Welt. Eigentlich habe ich es ja eher mit technischen Themen, aber was sich seit dem Wochenende abspielt, lässt mich einfach nicht los. Die Nachrichten haben sich förmlich überschlagen: &lt;strong&gt;Ayatollah Ali Chamenei ist tot.&lt;/strong&gt; Offiziell bestätigt. Was als Truth-Social-Post von Trump und vagen Hinweisen von Netanjahu begann, ist nun Realität.&lt;/p&gt;&#xA;&lt;p&gt;Versteht mich nicht falsch: Ich finde es gut, dass im Iran endlich etwas passiert. Dass die Mullahs „einen auf den Deckel“ bekommen, ist nach Jahrzehnten des Terrors und der Unterdrückung mehr als überfällig. Aber der Beigeschmack ist extrem bitter. Wir reden hier von einem völkerrechtswidrigen Schlag. Es fühlt sich immer mehr so an, als würde die Prämisse „Recht des Stärkeren“ die „Stärke des Rechts“ komplett ablösen. Unser Außenminister sucht zwar noch nach Argumenten für die Selbstverteidigung, aber die Experten sind sich einig: Die Argumente für Selbstverteidigung sind verdammt dünn.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Irgendetwas stimmt gerade ganz gewaltig nicht mit dieser Welt. Eigentlich habe ich es ja eher mit technischen Themen, aber was sich seit dem Wochenende abspielt, lässt mich einfach nicht los. Die Nachrichten haben sich förmlich überschlagen: <strong>Ayatollah Ali Chamenei ist tot.</strong> Offiziell bestätigt. Was als Truth-Social-Post von Trump und vagen Hinweisen von Netanjahu begann, ist nun Realität.</p>
<p>Versteht mich nicht falsch: Ich finde es gut, dass im Iran endlich etwas passiert. Dass die Mullahs „einen auf den Deckel“ bekommen, ist nach Jahrzehnten des Terrors und der Unterdrückung mehr als überfällig. Aber der Beigeschmack ist extrem bitter. Wir reden hier von einem völkerrechtswidrigen Schlag. Es fühlt sich immer mehr so an, als würde die Prämisse „Recht des Stärkeren“ die „Stärke des Rechts“ komplett ablösen. Unser Außenminister sucht zwar noch nach Argumenten für die Selbstverteidigung, aber die Experten sind sich einig: Die Argumente für Selbstverteidigung sind verdammt dünn.</p>
<p>Die Quittung kommt sofort, und zwar direkt an der Zapfsäule. Der Krieg im Iran lässt die Erdgas-Preise nach oben schnellen. Die Straße von Hormus ist dicht, was den Ölpreis heute Morgen um <strong>14 %</strong> steigen lässt. Und hier zeigt sich dann das Versagen unserer Energiepolitik: Das Erneuerbare-Energien-Gesetz (EEG) wurde geschwächt, was uns zurück in die Abhängigkeit von fossilen Energieträgern getrieben hat. Jetzt steigt der Ölpreis und der Gaspreis explodiert.</p>
<p>Unsere Wirtschaftsministerin Frau Reiche hätte die Gasspeicher – da sie Gas ja angeblich „sehr mag“ – mit günstigem Gas vollbekommen können. Aktuell sind die Speicher jedoch nur zu knapp <strong>20 %</strong> gefüllt. Doch Weitsicht und Verantwortungsbewusstsein gegenüber der deutschen Bevölkerung scheinen nicht ihre Stärken zu sein. Auch weil sie Sonnen- und Windkraft ausbremst, wird am Ende der Bürger die Zeche zahlen müssen.</p>
<p>Und dann der politische Zirkus hier: Carsten Linnemann und die Union verkaufen es als „Wahlfreiheit“, dass man nach der Gesetzesänderung im Februar auch nach 2029 noch frei zwischen Gas, Öl oder Wärmepumpe entscheiden darf. Bei den aktuellen Preisexplosionen ist das purer Sarkasmus. Wir sägen an den Anlagen, die uns unabhängig machen könnten, während „alte weiße Männer“ die Welt in Brand setzen.</p>
<p>Aber um noch einmal auf den Iran zu kommen: Das Land wirkt aktuell wie eine explodierende Feuerwerksfabrik, die ihre Raketen unkontrolliert in alle Himmelsrichtungen abfeuert. Ob sich die Gesellschaft aufraffen kann, daraus eine demokratische Republik zu machen? Ich bin da unsicher. Eine Opposition im Iran gibt es quasi nicht. Es ist also völlig offen. Aktuell gibt es niemanden, der das Vakuum füllen könnte, abgesehen von Kräften aus den Reihen der Mullahs.</p>
<p>Aufgrund des gesperrten Luftraumes tun mir die Urlauber allerdings leid, die nun festsitzen. Amüsant ist hingegen das Geheule der Influencer-Fraktion: Erst Deutschland aus Steuergründen verlassen und jetzt lautstark nach Rettung auf Staatskosten plärren, weil sie in Dubai feststecken. Die normalen Urlauber tun mir leid, der Rest ist einfach nur ironisch.</p>
<p>Wir werden abwarten müssen, was kommt. Die Hoffnung für das iranische Volk gebe ich jedenfalls nicht auf.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Digital Independence Day März 2026</title>
      <link>https://cbrueggenolte.de/diday0326/</link>
      <pubDate>Sat, 28 Feb 2026 08:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/diday0326/</guid>
      <description>&lt;p&gt;Morgen ist der dritte &lt;strong&gt;Digital Independence Day&lt;/strong&gt; in 2026. Klick doch mal rüber und schau dir an, ob du nicht auch mit dem ein oder anderen Wechselrezept von BigTech umsteigen möchtest. Es lohnt sich: &lt;a href=&#34;https://di.day&#34;&gt;Digital Independence Day&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ich habe bisher meinen E-Mail-Anbieter gewechselt und auch meine Domain umzuziehen geschafft. Das fühlt sich gut an. Und ob Protonmail oder Tutanota oder Mailbox.org - egal.&lt;/p&gt;&#xA;&lt;p&gt;Wenn du selbst einen Blog schreiben möchtest, habe ich etwas für dich: &lt;a href=&#34;https://goblogger.org&#34;&gt;goblogger.org&lt;/a&gt; – meine einfache App zum Bloggen. Du kannst sie lokal auf deinem PC testen oder beispielsweise bei &lt;a href=&#34;https://uberspace.de&#34;&gt;uberspace&lt;/a&gt; hosten, um sie im Internet zu veröffentlichen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Morgen ist der dritte <strong>Digital Independence Day</strong> in 2026. Klick doch mal rüber und schau dir an, ob du nicht auch mit dem ein oder anderen Wechselrezept von BigTech umsteigen möchtest. Es lohnt sich: <a href="https://di.day">Digital Independence Day</a></p>
<p>Ich habe bisher meinen E-Mail-Anbieter gewechselt und auch meine Domain umzuziehen geschafft. Das fühlt sich gut an. Und ob Protonmail oder Tutanota oder Mailbox.org - egal.</p>
<p>Wenn du selbst einen Blog schreiben möchtest, habe ich etwas für dich: <a href="https://goblogger.org">goblogger.org</a> – meine einfache App zum Bloggen. Du kannst sie lokal auf deinem PC testen oder beispielsweise bei <a href="https://uberspace.de">uberspace</a> hosten, um sie im Internet zu veröffentlichen.</p>
<p><strong>POSSE: Publish (on your) Own Site, Syndicate Elsewhere</strong> – deine Inhalte, deine Seite, deine Kontrolle.</p>
<p>Falls du dich fragst, ob das alles zu kompliziert und schwierig ist, kann ich dir versichern: Nein, ist es nicht. Es mag anfangs etwas unangenehm sein, da es eine positive Veränderung ist, die sich gut anfühlt, wenn man sie erst einmal gewagt hat. Solltest du Hilfe bei deinem digitalen Umzug, der Einrichtung von Linux oder dem Aufsetzen eines Blogs benötigen, stehe ich dir gerne zur Verfügung.  Details zur Kontaktaufnahme findest du auf meiner <a href="/contact">Kontakt-Seite</a>.</p>
<h2 id="ein-wechselrezept-pro-monat">Ein Wechselrezept pro Monat</h2>
<p>Es gilt, jeden Monat ein Wechselrezept auszuprobieren, das dir helfen soll, dich von der Abhängigkeit großer Technologiekonzerne zu lösen. Diese Anleitungen zeigen, wie man von Windows auf Linux umsteigt, OpenStreetMap statt Google Maps nutzt, Microsoft Office gegen LibreOffice tauscht oder alternative E-Mail-Anbieter und Messenger-Dienste ausprobiert.</p>
<p>Besonders das Thema E-Mail ist knifflig. Wer wechselt schon gerne seinen E-Mail-Anbieter? Obwohl E-Mail in der privaten Kommunikation vielleicht nicht mehr so wichtig ist, ist sie im digitalen Alltag unverzichtbar – für Online-Banking, Behördenangelegenheiten und vieles mehr. Manchmal auch nur, um sich auf Social-Media anzumelden. Selbst für Mastodon wirst du eine E-Mail-Adresse benötigen. Deshalb lohnt es sich, sich Zeit zu nehmen und Schritt für Schritt vorzugehen. Ein „Rezept&quot; pro Monat, um vorsichtig aus der Komfortzone herauszutreten.</p>
<p>Und ich kann es nur immer wieder betonen: Es wird gut! Auch wenn es kurzzeitig etwas Aufwand bedeutet, ist es langfristig die bessere Wahl, sich von Big Tech zu distanzieren – besonders im Hinblick auf die zunehmende Integration von KI in Produkte, die wir gar nicht angefordert haben.</p>
<p>Wer noch mehr Informationen braucht oder sich die <a href="https://di.day/de/wechselrezepte">Wechselrezepte</a> anschauen will, der sollte <a href="https://di.day/de">die Webseite vom Digital Independence Day oder dem Digital Unabhängigkeits Tag</a> besuchen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>GoBlogger: Meine eigene Blogging-Software in Go</title>
      <link>https://cbrueggenolte.de/goblogger-eigene-blogging-software/</link>
      <pubDate>Mon, 23 Feb 2026 23:13:39 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/goblogger-eigene-blogging-software/</guid>
      <description>&lt;p&gt;Seit ein paar Tagen schon arbeite ich an einer neuen Blogger-Software, die ich auch schon unter &lt;a href=&#34;https://goblogger.org&#34;&gt;https://goblogger.org&lt;/a&gt; veröffentlicht habe. Es ist eine Software, die in Go geschrieben ist und die ich für meine eigenen Bedürfnisse entwickelt habe. Denn damit will ich in den nächsten Tagen diesen Hugo Blog ersetzen, sobald die Software so weit ist, dass ich damit auch meinen Blog betreiben kann.&lt;/p&gt;&#xA;&lt;p&gt;Noch bin ich fleißig daran am Entwickeln, aber es macht mir sehr viel Spaß. Auch wenn &lt;strong&gt;GoBLogger&lt;/strong&gt; erstmal nur für mich ist, so hoffe ich doch, dass sie auch für andere Schreiberlinge interessant sein könnte. Abgesehen davon, ist es natürlich nicht so einfach einen Hoster zu finden, der auch Go unterstützt. Hier kann ich euch allerdings  &lt;a href=&#34;https://uberspace.de&#34;&gt;uberspace&lt;/a&gt; empfehlen, die ich auch für diesen Blog hier nutze. &amp;ldquo;Hosting on Asteroids&amp;rdquo; ist das Motto von uberspace, und das trifft es ziemlich gut. Bin ich doch selbst schon seit über 10 Jahren dort.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Seit ein paar Tagen schon arbeite ich an einer neuen Blogger-Software, die ich auch schon unter <a href="https://goblogger.org">https://goblogger.org</a> veröffentlicht habe. Es ist eine Software, die in Go geschrieben ist und die ich für meine eigenen Bedürfnisse entwickelt habe. Denn damit will ich in den nächsten Tagen diesen Hugo Blog ersetzen, sobald die Software so weit ist, dass ich damit auch meinen Blog betreiben kann.</p>
<p>Noch bin ich fleißig daran am Entwickeln, aber es macht mir sehr viel Spaß. Auch wenn <strong>GoBLogger</strong> erstmal nur für mich ist, so hoffe ich doch, dass sie auch für andere Schreiberlinge interessant sein könnte. Abgesehen davon, ist es natürlich nicht so einfach einen Hoster zu finden, der auch Go unterstützt. Hier kann ich euch allerdings  <a href="https://uberspace.de">uberspace</a> empfehlen, die ich auch für diesen Blog hier nutze. &ldquo;Hosting on Asteroids&rdquo; ist das Motto von uberspace, und das trifft es ziemlich gut. Bin ich doch selbst schon seit über 10 Jahren dort.</p>
<p>Also. Probiere es doch einfach mal aus und lass mich wissen, was du davon hältst. Es ist natürlich noch nicht perfekt, aber ich bin zuversichtlich, dass es in den nächsten Wochen immer besser wird. Und wer weiß, vielleicht ist es ja auch für dich eine interessante Alternative zu anderen Blogging-Software.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Speicherkrise: Was passiert mit den Chips, wenn die KI-Blase platzt?</title>
      <link>https://cbrueggenolte.de/speicherkrise-was-passiert-wenn-die-ki-blase-platzt/</link>
      <pubDate>Thu, 19 Feb 2026 12:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/speicherkrise-was-passiert-wenn-die-ki-blase-platzt/</guid>
      <description>&lt;p&gt;Wir haben es inzwischen alle gemerkt:&#xA;Die Preise für RAM und SSD-Speicher bewegen sich auf einem Niveau,&#xA;das sich nur schwer nachvollziehen lässt.&lt;/p&gt;&#xA;&lt;p&gt;Gleichzeitig hört man von Produktionsumstellungen,&#xA;eingestellten Fertigungslinien und strategischen Verlagerungen.&#xA;Crucial – eine Marke, die über Jahrzehnte für soliden und bezahlbaren&#xA;Arbeitsspeicher stand – wird &lt;a href=&#34;https://www.igorslab.de/micron-stellt-crucial-ein-strategiewechsel-mit-nebenwirkungen/&#34;&gt;eingestampft&lt;/a&gt;.&#xA;Und &lt;a href=&#34;https://stadt-bremerhaven.de/speicherkrise-ist-wohl-von-dauer-sk-hynix-rechnet-erst-ab-2028-mit-entspannung/&#34;&gt;SK Hynix&lt;/a&gt;, einer der größten Speicherhersteller weltweit,&#xA;rechnet offenbar erst gegen Ende 2027 mit einer Entspannung der Lage.&lt;/p&gt;&#xA;&lt;p&gt;Ich frage mich allerdings, was mit all den Chips passiert,&#xA;sollte die KI-Blase eines Tages platzen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Wir haben es inzwischen alle gemerkt:
Die Preise für RAM und SSD-Speicher bewegen sich auf einem Niveau,
das sich nur schwer nachvollziehen lässt.</p>
<p>Gleichzeitig hört man von Produktionsumstellungen,
eingestellten Fertigungslinien und strategischen Verlagerungen.
Crucial – eine Marke, die über Jahrzehnte für soliden und bezahlbaren
Arbeitsspeicher stand – wird <a href="https://www.igorslab.de/micron-stellt-crucial-ein-strategiewechsel-mit-nebenwirkungen/">eingestampft</a>.
Und <a href="https://stadt-bremerhaven.de/speicherkrise-ist-wohl-von-dauer-sk-hynix-rechnet-erst-ab-2028-mit-entspannung/">SK Hynix</a>, einer der größten Speicherhersteller weltweit,
rechnet offenbar erst gegen Ende 2027 mit einer Entspannung der Lage.</p>
<p>Ich frage mich allerdings, was mit all den Chips passiert,
sollte die KI-Blase eines Tages platzen.</p>
<p>Aktuell wird ein erheblicher Teil der Fertigung auf KI-optimierte
Speicherlösungen ausgerichtet – insbesondere auf High Bandwidth Memory (HBM),
das in Kombination mit spezialisierten Beschleunigern enorme Datenmengen
bewältigen kann.</p>
<p>Wenn die Nachfrage nach KI-Hardware abrupt einbricht,
könnte ein Überangebot an hochspezialisierten Komponenten entstehen –
während klassischer RAM und herkömmliche SSD-Controller weiterhin gefragt bleiben.</p>
<p>Das Risiko: Fehlallokation von Ressourcen.
Und im schlimmsten Fall eine Welle zusätzlicher Elektronikabfälle.</p>
<p>Wenn Speicher zur knappen Ressource wird,
merkt man plötzlich,
wie sehr unsere gesamte digitale Welt davon abhängt.</p>
<p>Vor allem jetzt,
wo KI-Systeme gigantische Mengen an RAM und Storage verschlingen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Verstehen, bevor ich automatisiere</title>
      <link>https://cbrueggenolte.de/verstehen-bevor-ich-automatisiere/</link>
      <pubDate>Wed, 18 Feb 2026 19:19:37 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/verstehen-bevor-ich-automatisiere/</guid>
      <description>&lt;p&gt;Ich versuche seit geraumer Zeit, mich wirklich hinzusetzen und Golang zu lernen.&#xA;Grundlagen verstehen. Nicht nur anwenden, sondern wirklich begreifen.&lt;/p&gt;&#xA;&lt;p&gt;Und dann taucht das nächste Bootcamp auf.&#xA;Alles mit KI. Alles automatisiert.&#xA;„Warum noch selbst programmieren, wenn das System den Code für dich schreibt?“&lt;/p&gt;&#xA;&lt;p&gt;Ich bin ehrlich gesagt ein wenig hin- und hergerissen.&lt;/p&gt;&#xA;&lt;p&gt;Einerseits faszinieren mich die Möglichkeiten.&#xA;Die Tools sind beeindruckend, und es wäre naiv, das zu ignorieren.&lt;/p&gt;&#xA;&lt;p&gt;Andererseits frage ich mich, ob wir gerade dabei sind, uns selbst aus der Gleichung zu nehmen.&#xA;Ob wir noch bauen – oder nur noch prompten?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich versuche seit geraumer Zeit, mich wirklich hinzusetzen und Golang zu lernen.
Grundlagen verstehen. Nicht nur anwenden, sondern wirklich begreifen.</p>
<p>Und dann taucht das nächste Bootcamp auf.
Alles mit KI. Alles automatisiert.
„Warum noch selbst programmieren, wenn das System den Code für dich schreibt?“</p>
<p>Ich bin ehrlich gesagt ein wenig hin- und hergerissen.</p>
<p>Einerseits faszinieren mich die Möglichkeiten.
Die Tools sind beeindruckend, und es wäre naiv, das zu ignorieren.</p>
<p>Andererseits frage ich mich, ob wir gerade dabei sind, uns selbst aus der Gleichung zu nehmen.
Ob wir noch bauen – oder nur noch prompten?</p>
<p>Da klingt der Satz</p>
<blockquote>
<p>Wenn du nicht der KI-Revolution beitrittst, wirst du überflüssig und zurückgelassen.</p>
</blockquote>
<p>plötzlich nicht mehr ganz so motivierend.</p>
<p>Vielleicht ist genau das die eigentliche Frage:
Wie viel KI ist sinnvoll?
Und wo beginnt sie, unsere eigene Kompetenz zu ersetzen?</p>
<p>Noch habe ich ein paar Tage Zeit, bis das neue <a href="https://bootcamp.dev">Bootcamp</a> startet.
Dennoch habe ich mich noch nicht entschieden.</p>
<p>Ich tendiere allerdings dazu, teilzunehmen –
allein um zu sehen, wie die KI-Integration dort tatsächlich aussieht
und um einschätzen zu können, ob das wirklich substanziell ist
oder doch eher gut verpacktes Marketing.</p>
<p>Ich will verstehen, bevor ich automatisiere.
Ich will bauen können, bevor ich delegiere.
Wenn KI ein Werkzeug ist, dann will ich es führen –
nicht von ihm geführt werden.
Vielleicht ist genau das die Kompetenz, die in Zukunft zählt.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Meine Paperless-Struktur: Korrespondenten und Dokumenttypen</title>
      <link>https://cbrueggenolte.de/meine-paperless-struktur-korrespondenten-und-dokumenttypen/</link>
      <pubDate>Mon, 16 Feb 2026 23:30:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/meine-paperless-struktur-korrespondenten-und-dokumenttypen/</guid>
      <description>&lt;p&gt;Ich habe mich endlich mal aufgerafft, meinen Posteingang von Paperless abzuarbeiten.&#xA;Noch sind nicht alle Dokumente mit korrekten Titeln, Korrespondenten und Dokumenttypen versehen,&#xA;aber jedes Dokument, das richtig einsortiert ist, ist eines weniger.&lt;/p&gt;&#xA;&lt;p&gt;Anfangs habe ich mich noch etwas schwergetan, die richtigen Korrespondenten und Dokumenttypen zu finden.&#xA;Es gibt einfach so viele Möglichkeiten, Dokumente einzuordnen.&#xA;Letztendlich habe ich mich für folgende Struktur entschieden.&lt;/p&gt;&#xA;&lt;p&gt;Die Korrespondenten umfassen&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Amt / Behörde&lt;/li&gt;&#xA;&lt;li&gt;Arbeitgeber&lt;/li&gt;&#xA;&lt;li&gt;Banken&lt;/li&gt;&#xA;&lt;li&gt;Energieversorger&lt;/li&gt;&#xA;&lt;li&gt;Händler / Shop&lt;/li&gt;&#xA;&lt;li&gt;Haus / Stadt&lt;/li&gt;&#xA;&lt;li&gt;Internet / Telefon&lt;/li&gt;&#xA;&lt;li&gt;Vermieter&lt;/li&gt;&#xA;&lt;li&gt;Versicherungen&lt;/li&gt;&#xA;&lt;li&gt;Verträge allgemein&lt;/li&gt;&#xA;&lt;li&gt;WebArchiv&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Die Dokumenttypen gliedern sich in&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe mich endlich mal aufgerafft, meinen Posteingang von Paperless abzuarbeiten.
Noch sind nicht alle Dokumente mit korrekten Titeln, Korrespondenten und Dokumenttypen versehen,
aber jedes Dokument, das richtig einsortiert ist, ist eines weniger.</p>
<p>Anfangs habe ich mich noch etwas schwergetan, die richtigen Korrespondenten und Dokumenttypen zu finden.
Es gibt einfach so viele Möglichkeiten, Dokumente einzuordnen.
Letztendlich habe ich mich für folgende Struktur entschieden.</p>
<p>Die Korrespondenten umfassen</p>
<ul>
<li>Amt / Behörde</li>
<li>Arbeitgeber</li>
<li>Banken</li>
<li>Energieversorger</li>
<li>Händler / Shop</li>
<li>Haus / Stadt</li>
<li>Internet / Telefon</li>
<li>Vermieter</li>
<li>Versicherungen</li>
<li>Verträge allgemein</li>
<li>WebArchiv</li>
</ul>
<p>Die Dokumenttypen gliedern sich in</p>
<ul>
<li>Abrechnung</li>
<li>Antrag</li>
<li>Befund</li>
<li>Brief</li>
<li>Fahrzeugpapiere</li>
<li>Information</li>
<li>Quittung</li>
<li>Rechnung</li>
<li>Steuerbescheid</li>
<li>Ticket</li>
</ul>
<p>Damit bin ich schon mal ganz zufrieden und konnte einiges abarbeiten.
Es ist zwar noch einiges zu tun, aber es ist schon mal ein Anfang.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Commerzbank - ein Rant.</title>
      <link>https://cbrueggenolte.de/commerzbank-ein-rant/</link>
      <pubDate>Wed, 11 Feb 2026 21:35:46 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/commerzbank-ein-rant/</guid>
      <description>&lt;p&gt;Heute musste ich schon wieder einmal mit der Commerzbank telefonieren.&#xA;Ich habe keine Ahnung, was diese Bank da eigentlich immer so macht.&#xA;Meine Kreditkarte wurde schon wieder einmal im Onlinegeschäft abgelehnt.&#xA;Was ehrlich gesagt ziemlich irritierend ist.&lt;/p&gt;&#xA;&lt;p&gt;Mal funktioniert sie einen Tag lang, und dann geht sie ein paar Tage wieder nicht.&#xA;Auch kann ich an Bezahlterminals – zum Beispiel in der Kantine – nicht mit ihr bezahlen.&#xA;Warum habe ich diese Karte dann eigentlich?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute musste ich schon wieder einmal mit der Commerzbank telefonieren.
Ich habe keine Ahnung, was diese Bank da eigentlich immer so macht.
Meine Kreditkarte wurde schon wieder einmal im Onlinegeschäft abgelehnt.
Was ehrlich gesagt ziemlich irritierend ist.</p>
<p>Mal funktioniert sie einen Tag lang, und dann geht sie ein paar Tage wieder nicht.
Auch kann ich an Bezahlterminals – zum Beispiel in der Kantine – nicht mit ihr bezahlen.
Warum habe ich diese Karte dann eigentlich?</p>
<p>Nun ja, geht also nicht.
Also in der Banking-App angemeldet und auf Support geklickt.
Dann wird man erst einmal dazu gedrängt, doch bitte diese neue Ava-KI zu benutzen,
die bei mir bisher nicht funktioniert hat
und mir auch schon beim letzten Mal nicht weiterhelfen konnte.
Und selbst beim normalen Anruf aus der App hat man eine sehr künstlich klingende KI-Stimme vorne dran.</p>
<p>Aber ich habe gelernt: Wenn man hier kurz mitmacht und sein Anliegen nennt, wird man schnell durchgestellt.
Bin da quasi schon konditioniert worden.
Mensch unter Maschine oder so.</p>
<p>Der Mitarbeiter am anderen Ende der Leitung hatte einen, ich glaube, italienischen Akzent.
Von der Sprachqualität her könnte er sogar in Italien gesessen haben.
Ich weiß es nicht.
Nicht sein Fehler, sondern eher ein strukturelles Problem einer Bank,
die offenbar Schwierigkeiten mit der Abwicklung ihrer Mastercards hat.</p>
<p>Ich habe ihm dann mein Problem erklärt und gesagt,
dass ich vor zwei Tagen erst mit Liberapay meine Spenden an nrw.social –
ein guter Mastodon-Server im Fediverse –
und an envs.net – ein guter Linux-Host im Fediverse – überwiesen habe.
Und dass letzte Woche eine Zahlung am Terminal in der Kantine funktioniert hat.</p>
<p>Daraufhin hat er mich knapp acht Minuten in der Warteschleife gelassen,
um mir dann mitzuteilen,
dass mein Aktivierungsbrief für das PhotoTan-Verfahren ja schon über zehn Jahre alt sei
und dass es sehr wahrscheinlich damit zusammenhängen könnte.
Wie bitte?
Das soll der Grund sein?</p>
<p>Das halte ich für eher unwahrscheinlich,
da ja sonst alle Online-Transaktionen
und sonstigen Abfragen im Online-Banking funktionieren.
Ganz überzeugt hat mich diese Erklärung nicht.
Aber er kann am Ende auch nur das weitergeben, was sein System ihm anzeigt.
Mensch unter Maschine oder so.</p>
<p>Auf meine Nachfrage, was denn dann passiert, wenn er mir jetzt den Brief zuschickt –
wohl gemerkt, der muss ja in die Niederlande,
und es dauert immer ein wenig, bis hier Post aus good old Germoney ankommt –
meinte er, dass dann quasi ab sofort mein Online-Banking nicht mehr funktionieren würde,
weil sich die PhotoTan-App deaktiviert, sobald der Auftrag raus ist.
Wie bitte?</p>
<p>Das habe ich erst einmal abgelehnt.
Die Kreditkarte wird ohnehin in ein paar Wochen erneuert.
Bis dahin kann ich auch ohne diese eine Karte auskommen.
Falls die neue dann aber ebenfalls nicht zuverlässig funktioniert, werde ich sie kündigen.</p>
<p>Ich habe ehrlich gesagt genug davon und werde in dem Fall auch mein Geld zurückfordern.
Denn was soll ich mit einer Kreditkarte, für die ich bezahle, sie aber nicht zuverlässig nutzen kann?</p>
<p>Und dabei stört mich gar nicht so sehr, dass Zahlungen gelegentlich abgelehnt werden.
Das ist in manchen Fällen durchaus sinnvoll und mit Sicherheit berechtigt.
Doch warum kann einem niemand klar sagen, warum eine Zahlung abgelehnt wurde?
Zumindest nicht bei der Commerzbank.</p>
<p>Hoffen wir, dass mit einer neuen Karte der Spuk vorbei ist.
Mal sehen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Digital Independence Day - Datenschutz und Kontrolle</title>
      <link>https://cbrueggenolte.de/digital-independence-day-datenschutz-und-kontrolle/</link>
      <pubDate>Sun, 08 Feb 2026 15:30:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/digital-independence-day-datenschutz-und-kontrolle/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Jeden ersten Sonntag auf die gute Seite wechseln –&#xA;das ist die Aufforderung der Initiative Digital Independence Day.&#xA;Damit möchte sie gegen Monopole und Abhängigkeiten im Internet ankämpfen&#xA;und auf bessere Alternativen zu Google, X, und Meta hinweisen.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Unser digitales Leben liegt in den Händen weniger Überreicher –&#xA;mit der Monopolstellung ihrer Unternehmen bestimmen Menschen&#xA;wie Elon Musk, Jeff Bezos oder Mark Zuckerberg,&#xA;wie wir uns informieren, kommunizieren und handeln.&#xA;Ein solcher unkontrollierter Einfluss darf keinem Menschen oder Unternehmen gehören.&#xA;Wer Kontrolle zurückgewinnen will, sollte versuchen seine eigene Infrastruktur aufzbauen:&#xA;&lt;strong&gt;Nextcloud&lt;/strong&gt; für sichere Dateisynchronisation&#xA;und &lt;strong&gt;Proxmox&lt;/strong&gt; als flexible Virtualisierungsplattform.&#xA;Eine Schritt-für-Schritt-Anleitung dazu findest du in meinem selbst gehosteten Wiki.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>Jeden ersten Sonntag auf die gute Seite wechseln –
das ist die Aufforderung der Initiative Digital Independence Day.
Damit möchte sie gegen Monopole und Abhängigkeiten im Internet ankämpfen
und auf bessere Alternativen zu Google, X, und Meta hinweisen.</p>
</blockquote>
<p>Unser digitales Leben liegt in den Händen weniger Überreicher –
mit der Monopolstellung ihrer Unternehmen bestimmen Menschen
wie Elon Musk, Jeff Bezos oder Mark Zuckerberg,
wie wir uns informieren, kommunizieren und handeln.
Ein solcher unkontrollierter Einfluss darf keinem Menschen oder Unternehmen gehören.
Wer Kontrolle zurückgewinnen will, sollte versuchen seine eigene Infrastruktur aufzbauen:
<strong>Nextcloud</strong> für sichere Dateisynchronisation
und <strong>Proxmox</strong> als flexible Virtualisierungsplattform.
Eine Schritt-für-Schritt-Anleitung dazu findest du in meinem selbst gehosteten Wiki.</p>
<ul>
<li><a href="https://wiki.zn80.net/books/homelab-infrastructure/chapter/proxmox">Selfhosted Proxmox</a></li>
<li><a href="https://wiki.zn80.net/books/homelab-infrastructure/chapter/nextcloud-installation">Nextcloud installieren</a></li>
</ul>
<p>Wenn du mehr über den Digital Independence Day erfahren möchtest,
habe ich hier noch ein paar Hintergrund Informationen und Links für dich zusammengestellt:</p>
<ul>
<li><a href="https://di.day">Offizielle Website vom DI.DAY</a></li>
<li><a href="https://di.day/alternativen/">Viele Alternativen zu Big.tech</a></li>
<li><a href="https://media.ccc.de/v/39c3-die-kanguru-rebellion-digital-independence-day">Die Kängurur-Rebellion - Digital Independence Day</a> Vortrag von Marc-Uwe Kling auf dem 39C3</li>
<li><a href="https://cultur.social/@marcuwekling">Mark-Uwe Kling Mastodon</a></li>
<li><a href="https://www.ccc.de/en/updates/2025/ccc-unterstutzt-den-monatlichen-digital-independence-day">CCC unterstützt den monatlichen Digital Independence Day</a></li>
<li><a href="https://www.metacheles.de/digital-independence-day-1-email-anbieter-einfach-wechseln/">MeTacheles Podcast</a></li>
<li><a href="https://cultur.social/@pallenberg@mastodon.social">Sascha Pallenberg Mastodon</a></li>
<li><a href="https://edri.org/our-work/didit-edri-members-spark-movement-for-alternatives-to-big-tech/">#DIDit: EDRi members spark movement for alternatives to Big Tech</a></li>
<li><a href="https://www.kuketz-blog.de/unplugbigtech-dein-fahrplan-fuer-ein-freieres-digitales-leben-teil-1/">#UnpLugBigTech</a> Serie im Kuketz Blog</li>
<li>Mastodon Tags <a href="https://mastodon.social/tags/diday">diday</a>, <a href="https://mastodon.social/tags/digitalIndependence">digitalIndependence</a></li>
<li><a href="https://tuta.com/blog/digital-independence-day">Tutanota über den Digital Independence Day</a></li>
</ul>
<p>In den Medien:</p>
<ul>
<li><a href="https://www.br.de/nachrichten/netzwelt/us-boykott-raus-aus-us-digitalkosmos-diese-dienste-ersetzbar,UhftFy2">&ldquo;Digital Independence Day&rdquo;: Abschied von Big Tech</a></li>
<li><a href="https://www.br.de/nachrichten/netzwelt/us-boykott-raus-aus-us-digitalkosmos-diese-dienste-ersetzbar,UhftFy2">Raus aus dem US-Digitalkosmos: Diese fünf Dienste sind ersetzbar</a></li>
<li><a href="https://www.ardaudiothek.de/episode/urn:ard:section:d7167aca36061b13/">Der Digital Independence Day – Gespräch mit Initiator Björn Staschen</a> in der ARD Audiothek</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Noch ein paar Schneeflocken fürs Netz</title>
      <link>https://cbrueggenolte.de/noch-ein-paar-schneeflocken-fuers-netz/</link>
      <pubDate>Mon, 02 Feb 2026 21:05:26 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/noch-ein-paar-schneeflocken-fuers-netz/</guid>
      <description>&lt;p&gt;Vor ein paar Tagen habe ich meinen Snowflake-Proxy wieder aktiviert, und heute möchte ich kurz berichten, wie es läuft.&lt;/p&gt;&#xA;&lt;p&gt;Alleine heute, am 2. Februar 2026, hat mein kleiner privater Tor-Relay wieder ordentlich mitgeholfen, das Netz ein Stückchen freier und anonymer zu machen.&lt;/p&gt;&#xA;&lt;p&gt;In den letzten 22 Stunden (von gestern Abend bis jetzt) wurden insgesamt &lt;strong&gt;rund 13,8 GB&lt;/strong&gt; Traffic weitergeleitet –&#xA;davon satte &lt;strong&gt;12,5 GB Download&lt;/strong&gt; und &lt;strong&gt;1,2 GB Upload&lt;/strong&gt;.&#xA;Besonders zur Rush-Hour um 1–2 Uhr nachts ging es richtig ab: fast &lt;strong&gt;2 GB&lt;/strong&gt; nur runter in einer einzigen Stunde. 🧅💨&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Vor ein paar Tagen habe ich meinen Snowflake-Proxy wieder aktiviert, und heute möchte ich kurz berichten, wie es läuft.</p>
<p>Alleine heute, am 2. Februar 2026, hat mein kleiner privater Tor-Relay wieder ordentlich mitgeholfen, das Netz ein Stückchen freier und anonymer zu machen.</p>
<p>In den letzten 22 Stunden (von gestern Abend bis jetzt) wurden insgesamt <strong>rund 13,8 GB</strong> Traffic weitergeleitet –
davon satte <strong>12,5 GB Download</strong> und <strong>1,2 GB Upload</strong>.
Besonders zur Rush-Hour um 1–2 Uhr nachts ging es richtig ab: fast <strong>2 GB</strong> nur runter in einer einzigen Stunde. 🧅💨</p>
<p>Das sind keine riesigen Exit-Node-Zahlen,
aber für einen normalen Haushalts-Relay mit Restricted NAT fühlt es sich ziemlich gut an.
Jede Verbindung hilft irgendjemandem irgendwo auf der Welt,
Zensur zu umgehen, Journalismus zu schützen oder einfach nur privat zu surfen.</p>
<p>Danke an alle, die Tor nutzen – und falls du selbst überlegst, einen Relay zu betreiben: Es lohnt sich.
Selbst kleine Knoten machen zusammen einen großen Unterschied.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ki, Klima und die Frage der Verhältnismäßigkeit</title>
      <link>https://cbrueggenolte.de/ki-klima-und-die-frage-der-verhaeltnismaessigkeit/</link>
      <pubDate>Thu, 22 Jan 2026 18:53:49 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ki-klima-und-die-frage-der-verhaeltnismaessigkeit/</guid>
      <description>&lt;p&gt;Der Ausgangspunkt war banal: Bilder aus Kamtschatka, außergewöhnliche&#xA;Schneemassen, ein kurzer Austausch im Chat.&#xA;Denn wie so oft blieb es nicht bei der Beobachtung eines Extremereignisses.&#xA;Schnell drehte sich die Diskussion um den Klimadiskurs, um KI-generierte&#xA;Inhalte – und um die Frage, ob und wie der Einsatz von Künstlicher Intelligenz&#xA;selbst Teil des Problems ist.&#xA;&lt;a href=&#34;https://www.mimikama.org/kamtschatka-versinkt-nicht-in-schneemassen/&#34; title=&#34;Nein, Kamtschatka versinkt nicht in hochhaushohen Schneemassen.&#34;&gt;mimikama.at - &amp;ldquo;Nein, Kamtschatka versinkt nicht in hochhaushohen Schneemassen.&amp;rdquo;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Kaum ein Thema wird derzeit so moralisch aufgeladen diskutiert wie KI im Kontext&#xA;des Klimaschutzes oder KI im Allgemeine.&#xA;Zwischen Totalverzicht und&#xA;blindem Technikoptimismus geht dabei häufig etwas Entscheidendes verloren:&#xA;die Frage der Verhältnismäßigkeit.&#xA;Nicht jede Nutzung ist automatisch verantwortungslos,&#xA;nicht jeder Einsatz gesellschaftlich schädlich.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Der Ausgangspunkt war banal: Bilder aus Kamtschatka, außergewöhnliche
Schneemassen, ein kurzer Austausch im Chat.
Denn wie so oft blieb es nicht bei der Beobachtung eines Extremereignisses.
Schnell drehte sich die Diskussion um den Klimadiskurs, um KI-generierte
Inhalte – und um die Frage, ob und wie der Einsatz von Künstlicher Intelligenz
selbst Teil des Problems ist.
<a href="https://www.mimikama.org/kamtschatka-versinkt-nicht-in-schneemassen/" title="Nein, Kamtschatka versinkt nicht in hochhaushohen Schneemassen.">mimikama.at - &ldquo;Nein, Kamtschatka versinkt nicht in hochhaushohen Schneemassen.&rdquo;</a></p>
<p>Kaum ein Thema wird derzeit so moralisch aufgeladen diskutiert wie KI im Kontext
des Klimaschutzes oder KI im Allgemeine.
Zwischen Totalverzicht und
blindem Technikoptimismus geht dabei häufig etwas Entscheidendes verloren:
die Frage der Verhältnismäßigkeit.
Nicht jede Nutzung ist automatisch verantwortungslos,
nicht jeder Einsatz gesellschaftlich schädlich.</p>
<p>Ich bestreite nicht, dass KI erhebliche ökologische Kosten verursachen kann.
Rechenzentren, Energieverbrauch, Rebound-Effekte – all das ist real und relevant.
Problematisch wird es dort, wo KI massenhaft, automatisiert
und ohne jeden Mehrwert eingesetzt wird:
tausende KI-generierte Bilder, Videos und Texte pro Stunde,
oft zur Irreführung, für Hass, Hetze oder schlicht bedeutungslosen AI-Slop.
Genau dort liegt für mich das strukturelle Problem.</p>
<p>Mein eigener Einsatz von KI sieht anders aus.
Ich nutze sie überwiegend lokal und gezielt als Werkzeug:
zum Zusammenfassen, Korrekturlesen, Strukturieren von Texten.
Punktuell, bewusst und mit klarer Funktion.
Ja, auch ich habe aus Neugier ein paar Bilder generiert – ein paar Mal, zum Spaß.
Verantwortung bedeutet für mich Maß zu halten,
nicht jede technisch mögliche Nutzung auch auszureizen.</p>
<p>In der Debatte wird häufig das Argument der Zeitersparnis
als moralisch unzulässig abgetan.
Das halte ich für unehrlich.
Zeit ist eine begrenzte Ressource,
und niemand muss sich dafür schämen, sie sinnvoll einsetzen zu wollen.
Mehr Zeit für Familie, Freunde oder Erholung ist kein triviales Komfortargument,
sondern Teil realer Lebensentscheidungen.
Wir alle bewegen uns ständig in Zielkonflikten zwischen
Arbeit, Einkommen, ökologischer Verantwortung und sozialem Leben.</p>
<p>So zu tun,
als ließen sich diese Konflikte durch individuellen Verzicht vollständig auflösen,
greift zu kurz.
Ja, wir handeln alle in gewissem Maße eigennützig.
Die entscheidende Frage ist nicht ob, sondern wie.
Ob wir Ressourcen verschwenderisch einsetzen oder bewusst.
Ob wir Werkzeuge industrialisieren oder maßvoll nutzen.</p>
<p>Klimaschutz ist mir wichtig.
Verantwortungsvoll mit Ressourcen umzugehen ebenso.
Für mich bedeutet das nicht pauschale Ablehnung von KI,
sondern ein reflektierter Umgang:
keine KI-Agenten, die hunderttausende Inhalte produzieren,
keine gedankenlose Dauerbeschallung des Netzes,
kein technologischer Selbstzweck.
Sondern Nutzung dort, wo sie sinnvoll ist – und Zurückhaltung dort,
wo sie es nicht ist.</p>
<p>Vielleicht mag dieser Text banal oder zu kurz gedacht klingen.
Doch mir war es wichtig, ihn zu schreiben.
Verhältnismäßigkeit ist kein Ausweichen vor Verantwortung –
sie ist eine Voraussetzung dafür, sie ernsthaft wahrzunehmen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Wenn Einer Eine Reise Macht</title>
      <link>https://cbrueggenolte.de/wenn-einer-eine-reise-macht/</link>
      <pubDate>Sat, 10 Jan 2026 12:22:34 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/wenn-einer-eine-reise-macht/</guid>
      <description>&lt;p&gt;Das Sprichwort kennt man: Wenn jemand eine Reise macht, dann kann er etwas erzählen.&#xA;Eigentlich gäbe es gar nicht so viel zu berichten – und doch möchte ich ein paar Gedanken zur Rückreise loswerden.&#xA;Vielleicht auch einfach, um sie für mich abzuschließen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;abschalten-an-bord&#34;&gt;Abschalten an Bord&lt;/h2&gt;&#xA;&lt;p&gt;Der Kurzurlaub auf der Mein Schiff 7 war insgesamt sehr angenehm.&#xA;Die Kabine war in Ordnung, das Essen gut – sofern man das Surf &amp;amp; Turf ausklammert.&#xA;Über La Spezia und das Hideki kann ich nichts Negatives sagen.&#xA;Ausflüge haben wir bewusst keine gemacht.&#xA;Es ging uns darum, dem Alltag zu entfliehen und wirklich abzuschalten.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Das Sprichwort kennt man: Wenn jemand eine Reise macht, dann kann er etwas erzählen.
Eigentlich gäbe es gar nicht so viel zu berichten – und doch möchte ich ein paar Gedanken zur Rückreise loswerden.
Vielleicht auch einfach, um sie für mich abzuschließen.</p>
<h2 id="abschalten-an-bord">Abschalten an Bord</h2>
<p>Der Kurzurlaub auf der Mein Schiff 7 war insgesamt sehr angenehm.
Die Kabine war in Ordnung, das Essen gut – sofern man das Surf &amp; Turf ausklammert.
Über La Spezia und das Hideki kann ich nichts Negatives sagen.
Ausflüge haben wir bewusst keine gemacht.
Es ging uns darum, dem Alltag zu entfliehen und wirklich abzuschalten.</p>
<p>Und genau das hat funktioniert.
Ich habe wieder ein Buch gelesen – zum ersten Mal seit Jahren.
Außerdem habe ich angefangen, handschriftlich Tagebuch zu führen.
Das Schreiben von Hand tut mir gut.
Es hilft mir, Gedanken zu sortieren und Dinge zu reflektieren.
Das möchte ich beibehalten.
Die Tage an Bord waren ruhig, entspannt und genau das, was wir gebraucht haben.</p>
<h2 id="die-rückreise">Die Rückreise</h2>
<p>Die Rückreise war das genaue Gegenteil.</p>
<p>Schon kurz nach unserer Ankunft am Flughafen wurde der Flug von Las Palmas nach Düsseldorf um über eine Stunde verschoben.
Kurz darauf fiel die gesamte Gepäckabfertigung aus – Server-Absturz.
Was folgte, war Chaos und vor allem fehlende Kommunikation.
Keine Durchsagen, keine klaren Informationen, überforderte Mitarbeiter.</p>
<p>Als es schließlich weiterging, war die Abflughalle überfüllt.
An den Schaltern staute sich das Gepäck, Koffer wurden neben den Bändern abgestellt.
Auch die Sicherheitskontrolle war völlig überlastet.
Rücksichtslosigkeit machte sich breit – Kinder und ältere Menschen wurden schlicht übergangen.
Dafür habe ich wenig Verständnis.</p>
<p>Am Gate folgte die nächste Verzögerung.
Und selbst an Bord ging es nicht los:
Falsch verladenes Gepäck musste wegen der Gewichtsverteilung umgeladen werden.
Am Ende starteten wir mit über zwei Stunden Verspätung.</p>
<p>Etwa eine Stunde vor der Landung kam dann die nächste Nachricht:
Aufgrund des Nachtflugverbots in Düsseldorf würden wir in Köln landen.
Busse nach Düsseldorf seien organisiert – so hieß es zumindest.</p>
<p>In Köln stellte sich heraus, dass nicht alle Koffer angekommen waren.
Von den angekündigten Bussen war nach langer Wartezeit nichts zu sehen.
Also standen wir mitten in der Nacht in Köln – ohne Gepäck, ohne Anschluss.</p>
<p>Schließlich brachte uns ein Taxi nach Düsseldorf.
Es war fast 3 Uhr morgens.</p>
<h2 id="danach">Danach</h2>
<p>Die Heimfahrt war angespannt:
Dichter Nebel, Schneematsch und einige Lkw-Fahrer, die bei diesen Bedingungen viel zu schnell unterwegs waren.
Kurz vor 7 Uhr morgens kamen wir schließlich zu Hause an.
Nach einer heißen Dusche fielen wir erschöpft ins Bett.</p>
<p>Die Reise selbst war schön.
Das Feuerwerk auf Madeira war beeindruckend, die Tage an Bord erholsam.
Die Rückreise hingegen war eine einzige Zumutung.</p>
<p>Bis heute hat sich Eurowings nicht gemeldet.
Bekannten zufolge transportiert die Airline Gepäck nur mit regulären Flügen weiter – je nachdem, wo Platz ist.
Es kann also dauern, bis unsere Koffer wieder auftauchen.</p>
<p>Abwarten und Tee trinken.
Mehr bleibt im Moment nicht.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Updates 2025 Q4</title>
      <link>https://cbrueggenolte.de/updates-2025-q4/</link>
      <pubDate>Wed, 31 Dec 2025 23:59:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/updates-2025-q4/</guid>
      <description>Rückblick auf die wichtigsten Updates und Entwicklungen im vierten Quartal 2025.</description>
      <content:encoded><![CDATA[<h2 id="persönliches">Persönliches</h2>
<p>Das Jahr 2025 neigte sich dem Ende zu und ich möchte dieses Update nutzen,
einen <a href="https://news.ycombinator.com/item?id=32975173">wundervollen Text</a> mit dir zu teilen,
den ich vor ein paar Jahren schon einmal gelesen habe.
Leider ist der Account des Autors nicht mehr verfügbar, aber der Text ist zu gut,
um ihn in Vergessenheit geraten zu lassen.
Im <a href="https://web.archive.org/web/20220930061140/https://twitter.com/foone/status/1572260363764400129">WebArchive</a> habe ich eine Kopie gefunden
und präsentiere ihn hier mit einigen zusätzlichen Sprecherinformationen,
um das Lesen zu erleichtern.</p>
<p><strong>Achtung: Der text ist ein wenig lang.
Daher kannst du auch hier klicken,
um zum nächsten Teil des Updates zu springen</strong></p>
<blockquote>
<p>Someday aliens are going to land their saucers in a field somewhere in New Jersey and everything is going to go just fine right up until we try to explain our calendar to them.</p>
<p>Humans: “yeah we divide our year into a number of sub units called ‘months’ made up a number of days, and they’re not all the same length”</p>
<p>Aliens: “I guess that’s unavoidable, if your rotations-count per orbit is a prime number”</p>
<p>Humans: “yeah, our’s isn’t prime”</p>
<p>Aliens: “but surely you have most of these ‘months’ the same length and just make the last one shorter or longer?”</p>
<p>Humans: “No… They’re different lengths following no logical pattern”</p>
<p>Aliens: “what”</p>
<p>Humans: “and we further subdivide the months into ‘weeks’, which is 7 days.”</p>
<p>Aliens: “ahh, so each month is an integer multiple of weeks?”</p>
<p>Humans: “that would make sense, but no. Only one is, sometimes”</p>
<p>Aliens: “SOMETIMES?!”</p>
<p>Humans: “yeah our orbit around the sun isn’t an integer number of days, so we have to change the number of days to in a year from time to time”</p>
<p>Aliens: “oh yes, a similar thing happens on Epsilon Indi 7, where they have to add an extra day every 39 years to keep holidays on track”</p>
<p>Humans: “yeah that’s how ours work! Although the ratio doesn’t work out cleanly, so we just do every 4 years, except every 100 years, except except every 400 years”</p>
<p>Aliens: “oh, you number your years? What’s the epoch?”</p>
<p>Humans: “uh, it’s supposed to be the birth of a religious leader, but they got the math wrong so it’s off by 4 years, if he existed at all.”</p>
<p>Aliens: “if? You based your calendar off the birth date of someone you’re not sure exists?”</p>
<p>Humans: “yeah. He’s written about in a famous book but historical records are spotty.”</p>
<p>Aliens: “interesting. I didn’t realize your planet was one of the ones with a single universal religion, that usually only happens in partial or complete hive minds.”</p>
<p>Humans: “uhh, we’re not.”</p>
<p>Aliens: “You’re not?!”</p>
<p>Humans: “yeah we have multiple religions.”</p>
<p>Aliens: “oh but they all have a common ancestor, which agrees on the existence of that leader, right?”</p>
<p>Humans: “uh, no. Two of the big ones do, but most of the others don’t believe in him”</p>
<p>Aliens: “YOUR CALENDAR IS BASED ON A RELIGIOUS LEADER THAT NOT EVERYONE BELIEVES IN?”</p>
<p>Humans: “well, on his birth. And yeah, we got it wrong by a couple years.”</p>
<p>Aliens: “OK, fine. So, you have somewhat complicated rules about when you change the length of your years, and I’m scared to ask this, but… You definitely just add or subtract that extra day at the end, right?”</p>
<p>Humans: “…. Nope.”</p>
<p>Aliens: “At the start of the year? &quot;</p>
<p>Humans: “nah. The end of the second month”</p>
<p>Aliens: “WHY WOULD IT BE THE SECOND MONTH?”</p>
<p>Humans: “I’m not sure, really.” Aliens: “huh. So at this point I’m dreading asking this, but how do you measure time within each day?”</p>
<p>Humans: “oh that’s much simpler. Each day is divided into hours, each hour has minutes, and each minute has seconds.”</p>
<p>Aliens: “ok. And 10 of each?”</p>
<p>Humans: “10 hours? No. There’s 24 hours, 60 minutes, 60 seconds”</p>
<p>Aliens: “…. I thought you said you used a base-10 counting system”</p>
<p>Humans: “we do! Mostly. But our time system came from some long gone civilization that liked base-60 like 5000 years ago”</p>
<p>Aliens: “and you haven’t changed it since?”</p>
<p>Humans: “No.”</p>
<p>Aliens: “huh. Okay, so why 24? That’s not a divisor of 60”</p>
<p>Humans: “oh because it’s actually 12!”</p>
<p>Aliens: “what”</p>
<p>Humans: “yeah each day is 24 hours but they are divided into two sets of 12.”</p>
<p>Aliens: “and that’s 5 12s, right, I see the logic here, almost. So like, after hour 12, it becomes the second half, which is 1?”</p>
<p>Humans: “No, after 11.”</p>
<p>Aliens: “oh, you zero-index them! So it’s hours 0-11 in the first half, then 12-23 in the second half?”</p>
<p>Humans: “No. 12 to 11 in the first half, and again in the second half”</p>
<p>Aliens: “please explain that before my brain melts out my mouth”</p>
<p>Humans: “the first hour is 12. Then the next one is 1, then it goes back up to 11, then 12 again”</p>
<p>Aliens: “that is not how numbers work. And how do you tell first 12 apart from second 12?”</p>
<p>Humans: “oh we don’t use numbers for that!”</p>
<p>Aliens: “you don’t number the two halves of your day?”</p>
<p>Humans: “nah, we call them AM and PM”</p>
<p>Aliens: “WHAT DOES THAT MEAN”</p>
<p>Humans: “I think it’s ante-meridian and post-meridian? But I’m not sure, I dont know much Latin”</p>
<p>Aliens: “Latin?”</p>
<p>Humans: “yeah it’s an ancient language from an old empire which controlled a lot of the world and we still use some of their terms”</p>
<p>Aliens: “oh, and that was the civilization that liked base-60 and set up your time system?”</p>
<p>Humans: “that would make sense, but… No, completely different one.”</p>
<p>Aliens: “okay, and what do you do to if you want to measure very short times, shorter than a second?”</p>
<p>Humans: “oh we use milliseconds and microseconds”</p>
<p>Aliens: “ahh, those are a 60th of a second and then 60th of the other?”</p>
<p>Humans: “No. Thousandths.”</p>
<p>Aliens: “so you switch to base-10 at last, but only for subdivisions of the second?”</p>
<p>Humans: “yeah.”</p>
<p>Aliens: “but at thousands, ie, ten tens tens”</p>
<p>Humans: “yeah. Technically we have deciseconds and centiseconds, which are 1/10 of a second, and 1/100 of a second, but no one really uses them. We just use milli.”</p>
<p>Aliens: “that seems more like a base-1000 system than a base-10 system.”</p>
<p>Humans: “it kinda is? We do a similar thing with measures of volume and distance and mass.”</p>
<p>Aliens: “but you still call it base-10?”</p>
<p>Humans: “yeah”</p>
<p>Aliens: “so let me see if I get this right: Your years are divided in 10 months, each of which is some variable number of days, the SECOND of which varies based on a complex formula… and each day is divided into two halves of 12 hours, of 60 minutes, 60 seconds, 1000 milliseconds?”</p>
<p>Humans: “12 months, actually.”</p>
<p>Aliens: “right, because of the ancient civilization that liked base-60, and 12 is a divisor of 60.”</p>
<p>Humans: “No, actually, that came from the civilization that used latin. Previously there were 10.”</p>
<p>Aliens: “what”</p>
<p>Humans: “yeah the Latin guys added two months part of the way through their rule, adding two more months. That’s why some are named after the wrong numbers”</p>
<p>Aliens: “you just said two things I am having trouble understanding. 1. Your months are named, not numbered? 2. THE NAMES ARE WRONG?”</p>
<p>Humans: “yep! Our 9th month is named after the number 7, and so on for 10, 11, and 12.”</p>
<p>Aliens: “your 12th month is named… 10?”</p>
<p>Humans: “yeah.”</p>
<p>Aliens: “what are the other ones named after?!”</p>
<p>Humans: “various things. Mainly Gods or rulers”</p>
<p>Aliens: “oh, from that same religion that your epoch is from?”</p>
<p>Humans: “uh… No. Different one.”</p>
<p>Aliens: “so you have an epoch based on one religion, but name your months based on a different one?”</p>
<p>Humans: “yeah! Just wait until you hear about days of the week.”</p>
<p>Aliens: “WHAT”</p>
<p>Humans: “so yeah we group days into 7-day periods-”</p>
<p>Aliens: “which aren’t an even divisor of your months lengths or year lengths?”</p>
<p>Humans: “right. Don’t interrupt”</p>
<p>Aliens: “sorry”</p>
<p>Humans: “but we name the days of the week, rather than numbering them. Funny story with that, actually: there’s disagreement about which day starts the week.”</p>
<p>Aliens: “you have a period that repeats every 7 days and you don’t agree when it starts?”</p>
<p>Humans: “yeah, it’s Monday or Sunday.”</p>
<p>Aliens: “and those names come from…”</p>
<p>Humans: “celestial bodies and gods! The sun and moon are Sunday and Monday, for example”</p>
<p>Aliens: “but… I looked at your planet’s orbit parameters. Doesn’t the sun come up every day?”</p>
<p>Humans: “yeah.”</p>
<p>Aliens: “oh, do you have one of those odd orbits where your natural satellite is closer or eclipsed every 7 days, like Quagnar 4?”</p>
<p>Humans: “no, the sun and moon are the same then as every other day, we just had to name them something.”</p>
<p>Aliens: “and the other days, those are named after gods?”</p>
<p>Humans: “yep!”</p>
<p>Aliens: “from your largest religion, I imagine?”</p>
<p>Humans: “nah. That one (and the second largest, actually) only has one god, and he doesn’t really have a name.”</p>
<p>Aliens: “huh. So what religion are they from? The Latin one again?”</p>
<p>Humans: “nah, they only named one of the God-days”</p>
<p>Aliens: “only on… SO THE OTHER DAYS ARE FROM A DIFFERENT RELIGON ENTIRELY?”</p>
<p>Humans: “Yep!”</p>
<p>Aliens: “the third or forth biggest, I assume?”</p>
<p>Humans: “nah, it’s one that… Kinda doesn’t exist anymore? It mostly died out like 800 years ago, though there are some modern small revivals, of course”</p>
<p>Aliens: “so, let me get confirm I am understanding this correctly. Your days and hours and seconds and smaller are numbered, in a repeating pattern. But your years are numbered based on a religious epoch, despite it being only one religion amongst several.”</p>
<p>Humans: “correct so far”</p>
<p>Aliens: “and your months and days of the week are instead named, although some are named after numbers, and it’s the wrong numbers”</p>
<p>Humans: “exactly”</p>
<p>Aliens: “and the ones that aren’t numbers or rulers or celestial objects are named after gods, right?”</p>
<p>Humans: “yup!”</p>
<p>Aliens: “but the months and the days of the week are named after gods from different religons from the epoch religion, and indeed, each other?”</p>
<p>Humans: “yeah! Except Saturday. That’s the same religion as the month religion”</p>
<p>Aliens: “and the month/Saturday religion is also from the same culture who gave you the 12 months system, and the names for the two halves of the day, which are also named?”</p>
<p>Humans: “right! Well, kinda.”</p>
<p>Aliens: “please explain, slowly and carefully”</p>
<p>Humans: “yeah so cultures before then had a 12 month system, because of the moon. But they had been using a 10 month system, before switching to 12 and giving them the modern names”</p>
<p>Aliens: “the… Moon? Your celestial body?”</p>
<p>Humans: “yeah, it completes an orbit about every 27 days, so which is about 12 times a year, so it is only natural to divide the year into 12 periods, which eventually got called months”</p>
<p>Aliens: “ok, that makes sense. Wait, no. Your orbital period is approximately 365.25 days, right?”</p>
<p>Humans: “yeah. That’s why we do 365 or 366 based on the formula”</p>
<p>Aliens: “but that doesn’t work. 365 divided by 27 is ~13.5, not 12”</p>
<p>Humans: “yeah I’m not sure why 12 was so common then. Maybe it goes back to the base 60 people?”</p>
<p>Aliens: “okay so one final check before I file this report: Years are numbered based on a religious leader. Years always have 12 months, but the lengths of those months is not consistent between each other or between years.”</p>
<p>Humans: “don’t forget the epoch we number our years from is wrong!”</p>
<p>Aliens: “right, yes. And your months are named, some after a different religion, and some after numbers, but not the number the month is in the year.”</p>
<p>Humans: “right. And when we change the month lengths, it’s the second one we change”</p>
<p>Aliens: “how could I forget? After months you have a repeating ‘week’ of 7 days, which is named after gods from two religons, one of which is the month-naming one, and a nearly extinct one. And you don’t agree when the week starts.”</p>
<p>Humans: “nope! My money is on Monday.”</p>
<p>Aliens: “that’s the Monday that’s named after your moon, which supposedly influenced the commonality of the 12 months in a year cycle, despite it orbiting 13 times in a year?”</p>
<p>Humans: “correct!”</p>
<p>Aliens: “and as for your days, they split into two halves, named after a phrase you don’t really understand in the long dead language of the same culture that named the months and Saturday.”</p>
<p>Humans: “Yep. I took some in college but all I remember is like, ‘boy’, ‘girl’, ‘stinky’, ‘cocksucker’”</p>
<p>Aliens: “charming. And then each half is divided into 12 hours, but you start at 12, then go to 1, and up to 11”</p>
<p>Humans: “all I can say is that it makes more sense on analog clocks.”</p>
<p>Aliens: “i don’t know what that is and at this point I would prefer you not elaborate. So each of those hours is divided into 60 minutes and then 60 seconds, and this comes from an ancient civilization, but not the one that gave you the month names”</p>
<p>Humans: “yep. Different guys. Different part of the world.”</p>
<p>Aliens: “ok. And then after seconds, you switch to a ‘base-10’ system, but you only really use multiples of a thousand? Milliseconds and microseconds?”</p>
<p>Humans: “right. And there’s smaller ones beyond that, but they all use thousands”</p>
<p>Aliens: “right. Got it. All written down here. Now if you’ll excuse me, I just gotta go make sure I didn’t leave my interociter on, I’ll be right back.”</p>
<p>The tall alien walks back into their saucer without a wave. The landing ramp closes.</p>
<p>The ship gently lifts off as gangly landing legs retract. There’s a beat, then a sudden whooshing sound as air rushes back into the space that previously held the craft, now suddenly vacuum.</p>
<p>NORAD alarms go off briefly as an object is detected leaving the earth’s atmosphere at a significant fraction of the speed of light.</p>
<p>In the years to come, many technological advances are made from what was left behind, a small tablet shaped object made of some kind of artifical stone/neutrino composite material.</p>
<p>The alien message left on screen is eventually translated to read “Untitled Document 1 has not been saved, are you sure you wish to quit? (yes) (no) (cancel)”</p>
<p>Many years have passed, and we await the day the aliens return. They have not.</p>
</blockquote>
<h2 id="feuerwerksverbot-in-den-niederlanden">Feuerwerksverbot in den Niederlanden</h2>
<p>Anfang des Jahres habe ich darüber berichtet,
dass die Niederlande ein generelles Feuerwerksverbot für Privatpersonen ab 2026 einführen.
Daher werden es sich die Niederländer nicht nehmen lassen,
im letzten Jahr noch einmal alles zu geben, was das Feuerwerk angeht.
Die Berichte in den Online-Medien lassen auch nichts gutes erahnen.
Das ZDF schreibt in einem <a href="https://www.zdfheute.de/politik/ausland/niederlande-boellerverbot-feuerwerk-silvester-100.html">Artikel</a>:</p>
<blockquote>
<p>Feuerwehr, Krankenhäuser und Polizei befürchten eine besonders harte Nacht. Der Verkauf von Feuerwerk ist bereits drastisch gestiegen. Die Branche erwartet, dass etwa 20 Prozent mehr verkauft wird als im Vorjahr.</p>
</blockquote>
<p>Das niederländiche &ldquo;<a href="https://www.om.nl/onderwerpen/jaarwisseling--vuurwerk/vuurwerkbarometer">Feuerwerksbarometer (Vuurwerkbarometer)</a>&rdquo; zeigt auch,
wie viele illegale Feuerwerkskörper im Jahr 2025 bereits beschlagnahmt wurden.
Und im Vergleich zu den Vorjahren sind die Zahlen noch einmal deutlich gestiegen.</p>
<p>Im Jahr 2024 belief sich die Gesamtmenge auf 107.281,55 kg,
verglichen mit 78.895,00 kg im Jahr 2023 und 684.439,90 kg im Jahr 2022.
Für das Jahr 2025 wurde eine Gesamtmenge von 137.352,01 kg verzeichnet,
was im Vergleich zum Vorjahr 2024 einer deutlichen Steigerung von etwa 28,03 % entspricht.</p>
<p>Keine Ahnung was die Menschen so geil daran finden, mit Sprengstoff rumzuspielen.
Feuerwerk ist laut, gefährlich und belastet neben Umwelt auch das Wohlbefinden von Tieren und Menschen.
Es gehört einfach nicht in private Hände.</p>
<h2 id="neues-zu-spielen">Neues zu Spielen</h2>
<p>Zum Ende des Jahres hin, gab es dann auch noch ordentlich was zum Zocken.
Mit Fantasy Life i und Borderlands 4 waren die dunkler und länger werdenen Abende
gut gefüllt. Einige Guides zu den Charakteren habe ich ja hier auch veröffentlicht.</p>
<p>Ein wenig vom Preis für Borderlands 4 konnte ich mir zurückholen,
indem ich meinen alten Gaming-PC verkauft habe.
Aber auch die beiden Borderlands 4 Standard Editionen für PC konnte ich mit einem kleinen Trick weitergeben.
Wir hatten uns ja schon die Deluxe-Version geholt, und was sollte ich mit der zweiten Standard Edition anfangen?</p>
<h2 id="kaffee">Kaffee</h2>
<p>Am Black Friday gab es zahlreiche Aktionen von verschiedenen Kaffeeröstern.
Was soll ich sagen?
Auch wir haben uns schließlich hinreißen lassen,
und ich habe eine Bestellung bei Area 51 Kaffee aufgegeben.
Was wir zu diesem Zeitpunkt jedoch nicht ahnten:
Die Rösterei hat offenbar ihre gesamten Altbestände über diese Aktion abverkauft.</p>
<p>Im Angebot kosteten 250g Kaffee zwar „nur“ 10 Euro,
was jedoch fast dem Preis entspricht,
den ich normalerweise für ein ganzes Kilo zahle.
Regulär ist der Kaffee also mit stolzen 20 Euro pro 250g angesetzt.
Dafür, dass er als Specialty Coffee zu einem solchen Premiumpreis verkauft wird,
ist die Qualität schlichtweg enttäuschend.</p>
<p>Ich habe verschiedene Zubereitungsmethoden getestet:
Siebträger, French Press und AeroPress.
Das Ergebnis war immer gleich – er schmeckt einfach nicht nach gutem Kaffee.
Lediglich im Handfilter war das Aroma halbwegs akzeptabel,
aber auch dort war es weit entfernt von einem Genuss.</p>
<p>Zu allem Überfluss gab es massive Probleme bei der Lieferung.
Bestellt hatte ich 4 Tüten Brasilien, 2 Tüten Äthiopien und 2 Tüten Kolumbien.
Geliefert wurden mir stattdessen erst einmal 8 Tüten Brasilien.
Nach meiner Reklamation wurden die fehlenden Sorten zwar nachgeliefert
und man verzichtete auf die Rücksendung der falschen Ware,
doch nun sitze ich hier auf insgesamt 8 Tüten Brasilien-Kaffee.
Dieser schmeckt mir zwar überhaupt nicht,
aber zum Wegwerfen ist er mir dann doch zu schade.</p>
<h3 id="website-updates">Website-Updates</h3>
<p>Vielleicht ist dir aufgefallen, dass sich hier einiges verändert hat.
Obwohl ich erst zu Beginn des Jahres 2025 mit <strong>Astro</strong> experimentiert habe,
ist mein Interesse an <strong>Golang</strong> stetig gewachsen.
Das hat mich letztlich dazu bewogen,
wieder mit dem Gedanken an eine Rückkehr zu <strong>Hugo</strong> zu spielen – was ich,
wie du an dieser Seite siehst, mittlerweile auch getan habe.</p>
<p>Das Hauptmenü oben ist ebenfalls gewachsen und enthält nun eine vielzahl an Seiten,
sowie einige Links zu anderen Webseiten. Unter anderem auch die <a href="/now">Now-Seite</a>.</p>
<p>Die <strong>Now-Seite</strong> ist genau das, was der Name verspricht:
eine Übersicht dessen, was mich gerade beschäftigt.
Angesichts des Scheiterns der gängigen sozialen Netzwerke habe ich es so gut wie aufgegeben,
klassische öffentliche Profile für Status-Updates zu pflegen.</p>
<p>Meinen <a href="https://nrw.social/@cblte">Mastodon-Account</a> besitze ich noch und bin dort auch weiterhin aktiv,
aber meinen Twitter-Account und mein Facebook-Profil habe ich gelöscht bzw. stillgelegt.
Was Bluesky angeht:
Ich hatte nie einen Account und habe das auch nicht vor;
für mich ist Bluesky im Grunde genauso tot wie Twitter.</p>
<p>Die <strong>Now-Seite</strong> hingegen ist immer noch hier, um zu bleiben.
Hier wird es weiterhin kurze, „Tweet-ähnliche“ Updates zu allen möglichen Themen geben.
Wenn dich das interessiert, schau gerne ab und zu mal vorbei.</p>
<h2 id="infrastruktur-updates">Infrastruktur-Updates</h2>
<h3 id="proxmox-9-upgrade">Proxmox 9 Upgrade</h3>
<p>Ich habe zum Ende des Jahre noch meinen gesamten Proxmox Cluster auf Version 9 aktualisiert.
Das lief insgesamt sehr reibungslos ab. Backups von Nextcloud und den anderen LXCs machte ich vorher natürlich trotzdem.
Danach habe ich den Server platt gemacht, das aktuelle Proxmox installiert und meine Struktur komplett neu aufgebaut.</p>
<p>Nun habe ich eine wesentlich sauberere und übersichtlichere Konfiguration.
Die auch zum ersten Mal eine bessere Domain benutzt.
Hatte ich in der Vergangenheit alle im Homelab auf <code>.home.arpa</code> laufen,
habe ich nun eineS Subdomain meiner Hauptdomain verwendet: <code>.lab.zn80.net</code>.
Das macht die Verwaltung der Zertifikate und DNS-Einträge wesentlich einfacher.
Und ich muss nicht auf jedem Client ein extra Root-Zertifikat installieren,
um die internen Seiten ohne Warnung zu erreichen.
Viel besser!</p>
<h3 id="github-to-codeberg-migration">Github to Codeberg Migration</h3>
<p>Dann habe ich auch einige meiner Github Repositories aufgeräumt
und nach Codeberg umgezogen.
Der Umzug lief dank des <a href="https://codeberg.org/repo/migrate">Github to Codeberg Migrator Tools</a> sehr reibungslos ab.
Es sind noch nicht alle Repositories umgezogen,
aber einiger meiner wichtigsten privaten Repositories haben den Umzug bereits geschafft.</p>
<p>Im laufe des Jahres werde ich dann auch hoffentlich noch alle meine anderen Repositories umziehen können.
Denn das, was Microsoft mit Gihub gemacht hat, nachdem sie es gekauft haben,
gefällt mir überhaupt nicht.</p>
<h3 id="programmierer-updates">Programmierer-Updates</h3>
<p>Da gibt es leider nicht allzuviel zu sagen. Ich habe im Q4 2025 kaum programmiert.
Ein paar kleinere Skripte hier und da, aber nichts nennenswertes.</p>
<p>Habe mich mit der Leaflet.js Bibliothek beschäftigt,
um eine interaktive Karte für ein privates Projekt zu erstellen.
Aber das Projekt ist noch nicht weit genug fortgeschritten,
um es hier zu erwähnen.</p>
<p>Dann habe ich erneut ein wenig mit Go experimentiert,
um meine Fähigkeiten in dieser Sprache weiter zu verbessern.
Allerdings habe ich bisher noch kein größeres Projekt in Go gestartet.
Vielleicht ändert sich das ja im Jahr 2026.</p>
<h2 id="eof">EOF</h2>
<p>Abgesehen davon hoffe ich aufrichtig,
dass du eine wundervolle Weihnachtszeit genießt und dich auf ein großartiges neues Jahr vorbereitest!
Während wir das Jahr 2025 abschließen,
werde ich mir eine wohlverdiente Auszeit von den Beiträgen hier auf der Seite gönnen.
Der Start ins Jahr 2026 zeichnet sich bereits als ziemlich hektisch ab,
und ich freue mich darauf, mich in einige spannende Projekte zu stürzen.</p>
<p>Ich hoffe, diese Zeit beschert dir Momente der Freude,
der Entspannung und wertvolle Stunden mit den Menschen,
die dir am wichtigsten sind.
Möge das neue Jahr voller neuer Möglichkeiten,
aufregender Abenteuer und persönlichem Wachstum sein.
Ich freue mich darauf, im nächsten Jahr wieder von mir hören zu lassen!</p>
<p>Bleib sicher, pass auf dich auf und wir sehen uns in 2026!</p>
]]></content:encoded>
    </item>
    <item>
      <title>disable-javascript.org</title>
      <link>https://cbrueggenolte.de/disable-javascript-org/</link>
      <pubDate>Mon, 22 Dec 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/disable-javascript-org/</guid>
      <description>&lt;p&gt;Kürzlich bin ich über die Website von Marius auf &lt;strong&gt;disable-javascript.org&lt;/strong&gt; gestoßen:&#xA;&lt;a href=&#34;https://%e3%83%9e%e3%83%aa%e3%82%a6%e3%82%b9.com/disable-javascript-org/&#34;&gt;https://マリウス.com/disable-javascript-org/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Die Idee war sofort nachvollziehbar.&#xA;Die Initiative benennt strukturelle Probleme des heutigen, stark JavaScript-getriebenen Webs&#xA;und zeigt auf sachliche, praxisnahe Weise,&#xA;wie sich JavaScript standardmäßig deaktivieren lässt –&#xA;um es anschließend gezielt dort zu aktivieren,&#xA;wo tatsächlich Vertrauen besteht.&lt;/p&gt;&#xA;&lt;p&gt;Die Reaktionen auf die Einführung des Tab-Verhaltens waren aufschlussreich.&#xA;Neben einigen humorvollen Kommentaren zeigte sich auch deutliche Kritik,&#xA;vor allem aus Entwicklerkreisen.&#xA;Der Ansatz wurde als unnötig, feindselig oder sogar extrem dargestellt.&#xA;Häufig ging es dabei weniger um den konkreten Vorschlag&#xA;als um die grundsätzliche Frage,&#xA;ob es überhaupt sinnvoll oder praktikabel sei,&#xA;JavaScript zu deaktivieren.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Kürzlich bin ich über die Website von Marius auf <strong>disable-javascript.org</strong> gestoßen:
<a href="https://%e3%83%9e%e3%83%aa%e3%82%a6%e3%82%b9.com/disable-javascript-org/">https://マリウス.com/disable-javascript-org/</a></p>
<p>Die Idee war sofort nachvollziehbar.
Die Initiative benennt strukturelle Probleme des heutigen, stark JavaScript-getriebenen Webs
und zeigt auf sachliche, praxisnahe Weise,
wie sich JavaScript standardmäßig deaktivieren lässt –
um es anschließend gezielt dort zu aktivieren,
wo tatsächlich Vertrauen besteht.</p>
<p>Die Reaktionen auf die Einführung des Tab-Verhaltens waren aufschlussreich.
Neben einigen humorvollen Kommentaren zeigte sich auch deutliche Kritik,
vor allem aus Entwicklerkreisen.
Der Ansatz wurde als unnötig, feindselig oder sogar extrem dargestellt.
Häufig ging es dabei weniger um den konkreten Vorschlag
als um die grundsätzliche Frage,
ob es überhaupt sinnvoll oder praktikabel sei,
JavaScript zu deaktivieren.</p>
<p>Damit wird der eigentliche Punkt verfehlt.
Und hier stimme ich Marius ausdrücklich zu:
Es geht nicht darum, JavaScript grundsätzlich abzulehnen.
Es geht darum,
nicht blind beliebigen Code auszuführen –
insbesondere nicht aus unbekannten Quellen.
Etablierte Plattformen mögen ein gewisses Maß an Vertrauen verdienen.
Zufällige, unbekannte Seiten tun das nicht.
Beides gleichzubehandeln
ist kein Komfortmerkmal,
sondern ein Sicherheitsproblem.</p>
<p>Was mich dabei besonders irritiert,
ist, wie viele Einwände offenbar daraus entstehen,
dass der Text schlicht nicht gelesen wird.
Die Empfehlung ist klar formuliert:
JavaScript standardmäßig deaktivieren
und dann selektiv dort aktivieren,
wo eine Vertrauensbasis besteht.
Dennoch wird häufig gegen eine Haltung argumentiert,
die so nie vertreten wurde.
Das wirkt weniger wie eine fachliche Debatte
und mehr wie ein Symptom
eines zunehmend oberflächlichen Diskurses.</p>
<p>Zur Klarstellung:
Ich nutze selbst JavaScript.
Auf Seiten mit Code aktiviere ich es bewusst,
etwa um Kopierfunktionen
oder kleine Komfortverbesserungen bereitzustellen.
Genau dieses Verständnis steht hier im Mittelpunkt:
JavaScript als gezielte Erweiterung –
nicht als Voraussetzung,
um Inhalte überhaupt konsumieren zu können.</p>
<p>Der Vorwurf eines „militanten Techno-Minimalismus“
greift daher ins Leere.
Diese Haltung ist weder nostalgisch
noch fortschrittsfeindlich.
Sie stellt vielmehr die Frage
nach sinnvollen Standards.
Inhalte sollten möglichst ohne JavaScript zugänglich bleiben,
mit Skripten als bewusster Ergänzung –
nicht als verpflichtender Ausführungsschicht,
die einfache Seiten
in fragile Laufzeitumgebungen verwandelt.</p>
<p>Eine solche Position als radikal zu bezeichnen,
sagt letztlich mehr
über den Zustand des heutigen Webs aus
als über das Argument selbst.
Skepsis gegenüber der standardmäßigen Ausführung
unvertrauenswürdigen Codes
sollte keine Provokation sein.
Sie sollte selbstverständlich sein.</p>
<p>Genau deshalb halte ich <strong>disable-javascript.org</strong> für relevant.
Die Seite bleibt nicht bei abstrakter Kritik stehen,
sondern macht konkrete Vorschläge:
Sie benennt reale Risiken,
zeigt praktikable Wege auf
und wirbt für ein ausgewogenes Verhältnis
zwischen Sicherheit,
Nutzbarkeit
und Selbstbestimmung.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Simple Admonitions in Astro</title>
      <link>https://cbrueggenolte.de/simple-admonitions-in-astro/</link>
      <pubDate>Fri, 14 Nov 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/simple-admonitions-in-astro/</guid>
      <description>&lt;p&gt;Add &lt;strong&gt;clean, professional, and accessible&lt;/strong&gt; admonition blocks to your Astro site&#xA;— perfect for documentation, tutorials, or blog posts.&lt;/p&gt;&#xA;&lt;p&gt;This guide gives you:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;6 types&lt;/strong&gt;: &lt;code&gt;tip&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;danger&lt;/code&gt;, &lt;code&gt;note&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;caution&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Custom titles&lt;/strong&gt; via &lt;code&gt;[Your Title]&lt;/code&gt; syntax&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Soft stone-themed colors&lt;/strong&gt; (pale, desaturated, readable)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero JavaScript&lt;/strong&gt;, fully static&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;No icons&lt;/strong&gt;, minimal &amp;amp; elegant&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;step-1-install-required-package&#34;&gt;Step 1: Install Required Package&lt;/h2&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;npm install remark-directive&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;step-2-create-the-remark-plugin&#34;&gt;Step 2: Create the Remark Plugin&lt;/h2&gt;&#xA;&lt;p&gt;Create &lt;code&gt;remark-admonition.js&lt;/code&gt; in your project root:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Add <strong>clean, professional, and accessible</strong> admonition blocks to your Astro site
— perfect for documentation, tutorials, or blog posts.</p>
<p>This guide gives you:</p>
<ul>
<li><strong>6 types</strong>: <code>tip</code>, <code>warning</code>, <code>danger</code>, <code>note</code>, <code>info</code>, <code>caution</code></li>
<li><strong>Custom titles</strong> via <code>[Your Title]</code> syntax</li>
<li><strong>Soft stone-themed colors</strong> (pale, desaturated, readable)</li>
<li><strong>Zero JavaScript</strong>, fully static</li>
<li><strong>No icons</strong>, minimal &amp; elegant</li>
</ul>
<hr>
<h2 id="step-1-install-required-package">Step 1: Install Required Package</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">npm install remark-directive</span></span></code></pre></div><hr>
<h2 id="step-2-create-the-remark-plugin">Step 2: Create the Remark Plugin</h2>
<p>Create <code>remark-admonition.js</code> in your project root:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">visit</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;unist-util-visit&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="cm">/** Admonition Plugin – compatible with Astro + ESM + remark-directive */</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kd">function</span> <span class="nx">remarkAdmonitionCompatible</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="k">return</span> <span class="p">(</span><span class="nx">tree</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="nx">visit</span><span class="p">(</span><span class="nx">tree</span><span class="p">,</span> <span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">      <span class="k">if</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="nx">node</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;containerDirective&#39;</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="p">[</span><span class="s1">&#39;tip&#39;</span><span class="p">,</span> <span class="s1">&#39;warning&#39;</span><span class="p">,</span> <span class="s1">&#39;danger&#39;</span><span class="p">,</span> <span class="s1">&#39;note&#39;</span><span class="p">,</span> <span class="s1">&#39;info&#39;</span><span class="p">,</span> <span class="s1">&#39;caution&#39;</span><span class="p">].</span><span class="nx">includes</span><span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">      <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="kr">const</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">data</span> <span class="o">||</span> <span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="p">{});</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="kr">const</span> <span class="nx">type</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="kr">const</span> <span class="nx">titleText</span> <span class="o">=</span> <span class="nx">type</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">+</span> <span class="nx">type</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="c1">// Main element: &lt;div class=&#34;admonition admonition-tip&#34;&gt;
</span></span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="nx">data</span><span class="p">.</span><span class="nx">hName</span> <span class="o">=</span> <span class="s1">&#39;div&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">        <span class="nx">data</span><span class="p">.</span><span class="nx">hProperties</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">          <span class="nx">className</span><span class="o">:</span> <span class="p">[</span><span class="sb">`admonition`</span><span class="p">,</span> <span class="sb">`admonition-</span><span class="si">${</span><span class="nx">type</span><span class="si">}</span><span class="sb">`</span><span class="p">],</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="p">};</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl">        <span class="c1">// Check if the first child is a paragraph (often contains the title)
</span></span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="kr">const</span> <span class="nx">firstChild</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">children</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">        <span class="kd">let</span> <span class="nx">titleContent</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">firstChild</span><span class="o">?</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;paragraph&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">          <span class="kr">const</span> <span class="nx">textContent</span> <span class="o">=</span> <span class="nx">firstChild</span><span class="p">.</span><span class="nx">children</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">            <span class="p">.</span><span class="nx">filter</span><span class="p">((</span><span class="nx">child</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">child</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;text&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">            <span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">child</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">child</span><span class="p">.</span><span class="nx">value</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">            <span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">            <span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">
</span></span><span class="line"><span class="ln">32</span><span class="cl">          <span class="k">if</span> <span class="p">(</span><span class="nx">textContent</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">textContent</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">            <span class="nx">titleContent</span> <span class="o">=</span> <span class="nx">firstChild</span><span class="p">.</span><span class="nx">children</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">            <span class="c1">// Remove the first paragraph, as it is now the title
</span></span></span><span class="line"><span class="ln">35</span><span class="cl">            <span class="nx">node</span><span class="p">.</span><span class="nx">children</span><span class="p">.</span><span class="nx">shift</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">
</span></span><span class="line"><span class="ln">39</span><span class="cl">        <span class="c1">// If no title from content → default title
</span></span></span><span class="line"><span class="ln">40</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">titleContent</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">          <span class="nx">titleContent</span> <span class="o">=</span> <span class="p">[{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;text&#39;</span><span class="p">,</span> <span class="nx">value</span><span class="o">:</span> <span class="nx">titleText</span> <span class="p">}];</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">
</span></span><span class="line"><span class="ln">44</span><span class="cl">        <span class="c1">// Create title element: &lt;p class=&#34;admonition-title&#34;&gt;TIP&lt;/p&gt;
</span></span></span><span class="line"><span class="ln">45</span><span class="cl">        <span class="kr">const</span> <span class="nx">titleNode</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">          <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;paragraph&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">          <span class="nx">data</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">            <span class="nx">hName</span><span class="o">:</span> <span class="s1">&#39;p&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">            <span class="nx">hProperties</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl">              <span class="nx">className</span><span class="o">:</span> <span class="s1">&#39;admonition-title&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">            <span class="p">},</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl">          <span class="p">},</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl">          <span class="nx">children</span><span class="o">:</span> <span class="nx">titleContent</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">        <span class="p">};</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl">
</span></span><span class="line"><span class="ln">56</span><span class="cl">        <span class="c1">// Insert title at the front
</span></span></span><span class="line"><span class="ln">57</span><span class="cl">        <span class="nx">node</span><span class="p">.</span><span class="nx">children</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(</span><span class="nx">titleNode</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="ln">59</span><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl">  <span class="p">};</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><hr>
<h2 id="step-3-update-astroconfigmjs">Step 3: Update <code>astro.config.mjs</code></h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// astro.config.mjs
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineConfig</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;astro/config&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="nx">remarkDirective</span> <span class="nx">from</span> <span class="s1">&#39;remark-directive&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kr">import</span> <span class="nx">remarkAdmonitionCompatible</span> <span class="nx">from</span> <span class="s1">&#39;./remark-admonition.js&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="nx">markdown</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="nx">remarkPlugins</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">      <span class="nx">remarkDirective</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">      <span class="nx">remarkAdmonitionCompatible</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="p">});</span></span></span></code></pre></div><hr>
<h2 id="step-4-add-global-styles">Step 4: Add Global Styles</h2>
<p>Either add the styles to your <code>global.css</code> file
or create <code>src/styles/admonitions.css</code> and import it into your layout.</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c">/* src/styles/admonitions.css */</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mf">1.5</span><span class="kt">rem</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="k">padding</span><span class="p">:</span> <span class="mf">0.75</span><span class="kt">rem</span> <span class="mi">1</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="k">border-left</span><span class="p">:</span> <span class="mi">4</span><span class="kt">px</span> <span class="kc">solid</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="k">border-radius</span><span class="p">:</span> <span class="mf">0.375</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="n">stone</span><span class="mi">-50</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="k">font-size</span><span class="p">:</span> <span class="mf">0.9375</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="k">line-height</span><span class="p">:</span> <span class="mf">1.6</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="o">&gt;</span> <span class="p">:</span><span class="nd">first-child</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="k">margin-top</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="o">&gt;</span> <span class="p">:</span><span class="nd">last-child</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="k">margin-bottom</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="nt">p</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mf">0.5</span><span class="kt">rem</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="n">stone</span><span class="mi">-700</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="nt">p</span><span class="p">:</span><span class="nd">first-of-type</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">  <span class="k">margin-top</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="nt">p</span><span class="p">:</span><span class="nd">last-of-type</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">  <span class="k">margin-bottom</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="c">/* Title */</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="p">.</span><span class="nc">admonition-title</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mf">0.5</span><span class="kt">rem</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">  <span class="k">font-weight</span><span class="p">:</span> <span class="mi">600</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">  <span class="k">font-size</span><span class="p">:</span> <span class="mf">0.8125</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">  <span class="k">text-transform</span><span class="p">:</span> <span class="kc">uppercase</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">  <span class="k">letter-spacing</span><span class="p">:</span> <span class="mf">0.05</span><span class="kt">em</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="n">stone</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="c">/* Tip – Green */</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="p">.</span><span class="nc">admonition-tip</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">green</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">green</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">green</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">
</span></span><span class="line"><span class="ln">50</span><span class="cl"><span class="c">/* Warning – Yellow */</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl"><span class="p">.</span><span class="nc">admonition-warning</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">yellow</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">yellow</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">yellow</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">56</span><span class="cl">
</span></span><span class="line"><span class="ln">57</span><span class="cl"><span class="c">/* Danger – Red */</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl"><span class="p">.</span><span class="nc">admonition-danger</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">59</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">red</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">red</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">red</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">62</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">63</span><span class="cl">
</span></span><span class="line"><span class="ln">64</span><span class="cl"><span class="c">/* Note – Blue */</span>
</span></span><span class="line"><span class="ln">65</span><span class="cl"><span class="p">.</span><span class="nc">admonition-note</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">66</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">blue</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">67</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">blue</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">68</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">blue</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">69</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">70</span><span class="cl">
</span></span><span class="line"><span class="ln">71</span><span class="cl"><span class="c">/* Info – Cyan */</span>
</span></span><span class="line"><span class="ln">72</span><span class="cl"><span class="p">.</span><span class="nc">admonition-info</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">73</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">cyan</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">74</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">cyan</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">75</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">cyan</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">76</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">77</span><span class="cl">
</span></span><span class="line"><span class="ln">78</span><span class="cl"><span class="c">/* Caution – Orange */</span>
</span></span><span class="line"><span class="ln">79</span><span class="cl"><span class="p">.</span><span class="nc">admonition-caution</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">80</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">orange</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">81</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">orange</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">82</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">orange</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">83</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><blockquote>
<p><strong>Import in your layout:</strong></p>
</blockquote>





<pre tabindex="0"><code class="language-astro" data-lang="astro">---
// src/layouts/BlogPost.astro
import &#39;../styles/admonitions.css&#39;;
---</code></pre><hr>
<h2 id="step-5-define-color-variables-optional-but-recommended">Step 5: Define Color Variables (Optional but Recommended)</h2>
<p>If you are not using Tailwind.css as I am, add these color variables to your global CSS or <code>:root</code>:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="p">:</span><span class="nd">root</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  <span class="c">/* Stone */</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="nv">--color-stone-50</span><span class="p">:</span> <span class="mh">#fafaf9</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="nv">--color-stone-700</span><span class="p">:</span> <span class="mh">#44403c</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="nv">--color-stone-800</span><span class="p">:</span> <span class="mh">#292524</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="c">/* Green */</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="nv">--color-green-100</span><span class="p">:</span> <span class="mh">#f0fdf4</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="nv">--color-green-300</span><span class="p">:</span> <span class="mh">#86efac</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="nv">--color-green-800</span><span class="p">:</span> <span class="mh">#166534</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="c">/* Yellow */</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="nv">--color-yellow-100</span><span class="p">:</span> <span class="mh">#fefce8</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">  <span class="nv">--color-yellow-300</span><span class="p">:</span> <span class="mh">#fde047</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">  <span class="nv">--color-yellow-800</span><span class="p">:</span> <span class="mh">#9a3412</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="c">/* Red */</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="nv">--color-red-100</span><span class="p">:</span> <span class="mh">#fef2f2</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">  <span class="nv">--color-red-300</span><span class="p">:</span> <span class="mh">#fca5a5</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">  <span class="nv">--color-red-800</span><span class="p">:</span> <span class="mh">#991b1b</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="c">/* Blue */</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">  <span class="nv">--color-blue-100</span><span class="p">:</span> <span class="mh">#eff6ff</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="nv">--color-blue-300</span><span class="p">:</span> <span class="mh">#93c5fd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">  <span class="nv">--color-blue-800</span><span class="p">:</span> <span class="mh">#1e40af</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl">  <span class="c">/* Cyan */</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">  <span class="nv">--color-cyan-100</span><span class="p">:</span> <span class="mh">#ecfeff</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">  <span class="nv">--color-cyan-300</span><span class="p">:</span> <span class="mh">#67e8f9</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">  <span class="nv">--color-cyan-800</span><span class="p">:</span> <span class="mh">#0e7490</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">
</span></span><span class="line"><span class="ln">32</span><span class="cl">  <span class="c">/* Orange */</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">  <span class="nv">--color-orange-100</span><span class="p">:</span> <span class="mh">#fff7ed</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">  <span class="nv">--color-orange-300</span><span class="p">:</span> <span class="mh">#fdba74</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">  <span class="nv">--color-orange-800</span><span class="p">:</span> <span class="mh">#9c4221</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><hr>
<h2 id="example-usage-in-markdown">Example Usage in Markdown</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-md" data-lang="md"><span class="line"><span class="ln"> 1</span><span class="cl">:::tip[Pro Tip]
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">Use <span class="sb">`Cmd + K`</span> to open the command palette.
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">:::
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">:::warning
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">Never commit your <span class="sb">`.env`</span> file.
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">:::
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">:::danger
</span></span><span class="line"><span class="ln">10</span><span class="cl">This action <span class="gs">**cannot be undone**</span>.
</span></span><span class="line"><span class="ln">11</span><span class="cl">:::
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl">:::note
</span></span><span class="line"><span class="ln">14</span><span class="cl">Astro compiles to static HTML by default.
</span></span><span class="line"><span class="ln">15</span><span class="cl">:::
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl">:::info[Did You Know?]
</span></span><span class="line"><span class="ln">18</span><span class="cl">You can use <span class="sb">`.astro`</span> files inside Markdown with MDX.
</span></span><span class="line"><span class="ln">19</span><span class="cl">:::
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl">:::caution
</span></span><span class="line"><span class="ln">22</span><span class="cl">This feature is experimental — test thoroughly.
</span></span><span class="line"><span class="ln">23</span><span class="cl">:::</span></span></code></pre></div><hr>
<h3 id="result">Result</h3>
<p>:::tip[Pro Tip]
Use <code>Cmd + K</code> to open the command palette.
:::</p>
<p>:::warning
Never commit your <code>.env</code> file.
:::</p>
<p>:::danger
This action <strong>cannot be undone</strong>.
:::</p>
<p>:::note
Astro compiles to static HTML by default.
:::</p>
<p>:::info[Did You Know?]
You can use <code>.astro</code> files inside Markdown with MDX.
:::</p>
<p>:::caution
This feature is experimental — test thoroughly.
:::</p>
<hr>
<h2 id="done">Done</h2>
<p>You now have:</p>
<ul>
<li><strong>6 flexible admonition types</strong></li>
<li><strong>Custom titles</strong> with <code>[Title]</code> syntax</li>
<li><strong>Clean, stone-themed design</strong></li>
<li><strong>Full Astro + ESM compatibility</strong></li>
<li><strong>Zero runtime overhead</strong></li>
</ul>
<blockquote>
<p><strong>Pro tip</strong>: Want <code>success</code> or <code>example</code> later? Just add the name to the array in the plugin and a CSS rule — done.</p>
</blockquote>
<p>Clean. Simple. Powerful.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Thoughts on Angular 20</title>
      <link>https://cbrueggenolte.de/thoughts-on-angular-20/</link>
      <pubDate>Thu, 13 Nov 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/thoughts-on-angular-20/</guid>
      <description>&lt;p&gt;Angular 20 ist nun schon eine Weile veröffentlicht,&#xA;und auch ich lerne weiterhin die neuen Features und Best Practices.&lt;/p&gt;&#xA;&lt;p&gt;Mit dem Release von Angular 20&#xA;haben die Entwickler weit mehr eingeführt&#xA;als das übliche Framework-Housekeeping.&#xA;Das Team treibt einen klaren Wandel voran:&#xA;hin zu saubereren Bezeichnungen,&#xA;domänenorientierten Strukturen&#xA;und einer insgesamt moderneren Projektorganisation.&lt;/p&gt;&#xA;&lt;p&gt;Das habe ich selbst erlebt:&#xA;Nachdem ich meine Tools auf Angular 20 aktualisiert&#xA;und ein neues Projekt mit der Angular CLI erstellt hatte,&#xA;fiel mir in VS Code etwas Merkwürdiges auf.&#xA;VS Code bot plötzlich keinerlei Autovervollständigung mehr&#xA;in meinen HTML-Templates für Properties und Methoden,&#xA;die ich in den zugehörigen TypeScript-Dateien definiert hatte.&#xA;Sogar der gewohnte „Go to Component“-Link war verschwunden.&#xA;Mit anderen Worten:&#xA;Der Editor verstand nicht mehr,&#xA;dass .html- und .ts-Dateien zusammengehörten —&#xA;einfach weil das neue Namensschema nicht erkannt wurde.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Angular 20 ist nun schon eine Weile veröffentlicht,
und auch ich lerne weiterhin die neuen Features und Best Practices.</p>
<p>Mit dem Release von Angular 20
haben die Entwickler weit mehr eingeführt
als das übliche Framework-Housekeeping.
Das Team treibt einen klaren Wandel voran:
hin zu saubereren Bezeichnungen,
domänenorientierten Strukturen
und einer insgesamt moderneren Projektorganisation.</p>
<p>Das habe ich selbst erlebt:
Nachdem ich meine Tools auf Angular 20 aktualisiert
und ein neues Projekt mit der Angular CLI erstellt hatte,
fiel mir in VS Code etwas Merkwürdiges auf.
VS Code bot plötzlich keinerlei Autovervollständigung mehr
in meinen HTML-Templates für Properties und Methoden,
die ich in den zugehörigen TypeScript-Dateien definiert hatte.
Sogar der gewohnte „Go to Component“-Link war verschwunden.
Mit anderen Worten:
Der Editor verstand nicht mehr,
dass .html- und .ts-Dateien zusammengehörten —
einfach weil das neue Namensschema nicht erkannt wurde.</p>
<p>Die Ursache war banal:
Ich nutzte noch eine ältere Version der Angular Language Service Extension.
Wenn du mit VS Code arbeitest,
stelle sicher,
dass Angular Language Service 20.3.3 oder neuer installiert ist.
Diese Version unterstützt die neuen Angular-20-Namenskonventionen vollständig
und stellt IntelliSense sowie Navigation korrekt wieder her.</p>
<p>Ist das erledigt,
funktioniert die Autovervollständigung wieder einwandfrei,
und du kannst die neuen Angular-20-Konventionen konsequent nutzen.</p>
<h2 id="ein-klarerer-namensstil">Ein klarerer Namensstil</h2>
<p>Angular 20 ermutigt Entwickler,
sich vom alten Muster zu lösen,
bei dem der Dateityp im Dateinamen untergebracht wurde:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">user-profile.component.ts
</span></span><span class="line"><span class="ln">2</span><span class="cl">auth.service.ts
</span></span><span class="line"><span class="ln">3</span><span class="cl">highlight.directive.ts</span></span></code></pre></div><p>Stattdessen liegt der Fokus nun auf aussagekräftigen,
domänenorientierten Namen:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">user-profile.ts
</span></span><span class="line"><span class="ln">2</span><span class="cl">auth-store.ts
</span></span><span class="line"><span class="ln">3</span><span class="cl">auth-api.ts
</span></span><span class="line"><span class="ln">4</span><span class="cl">highlight.ts</span></span></code></pre></div><p>Einige Suffixe bleiben —
vor allem dann,
wenn sie tatsächliches Verhalten oder einen Vertrag beschreiben:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">auth-guard.ts
</span></span><span class="line"><span class="ln">2</span><span class="cl">currency-pipe.ts
</span></span><span class="line"><span class="ln">3</span><span class="cl">shared-module.ts</span></span></code></pre></div><p>Die Idee ist einfach:
<strong>Benenne Dinge nach dem, was sie repräsentieren</strong> —
nicht nach dem Angular-Konstrukt,
das sich zufällig darin befindet.
Der Code wirkt dadurch leichter
und deutlich besser lesbar,
insbesondere bei größeren Projekten.</p>
<h2 id="eine-durchdachtere-ordnerstruktur">Eine durchdachtere Ordnerstruktur</h2>
<p>Angular 20 orientiert sich noch stärker
an einer domänengetriebenen Organisation.
Statt eines „features“-Ordners mit etwas von allem
strukturierst du deine App nach Kontexten.</p>
<p>Ein typisches Setup sieht heute so aus:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">src/
</span></span><span class="line"><span class="ln">2</span><span class="cl">└── app/
</span></span><span class="line"><span class="ln">3</span><span class="cl">├── core/
</span></span><span class="line"><span class="ln">4</span><span class="cl">├── domains/
</span></span><span class="line"><span class="ln">5</span><span class="cl">└── shared/</span></span></code></pre></div><h3 id="core--globale-anwendungslogik"><code>core/</code> – Globale Anwendungslogik</h3>
<p>Alles in <code>core</code> gilt app-weit,
ist aber nicht fachlich spezifisch:
Authentifizierung,
Layout-Grundstruktur,
Fehlerbehandlung,
Konfiguration usw.</p>
<p>Beispiel:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">core/
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">auth/
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">guards/
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">auth-guard.ts
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">stores/
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">auth-store.ts
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">pages/
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">login/
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">login.ts
</span></span><span class="line"><span class="ln">10</span><span class="cl">login.html
</span></span><span class="line"><span class="ln">11</span><span class="cl">login.css</span></span></code></pre></div><p>Geroutete Views liegen sauber in einem <code>pages/</code>-Verzeichnis,
damit Navigation klar und nachvollziehbar bleibt.</p>
<h3 id="domains--deine-eigentliche-fachlogik"><code>domains/</code> – Deine eigentliche Fachlogik</h3>
<p>Statt eines großen Sammelordners mit lose gruppierten „Features“
teilst du deine Anwendung in fachliche Bereiche:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">domains/
</span></span><span class="line"><span class="ln">2</span><span class="cl">jobs/
</span></span><span class="line"><span class="ln">3</span><span class="cl">pages/
</span></span><span class="line"><span class="ln">4</span><span class="cl">models/
</span></span><span class="line"><span class="ln">5</span><span class="cl">stores/
</span></span><span class="line"><span class="ln">6</span><span class="cl">services/
</span></span><span class="line"><span class="ln">7</span><span class="cl">jobs.routes.ts
</span></span><span class="line"><span class="ln">8</span><span class="cl">events/
</span></span><span class="line"><span class="ln">9</span><span class="cl">groups/</span></span></code></pre></div><p>Diese Struktur skaliert deutlich besser.
Gerade für mich als jemand,
der Angular noch lernt,
macht sie den Zweck jedes Ordners wesentlich klarer.
Jede Domäne kann sich eigenständig weiterentwickeln,
und Teams können parallel arbeiten,
ohne sich gegenseitig in die Quere zu kommen.</p>
<h3 id="shared--wiederverwendbare-logikunabhängige-bausteine"><code>shared/</code> – Wiederverwendbare, logikunabhängige Bausteine</h3>
<p>Alles hier sollte möglichst „dumm“ und generisch sein:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">shared/
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">components/
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">notification/
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">notification.ts
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">notification.html
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">notification.css
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">pipes/
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">format-date-pipe.ts
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">utils/
</span></span><span class="line"><span class="ln">10</span><span class="cl">string-utils.ts
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl">```text
</span></span><span class="line"><span class="ln">13</span><span class="cl">Eine `notification`-Komponente sollte zum Beispiel nicht wissen,
</span></span><span class="line"><span class="ln">14</span><span class="cl">ob sie eine Sicherheitswarnung
</span></span><span class="line"><span class="ln">15</span><span class="cl">oder eine Erfolgsmeldung
</span></span><span class="line"><span class="ln">16</span><span class="cl">aus einer völlig anderen Domäne anzeigt.
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">## Standalone Components sind der Standard. Nutze das.
</span></span><span class="line"><span class="ln">19</span><span class="cl">
</span></span><span class="line"><span class="ln">20</span><span class="cl">Schon vor einiger Zeit eingeführt,
</span></span><span class="line"><span class="ln">21</span><span class="cl">aber weiterhin relevant:
</span></span><span class="line"><span class="ln">22</span><span class="cl">
</span></span><span class="line"><span class="ln">23</span><span class="cl">Seit Angular 17 sind Standalone Components der Standard,
</span></span><span class="line"><span class="ln">24</span><span class="cl">und Angular 20 setzt diesen Weg konsequent fort.
</span></span><span class="line"><span class="ln">25</span><span class="cl">Ein modernes Setup sieht typischerweise so aus:
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl">```text
</span></span><span class="line"><span class="ln">28</span><span class="cl">app/
</span></span><span class="line"><span class="ln">29</span><span class="cl">app.ts
</span></span><span class="line"><span class="ln">30</span><span class="cl">app.routes.ts
</span></span><span class="line"><span class="ln">31</span><span class="cl">app.config.ts</span></span></code></pre></div><p>Module sind nur noch nötig,
wenn ein spezieller Kompatibilitätsfall es erfordert.
Die meisten Projekte profitieren sofort davon,
Boilerplate zu reduzieren
und Standalone-Komposition vollständig zu nutzen.</p>
<h2 id="fazit">Fazit</h2>
<p>Angular 20 fühlt sich an wie ein bewusster Schritt
hin zu einer saubereren,
skalierbaren Architektur —
nicht durch starre Regeln,
sondern indem der moderne Ansatz zum natürlichen Standard wird.
Wenn deine Tools aktuell sind
(vor allem der Language Server),
verläuft der Umstieg reibungslos und intuitiv.</p>
<h3 id="ein-paar-zentrale-punkte">Ein paar zentrale Punkte</h3>
<ul>
<li>Nutze bewusst gewählte Dateinamen statt <code>.component.ts</code> oder <code>.service.ts</code>.</li>
<li>Strukturiere deine App nach <strong>Domänen</strong>, nicht nach Angular-Konstrukten.</li>
<li>Halte gemeinsame Bausteine bewusst „dumm“.</li>
<li>Setze auf Standalone Components — das Ökosystem ist bereit dafür.</li>
</ul>
<p>Es ist ein guter Zeitpunkt,
ein bestehendes Projekt noch einmal zu überprüfen,
veraltetes Naming-Chaos aufzuräumen
und eine klarere Struktur einzuführen,
die auch langfristig trägt.</p>
<p>Viel Freude beim Coden mit Angular 20!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Rafa Damage King Build - Borderlands 4 Guide</title>
      <link>https://cbrueggenolte.de/rafa-damage-king-build-borderlands-4-guide/</link>
      <pubDate>Tue, 11 Nov 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/rafa-damage-king-build-borderlands-4-guide/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Rafa’s “Gun Damage” setup has quickly become one of the most flexible&#xA;and satisfying builds in &lt;em&gt;Borderlands 4&lt;/em&gt; for me.&#xA;It melts mobs with almost any weapon&#xA;and can turn into a boss-killer with just a few tweaks.&#xA;After quite some iterations, this version finally feels right — strong, fast,&#xA;and simple to maintain without unnecessary gimmicks.&lt;/p&gt;&#xA;&lt;p&gt;[screenshot placeholder: build overview]&lt;/p&gt;&#xA;&lt;h2 id=&#34;core-idea&#34;&gt;Core Idea&lt;/h2&gt;&#xA;&lt;p&gt;This build revolves around &lt;strong&gt;Overdrive&lt;/strong&gt;, Rafa’s Vault Hunter trait.&#xA;Each time you activate your action skill,&#xA;you gain &lt;strong&gt;movement speed and raw damage&lt;/strong&gt; for its entire duration.&#xA;Movement speed is a small bonus —&#xA;but the damage scaling through Overdrive and the &lt;em&gt;Dancer&lt;/em&gt; class mod turns this into a monster.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Rafa’s “Gun Damage” setup has quickly become one of the most flexible
and satisfying builds in <em>Borderlands 4</em> for me.
It melts mobs with almost any weapon
and can turn into a boss-killer with just a few tweaks.
After quite some iterations, this version finally feels right — strong, fast,
and simple to maintain without unnecessary gimmicks.</p>
<p>[screenshot placeholder: build overview]</p>
<h2 id="core-idea">Core Idea</h2>
<p>This build revolves around <strong>Overdrive</strong>, Rafa’s Vault Hunter trait.
Each time you activate your action skill,
you gain <strong>movement speed and raw damage</strong> for its entire duration.
Movement speed is a small bonus —
but the damage scaling through Overdrive and the <em>Dancer</em> class mod turns this into a monster.</p>
<p>The concept is simple:</p>
<ul>
<li>Keep your <strong>action skill active</strong> as long as possible.</li>
<li>Convert your <strong>gun damage boosts</strong> into both <strong>action skill damage</strong> and <strong>overall DPS</strong>.</li>
<li>Maintain Overdrive stacks for as long as there are enemies alive.</li>
</ul>
<p>The result: smooth, uninterrupted mobbing and bossing without ever feeling locked into one weapon type.</p>
<h2 id="action-skill-setup">Action Skill Setup</h2>
<p>We’re using <strong>Peace Breaker Cannons</strong> — medium-power cannons that scale off gun damage through specialization later.
Initially, they were half the build’s focus,
but after refinement they became more of a support mechanic that keeps Overdrive rolling
while amplifying every weapon you pick up.</p>
<h3 id="augments">Augments</h3>
<p><strong>For Bossing:</strong> <em>Bullet Buddy Deluxe</em></p>
<ul>
<li>Regenerates magazine ammo.</li>
<li>Reactivating your action skill grants <strong>8 seconds of unlimited ammo</strong> — absurdly strong for single-target burst.</li>
<li>Works perfectly with shotguns like <em>Hellwalker</em> or the <em>B.O.D.</em></li>
</ul>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4-bullet-buddy-deluxe_hu_97725c65db73190b.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4-bullet-buddy-deluxe_hu_9d8af5748c37eb17.webp" alt="Screenshot Bullet buddy Deluxe" loading="lazy" width="1440" height="1130" /></a></p>
<p><strong>For Mobbing:</strong> <em>Instinto</em></p>
<ul>
<li>Adds <strong>crit chance, crit damage</strong>, and extends <strong>action skill duration per kill</strong>.</li>
<li>Keeps Overdrive and action skill active basically forever in mobbing zones.</li>
</ul>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4-instinto_hu_6a5d43941e3b4b30.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4-instinto_hu_65d9254fa58e2738.webp" alt="Screenshot Instinto" loading="lazy" width="1440" height="1284" /></a></p>
<hr>
<h2 id="skill-allocation">Skill Allocation</h2>
<p>After some tweaking, this distribution feels best balanced between damage, uptime, and consistency.</p>
<h3 id="red-tree--core-damage">Red Tree — Core Damage</h3>
<ul>
<li><strong>5 pts: Sitiar</strong> Straight gun damage (+25%)</li>
<li><strong>5 pts: Juerga</strong> Critical hits extend action skill duration</li>
<li><strong>3 pts: El Valiente</strong> Damage increase based on shield level</li>
<li><strong>1 pt: Resiliencia</strong> Flat damage reduction (scales later through Overdrive)</li>
</ul>
<p>The last point (Resiliencia) is flexible; you can invest it elsewhere if you prefer.</p>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4_dkr_red_hu_502de782b7bf76c2.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4_dkr_red_hu_2078b16780846478.webp" alt="Rafa Red Tree - Remote Agent" loading="lazy" width="1440" height="810" /></a></p>
<h3 id="blue-tree--fire-rate-and-handling">Blue Tree — Fire Rate and Handling</h3>
<p><strong>Top Part:</strong></p>
<ul>
<li><strong>5 pts: Las Jaras</strong> Ammo regeneration</li>
<li><strong>5 pts: The Thrill</strong> Fire rate boost</li>
<li><strong>4 pts: Al Centro</strong> Gun handling to counterbalance later penalties</li>
<li><strong>1 pt: Metal Management</strong> Infinite ammo for 2 seconds on action skill activation</li>
</ul>
<p><strong>Bottom Part:</strong></p>
<ul>
<li><strong>5 pts: Brain Dump</strong> Crit chance (Overdrive skill)</li>
<li><strong>5 pts: El Soldado</strong> Gun damage (Overdrive skill)</li>
<li><strong>5 pts: Jaque</strong> — generates stacks when dealing skill damage; each stack amplifies all Overdrive bonuses (up to 20 × 2.5%)</li>
<li><strong>5 pts: Deadline</strong> — adds reload and fire-rate bonuses</li>
</ul>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4_dkr-blue_hu_df697e500ad4ee9f.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4_dkr-blue_hu_c31186c39501ad2.webp" alt="Rafa Blue Tree - People Person" loading="lazy" width="1440" height="810" /></a></p>
<h3 id="key-mechanic--overdrive-stacking">Key Mechanic — Overdrive Stacking</h3>
<p>With <em>Jaque</em> active, every Overdrive bonus scales per stack — up to +50% effectiveness at 20 stacks.
Combined with the <strong>Dancer class mod</strong> (see below), all Overdrive bonuses are <strong>doubled again</strong>.</p>
<p>This is what makes the build explode in power.</p>
<h3 id="class-mod--the-dancer">Class Mod — <em>The Dancer</em></h3>
<p>This is <strong>the</strong> class mod for Rafa.
It doubles all Overdrive bonuses and ends Overdrive when your action skill expires — which we conveniently prevent through Tito uptime and specialization cooldown tricks.</p>
<p><strong>Best-in-slot roll:</strong></p>
<ul>
<li>+5 points into <em>Temerario</em> (Overdrive gun damage, −handling)</li>
<li>+1 point into <em>Soltado</em> (doubles all Overdrive bonuses for 8 seconds on kill)</li>
<li>Passive: any <strong>damage</strong>, <strong>action skill duration</strong>, or <strong>gun crit</strong> roll</li>
</ul>
<p>Without extra gun handling from the blue tree, your accuracy would nosedive — so keep those four points.
Once this mod is equipped, everything in the build clicks.</p>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4-devastating-dancer-dmg-ascr-5-temerario_hu_83ae108dc9dd8329.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4-devastating-dancer-dmg-ascr-5-temerario_hu_a55464e08040b002.webp" alt="Devastating Dancer with 5 Points into Temerario, &#43;Dmg and &#43; Action Skill Cooldown Rate" loading="lazy" width="1440" height="1531" /></a></p>
<hr>
<h2 id="specializations">Specializations</h2>
<ul>
<li><strong>Riddle You This:</strong> Stacking gun damage up to +50%</li>
<li><strong>In the Zone:</strong> Adds gun and crit damage while ADS</li>
<li><strong>Now with Caffeine:</strong> Reduces action skill cooldown whenever a rep kit triggers — crucial for nonstop uptime</li>
<li><strong>I Am a Gun:</strong> (optional when unlocked) Converts 50% of gun damage boosts into action skill damage</li>
</ul>
<p>Together, these make both cannons and guns feed into one another.</p>
<hr>
<h2 id="6-gear-recommendations">6. Gear Recommendations</h2>
<p>Lets go from top left to bottom right.</p>
<h3 id="rep-kits">Rep Kits</h3>
<ul>
<li><strong>Triple Bypass</strong> – Three charges = three instant action-skill refreshes. Great for boss loops.
Look for rolls with <strong>+Power Cycle</strong> or <strong>Overshield</strong>. One with <strong>+Reload Speed</strong> is nice, but you should not need to reload often.</li>
<li><strong>Shiny War Paint</strong> – +30% fire rate / movement speed. Add <em>Enraged</em> for +30% all-source damage.</li>
<li><strong>Kill Spring</strong> – For mobbing endurance. Converts overkill damage into healing orbs.</li>
</ul>
<p>This is mine at the moment. Still looking for an item with the <em>Bullets to Spare</em> firmware to apply it to mine.</p>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4-mega-tripple-bypass-overshield-high-caliber_hu_4b253101bb483076.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4-mega-tripple-bypass-overshield-high-caliber_hu_990cb14f12dd3fa1.webp" alt="Triple Bypass" loading="lazy" width="1440" height="1671" /></a></p>
<h3 id="ordnances">Ordnances</h3>
<p>While this build focuses on gun damage and Overdrive stacking, a few side tools can make fights smoother — or simply more fun.</p>
<h3 id="crit-knife">Crit Knife</h3>
<p>Once a staple in earlier crit setups, but here it’s <strong>purely optional</strong>.
With roughly <strong>75 % base crit chance</strong>, you’re already landing criticals without effort.
The knife’s extra crit bonus adds little
and can safely stay in storage unless you enjoy the rhythm of weaving in melee hits.</p>
<h3 id="slippy">Slippy</h3>
<p>A personal favorite for leveling and mobbing.
The <em>Slippy</em>’s <strong>ricochet bounce</strong> tears through clustered enemies
and is particularly strong against <em>Vile</em> targets, instantly cracking their crystal armor.</p>
<p>It’s light, fast, and consistent — a perfect sidearm between reloads or during chaotic mobbing sections.
Even in late game, it holds up thanks to its handling speed
and the way it naturally benefits from all your gun buffs.</p>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4_bullseye_slippy_hu_2944d8336a5fbe38.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4_bullseye_slippy_hu_8edb4b223874902.webp" alt="Slippy" loading="lazy" width="1440" height="1579" /></a></p>
<h3 id="class-mod">Class Mod</h3>
<p>There is no substitute for <strong>The Dancer</strong> here. It is by far the best class mod for this build and a mandatory thing.</p>
<p>If you can get one with <strong>+5 Temerario</strong> and <strong>+1 Soldado</strong>, as mentioned above, that’s ideal.
But a <strong>+3 Temerario</strong> roll is still very good but <strong>+1 Soldado</strong> is a must-have for the doubled Overdrive bonuses.</p>
<p>Good rolls in addition to the above are: <strong>Action Skill Damage</strong>, <strong>Skill Damage</strong>, <strong>Gun Damage</strong>.</p>
<h3 id="shields">Shields</h3>
<p>The shield slot in this build is more than just defense — it directly feeds your uptime, damage rhythm, and survivability.</p>
<ul>
<li><strong>Super Soldier:</strong> +25% fire rate / movement when full, +ammo regen. - Best all-round pick. Grants +25 % fire rate and movement when full, plus steady ammo regen. Keeps uptime high in any fight.</li>
<li><strong>Onion Shield:</strong> Great for survivability. Segment breaks give 2 s immunity, perfect for heavy boss phases or chaotic mobbing.</li>
<li><strong>Fireworks:</strong> Adds AoE bursts on shield break or recharge. Not essential, but makes mobbing fast and flashy.</li>
<li><strong>High-capacity purple shields:</strong> Still solid if you prefer consistency and uptime over effects. Keep shields full for the passive +30 % damage bonus from your skills.</li>
</ul>
<h3 id="enhancements">Enhancements</h3>
<p>Hard to farm but impactful.</p>
<p>Recommendations here are <em>Vladof</em> legendary <em>Hero of Bullet</em> enhancements
as they come with <em>Bullet Hose</em> and <em>Box Magazin</em>
which grants 30% of extra projectile per shot and 20% fire rate and 20% magazine size respectively.</p>
<p>For the passives, look for  <strong>+Gun Damage</strong> and <strong>+Gun Critical Damage</strong>.</p>
<p>My current one are these two:</p>
<p><a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4-enhancment-crushing-hero-of-bullet_hu_268e29d4152ff686.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4-enhancment-crushing-hero-of-bullet_hu_edd20f9d5fbac9cc.webp" alt="Crushing Hero of Bullet" loading="lazy" width="1440" height="1454" /></a>
<a href="/rafa-damage-king-build-borderlands-4-guide/borderlands4-enhancment-catastropic-hero-of-bullet_hu_824eca0a941b50bf.webp"><img class="content-image" src="/rafa-damage-king-build-borderlands-4-guide/borderlands4-enhancment-catastropic-hero-of-bullet_hu_187e37742e7fa366.webp" alt="Catastrophic Hero of Bullet" loading="lazy" width="1440" height="1446" /></a></p>
<hr>
<h2 id="7-firmware-loadout">7. Firmware Loadout</h2>
<ul>
<li><strong>3 pts Dead Eye:</strong> +25% accuracy, +25% gun crit damage, +15% crit × 5 stacks</li>
<li><strong>2 pts Bullets to Spare:</strong> +fire rate / +20% mag size</li>
</ul>
<p>Extra bullets + crit scaling synergize beautifully with the constant Overdrive uptime.</p>
<p>The <em>Deadeye</em> firmware is much easier to find on Shields, Class Mods and Enhancements.
Whereas <em>Bullets to Spare</em> is easier to find for Repo Kits and Ordnances (Grenade/Heavy Weapons).</p>
<hr>
<h2 id="8-weapons--tested-and-recommended">8. Weapons — Tested and Recommended</h2>
<p>One reason this build shines: almost every weapon works.
Still, a few deserve special mention.</p>
<h3 id="best-all-rounders">Best All-Rounders</h3>
<ul>
<li><strong>Purple Burri SMG (Jacob’s parts)</strong> – Insane fire-rate noise machine; still one of the best mobbers.</li>
<li><strong>Lucian’s Flank / Lucian’s Coal</strong> – Large mag, great crits, perfect sustained DPS.</li>
<li><strong>Wombo Combo</strong> – Splash weapon with strong AoE potential.</li>
</ul>
<h3 id="snipers">Snipers</h3>
<ul>
<li><strong>Midnight Defiance (Twitch drop)</strong> – Ricochets melt mobs.</li>
<li><strong>Triple XL</strong> – Borderlands 3 <em>Lyuda</em> spiritual successor.</li>
<li><strong>Seven Sense (Jacob’s pistol)</strong> – Homing orbs on reload.</li>
</ul>
<h3 id="bossing-specialists">Bossing Specialists</h3>
<ul>
<li><strong>B.O.D. Shotgun</strong> – “Every gun type in one.” Fires stickies that detonate for absurd burst.</li>
<li><strong>Golden God</strong> – The centerpiece. Infinite ammo + pinpoint accuracy + Overdrive = literal melt mode.
You’ll never let go of the trigger again.</li>
</ul>
<p>[screenshot placeholder: weapons gallery]</p>
<hr>
<h2 id="9-playstyle-notes">9. Playstyle Notes</h2>
<ol>
<li><strong>Activate your action skill before every encounter.</strong>
→ This triggers Overdrive, double damage, and ammo regen.</li>
<li><strong>Keep the cannon running.</strong>
→ Kills refresh duration via <em>Instant Tito</em>.</li>
<li><strong>Cycle rep kits</strong> when cooldown threatens to drop.</li>
<li><strong>Maintain full shields</strong> for the extra 30% damage passive.</li>
<li><strong>Enjoy infinite ammo windows</strong> — switch to your strongest gun and erase everything.</li>
</ol>
<p>Bossing is as simple as triggering Bullet Buddy Deluxe, switching to your Golden God or B.O.D., and watching the health bar vanish.</p>
<hr>
<h2 id="10-final-thoughts">10. Final Thoughts</h2>
<p>This Rafa setup is pure rhythm — <em>shoot, reload, re-trigger, repeat.</em>
It doesn’t rely on cheesy interactions or broken crit knives; it’s just clean synergy between gun power, Overdrive scaling, and uptime management.</p>
<p>If you prefer fluid gameplay where every weapon feels viable and combat never stops, this is the build for you.</p>
<p>[screenshot placeholder: final boss melt montage]</p>
<h3 id="tldr--quick-build-summary">TL;DR — Quick Build Summary</h3>
<table>
	<thead>
			<tr>
					<th style="text-align: left"><strong>Category</strong></th>
					<th style="text-align: left"><strong>Details</strong></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>Vault Hunter</strong></td>
					<td style="text-align: left"><strong>Rafa</strong> — Overdrive trait</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Core Concept</strong></td>
					<td style="text-align: left">Gun Damage &amp; Overdrive stacking build; keeps Action Skill up permanently</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Action Skill</strong></td>
					<td style="text-align: left"><strong>Peace Breaker Cannons</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Augments</strong></td>
					<td style="text-align: left"><strong>Bossing:</strong> Bullet Buddy Deluxe (unlimited ammo 8 s)</td>
			</tr>
			<tr>
					<td style="text-align: left"></td>
					<td style="text-align: left"><strong>Mobbing:</strong> Instant Tito (crits + duration on kill)</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Key Mod</strong></td>
					<td style="text-align: left"><strong>The Dancer</strong> — doubles all Overdrive bonuses</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Best Gear</strong></td>
					<td style="text-align: left">Rep Kit: Triple Bypass / Killspring</td>
			</tr>
			<tr>
					<td style="text-align: left"></td>
					<td style="text-align: left">Shield: Super Soldier / Onion</td>
			</tr>
			<tr>
					<td style="text-align: left"></td>
					<td style="text-align: left">Enhancement: Vlad License Plants</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Weapons</strong></td>
					<td style="text-align: left"><strong>Golden God</strong> (best-in-slot)</td>
			</tr>
			<tr>
					<td style="text-align: left"></td>
					<td style="text-align: left"><strong>B.O.D. Shotgun</strong> (boss melt)</td>
			</tr>
			<tr>
					<td style="text-align: left"></td>
					<td style="text-align: left"><strong>Others</strong>: Burri SMG • Lucian’s Flank • Wombo Combo</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Specializations</strong></td>
					<td style="text-align: left">Riddle You This • In the Zone • Now with Caffeine • I Am a Gun</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Strengths</strong></td>
					<td style="text-align: left">Massive sustained DPS • Infinite ammo uptime • High mobility • Versatile weapon choices</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Weaknesses</strong></td>
					<td style="text-align: left">Needs setup for Overdrive stacks • Mediocre before action skill activation</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Playstyle</strong></td>
					<td style="text-align: left">Keep Action Skill up &gt; Stack Overdrive &gt; Cycle Rep Kits &gt; Unload — repeat</td>
			</tr>
	</tbody>
</table>
]]></content:encoded>
    </item>
    <item>
      <title>Ranger Rafa Build Guide - Borderlands 4</title>
      <link>https://cbrueggenolte.de/ranger-rafa-build-guide-borderlands-4/</link>
      <pubDate>Fri, 07 Nov 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ranger-rafa-build-guide-borderlands-4/</guid>
      <description>&lt;p&gt;This build deals insane damage for all weapons and is my most versatile Rafa build so far!&#xA;Use any weapon, become incredibly tanky and shoot really fast!&#xA;I hope you enjoy the build as much as I did playing this.&lt;/p&gt;&#xA;&lt;p&gt;:::caution&#xA;Still a work in progress, update with more details and screenshots later&#xA;:::&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Build Type:&lt;/strong&gt; Weapon Damage / Overdrive Build&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Playstyle:&lt;/strong&gt; High mobility, constant shooting, strong mobbing &amp;amp; bossing&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Key Mechanic:&lt;/strong&gt; Overdrive skills boost all offensive stats while the Action Skill is active.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Action Skill:&lt;/strong&gt; &lt;em&gt;Peacebreaker Cannons&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Core Idea:&lt;/strong&gt; Stack and multiply Overdrive bonuses for massive weapon damage, fire rate, crit chance, and ammo regeneration – Action Skill runs practically non-stop.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;vault-hunter-trait-overdrive&#34;&gt;Vault Hunter Trait: &lt;strong&gt;Overdrive&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Base Effect: +10% damage during Action Skill.&lt;/li&gt;&#xA;&lt;li&gt;Massively boosted via stacks and class mod (Dancer): weapon damage, fire rate, ammo regeneration, and crit chance.&lt;/li&gt;&#xA;&lt;li&gt;Stacks generated by skills and reset when Overdrive ends.&lt;/li&gt;&#xA;&lt;li&gt;Dancer mod doubles these bonuses while active.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;action-skill-peacebreaker-cannons&#34;&gt;Action Skill: &lt;strong&gt;Peacebreaker Cannons&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Hybrid skill that primarily triggers Overdrive and synergizes with weapon damage.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This build deals insane damage for all weapons and is my most versatile Rafa build so far!
Use any weapon, become incredibly tanky and shoot really fast!
I hope you enjoy the build as much as I did playing this.</p>
<p>:::caution
Still a work in progress, update with more details and screenshots later
:::</p>
<h2 id="overview">Overview</h2>
<ul>
<li><strong>Build Type:</strong> Weapon Damage / Overdrive Build</li>
<li><strong>Playstyle:</strong> High mobility, constant shooting, strong mobbing &amp; bossing</li>
<li><strong>Key Mechanic:</strong> Overdrive skills boost all offensive stats while the Action Skill is active.</li>
<li><strong>Action Skill:</strong> <em>Peacebreaker Cannons</em></li>
<li><strong>Core Idea:</strong> Stack and multiply Overdrive bonuses for massive weapon damage, fire rate, crit chance, and ammo regeneration – Action Skill runs practically non-stop.</li>
</ul>
<h2 id="vault-hunter-trait-overdrive">Vault Hunter Trait: <strong>Overdrive</strong></h2>
<ul>
<li>Base Effect: +10% damage during Action Skill.</li>
<li>Massively boosted via stacks and class mod (Dancer): weapon damage, fire rate, ammo regeneration, and crit chance.</li>
<li>Stacks generated by skills and reset when Overdrive ends.</li>
<li>Dancer mod doubles these bonuses while active.</li>
</ul>
<hr>
<h2 id="action-skill-peacebreaker-cannons">Action Skill: <strong>Peacebreaker Cannons</strong></h2>
<p>Hybrid skill that primarily triggers Overdrive and synergizes with weapon damage.</p>
<h3 id="augments">Augments</h3>
<ol>
<li><strong>Bullet Buddy Deluxe</strong> <em>(Bossing)</em></li>
</ol>
<ul>
<li>Regenerates ammo into the magazine.</li>
<li>On reactivation: 8s unlimited ammo.</li>
<li>Best synergy with shotguns (Hellwalker, Bod).</li>
<li>Top bossing augment.</li>
</ul>
<ol start="2">
<li><strong>Instinto</strong> <em>(Mobbing)</em></li>
</ol>
<ul>
<li>Increases crit chance/damage of cannons.</li>
<li>Extends Action Skill on kill.</li>
<li>Makes Overdrive nearly permanent during mobbing.</li>
</ul>
<hr>
<h2 id="skill-trees">Skill Trees</h2>
<h3 id="red-tree-remote-agent---damage-core">Red Tree (Remote Agent - Damage Core)</h3>
<ul>
<li><strong>5/5 Sitiar</strong> (+25% Gun Damage)</li>
<li><strong>5/5 Crit Hit = Extend Action Skill Duration</strong> (Juerga)</li>
<li><strong>3/3 Shield-Full Damage Buff</strong> (Shield Barriest, up to +30%)</li>
<li><strong>1/1 Damage Reduction</strong> (scales with Overdrive bonuses)</li>
</ul>
<h3 id="blue-tree-people-person---overdrive-focus">Blue Tree (People Person - Overdrive Focus)</h3>
<ul>
<li><strong>5/5 Las Jaras</strong> (Ammo Regen: 2.5% → 12.5% with stacks)</li>
<li><strong>5/5 The Thrill</strong> (Fire Rate +65%)</li>
<li><strong>4/5 Gun Handling</strong> (offsets negative effects from other skills)</li>
<li><strong>1/1 Infinite Ammo for 2s on Action Skill activation</strong></li>
<li><strong>5/5 Crit Chance</strong> (15% → 75%)</li>
<li><strong>5/5 Gun Damage</strong> (30% → 150%)</li>
<li><strong>5/5 Jaque</strong> – increases Overdrive bonuses per stack (20 stacks, +2.5% each)</li>
<li><strong>5/5 Deadline</strong> – Fire Rate + Reload Speed (+25%)</li>
</ul>
<hr>
<h2 id="class-mod-dancer">Class Mod: <strong>Dancer</strong></h2>
<ul>
<li>Essential for the build.</li>
<li>Doubles all Overdrive bonuses (+100%).</li>
<li>Overdrive ends with Action Skill.</li>
<li>Aim to roll these stats:</li>
<li>+5 to red tree gun damage skill</li>
<li>+1 to kill skill that doubles Overdrive bonuses for 8s (Soltado)</li>
<li>Good passives: Action Skill duration, weapon damage, crit damage.</li>
</ul>
<hr>
<h2 id="specializations-perks">Specializations (Perks)</h2>
<ul>
<li><strong>Riddle You This:</strong> +50% stackable weapon damage.</li>
<li><strong>In The Zone:</strong> +Weapon &amp; crit damage while ADS.</li>
<li><strong>Now With Caffeine:</strong> Action Skill cooldown reduction per Rep Kit.</li>
<li><strong>I Am A Gun (Recommended):</strong> Transfers 50% of weapon damage bonus to Action Skill damage.</li>
</ul>
<hr>
<h2 id="gear">Gear</h2>
<h3 id="rep-kits">Rep Kits</h3>
<ol>
<li><strong>Triple Bypass</strong> – 3 charges, instant Action Skill restore.</li>
<li><strong>Shiny War Paint</strong> – +30% fire rate &amp; movement speed (great for bossing).</li>
<li><strong>Killspring</strong> – Converts excess damage to healing orbs; great sustain for mobbing.</li>
</ol>
<h3 id="ordnance">Ordnance</h3>
<ul>
<li><strong>Slippy</strong> – Useful utility and crystal destruction (leveling).</li>
<li><strong>Crit Knife</strong> – Not needed (crit chance already &gt;75%).</li>
</ul>
<h3 id="shields">Shields</h3>
<ul>
<li><strong>Super Soldier:</strong> +25% fire rate &amp; movement speed at full shield, +ammo regeneration.</li>
<li><strong>Firewerks:</strong> Adds explosions for mobbing (optional).</li>
<li><strong>Onion Shield:</strong> Grants 2s immunity on segment break (high survivability).</li>
</ul>
<h3 id="enhancements">Enhancements</h3>
<ul>
<li><strong>Jakobs License Parts:</strong> +20% fire rate &amp; mag size, strong passives:</li>
<li>Doubles weapon damage</li>
<li>Crit damage</li>
<li>Choose enhancements primarily for their passives.</li>
</ul>
<h3 id="-firmware">🔧 Firmware</h3>
<ul>
<li><strong>3 pts Dead Eye:</strong> +25% accuracy, +15% x5 stacks crit damage.</li>
<li><strong>2 pts Bullets to Spare:</strong> +20% mag size, +fire rate.</li>
</ul>
<hr>
<h2 id="weapons">Weapons</h2>
<h3 id="best-for-bossing">Best for Bossing</h3>
<ol>
<li><strong>Bod Shotgun</strong> – Counts as all weapon types; explosive clumps for massive burst.</li>
<li><strong>Golden God</strong> – <em>Top-tier weapon for this build</em></li>
</ol>
<ul>
<li>Infinite fire during Action Skill.</li>
<li>Ammo never runs out due to regeneration.</li>
<li>Perfect accuracy + obliterates all bosses and mobs.</li>
</ul>
<h3 id="good-alternatives">Good Alternatives</h3>
<ul>
<li><strong>Hellwalker:</strong> 8s infinite fire = brutal burst.</li>
<li><strong>Phantom Flame:</strong> Best against flesh targets.</li>
<li><strong>Lucian’s Flank:</strong> Large mag, fast fire rate, versatile.</li>
<li><strong>Midnight Defiance / Finnity XXX-L:</strong> Ricochet sniper; high DPS.</li>
<li><strong>Wombo Combo:</strong> Splash weapon for groups/devils.</li>
<li><strong>Seventh Sense (Jakobs Pistol):</strong> Reload homing orbs = big burst.</li>
<li><strong>Convergence:</strong> Excellent for mobbing (especially with Jakobs parts).</li>
<li><strong>Onslaught / Luty Madlad SMG:</strong> Insane fire rate (17–22 rounds/s).</li>
<li><strong>Rowan’s Charge / Chuck AR:</strong> Niche-specific strong variants.</li>
</ul>
<hr>
<h2 id="playstyle--tips">Playstyle &amp; Tips</h2>
<ul>
<li>Keep Action Skill <strong>always active</strong> (Instinto + Rep Kit + Caffeine).</li>
<li>For mobbing: Chain kills to extend duration.</li>
<li>For bossing: Switch to Bullet Buddy Deluxe for 8s unlimited ammo and melt phases.</li>
<li>Keep shield always full for +30% damage bonus.</li>
<li>Prioritize <strong>Overdrive uptime</strong> and stacking – that&rsquo;s your main power source.</li>
<li>With active Dancer mod, total Overdrive bonuses can reach:</li>
<li>+150% weapon damage</li>
<li>+75% crit chance</li>
<li>+125% reload</li>
<li>+65% fire rate</li>
<li>+12.5% ammo regeneration</li>
</ul>
<hr>
<h2 id="summary--why-this-build-works">Summary – Why This Build Works</h2>
<ul>
<li>Near-permanent Action Skill uptime</li>
<li>Infinite ammo loops</li>
<li>+500%+ effective DPS during Overdrive</li>
<li>Strong at mobbing and bossing</li>
<li>Easy to play, extremely high reward</li>
<li>Synergizes with nearly every weapon archetype</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>KI: Der Tod des Internet (arte)</title>
      <link>https://cbrueggenolte.de/ki-der-tod-des-internet-arte/</link>
      <pubDate>Wed, 15 Oct 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ki-der-tod-des-internet-arte/</guid>
      <description>&lt;p&gt;Die Doku von Marius Sixtus &lt;a href=&#34;https://www.arte.tv/de/videos/122187-000-A/ki-der-tod-des-internets/&#34;&gt;KI: Der Tod des Internet&lt;/a&gt; beleuchtet, wie auch schon das Kurzgesagt Video zu AI Slop, sehr eindrucksvoll wie das Internet mit sinnfreiem, herzlosem Mūll geflutet wird.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Das Internet wird überschwemmt von KI-generiertem Müll. Automatisierte Bots produzieren eine Flut aus KI-generierten Inhalten, der das Internet zu ersticken droht. Der Wissensraum wird mit Desinformation, Propaganda und synthetischen Bildern und Tönen geflutet. Werden wir bald nur noch Informationen bekommen, mit der die KI uns füttert?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die Doku von Marius Sixtus <a href="https://www.arte.tv/de/videos/122187-000-A/ki-der-tod-des-internets/">KI: Der Tod des Internet</a> beleuchtet, wie auch schon das Kurzgesagt Video zu AI Slop, sehr eindrucksvoll wie das Internet mit sinnfreiem, herzlosem Mūll geflutet wird.</p>
<blockquote>
<p>Das Internet wird überschwemmt von KI-generiertem Müll. Automatisierte Bots produzieren eine Flut aus KI-generierten Inhalten, der das Internet zu ersticken droht. Der Wissensraum wird mit Desinformation, Propaganda und synthetischen Bildern und Tönen geflutet. Werden wir bald nur noch Informationen bekommen, mit der die KI uns füttert?</p>
</blockquote>
<p>Mein Versuch, Referenzen und Links aus der Dokumentation zusammenzutragen:</p>
<ul>
<li>Shrimp-Jesus <a href="https://www.404media.co/email/1cdf7620-2e2f-4450-9cd9-e041f4f0c27f/">404 Media</a> / <a href="https://archive.ph/4qUBj">archive.ph</a></li>
<li>Journalist Max Reed <a href="https://nymag.com/intelligencer/article/ai-generated-content-internet-online-slop-spam.html">&ldquo;Drowning in Slop&rdquo; nytimes.com</a> / <a href="https://archive.ph/y3VLK">archive.ph</a></li>
<li>Pseudo-Journalistischer-Quatsch</li>
<li>Lidl - Osterhasen vs. Sitzhasen <a href="https://www.tagesschau.de/faktenfinder/osterhase-sitzhase-100.html">tagesschau</a> / <a href="https://archive.ph/yVIxL">archive.ph</a></li>
<li>Mats Schönauer <a href="https://uebermedien.de/author/mats-schoenauer/">übermedien</a> / <a href="https://topfvollgold.de/">topfvollgold</a></li>
<li>Emanuel Maiberg <a href="https://www.404media.co/author/emanuel-maiberg/">404 Media</a> / <a href="https://muckrack.com/emanuelmaiberg">muckrack</a></li>
<li>‘Life or Death:’ AI-Generated Mushroom Foraging Books Are All Over Amazon <a href="https://www.404media.co/ai-generated-mushroom-foraging-books-amazon/">404media</a> / <a href="https://archive.ph/yVeKr">archived TheGuardian</a></li>
<li>Blog-Artiekl über Helene v. Waldgraben <a href="https://www.die-glyx-diaet.de/de/xunt-beitrag/blog/wer-ist-hellene-waldgraben.htm">Wer hat das geschrieben (die glyx diät)</a></li>
<li>Süddeutsche Zeitung: Tausend Seiten in zehn Tagen <a href="https://www.sueddeutsche.de/kultur/kuenstliche-intelligenz-buecher-lux.HmNERnPf3DdbsMR6rmAYmz">sz.de</a> / <a href="https://archive.ph/XRJKk">archive.ph</a></li>
<li>Melanie Mitchell <a href="https://melaniemitchell.me/">website</a> / <a href="https://melaniemitchell.me/aibook/">AI Book</a></li>
<li>Sänger und Dichter Nick Cave <a href="https://www.theredhandfiles.com">website</a> / <a href="https://archive.ph/ifEvR#selection-233.172-233.453">Chat GPT What Do You Think: Data Does not Suffer</a></li>
<li>Studie &lsquo;Warum KI-Lyrik als besser empfunden wird&rsquo; <a href="https://www.tagesschau.de/wissen/forschung/ki-gedichte-100.html">tagessschau</a> / <a href="https://archive.ph/fGwjP">archive.ph Tagesschau</a> / <a href="https://www.nature.com/articles/s41598-024-76900-1">Nature.com</a> / <a href="https://archive.ph/kmlHM">archive.ph Nature.com</a></li>
<li>Amba Kak Direktorin des <a href="https://ainowinstitute.org/">AI Now Institues</a> <a href="https://en.wikipedia.org/wiki/Amba_Kak">wikipedia</a></li>
<li>Anti-KI-Güte Siegel - <a href="https://authorsguild.org/human-authored/">The Authors Guild</a></li>
<li>Stereogum <a href="https://www.stereogum.com/2278906/fbi-arrests-musician-for-streaming-fraud-claiming-he-collected-10m-from-hundreds-of-thousands-ai-generated-songs/news/">FBI Arrests Musician For Streaming Fraud, Claiming He Collected $10M From Hundreds Of Thousands AI-Generated Songs</a></li>
<li><a href="https://www.br.de/nachrichten/netzwelt/ki-musik-bei-spotify-band-existiert-nicht,UZ5lrvN">KI-Musik bei Spotify: Diese Band existiert nicht</a></li>
<li><a href="https://harpers.org/archive/2025/01/the-ghosts-in-the-machine-liz-pelly-spotify-musicians/">The Ghosts in the Machine</a></li>
<li><a href="https://www.honest-broker.com/p/the-ugly-truth-about-spotify-is-finally">The Ugly Truth About Spotify Is Finally Revealed</a></li>
<li>John Perry Barlow <a href="https://en.wikipedia.org/wiki/John_Perry_Barlow">Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/A_Declaration_of_the_Independence_of_Cyberspace">A Declaration of the Independence of Cyberspace</a></li>
<li><a href="https://www.eff.org/cyberspace-independence">EFF Website: A Declaration of the Independence of Cyberspace</a></li>
<li>Cory Doctorow <a href="https://en.wikipedia.org/wiki/Cory_Doctorow">Wikipedia</a> / Website <a href="https://pluralistic.net/">Pluralistic.net</a></li>
<li>Enshittification <a href="https://craphound.com/category/enshittification/">Craphound</a></li>
<li>Dublin Fake Parade Hoax - <a href="https://www.bbc.com/news/articles/cjr4y1j91x7o">BBC</a> - Es war wohl ein Missverständnis <a href="https://www.bbc.com/news/articles/czd5319pz2ro">Website owner says Dublin Halloween parade listing a &lsquo;mistake&rsquo;</a></li>
<li>Barack Hussein Obama ist kein Moslem - <a href="https://www.factcheck.org/2017/01/eight-years-of-trolling-obama/">Eight Years of Trolling Obama</a></li>
<li><a href="https://www.the-independent.com/tech/bots-internet-traffic-ai-chatgpt-b2733450.html">Bots now make up the majority of all internet traffic</a></li>
<li>Evan Ratcliff <a href="https://cazart.net/">Website</a> - <a href="https://www.shellgame.co/">Shell Game Podcast</a></li>
<li>Der Erste Chatbot der Welt: Josef Weizenbaums ELIZA <a href="https://de.wikipedia.org/wiki/ELIZA">Wikipedia</a></li>
<li><a href="https://archive.ph/ZDlXc#selection-1173.0-1173.80">Weizenbaum’s nightmares: how the inventor of the first chatbot turned against AI</a></li>
<li>AI Companies lügen euch an <a href="https://brianjenney.medium.com/theyre-lying-to-you-about-ai-productivity-92a53ac4d8f4">They’re Lying to You About AI Productivity</a></li>
<li>Datenbearbeiterin und Aktivistin <a href="https://re-publica.com/en/user/22161">Joan Kinyua</a></li>
<li>Computerwissenschaftlerin, Weizenbaum-Institut <a href="https://www.weizenbaum-institut.de/en/portrait/p/milagros-miceli/">Milagros Miceli</a></li>
<li>Warum Menschen sich aus den sozialen Medien verabschieden - <a href="https://www.jetzt.de/digital/rueckzug-aus-social-media-twitter-instagram-hate-speech">Und dann auf „Account löschen“ klicken</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>LG webOS 2025 – Ein Erfahrungsbericht zwischen Wahnsinn und Wow</title>
      <link>https://cbrueggenolte.de/lg-webos-2025-ein-erfahrungsbericht-zwischen-wahnsinn-und-wow/</link>
      <pubDate>Wed, 08 Oct 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/lg-webos-2025-ein-erfahrungsbericht-zwischen-wahnsinn-und-wow/</guid>
      <description>&lt;p&gt;Gestern haben wir unseren neuen &lt;strong&gt;LG OLED C5 (OLED55C55LA)&lt;/strong&gt; eingerichtet.&#xA;Oder sagen wir besser: &lt;em&gt;Wir haben uns von webOS einrichten lassen – auf einem recht turbulenten Weg zum Ziel.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;einrichtung--sieben-häkchen-später&#34;&gt;Einrichtung – sieben Häkchen später&lt;/h2&gt;&#xA;&lt;p&gt;Schon die ersten Minuten ließen nichts Gutes ahnen.&#xA;Übersetzungen, die klingen, als wären sie durch mehrere Übersetzer-Engines gewandert.&#xA;Fünf bis sieben &lt;strong&gt;Nutzungsbedingungen&lt;/strong&gt;, je nach Landeseinstellung.&#xA;Wer alles brav bestätigt, darf fortfahren – andernfalls bleibt der Fernseher im gefühlten &lt;strong&gt;Setup-Karussell&lt;/strong&gt; stecken.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gestern haben wir unseren neuen <strong>LG OLED C5 (OLED55C55LA)</strong> eingerichtet.
Oder sagen wir besser: <em>Wir haben uns von webOS einrichten lassen – auf einem recht turbulenten Weg zum Ziel.</em></p>
<h2 id="einrichtung--sieben-häkchen-später">Einrichtung – sieben Häkchen später</h2>
<p>Schon die ersten Minuten ließen nichts Gutes ahnen.
Übersetzungen, die klingen, als wären sie durch mehrere Übersetzer-Engines gewandert.
Fünf bis sieben <strong>Nutzungsbedingungen</strong>, je nach Landeseinstellung.
Wer alles brav bestätigt, darf fortfahren – andernfalls bleibt der Fernseher im gefühlten <strong>Setup-Karussell</strong> stecken.</p>
<p>Dazu kommt Werbung im Hauptmenü, unklare Menüpunkte und eine Navigation, die wenig intuitiv wirkt.
Wenn man etwa alle Registerkarten ausblendet, bleibt nur ein einziger Menüpunkt: „Bearbeiten“.
Weiße Schrift auf braunem Hintergrund. Leerraum inklusive.</p>
<blockquote>
<p><strong>Side note:</strong> Das Hauptmenü erinnert ein wenig an frühe Smart-TV-Interfaces, nur dass man damals weniger akzeptieren musste, um sie zu benutzen.</p>
</blockquote>
<h2 id="serverfehler-app-chaos-und-standortroulette">Serverfehler, App-Chaos und Standortroulette</h2>
<p>Besonders kurios wurde es bei folgender Meldung:</p>
<blockquote>
<p>The LG services country information could not be retrieved from the server.</p>
</blockquote>
<p>Egal ob <em>Deutschland</em>, <em>Niederlande</em>, <em>USA</em> oder <strong>&ldquo;Sonstige&rdquo; (EU_Others)</strong> – nichts funktionierte.
Erst über die <strong>ThinQ-App</strong> ließ sich der Fernseher vollständig einrichten,
nach Zustimmung zu sämtlichen Tracking- und Analysebedingungen, versteht sich.</p>
<p>Nach der Umstellung auf „EU_Others“ durfte ich sämtliche Apps neu sortieren,
den Nutzungsbedingungen erneut zustimmen und diverse Systemeinstellungen anpassen.
Erst dann erschien endlich die Seite für die Kontenanmeldung –
nur um festzustellen, dass mein Konto auf <strong>Deutschland</strong> registriert war.</p>
<p>Also wieder zurück zum deutschen Standort.
Der Fernseher startet dabei jedes Mal neu – das inoffizielle webOS-Ritual.
(Einmal ist Zufall, zweimal Feature.)</p>
<p>Danach waren erwartungsgemäß <strong>alle Apps durcheinander</strong>, ergänzt um neue Einträge wie
<strong>Disney+</strong>, <strong>Rakuten TV</strong>, <strong>Public Value</strong>, <strong>LG Radio+</strong> und <strong>LG Travel+</strong>.
Teilweise sind diese mit Standort <em>Deutschland</em> gar nicht verfügbar.</p>
<h2 id="ki-taste-chromecast-und-das-airplay-rätsel">KI-Taste, Chromecast und das AirPlay-Rätsel</h2>
<p>Interessant wurde es, als ich die <strong>KI-Taste</strong> auf der Fernbedienung gedrückt hielt,
um den Sprachassistenten zu testen.
Nach Zustimmung zu weiteren Bedingungen fragte das System plötzlich,
ob ich <strong>Google Chromecast verwenden</strong> möchte.</p>
<p>Ein kurzer Test mit dem <strong>VLC-Player auf dem iPhone</strong> zeigte:
Musik ließ sich tatsächlich direkt an den Fernseher streamen.
Der integrierte Medienplayer startete automatisch, zeigte das Cover an
und sogar die Lautstärke meiner Soundbar ließ sich über das iPhone regeln –
das war überraschend nahtlos.</p>
<p>Aber eigentlich wollte ich ja <strong>AirPlay</strong> testen.
Und siehe da: diesmal klappt’s.
Kontrollzentrum öffnen → <em>Bildschirm-Synchronisierung</em> → Fernseher auswählen → Code eingeben → läuft.
Zuvor wurde der TV zwar erkannt, aber der entscheidende AirPlay-Code erschien nie.
Warum es jetzt plötzlich funktioniert, bleibt ein Rätsel – aber immerhin funktioniert es zuverlässig.</p>
<blockquote>
<p><strong>Note:</strong> Es lag vermutlich nicht am WLAN.
Sowohl im 5 GHz- als auch im 2,4 GHz-Band lief AirPlay stabil.</p>
</blockquote>
<h2 id="fazit--zwischen-frust-und-faszination">Fazit – Zwischen Frust und Faszination</h2>
<p>Die Einrichtung war eine Geduldsprobe – keine Frage.
Selbst für technikaffine Nutzer ist der Prozess unnötig kompliziert,
von den ständig wechselnden Ländereinstellungen ganz zu schweigen.
Trotzdem: Wer diese Hürde einmal genommen hat, wird belohnt.</p>
<p>Das <strong>Panel</strong> ist schlicht überragend.
Ein tiefes, sattes Schwarz, hohe Spitzenhelligkeit, präzise Farben und beeindruckendes HDR mit <strong>Dolby Vision</strong>.
Filme und Serien in 4K wirken gestochen scharf, und Streaming-Apps wie <strong>Netflix</strong>, <strong>Prime Video</strong>, <strong>Crunchyroll</strong>, <strong>Jellyfin</strong> oder <strong>Plex</strong> laufen einwandfrei.</p>
<p>Würde ich ihn wieder kaufen?
<strong>Ja – aber in erster Linie wegen des Displays.</strong>
Die Software bleibt Geschmackssache.
Oder wie ein Kollege treffend sagte:</p>
<blockquote>
<p>„Ich kauf das Ding nur wegen des Panels – die Software nutze ich eh kaum.“</p>
</blockquote>
<h2 id="kurioses-zum-schluss">Kurioses zum Schluss</h2>
<p>Das sogenannte <strong>Doppel-Display-Feature</strong> erlaubt zwei Apps nebeneinander –
etwa TV links und den gespiegelten Laptop rechts.
Das Ganze läuft im quadratischen Layout mit großen schwarzen Balken oben und unten –
praktisch, aber optisch gewöhnungsbedürftig.</p>
<p>Positiv überrascht hat dagegen die <strong>Bild-in-Bild-Funktion</strong>.
Zielgenau mit der Magic Remote auf den schmalen Steuerbalken zielen,
und schon lässt sich das kleine Fenster frei über den Bildschirm verschieben –
ein simples, aber erfreulich gut umgesetztes Detail.</p>
<h2 id="technische-daten-lg-oled-c5-oled55c55la">Technische Daten: LG OLED C5 (OLED55C55LA)</h2>
<table>
	<thead>
			<tr>
					<th>Merkmal</th>
					<th>Beschreibung</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Displaygröße</strong></td>
					<td>55 Zoll (139 cm)</td>
			</tr>
			<tr>
					<td><strong>Paneltyp</strong></td>
					<td>OLED Evo</td>
			</tr>
			<tr>
					<td><strong>Auflösung</strong></td>
					<td>4K UHD (3 840 × 2 160 px)</td>
			</tr>
			<tr>
					<td><strong>Bildwiederholrate</strong></td>
					<td>120 Hz (Native)</td>
			</tr>
			<tr>
					<td><strong>HDR-Unterstützung</strong></td>
					<td>Dolby Vision, HDR10, HLG</td>
			</tr>
			<tr>
					<td><strong>Prozessor</strong></td>
					<td>α9 AI Processor 8K (Gen 7)</td>
			</tr>
			<tr>
					<td><strong>Betriebssystem</strong></td>
					<td>webOS 25</td>
			</tr>
			<tr>
					<td><strong>Sprachsteuerung</strong></td>
					<td>ThinQ AI, Google Assistant, Alexa</td>
			</tr>
			<tr>
					<td><strong>Streaming</strong></td>
					<td>AirPlay 2, Chromecast Built-in, Miracast</td>
			</tr>
			<tr>
					<td><strong>Audio</strong></td>
					<td>Dolby Atmos, AI Sound Pro</td>
			</tr>
			<tr>
					<td><strong>Anschlüsse</strong></td>
					<td>4 × HDMI 2.1, 3 × USB, LAN, optisch, Bluetooth 5.1</td>
			</tr>
			<tr>
					<td><strong>Baujahr</strong></td>
					<td>2025</td>
			</tr>
			<tr>
					<td><strong>Modellbezeichnung</strong></td>
					<td>LG OLED55C55LA</td>
			</tr>
	</tbody>
</table>
<h2 id="fazit-in-einem-satz">Fazit in einem Satz</h2>
<p><strong>Ein hervorragendes OLED-Panel in einem Gerät, das bildtechnisch begeistert – aber softwareseitig noch Nachhilfe vertragen könnte.</strong></p>
]]></content:encoded>
    </item>
    <item>
      <title>Borderlands 4 – Der Leveling-Build für Rafa (Fernzünder-DPS mit Raketen)</title>
      <link>https://cbrueggenolte.de/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/</link>
      <pubDate>Tue, 07 Oct 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/</guid>
      <description>&lt;p&gt;Dieser Build verwandelt &lt;strong&gt;Rafa&lt;/strong&gt; sich in eine laufende Artillerieplattform.&#xA;Mit dem &lt;strong&gt;Roten Skillbaum (Fernzünder)&lt;/strong&gt; zerlegst du Gegner,&#xA;Badasses und Bosse mit Dauer-DPS, Raketen-Salven und fast unendlicher Munition.&#xA;Perfekt zum Leveln von &lt;strong&gt;1 bis 50&lt;/strong&gt; – pure Power ohne Pausen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/rafa-teil-1_hu_fa1bfc5c87c7da69.webp&#34;&gt;&lt;img class=&#34;content-image&#34; src=&#34;/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/rafa-teil-1_hu_3e5b79c158c66312.webp&#34; alt=&#34;Screenshot: Rafa Fernzünder Part 1&#34; loading=&#34;lazy&#34; width=&#34;1440&#34; height=&#34;810&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;was-dich-in-diesem-guide-erwartet&#34;&gt;Was dich in diesem Guide erwartet&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;✅ Vollständiger Leveling-Pfad von 1 bis 50&lt;/li&gt;&#xA;&lt;li&gt;✅ Waffensynergien (Vladof-AR + legendäre Ziele)&lt;/li&gt;&#xA;&lt;li&gt;✅ Beste Schilde, Mods &amp;amp; Ordnance-Optionen&lt;/li&gt;&#xA;&lt;li&gt;✅ Tipps für unendliche Munition mit &lt;em&gt;Kugel-Kumpel Deluxe&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;✅ Häufige Anfängerfehler – und wie du sie vermeidest&lt;/li&gt;&#xA;&lt;li&gt;✅ Einfacher, aber effektiver Gameplay-Loop&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;warum-dieser-build-so-stark-ist&#34;&gt;Warum dieser Build so stark ist&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Massiver Schaden:&lt;/strong&gt; Peacebreaker-Kanonen + Vladof-Sturmgewehre liefern konstanten DPS ohne Downtime.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hohe Überlebensfähigkeit:&lt;/strong&gt; Schild-Regeneration + Overdrive-Buff halten dich dauerhaft im Kampf.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Unendliche Munition:&lt;/strong&gt; Mit &lt;em&gt;Kugel-Kumpel Deluxe&lt;/em&gt; kannst du Bosse schmelzen, ohne je nachzuladen.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Flächenschaden:&lt;/strong&gt; Der Capstone &lt;em&gt;Flüchtige Hohlpunkte&lt;/em&gt; verwandelt Kanonen in Mini-Raketenwerfer.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Vorteile:&lt;/strong&gt; Enormer Schaden auf allen Distanzen, starkes Crowd-Control, funktioniert solo &amp;amp; im Co-op.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Nachteile:&lt;/strong&gt; Munitionshungrig außerhalb von &lt;em&gt;Kugel-Kumpel Deluxe&lt;/em&gt;, abhängig von Overdrive-Uptime.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;skill-pfad-level-1--50&#34;&gt;Skill-Pfad (Level 1 – 50)&lt;/h2&gt;&#xA;&lt;p&gt;Ein klarer Weg, der DPS, Überleben und Overdrive-Power Schritt für Schritt steigert.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Dieser Build verwandelt <strong>Rafa</strong> sich in eine laufende Artillerieplattform.
Mit dem <strong>Roten Skillbaum (Fernzünder)</strong> zerlegst du Gegner,
Badasses und Bosse mit Dauer-DPS, Raketen-Salven und fast unendlicher Munition.
Perfekt zum Leveln von <strong>1 bis 50</strong> – pure Power ohne Pausen.</p>
<p><a href="/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/rafa-teil-1_hu_fa1bfc5c87c7da69.webp"><img class="content-image" src="/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/rafa-teil-1_hu_3e5b79c158c66312.webp" alt="Screenshot: Rafa Fernzünder Part 1" loading="lazy" width="1440" height="810" /></a></p>
<h2 id="was-dich-in-diesem-guide-erwartet">Was dich in diesem Guide erwartet</h2>
<ul>
<li>✅ Vollständiger Leveling-Pfad von 1 bis 50</li>
<li>✅ Waffensynergien (Vladof-AR + legendäre Ziele)</li>
<li>✅ Beste Schilde, Mods &amp; Ordnance-Optionen</li>
<li>✅ Tipps für unendliche Munition mit <em>Kugel-Kumpel Deluxe</em></li>
<li>✅ Häufige Anfängerfehler – und wie du sie vermeidest</li>
<li>✅ Einfacher, aber effektiver Gameplay-Loop</li>
</ul>
<h2 id="warum-dieser-build-so-stark-ist">Warum dieser Build so stark ist</h2>
<ul>
<li><strong>Massiver Schaden:</strong> Peacebreaker-Kanonen + Vladof-Sturmgewehre liefern konstanten DPS ohne Downtime.</li>
<li><strong>Hohe Überlebensfähigkeit:</strong> Schild-Regeneration + Overdrive-Buff halten dich dauerhaft im Kampf.</li>
<li><strong>Unendliche Munition:</strong> Mit <em>Kugel-Kumpel Deluxe</em> kannst du Bosse schmelzen, ohne je nachzuladen.</li>
<li><strong>Flächenschaden:</strong> Der Capstone <em>Flüchtige Hohlpunkte</em> verwandelt Kanonen in Mini-Raketenwerfer.</li>
<li><strong>Vorteile:</strong> Enormer Schaden auf allen Distanzen, starkes Crowd-Control, funktioniert solo &amp; im Co-op.</li>
<li><strong>Nachteile:</strong> Munitionshungrig außerhalb von <em>Kugel-Kumpel Deluxe</em>, abhängig von Overdrive-Uptime.</li>
</ul>
<h2 id="skill-pfad-level-1--50">Skill-Pfad (Level 1 – 50)</h2>
<p>Ein klarer Weg, der DPS, Überleben und Overdrive-Power Schritt für Schritt steigert.</p>
<h3 id="frühes-spiel-level-1--15">Frühes Spiel (Level 1 – 15)</h3>
<p>Fokus: <strong>Grund-DPS und Schild-Regen</strong></p>
<ul>
<li><strong>2–4:</strong> <em>Gut in Schuss</em> – erhöht Basis-Waffenschaden</li>
<li><strong>5–7:</strong> <em>Schildbarriere</em> – stärkere Regeneration in Kämpfen</li>
<li><strong>8–10:</strong> <em>MfG!</em> – Notfall-Schild-Reparatur</li>
<li><strong>11–13:</strong> <em>Läuft!</em> – verlängert Action-Skill-Dauer</li>
<li><strong>14–16:</strong> <em>Resiliencia</em> – Schadensreduktion während Overdrive</li>
</ul>
<h3 id="mittleres-spiel-level-16--38">Mittleres Spiel (Level 16 – 38)</h3>
<p>Fokus: <strong>Overdrive-Power + Capstone rush</strong></p>
<ul>
<li><strong>17–21:</strong> <em>Everdrive</em> (max) – erhöht Fire Rate in Overdrive</li>
<li><strong>22–26:</strong> <em>Tollkühn</em> (max) – skalierende Schadens-Buffs</li>
<li><strong>27–29:</strong> <em>Doppeldrive</em> – mehr Mobilität</li>
<li><strong>30–33:</strong> <em>MfG!</em> + <em>Schildbarriere</em> weiter ausbauen</li>
<li><strong>34–35:</strong> <em>Resiliencia</em> – maximieren</li>
<li><strong>36–38:</strong> <em>Unbekümmert</em> – + Crit-Damage</li>
</ul>
<h3 id="spätes-spiel-level-39--50">Spätes Spiel (Level 39 – 50)</h3>
<p>Fokus: <strong>Blauer Baum (Extrovertiert)</strong> – für Sustain &amp; Munition</p>
<ul>
<li><strong>41–43:</strong> <em>Nervenkitzel</em> – mehr Fire Rate in Overdrive</li>
<li><strong>44–45:</strong> <em>Volle Dröhnung</em> – Munition &amp; DPS-Regen</li>
<li><strong>39–40:</strong> weiter in <em>Unbekümmert</em> (Roter Baum)</li>
<li><strong>46–48:</strong> <em>Nervenkitzel</em> (max)</li>
<li><strong>49–50:</strong> <em>Volle Dröhnung</em> (max) – das Bindeglied für DPS, Sustain &amp; AoE</li>
</ul>
<p>Am Ende steht ein Rafa, der allein Armeen zerlegt.</p>
<h2 id="gameplay-loop">Gameplay-Loop</h2>
<ul>
<li><strong>Start:</strong> Friedensbrecher-Kanonen zünden → Overdrive bufft Speed, Fire Rate &amp; Sustain</li>
<li><strong>Bewegung:</strong> Immer in Bewegung bleiben – Strafing statt Campen</li>
<li><strong>Damage-Loop:</strong> Vladof-Sturmgewehr &ldquo;entladen&rdquo; → Kanonen feuern mit</li>
<li><strong>Munition:</strong> <em>Kugel-Kumpel Deluxe</em> bei Bossen aktivieren</li>
<li><strong>Defensive:</strong> <em>Schildbarriere</em>, <em>Läuft!</em> und <em>MfG!</em> halten dich am Leben</li>
<li><strong>Rotation:</strong> Action-Skill regelmäßig neu starten – DPS-Phasen &amp; Regen abwechseln</li>
</ul>
<h2 id="beste-ausrüstung">Beste Ausrüstung</h2>
<h3 id="waffen">Waffen</h3>
<ul>
<li><strong>Vladof-ARs:</strong> hohe Fire Rate + große Magazine – perfekte Synergie mit Kanonen</li>
<li><strong>Legendäre Drops:</strong>
<ul>
<li><em>Aegons Dream</em> (von Horus in Hungering Plains) – präzise, skalierender Schaden</li>
<li><em>Wombo Combo</em> (von Ripper Roads in Source Clench) – explosive DPS</li>
</ul>
</li>
</ul>
<p><a href="/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/aegons-dream-wombo-combo-horace-ripper-drill-site_hu_3d2d1a802acea00a.webp"><img class="content-image" src="/borderlands-4-der-leveling-build-fuer-rafa-fernzuender-dps-mit-raketen/aegons-dream-wombo-combo-horace-ripper-drill-site_hu_8a54654e46d45db7.webp" alt="Aegons Dream &amp; Wombo Combo" loading="lazy" width="1440" height="810" /></a></p>
<h3 id="schilde--repkit">Schilde &amp; Repkit</h3>
<ul>
<li><strong>Schilde:</strong> Fokus auf hohe Kapazität + Regen.
→ <em>Feuerwerks-Schild</em> (von Splash Zone in Faze Fields) – erzeugt Homing-Missiles bei Kills.</li>
<li><strong>Repkit:</strong> <em>Glänzende Kriegsbemalung</em> (Legendär) – + 30 % Fire Rate, + 30 % Speed, reduziert Cooldown.</li>
</ul>
<blockquote>
<p><strong>Kombination:</strong> Feuerwerks + Kriegsbemalung = endlose Raketen &amp; hoher Tempo-Sustain.</p>
</blockquote>
<h3 id="ordnance--mods">Ordnance &amp; Mods</h3>
<ul>
<li><strong>Transmitter-Ordnance:</strong> Wirft Turret, das mitfeuert – ideal für AR-Builds</li>
<li><strong>Class Mods:</strong>
<ul>
<li><em>Anstifter</em> – doppelter Gun-Damage bei vollem Stack</li>
<li><em>Tänzer</em> – boostet Overdrive-Effekte für Burst-Phasen</li>
</ul>
</li>
</ul>
<h2 id="häufige-anfängerfehler">Häufige Anfängerfehler</h2>
<ol>
<li><strong>Action-Skill zu selten nutzen</strong>
→ <em>Fix:</em> Spam ihn – Overdrive hat kurzen Cooldown.</li>
<li><strong>Falsche Schilde verwenden</strong>
→ <em>Fix:</em> Priorisiere Kapazität + Regen, bis du <em>Feuerwerks</em> bekommst.</li>
<li><strong>Kugel-Kumpel Deluxe verschwenden</strong>
→ <em>Fix:</em> Für Bosse oder Badasses aufheben.</li>
<li><strong>Munition vergessen</strong>
→ <em>Fix:</em> SDU-Upgrades + <em>Volle Dröhnung</em> – AR-Nachschub sichern.</li>
<li><strong>Zu defensiv spielen</strong>
→ <em>Fix:</em> Rafa lebt von Aggression. Druck aufrechterhalten, nicht campen.</li>
</ol>
<h2 id="fazit">Fazit</h2>
<p>Der <strong>Fernzünder-Rafa</strong> ist der stärkste Leveling-Build in Borderlands 4.
Mit <em>Flüchtigen Hohlpunkten</em>, <em>Kugel-Kumpel Deluxe</em>
und Vladof-Synergien* wird Rafa zum begehbaren Raketenwerfer –
von Level 1 bis 50 und darüber hinaus.</p>
<blockquote>
<p>Probier ihn aus, experimentiere mit Waffenvarianten!</p>
</blockquote>
]]></content:encoded>
    </item>
    <item>
      <title>Borderlands 4 – Vex Leveling Guide</title>
      <link>https://cbrueggenolte.de/borderlands-4-vex-leveling-guide/</link>
      <pubDate>Tue, 07 Oct 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/borderlands-4-vex-leveling-guide/</guid>
      <description>&lt;p&gt;Willkommen! Hier habe ich einmal aufgeschrieben, wie ich meine Sirene in Borderlands 4 leveln möchte.&#xA;Das ist noch kein Endgame-Build, macht aber trotzdem Spaß, weil er&#xA;einfach unkompliziert ist.&lt;/p&gt;&#xA;&lt;p&gt;Wenn deine Waffen auf Level 10 wie Spielzeugpistolen wirken, ist dieser&#xA;Guide genau das Richtige für dich.&lt;/p&gt;&#xA;&lt;p&gt;Der &lt;strong&gt;Phase-Phamiliar-Build&lt;/strong&gt; für Vex verwandelt deine Sirene in eine&#xA;unaufhaltsame Kraft, die Bosse schmilzt und Horden zerlegt – ohne&#xA;legendäres Gear oder komplizierte Mechaniken.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Willkommen! Hier habe ich einmal aufgeschrieben, wie ich meine Sirene in Borderlands 4 leveln möchte.
Das ist noch kein Endgame-Build, macht aber trotzdem Spaß, weil er
einfach unkompliziert ist.</p>
<p>Wenn deine Waffen auf Level 10 wie Spielzeugpistolen wirken, ist dieser
Guide genau das Richtige für dich.</p>
<p>Der <strong>Phase-Phamiliar-Build</strong> für Vex verwandelt deine Sirene in eine
unaufhaltsame Kraft, die Bosse schmilzt und Horden zerlegt – ohne
legendäres Gear oder komplizierte Mechaniken.</p>
<p>Dieser Build ist anfängerfreundlich, fokussiert auf den <strong>Here Comes
Trouble</strong>-Skillbaum und bringt dich von Level 1 bis 50 mit maximaler
Effizienz.</p>
<p>In diesem Blogpost zeige ich dir die optimale Skill-Reihenfolge,
Waffenempfehlungen, Spielstrategien und alles, was du brauchst, um deine
Sirene zur Boss-Schmelzerin zu machen.</p>
<p>Los geht’s!</p>
<h2 id="warum-der-phase-phamiliar-build">Warum der Phase-Phamiliar-Build?</h2>
<p>Der Phase-Phamiliar-Build nutzt die <strong>Phase-Phamiliar</strong>-Aktionsfähigkeit aus dem
&ldquo;Jetzt gibt&rsquo;s Rabatz&rdquo;-Baum, um deine Sirene zu einer vielseitigen Kämpferin zu
machen. Mit deinem treuen Begleiter <strong>Trouble</strong> an deiner Seite kombinierst du
Überlebensfähigkeit, Heilung, Überschilde und starke Kill-Skills.</p>
<p>Der Build maximiert deinen Waffenschaden, verstärkt Trouble und sorgt dafür,
dass du sicher durch Kämpfe kommst – egal ob gegen Mobs oder Bosse. Kein
Meta-Gear nötig, nur cleveres Spielen und die richtigen Skills.</p>
<h3 id="hauptvorteile-des-builds">Hauptvorteile des Builds</h3>
<ul>
<li><strong>Anfängerfreundlich</strong>: Punkt-für-Punkt-Anleitung für einfaches Skillen.</li>
<li><strong>Flexibel</strong>: Funktioniert mit Standard-Loot, keine Legendaries erforderlich.</li>
<li><strong>Skalierbar</strong>: Trägt dich von Level 1 bis zum Level-Cap (50).</li>
<li><strong>Aggressiv</strong>: Trouble zieht Aggro, während du Schaden austeilst.</li>
<li><strong>Sicher</strong>: Heilung und Überschilde machen dich nahezu unkillbar.</li>
</ul>
<h2 id="skill-progression-dein-weg-von-level-1-bis-50">Skill-Progression: Dein Weg von Level 1 bis 50</h2>
<p>Hier ist die exakte Reihenfolge, wie du deine Skillpunkte verteilen solltest, um
den Phase-Phamiliar-Build zu maximieren.
Einige Punkte werden im Vexkalation-Baum (grün) gesetzt.</p>
<h3 id="skill-reihenfolge-als-liste">Skill-Reihenfolge als Liste</h3>
<ul>
<li><strong>Level 2-6</strong>: <strong>Grabesunterhalt (Grave Sustenance)</strong> – 5 Punkte für Heilung und Überlebensfähigkeit.</li>
<li><strong>Level 7</strong>: <strong>Gejaule und Gebell (Yowl and Bay)</strong> – 1 Punkt für Trouble-Buffs.</li>
<li><strong>Level 8</strong>: <strong>Grabeskommando (Grave Command)</strong> – 1 Punkt für Trouble-Kontrolle.</li>
<li><strong>Level 9-12</strong>: <strong>Gejaule und Gebell (Yowl and Bay)</strong> – 4 Punkte für maximale Trouble-Skalierung.</li>
<li><strong>Level 13</strong>: <strong>Grabeskommando (Grave Command)</strong> – 1 Punkt.</li>
<li><strong>Level 14</strong>: <strong>Tödliche Monster (Vorpal Fiends)</strong> – 1 Punkt für Schadensboost.</li>
<li><strong>Level 15</strong>: <strong>Grabeskommando (Grave Command)</strong> – 1 Punkt (maximiert auf 3/3).</li>
<li><strong>Level 16</strong>: <strong>Tödliche Monster (Vorpal Fiends)</strong> – 1 Punkt, schaltet nächste Reihe frei.</li>
<li><strong>Level 17-21</strong>: <strong>Schockierende Einstimmung (Shocking Attunement)</strong> – 5 Punkte für Elementarschaden.</li>
<li><strong>Level 22-23</strong>: <strong>Waffen und Nadeln (Guns and Needles)</strong> (Vexkalation-Baum) – 2 Punkte für die Reduzierung der Rep-Kit-Abklingzeit.</li>
<li><strong>Level 24-28</strong>: <strong>Infusion (Infusion)</strong> – 5 Punkte für Schadens- und Heilungsskalierung.</li>
<li><strong>Level 29</strong>: <strong>Waffen und Nadeln (Guns and Needles)</strong> (Vexkalation-Baum) – 1 Punkt.</li>
<li><strong>Level 30-31</strong>: <strong>Grabessicht (Grave Sights)</strong> (Vexkalation-Baum) – 2 Punkte für Zielgenauigkeit.</li>
<li><strong>Level 32-36</strong>: <strong>Teuflische Stärkung (Fiendish Invigoration)</strong> (Vexkalation-Baum) – 5 Punkte für Heilung und Sustain.</li>
<li><strong>Level 37-41</strong>: <strong>Zielvoraussicht (Target Prescience)</strong> (Vexkalation-Baum) – 5 Punkte für präzises Zielen.</li>
<li><strong>Level 42-44</strong>: <strong>Tödliche Monster (Vorpal Fiends)</strong> – 3 Punkte (maximiert).</li>
<li><strong>Level 45-49</strong>: <strong>Kanalisierung (Channeling)</strong> (Vexkalation-Baum) – 5 Punkte für Skill-Skalierung.</li>
<li><strong>Level 50</strong>: <strong>Grabessicht (Grave Sights)</strong> – (Vexkalation-Baum) 1 Punkt.</li>
</ul>
<h2 id="augments-und-spielstil">Augments und Spielstil</h2>
<h3 id="early-game-level-1-16">Early Game (Level 1-16)</h3>
<p><a href="/borderlands-4-vex-leveling-guide/borderlands4-skill-blinzelschlag_hu_ccba7e5bc3365531.webp"><img class="content-image" src="/borderlands-4-vex-leveling-guide/borderlands4-skill-blinzelschlag_hu_1151ea07efb6950c.webp" alt="Skill Blinzelschlag" loading="lazy" width="1440" height="810" /></a></p>
<ul>
<li><strong>Augment</strong>: <strong>Blinzelschlag</strong> (Blink Strike) – Ideal für schnelle Kills bei Gegnern unter 50 % HP.
Spart Munition und hält das Tempo hoch.</li>
<li><strong>Strategie</strong>: Fokussiere dich auf <strong>Grabesunterhalt</strong> und <strong>Gejaule und Gebell</strong>,
um Trouble stark zu machen und deine Überlebensfähigkeit zu sichern. Nutze Trouble,
um Aggro zu ziehen, während du mit SMGs Schaden austeilst.</li>
</ul>
<h3 id="mid-game-level-17">Mid-Game (Level 17+)</h3>
<p><a href="/borderlands-4-vex-leveling-guide/borderlands4-skill-hexus-nexus_hu_da6169aea3fe5f6a.webp"><img class="content-image" src="/borderlands-4-vex-leveling-guide/borderlands4-skill-hexus-nexus_hu_bb44299abea9e13b.webp" alt="Skill Hexus Nexus" loading="lazy" width="1440" height="810" /></a></p>
<ul>
<li><strong>Augment-Switch</strong>: Ersetze <strong>Blinzelschlag</strong> mit <strong>Hexus Nexus</strong> (nach Level 16). Trouble wird zum Tank und zieht Aggro, während du freie Schussbahn hast.</li>
<li><strong>Capstone</strong>: Arbeite auf <strong>Entfesselt</strong> im Here Comes Trouble-Baum hin. Dieser Skill markiert Gegner, die mehr Waffenschaden von dir nehmen. Stirbt ein markierter Gegner, erhältst du Gesundheitsregeneration und Schadensboni, die während <strong>Phase Phamiliar</strong> verdoppelt werden.</li>
</ul>
<h3 id="kampf-rotation">Kampf-Rotation</h3>
<ol>
<li><strong>Trouble einsetzen</strong>: Sende Trouble los und achte auf das Marken-Symbol.</li>
<li><strong>Rep-Kit aktivieren</strong>: Nutze es präventiv für Heilung und Buffs.</li>
<li><strong>Waffen und Granaten</strong>: Greife an, während Trouble tauntet (mit <strong>Hexus Nexus</strong>).</li>
<li><strong>Nachzügler eliminieren</strong>: Nutze <strong>Blinzelschlag</strong> (vor Level 16) oder <strong>Hexus Nexus</strong> (danach).</li>
<li><strong>Entfesselt-Stacks maximieren</strong>: Halte <strong>Phase Phamiliar</strong> aktiv, um doppelte Buffs zu stacken.</li>
</ol>
<h2 id="ausrüstung-waffen-rep-kits-und-schilde">Ausrüstung: Waffen, Rep-Kits und Schilde</h2>
<h3 id="waffen">Waffen</h3>
<ul>
<li><strong>Empfehlung</strong>: Maliwan-SMGs mit Schock-Elementen synergieren perfekt mit <strong>Infusion</strong> und deinem schnellen, aggressiven Spielstil. Shotguns sind ebenfalls stark, besonders mit Maliwan.</li>
<li><strong>Legendary-Tipp</strong>: Farm die <strong>Onslaught SMG</strong> (Maliwan), eine Hoch-DPS-Waffe, die mit <strong>Infusion</strong> glänzt. (General SMG Pool oder <strong>Idolator Sol</strong>)</li>
</ul>
<h3 id="rep-kits">Rep-Kits</h3>
<p><a href="/borderlands-4-vex-leveling-guide/borderlands4-rep-kit-af-1000_hu_aeb4a1aa76369727.webp"><img class="content-image" src="/borderlands-4-vex-leveling-guide/borderlands4-rep-kit-af-1000_hu_6c9137e371a6bdaa.webp" alt="AF 1000" loading="lazy" width="1440" height="1586" /></a></p>
<ul>
<li><strong>AF-1000 Rep-Kit</strong>: Starke Schilde und Buffs, ideal für Mid- bis Late-Game.</li>
<li><strong>Pacemaker Rep-Kit</strong>: Perfekt für konsistente Heilung und Sustain.</li>
<li><strong>Tipp</strong>: Suche nach Rep-Kits mit Lizenz-Teilen (zwei Ladungen) für doppelte Buffs und Überlebensfähigkeit.</li>
</ul>
<h3 id="schilde">Schilde</h3>
<ul>
<li><strong>Fireworks</strong>: Ein Early-Game-Legendary (dropt in Splash Zone), das mit Überschild-Skills synergiert und dich nahezu unkillbar macht.</li>
</ul>
<h2 id="tipps-für-schnelles-leveln">Tipps für schnelles Leveln</h2>
<ul>
<li><strong>Nutze Trouble auf Cooldown</strong>: Spamme <strong>Here Comes Trouble</strong>, um Mobs zu zerlegen und Kämpfe zu kontrollieren.</li>
<li><strong>Side-Missions und Bounties</strong>: Nimm jede Nebenmission an, um EXP zu maximieren. Das beschleunigt deinen Fortschritt und hilft dir, den Build zu meistern.</li>
<li><strong>Rep-Kits nicht horten</strong>: Setze sie früh im Kampf ein, um Buffs und Heilung zu nutzen.</li>
<li><strong>Positionierung</strong>: Bleib nah bei Trouble, um von seiner Aggro-Zugkraft zu profitieren, und halte dich in Bewegung, um Schaden zu vermeiden.</li>
</ul>
<h2 id="häufige-fehler-vermeiden">Häufige Fehler vermeiden</h2>
<ul>
<li><strong>Keine Punkte streuen</strong>: Fokussiere dich auf den <strong>Here Comes Trouble</strong>-Baum, bevor du in <strong>Vexcalation</strong> investierst.</li>
<li><strong>Überlebens-Skills nicht verzögern</strong>: <strong>Grabesunterhalt</strong> und <strong>Teuflische Stärkung</strong> sind essenziell für Sustain.</li>
<li><strong>Rep-Kits nutzen</strong>: Horte sie nicht – sie sind der Schlüssel zu Heilung und Buffs.</li>
</ul>
<h2 id="fazit-dein-weg-zur-boss-schmelzerin">Fazit: Dein Weg zur Boss-Schmelzerin</h2>
<p>Der Phase-Phamiliar-Build ist der perfekte Mix aus Schaden,
Überlebensfähigkeit und Spaß. Mit Maliwan-SMGs, Trouble als Tank und
<strong>Entfesselt</strong> (Unsealed) als Capstone wirst du durch die Story rasen,
ohne auf Meta-Gear angewiesen zu sein.</p>
<p>Dieser Build ist ideal für Anfänger und Veteranen, die Trouble in Aktion
sehen wollen. Folge der Skill-Reihenfolge, nutze die empfohlenen Waffen und
Rep-Kits, und du wirst dich nie underleveled oder schwach fühlen.</p>
<p>Hast du einen epischen Legendary-Drop oder einen Build-Tweak, den du
teilen willst? Schreib mir eine Nachricht! Und nun viel Spaß beim Jagen, Vault-Hunter!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Liste großartiger kostenloser Software</title>
      <link>https://cbrueggenolte.de/liste-grossartiger-kostenloser-software/</link>
      <pubDate>Tue, 07 Oct 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/liste-grossartiger-kostenloser-software/</guid>
      <description>&lt;p&gt;Gute und freie Software zu finden, ist nicht immer einfach. Alles ist heutzutage so werbefinanziert, dass der&#xA;Durchschnittsnutzer sehr wahrscheinlich nie davon erfährt, wenn der Entwickler keine eigene Werbekampagne hat.&#xA;Als der Technik-Freak in meinem Freundeskreis werde ich oft gefragt, wo die wirklich guten Apps sind.&lt;/p&gt;&#xA;&lt;p&gt;Inspiriert von den &amp;ldquo;&lt;a href=&#34;https://github.com/topics/awesome-list&#34;&gt;Awesome&lt;/a&gt;&amp;quot;-Listen auf GitHub, habe ich beschlossen,&#xA;eine Liste für alle zu erstellen. Viele dieser Anwendungen sind vielleicht vielen bekannt, die viel in Tech- oder&#xA;Open-Source-Communities unterwegs sind, aber hoffentlich findet hier jeder etwas Neues. So, ohne weitere&#xA;Verzögerung, hier sind einige wirklich coole Apps, die ich regelmäßig in meinem Alltag nutze!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gute und freie Software zu finden, ist nicht immer einfach. Alles ist heutzutage so werbefinanziert, dass der
Durchschnittsnutzer sehr wahrscheinlich nie davon erfährt, wenn der Entwickler keine eigene Werbekampagne hat.
Als der Technik-Freak in meinem Freundeskreis werde ich oft gefragt, wo die wirklich guten Apps sind.</p>
<p>Inspiriert von den &ldquo;<a href="https://github.com/topics/awesome-list">Awesome</a>&quot;-Listen auf GitHub, habe ich beschlossen,
eine Liste für alle zu erstellen. Viele dieser Anwendungen sind vielleicht vielen bekannt, die viel in Tech- oder
Open-Source-Communities unterwegs sind, aber hoffentlich findet hier jeder etwas Neues. So, ohne weitere
Verzögerung, hier sind einige wirklich coole Apps, die ich regelmäßig in meinem Alltag nutze!</p>
<h3 id="duckduckgo-browser">DuckDuckGo Browser</h3>
<p>Der <strong><a href="https://duckduckgo.com">DuckDuckGo Browser</a></strong> ist ein auf Datenschutz fokussierter Browser,
der deine Online-Aktivitäten schützt,
indem er keine persönlichen Daten sammelt.
Er blockiert Tracker, verhindert zielgerichtete Werbung
und sorgt dafür, dass deine Privatsphäre beim Surfen gewahrt bleibt.
Mit einer benutzerfreundlichen Oberfläche und einem integrierten „Privacy Grade“-System,
das Websites auf ihren Datenschutz bewertet,
ist dieser Browser ideal, wenn dir deine Privatsphäre wichtig ist.</p>
<p>Es gibt einige Kontroversen um DuckDuckGo,</p>
<h3 id="mullvad-browser">Mullvad Browser</h3>
<p>Der <strong><a href="https://mullvad.net/de/browser">Mullvad Browser</a></strong> ist ein Open-Source-Browser,
entwickelt, um möglichst anonymes Surfen zu ermöglichen – besonders in Kombination mit dem <strong>Mullvad VPN</strong>.
Er reduziert die Erfassung persönlicher Daten, schützt vor Online-Tracking
und erschwert das Auslesen von Fingerprints durch gezielte Verschleierungstechniken.
Damit ist er die richtige Wahl für alle, die besonderen Wert auf <strong>Datenschutz und Anonymität</strong> beim Surfen legen.</p>
<h3 id="espanso-mac-only">Espanso (Mac Only)</h3>
<p><strong><a href="https://espanso.org/docs/install/mac">Espanso</a></strong> ist eine leistungsstarke, Open-Source-Software für Textersetzungen auf macOS. Sie ermöglicht es dir,
Textabkürzungen zu definieren, die dann automatisch durch längere Phrasen oder häufig verwendete
Textbausteine ersetzt werden. So kannst du deine Produktivität steigern, indem du wiederholte
Schreibaufgaben automatisierst. Espanso ist sehr anpassbar und lässt sich mit zahlreichen Erweiterungen und
Skripten erweitern, um deinen spezifischen Bedürfnissen gerecht zu werden.</p>
<h3 id="miniflux-2">Miniflux 2</h3>
<p><a href="https://miniflux.app">Miniflux 2</a> ist ein schlanker, selbst gehosteter RSS-Reader, der Lesbarkeit, Geschwindigkeit und Privatsphäre
priorisiert. Er verzichtet auf unnötige Features und konzentriert sich darauf, Feeds sauber und werbefrei
darzustellen. Mit der Funktion, Artikel zu extrahieren, kannst du Feeds in ihrer vollen Tiefe lesen, statt nur
kurze Vorschauen zu erhalten. Die minimalistische Oberfläche und die hohe Geschwindigkeit machen das Surfen
durch zahlreiche Artikel zu einem angenehmen Erlebnis.</p>
<h3 id="sharex-windows-only">ShareX (Windows Only)</h3>
<p>Ganz klar das beste Screenshot-Tool für Windows. Es ist leichtgewichtig und bietet eine Vielzahl von Optionen,
darunter das automatische Hochladen von Bildern auf Dutzende von Domains und das automatische Komprimieren
von Bildern, die zu groß sind. Du kannst auch während des Screenshots zeichnen und den Screenshot bearbeiten.
Das macht es äußerst nützlich, um sofort etwas zu markieren, es zu screenshotten und schnell online einzufügen.</p>
<h3 id="audiomass">Audiomass</h3>
<p><a href="https://audiomass.co">Audiomass</a> ist ein einfach zu bedienender, webbasierter Audio-Editor. Er eignet sich hervorragend für schnelle
Bearbeitungen wie das Entfernen von Stille, das Aufteilen von Audiodateien, das Anwenden von Filtern und das
Exportieren im MP3- oder WAV-Format. Als Game-Entwickler, der viele Soundeffekte bearbeitet, aber niemals ein
„richtiges“ Audio-Bearbeitungsprogramm lernen möchte, ist Audiomass ein unverzichtbares Tool, weil es so
einfach und intuitiv zu bedienen ist.</p>
<h3 id="photopea">Photopea</h3>
<p><a href="https://www.photopea.com">Photopea</a> ist ein kostenloser Photoshop-Klon, der direkt in deinem Browser läuft. Es ist eine erstaunlich
funktionsreiche Alternative zu Photoshop, und für viele Anforderungen völlig ausreichend. Es läuft auch auf
Linux und bietet alles, was man von einem professionellen Bildeditor erwarten würde. Der einzige Nachteil: Bei
hochauflösenden Bildern (ab 4K) kann es etwas laggen, aber das dürfte sich in Zukunft mit der Unterstützung von
WebGPU verbessern.</p>
<h3 id="excalidraw">Excalidraw</h3>
<p><a href="https://excalidraw.com">Excalidraw</a> ist ein Open-Source-Whiteboard für den Browser. Es ist simpel, aber genau das, was du brauchst, um
mit anderen zusammenzuarbeiten, Flussdiagramme zu erstellen und deine Gedanken visuell zu ordnen. Es erfordert
keine Anmeldung und bietet eine sehr übersichtliche Benutzeroberfläche, die das Erstellen von Diagrammen und
Zeichnungen sehr intuitiv macht.</p>
<h3 id="fish-shell">Fish Shell</h3>
<p>Die <a href="https://fishshell.com">fish Shell</a> ist eine moderne, benutzerfreundliche Terminal-Shell, die die Arbeit mit der Kommandozeile
deutlich angenehmer macht. Sie bietet exzellente Autovervollständigung, hilfreiche Fehlermeldungen und nutzt
ansprechende Farben, um wichtige Informationen klar voneinander zu trennen. Die plattformübergreifende
Unterstützung für Windows, macOS und Linux macht sie besonders praktisch, wenn du regelmäßig zwischen
verschiedenen Betriebssystemen wechselst.</p>
<h3 id="rclone">Rclone</h3>
<p><a href="https://rclone.org">Rclone</a> ist ein Kommandozeilen-Tool, mit dem du problemlos Dateien zwischen deinem Computer und Online-Diensten
synchronisieren kannst. Die anfängliche Einrichtung kann etwas tricky sein, aber einmal verbunden, läuft es
unglaublich gut. Ich nutze es, um meine Joplin-Notizen zu sichern und Dateien zwischen meinen Windows- und
Linux-Computern zu synchronisieren.</p>
<h3 id="weitere-empfehlungen"><strong>Weitere Empfehlungen</strong></h3>
<p>Diese Anwendungen sind entweder zu bekannt, zu speziell oder ich bin einfach zu faul, um mehr darüber zu reden:</p>
<ul>
<li><strong>ImageGlass</strong> – Ein großartiger und einfacher Bildbetrachter für Windows.</li>
<li><strong>WizTree</strong> – Ein Windows-Programm, das dir schnell zeigt, was den meisten Speicherplatz auf deiner Festplatte
belegt.</li>
<li><strong>Everything</strong> – Ein Windows-Programm, mit dem du dein gesamtes Dateisystem in Echtzeit durchsuchen kannst.</li>
<li><strong>Krita</strong> – Eine fantastische Open-Source-Zeichenanwendung.</li>
<li><strong>Inkscape</strong> – Ein großartiges Open-Source-Werkzeug für Vektorgrafiken.</li>
<li><strong>OBS Studio</strong> – Das Standard-Programm für Bildschirmaufnahmen und Streaming.</li>
<li><strong>ScreenToGif</strong> – Ein leistungsstarker GIF-Editor, der auch andere Formate exportieren kann.</li>
<li><strong>Firefox mit Ublock Origin</strong> – Der beste Weg, das Internet zu durchsuchen, ohne verrückt zu werden.</li>
<li><strong>DeArrow</strong> – Eine Browser-Erweiterung, die Clickbait in YouTube-Titeln entfernt.</li>
<li><strong>Typst</strong> – Eine benutzerfreundliche Open-Source-Alternative zu LaTeX.</li>
<li><strong>Squoosh, Handbrake, 7-Zip</strong> – Nützliche Tools zum Komprimieren von Dateien. Schau dir meinen anderen
Blogbeitrag dazu an!</li>
</ul>
<h3 id="weitere-awesome-listen"><strong>Weitere Awesome-Listen</strong></h3>
<p>Für weitere kuratierte Listen mit großartigen Open-Source-Software und Ressourcen, schau dir diese Quellen an:</p>
<ul>
<li><a href="https://awesome.ecosyste.ms">Ecosyste.ms Awesome</a> – Eine umfassende Sammlung von Awesome-Listen zu verschiedenen Themen, von Programmierung bis hin zu wissenschaftlicher Forschung.</li>
<li><a href="https://awesome.liblaf.me/awesome/">Awesome Free Software</a> – Eine Liste mit Fokus auf freier Software, die unter Lizenzen wie MIT oder GNU GPL verteilt wird, einschließlich Tools wie asciinema, LibreOffice und mehr.</li>
<li><a href="https://project-awesome.org/johnjago/awesome-free-software">Awesome Free Software (GitHub)</a> – Eine weitere kuratierte Sammlung von freier Software, die sich auf Anwendungen konzentriert, die Nutzern volle Freiheit bieten.</li>
<li><a href="https://github.com/0PandaDEV/awesome-windows">Awesome Windows</a> – Eine Sammlung von großartigen Windows-Anwendungen und -Ressourcen.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Monatsrückblick September 2025</title>
      <link>https://cbrueggenolte.de/monatsrueckblick-september-2025/</link>
      <pubDate>Thu, 02 Oct 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/monatsrueckblick-september-2025/</guid>
      <description>&lt;h2 id=&#34;sommerfest-und-abschiede&#34;&gt;Sommerfest und Abschiede&lt;/h2&gt;&#xA;&lt;p&gt;Anfang September stand das große Sommerfest in der Firma an,&#xA;das wir leider verpasst haben.&#xA;Dafür gab es jede Menge Geburtstage,&#xA;für die wir fast jedes Wochenende unterwegs waren.&#xA;Ein Highlight war die Verabschiedung unseres Chefs,&#xA;den wir in den wohlverdienten Ruhestand entlassen haben.&#xA;Der Abend war sehr schön:&#xA;Das Essen war klasse,&#xA;die Stimmung herzlich,&#xA;und die Rechnung würde übernommen.&#xA;Dazu kamen einige lustige Anekdoten aus alten Zeiten,&#xA;die uns alle zum Lachen gebracht haben –&#xA;ein wirklich würdiger Abschied.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="sommerfest-und-abschiede">Sommerfest und Abschiede</h2>
<p>Anfang September stand das große Sommerfest in der Firma an,
das wir leider verpasst haben.
Dafür gab es jede Menge Geburtstage,
für die wir fast jedes Wochenende unterwegs waren.
Ein Highlight war die Verabschiedung unseres Chefs,
den wir in den wohlverdienten Ruhestand entlassen haben.
Der Abend war sehr schön:
Das Essen war klasse,
die Stimmung herzlich,
und die Rechnung würde übernommen.
Dazu kamen einige lustige Anekdoten aus alten Zeiten,
die uns alle zum Lachen gebracht haben –
ein wirklich würdiger Abschied.</p>
<h2 id="tontaubenschießen-ein-unerwarteter-spaß">Tontaubenschießen: Ein unerwarteter Spaß</h2>
<p>Zum ersten Mal habe ich Tontaubenschießen ausprobiert.
Dass es hier in der Nähe einen Schießstand dafür gibt,
war mir neu.
Mit 15 von 20 getroffenen Scheiben war ich ganz zufrieden –
fliegende Scheiben fand ich erstaunlich leicht zu treffen,
die rollenden von der Seite waren aber eine Herausforderung.</p>
<h2 id="erste-hilfe-kurs">Erste-Hilfe-Kurs</h2>
<p>Wie jedes Jahr gab es unseren Erste-Hilfe-Kurs,
diesmal zum Thema Wundverschluss mit Quick Clot.
Das Thema war nicht ganz mein Favorit, aber interessant.
Aber ich habe mich durchgebissen
und es ohne Probleme geschafft.
Vielleicht wird man mit der Zeit etwas abgehärteter.</p>
<h2 id="neue-pcs-für-borderlands-4">Neue PCs für Borderlands 4</h2>
<p>Mit dem Release von Borderlands 4 kam die Ernüchterung:
Unsere alten PCs waren einfach nicht mehr auf der Höhe.
Abstürze und ruckelige Grafik haben uns dazu gebracht,
zwei neue Rechner zu bauen –
einer X3D für mich,
einer für meine Frau,
die genauso gerne spielt.
Wir haben uns für ein Setup mit AMD Ryzen 7 7800X3D,
MSI RTX 5070 12G VENTUS 2X OC,
32 GB RAM und einer leisen Luftkühlung entschieden.
Diese beQuiet Lüfter sind wirklich gut.
Dazu habe ich von WindowsXLite das Windows 11 Pro 25H2 installiert –
eine schlanke, performante Version,
mit der ich super zufrieden bin.
Die würde sogar auf unseren alten Rechnern laufen,
aber Borderlands 4 halt leider nicht.</p>
<p>Der Zusammenbau lief überraschend glatt,
auch wenn ein BIOS-Update kurz für Spannung sorgte.
Jetzt laufen die Rechner perfekt,
und Borderlands 4 sieht einfach umwerfend aus.
Am ersten Abend haben wir mehr die Spielwelt erkundet als Quests gespielt –
so viele Details!</p>
<h2 id="was-bleibt">Was bleibt</h2>
<p>Der September war ein Monat voller Leben.
Zwischen Treffen mit Freunden
und Familie sowie einigen technischen Herausforderungen verging die Zeit wie im Flug.</p>
<p>Die vielen Begegnungen,
besonders auf Geburtstagen,
boten willkommene Gelegenheiten,
Verwandte wiederzusehen,
die man sonst nicht so oft trifft.
Ein ereignisreicher und schöner Monat!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Mein Microblog – Von der Idee zur stabilen App</title>
      <link>https://cbrueggenolte.de/mein-microblog-von-der-idee-zur-stabilen-app/</link>
      <pubDate>Sat, 06 Sep 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/mein-microblog-von-der-idee-zur-stabilen-app/</guid>
      <description>&lt;p&gt;Die letzten Wochen habe ich mich intensiv mit meinem eigenen Microblog beschäftigt. Was als kleines Experiment begann,&#xA;wuchs schnell zu einem vollwertigen Projekt heran.&#xA;Die Idee war klar: eine minimalistische Plattform für kurze Beiträge in Markdown,&#xA;ohne schweres CMS, ohne unnötigen Ballast.&#xA;Ich wollte etwas Eigenes schaffen – unabhängig von großen Anbietern, leichtgewichtig und trotzdem funktional.&lt;/p&gt;&#xA;&lt;h2 id=&#34;der-weg-zur-richtigen-technologie&#34;&gt;Der Weg zur richtigen Technologie&lt;/h2&gt;&#xA;&lt;p&gt;Ich war sofort von &lt;a href=&#34;https://bun.sh/&#34;&gt;Bun&lt;/a&gt; begeistert – schnell, modern,&#xA;mit einer eleganten All-in-One-Philosophie.&#xA;Doch auf meinem Uberspace-Host scheiterte jede Bun-Version&#xA;an einer zu alten glibc.&#xA;Schade, aber Plan B war schnell gefunden: &lt;a href=&#34;https://deno.land/&#34;&gt;Deno&lt;/a&gt;.&#xA;Deno versprach Sicherheit und moderne Features.&#xA;Allerdings war die Kompatibilität mit manchen Bibliotheken hakelig,&#xA;und ich stieß bei der Integration auf zu viele kleine Hürden.&#xA;Nach diesen Experimenten landete ich bei klassischem Node.js (mit pnpm).&#xA;Es ist robust, weit verbreitet und ließ sich auf meinem Host&#xA;ohne Probleme einrichten.&#xA;Mit TypeScript und ESM war ich trotzdem nah&#xA;an einer modernen Entwicklungsumgebung.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die letzten Wochen habe ich mich intensiv mit meinem eigenen Microblog beschäftigt. Was als kleines Experiment begann,
wuchs schnell zu einem vollwertigen Projekt heran.
Die Idee war klar: eine minimalistische Plattform für kurze Beiträge in Markdown,
ohne schweres CMS, ohne unnötigen Ballast.
Ich wollte etwas Eigenes schaffen – unabhängig von großen Anbietern, leichtgewichtig und trotzdem funktional.</p>
<h2 id="der-weg-zur-richtigen-technologie">Der Weg zur richtigen Technologie</h2>
<p>Ich war sofort von <a href="https://bun.sh/">Bun</a> begeistert – schnell, modern,
mit einer eleganten All-in-One-Philosophie.
Doch auf meinem Uberspace-Host scheiterte jede Bun-Version
an einer zu alten glibc.
Schade, aber Plan B war schnell gefunden: <a href="https://deno.land/">Deno</a>.
Deno versprach Sicherheit und moderne Features.
Allerdings war die Kompatibilität mit manchen Bibliotheken hakelig,
und ich stieß bei der Integration auf zu viele kleine Hürden.
Nach diesen Experimenten landete ich bei klassischem Node.js (mit pnpm).
Es ist robust, weit verbreitet und ließ sich auf meinem Host
ohne Probleme einrichten.
Mit TypeScript und ESM war ich trotzdem nah
an einer modernen Entwicklungsumgebung.</p>
<p>Für das Web-Framework fiel die Wahl auf <a href="https://hono.dev/">Hono</a>.
Es ist klein, schnell und hat eine klare, intuitive API – perfekt für ein
Projekt, das keinen Overhead verträgt.
Als Template-Engine wählte ich <a href="https://eta.js.org/">Eta</a>, weil sie
minimalistisch ist, eine einfache Syntax bietet und mir volle Kontrolle über
die Templates gibt.
Für die Datenhaltung experimentierte ich zunächst mit Markdown-Dateien im
Dateisystem.
Das war simpel, aber unpraktisch, sobald es um dynamische Inhalte oder
Metadaten ging.
Also wechselte ich zu <a href="https://github.com/typicode/lowdb">LowDB</a>, einem
JSON-Datei-Store, der sich schnell einbinden ließ und für ein
Single-Instance-Projekt wie dieses ideal ist.</p>
<p>Das Design hielt ich mit <a href="https://tailwindcss.com/">Tailwind CSS</a> bewusst schlicht.
Tailwind ermöglicht es,
schnell ansprechende Layouts zu bauen,
ohne sich in CSS-Details zu verlieren.
Für die Umwandlung von Markdown in sauberes HTML
kam <a href="https://markdown-it.github.io/">Markdown-It</a> zum Einsatz,
das zuverlässig und flexibel ist.</p>
<h2 id="technik-stack">Technik Stack</h2>
<ul>
<li><strong>Runtime</strong>: Node.js (ESM + TypeScript) – robust und kompatibel</li>
<li><strong>Framework</strong>: Hono – schlank, schnell, mit klarer API</li>
<li><strong>Templates</strong>: Eta – minimalistisch und leicht kontrollierbar</li>
<li><strong>Datenhaltung</strong>: LowDB – JSON-Datei-Store, ideal für kleine Projekte</li>
<li><strong>Styling</strong>: Tailwind CSS (CLI v4) – für ein sauberes, modernes Design</li>
<li><strong>Markdown</strong>: Markdown-It – für zuverlässige Markdown-zu-HTML-Konvertierung</li>
<li><strong>Sicherheit</strong>: CSRF-Schutz, Rate Limiting, sichere Cookies</li>
<li><strong>Build/Deploy</strong>: <code>tsc</code>, Tailwind CLI, rsync-Deploy mit Backup</li>
<li><strong>Performance</strong>: Statische Assets mit Cache-Headers, minimale JS-Bundles</li>
</ul>
<h2 id="herausforderungen-und-lösungen">Herausforderungen und Lösungen</h2>
<p>Die größte Herausforderung war,
die Balance zwischen Einfachheit und Funktionalität zu finden.
Zum Beispiel war die Entscheidung für LowDB nicht trivial:
Ich hatte zunächst überlegt,
eine richtige Datenbank wie PostgreSQL einzusetzen.
Aber für ein kleines Projekt mit überschaubarem Datenvolumen
wäre das Overkill gewesen.
SQLite schied leider auch aus, weil Uberspace keine Unterstützung
aufgrund von fehlenden Bibliotheken bot.
LowDB bot die perfekte Mischung aus Flexibilität und Einfachheit,
auch wenn ich für größere Projekte vielleicht noch mal umdenken würde.</p>
<h2 id="sicherheit-und-betrieb">Sicherheit und Betrieb</h2>
<p>Sicherheit war mir von Anfang an wichtig.
Sessions werden im Speicher gehalten,
was bei einem Server-Neustart zu einem Logout führt –
für mein kleines Projekt akzeptabel.
Cookies sind sicher konfiguriert
(<code>HttpOnly</code>, <code>SameSite</code>, <code>Secure</code> in Produktion),
und ein CSRF-Schutz sichert Login- und Admin-Formulare ab.
Um Brute-Force-Attacken vorzubeugen,
habe ich ein einfaches IP-basiertes Rate Limiting implementiert.
Es ist nicht perfekt,
sollte für meine Zwecke aber ausreichen.</p>
<p>Der Build-Prozess ist bewusst schlank:
TypeScript wird mit <code>tsc</code> kompiliert,
Tailwind CSS über die CLI gebaut.
Die Artefakte werden mit <code>rsync</code> auf den Server übertragen,
mit einem automatischen Backup vor jedem Deploy.
Um CSS-Cache-Probleme zu vermeiden,
nutze ich Cache-Busting durch Versions-Hashes in den Dateinamen.
Das sorgt dafür,
dass Nutzer immer die aktuelle Version der Stylesheets laden,
ohne dass ich manuell eingreifen muss.</p>
<h2 id="ausblick-was-kommt-noch">Ausblick: Was kommt noch?</h2>
<p>Das Projekt ist jetzt stabil, aber es gibt noch Ideen für die Zukunft.
Erst heute habe ich die RSS-Feed Funktion implementiert.
Eine Kommentarfunktion wäre auch spannend,
aber ich müsste entscheiden, wie ich das ohne großen Verwaltungsaufwand umsetze.
Von daher gibt es erst einmal keine Kommentare.
Wenn mir jemand etwas schreiben möchte,
gibt es genügend Möglichkeiten, dies zu tun.
Außerdem spiele ich mit dem Gedanken,
Beiträge nach Veröffentlichung automatisiert auch ins Fediverse zu pushen.</p>
<h2 id="fazit">Fazit</h2>
<p>Aus einer kleinen Idee ist in kurzer Zeit ein stabiler,
sicherer Microblog geworden – bewusst schlank gebaut,
aber erweiterbar.
Hono, Eta und LowDB haben sich als hervorragende Kombi
für ein leichtgewichtiges Projekt erwiesen.
Die Entscheidung für Node.js und TypeScript
hat sich als pragmatisch und zukunftssicher herausgestellt.
Am meisten freut mich, dass ich jetzt eine Plattform habe,
die genau das tut, was ich wollte: kurze, fokussierte Inhalte teilen,
ohne Overhead und unabhängig von großen Anbietern.
Es war ein Lernprozess, aber jeder Schritt –
von den gescheiterten Bun-Experimenten
bis zur finalen Deploy-Strategie – hat sich gelohnt.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kinder, Gefühle und eine überforderte Gesellschaft</title>
      <link>https://cbrueggenolte.de/kinder-gefuehle-und-eine-ueberforderte-gesellschaft/</link>
      <pubDate>Thu, 21 Aug 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/kinder-gefuehle-und-eine-ueberforderte-gesellschaft/</guid>
      <description>&lt;p&gt;Heute habe ich an einer Umfrage im Fachbereich Psychologie teilgenommen –&#xA;und fand sie überraschend spannend. Es gab zwei wissenschaftliche&#xA;Metaanalysen zu lesen.&lt;/p&gt;&#xA;&lt;p&gt;Die erste beschäftigte sich mit Magnet- und Gleichstromtherapien bei Menschen&#xA;mit Hirnschäden. Analysiert wurden Studien, in denen untersucht wurde, wie&#xA;sich Magnete oder Gleichstromtherapie auf das menschliche Gehirn auswirken&#xA;und ob dadurch Verbesserungen eintreten. Das grobe Ergebnis: Sowohl das&#xA;Arbeitsgedächtnis als auch andere Gehirnareale können stimuliert werden – mit&#xA;einer Wirkung, die noch Stunden danach anhält.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute habe ich an einer Umfrage im Fachbereich Psychologie teilgenommen –
und fand sie überraschend spannend. Es gab zwei wissenschaftliche
Metaanalysen zu lesen.</p>
<p>Die erste beschäftigte sich mit Magnet- und Gleichstromtherapien bei Menschen
mit Hirnschäden. Analysiert wurden Studien, in denen untersucht wurde, wie
sich Magnete oder Gleichstromtherapie auf das menschliche Gehirn auswirken
und ob dadurch Verbesserungen eintreten. Das grobe Ergebnis: Sowohl das
Arbeitsgedächtnis als auch andere Gehirnareale können stimuliert werden – mit
einer Wirkung, die noch Stunden danach anhält.</p>
<p>Noch interessanter fand ich jedoch die zweite Metaanalyse. Sie untersuchte
Studien zu Kursen, in denen Kinder lernen, ihre Gefühle besser zu verstehen
und damit umzugehen. Das Thema berührt mich, weil wir im Umfeld viele Bekannte
mit Kindern im Alter von 6–12 Jahren haben. Was man dort manchmal hört, ist
teilweise hanebüchen: Kinder werfen mit Gegenständen nach Lehrern,
zeigen keinerlei Respekt, machen keine Hausaufgaben und lügen ohne Hemmungen.
Lehrer verlieren zunehmend ihre Autorität – und wenn sie Kinder ermahnen,
werden sie nicht selten von Helikopter-Eltern noch angegriffen.
Es klingt stellenweise wie Geschichten aus dem Irrenhaus.</p>
<p>Wirklich wundern kann einen das kaum. Kinder werden heute mit Social Media
überflutet und gleichzeitig von unzähligen Einflüssen bombardiert. Jeder
Hersteller will seine Produkte platzieren. TikTok, Instagram, Snapchat und all
die Influencer wirken massiv – oft so sehr, dass Eltern gar nicht mehr
hinterherkommen. Über Spielsucht oder endlose YouTube-Sessions will ich gar
nicht erst anfangen.</p>
<p>Umso wichtiger finde ich es, dass Kinder in dieser Zeit – geprägt von Krisen,
Kriegen, Spaltung und einer allgemeinen Reizüberflutung – Unterstützung
bekommen, um ihre Gefühle besser zu verstehen und zu verarbeiten. Natürlich
hatten auch wir als Gen X unsere Kämpfe. Doch damals prasselten bei weitem
nicht so viele Reize gleichzeitig auf uns ein wie heute.</p>
<p>Ich wünsche mir, dass mehr Schulen und Eltern solche Programme ernst nehmen.
Denn Kinder, die ihre Gefühle verstehen und ausdrücken können, haben nicht nur
mehr Chancen auf ein gesundes Leben – sie machen auch unsere Gesellschaft ein
Stück menschlicher. Natürlich ist das leichter gesagt als getan: Angesichts
der Fülle an Problemen, überfüllter Klassen, zu weniger Lehrkräfte,
überlasteter Beratungsstellen und der Tatsache, dass Therapieplätze viel zu
rar sind, wirkt das Ziel oft wie eine ferne Utopie. Die Wartezeiten sind so
lang, dass Kinder manchmal schon erwachsen sind, wenn sie endlich Hilfe
bekommen.</p>
<p>Trotzdem bleibt es eine Aufgabe, die wir nicht aufschieben dürfen – denn jede
kleine Verbesserung im Hier und Jetzt kann den Unterschied machen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Tailwind CSS v4 IntelliSense für `.eta`-Dateien in VS Code aktivieren</title>
      <link>https://cbrueggenolte.de/tailwind-css-v4-intellisense-fuer-eta-dateien-in-vs-code-aktivieren/</link>
      <pubDate>Thu, 24 Jul 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/tailwind-css-v4-intellisense-fuer-eta-dateien-in-vs-code-aktivieren/</guid>
      <description>&lt;p&gt;Mit der Veröffentlichung von &lt;strong&gt;Tailwind CSS v4&lt;/strong&gt; hat sich einiges geändert – unter anderem die Art, wie Konfiguration und Styles gehandhabt werden. Wenn du &lt;code&gt;.eta&lt;/code&gt;-Dateien (&lt;a href=&#34;https://eta.js.org/&#34;&gt;eta&lt;/a&gt;-Templates) verwendest, bekommst du möglicherweise &lt;strong&gt;keine IntelliSense-Unterstützung&lt;/strong&gt; in VS Code. Hier zeige ich dir, wie du das behebst.&lt;/p&gt;&#xA;&lt;h2 id=&#34;voraussetzungen&#34;&gt;Voraussetzungen&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;VS Code&lt;/strong&gt; installiert&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tailwind CSS v4&lt;/strong&gt; korrekt eingerichtet&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tailwind CSS IntelliSense Extension&lt;/strong&gt; installiert&#xA;👉 &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss&#34;&gt;Hier herunterladen&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;schritt-1-vscodesettingsjson-konfigurieren&#34;&gt;Schritt 1: &lt;code&gt;.vscode/settings.json&lt;/code&gt; konfigurieren&lt;/h2&gt;&#xA;&lt;p&gt;Erstelle oder bearbeite die Datei &lt;code&gt;.vscode/settings.json&lt;/code&gt; in deinem Projektordner und füge Folgendes hinzu:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Mit der Veröffentlichung von <strong>Tailwind CSS v4</strong> hat sich einiges geändert – unter anderem die Art, wie Konfiguration und Styles gehandhabt werden. Wenn du <code>.eta</code>-Dateien (<a href="https://eta.js.org/">eta</a>-Templates) verwendest, bekommst du möglicherweise <strong>keine IntelliSense-Unterstützung</strong> in VS Code. Hier zeige ich dir, wie du das behebst.</p>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li><strong>VS Code</strong> installiert</li>
<li><strong>Tailwind CSS v4</strong> korrekt eingerichtet</li>
<li><strong>Tailwind CSS IntelliSense Extension</strong> installiert
👉 <a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss">Hier herunterladen</a></li>
</ul>
<hr>
<h2 id="schritt-1-vscodesettingsjson-konfigurieren">Schritt 1: <code>.vscode/settings.json</code> konfigurieren</h2>
<p>Erstelle oder bearbeite die Datei <code>.vscode/settings.json</code> in deinem Projektordner und füge Folgendes hinzu:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nt">&#34;tailwindCSS.includeLanguages&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">    <span class="nt">&#34;eta&#34;</span><span class="p">:</span> <span class="s2">&#34;html&#34;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">  <span class="nt">&#34;tailwindCSS.experimental.configFile&#34;</span><span class="p">:</span> <span class="s2">&#34;src/styles/styles.css&#34;</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><ul>
<li><code>includeLanguages</code>: Sagt VS Code, dass <code>.eta</code>-Dateien wie HTML behandelt werden sollen.</li>
<li><code>experimental.configFile</code>: Zeigt auf deine zentrale Tailwind-CSS-Datei (z. B. <code>styles.css</code>), in der du Tailwind importierst.</li>
</ul>
<hr>
<h2 id="schritt-2-tailwind-in-stylescss-importieren">Schritt 2: Tailwind in <code>styles.css</code> importieren</h2>
<p>In Tailwind v4 sieht deine zentrale CSS-Datei typischerweise so aus:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">@</span><span class="k">import</span> <span class="s2">&#34;tailwindcss&#34;</span><span class="p">;</span></span></span></code></pre></div><p>Optional kannst du auch Plugins oder Custom Styles hinzufügen:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">@</span><span class="k">import</span> <span class="s2">&#34;tailwindcss&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="p">@</span><span class="k">import</span> <span class="s2">&#34;./custom.css&#34;</span><span class="p">;</span></span></span></code></pre></div><hr>
<h2 id="schritt-3-tailwindconfigjs-anpassen">Schritt 3: <code>tailwind.config.js</code> anpassen</h2>
<p>Stelle sicher, dass deine <code>.eta</code>-Dateien im <code>content</code>-Array enthalten sind:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln">1</span><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nx">content</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;./views/**/*.eta&#34;</span><span class="p">,</span> <span class="s2">&#34;./src/**/*.js&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">  <span class="nx">theme</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">    <span class="nx">extend</span><span class="o">:</span> <span class="p">{},</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">  <span class="nx">plugins</span><span class="o">:</span> <span class="p">[],</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="p">};</span></span></span></code></pre></div><hr>
<h2 id="schritt-4-vs-code-neu-starten">Schritt 4: VS Code neu starten</h2>
<p>Nach den Änderungen solltest du <strong>VS Code neu starten</strong>, damit die IntelliSense-Erweiterung die neuen Einstellungen erkennt. Das ist nicht immer erforderlich, aber in diesem Fall ist es ratsam.</p>
<hr>
<p>Jetzt solltest du in <code>.eta</code>-Dateien:</p>
<ul>
<li>Autovervollständigung für Tailwind-Klassen erhalten</li>
<li>Hover-Informationen und Vorschauen sehen</li>
<li>Fehler bei ungültigen Klassen erkennen</li>
</ul>
<hr>
<p>Viel Spaß beim Coden mit Tailwind v4 und Eta! 🎨✨</p>
]]></content:encoded>
    </item>
    <item>
      <title>Geo‑Daten dynamisch mit Leaflet.js laden</title>
      <link>https://cbrueggenolte.de/geo-daten-dynamisch-mit-leaflet-js-laden/</link>
      <pubDate>Tue, 08 Jul 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/geo-daten-dynamisch-mit-leaflet-js-laden/</guid>
      <description>&lt;p&gt;Hier ein Überblick über die wichtigsten Änderungen:&lt;/p&gt;&#xA;&lt;p&gt;Statt die Layer-Reihenfolge mit &lt;code&gt;bringToFront()&lt;/code&gt; zu steuern, haben ich nun Leaflet-Panes benutzt.&#xA;So kann ich die Z-Index-Reihenfolge der Layer exakt bestimmen:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Länder liegen im Pane &lt;code&gt;countriesPane&lt;/code&gt; (zIndex 400)&lt;/li&gt;&#xA;&lt;li&gt;POIs im Pane &lt;code&gt;poiPane&lt;/code&gt; (zIndex 500)&lt;/li&gt;&#xA;&lt;li&gt;Hauptstädte/Capitals im Pane &lt;code&gt;capitalsPane&lt;/code&gt; (zIndex 600)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Das sorgt für eine saubere und vorhersehbare Darstellung – unabhängig von Interaktionen oder Nachladen von Daten.&#xA;Vorallem aber wird bei einem Hover-Over über Länder die Darstellung der POIs nicht mehr beeinflusst.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hier ein Überblick über die wichtigsten Änderungen:</p>
<p>Statt die Layer-Reihenfolge mit <code>bringToFront()</code> zu steuern, haben ich nun Leaflet-Panes benutzt.
So kann ich die Z-Index-Reihenfolge der Layer exakt bestimmen:</p>
<ul>
<li>Länder liegen im Pane <code>countriesPane</code> (zIndex 400)</li>
<li>POIs im Pane <code>poiPane</code> (zIndex 500)</li>
<li>Hauptstädte/Capitals im Pane <code>capitalsPane</code> (zIndex 600)</li>
</ul>
<p>Das sorgt für eine saubere und vorhersehbare Darstellung – unabhängig von Interaktionen oder Nachladen von Daten.
Vorallem aber wird bei einem Hover-Over über Länder die Darstellung der POIs nicht mehr beeinflusst.</p>
<h3 id="neue-mapjs-datei">Neue map.js Datei</h3>
<p>Hier die neue <code>map.js</code> Datei, die die Ländergrenzen, POIs und Hauptstädte verwaltet:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln">  1</span><span class="cl"><span class="kr">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="s1">&#39;map&#39;</span><span class="p">).</span><span class="nx">setView</span><span class="p">([</span><span class="mf">52.0705</span><span class="p">,</span> <span class="mf">4.707</span><span class="p">],</span> <span class="mi">6</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">  2</span><span class="cl"><span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="p">{}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">  3</span><span class="cl"><span class="kd">var</span> <span class="nx">capitalsIcon</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">divIcon</span><span class="p">({</span> <span class="nx">className</span><span class="o">:</span> <span class="s1">&#39;capitals-icon&#39;</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln">  4</span><span class="cl">
</span></span><span class="line"><span class="ln">  5</span><span class="cl"><span class="c1">// Create custom panes for z-order control
</span></span></span><span class="line"><span class="ln">  6</span><span class="cl"><span class="nx">map</span><span class="p">.</span><span class="nx">createPane</span><span class="p">(</span><span class="s1">&#39;countriesPane&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">  7</span><span class="cl"><span class="nx">map</span><span class="p">.</span><span class="nx">getPane</span><span class="p">(</span><span class="s1">&#39;countriesPane&#39;</span><span class="p">).</span><span class="nx">style</span><span class="p">.</span><span class="nx">zIndex</span> <span class="o">=</span> <span class="mi">400</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">  8</span><span class="cl">
</span></span><span class="line"><span class="ln">  9</span><span class="cl"><span class="nx">map</span><span class="p">.</span><span class="nx">createPane</span><span class="p">(</span><span class="s1">&#39;poiPane&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 10</span><span class="cl"><span class="nx">map</span><span class="p">.</span><span class="nx">getPane</span><span class="p">(</span><span class="s1">&#39;poiPane&#39;</span><span class="p">).</span><span class="nx">style</span><span class="p">.</span><span class="nx">zIndex</span> <span class="o">=</span> <span class="mi">500</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 11</span><span class="cl">
</span></span><span class="line"><span class="ln"> 12</span><span class="cl"><span class="nx">map</span><span class="p">.</span><span class="nx">createPane</span><span class="p">(</span><span class="s1">&#39;capitalsPane&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 13</span><span class="cl"><span class="nx">map</span><span class="p">.</span><span class="nx">getPane</span><span class="p">(</span><span class="s1">&#39;capitalsPane&#39;</span><span class="p">).</span><span class="nx">style</span><span class="p">.</span><span class="nx">zIndex</span> <span class="o">=</span> <span class="mi">600</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 14</span><span class="cl">
</span></span><span class="line"><span class="ln"> 15</span><span class="cl"><span class="c1">// Highlight-Funktionen
</span></span></span><span class="line"><span class="ln"> 16</span><span class="cl"><span class="kd">function</span> <span class="nx">highlightFeature</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 17</span><span class="cl">  <span class="kr">const</span> <span class="nx">layer</span> <span class="o">=</span> <span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 18</span><span class="cl">  <span class="nx">layer</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">({</span>
</span></span><span class="line"><span class="ln"> 19</span><span class="cl">    <span class="nx">weight</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 20</span><span class="cl">    <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;#ff0000&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 21</span><span class="cl">    <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.7</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 22</span><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 23</span><span class="cl">  <span class="nx">layer</span><span class="p">.</span><span class="nx">bringToFront</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 24</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 25</span><span class="cl">
</span></span><span class="line"><span class="ln"> 26</span><span class="cl"><span class="kd">function</span> <span class="nx">resetHighlight</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 27</span><span class="cl">  <span class="nx">geojson</span><span class="p">.</span><span class="nx">resetStyle</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 28</span><span class="cl">  <span class="nx">overlayGroup</span><span class="p">.</span><span class="nx">bringToFront</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 29</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 30</span><span class="cl">
</span></span><span class="line"><span class="ln"> 31</span><span class="cl"><span class="c1">// Layer groups for better control
</span></span></span><span class="line"><span class="ln"> 32</span><span class="cl"><span class="kr">const</span> <span class="nx">baseGroup</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">layerGroup</span><span class="p">().</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 33</span><span class="cl"><span class="kr">const</span> <span class="nx">overlayGroup</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">layerGroup</span><span class="p">().</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 34</span><span class="cl"><span class="kr">const</span> <span class="nx">capitalsLayer</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">layerGroup</span><span class="p">().</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 35</span><span class="cl">
</span></span><span class="line"><span class="ln"> 36</span><span class="cl"><span class="c1">// Country boundaries with outlines and optional fill
</span></span></span><span class="line"><span class="ln"> 37</span><span class="cl"><span class="kd">let</span> <span class="nx">geojson</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 38</span><span class="cl">
</span></span><span class="line"><span class="ln"> 39</span><span class="cl"><span class="c1">// Call layers in correct order
</span></span></span><span class="line"><span class="ln"> 40</span><span class="cl"><span class="kd">function</span> <span class="nx">initLayers</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 41</span><span class="cl">  <span class="nx">addCountryLayer</span><span class="p">(</span><span class="nx">addPOILayer</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 42</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 43</span><span class="cl">
</span></span><span class="line"><span class="ln"> 44</span><span class="cl"><span class="kd">function</span> <span class="nx">addCountryLayer</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 45</span><span class="cl">  <span class="nx">fetch</span><span class="p">(</span><span class="s1">&#39;/data/vm_medium_countries.geo.json&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 46</span><span class="cl">    <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">json</span><span class="p">())</span>
</span></span><span class="line"><span class="ln"> 47</span><span class="cl">    <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 48</span><span class="cl">      <span class="k">if</span> <span class="p">(</span><span class="nx">baseGroup</span><span class="p">)</span> <span class="nx">baseGroup</span><span class="p">.</span><span class="nx">clearLayers</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 49</span><span class="cl">      <span class="nx">geojson</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 50</span><span class="cl">        <span class="nx">pane</span><span class="o">:</span> <span class="s1">&#39;countriesPane&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 51</span><span class="cl">        <span class="nx">style</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">({</span>
</span></span><span class="line"><span class="ln"> 52</span><span class="cl">          <span class="nx">color</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">color</span> <span class="o">||</span> <span class="s1">&#39;#333&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 53</span><span class="cl">          <span class="nx">weight</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 54</span><span class="cl">          <span class="nx">opacity</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 55</span><span class="cl">          <span class="nx">fillColor</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">fillColor</span> <span class="o">||</span> <span class="s1">&#39;#eee&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 56</span><span class="cl">          <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 57</span><span class="cl">        <span class="p">}),</span>
</span></span><span class="line"><span class="ln"> 58</span><span class="cl">        <span class="nx">onEachFeature</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">,</span> <span class="nx">layer</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 59</span><span class="cl">          <span class="nx">layer</span><span class="p">.</span><span class="nx">bindPopup</span><span class="p">(</span><span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 60</span><span class="cl">          <span class="nx">layer</span><span class="p">.</span><span class="nx">on</span><span class="p">({</span>
</span></span><span class="line"><span class="ln"> 61</span><span class="cl">            <span class="nx">mouseover</span><span class="o">:</span> <span class="nx">highlightFeature</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 62</span><span class="cl">            <span class="nx">mouseout</span><span class="o">:</span> <span class="nx">resetHighlight</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 63</span><span class="cl">          <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 64</span><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 65</span><span class="cl">      <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">baseGroup</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 66</span><span class="cl">      <span class="k">if</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="nx">callback</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 67</span><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="ln"> 68</span><span class="cl">    <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 69</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 70</span><span class="cl">
</span></span><span class="line"><span class="ln"> 71</span><span class="cl"><span class="kd">function</span> <span class="nx">addPOILayer</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 72</span><span class="cl">  <span class="nx">fetch</span><span class="p">(</span><span class="s1">&#39;/data/poi.geo.json&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 73</span><span class="cl">    <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">response</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">())</span>
</span></span><span class="line"><span class="ln"> 74</span><span class="cl">    <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 75</span><span class="cl">      <span class="k">if</span> <span class="p">(</span><span class="nx">overlayGroup</span><span class="p">)</span> <span class="nx">overlayGroup</span><span class="p">.</span><span class="nx">clearLayers</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 76</span><span class="cl">      <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 77</span><span class="cl">        <span class="nx">pane</span><span class="o">:</span> <span class="s1">&#39;poiPane&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 78</span><span class="cl">        <span class="nx">style</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">feature</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 79</span><span class="cl">          <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">)</span> <span class="k">return</span> <span class="p">{};</span>
</span></span><span class="line"><span class="ln"> 80</span><span class="cl">          <span class="k">return</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 81</span><span class="cl">            <span class="nx">color</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">stroke</span> <span class="o">||</span> <span class="s1">&#39;#3388ff&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 82</span><span class="cl">            <span class="nx">weight</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">[</span><span class="s1">&#39;stroke-width&#39;</span><span class="p">]</span> <span class="o">||</span> <span class="mi">3</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 83</span><span class="cl">            <span class="nx">opacity</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">[</span><span class="s1">&#39;stroke-opacity&#39;</span><span class="p">]</span> <span class="o">||</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 84</span><span class="cl">            <span class="nx">fillColor</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">fill</span> <span class="o">||</span> <span class="s1">&#39;#3388ff&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 85</span><span class="cl">            <span class="nx">fillOpacity</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">[</span><span class="s1">&#39;fill-opacity&#39;</span><span class="p">]</span> <span class="o">||</span> <span class="mf">0.2</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 86</span><span class="cl">          <span class="p">};</span>
</span></span><span class="line"><span class="ln"> 87</span><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 88</span><span class="cl">        <span class="nx">onEachFeature</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">,</span> <span class="nx">layer</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 89</span><span class="cl">          <span class="k">if</span> <span class="p">(</span><span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span> <span class="o">&amp;&amp;</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 90</span><span class="cl">            <span class="nx">layer</span><span class="p">.</span><span class="nx">bindPopup</span><span class="p">(</span><span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 91</span><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 92</span><span class="cl">        <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 93</span><span class="cl">      <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">overlayGroup</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 94</span><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 95</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 96</span><span class="cl">
</span></span><span class="line"><span class="ln"> 97</span><span class="cl"><span class="c1">// Capitals logic
</span></span></span><span class="line"><span class="ln"> 98</span><span class="cl"><span class="kd">function</span> <span class="nx">clearCapitals</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 99</span><span class="cl">  <span class="nx">capitalsLayer</span><span class="p">.</span><span class="nx">clearLayers</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">100</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">101</span><span class="cl">
</span></span><span class="line"><span class="ln">102</span><span class="cl"><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s1">&#39;capitals-btn&#39;</span><span class="p">).</span><span class="nx">onclick</span> <span class="o">=</span> <span class="kr">async</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">103</span><span class="cl">  <span class="nx">clearCapitals</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">104</span><span class="cl">  <span class="kr">const</span> <span class="nx">res</span> <span class="o">=</span> <span class="kr">await</span> <span class="nx">fetch</span><span class="p">(</span><span class="s1">&#39;/api/capitals&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">105</span><span class="cl">  <span class="kr">const</span> <span class="nx">capitals</span> <span class="o">=</span> <span class="kr">await</span> <span class="nx">res</span><span class="p">.</span><span class="nx">json</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">106</span><span class="cl">  <span class="nx">capitals</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">capital</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">107</span><span class="cl">    <span class="kr">const</span> <span class="nx">marker</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">marker</span><span class="p">([</span><span class="nx">capital</span><span class="p">.</span><span class="nx">lat</span><span class="p">,</span> <span class="nx">capital</span><span class="p">.</span><span class="nx">lng</span><span class="p">],</span> <span class="p">{</span> <span class="nx">icon</span><span class="o">:</span> <span class="nx">capitalsIcon</span><span class="p">,</span> <span class="nx">pane</span><span class="o">:</span> <span class="s1">&#39;capitalsPane&#39;</span> <span class="p">}).</span><span class="nx">bindPopup</span><span class="p">(</span><span class="nx">capital</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">108</span><span class="cl">    <span class="nx">capitalsLayer</span><span class="p">.</span><span class="nx">addLayer</span><span class="p">(</span><span class="nx">marker</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">109</span><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="ln">110</span><span class="cl">  <span class="nx">capitalsLayer</span><span class="p">.</span><span class="nx">bringToFront</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">111</span><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="ln">112</span><span class="cl">
</span></span><span class="line"><span class="ln">113</span><span class="cl"><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s1">&#39;remove-capitals-btn&#39;</span><span class="p">).</span><span class="nx">onclick</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">114</span><span class="cl">  <span class="nx">clearCapitals</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">115</span><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="ln">116</span><span class="cl">
</span></span><span class="line"><span class="ln">117</span><span class="cl"><span class="nx">initLayers</span><span class="p">();</span></span></span></code></pre></div><p>Die Layer für Länder, POIs und Hauptstädte werden jetzt in eigenen LayerGroups verwaltet. Das macht das Nachladen, Entfernen und Aktualisieren von Daten viel einfacher und übersichtlicher.</p>
<h3 id="neue-html-struktur">Neue HTML-Struktur</h3>
<p>Hier die neue <code>index.html</code> Datei, die die Karte und die Buttons enthält:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="cp">&lt;!DOCTYPE html&gt;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="p">&lt;</span><span class="nt">html</span> <span class="na">lang</span><span class="o">=</span><span class="s">&#34;de&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="p">&lt;</span><span class="nt">head</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="p">&lt;</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">&#34;UTF-8&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="p">&lt;</span><span class="nt">title</span><span class="p">&gt;</span>Minimal Leaflet Karte<span class="p">&lt;/</span><span class="nt">title</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&#34;stylesheet&#34;</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;styles.css&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&#34;stylesheet&#34;</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;/public/leaflet/leaflet.css&#34;</span> <span class="na">crossorigin</span><span class="o">=</span><span class="s">&#34;&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="p">&lt;/</span><span class="nt">head</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="p">&lt;</span><span class="nt">body</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="p">&lt;</span><span class="nt">header</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">      <span class="p">&lt;</span><span class="nt">h1</span><span class="p">&gt;</span>Leaflet Demo Map<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">      <span class="p">&lt;</span><span class="nt">p</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;subtitle&#34;</span><span class="p">&gt;</span>A simple demonstration of a Leaflet map<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">      <span class="p">&lt;</span><span class="nt">button</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;capitals-btn&#34;</span><span class="p">&gt;</span>Load Capitals via API<span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">      <span class="p">&lt;</span><span class="nt">button</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;remove-capitals-btn&#34;</span><span class="p">&gt;</span>Remove Capitals<span class="p">&lt;/</span><span class="nt">button</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="p">&lt;/</span><span class="nt">header</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="p">&lt;</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;map&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;/public/leaflet/leaflet.js&#34;</span> <span class="na">crossorigin</span><span class="o">=</span><span class="s">&#34;&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;map.js&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">  <span class="p">&lt;/</span><span class="nt">body</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="p">&lt;/</span><span class="nt">html</span><span class="p">&gt;</span></span></span></code></pre></div><h3 id="neue-styles">Neue Styles</h3>
<p>Dazu passend die neuen Styles in der <code>styles.css</code> Datei, für die Karte und die Buttons:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c">/* Header ersetzen */</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nt">header</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="mh">#f8f9fa</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="k">padding</span><span class="p">:</span> <span class="mi">1</span><span class="kt">em</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="k">text-align</span><span class="p">:</span> <span class="kc">center</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="k">border-bottom</span><span class="p">:</span> <span class="mi">1</span><span class="kt">px</span> <span class="kc">solid</span> <span class="mh">#ccc</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c">/* und in der Map die Werte für &#39;margin&#39; neu setzen */</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="p">#</span><span class="nn">map</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">1</span><span class="kt">rem</span> <span class="mi">1</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="nt">button</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">  <span class="k">padding</span><span class="p">:</span> <span class="mf">0.5</span><span class="kt">em</span> <span class="mi">1</span><span class="kt">em</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mf">0.5</span><span class="kt">em</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="k">border</span><span class="p">:</span> <span class="kc">none</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="k">border-radius</span><span class="p">:</span> <span class="mi">4</span><span class="kt">px</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="mh">#007bff</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="kc">white</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">  <span class="k">cursor</span><span class="p">:</span> <span class="kc">pointer</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="p">.</span><span class="nc">capitals-icon</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="mh">#007bff</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">  <span class="k">border-radius</span><span class="p">:</span> <span class="mi">50</span><span class="kt">%</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">  <span class="k">width</span><span class="p">:</span> <span class="mi">24</span><span class="kt">px</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">  <span class="k">height</span><span class="p">:</span> <span class="mi">24</span><span class="kt">px</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">  <span class="k">display</span><span class="p">:</span> <span class="kc">flex</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">  <span class="k">align-items</span><span class="p">:</span> <span class="kc">center</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">  <span class="k">justify-content</span><span class="p">:</span> <span class="kc">center</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><h3 id="neue-indexts-datei">Neue index.ts Datei</h3>
<p>Jetzt noch die <code>index.ts</code> Datei, die die API für die Hauptstädte bereitstellt:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-typescript" data-lang="typescript"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">serve</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;@hono/node-server&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Hono</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;hono&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">serveStatic</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;@hono/node-server/serve-static&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Hono</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">// Serve static files from &#39;public&#39;
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="s1">&#39;/public/*&#39;</span><span class="p">,</span> <span class="nx">serveStatic</span><span class="p">({</span> <span class="nx">root</span><span class="o">:</span> <span class="s1">&#39;./&#39;</span> <span class="p">}));</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1">// Serve static files from &#39;data&#39;
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="s1">&#39;/data/*&#39;</span><span class="p">,</span> <span class="nx">serveStatic</span><span class="p">({</span> <span class="nx">root</span><span class="o">:</span> <span class="s1">&#39;./&#39;</span> <span class="p">}));</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1">// API endpoint for dynamic location data
</span></span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="kr">get</span><span class="p">(</span><span class="s1">&#39;/api/capitals&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">  <span class="kr">const</span> <span class="nx">capitals</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">1</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Berlin&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">52.52</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">13.405</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">2</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Paris&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">48.8566</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">2.3522</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">3</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;London&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">51.5074</span><span class="p">,</span> <span class="nx">lng</span><span class="o">:</span> <span class="o">-</span><span class="mf">0.1278</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">4</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Madrid&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">40.4168</span><span class="p">,</span> <span class="nx">lng</span><span class="o">:</span> <span class="o">-</span><span class="mf">3.7038</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">5</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Rome&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">41.9028</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">12.4964</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">6</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Vienna&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">48.2082</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">16.3738</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">7</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Amsterdam&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">52.3676</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">4.9041</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">8</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Brussels&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">50.8503</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">4.3517</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">9</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Copenhagen&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">55.6761</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">12.5683</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">10</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Stockholm&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">59.3293</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">18.0686</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">11</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Oslo&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">59.9139</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">10.7522</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">12</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Helsinki&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">60.1695</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">24.9354</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">13</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Lisbon&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">38.7223</span><span class="p">,</span> <span class="nx">lng</span><span class="o">:</span> <span class="o">-</span><span class="mf">9.1393</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">14</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Dublin&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">53.3498</span><span class="p">,</span> <span class="nx">lng</span><span class="o">:</span> <span class="o">-</span><span class="mf">6.2603</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">15</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Warsaw&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">52.2297</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">21.0122</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">16</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Prague&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">50.0755</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">14.4378</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">17</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Budapest&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">47.4979</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">19.0402</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">18</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Bratislava&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">48.1482</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">17.1067</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">19</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Ljubljana&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">46.0569</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">14.5051</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">    <span class="p">{</span> <span class="nx">id</span>: <span class="kt">20</span><span class="p">,</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Zagreb&#39;</span><span class="p">,</span> <span class="nx">lat</span>: <span class="kt">45.815</span><span class="p">,</span> <span class="nx">lng</span>: <span class="kt">15.9819</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">  <span class="p">];</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">  <span class="k">return</span> <span class="nx">c</span><span class="p">.</span><span class="nx">json</span><span class="p">(</span><span class="nx">capitals</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="c1">// Redirect root to public/index.html
</span></span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="kr">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">c</span><span class="p">.</span><span class="nx">html</span><span class="p">(</span><span class="s1">&#39;&lt;script&gt;location.href=&#34;/public/index.html&#34;&lt;/script&gt;&#39;</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="c1">// Start the server
</span></span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="nx">serve</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl">  <span class="p">{</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">    <span class="nx">fetch</span>: <span class="kt">app.fetch</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">    <span class="nx">port</span>: <span class="kt">3000</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">  <span class="p">(</span><span class="nx">info</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl">    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="sb">`Server is running on http://localhost:</span><span class="si">${</span><span class="nx">info</span><span class="p">.</span><span class="nx">port</span><span class="si">}</span><span class="sb">`</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl"><span class="p">);</span></span></span></code></pre></div><p>Die API liefert eine Liste von Hauptstädten mit ihren Koordinaten. Diese werden später in der Karte als Marker angezeigt. Und mit den neu hinzugefügten Buttons kann der Nutzer die Hauptstädte dynamisch laden und entfernen.</p>
<h3 id="neue-daten">Neue Daten</h3>
<p>Und ins Verzeichnis <code>data</code> kommt neben der GeoJSON-Datei <code>vm_medium_countries.geo.json</code>, die du von <a href="https://geojson-maps.kyd.au/">geojson-maps.kyd.au</a> heruntergeladen hast, die neue Version der <a href="/geo-daten-dynamisch-mit-leaflet-js-laden/poi.geo.json">`poi.geo.json</a> Datei welche neue POI enthält.</p>
<p>Wie in der <code>map.js</code> Datei zu sehen ist, werden die Information zur Darstellung der POIs jetzt direkt aus den GeoJSON-Properties (<code>stroke</code>, <code>stroke-width</code>, <code>fill</code>, etc.) übernommen. So kann jeder POI individuell gestaltet werden – z.B. für besondere Städte oder Flächen.</p>
<h2 id="fazit">Fazit</h2>
<p>Durch die Nutzung von LayerGroups, Panes und klaren Funktionsaufrufen ist der Code jetzt deutlich modularer und leichter zu erweitern.</p>
<p>Wenn alles geklappt hat, solltest du nun eine funktionierende Leaflet-Karte haben, die Ländergrenzen anzeigt und dynamisch POIs und Hauptstädte laden kann und ungefähr so aussieht:</p>
]]></content:encoded>
    </item>
    <item>
      <title>Minimalistische Offline-Leaflet-Karte mit Node.js &amp; Hono</title>
      <link>https://cbrueggenolte.de/minimalistische-offline-leaflet-karte-mit-node-js-hono/</link>
      <pubDate>Mon, 07 Jul 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/minimalistische-offline-leaflet-karte-mit-node-js-hono/</guid>
      <description>&lt;p&gt;Für ein Projekt benötigte ich eine einfache, offlinefähige &lt;a href=&#34;https://leafletjs.com/&#34;&gt;Leaflet&lt;/a&gt;-Karte, die nur Ländergrenzen und dynamisch injizierte Punkte anzeigt. Hier ist eine Schritt-für-Schritt-Anleitung, wie du so etwas mit Node.js und &lt;a href=&#34;https://hono.dev&#34;&gt;Hono&lt;/a&gt; umsetzen kannst.&lt;/p&gt;&#xA;&lt;p&gt;Hono ist ein leichtgewichtiger Web-Framework für Node.js, das sich hervorragend für einfache APIs eignet.&#xA;Wenn wir fertig sind, haben wir eine minimalistische Leaflet-Karte, die offline funktioniert und die Ländergrenzen sowie dynamisch geladene Punkte anzeigt.&lt;/p&gt;&#xA;&lt;h2 id=&#34;schritt-1-projekt-initialisieren&#34;&gt;Schritt 1: Projekt initialisieren&lt;/h2&gt;&#xA;&lt;p&gt;Erstelle ein neues Hono-Projekt:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Für ein Projekt benötigte ich eine einfache, offlinefähige <a href="https://leafletjs.com/">Leaflet</a>-Karte, die nur Ländergrenzen und dynamisch injizierte Punkte anzeigt. Hier ist eine Schritt-für-Schritt-Anleitung, wie du so etwas mit Node.js und <a href="https://hono.dev">Hono</a> umsetzen kannst.</p>
<p>Hono ist ein leichtgewichtiger Web-Framework für Node.js, das sich hervorragend für einfache APIs eignet.
Wenn wir fertig sind, haben wir eine minimalistische Leaflet-Karte, die offline funktioniert und die Ländergrenzen sowie dynamisch geladene Punkte anzeigt.</p>
<h2 id="schritt-1-projekt-initialisieren">Schritt 1: Projekt initialisieren</h2>
<p>Erstelle ein neues Hono-Projekt:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">npm create hono@latest</span></span></code></pre></div><p>Folge den Anweisungen im Terminal und wähle die folgenden Optionen:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">create-hono version 0.19.2
</span></span><span class="line"><span class="ln">2</span><span class="cl">✔ Target directory leaflet-hono
</span></span><span class="line"><span class="ln">3</span><span class="cl">✔ Which template <span class="k">do</span> you want to use? nodejs
</span></span><span class="line"><span class="ln">4</span><span class="cl">✔ Do you want to install project dependencies? Yes
</span></span><span class="line"><span class="ln">5</span><span class="cl">✔ Which package manager <span class="k">do</span> you want to use? npm
</span></span><span class="line"><span class="ln">6</span><span class="cl">✔ Cloning the template
</span></span><span class="line"><span class="ln">7</span><span class="cl">✔ Installing project dependencies
</span></span><span class="line"><span class="ln">8</span><span class="cl">🎉 Copied project files
</span></span><span class="line"><span class="ln">9</span><span class="cl">Get started with: <span class="nb">cd</span> leaflet-hono</span></span></code></pre></div><p>Wir installieren hier auch Leaflet um aus dem node_modules Verzeichnis auf die Leaflet-Bibliothek zugreifen zu können.</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">cd</span> leaflet-hono
</span></span><span class="line"><span class="ln">2</span><span class="cl">npm install leaflet</span></span></code></pre></div><hr>
<h2 id="schritt-2-projektstruktur-anlegen">Schritt 2: Projektstruktur anlegen</h2>





<pre tabindex="0"><code>leaflet-hono/
├── data/
├── public/
│   ├── leaflet/
│   │   ├── images/ ( &lt;&lt; siehe unten für Details &gt;&gt; )
│   │   ├── leaflet.css
│   │   ├── leaflet.js
│   │   └── leaflet.js.map
├── src/
│   ├── index.ts</code></pre><ul>
<li><strong>data/</strong> enthält heruntergeladene GeoJSON-Dateien (z. B. Natural Earth 50m).</li>
<li><strong>public/</strong> enthält Frontend-Dateien.</li>
<li><strong>server.js</strong> enthält den Hono-Server und API-Endpunkte.</li>
<li><code>public/leaflet/images</code> Ordner mit Leaflet-Bildern aus dem node_modules/leaflet/dist/images Verzeichnis)</li>
</ul>
<p>Kopiere die Leaflet Dateien aus <code>node_modules/leaflet/dist/</code> in den <code>public/leaflet/</code> Ordner:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">mkdir -p public/leaflet/images
</span></span><span class="line"><span class="ln">2</span><span class="cl">cp node_modules/leaflet/dist/images/* public/leaflet/images/
</span></span><span class="line"><span class="ln">3</span><span class="cl">cp node_modules/leaflet/dist/leaflet.css public/leaflet/
</span></span><span class="line"><span class="ln">4</span><span class="cl">cp node_modules/leaflet/dist/leaflet.js public/leaflet/
</span></span><span class="line"><span class="ln">5</span><span class="cl">cp node_modules/leaflet/dist/leaflet.js.map public/leaflet/</span></span></code></pre></div><hr>
<h2 id="schritt-3-app-starten">Schritt 3: App starten</h2>
<p>Bevor wir weiter machen, stellen wir sicher, dass wir unsere App einmal starten können. Starte dazu den Hono-Server:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">npm run dev</span></span></code></pre></div><p>Wenn alles richtig eingerichtet ist, solltest du die Standard-Hono-Seite unter <strong><a href="http://localhost:3000">http://localhost:3000</a></strong> sehen.</p>
<hr>
<h2 id="schritt-4-srcindexts">Schritt 4: <code>src/index.ts</code></h2>
<p>Nun erweitern wir die <code>src/index.ts</code> Datei, um die Daten aus dem <code>public</code> und <code>data</code> Ordner bereitzustellen.</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">serve</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;@hono/node-server&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Hono</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;hono&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">serveStatic</span> <span class="p">}</span> <span class="kr">from</span> <span class="s2">&#34;@hono/node-server/serve-static&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Hono</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">// Serve static files from &#39;public&#39;
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="s2">&#34;/public/*&#34;</span><span class="p">,</span> <span class="nx">serveStatic</span><span class="p">({</span> <span class="nx">root</span><span class="o">:</span> <span class="s2">&#34;./&#34;</span> <span class="p">}));</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1">// Serve static files from &#39;data&#39;
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="s2">&#34;/data/*&#34;</span><span class="p">,</span> <span class="nx">serveStatic</span><span class="p">({</span> <span class="nx">root</span><span class="o">:</span> <span class="s2">&#34;./&#34;</span> <span class="p">}));</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="kr">get</span><span class="p">(</span><span class="s2">&#34;/&#34;</span><span class="p">,</span> <span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">  <span class="k">return</span> <span class="nx">c</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="s2">&#34;Hello Hono!&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="nx">serve</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="p">{</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="nx">fetch</span>: <span class="kt">app.fetch</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="nx">port</span>: <span class="kt">3000</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="p">(</span><span class="nx">info</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="sb">`Server is running on http://localhost:</span><span class="si">${</span><span class="nx">info</span><span class="p">.</span><span class="nx">port</span><span class="si">}</span><span class="sb">`</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="p">);</span></span></span></code></pre></div><p>Zum Testen erstellen wir eine einfache Test-Datei, die wir später in der Karte verwenden werden. Erstelle dazu eine Datei <code>data/poi.geo.json</code> mit folgendem Inhalt:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;FeatureCollection&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="nt">&#34;features&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">      <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;Feature&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">      <span class="nt">&#34;properties&#34;</span><span class="p">:</span> <span class="p">{</span> <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Den Haag&#34;</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">      <span class="nt">&#34;geometry&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;Point&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="nt">&#34;coordinates&#34;</span><span class="p">:</span> <span class="p">[</span><span class="mf">4.3007</span><span class="p">,</span> <span class="mf">52.0705</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">      <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;Feature&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">      <span class="nt">&#34;properties&#34;</span><span class="p">:</span> <span class="p">{</span> <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Utrecht&#34;</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">      <span class="nt">&#34;geometry&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;Point&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">        <span class="nt">&#34;coordinates&#34;</span><span class="p">:</span> <span class="p">[</span><span class="mf">5.09</span><span class="p">,</span> <span class="mf">52.0907</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">  <span class="p">]</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><p>Wenn nun <code>&lt;https://localhost:3000/data/poi.geo.json&gt;</code> aufgerufen wird, sollte die GeoJSON-Datei angezeigt werden.</p>
<hr>
<h2 id="schritt-5-publicindexhtml-und-publicstylescss">Schritt 5: <code>public/index.html</code> und <code>public/styles.css</code></h2>
<p>In die <code>index.html</code> Datei fügen wir die grundlegende Struktur für die Leaflet-Karte ein. Erstelle die Datei <code>public/index.html</code> mit folgendem Inhalt:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="cp">&lt;!DOCTYPE html&gt;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="p">&lt;</span><span class="nt">html</span> <span class="na">lang</span><span class="o">=</span><span class="s">&#34;de&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="p">&lt;</span><span class="nt">head</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="p">&lt;</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">&#34;UTF-8&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="p">&lt;</span><span class="nt">title</span><span class="p">&gt;</span>Minimal Leaflet Karte<span class="p">&lt;/</span><span class="nt">title</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&#34;stylesheet&#34;</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;styles.css&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&#34;stylesheet&#34;</span> <span class="na">href</span><span class="o">=</span><span class="s">&#34;/public/leaflet/leaflet.css&#34;</span> <span class="na">crossorigin</span><span class="o">=</span><span class="s">&#34;&#34;</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="p">&lt;/</span><span class="nt">head</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="p">&lt;</span><span class="nt">body</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="p">&lt;</span><span class="nt">header</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">      <span class="p">&lt;</span><span class="nt">h1</span><span class="p">&gt;</span>Leaflet Demo Map<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">      <span class="p">&lt;</span><span class="nt">p</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;subtitle&#34;</span><span class="p">&gt;</span>A simple demonstration of a Leaflet map<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">    <span class="p">&lt;/</span><span class="nt">header</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="p">&lt;</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;map&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;/public/leaflet/leaflet.js&#34;</span> <span class="na">crossorigin</span><span class="o">=</span><span class="s">&#34;&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;map.js&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="p">&lt;/</span><span class="nt">body</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="p">&lt;/</span><span class="nt">html</span><span class="p">&gt;</span></span></span></code></pre></div><p>Um das nicht ganz so langweilig zu gestalten, fügen wir noch etwas CSS hinzu. Erstelle die Datei <code>public/styles.css</code> mit folgendem Inhalt:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nt">html</span><span class="o">,</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nt">body</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="k">padding</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="k">width</span><span class="p">:</span> <span class="mi">100</span><span class="kt">%</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="k">height</span><span class="p">:</span> <span class="mi">100</span><span class="kt">%</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nt">body</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="k">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="kc">sans-serif</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="k">height</span><span class="p">:</span> <span class="mi">100</span><span class="kt">vh</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  <span class="k">box-sizing</span><span class="p">:</span> <span class="kc">border-box</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="k">display</span><span class="p">:</span> <span class="kc">flex</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="k">flex-direction</span><span class="p">:</span> <span class="kc">column</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="nt">h1</span><span class="o">,</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="p">.</span><span class="nc">subtitle</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mf">0.5</span><span class="kt">em</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">  <span class="k">text-align</span><span class="p">:</span> <span class="kc">center</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="p">.</span><span class="nc">subtitle</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="k">font-size</span><span class="p">:</span> <span class="mf">1.2</span><span class="kt">em</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="mh">#666</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="k">margin-bottom</span><span class="p">:</span> <span class="mi">1</span><span class="kt">em</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="p">#</span><span class="nn">map</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">  <span class="k">flex</span><span class="p">:</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">0</span> <span class="mi">2</span><span class="kt">vw</span> <span class="mi">2</span><span class="kt">vw</span> <span class="mi">2</span><span class="kt">vw</span><span class="p">;</span> <span class="c">/* margin around the map */</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="mh">#f0f0f0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">  <span class="k">border</span><span class="p">:</span> <span class="mi">1</span><span class="kt">px</span> <span class="kc">solid</span> <span class="mh">#ccc</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">  <span class="k">border-radius</span><span class="p">:</span> <span class="mi">8</span><span class="kt">px</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><hr>
<h2 id="schritt-6-publicmapjs">Schritt 6: <code>public/map.js</code></h2>
<p>Was nun noch fehlt, ist die Logik, um die Karte zu initialisieren und die GeoJSON-Daten zu laden. Erstelle die Datei <code>public/map.js</code> mit folgendem Inhalt:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="s2">&#34;map&#34;</span><span class="p">).</span><span class="nx">setView</span><span class="p">([</span><span class="mf">52.0705</span><span class="p">,</span> <span class="mf">4.707</span><span class="p">],</span> <span class="mi">11</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="s2">&#34;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#34;</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="nx">maxZoom</span><span class="o">:</span> <span class="mi">19</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nx">fetch</span><span class="p">(</span><span class="s2">&#34;/data/poi.geo.json&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">response</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">())</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">data</span><span class="p">).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  <span class="p">});</span></span></span></code></pre></div><p>Hiermit initialisieren wir die Karte auf den Koordinaten zwischen Den Haag und Utrecht und laden die GeoJSON-Daten von unserem Hono-Server. Die Punkte werden dann als Layer zur Karte hinzugefügt.</p>
<p>Wenn alles geklappt hat, sollte es ungefähr so aussehen:</p>
<p><a href="/minimalistische-offline-leaflet-karte-mit-node-js-hono/leaflet-demo_hu_772b2bc636fdd6d6.webp"><img class="content-image" src="/minimalistische-offline-leaflet-karte-mit-node-js-hono/leaflet-demo_hu_8590a9d8d27efc5c.webp" alt="Screenshot Leaflet Karte im Browser" loading="lazy" width="1440" height="1129" /></a></p>
<hr>
<h2 id="schritt-7-osm-ersetzen-und-ländergrenzen-hinzufügen">Schritt 7: OSM ersetzen und Ländergrenzen hinzufügen</h2>
<p>Da wir aber eine offlinefähige Karte erstellen wollen, müssen wir die Ländergrenzen und andere Geodaten lokal bereitstellen. Wir verwenden dafür GeoJSON-Dateien von <a href="https://www.naturalearthdata.com/downloads/50m-cultural-vectors/">Natural Earth</a> die sich gut für kleinere Karten eignen.</p>
<p>Um die Ländergrenzen herunterzuladen, navigiere zu <a href="https://geojson-maps.kyd.au/">geojson-maps.kyd.au</a>, wähle &ldquo;Medium Resolution&rdquo; und aktiviere die Checkbox &ldquo;All&rdquo;. Die mittlere Auflösung ist für unsere Zwecke ausreichend und hat mit nur 4,5 MB eine handhabbare Größe. Die Option &ldquo;All&rdquo; stellt sicher, dass alle Ländergrenzen enthalten sind.</p>
<p><a href="/minimalistische-offline-leaflet-karte-mit-node-js-hono/download-geojson-countries_hu_737010276674c80d.webp"><img class="content-image" src="/minimalistische-offline-leaflet-karte-mit-node-js-hono/download-geojson-countries_hu_edc6e6d41c2b19c3.webp" alt="Leaflet Ländergrenzen Download" loading="lazy" width="1440" height="1151" /></a></p>
<p>Klicke anschließend auf &ldquo;Build Custom GeoJSON&rdquo; in der rechten unteren Ecke, um die Datei herunterzuladen. Diese Datei enthält alle Ländergrenzen im GeoJSON-Format, das mit Leaflet kompatibel ist. Speichere die Datei im <code>data</code>-Ordner unter dem Namen <code>vm_medium_countries.geo.json</code>.</p>
<p>Anschließend erweitern wir die <code>public/map.js</code> Datei, um die Ländergrenzen zu laden und anzuzeigen:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="s2">&#34;map&#34;</span><span class="p">).</span><span class="nx">setView</span><span class="p">([</span><span class="mf">52.0705</span><span class="p">,</span> <span class="mf">4.707</span><span class="p">],</span> <span class="mi">5</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="s2">&#34;&#34;</span><span class="p">,</span> <span class="p">{}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nx">fetch</span><span class="p">(</span><span class="s2">&#34;/data/vm_medium_countries.geo.json&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">response</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">())</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">      <span class="nx">style</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">({</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="nx">color</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">color</span> <span class="o">||</span> <span class="s2">&#34;#333&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">        <span class="nx">weight</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="nx">opacity</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="nx">fillColor</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">fillColor</span> <span class="o">||</span> <span class="s2">&#34;#eee&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">      <span class="p">}),</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">  <span class="p">});</span></span></span></code></pre></div><p>Der Code initialisiert eine Leaflet-Karte ohne Hintergrund-Layer (also ohne Basiskarte) und zeigt die Ländergrenzen aus einer lokalen GeoJSON-Datei an.</p>
<ul>
<li>Die Karte wird auf Europa zentriert und auf Zoomstufe 5 gesetzt.</li>
<li>Es wird ein leerer Tile-Layer hinzugefügt, damit Leaflet korrekt funktioniert, aber keine Online-Kartenkacheln geladen werden.</li>
<li>Die Ländergrenzen werden per <code>fetch</code> aus der Datei <code>/data/vm_medium_countries.geo.json</code> geladen.</li>
<li>Mit <code>L.geoJSON</code> werden die Länder als Layer zur Karte hinzugefügt. Die Darstellung (Linienfarbe, Füllfarbe) kann für jedes Land individuell über die Eigenschaften im GeoJSON gesteuert werden (<code>feature.properties.color</code> und <code>feature.properties.fillColor</code>). Gibt es keine Angabe, werden Standardwerte verwendet.</li>
</ul>
<p>Um das ganze noch etwas abzurunden können wir die Hintergrundfarbe der Karte in der <code>public/styles.css</code> Datei anpassen:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">#</span><span class="nn">map</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="k">flex</span><span class="p">:</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">0</span> <span class="mi">2</span><span class="kt">vw</span> <span class="mi">2</span><span class="kt">vw</span> <span class="mi">2</span><span class="kt">vw</span><span class="p">;</span> <span class="c">/* margin around the map */</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="mh">#87ceeb</span><span class="p">;</span> <span class="c">/* light blue, resembling the sea */</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">  <span class="k">border</span><span class="p">:</span> <span class="mi">1</span><span class="kt">px</span> <span class="kc">solid</span> <span class="mh">#ccc</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">  <span class="k">border-radius</span><span class="p">:</span> <span class="mi">8</span><span class="kt">px</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><p>Damit erhält die Karte eine hellblaue Hintergrundfarbe, die visuell das Meer andeuten soll. Die Länder werden in einem neutralen Grau dargestellt.</p>
<p><a href="/minimalistische-offline-leaflet-karte-mit-node-js-hono/leaflet-with-countries_hu_703e1f339303e184.webp"><img class="content-image" src="/minimalistische-offline-leaflet-karte-mit-node-js-hono/leaflet-with-countries_hu_914aca009a1ac637.webp" alt="Leaflet Karte im Browser" loading="lazy" width="1440" height="1129" /></a></p>
<hr>
<h2 id="schritt-8-ländergrenzen-und-poi-kombinieren">Schritt 8: Ländergrenzen und POI kombinieren</h2>
<p>Nun wollen wir noch die POI-Punkte aus der <code>data/poi.geo.json</code> Datei auf der Karte anzeigen. Dazu erweitern wir die <code>public/map.js</code> Datei:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln">1</span><span class="cl"><span class="nx">fetch</span><span class="p">(</span><span class="s2">&#34;/data/poi.geo.json&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">response</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">    <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">      <span class="nx">onEachFeature</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">,</span> <span class="nx">layer</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">        <span class="nx">layer</span><span class="p">.</span><span class="nx">bindPopup</span><span class="p">(</span><span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl">    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">9</span><span class="cl">  <span class="p">});</span></span></span></code></pre></div><p>Nach dem Neuladen der Seite sollten nun die POI-Punkte (Den Haag und Utrecht) auf der Karte angezeigt werden. Wenn du auf einen Punkt klickst, öffnet sich ein Popup mit dem Namen des Ortes.</p>
<p><a href="/minimalistische-offline-leaflet-karte-mit-node-js-hono/leaflet-with-countries-and-poi_hu_e2e98c4609c4b661.webp"><img class="content-image" src="/minimalistische-offline-leaflet-karte-mit-node-js-hono/leaflet-with-countries-and-poi_hu_1e4550772837d4ee.webp" alt="Leaflet Karte im Browser" loading="lazy" width="1440" height="1036" /></a></p>
<hr>
<h2 id="bonus-fancy-leaflet-funktionen">Bonus: Fancy Leaflet Funktionen</h2>
<p>Um die Karte ein wenig interaktiver zu gestalten, können wir noch einige zusätzliche Features hinzufügen. Leaflet bietet viele Möglichkeiten, um die Benutzererfahrung zu verbessern. Ersetze die <code>public/map.js</code> Datei mit folgendem Inhalt:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="s2">&#34;map&#34;</span><span class="p">).</span><span class="nx">setView</span><span class="p">([</span><span class="mf">52.0705</span><span class="p">,</span> <span class="mf">4.707</span><span class="p">],</span> <span class="mi">6</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1">// Leaflet benötigt mindestens einen Tile-Layer, auch wenn er leer ist.
</span></span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">// Deshalb wird hier ein leerer Tile-Layer eingebunden, um die Engine korrekt zu initialisieren.
</span></span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="s2">&#34;&#34;</span><span class="p">,</span> <span class="p">{}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">// Highlight-Funktionen
</span></span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="kd">function</span> <span class="nx">highlightFeature</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="kr">const</span> <span class="nx">layer</span> <span class="o">=</span> <span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="nx">layer</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">({</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="nx">weight</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="nx">color</span><span class="o">:</span> <span class="s2">&#34;#ff0000&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">    <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.7</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">  <span class="nx">layer</span><span class="p">.</span><span class="nx">bringToFront</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="kd">function</span> <span class="nx">resetHighlight</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="nx">geojson</span><span class="p">.</span><span class="nx">resetStyle</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="c1">// Country boundaries with outlines and optional fill
</span></span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="kd">let</span> <span class="nx">geojson</span><span class="p">;</span> <span class="c1">// Global variable to hold the geojson layer
</span></span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="nx">fetch</span><span class="p">(</span><span class="s2">&#34;/data/vm_medium_countries.geo.json&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">json</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">    <span class="nx">geojson</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">      <span class="nx">style</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">({</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">        <span class="nx">color</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">color</span> <span class="o">||</span> <span class="s2">&#34;#333&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">        <span class="nx">weight</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">        <span class="nx">opacity</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">        <span class="nx">fillColor</span><span class="o">:</span> <span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">fillColor</span> <span class="o">||</span> <span class="s2">&#34;#eee&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">        <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">      <span class="p">}),</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">      <span class="nx">onEachFeature</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">,</span> <span class="nx">layer</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">        <span class="nx">layer</span><span class="p">.</span><span class="nx">bindPopup</span><span class="p">(</span><span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">        <span class="nx">layer</span><span class="p">.</span><span class="nx">on</span><span class="p">({</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">          <span class="nx">mouseover</span><span class="o">:</span> <span class="nx">highlightFeature</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">          <span class="nx">mouseout</span><span class="o">:</span> <span class="nx">resetHighlight</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">        <span class="p">});</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">  <span class="p">})</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">  <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl">
</span></span><span class="line"><span class="ln">45</span><span class="cl"><span class="c1">// POI data with popups
</span></span></span><span class="line"><span class="ln">46</span><span class="cl"><span class="nx">fetch</span><span class="p">(</span><span class="s2">&#34;/data/poi.geo.json&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">response</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">  <span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">    <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl">      <span class="nx">onEachFeature</span><span class="o">:</span> <span class="p">(</span><span class="nx">feature</span><span class="p">,</span> <span class="nx">layer</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">        <span class="nx">layer</span><span class="p">.</span><span class="nx">bindPopup</span><span class="p">(</span><span class="nx">feature</span><span class="p">.</span><span class="nx">properties</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl">    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">  <span class="p">});</span></span></span></code></pre></div><p>Dieser Code fügt folgende Features hinzu:</p>
<ul>
<li><strong>Hover-Effekte</strong>: Länder werden hervorgehoben, wenn der Mauszeiger darüber schwebt.</li>
<li><strong>Popups</strong>: Beim Klicken auf Länder oder POI-Punkte öffnet sich ein Popup mit dem Namen.</li>
<li><strong>Popup für Länder</strong>: Beim Klicken auf ein Land öffnet sich ein Popup mit dem Namen des Landes.</li>
<li><strong>Popup für POI-Punkte</strong>: Beim Klicken auf einen POI-Punkt öffnet sich ein Popup mit dem Namen des Ortes.</li>
</ul>
<hr>
<h2 id="-fazit">🧭 Fazit</h2>
<p><a href="/minimalistische-offline-leaflet-karte-mit-node-js-hono/cloc-without-css_hu_f8aa5fa6c2a886f2.webp"><img class="content-image" src="/minimalistische-offline-leaflet-karte-mit-node-js-hono/cloc-without-css_hu_1490c2b7d8b18c1e.webp" alt="CLOC" loading="lazy" width="1440" height="1048" /></a></p>
<p>Mit weniger als 100 Zeilen Code lässt sich eine minimalistische, offlinefähige Leaflet-Karte mit Hono realisieren. Ideal für Prototyping oder einfache Anwendungen – ohne externe Abhängigkeiten und voll anpassbar.</p>
<p>Die Karte kann leicht erweitert werden, um weitere Features hinzuzufügen, wie z. B. Marker, Polygone oder andere GeoJSON-Daten. <a href="https://leafletjs.com/">Leaflet</a> bietet eine Vielzahl von Möglichkeiten, um Karten interaktiv und ansprechend zu gestalten.</p>
<p>Das Projekt in Version 1 kannst du hier herunterladen: <a href="https://codeberg.org/cblte/leaflet-hono-offline/releases/tag/v1">https://codeberg.org/cblte/leaflet-hono-offline/releases/tag/v1</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Updates 2025 Q2</title>
      <link>https://cbrueggenolte.de/updates-2025-q2/</link>
      <pubDate>Mon, 30 Jun 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/updates-2025-q2/</guid>
      <description>&lt;h2 id=&#34;übersetzung-der-webseite-ins-deutsche&#34;&gt;Übersetzung der Webseite ins Deutsche&lt;/h2&gt;&#xA;&lt;p&gt;Gestern habe ich den ganzen Tag damit verbracht,&#xA;meine Webseite ins Deutsche zu übersetzen.&#xA;Dabei ist mir sicher noch das ein oder andere Detail entgangen.&#xA;Sobald ich etwas entdecke oder du mich darauf aufmerksam machst,&#xA;werde ich es natürlich sofort korrigieren.&lt;/p&gt;&#xA;&lt;p&gt;Teilweise hat die Übersetzung ganz schön lange gedauert.&#xA;Viele Ausdrücke, die im Englischen sehr knapp formulieren werden können,&#xA;brauchen im Deutschen wesentlich mehr Worte.&#xA;Trotzdem bin ich mit dem Ergebnis recht zufrieden.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="übersetzung-der-webseite-ins-deutsche">Übersetzung der Webseite ins Deutsche</h2>
<p>Gestern habe ich den ganzen Tag damit verbracht,
meine Webseite ins Deutsche zu übersetzen.
Dabei ist mir sicher noch das ein oder andere Detail entgangen.
Sobald ich etwas entdecke oder du mich darauf aufmerksam machst,
werde ich es natürlich sofort korrigieren.</p>
<p>Teilweise hat die Übersetzung ganz schön lange gedauert.
Viele Ausdrücke, die im Englischen sehr knapp formulieren werden können,
brauchen im Deutschen wesentlich mehr Worte.
Trotzdem bin ich mit dem Ergebnis recht zufrieden.</p>
<h2 id="react-development-bootcamp">React Development Bootcamp</h2>
<p>Das React Bootcamp von Flavio Copes habe ich inzwischen auch abgeschlossen.
Es war wirklich sehr intensiv,
aber ich habe eine Menge gelernt.
Vor allem die praktischen Übungen fand ich sehr hilfreich,
um das Gelernte direkt anzuwenden.
Jetzt fühle ich mich viel sicherer im Umgang mit React
und freue mich darauf, das Wissen in eigenen Projekten umzusetzen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Was wenn Russland gewinnt?</title>
      <link>https://cbrueggenolte.de/was-wenn-russland-gewinnt/</link>
      <pubDate>Wed, 25 Jun 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/was-wenn-russland-gewinnt/</guid>
      <description>&lt;p&gt;Der &lt;a href=&#34;https://www.nato.int/cps/en/natohq/events_236298.htm&#34;&gt;NATO-Gipfel in Den Haag&lt;/a&gt; hat begonnen – und das, was ich bisher davon mitbekommen habe, ist &lt;a href=&#34;https://www.nato.int/cps/en/natohq/news_236641.htm&#34;&gt;beeindruckend&lt;/a&gt;. Ja, es kostet Geld. Und ja, wir werden in Zukunft mehr für Verteidigung ausgeben. Mehr ausgeben müssen. Das ist keine schöne Nachricht, aber eine notwendige Realität.&lt;/p&gt;&#xA;&lt;p&gt;Hier ist ein LIVE Mitschnitt von Reuters von der Ankunft der Staats- und Regierungschefs in Den Haag und dem Beginn des NATO-Gipfels: &lt;a href=&#34;https://www.youtube.com/watch?v=AmF9Z6CA0WM&#34;&gt;LIVE: Leaders of NATO countries gather in The Hague | REUTERS&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Der <a href="https://www.nato.int/cps/en/natohq/events_236298.htm">NATO-Gipfel in Den Haag</a> hat begonnen – und das, was ich bisher davon mitbekommen habe, ist <a href="https://www.nato.int/cps/en/natohq/news_236641.htm">beeindruckend</a>. Ja, es kostet Geld. Und ja, wir werden in Zukunft mehr für Verteidigung ausgeben. Mehr ausgeben müssen. Das ist keine schöne Nachricht, aber eine notwendige Realität.</p>
<p>Hier ist ein LIVE Mitschnitt von Reuters von der Ankunft der Staats- und Regierungschefs in Den Haag und dem Beginn des NATO-Gipfels: <a href="https://www.youtube.com/watch?v=AmF9Z6CA0WM">LIVE: Leaders of NATO countries gather in The Hague | REUTERS</a></p>
<p>Doch bei aller berechtigten Fokussierung auf Abschreckung und militärische Stärke dürfen wir nicht vergessen, worum es letztlich geht: den Frieden. Wir müssen darüber sprechen, wie wir ihn erhalten können. Wie wir ihn schützen – gerade in einer Zeit, in der er wieder offen angegriffen wird. Und wenn wir dafür die Ausgaben für Verteidigung erhöhen müssen, dann ist das eben so. Es ist eine Investition in unsere Sicherheit, in unsere Freiheit und in unsere Zukunft.</p>
<p>Solange jedoch Wladimir Putin an der Macht ist, wird eine echte Friedensperspektive schwierig. Denn der Glaube, dass er verhandlungsbereit sei, ist eine Illusion. Putin will nicht verhandeln. Er will durchsetzen. Seine Interessen, seine Vision von einem wiedererstarkten Russland. Ohne Druck wird er nicht an den Verhandlungstisch kommen – und schon gar nicht in guter Absicht.</p>
<p>Ich halte es für falsch, dem Westen eine Mitschuld an Putins Verhalten zu geben. Der russische Präsident folgt keiner rationalen Sicherheitslogik, sondern einer imperialistischen Ideologie. Er träumt von einem großrussischen Reich vergangener Jahrhunderte. Der Verweis auf angebliche „Sicherheitsinteressen“ ist nicht mehr als ein Vorwand, um Expansion, Krieg und Gewalt zu legitimieren.</p>
<p>Putins Ziel ist nicht Sicherheit – es ist Dominanz.</p>
<p>Deshalb müssen wir uns endlich von dem Gedanken verabschieden, dass Putin aufhören würde, wenn man ihm nur gibt, was er verlangt. Das Gegenteil ist der Fall: Wenn er bekommt, was er will, wird ihn das nur ermutigen. Ein Sieg in der Ukraine würde nicht zum Frieden führen – er würde seinen Appetit vergrößern. Dann wäre der nächste Schritt vielleicht Moldau. Oder Georgien. Oder ein hybrider Angriff auf die baltischen Staaten.</p>
<p>Putin setzt auf Gewalt, auf Terror gegen die Zivilbevölkerung, auf Einschüchterung und Destabilisierung. Er akzeptiert nur Stärke – und versteht nur Grenzen, wenn sie ihm gesetzt werden.</p>
<p>Wir im Westen haben uns daran gewöhnt, dass am Ende irgendwie alles gut ausgeht. Dass Diplomatie, Vernunft und Verhandlungen letztlich siegen. Doch was, wenn das diesmal nicht so ist?</p>
<p>Was, wenn Russland gewinnt?</p>
<p>Diese Frage sollten wir uns stellen. Nicht, um Angst zu machen. Sondern um endlich die Entschlossenheit aufzubringen, die es braucht, um Freiheit und Frieden nicht nur zu beschwören, sondern tatsächlich zu verteidigen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Blog aufgeräumt, neues Design und ein bisschen Klarheit</title>
      <link>https://cbrueggenolte.de/blog-aufgeraeumt-neues-design-und-ein-bisschen-klarheit/</link>
      <pubDate>Tue, 10 Jun 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/blog-aufgeraeumt-neues-design-und-ein-bisschen-klarheit/</guid>
      <description>&lt;h2 id=&#34;frischer-wind-neues-design-und-klare-strukturen&#34;&gt;Frischer Wind: Neues Design und klare Strukturen&lt;/h2&gt;&#xA;&lt;p&gt;Den Blog habe ich heute umfassend überarbeitet&#xA;und das dunkle Design komplett verworfen.&#xA;Stattdessen ist jetzt alles hell mit blauen Akzenten –&#xA;einfach, weil es die Lesbarkeit spürbar verbessert.&lt;/p&gt;&#xA;&lt;p&gt;Es hat eine Weile gedauert,&#xA;bis ich mich zu diesem Umbau durchringen konnte.&#xA;Aber ich bin ehrlich gesagt froh,&#xA;dass ich nicht schon wieder das ganze System gewechselt habe.&#xA;Astro gefällt mir nach wie vor richtig gut;&#xA;ich komme damit wesentlich besser zurecht als mit Hugo.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="frischer-wind-neues-design-und-klare-strukturen">Frischer Wind: Neues Design und klare Strukturen</h2>
<p>Den Blog habe ich heute umfassend überarbeitet
und das dunkle Design komplett verworfen.
Stattdessen ist jetzt alles hell mit blauen Akzenten –
einfach, weil es die Lesbarkeit spürbar verbessert.</p>
<p>Es hat eine Weile gedauert,
bis ich mich zu diesem Umbau durchringen konnte.
Aber ich bin ehrlich gesagt froh,
dass ich nicht schon wieder das ganze System gewechselt habe.
Astro gefällt mir nach wie vor richtig gut;
ich komme damit wesentlich besser zurecht als mit Hugo.</p>
<h3 id="fokus-auf-den-inhalt">Fokus auf den Inhalt</h3>
<p>Neben dem Design habe ich auch inhaltlich aufgeräumt.
Ein alter Blogbeitrag ist nun endlich überarbeitet –
unpassende Passagen sind rausgeflogen,
andere habe ich so umgeschrieben,
dass sie nun einen klaren roten Faden haben
und nicht mehr wie eine lose Sammlung von Notizen wirken.</p>
<p>Das hat mich schon von Anfang an gestört,
doch jetzt fühlt es sich endlich richtig an.
Das ist allerdings erst der Anfang:
Ich werde nach und nach weitere Abschnitte glätten.
Inhalte, die nicht mehr in das große Ganze passen,
wandern demnächst in den Microblog.
An dessen Umsetzung arbeite ich aktuell noch.</p>
<h3 id="ein-blick-zurück">Ein Blick zurück</h3>
<p>Ich habe mir außerdem vorgenommen,
alte Beiträge aus früheren Zeiten wieder aufzunehmen.
Dazu bin ich bisher zwar noch nicht gekommen,
aber es steht fest auf meinem Plan.
Bis dahin schraube ich einfach weiter an den Details,
bis alles nahtlos ineinandergreift.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Switch 2, Bootcamp-Abschluss und eine neue Morgenroutine</title>
      <link>https://cbrueggenolte.de/switch-2-bootcamp-abschluss-und-eine-neue-morgenroutine/</link>
      <pubDate>Sun, 08 Jun 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/switch-2-bootcamp-abschluss-und-eine-neue-morgenroutine/</guid>
      <description>&lt;h2 id=&#34;nintendo-switch-2&#34;&gt;Nintendo Switch 2&lt;/h2&gt;&#xA;&lt;p&gt;Die Switch 2 ist da und wir sind begeistert. Der große Bildschirm,&#xA;die verbesserte Grafik und das neue Mario Kart World sind einfach fantastisch.&#xA;Seit Donnerstag haben wir die Konsole und sind schon fleißig am Zocken.&#xA;Ich bin wirklich überrascht und sehr positiv beeindruckt was Nintendo da abgeliefert hat.&lt;/p&gt;&#xA;&lt;p&gt;Unter der Haube haben sie mit sicherheit einiges an der Software geschraubt,&#xA;doch die Hardware ist auch nicht zu verachten.&#xA;Die Joy-Cons sind jetzt deutlich stabiler und die Konsole fühlt sich einfach hochwertiger an.&#xA;Ebenfalls gut gefällt mir der neue Kickstand, mit dem ich bequem am Tisch spielen kann, auch ohne Dockingstation.&#xA;Meine Frau kann so auf dem großem TV spielen, während ich neben ihr auf der Couch sitze&#xA;und die Switch 2 auf dem Couchtisch steht.&#xA;Groß genug ist der Bildschirm ja jetzt.&#xA;Schön auch, dass sie nun einen zweiten USB-C Anschluss an der Oberseite hat&#xA;mit dem sie sich auch bequem laden lässt, während sie auf dem Tisch steht.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="nintendo-switch-2">Nintendo Switch 2</h2>
<p>Die Switch 2 ist da und wir sind begeistert. Der große Bildschirm,
die verbesserte Grafik und das neue Mario Kart World sind einfach fantastisch.
Seit Donnerstag haben wir die Konsole und sind schon fleißig am Zocken.
Ich bin wirklich überrascht und sehr positiv beeindruckt was Nintendo da abgeliefert hat.</p>
<p>Unter der Haube haben sie mit sicherheit einiges an der Software geschraubt,
doch die Hardware ist auch nicht zu verachten.
Die Joy-Cons sind jetzt deutlich stabiler und die Konsole fühlt sich einfach hochwertiger an.
Ebenfalls gut gefällt mir der neue Kickstand, mit dem ich bequem am Tisch spielen kann, auch ohne Dockingstation.
Meine Frau kann so auf dem großem TV spielen, während ich neben ihr auf der Couch sitze
und die Switch 2 auf dem Couchtisch steht.
Groß genug ist der Bildschirm ja jetzt.
Schön auch, dass sie nun einen zweiten USB-C Anschluss an der Oberseite hat
mit dem sie sich auch bequem laden lässt, während sie auf dem Tisch steht.</p>
<p>Definitiv ein ein tolles Upgrade zur alten Switch.</p>
<h2 id="neuer-programmier-kurs">Neuer Programmier Kurs</h2>
<p>Das Bootcamp 2025 ist beendet und ich habe vieles gelernt.
<a href="https://astro.build/">Astro</a>, <a href="https://tailwindcss.com/">TailwindCSS</a>,
<a href="https://www.typescriptlang.org/">TypeScript</a> und <a href="https://reactjs.org/">React</a>
sind jetzt keine Fremdwörter mehr für mich.
Gut, waren sie vorher auch nicht,
aber jetzt kann ich sie auch anwenden.
Ein paar meiner Projekte habe ich auch auf auf <a href="https://codeberg.org/cblte">Codeberg</a> veröffentlicht.</p>
<p>Denn nächsten Kurs habe ich auch schon gefunden: AHA Masterclass.
Eine Kombination aus Astro, HTMX und Alpine.js.
Wir erstellen eine Projekt-Management-SaaS App (Software as a Service) für Individuen und kleine Teams.</p>
<p>Ich bin gespannt, was ich da alles lernen werde.</p>
<h2 id="neue-gewohnheiten">Neue Gewohnheiten</h2>
<p>Letzte Woche habe ich darüber geschrieben, was es bringt, eine Stunde am Abend gegen eine Stunde am Morgen zu tauschen.
Diese Woche habe ich es tatsaechlich geschafft,
entgegen meiner sonstigen Gewohnheiten,
jeden Morgen eine Stunde früher aufzustehen.
Und es lohnt sich wirklich.</p>
<p>Nicht nur ist wesentlich weniger Verkehr auf den Straßen,
was das Radfahren angenehmer macht,
sondern ich habe auch viel mehr Zeit für mich selbst.
Im Büro sind die Kollegen noch nicht da,
und ich kann in Ruhe beim ersten Kaffe des Tages
Emails lesen und beantworten,
die To-Do-Liste für den Tag erstellen
und produktiv in den Tag starten.</p>
<p>Ich kann es nur empfehlen, es mal auszuprobieren.</p>
<h2 id="alles-gute-zum-geburtstag">Alles Gute zum Geburtstag</h2>
<p>Alles Gute zum Geburtstag, <a href="https://de.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee</a>.</p>
<p>Ohne ihn gäbe es das Internet, wie wir es heute kennen, nicht.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Die ersten Wochen mit dem neuen eBike</title>
      <link>https://cbrueggenolte.de/die-ersten-wochen-mit-dem-neuen-ebike/</link>
      <pubDate>Tue, 13 May 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/die-ersten-wochen-mit-dem-neuen-ebike/</guid>
      <description>&lt;p&gt;Die neuen Räder sind da!&#xA;Und sie sind einfach nur geil.&#xA;Kaum war der Mensch vom Lieferdienst wieder weg,&#xA;wollten wir gleich die ersten Runden drehen,&#xA;um Sattel und Lenker einzustellen.&#xA;Ging nur leider nicht, weil die Akkus fast komplett leer waren.&lt;/p&gt;&#xA;&lt;p&gt;Nach etwa einer Stunde an der Steckdose&#xA;konnten wir dann aber endlich loslegen&#xA;und die ersten Runden um den Block fahren.&#xA;Da ich jetzt kein Citybike mehr habe,&#xA;sondern ein Trekkingrad bzw. eMTB,&#xA;ist die Sitzhaltung deutlich sportlicher –&#xA;mehr nach vorne gelehnt, auf den Lenker abgestützt.&#xA;Das wird die nächsten Tage mit Sicherheit noch Muskelkater geben.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die neuen Räder sind da!
Und sie sind einfach nur geil.
Kaum war der Mensch vom Lieferdienst wieder weg,
wollten wir gleich die ersten Runden drehen,
um Sattel und Lenker einzustellen.
Ging nur leider nicht, weil die Akkus fast komplett leer waren.</p>
<p>Nach etwa einer Stunde an der Steckdose
konnten wir dann aber endlich loslegen
und die ersten Runden um den Block fahren.
Da ich jetzt kein Citybike mehr habe,
sondern ein Trekkingrad bzw. eMTB,
ist die Sitzhaltung deutlich sportlicher –
mehr nach vorne gelehnt, auf den Lenker abgestützt.
Das wird die nächsten Tage mit Sicherheit noch Muskelkater geben.</p>
<p>Dazu kam, dass die Jungs vom Service vergessen hatten,
den Dämpfungsblock für mein Gewicht (85–100 kg) einzubauen.
Das war vorher vereinbart und sogar im Formular angekreuzt worden.
Den musste ich dann selbst einsetzen.
Das war eine ziemliche Kraftanstrengung –
vor allem das Zusammendrücken der Trapezform
und das Wiedereinsetzen des Bolzens war fummelig
und hat eine ganze Weile gedauert bis ich das zusammen hatte.</p>
<p>Außerdem fand ich es merkwürdig,
dass bei meinem Rad so eine kleine Tasche mit den Garantieunterlagen dabei war,
beim Rad meiner Frau aber nicht.
Auch haben wir keine Bedienungsanleitung gefunden.
Ein kleines Heftchen
oder wenigstens ein Zettel mit einem Link zur Herstellerseite wäre hilfreich gewesen.</p>
<p>Alles in allem sind wir aber sehr zufrieden
und freuen uns auf die ersten gemeinsamen Touren.
Meine erste Tour habe ich nämlich schon hinter mir.
Besonders angetan bin ich dabei von der Beschleunigung.
So ein Mittelmotor ist schon ordentlich ansaugstärker als ein Vorderradmotor.
Das geht schon im Tour+-Modus richtig gut ab.</p>
<p>Gut finde ich auch die Bosch Flow App.
Streckenplanung und Navigation sind damit kein Problem.
Auch wenn ich heute nicht die kürzeste Strecke nach Hause gefahren bin,
so habe ich durch die Routenführung heute ein paar schöne neue Plätze
und Ausflugsziele entdeckt, die mitten in der Stadt liegen.</p>
<h2 id="erste-fahrt-zur-arbeit">Erste Fahrt zur Arbeit</h2>
<p>Heute das erste Mal mit dem neuen Rad zur Arbeit gefahren.
Trotz der großen Reifen lässt es sich in der Stadt angenehm fahren.
Ich überlege aber dennoch, ob ich die Stollenreifen gegen Straßenbereifung tauschen soll.
Vor dem Rückweg habe ich den Lenker etwas höher gestellt.
Das brachte ein klein wenig Erleichterung bei der Haltung.
Allerdings waren dadurch natürlich alle anderen Bedienelemente nicht mehr optimal erreichbar.
Weil mir das passende Werkzeug unterwegs fehlte, konnte ich das erst zu Hause richtig einstellen.</p>
<p>Nachdem alles soweit angepasst war, bin ich noch eine kleine Runde gefahren
und habe auch gleich den neuen Helm ausprobiert:
einen <a href="https://www.bolle.com/nl/bike-helmets/bike-helmets/halo-react-mips-88476.html">Bollé Halo React MIPS</a>.
Der sitzt gut und ist angenehm zu tragen.
Günstig bekommen im Angebot – unter 100 Euro. Das war wirklich ein Schnäppchen.</p>
<p>Leider haben sie aber nur einen Helm geliefert.
Die zweite Bestellung wurde storniert mit der Begründung, der Helm sei nicht mehr auf Lager.
Schaut man jedoch auf der Webseite nach, ist er dort sehr wohl verfügbar –
nur kostet er jetzt plötzlich 240 Euro.
Das kommt einem schon etwas seltsam vor.
Veräppeln kann ich mich auch selbst.</p>
<p>Sie hat sich jetzt stattdessen einen Helm von Livall bestellt.
Vielleicht kommt er noch bis zum Wochenende,
sodass wir gemeinsam fahren können.</p>
<h2 id="die-richtige-fahrradtasche">Die richtige Fahrradtasche</h2>
<p>Ich muss immer noch ein wenig an den Sitz- und Lenker-Einstellungen herumprobieren.
So ganz optimal ist das alles noch nicht. Aber es wird. Schritt für Schritt.</p>
<p>Wir haben uns intensiv mit Fahrradtaschen beschäftigt.
Da gibt es ja <em>so</em> viele – und so viele Details, über die man sich Gedanken machen kann:
Haltbarkeit, Umweltfreundlichkeit, Alltagstauglichkeit, Tragekomfort … und und und.
Abgesehen von den ganzen Produkten,
gibt es noch mehr Videos mit noch mehr Meinungen.
Letztendlich muss man aber doch einfach die nehmen,
die am besten zu einem passt.</p>
<p>Wir haben uns schließlich für die folgenden zwei entschieden:</p>
<p><a href="https://www.vaude.com/de/de/15963-recycle-back-single-fahrradtasche.html#?colour=1690&amp;size=13424">VAUDE ReCycle Back Single in Umbra</a> –
fasst wie eine klassische Einkaufstasche, sehr einfach abzunehmen und mit Tragegriffen super praktisch.
Hier haben uns die Videos vom Kanal <a href="https://www.youtube.com/watch?v=SV6j_uV7WbQ&amp;t=80s">Olafs Pedal und Perspektive</a> geholfen.</p>
<p><a href="https://valkental.com/products/valkpro-3in1-fahrradtasche?country=DE&amp;variant=40144647815321">Valkental ValkPro 3in1 in Rot</a> –
ein flexibler Hybrid, den man ruckzuck zum Rucksack umfunktionieren kann.
Geholfen haben mir dabei die Videos von Olaf und von <a href="https://www.youtube.com/watch?v=fcPgHQclZOE">Jens</a>.</p>
<p>Den Valkental ValkPro 3in1-Rucksack habe ich für mich bestellt,
einfach weil ich den wahrscheinlich häufiger brauchen werde.
Die VAUDE-Tasche ist eher für meine Frau.
Damit lässt sich super der Einkauf erledigen, den sie einfach öfter übernimmt.
Aber am Ende ist das natürlich egal:
Jeder nimmt einfach die Tasche, die für den jeweiligen Zweck besser passt.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Filament Manager: Wie LLMs beim Bauen geholfen haben</title>
      <link>https://cbrueggenolte.de/filament-manager-llms-beim-bauen/</link>
      <pubDate>Mon, 05 May 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/filament-manager-llms-beim-bauen/</guid>
      <description>&lt;p&gt;Heute war Brückentag, und ich hatte noch frei.&#xA;Neben ein paar administrativen Dingen habe ich weiter an meinem &lt;strong&gt;Filament Manager&lt;/strong&gt; programmiert.&#xA;Zwar habe ich das Datenbank-Layout ein paar Mal über den Haufen geworfen und hier und da das Design geändert,&#xA;aber insgesamt ist das Projekt, glaube ich, schon ganz gut geworden – und als Programmierübung war es ebenfalls hilfreich.&#xA;Außerdem kann ich den Manager selbst gut gebrauchen, um meine Filamente zu verwalten.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute war Brückentag, und ich hatte noch frei.
Neben ein paar administrativen Dingen habe ich weiter an meinem <strong>Filament Manager</strong> programmiert.
Zwar habe ich das Datenbank-Layout ein paar Mal über den Haufen geworfen und hier und da das Design geändert,
aber insgesamt ist das Projekt, glaube ich, schon ganz gut geworden – und als Programmierübung war es ebenfalls hilfreich.
Außerdem kann ich den Manager selbst gut gebrauchen, um meine Filamente zu verwalten.</p>
<p>Eine große Hilfe waren tatsächlich auch die <strong>Large Language Models</strong>.
Dank <em>Gemma</em>, <em>Qwen</em>, <em>Claude</em> und Co. ließen sich größere HTML-Abschnitte ziemlich schnell und ohne viel Aufwand umbauen.
Auch Anpassungen im Design mit Tailwind – das Einfügen von Klassen, das Ausprobieren verschiedener Layouts oder das Anpassen von Farben über ganze Seiten hinweg – gehen mit Unterstützung durch LLMs erstaunlich fix.
Sind also gar nicht so schlecht, die Dinger.
Leider konnte ich nicht alles mit einem lokalen Gemma- oder Qwen-Modell umsetzen,
aber das wird langsam besser.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Bun, Hono, TailwindCSS, JSX: Eine tolle Kombination!</title>
      <link>https://cbrueggenolte.de/bun-hono-tailwindcss-jsx-eine-tolle-kombination/</link>
      <pubDate>Thu, 01 May 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/bun-hono-tailwindcss-jsx-eine-tolle-kombination/</guid>
      <description>&lt;h2 id=&#34;einleitung&#34;&gt;Einleitung&lt;/h2&gt;&#xA;&lt;p&gt;Ich hänge immer noch ein wenig im Bootcamp hinterher.&#xA;Da ich die Aufgaben aber nicht schleifen lassen will, habe ich mir gestern einen kleinen Plan aufgestellt,&#xA;um mein Projekt zu pushen: Es soll ein einfacher Filament-Manager werden,&#xA;mit dem ich meine Spulen und deren Eigenschaften verwalten kann.&lt;/p&gt;&#xA;&lt;p&gt;Da ich das nicht mit Astro, sondern mit &lt;a href=&#34;https://bun.sh&#34;&gt;Bun&lt;/a&gt;, &lt;a href=&#34;https://hono.dev&#34;&gt;Hono&lt;/a&gt;&#xA;und &lt;a href=&#34;https://tailwindcss.com&#34;&gt;TailwindCSS&lt;/a&gt; umsetzen möchte, stellte sich die Frage:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Wie kann ich TailwindCSS in mein Projekt integrieren?&lt;/strong&gt;&#xA;Für viele Frameworks gibt es entsprechende Plugins – aber für Bun und Hono leider nicht.&#xA;Nach langem Suchen und Ausprobieren habe ich aber endlich eine Lösung gefunden!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="einleitung">Einleitung</h2>
<p>Ich hänge immer noch ein wenig im Bootcamp hinterher.
Da ich die Aufgaben aber nicht schleifen lassen will, habe ich mir gestern einen kleinen Plan aufgestellt,
um mein Projekt zu pushen: Es soll ein einfacher Filament-Manager werden,
mit dem ich meine Spulen und deren Eigenschaften verwalten kann.</p>
<p>Da ich das nicht mit Astro, sondern mit <a href="https://bun.sh">Bun</a>, <a href="https://hono.dev">Hono</a>
und <a href="https://tailwindcss.com">TailwindCSS</a> umsetzen möchte, stellte sich die Frage:</p>
<p><strong>Wie kann ich TailwindCSS in mein Projekt integrieren?</strong>
Für viele Frameworks gibt es entsprechende Plugins – aber für Bun und Hono leider nicht.
Nach langem Suchen und Ausprobieren habe ich aber endlich eine Lösung gefunden!</p>
<h2 id="projekt-setup-mit-bun--hono">Projekt-Setup mit Bun &amp; Hono</h2>
<p>Als Erstes legen wir ein <code>hono</code>-Projekt mit <code>bun</code> an:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">bun create hono@latest my-project
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nb">cd</span> my-project</span></span></code></pre></div><p>Wir erstellen eine Startseite für die spätere Filamentübersicht.
Lege den Ordner <code>src/routes</code> an, falls er noch nicht existiert,
und erstelle darin die Datei <code>index.ts</code>.
Trage dort den folgenden Code ein:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// src/routes/index.ts
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Hono</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;hono&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kr">const</span> <span class="nx">route</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Hono</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="nx">route</span><span class="p">.</span><span class="kr">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="k">return</span> <span class="nx">c</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="s1">&#39;🎉 Hello from your Filament Manager!****&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">route</span><span class="p">;</span></span></span></code></pre></div><p>Anschließend binden wir diese Route in unsere neue Datei <code>src/app.ts</code> ein.
Diese Datei wird die zentrale Stelle sein, an der wir unsere Hono-App starten.
Lege sie an (falls sie noch nicht existiert), und füge folgenden Code ein:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1">// src/app.ts
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Hono</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;hono&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="kr">import</span> <span class="nx">indexRoute</span> <span class="kr">from</span> <span class="s1">&#39;./routes/index&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Hono</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">route</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="nx">indexRoute</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl">
</span></span><span class="line"><span class="ln">9</span><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">app</span><span class="p">;</span></span></span></code></pre></div><p>Zum Schluss starten wir den Server.
Öffne die Datei <code>src/index.ts</code>
und ersetze den bisherigen Inhalt vollständig durch den folgenden Code:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// src/index.ts
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="nx">app</span> <span class="kr">from</span> <span class="s1">&#39;./app&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kr">const</span> <span class="nx">port</span> <span class="o">=</span> <span class="nx">process</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">PORT</span> <span class="o">||</span> <span class="mi">3000</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="sb">`Server is running on http://localhost:</span><span class="si">${</span><span class="nx">port</span><span class="si">}</span><span class="sb">`</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nx">Bun</span><span class="p">.</span><span class="nx">serve</span><span class="p">({</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="nx">port</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="nx">fetch</span>: <span class="kt">app.fetch</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="p">});</span></span></span></code></pre></div><p>Starte den Server mit folgendem Befehl in einem Terminal:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="ln">1</span><span class="cl">bun run dev</span></span></code></pre></div><p>Wenn alles richtig eingerichtet ist, erreichst du die Startseite unter <code>http://localhost:3000</code> in deinem Browser.</p>
<p><a href="/bun-hono-tailwindcss-jsx-eine-tolle-kombination/bun-hono-start_hu_e69e1fba925bf7ee.webp"><img class="content-image" src="/bun-hono-tailwindcss-jsx-eine-tolle-kombination/bun-hono-start_hu_f75f17cabe1b2730.webp" alt="Ergebnis von bun run dev" title="Ergebnis von bun run dev" loading="lazy" width="1440" height="654" /></a></p>
<p>:::tip
Da wir das Terminal gleich wieder brauchen, stoppen wir den Server mit <code>Ctrl + C</code>.
:::</p>
<h2 id="tailwindcss-integrieren">TailwindCSS integrieren</h2>
<p>Jetzt kümmern wir uns um die Integration von TailwindCSS.</p>
<p>Installiere zuerst die nötigen Pakete als Entwicklungsabhängigkeiten:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">bun add -D tailwindcss @tailwindcss/cli</span></span></code></pre></div><p>Erstelle nun das Verzeichnis <code>src/styles</code> (falls es noch nicht existiert)
und eine Datei namens <code>global.css</code> und füge folgenden Inhalt ein:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln">1</span><span class="cl"><span class="c">/* src/styles/global.css */</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="p">@</span><span class="k">import</span> <span class="s2">&#34;tailwindcss&#34;</span><span class="p">;</span></span></span></code></pre></div><p>Da es derzeit keine offiziellen Plugins für Bun + Hono gibt,
müssen wir die CSS-Datei selbst kompilieren.
Führe dazu im Terminal folgenden Befehl aus:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">bunx @tailwindcss/cli -i ./src/styles/global.css -o ./public/output.css --watch</span></span></code></pre></div><p>:::note
Damit wird Tailwind verarbeitet und die fertige CSS-Datei unter <code>./public/output.css</code> gespeichert.
Der <code>--watch</code>-Modus sorgt dafür, dass Änderungen an deiner CSS-Datei
oder deinem Projekt automatisch neu kompiliert werden.
Du kannst ihn jederzeit mit <code>Ctrl + C</code> beenden.
:::</p>
<h2 id="html-template-einbinden">HTML-Template einbinden</h2>
<p>Jetzt, da wir unsere <code>output.css</code> im <code>public</code>-Ordner haben,
können wir ein HTML-Template erstellen und in unsere Hono-App integrieren.</p>
<p>Lege im Verzeichnis <code>src/templates</code> eine Datei mit dem Namen <code>layout.tsx</code> an.
Falls der Ordner <code>templates</code> noch nicht existiert, erstelle ihn zuerst.</p>
<p>Füge dann folgenden Code ein:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-tsx" data-lang="tsx"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// src/templates/layout.tsx
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">Layout</span> <span class="o">=</span> <span class="p">({</span> <span class="nx">children</span> <span class="p">}</span><span class="o">:</span> <span class="p">{</span> <span class="nx">children</span>: <span class="kt">string</span> <span class="p">})</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="k">return</span> <span class="sb">`
</span></span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="sb">    &lt;!DOCTYPE html&gt;
</span></span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="sb">    &lt;html lang=&#34;de&#34;&gt;
</span></span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="sb">      &lt;head&gt;
</span></span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="sb">        &lt;meta charset=&#34;UTF-8&#34; /&gt;
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="sb">        &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34; /&gt;
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="sb">        &lt;title&gt;Filament Manager&lt;/title&gt;
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="sb">        &lt;link href=&#34;/public/output.css&#34; rel=&#34;stylesheet&#34;&gt;
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="sb">      &lt;/head&gt;
</span></span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="sb">      &lt;body class=&#34;bg-gray-100 text-gray-900 p-4&#34;&gt;
</span></span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="sb">        &lt;main class=&#34;max-w-2xl mx-auto&#34;&gt;
</span></span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="sb">          </span><span class="si">${</span><span class="nx">children</span><span class="si">}</span><span class="sb">
</span></span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="sb">        &lt;/main&gt;
</span></span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="sb">      &lt;/body&gt;
</span></span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="sb">    &lt;/html&gt;
</span></span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="sb">  `</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="p">};</span></span></span></code></pre></div><p>:::note
Das Template ist eine Funktion, die ein vollständiges HTML-Dokument als String zurückgibt.
Das Platzhalterfeld <code>${children}</code> wird später mit dem eigentlichen Seiteninhalt ersetzt.
:::</p>
<p>Jetzt passen wir unsere Startseite an, damit sie das HTML-Template verwendet.</p>
<p>Öffne die Datei <code>src/routes/index.ts</code> und ersetze ihren Inhalt durch:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// src/routes/index.ts
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Hono</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;hono&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Layout</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;../templates/layout&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kr">const</span> <span class="nx">route</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Hono</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nx">route</span><span class="p">.</span><span class="kr">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="kr">const</span> <span class="nx">content</span> <span class="o">=</span> <span class="sb">`
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="sb">    &lt;h1 class=&#34;text-3xl font-medium mb-4&#34;&gt;🎨 Filament Manager&lt;/h1&gt;
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="sb">    &lt;p class=&#34;text-lg&#34;&gt;Hier verwalten wir bald unsere Filamente.&lt;/p&gt;
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="sb">  `</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="k">return</span> <span class="nx">c</span><span class="p">.</span><span class="nx">html</span><span class="p">(</span><span class="nx">Layout</span><span class="p">({</span> <span class="nx">children</span>: <span class="kt">content</span> <span class="p">}));</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">route</span><span class="p">;</span></span></span></code></pre></div><p>:::note
Damit wird deine Startseite jetzt mit dem Template <code>layout.tsx</code> gerendert.
Der HTML-Inhalt in der Variable <code>content</code> wird automatisch an der Stelle <code>${children}</code> eingefügt.
:::</p>
<h2 id="statische-dateien-bereitstellen">Statische Dateien bereitstellen</h2>
<p>Damit die Datei <code>output.css</code> im Browser geladen werden kann, muss Hono den Ordner <code>/public</code> freigeben.
Das erreichen wir mit der Middleware <code>serveStatic</code>:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln">1</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="s1">&#39;/public/*&#39;</span><span class="p">,</span> <span class="nx">serveStatic</span><span class="p">({</span> <span class="nx">root</span><span class="o">:</span> <span class="s1">&#39;./&#39;</span> <span class="p">}));</span></span></span></code></pre></div><p>Füge diese Zeile in <code>src/app.ts</code> ein – zwischen der App-Initialisierung und dem Routing.
Oder ersetze den gesamten Inhalt der Datei <code>src/app.ts</code> durch den folgenden Code:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// src/app.ts
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Hono</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;hono&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">serveStatic</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;hono/bun&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kr">import</span> <span class="nx">indexRoute</span> <span class="kr">from</span> <span class="s1">&#39;./routes/index&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Hono</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">// Statische Dateien wie /public/output.css bereitstellen
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="s1">&#39;/public/*&#39;</span><span class="p">,</span> <span class="nx">serveStatic</span><span class="p">({</span> <span class="nx">root</span><span class="o">:</span> <span class="s1">&#39;./&#39;</span> <span class="p">}));</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">route</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="nx">indexRoute</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">app</span><span class="p">;</span></span></span></code></pre></div><p>Die Middleware sorgt dafür, dass der Browser statische Dateien aus dem <code>public</code>-Verzeichnis laden kann –
zum Beispiel die Datei <code>output.css</code>.</p>
<p>Starte nun den Server erneut (ggf. in einem zweiten Terminalfenster) mit:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="ln">1</span><span class="cl">bun run dev</span></span></code></pre></div><p>:::tip
Falls du den TailwindCSS-Compiler vorher gestoppt hast (z. B. mit <code>Ctrl + C</code>),
starte ihn jetzt erneut – sonst wird die eingebundene Datei <code>output.css</code> nicht aktualisiert.</p>
<p>Verwende dazu denselben Befehl wie zuvor:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="ln">1</span><span class="cl">bunx @tailwindcss/cli -i ./src/styles/global.css -o ./public/output.css --watch</span></span></code></pre></div><p>Am besten lässt du den Compiler dauerhaft in einem separaten Terminalfenster laufen,
während du am Projekt arbeitest.
:::</p>
<p>Wenn alles funktioniert, wird die Startseite unter
<a href="http://localhost:3000">http://localhost:3000</a> angezeigt – diesmal mit TailwindCSS-Styling.</p>
<p><a href="/src/assets/bun-hono-tailwindcss.png"><img class="content-image" src="/src/assets/bun-hono-tailwindcss.png" alt="Bun Hono und Tailwindcss" title="Bun Hono und Tailwindcss" loading="lazy" /></a></p>
<p>Deine Version ist bereits sehr gut – klar strukturiert, technisch korrekt und stilistisch passend zum Blog.
Ich habe sie jetzt nur leicht sprachlich geglättet
und einen durchgehenden, natürlichen Lesefluss hergestellt.
Hier die überarbeitete Fassung:</p>
<hr>
<h2 id="dev-workflow-verbessern">Dev-Workflow verbessern</h2>
<p>Damit du nicht ständig zwei Terminals gleichzeitig offen haben musst,
eines für Hono und eines für Tailwind,
kannst du deinen Workflow etwas bequemer gestalten.</p>
<p>Wir verwenden das Tool <a href="https://www.npmjs.com/package/concurrently"><code>concurrently</code></a>, um beide Prozesse parallel zu starten:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">bun add -D concurrently</span></span></code></pre></div><p>Zunächst kannst du den folgenden <code>dev</code>-Befehl in deiner <code>package.json</code> unter <code>&quot;scripts&quot;</code> ergänzen:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="ln">1</span><span class="cl"><span class="s2">&#34;scripts&#34;</span><span class="err">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nt">&#34;dev&#34;</span><span class="p">:</span> <span class="s2">&#34;concurrently &#39;bun run --hot src/index.ts&#39; &#39;bunx @tailwindcss/cli -i ./src/styles/global.css -o ./public/output.css --watch&#39;&#34;</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><p>Wenn du möchtest, kannst du den Prozessen zusätzlich <strong>Namen und Farben</strong> zuweisen – das macht die Terminalausgabe übersichtlicher:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="ln">1</span><span class="cl"><span class="s2">&#34;scripts&#34;</span><span class="err">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nt">&#34;dev&#34;</span><span class="p">:</span> <span class="s2">&#34;concurrently --names &#39;server,styles&#39; --prefix-colors &#39;yellow,blue&#39;  &#39;bun run --hot src/index.ts&#39; &#39;bunx @tailwindcss/cli -i ./src/styles/global.css -o ./public/output.css --watch&#39;&#34;</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><p>Statt alle Befehle in eine lange
und schwer lesbare Zeile zu packen,
kannst du das Ganze noch besser strukturieren,
indem du <strong>zwei separate Scripts</strong> anlegst:
Eines für den Server, eines für Tailwind.
Dann kombinierst du sie im <code>dev</code>-Befehl über <code>concurrently</code>:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nt">&#34;scripts&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">    <span class="nt">&#34;start:server&#34;</span><span class="p">:</span> <span class="s2">&#34;bun run --hot src/index.ts&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">    <span class="nt">&#34;start:styles&#34;</span><span class="p">:</span> <span class="s2">&#34;bunx @tailwindcss/cli -i ./src/styles/global.css -o ./public/output.css --watch&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">    <span class="nt">&#34;dev&#34;</span><span class="p">:</span> <span class="s2">&#34;concurrently --names &#39;server,styles&#39; --prefix-colors &#39;yellow,blue&#39; &#39;npm run start:server&#39; &#39;npm run start:styles&#39;&#34;</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><p>:::note
<strong>Vorteil:</strong> Du kannst <code>bun run start:server</code> und <code>bun run start:styles</code> auch separat ausführen –
z. B. wenn du nur einen der beiden Prozesse debuggen möchtest.
:::</p>
<p>Wenn du jetzt <code>bun run dev</code> ausführst, starten <strong>Hono-Server und Tailwind-Watcher gleichzeitig</strong>,
farblich getrennt, sauber strukturiert, und mit einem einzigen Befehl.</p>
<h2 id="fazit">Fazit</h2>
<p>Und das war’s auch schon!
Eigentlich gar nicht so schwer – aber für mich war es trotzdem eine kleine Herausforderung,
weil ich mit <strong>Bun</strong> und <strong>Hono</strong> bisher noch wenig Erfahrung hatte.</p>
<p>Aber genau deshalb hat es sich gelohnt:
Ich habe nicht nur die Tools kennengelernt, sondern gleich eine funktionierende Entwicklungsumgebung aufgebaut,
mit TailwindCSS, HTML-Template und Live-Reloading.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ein Twitter-Klon mit Astro, Drizzle und BetterAuth</title>
      <link>https://cbrueggenolte.de/ein-twitter-klon-mit-astro-drizzle-und-betterauth/</link>
      <pubDate>Tue, 29 Apr 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ein-twitter-klon-mit-astro-drizzle-und-betterauth/</guid>
      <description>&lt;p&gt;Heute habe ich das vorletzte Kapitel vom &lt;a href=&#34;https://bootcamp.dev&#34;&gt;Bootcamp&lt;/a&gt; abgeschlossen&#xA;und noch ein bisschen gelernt.&#xA;Ich hänge gefühlt etwa eine Woche hinterher,&#xA;ein Kapitel und ein Projekt stehen noch aus.&#xA;Jetzt kommt das lange Wochenende, und ich hoffe,&#xA;dass ich damit etwas aufholen kann.&lt;/p&gt;&#xA;&lt;p&gt;Als Projekt möchte ich gerne etwas mit &lt;a href=&#34;https://astro.build&#34;&gt;Astro&lt;/a&gt;, Server-Side Rendering (SSR), &lt;a href=&#34;https://orm.drizzle.team&#34;&gt;Drizzle&lt;/a&gt; als ORM und &lt;a href=&#34;https://betterauth.com&#34;&gt;BetterAuth&lt;/a&gt; umsetzen.&#xA;Da gefühlt alle immer nur irgendwelche Task-Management-Apps bauen,&#xA;will ich mal was anderes probieren.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute habe ich das vorletzte Kapitel vom <a href="https://bootcamp.dev">Bootcamp</a> abgeschlossen
und noch ein bisschen gelernt.
Ich hänge gefühlt etwa eine Woche hinterher,
ein Kapitel und ein Projekt stehen noch aus.
Jetzt kommt das lange Wochenende, und ich hoffe,
dass ich damit etwas aufholen kann.</p>
<p>Als Projekt möchte ich gerne etwas mit <a href="https://astro.build">Astro</a>, Server-Side Rendering (SSR), <a href="https://orm.drizzle.team">Drizzle</a> als ORM und <a href="https://betterauth.com">BetterAuth</a> umsetzen.
Da gefühlt alle immer nur irgendwelche Task-Management-Apps bauen,
will ich mal was anderes probieren.</p>
<p>Meine Idee: ein kleiner &ldquo;Twitter&rdquo;-Klon.
Nichts weltbewegend Neues, klar – aber ich glaube,
das kann trotzdem spannend werden.
Außerdem kann ich mich wegen des Zeitdrucks gut am <a href="https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world">Mega-Flask-Tutorial</a> orientieren.
Das spart Zeit bei Planung und Design.</p>
<p><a href="/ein-twitter-klon-mit-astro-drizzle-und-betterauth/screenshot-blinko-login-screen_hu_9f6fb160a1cf87b.webp"><img class="content-image" src="/ein-twitter-klon-mit-astro-drizzle-und-betterauth/screenshot-blinko-login-screen_hu_38ee63a5bbf995bf.webp" alt="Screenshot Blinko Login Screen" title="Screenshot Blinko Login Screen" loading="lazy" width="1440" height="775" /></a></p>
<p>Eigentlich wollte ich mich heute schon an das Projekt setzen,</p>
<p>aber ich wollte unbedingt noch <a href="https://blinko.space">Blinko</a> ausprobieren. Das klang einfach zu spannend, um es links liegen zu lassen:</p>
<blockquote>
<p><em>Blinko is the next generation of open-source AI-powered card notes designed to help you quickly capture and organize inspiration so that ideas never run out.</em></p>
</blockquote>
<p>Also habe ich mir auf dem NAS in Portainer fix einen neuen Stack eingerichtet
und nach ein bisschen Rumprobieren hat dann auch endlich die Verbindung zu Ollama geklappt.
Jetzt werde ich mich in den nächsten Tagen einfach ein bisschen damit beschäftigen und schauen,
ob sich damit was Nützliches anstellen lässt. Mal sehen, was dabei rauskommt.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Datenübersichten mit ChatGPT, SonarQube und ChartJS bauen</title>
      <link>https://cbrueggenolte.de/datenuebersichten-mit-chatgpt-sonarqube-und-chartjs-bauen/</link>
      <pubDate>Thu, 24 Apr 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/datenuebersichten-mit-chatgpt-sonarqube-und-chartjs-bauen/</guid>
      <description>&lt;p&gt;Gestern und heute habe ich mit Hilfe von ChatGPT vier neue Datenübersichten erstellt.&#xA;Da wir eine Übersicht der verwendeten Programmiersprachen pro Projekt und App aus SonarQube haben wollten,&#xA;habe ich mich mit den &lt;a href=&#34;https://github.com/okorach/sonar-tools&#34;&gt;Sonar-Tools&lt;/a&gt; beschäftigt&#xA;um die erforderlichen Daten über die API abzurufen.&lt;/p&gt;&#xA;&lt;p&gt;In kleinem Umfang machen wir das zwar schon seit ein paar Monaten,&#xA;bisher allerdings nur mit den „Non-Commented Lines of Code“.&#xA;Eine Übersicht der Lines of Code pro Programmiersprache, Projekt und App&#xA;hat bisher jedoch noch gefehlt.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gestern und heute habe ich mit Hilfe von ChatGPT vier neue Datenübersichten erstellt.
Da wir eine Übersicht der verwendeten Programmiersprachen pro Projekt und App aus SonarQube haben wollten,
habe ich mich mit den <a href="https://github.com/okorach/sonar-tools">Sonar-Tools</a> beschäftigt
um die erforderlichen Daten über die API abzurufen.</p>
<p>In kleinem Umfang machen wir das zwar schon seit ein paar Monaten,
bisher allerdings nur mit den „Non-Commented Lines of Code“.
Eine Übersicht der Lines of Code pro Programmiersprache, Projekt und App
hat bisher jedoch noch gefehlt.</p>
<p>Da ich alle Daten im JSON-Format vorliegen hatte,
habe ich zunächst eine neue HTML-Datei mit Platzhaltern
und eine JSON-Datei mit Demo-Daten erstellt.
Beides habe ich dann ChatGPT gegeben
und innerhalb kürzester Zeit mit dem passenden Prompt eine fast fertige Lösung in JavaScript erhalten.</p>
<p>Die Liste der vorhandenen Datendateien wird jetzt aus einer Textdatei gelesen
und in einem Dropdown-Menü angezeigt.
Bei Auswahl wird die entsprechende JSON-Datei geladen,
eine Tabelle erzeugt und mit Werten befüllt.
Zusätzlich wird ein Diagramm mit <a href="https://chartjs.org">ChartJS</a> erstellt.</p>
<p>Nach knapp einer Stunde und ein wenig Feintuning war die erste Version fertig – das ging wirklich gut und schnell.
Aber wie so häufig: Wenn man einmal angefangen hat, entdeckt man hier und da noch neue Kleinigkeiten, die man verbessern möchte.</p>
<p>Also habe ich angefangen, die Dokumentation von ChartJS zu lesen und mir ein paar Beispiele anzusehen,
um besser zu verstehen, wozu das Tool in der Lage ist.
Damit fiel es mir leicht, passende Prompts zu formulieren und ChatGPT gezielt um Hilfe zu bitten.</p>
<p>Da ich noch drei weitere Datenübersichten erstellen sollte,
habe ich die erste Lösung überarbeitet,
mit Kommentaren versehen,
um Filter ergänzt
und alles mit TailwindCSS schön gestaltet.</p>
<p>Wobei ChatGPT besonders gut geholfen hat, war beim Umsortieren und Umstrukturieren der Daten.
Eine Datei enthält die Liste aller Applikationen.
Dann gibt es eine Datei pro Applikation mit den Namen der dazugehörigen Projekte (aka Repositories),
und eine große Datei mit den Metriken.</p>
<p>Die große Aufgabe bestand nun darin, das Ganze so hin und herzuschieben und zu kombinieren,
dass man auf der Webseite einen Monat auswählen kann,
dann eine Liste der Applikationen bekommt
und nach Auswahl der App die Statistiken und Metriken dieser angezeigt werden.</p>
<p>Auch beim Hinzufügen von TailwindCSS hat ChatGPT sehr geholfen.
Ebenso bei der Erstellung eines Textfeldes, das beim Eintippen der ersten Buchstaben
die Liste der Projekte filtert, die ich in meine Datenauswertung mit einbeziehen möchte.
Mit passenden Vorgaben ersparte mir das viel Zeit und Tipperei.</p>
<p>Alles in allem war es eine sehr gute Erfahrung, und ich bin mit dem Ergebnis sehr zufrieden.</p>
<p>Morgen muss ich noch die automatische Datenabfrage umschreiben,
da ich die Ordnerstruktur geändert habe.
Das wird aber hoffentlich nicht viel Zeit in Anspruch nehmen –
ich habe ja auch noch ein paar andere Ideen, die ich gerne umsetzen möchte.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Framework Desktop: Mini-ITX-PC für Gaming und KI</title>
      <link>https://cbrueggenolte.de/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/</link>
      <pubDate>Sun, 20 Apr 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/</guid>
      <description>&lt;p&gt;Der &lt;a href=&#34;https://frame.work/nl/en/desktop&#34;&gt;Framework Desktop&lt;/a&gt; ist schon ein faszinierendes Stück Technik:&#xA;ein winziger Mini-ITX-PC, der auf gerade einmal 4,5 Litern Volumen ordentlich Power mitbringt.&#xA;Besonders spannend finde ich ihn für alle, die neben Gaming auch lokal mit KI-Modellen&#xA;experimentieren wollen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/2025-04-20-cover_hu_846a92c6491c1b09.webp&#34;&gt;&lt;img class=&#34;content-image&#34; src=&#34;/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/2025-04-20-cover_hu_69786101c46a3ab9.webp&#34; alt=&#34;Framework Desktop&#34; loading=&#34;lazy&#34; width=&#34;1440&#34; height=&#34;682&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Im Inneren arbeitet eine AMD Ryzen AI Max 395+ APU.&#xA;Mit 16 Zen 5-Kernen und 40 RDNA 3.5-Recheneinheiten für die Grafik soll das Teil laut&#xA;Framework sogar 1440p-Gaming flüssig stemmen.&#xA;Dass man bis zu 128 GB LPDDR5x-RAM konfigurieren kann, macht ihn gerade für speicherhungrige&#xA;KI-Workloads zu einer echten Ansage.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Der <a href="https://frame.work/nl/en/desktop">Framework Desktop</a> ist schon ein faszinierendes Stück Technik:
ein winziger Mini-ITX-PC, der auf gerade einmal 4,5 Litern Volumen ordentlich Power mitbringt.
Besonders spannend finde ich ihn für alle, die neben Gaming auch lokal mit KI-Modellen
experimentieren wollen.</p>
<p><a href="/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/2025-04-20-cover_hu_846a92c6491c1b09.webp"><img class="content-image" src="/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/2025-04-20-cover_hu_69786101c46a3ab9.webp" alt="Framework Desktop" loading="lazy" width="1440" height="682" /></a></p>
<p>Im Inneren arbeitet eine AMD Ryzen AI Max 395+ APU.
Mit 16 Zen 5-Kernen und 40 RDNA 3.5-Recheneinheiten für die Grafik soll das Teil laut
Framework sogar 1440p-Gaming flüssig stemmen.
Dass man bis zu 128 GB LPDDR5x-RAM konfigurieren kann, macht ihn gerade für speicherhungrige
KI-Workloads zu einer echten Ansage.</p>
<p>Was mich bei <a href="https://frame.work/nl/en/desktop">Framework</a> immer wieder abholt, ist das modulare
Design.
Trotz der kompakten Maße gibt es zwei M.2-Slots für SSDs und moderne Anschlüsse wie USB4 und
Wi-Fi 7.
Ein nettes Spielzeug ist die austauschbare Frontplatte mit 21 individuellen Tiles – man kann
sich das System also wirklich optisch und funktional zurechtbiegen.</p>
<p>Framework-typisch bleibt man sich auch beim Mainboard treu:
Wer mag, kann die Platine für 929 € einzeln kaufen und in ein eigenes Gehäuse verfrachten.
Aber wo Licht ist, ist auch Schatten: Der RAM ist leider fest verlötet.
Nachträgliches Aufrüsten fällt also flach, was bei einem sonst so modularen Gerät schon ein
wenig schmerzt.
Zudem gibt es nur einen PCIe-x4-Slot, eine klassische fette Grafikkarte bekommt man hier also
nicht unter.</p>
<p><a href="/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/2025-04-20-frame-work-desktop-configuration_hu_16386211ec495e98.webp"><img class="content-image" src="/framework-desktop-mini-itx-pc-fuer-gaming-und-ki/2025-04-20-frame-work-desktop-configuration_hu_12bd1ca779cc80e3.webp" alt="Framework Desktop Configuration" loading="lazy" width="1440" height="1921" /></a></p>
<p>Preislich ist das Ganze kein Schnapper:
Los geht es bei 1.279 €, und wer das volle Paket mit 128 GB RAM will, landet schnell bei
2.329 €.
Die Nachfrage scheint aber riesig zu sein – die ersten Chargen für Q3 2025 sind bereits
vergriffen.</p>
<p><strong>Mein Fazit:</strong> Der Framework Desktop ist ein starkes Konzept für alle, die viel Leistung auf
kleinstem Raum suchen und auf eine externe GPU verzichten können.
Wer mit dem verlöteten Arbeitsspeicher leben kann, bekommt hier ein hochwertiges und extrem
flexibles System.</p>
<h2 id="update-2026-01">Update 2026-01</h2>
<p>Ich abe den Rechner aktuell noch einmal auf der Webseite von Frame.work konfiguriert.
Dabei ist mir aufgefallen, dass der Preis um über 100 Euro gestiegen ist.
Verrückt, wie sehr der KI-Boom die Hardwarepreise beeinflusst.</p>
]]></content:encoded>
    </item>
    <item>
      <title>TypeScript Drizzle-ORM Demo</title>
      <link>https://cbrueggenolte.de/typescript-drizzle-orm-demo/</link>
      <pubDate>Sat, 19 Apr 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/typescript-drizzle-orm-demo/</guid>
      <description>&lt;p&gt;Heute war ein entspannter Samstag. Ich habe mich wieder ans Bootcamp-Skript gesetzt und mich diesmal mit &lt;strong&gt;Drizzle ORM&lt;/strong&gt; für TypeScript beschäftigt – ein echtes Vergnügen, damit Datenbankabfragen zu erstellen.&lt;/p&gt;&#xA;&lt;p&gt;Entstanden ist dieses Repo: &lt;a href=&#34;https://github.com/cblte/drizzle-demo&#34;&gt;https://github.com/cblte/drizzle-demo&lt;/a&gt; – noch nicht perfekt, aber läuft schon richtig gut. Hier ein kurzer Auszug aus &lt;code&gt;index.ts&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Initialisierung&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;drizzle&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;drizzle-orm/node-postgres&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;./drizzle/schema&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Pool&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pg&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pool&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Pool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;connectionString&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;process.env.POSTGRES_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;drizzle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;schema&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Beispiel: Benutzer abrufen&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getUsers() {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;select&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;getUsers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;then&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und das ist nur ein kleiner Teil – im Skript im Repo findest du komplette Beispiele für Delete, Insert, Update, Queries mit &lt;code&gt;eq/and/like&lt;/code&gt;, Transaktionen und Fehlerbehandlung.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute war ein entspannter Samstag. Ich habe mich wieder ans Bootcamp-Skript gesetzt und mich diesmal mit <strong>Drizzle ORM</strong> für TypeScript beschäftigt – ein echtes Vergnügen, damit Datenbankabfragen zu erstellen.</p>
<p>Entstanden ist dieses Repo: <a href="https://github.com/cblte/drizzle-demo">https://github.com/cblte/drizzle-demo</a> – noch nicht perfekt, aber läuft schon richtig gut. Hier ein kurzer Auszug aus <code>index.ts</code>:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// Initialisierung
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">drizzle</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;drizzle-orm/node-postgres&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">users</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;./drizzle/schema&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Pool</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;pg&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kr">const</span> <span class="nx">pool</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Pool</span><span class="p">({</span> <span class="nx">connectionString</span>: <span class="kt">process.env.POSTGRES_URL</span><span class="o">!</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="kr">const</span> <span class="nx">db</span> <span class="o">=</span> <span class="nx">drizzle</span><span class="p">(</span><span class="nx">pool</span><span class="p">,</span> <span class="p">{</span> <span class="nx">schema</span><span class="o">:</span> <span class="p">{</span> <span class="nx">users</span> <span class="p">}</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">// Beispiel: Benutzer abrufen
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="kr">async</span> <span class="kd">function</span> <span class="nx">getUsers() {</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="k">return</span> <span class="k">await</span> <span class="nx">db</span><span class="p">.</span><span class="nx">select</span><span class="p">().</span><span class="kr">from</span><span class="p">(</span><span class="nx">users</span><span class="p">).</span><span class="nx">all</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="nx">getUsers</span><span class="p">().</span><span class="nx">then</span><span class="p">(</span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">);</span></span></span></code></pre></div><p>Und das ist nur ein kleiner Teil – im Skript im Repo findest du komplette Beispiele für Delete, Insert, Update, Queries mit <code>eq/and/like</code>, Transaktionen und Fehlerbehandlung.</p>
<h3 id="warum-drizzle-so-gut-passt">Warum Drizzle so gut passt</h3>
<ul>
<li><strong>Typensicherheit &amp; schlanke API</strong> – klare TS-Typen bei Schema &amp; Abfragen</li>
<li><strong>Leichtgewichtig &amp; performant</strong> – ~7 KB, tree‑shakeable, serverless-ready (<a href="https://github.com/drizzle-team/drizzle-orm" title="drizzle-team/drizzle-orm: Headless TypeScript ORM with a ... - GitHub">github.com</a>, <a href="https://orm.drizzle.team/drizzle-studio/overview" title="Meet Drizzle Studio">orm.drizzle.team</a>)</li>
<li><strong>Migrationen &amp; Studio</strong> – mit <code>drizzle-kit</code> kannst du Migrations-Workflow und Drizzle Studio nutzen (<a href="https://orm.drizzle.team/docs/kit-overview" title="Migrations with Drizzle Kit">orm.drizzle.team</a>)</li>
</ul>
<p>Wenn du das Repo ausprobierst, würde mich interessieren:</p>
<ul>
<li>Klappt die Typ-Sicherheit für dich?</li>
<li>Hast du eigene Erweiterungen oder Ideen?</li>
</ul>
<p>Viel Spaß beim Ausprobieren – alles Wichtige steht im Repo. ;-)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Mehr Schein als Sein? Warum Oracle oft enttäuscht</title>
      <link>https://cbrueggenolte.de/mehr-schein-als-sein-warum-oracle-oft-enttaeuscht/</link>
      <pubDate>Wed, 16 Apr 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/mehr-schein-als-sein-warum-oracle-oft-enttaeuscht/</guid>
      <description>&lt;p&gt;In einer aktuellen Folge des Podcasts Security Now! (Episode 1021 vom 15. April 2025)&#xA;wurde ein Punkt aufgegriffen,&#xA;den ich schon länger kritisch sehe:&#xA;Oracle gibt sich in Sachen Sicherheit einfach zu bedeckt.&#xA;Steve Gibson sagt da ganz passend:&#xA;„Why is it so difficult for Oracle to &amp;lsquo;fess up to what is obvious to everybody else that happened?“&#xA;Und das trifft es ziemlich gut.&#xA;Oracle redet Sicherheitslücken oft klein oder streitet sie sogar ab,&#xA;obwohl die ganze Community längst Bescheid weiß und darüber diskutiert.&#xA;Das sorgt bei mir jedes Mal für Kopfschütteln.&#xA;Transparenz sieht für mich anders aus.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In einer aktuellen Folge des Podcasts Security Now! (Episode 1021 vom 15. April 2025)
wurde ein Punkt aufgegriffen,
den ich schon länger kritisch sehe:
Oracle gibt sich in Sachen Sicherheit einfach zu bedeckt.
Steve Gibson sagt da ganz passend:
„Why is it so difficult for Oracle to &lsquo;fess up to what is obvious to everybody else that happened?“
Und das trifft es ziemlich gut.
Oracle redet Sicherheitslücken oft klein oder streitet sie sogar ab,
obwohl die ganze Community längst Bescheid weiß und darüber diskutiert.
Das sorgt bei mir jedes Mal für Kopfschütteln.
Transparenz sieht für mich anders aus.</p>
<p>Aber ehrlich gesagt ist das nur ein Teil des Problems.
Das Gesamtbild von Oracle ist schon ziemlich abschreckend:
Die Lizenzpolitik ist eine einzige Kostenfalle.
Die Lizenzen sind überteuert und das Modell total kompliziert.
Man bezahlt viel zu viel,
nutzt am Ende aber meist nur einen Bruchteil der Funktionen.
Im Vertrieb wird gern das komplette Paket empfohlen – auch wenn man das meiste gar nicht braucht.
Das ist einfach klassisches Aufschwatzen,
am Ende sitzt man dann auf teuren Lizenzen, die kein Mensch nutzt.</p>
<p>Und dann ist da noch dieses Gefühl,
dass Oracle Probleme lieber verwaltet, als sie wirklich zu lösen.
Man verliert so viel Zeit mit endlosen Verhandlungen, Lizenz-Checks und Detailfragen,
statt einfach mal Lösungen auf den Tisch zu bekommen, die im Alltag helfen.</p>
<p>Ich wünschte mir einfach,
dass so ein großer Anbieter wie Oracle transparenter und ehrlicher wäre – gerade, wenn es um Sicherheit geht.
Eine Preisstruktur, die man versteht und die sich am tatsächlichen Bedarf orientiert, wäre auch schön.
Und ganz ehrlich:
Weniger Marketing-Sprech, mehr echte Lösungen.
Das wär’s doch.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Das Web ist stärker verbunden, als wir denken</title>
      <link>https://cbrueggenolte.de/das-web-ist-staerker-verbunden-als-wir-denken/</link>
      <pubDate>Sat, 05 Apr 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/das-web-ist-staerker-verbunden-als-wir-denken/</guid>
      <description>&lt;p&gt;Heute habe ich den &lt;a href=&#34;https://peopleandblocks.com/&#34;&gt;People &amp;amp; Blocks Newsletter&lt;/a&gt; abonniert,&#xA;eine wöchentliche Reihe, die interessante Menschen und ihre Blogs vorstellt.&#xA;Und ziemlich schnell bin ich erneut über &lt;a href=&#34;https://interconnected.org&#34;&gt;Matt Webb&lt;/a&gt; gestolpert.&lt;/p&gt;&#xA;&lt;p&gt;Ich hatte letztes Jahr zum ersten Mal von Matt gehört,&#xA;und zwar durch sein Projekt &lt;a href=&#34;https://www.actsnotfacts.com/made/ai-clock&#34;&gt;AI Clock: Poem/1&lt;/a&gt;,&#xA;eine Uhr, die basierend auf der aktuellen Zeit Gedichte generiert, unterstützt von ChatGPT.&lt;/p&gt;&#xA;&lt;p&gt;Aber viel spannender ist eigentlich, wie ich wieder auf seiner Seite gelandet bin.&#xA;Und genau deshalb glaube ich, dass das Web viel stärker miteinander verbunden ist,&#xA;als wir oft denken&#xA;und dass wir keine großen Plattformen brauchen, um in Verbindung zu bleiben.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute habe ich den <a href="https://peopleandblocks.com/">People &amp; Blocks Newsletter</a> abonniert,
eine wöchentliche Reihe, die interessante Menschen und ihre Blogs vorstellt.
Und ziemlich schnell bin ich erneut über <a href="https://interconnected.org">Matt Webb</a> gestolpert.</p>
<p>Ich hatte letztes Jahr zum ersten Mal von Matt gehört,
und zwar durch sein Projekt <a href="https://www.actsnotfacts.com/made/ai-clock">AI Clock: Poem/1</a>,
eine Uhr, die basierend auf der aktuellen Zeit Gedichte generiert, unterstützt von ChatGPT.</p>
<p>Aber viel spannender ist eigentlich, wie ich wieder auf seiner Seite gelandet bin.
Und genau deshalb glaube ich, dass das Web viel stärker miteinander verbunden ist,
als wir oft denken
und dass wir keine großen Plattformen brauchen, um in Verbindung zu bleiben.</p>
<p>Es begann gestern Abend:
Ich schrieb an meiner Seite, in der ich erkläre, wie ich <a href="/ai/">KI</a> einsetze.
Dazu kam ich, weil ich auf das <a href="https://www.bydamo.la/p/ai-manifesto">AI Manifesto</a> von <a href="https://damola.com">Damola Morenikeji</a> gestoßen war.
Von dort klickte ich mich weiter durch die <a href="https://slashai.page/">slashAI.page</a>,
eine Sammlung von Seiten anderer Leute über ihren Umgang mit KI,
klickte hier und da auf ein paar Links (wie man das eben so macht)
und landete plötzlich auf <a href="https://kagi.com">kagi.com</a> <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p>
<p>Von Kagi hatte ich schon einmal gehört,
aber ich hatte nie die Zeit gefunden, es wirklich auszuprobieren.
Kagi ist eine Suchmaschine, die das genaue Gegenteil von Google sein will:
Keine Werbung, kein Tracking, keine algorithmische Manipulation.
Stattdessen stehen Datenschutz und eine klare, ungestörte Sucherfahrung im Vordergrund.
Aber gut, weiter im Text.</p>
<p>Heute Morgen bin ich dann wieder auf Kagi gelandet
und habe das <a href="https://kagi.com/smallweb">Small Web Projekt</a> <sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> entdeckt.
Eine von Hand kuratierte Sammlung persönlicher Webseiten.
Ich klickte ein paar Mal auf „Nächster Beitrag“
und landete schließlich bei <a href="https://simonwillison.net/">Simon Willisons Blog</a>,
dem ich ohnehin schon wegen seiner KI-Inhalte folge.</p>
<p>Und von dort?
Direkt ins People &amp; Blocks-Interview mit Matt Webb,
wo sich der Kreis schließlich schloss.</p>
<p>Alle sagen immer, das Internet sei riesig.
Und ja, das mag stimmen, besonders wenn man Katzenvideos schaut oder über Ananas auf Pizza diskutiert.
(Das <a href="https://en.wikipedia.org/wiki/Deep_web">Deep Web</a> <sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> ist übrigens noch größer – aber das ist eine andere Geschichte.)
Aber wenn man seiner eigenen kleinen Interessensblase folgt,
fühlt sich das Internet plötzlich gemütlich, überschaubar und fast familiär an.
Fast wie eine digitale Kleinstadt, in der irgendwie jeder jeden kennt.</p>
<p>Passenderweise heißt Matts Seite auch <code>interconnected.org</code>.
Manchmal hat das Universum wirklich Sinn für Humor.</p>
<p>Hier ist ein Zitat aus dem Interview, das bei mir besonders hängen geblieben ist <sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>:</p>
<blockquote>
<p>Blogging has become a political act once again. It’s about making a statement by putting your words in a place where they aren’t subject to someone else’s algorithm dictating what success looks like; when you blog, your words are not a vote for the values of another platform.</p>
</blockquote>
<p>Das hat mich wirklich beeindruckt.
Im Laufe der Jahre haben sich meine technischen Grundlagen verändert,
mein Layout hat sich verändert,
mein Schreibrhythmus und -stil hat sich verändert.
Aber warum ich trotzdem immer noch blogge?</p>
<p>Ganz einfach:
Es ist mein Raum. Meine Worte, zu meinen Bedingungen.
Meine Website, auf der ich tun und lassen kann, was ich will.</p>
<p>Klar, das Web ist riesig.
Doch folgt man seinen eigenen Leidenschaften,
fühlt es sich plötzlich wunderbar klein und viel menschlicher an.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Kagi ist eine Suchmaschine, die den Fokus auf Datenschutz und Nutzererfahrung legt.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Das Small Web Projekt auf <a href="https://github.com/kagisearch/smallweb">github.com</a>.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>Das Deep Web umfasst Teile des Internets, die nicht von klassischen Suchmaschinen indexiert werden. <a href="https://de.wikipedia.org/wiki/Deep_Web">Wikipedia</a> / <a href="https://nordvpn.com/de/blog/was-ist-das-dark-web/">NordVPN Blog</a>.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>Lustigerweise ist es genau das gleiche Zitat, das <a href="https://simonwillison.net/2025/Apr/5/matt-webb/">Simon Willison</a> in seinem Blogpost verwendet hat.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Mein Blog erfindet sich neu</title>
      <link>https://cbrueggenolte.de/mein-blog-erfindet-sich-neu/</link>
      <pubDate>Mon, 31 Mar 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/mein-blog-erfindet-sich-neu/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/mein-blog-erfindet-sich-neu/2025-03-31-cover_hu_d7e153d8035b2730.webp&#34;&gt;&lt;img class=&#34;content-image&#34; src=&#34;/mein-blog-erfindet-sich-neu/2025-03-31-cover_hu_c1f2e45eeefbb3db.webp&#34; alt=&#34;A new blog software comes to life- Astro Logo&#34; loading=&#34;lazy&#34; width=&#34;1440&#34; height=&#34;754&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ich habe einige Zeit damit verbracht, meine Blog-Software komplett zu überarbeiten.&#xA;Anstelle von Python-Flask und Hugo verwende ich jetzt &lt;a href=&#34;https://astro.build&#34;&gt;Astro&lt;/a&gt;-&#xA;und ich könnte nicht zufriedener mit diesem Wechsel sein.&lt;/p&gt;&#xA;&lt;h2 id=&#34;warum-die-änderung&#34;&gt;Warum die Änderung?&lt;/h2&gt;&#xA;&lt;p&gt;Mein altes Python-Flask-Setup hat lange zuverlässig funktioniert, bis es irgendwann an seine Grenzen stieß.&#xA;Ich will mich für meinen zukünftigen Job mehr mit moderner Webentwicklung beschäftigen&#xA;und nehme deshalb gerade am &lt;a href=&#34;https://bootcamp.dev/&#34;&gt;Full-Stack Web Development Bootcamp&lt;/a&gt; teil.&#xA;Es schien der perfekte Moment zu sein, etwas Neues auszuprobieren&#xA;und vielleicht auch die unzähligen Stunden zu rechtfertigen,&#xA;die ich bisher in JavaScript-Tutorials investiert habe.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="/mein-blog-erfindet-sich-neu/2025-03-31-cover_hu_d7e153d8035b2730.webp"><img class="content-image" src="/mein-blog-erfindet-sich-neu/2025-03-31-cover_hu_c1f2e45eeefbb3db.webp" alt="A new blog software comes to life- Astro Logo" loading="lazy" width="1440" height="754" /></a></p>
<p>Ich habe einige Zeit damit verbracht, meine Blog-Software komplett zu überarbeiten.
Anstelle von Python-Flask und Hugo verwende ich jetzt <a href="https://astro.build">Astro</a>-
und ich könnte nicht zufriedener mit diesem Wechsel sein.</p>
<h2 id="warum-die-änderung">Warum die Änderung?</h2>
<p>Mein altes Python-Flask-Setup hat lange zuverlässig funktioniert, bis es irgendwann an seine Grenzen stieß.
Ich will mich für meinen zukünftigen Job mehr mit moderner Webentwicklung beschäftigen
und nehme deshalb gerade am <a href="https://bootcamp.dev/">Full-Stack Web Development Bootcamp</a> teil.
Es schien der perfekte Moment zu sein, etwas Neues auszuprobieren
und vielleicht auch die unzähligen Stunden zu rechtfertigen,
die ich bisher in JavaScript-Tutorials investiert habe.</p>
<h2 id="neu-anfangen-mit-astro">Neu anfangen mit Astro</h2>
<p>Also habe ich beschlossen, nochmal bei Null anzufangen,
auch weil es mir einfach Spaß macht,
Dinge einzustampfen und immer mal wieder etwas Neues auszuprobieren.
Ich startete mit der Minimalvorlage von Astro
und fügte dann Baustein für Baustein hinzu,
fast so, als würde ich etwas aus LEGO zusammenbauen.
Die Einrichtung war überraschend einfach.
Innerhalb weniger Minuten lief eine kleine Website.
Ich entdecke immer noch neue Möglichkeiten mit Astro
und bin jetzt schon begeistert, was damit alles machbar ist.</p>
<h2 id="warum-astro">Warum Astro?</h2>
<p>Was mich an Astro begeistert, ist die starke Performance
und die Art, wie alles modular aufgebaut ist.
Dank der sogenannten „partiellen Hydrierung“ lädt der Blog jetzt schneller als je zuvor.
Markdown-Unterstützung ist direkt mit an Bord, super praktisch fürs Schreiben,
und die vielen Community-Integrations haben mir echt viel Zeit gespart
(auch wenn ich diese Zeit sofort wieder damit verbracht habe, ewig über Farbschemata zu grübeln).</p>
<h2 id="lernkurve">Lernkurve</h2>
<p>Bis vor Kurzem endeten meine JavaScript-Kenntnisse bei <code>alert('Hello World')</code>.
Der Umstieg auf dieses neue System war also&hellip; sagen wir mal: ziemlich spannend.
Gerade das Thema asynchrone Programmierung hat mich am Anfang ganz schön ins Schwitzen gebracht.
Aber jeden Tag verstehe ich ein bisschen mehr und ja,
mein Suchverlauf besteht inzwischen zu 90 % aus Einträgen wie „JavaScript Promises einfach erklärt für Fünfjährige“.</p>
<h2 id="migration-im-gange">Migration im Gange</h2>
<p>Ich bin gerade dabei, meine alten Blogbeiträge
nach und nach ins neue System zu übertragen.
Einen festen Zeitplan habe ich nicht (ehrlich gesagt: das wird dauern, so lange es eben dauert),
aber ich nehme mir vor, den Großteil bis Sommer 2025 fertig zu haben,
oder eben, sobald die Motivation wieder vorbeischaut.</p>
<h2 id="kurz-gesagt">Kurz gesagt</h2>
<p>Der Wechsel zu Astro bedeutet für mich mehr als nur ein technisches Update.
Es fühlt sich auch wie ein kleiner Schritt nach vorne auf meinem beruflichen Weg an.
Vom selbstgebauten Python-Tool (ja, das lief viel zu lange) über Hugo
bis hin zu einem modernen JavaScript-Framework.
Das passt perfekt zu dem, wo ich als Fullstack-Entwickler hinmöchte.</p>
<p>Und ja, ich gebe zu: Ich neige dazu, Dinge komplizierter zu machen, als sie sein müssten.</p>
<p>Auch wenn das Ganze seine Zeit braucht,
macht der Umstieg die Pflege und Weiterentwicklung des Blogs einfach viel angenehmer.
Ich werde regelmäßig neue Inhalte hinzufügen und die Seite Stück für Stück verbessern.
Schaue also gerne wieder vorbei und wenn du Feedback hast, immer her damit!
(Konstruktive Kritik nehme ich mit offenen Armen an, harsches Urteil wird still registriert.)</p>
<p>Dieser Blog wächst mit meinen Erfahrungen mit,
dokumentiert neue Ideen und technische Entwicklungen.
In der schnelllebigen Welt der Webentwicklung
ist ein kompletter Neustart manchmal einfach die beste Lösung
oder zumindest die beste Ausrede für nächtelanges Coden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Mac Setup</title>
      <link>https://cbrueggenolte.de/mac-setup/</link>
      <pubDate>Sun, 30 Mar 2025 18:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/mac-setup/</guid>
      <description>&lt;p&gt;Ich habe vor ein paar Tagen mein neues 15&amp;quot; MacBook Air (M4) in der Farbe Midnight erhalten.&#xA;Es ist fantastisch!&lt;/p&gt;&#xA;&lt;p&gt;Er ist leicht, schnell und sieht wirklich gut aus.&#xA;Ja, man sieht wahrscheinlich ein paar Fingerabdrücke darauf,&#xA;aber wahrscheinlich mehr auf der Tastatur als auf dem Gehäuse - aber das ist mir egal.&#xA;Die Tastatur meines MacBook Pro M1 Pro sieht gebraucht aus,&#xA;weil ich seit über zwei Jahren darauf tippe. So what?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe vor ein paar Tagen mein neues 15&quot; MacBook Air (M4) in der Farbe Midnight erhalten.
Es ist fantastisch!</p>
<p>Er ist leicht, schnell und sieht wirklich gut aus.
Ja, man sieht wahrscheinlich ein paar Fingerabdrücke darauf,
aber wahrscheinlich mehr auf der Tastatur als auf dem Gehäuse - aber das ist mir egal.
Die Tastatur meines MacBook Pro M1 Pro sieht gebraucht aus,
weil ich seit über zwei Jahren darauf tippe. So what?</p>
<p>Der Hauptgrund,
warum ich vom MacBook Pro auf das MacBook Air umgestiegen bin, ist,
dass das Air leichter und einfacher zu transportieren ist,
und außerdem eine längere Akkulaufzeit hat.
Obendrein hat Apple hat uns ein sehr gutes Angebot für die Rückgabe unserer alten Geräte gemacht.</p>
<p>Aber zurück zum Thema dieses Textes:</p>
<p>Ich verwende Homebrew Bundles und Ansible, um das Ganze einzurichten.
Ich kann dir die einzelnen Ansible Playbooks nicht zeigen,
aber ich kann dir die Homebrew Bundle-Dateien zeigen.
Außerdem habe weiter unten den Prozess der Einrichtung von macOS beschreiben.</p>
<p>Zunächst beende die Einrichtung von macOS nach dem ersten Start.
Hier sind meine Einstellungen:</p>
<ul>
<li>Zwei Konten, eines für iCloud und eines für den App Store.</li>
<li>Standortdienste aktiviert.</li>
<li>Analyse deaktiviert.</li>
<li>Siri und Apple Intelligence habe ich eingeschaltet. Ich bin nämlich schon gespannt, was Siri nun alles kann oder können soll.</li>
<li>Teilen von Siri-Audioaufzeichnungen ist deaktiviert.</li>
<li>FileVault aktiviert. Falls diese Frage nicht erscheint, sollte man es später unter Systempräferenzen &gt; Datenschutz &amp; Sicherheit &gt; FileVault aktivieren.</li>
</ul>
<h2 id="danach-passe-ich-einige-einstellungen-in-macos-an">Danach passe ich einige Einstellungen in macOS an</h2>
<p>Bevor ich mit der Installation meiner Programme loslege,
schau ich erstmal in die Systemeinstellungen
und pass ein paar Dinge an meine Bedürfnisse an.</p>
<p>Unter &ldquo;Datenschutz &amp; Sicherheit&rdquo; und &ldquo;Standortdienste&rdquo;
schalt ich bei &ldquo;Systemdienste&rdquo; die &ldquo;Signifikanten Orte&rdquo; aus
und aktiviere das &ldquo;Standortsymbol im Kontrollzentrum&rdquo;.</p>
<p>Im Abschnitt &ldquo;Analysen &amp; Verbesserungen&rdquo; schalt ich alles aus.</p>
<p>Unter &ldquo;Allgemein&rdquo; geh ich dann zu &ldquo;Software-Updates&rdquo;,
klicke auf das &ldquo;Info-Symbol&rdquo;
und überprüfe, ob &ldquo;Neueste Updates herunterladen, wenn verfügbar&rdquo;
und &ldquo;Sicherheits- und Systemdateien installieren&rdquo; aktiviert sind.</p>
<p>Ein weiterer Punkt,
den man sich anschauen kann,
ist &ldquo;Barrierefreiheit &gt; Audio &gt; Kopfhörer-Anpassungen&rdquo;.
Hier kann man den Sound für Apple-Kopfhörer optimieren,
entweder mit den Voreinstellungen oder einer eigenen Audio-Konfiguration.</p>
<p>Es gibt bestimmt noch viele andere Einstellungen,
die man nach Belieben anpassen kann.
Es sich, die Systemeinstellungen mal genauer unter die Lupe zu nehmen.
Vielleicht findet man noch das ein oder andere,
das man ändern möchte.</p>
<h2 id="apps-die-man-sich-angucken-sollte">Apps die man sich angucken sollte</h2>
<p>Apple hat eine neue Passwort-App namens <code>Passwords</code> vorgestellt.
Ich verwende aber weiterhin <a href="https://bitwarden.com">Bitwarden</a>,
weil sich Bitwarden in andere Browser integrieren und Systemübergreifend verfügbar ist.
Aber es ist etwas, das man sich ansehen und ausprobierne sollte.</p>
<p>Etwas das sich auch lohnt anzuschauen ist die Rasterfunktionalität unter <code>Desktop &amp; Dock</code>.
In der Vergangenheit habe ich <a href="https://rectangleapp.com">Rectangle</a> verwendet,
und ich bin froh, dass es endlich einen einigermaßen guten Ersatz gibt.
Mit den passenden <a href="https://support.apple.com/en-gb/guide/mac-help/mchl9674d0b0/mac">Tastenkombinationen</a> kannst du die Fenster sehr einfach verschieben.</p>
<h2 id="software-installation-mit-homebrew">Software Installation mit Homebrew</h2>
<p>Zusätzlich zu den Systemeinstellungen verwende ich einen <a href="https://docs.brew.sh/Brew-Bundle-and-Brewfile">Brewfile</a>,
mit dem ich die meisten meiner Programme installiere.</p>
<p>Bevor das Brewfile verwendet werden kann,
muss man natürlich erst <a href="https://brew.sh/">brew</a> installieren.
Folge dazu einfach der Anleitung auf deren Webseite.</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ruby" data-lang="ruby"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># The Brewfile</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1"># last update 2025-03-29</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">#</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1"># Core tools</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;bat&#34;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;croc&#34;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;eza&#34;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;fd&#34;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;fzf&#34;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;git&#34;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;wget&#34;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;rclone&#34;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1"># Productive Tools</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;yt-dlp&#34;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="c1"># JavaScript / TypeScript</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;node&#34;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;node@22&#34;</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="c1"># Deno and Bun are installed via ansible playbook</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="c1"># Python</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;python@3.13&#34;</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="c1"># System / Networking</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;htop&#34;</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;btop&#34;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;iftop&#34;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="n">brew</span> <span class="s2">&#34;neofetch&#34;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="c1"># Casks</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;bambu-studio&#34;</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;bitwarden&#34;</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;deepl&#34;</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;discord&#34;</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;docker&#34;</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;firefox&#34;</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-cousine-nerd-font&#34;</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-cousine&#34;</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-code-nerd-font&#34;</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-code&#34;</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-mono-for-powerline&#34;</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-mono-nerd-font&#34;</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-mono&#34;</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-sans-condensed&#34;</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-sans-extra-condensed&#34;</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-fira-sans&#34;</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-firago&#34;</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-hack-nerd-font&#34;</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-hermit&#34;</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-victor-mono-nerd-font&#34;</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;font-victor-mono&#34;</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;ghostty&#34;</span>
</span></span><span class="line"><span class="ln">56</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;lm-studio&#34;</span>
</span></span><span class="line"><span class="ln">57</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;mullvad-browser&#34;</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;ollama&#34;</span>
</span></span><span class="line"><span class="ln">59</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;postman&#34;</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;raycast&#34;</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;rectangle&#34;</span>
</span></span><span class="line"><span class="ln">62</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;steam&#34;</span>
</span></span><span class="line"><span class="ln">63</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;visual-studio-code&#34;</span>
</span></span><span class="line"><span class="ln">64</span><span class="cl"><span class="n">cask</span> <span class="s2">&#34;zed&#34;</span></span></span></code></pre></div><p>Dies ist mehr oder weniger die Liste der Werkzeuge, die ich täglich verwende.</p>
<h2 id="post-setup">Post-Setup</h2>
<p>Nachdem du dein System konfiguriert
und die Programme installiert hast,
solltest du es testen,
um sicherzustellen,
dass alles reibungslos läuft.</p>
<p>Beginne damit, deine wichtigsten Anwendungen zu öffnen,
um zu überprüfen, ob sie korrekt starten und funktionieren.</p>
<p>Überprüfe deine Bluetooth-Verbindungen
und stelle sicher,
dass Geräte wie Kopfhörer,
Drucker oder externe Tastaturen richtig verbunden sind.</p>
<p>Prüfe deine Systemeinstellungen erneut, um sicherzustellen,
dass sie deinen Bedürfnissen entsprechen,
insbesondere im Bereich Datenschutz, Benachrichtigungen und Sicherheit.</p>
<p>Erstelle abschließend ein Time Machine-Backup
oder ein anderes System-Backup,
damit deine Daten geschützt
und einfach wiederhergestellt werden können.</p>
<h2 id="wrapping-up">Wrapping Up</h2>
<p>Den Umstieg von meinem MacBook Pro
auf das neue 15&quot; MacBook Air mit M4 Prozessor
habe ich bisher nicht bereut.
Die Kombination aus leichtem Design
und hoher Leistung ermöglicht mir lange Codingsessions
oder leichtes Gaming -
ohne ständig nach einer Steckdose suchen zu müssen.
Und das elegante Midnight-Finish?
Ist ein echter Hingucker,
auch wenn der ein oder andere Fingerabdruck zu sehen ist.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ninja 12-in-1 Combi Cooker</title>
      <link>https://cbrueggenolte.de/ninja-12-in-1-combi-cooker/</link>
      <pubDate>Wed, 26 Mar 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ninja-12-in-1-combi-cooker/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/ninja-12-in-1-combi-cooker/airfryer-cover_hu_e0a9daa50b1acfd9.webp&#34;&gt;&lt;img class=&#34;content-image&#34; src=&#34;/ninja-12-in-1-combi-cooker/airfryer-cover_hu_8656bb24d37ece02.webp&#34; alt=&#34;Ninja 12-in-1 Combi Cooker&#34; title=&#34;Ninja 12-in-1 Combi Cooker&#34; loading=&#34;lazy&#34; width=&#34;1440&#34; height=&#34;703&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Gestern war ich bei einem Freund, um über sein Homelab und sein Netzwerk zu sprechen.&#xA;Dabei habe ich gesehen, dass er eine Ninja Heißluftfritteuse hat.&#xA;Diese Geräte sind ziemlich gut und man kann echt viel damit zubereiten.&lt;/p&gt;&#xA;&lt;p&gt;Nach dem Anschauen einiger Videos über die verschiedenen Ninja-Produkte waren wir ziemlich beeindruckt vom &lt;a href=&#34;https://www.ninjakitchen.de/produkte/ninja-combi-12-in-1-multikocher-ofen-heissluftfritteuse-sfp700eu-zidSFP700EU&#34;&gt;Ninja 12-in-1 Combi Cooker&lt;/a&gt;.&#xA;Nach weiterer intensiver Recherche zum Thema &amp;ldquo;Was kann man mit einem Ninja Combi Cooker alles machen?&amp;rdquo; und dem Anschauen zahlreicher Videos haben wir uns entschieden, es zu wagen und einen zu bestellen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="/ninja-12-in-1-combi-cooker/airfryer-cover_hu_e0a9daa50b1acfd9.webp"><img class="content-image" src="/ninja-12-in-1-combi-cooker/airfryer-cover_hu_8656bb24d37ece02.webp" alt="Ninja 12-in-1 Combi Cooker" title="Ninja 12-in-1 Combi Cooker" loading="lazy" width="1440" height="703" /></a></p>
<p>Gestern war ich bei einem Freund, um über sein Homelab und sein Netzwerk zu sprechen.
Dabei habe ich gesehen, dass er eine Ninja Heißluftfritteuse hat.
Diese Geräte sind ziemlich gut und man kann echt viel damit zubereiten.</p>
<p>Nach dem Anschauen einiger Videos über die verschiedenen Ninja-Produkte waren wir ziemlich beeindruckt vom <a href="https://www.ninjakitchen.de/produkte/ninja-combi-12-in-1-multikocher-ofen-heissluftfritteuse-sfp700eu-zidSFP700EU">Ninja 12-in-1 Combi Cooker</a>.
Nach weiterer intensiver Recherche zum Thema &ldquo;Was kann man mit einem Ninja Combi Cooker alles machen?&rdquo; und dem Anschauen zahlreicher Videos haben wir uns entschieden, es zu wagen und einen zu bestellen.</p>
<p>Er wurde heute schon geliefert.
Ich finde das immer noch beeindruckend, wie schnell die Lieferungen hier in den Niederlanden sein können.
Der Ninja Combi-Cooker ist etwas größer als unsere <a href="https://cosori.com/products/dual-blaze-air-fryer">Cosori Dual Blaze</a>, die schon ziemlich alt ist, aber auch viel genutzt wurde.w</p>
<p>Der Ninja hat deutlich mehr Funktionen, aber der Hauptgrund für unseren Kauf ist die Möglichkeit, mit Dampf zu kochen und zu backen.
Das wollten wir schon immer ausprobieren, hatten aber nie die Gelegenheit dazu.</p>
<p>Nach dem Auspacken haben wir ihn sofort getestet, um seine Fähigkeiten unter Beweis zu stellen.
Meine Frau hat dann gleich das gesamte Abendessen damit zubereitet.
Wir hatten Kartoffeln mit grünen Bohnen und einer &ldquo;Proteinquelle&rdquo;, einem Stück Schweinefleisch.
Heute reden alle nur noch von &ldquo;Proteinquellen&rdquo; – verrückt!</p>
<p>Die Kartoffeln und Bohnen wurden schön zart, und das Fleisch war saftig und lecker.
Wir haben auch unsere <a href="https://store-de.meater.com/products/meater-plus">Meater</a> Temperatursonde verwendet, um die Temperatur der &ldquo;Proteinquelle&rdquo; auf den perfekten Garpunkt zu bringen.</p>
<p>Nach dem Abendessen war ich für das Aufräumen zuständig, und ich war überrascht, wie einfach es ist, den Combi Cooker zu reinigen.</p>
<p>Im Anschluss habe ich dann gleich auch noch das Brotbacken ausprobiert.
Dazu habe ich mit der Küchenmaschine den Brotteig kneten lassen, um ihn dann mit Hilfe des Combi Cooker aufgehen zu lassen.
Nach dem Falten und einer zweiten Ruhezeit wurde das Brot gebacken.
Es war schön fluffig und die Kruste war super knusprig.</p>
<p>Alleine wegen dem einfachen Brotbacken hat sich der Kauf schon gelohnt.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Sources Behind my Political Reflections</title>
      <link>https://cbrueggenolte.de/sources-behind-my-political-reflections/</link>
      <pubDate>Sun, 09 Mar 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/sources-behind-my-political-reflections/</guid>
      <description>&lt;p&gt;Unten findest du Referenzen, die die Überlegungen und Aussagen,&#xA;die ich auf meiner Politik-Seite geteilt habe, unterstützen und weiteren Kontext liefern.&lt;/p&gt;&#xA;&lt;p&gt;Wenn du zusätzliche Quellen hast, die ich noch nicht aufgelistet habe,&#xA;&lt;a href=&#34;/contact&#34;&gt;lass es mich bitte wissen&lt;/a&gt; und ich werde sie hier hinzufügen.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://apnews.com/article/trump-usaid-foreign-aid-cuts-6292f48f8d4025bed0bf5c3e9d623c16&#34;&gt;AP News – Trump Administration&amp;rsquo;s Cuts to USAID&lt;/a&gt;:&#xA;Die Trump-Regierung hat erhebliche Kürzungen bei der US-Behörde für internationale Entwicklung (USAID) angekündigt,&#xA;Sie plant, 5.800 von 6.200 mehrjährigen USAID-Verträgen zu streichen,&#xA;was einer Kürzung von insgesamt 54 Milliarden Dollar entspricht.&#xA;Dieser Schritt hat Bedenken hinsichtlich der Fähigkeit der USA geweckt, auf globale Krisen zu reagieren.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Unten findest du Referenzen, die die Überlegungen und Aussagen,
die ich auf meiner Politik-Seite geteilt habe, unterstützen und weiteren Kontext liefern.</p>
<p>Wenn du zusätzliche Quellen hast, die ich noch nicht aufgelistet habe,
<a href="/contact">lass es mich bitte wissen</a> und ich werde sie hier hinzufügen.</p>
<ul>
<li>
<p><a href="https://apnews.com/article/trump-usaid-foreign-aid-cuts-6292f48f8d4025bed0bf5c3e9d623c16">AP News – Trump Administration&rsquo;s Cuts to USAID</a>:
Die Trump-Regierung hat erhebliche Kürzungen bei der US-Behörde für internationale Entwicklung (USAID) angekündigt,
Sie plant, 5.800 von 6.200 mehrjährigen USAID-Verträgen zu streichen,
was einer Kürzung von insgesamt 54 Milliarden Dollar entspricht.
Dieser Schritt hat Bedenken hinsichtlich der Fähigkeit der USA geweckt, auf globale Krisen zu reagieren.</p>
</li>
<li>
<p><a href="https://www.reuters.com/world/us/state-department-notified-congress-intent-reorganize-usaid-rubio-says-2025-03-28/">Reuters – USAID Reorganization Under Trump</a>:
Die Entscheidung der Regierung, USAID zu demontieren, führte zur Entlassung von Tausenden von Mitarbeitern,
darunter auch Beamte des Auswärtigen Dienstes,
mit Plänen, ihre Funktionen in das Außenministerium einzugliedern.</p>
</li>
<li>
<p><a href="https://www.theguardian.com/us-news/2025/jan/27/trump-first-100-days-guide">The Guardian – Trump&rsquo;s First 100 Days and International Relations</a>:
Die Politik von Präsident Trump,
einschließlich der Einführung von Zöllen auf mehrere Länder und des Entzugs von Sicherheitsfreigaben für politische Gegner,
hat die Beziehungen zu globalen Verbündeten belastet.
Spannungen bezüglich der Ukraine und Russland haben diese Probleme weiter verschärft,
was zu einer Zeit erheblicher Umwälzungen und Umstrukturierungen unter Trumps Führung geführt hat.</p>
</li>
</ul>
<p><strong>Thoughts on the 2025 German Elections</strong></p>
<ul>
<li>
<p><a href="https://www.aljazeera.com/news/2025/2/24/charting-the-rise-of-germanys-far-right-afd-party">Al Jazeera – Charting the Rise of Germany&rsquo;s Far-Right AfD Party</a>:
Bei der deutschen Bundestagswahl im Februar 2025
verdoppelte die rechtsextreme Alternative für Deutschland (AfD) ihren Stimmenanteil auf 20,8%
und wurde damit die zweitstärkste Partei im Bundestag.
Dieser signifikante Anstieg hat die politische Landschaft Deutschlands verändert und Besorgnis unter demokratischen Institutionen ausgelöst.</p>
</li>
<li>
<p><a href="https://www.reuters.com/world/europe/merzs-spending-splurge-risks-blowback-among-german-conservatives-2025-03-24/">Reuters – Merz&rsquo;s Spending Plans</a>:
Friedrich Merz,
Deutschlands Kanzler in Wartestellung,
erntete gemischte Reaktionen nach der Ankündigung seiner Pläne, die Begrenzungen für Staatsausgaben zu lockern.
Diese Hinwendung zu höheren Schulden hat Unmut unter konservativen Mitgliedern seiner Partei und Wählern ausgelöst,
was möglicherweise der AfD zugutekommen könnte.</p>
</li>
<li>
<p><a href="https://theloop.ecpr.eu/the-2025-german-election-far-right-surge-and-coalition-collapse/">The Loop ECPR – 2025 German Election Analysis</a>:
Die Freie Demokratische Partei (FDP),
unter der Führung von Christian Lindner,
erlebte bei der Wahl 2025 einen erheblichen Rückgang,
wobei ihr Stimmenanteil auf 4,3% sank,
was zum Verlust aller ihrer Bundestagssitze führte.
Dieses Ergebnis trug zum Zusammenbruch der vorherigen Koalitionsregierung bei.</p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/2025_German_federal_election">Wikipedia – 2025 German Federal Election</a>:
Der Aufstieg der AfD hat die Aufmerksamkeit auf ihre Mitglieder gelenkt, die für extreme nationalistische Rhetorik und kontroverse Verbindungen bekannt sind.
Die erhöhte Repräsentation der Partei gewährt ihr bedeutende parlamentarische Privilegien,
was Bedenken hinsichtlich ihres Einflusses auf die Aufsicht über Sicherheit und Nachrichtendienste aufwirft.</p>
</li>
</ul>
<p>Diese Referenzen untermauern meine Beobachtungen und Bedenken, die ich auf meiner <a href="/politics/">Politikseite</a> geäußert habe, mit Fakten.</p>
<p>Cover Image: &ldquo;<a href="https://ccnull.de/foto/demokratie-graffiti-auf-einer-farbenfrohen-wand/1100087">Demokratie-Graffiti auf einer farbenfrohen Wand</a>&rdquo; by <a href="https://ccnull.de/fotograf/marco-verch-1">Marco Verch 👨‍🍳</a> via <a href="https://ccnull.de">ccnull.de</a>, <a href="https://creativecommons.org/licenses/by/2.0/de/">CC-BY 2.0</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Sources Behind my Political Reflections (English)</title>
      <link>https://cbrueggenolte.de/sources-behind-my-political-reflections-english/</link>
      <pubDate>Sun, 09 Mar 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/sources-behind-my-political-reflections-english/</guid>
      <description>&lt;p&gt;This companion post provides references&#xA;and sources supporting my reflections&#xA;and claims shared on my Politics page,&#xA;offering deeper insights and factual context.&lt;/p&gt;&#xA;&lt;p&gt;Below you&amp;rsquo;ll find references&#xA;that support and provide further context&#xA;to the reflections and claims I shared on my Politics page.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;/sources-behind-my-political-reflections-english/politics-cover_hu_d6c383afacd2bbc0.webp&#34;&gt;&lt;img class=&#34;content-image&#34; src=&#34;/sources-behind-my-political-reflections-english/politics-cover_hu_973a48fa1fbe715f.webp&#34; alt=&#34;Politics Cover&#34; loading=&#34;lazy&#34; width=&#34;1440&#34; height=&#34;806&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you have additional sources I havn&amp;rsquo;t yet listed,&#xA;&lt;a href=&#34;/contact&#34;&gt;please let me know&lt;/a&gt;&#xA;and I will add them here.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://apnews.com/article/trump-usaid-foreign-aid-cuts-6292f48f8d4025bed0bf5c3e9d623c16&#34;&gt;AP News – Trump Administration&amp;rsquo;s Cuts to USAID&lt;/a&gt;:&#xA;The Trump administration announced significant cuts to the U.S. Agency for International Development (USAID),&#xA;planning to eliminate 5,800 of 6,200 multiyear USAID contracts,&#xA;totaling a reduction of $54 billion.&#xA;This move has raised concerns about the U.S.&amp;rsquo;s ability to respond to global crises.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This companion post provides references
and sources supporting my reflections
and claims shared on my Politics page,
offering deeper insights and factual context.</p>
<p>Below you&rsquo;ll find references
that support and provide further context
to the reflections and claims I shared on my Politics page.</p>
<p><a href="/sources-behind-my-political-reflections-english/politics-cover_hu_d6c383afacd2bbc0.webp"><img class="content-image" src="/sources-behind-my-political-reflections-english/politics-cover_hu_973a48fa1fbe715f.webp" alt="Politics Cover" loading="lazy" width="1440" height="806" /></a></p>
<p>If you have additional sources I havn&rsquo;t yet listed,
<a href="/contact">please let me know</a>
and I will add them here.</p>
<ul>
<li>
<p><a href="https://apnews.com/article/trump-usaid-foreign-aid-cuts-6292f48f8d4025bed0bf5c3e9d623c16">AP News – Trump Administration&rsquo;s Cuts to USAID</a>:
The Trump administration announced significant cuts to the U.S. Agency for International Development (USAID),
planning to eliminate 5,800 of 6,200 multiyear USAID contracts,
totaling a reduction of $54 billion.
This move has raised concerns about the U.S.&rsquo;s ability to respond to global crises.</p>
</li>
<li>
<p><a href="https://www.reuters.com/world/us/state-department-notified-congress-intent-reorganize-usaid-rubio-says-2025-03-28/">Reuters – USAID Reorganization Under Trump</a>:
The administration&rsquo;s decision to dismantle USAID resulted in the termination of thousands of employees,
including Foreign Service officers,
with plans to fold its functions into the State Department.</p>
</li>
<li>
<p><a href="https://www.theguardian.com/us-news/2025/jan/27/trump-first-100-days-guide">The Guardian – Trump&rsquo;s First 100 Days and International Relations</a>:
President Trump&rsquo;s policies,
including imposing tariffs on multiple countries and revoking security clearances from political opponents,
have strained relations with global allies.
Tensions regarding Ukraine and Russia have further exacerbated these issues,
leading to a period of significant upheaval and restructuring under Trump&rsquo;s leadership.</p>
</li>
</ul>
<p><strong>Thoughts on the 2025 German Elections</strong></p>
<ul>
<li>
<p><a href="https://www.aljazeera.com/news/2025/2/24/charting-the-rise-of-germanys-far-right-afd-party">Al Jazeera – Charting the Rise of Germany&rsquo;s Far-Right AfD Party</a>:
In the February 2025 German federal election,
the far-right Alternative for Germany (AfD) doubled its vote share to 20.8%,
becoming the second-largest party in the Bundestag.
This significant increase has reshaped Germany&rsquo;s political landscape and raised concerns among democratic institutions.</p>
</li>
<li>
<p><a href="https://www.reuters.com/world/europe/merzs-spending-splurge-risks-blowback-among-german-conservatives-2025-03-24/">Reuters – Merz&rsquo;s Spending Plans</a>:
Friedrich Merz,
Germany&rsquo;s chancellor-in-waiting,
faced mixed reactions after announcing plans to ease caps on government spending.
This shift towards higher debt has caused discontent among conservative members of his party and voters,
potentially benefiting the AfD.</p>
</li>
<li>
<p><a href="https://theloop.ecpr.eu/the-2025-german-election-far-right-surge-and-coalition-collapse/">The Loop ECPR – 2025 German Election Analysis</a>:
The Free Democratic Party (FDP),
led by Christian Lindner,
experienced a significant decline in the 2025 election,
with their vote share dropping to 4.3%,
resulting in the loss of all their Bundestag seats.
This outcome contributed to the collapse of the previous coalition government.</p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/2025_German_federal_election">Wikipedia – 2025 German Federal Election</a>:
The AfD&rsquo;s rise has brought attention to its members known for extreme nationalist rhetoric and controversial ties.
The party&rsquo;s increased representation grants it significant parliamentary privileges,
raising concerns about its influence in security and intelligence oversight.</p>
</li>
</ul>
<p>These references provide factual support for my observations and concerns expressed in my <a href="/politics">Politics page</a>.</p>
<p>Cover Image: &ldquo;<a href="https://ccnull.de/foto/demokratie-graffiti-auf-einer-farbenfrohen-wand/1100087">Demokratie-Graffiti auf einer farbenfrohen Wand</a>&rdquo; by <a href="https://ccnull.de/fotograf/marco-verch-1">Marco Verch 👨‍🍳</a> via <a href="https://ccnull.de">ccnull.de</a>, <a href="https://creativecommons.org/licenses/by/2.0/de/">CC-BY 2.0</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Apple verkauft keine KI, Apple verkauft iPhones</title>
      <link>https://cbrueggenolte.de/apple-verkauft-keine-ki-apple-verkauft-iphones/</link>
      <pubDate>Thu, 16 Jan 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/apple-verkauft-keine-ki-apple-verkauft-iphones/</guid>
      <description>&lt;p&gt;Apple macht große Fortschritte im Bereich Künstliche Intelligenz, auch wenn Siri lange Zeit nicht besonders gut war. In letzter Zeit ist Siri, so scheint es mir, allerdings deutlich besser geworden. Leider konnte ich diese Funktion seit Beginn der Beta-Version nicht nutzen.&lt;/p&gt;&#xA;&lt;p&gt;Im Grunde genommen entwickelt Apple etwas, das man „LifeOS“ nennen könnte (&lt;a href=&#34;https://danielmiessler.com/blog/apple-lifeos&#34;&gt;siehe dazu den Beitrag von Daniel Miessler: Apple LifeOS&lt;/a&gt;). Ein vollständiges Betriebssystem, an dem sie seit etwa 15 Jahren arbeiten sollen. Dieses System soll KI nahtlos in alle Bereiche unseres privaten und beruflichen Alltags integrieren. Apple geht dabei behutsam, schrittweise und still vor, ganz so, wie man es von ihnen kennt.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Apple macht große Fortschritte im Bereich Künstliche Intelligenz, auch wenn Siri lange Zeit nicht besonders gut war. In letzter Zeit ist Siri, so scheint es mir, allerdings deutlich besser geworden. Leider konnte ich diese Funktion seit Beginn der Beta-Version nicht nutzen.</p>
<p>Im Grunde genommen entwickelt Apple etwas, das man „LifeOS“ nennen könnte (<a href="https://danielmiessler.com/blog/apple-lifeos">siehe dazu den Beitrag von Daniel Miessler: Apple LifeOS</a>). Ein vollständiges Betriebssystem, an dem sie seit etwa 15 Jahren arbeiten sollen. Dieses System soll KI nahtlos in alle Bereiche unseres privaten und beruflichen Alltags integrieren. Apple geht dabei behutsam, schrittweise und still vor, ganz so, wie man es von ihnen kennt.</p>
<p>Anfangs meinten einige Bekannte von mir noch, Apple sei zu langsam beim Aufbau des iPhone-Ökosystems. Doch am Ende wird Apple wohl erneut den Branchenstandard setzen und dann kopieren andere Unternehmen ihren Erfolg. Ich möchte nur an den Headphone-Jack erinnern. Bei der KI verfolgt Apple dieselbe Strategie. Schritt für Schritt verknüpfen sie die wichtigsten Lebensbereiche der Nutzer mit dem iPhone und dem größeren Apple-Ökosystem. All das wird in sicheren Bereichen (Secure Enclave) und Cloud-Systemen geschützt gespeichert. So kann die KI auf alle Informationen sicher und umfassend zugreifen.</p>
<p>Apples größte Stärke ist, dass sie verschiedene Komponenten zu einem einzigen System zusammenführen können. Weil Apple das alles als Einheit sieht und ständig verbessert, kann Apple KI besser nutzen als jedes andere Unternehmen.</p>
<p>Wenn Freunde oder andere sagen, Apple sei bei KI hinterher, dann solltest du daran denken. Und wenn in den nächsten Jahren überraschende neue KI-Funktionen von Apple auftauchen, weißt du: Das kam nicht plötzlich, es war lange geplant. Apples Weg ist eher ein stetiger und leiser Fortschritt, keine abrupten Veränderungen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>2024 Überlegungen, Erkenntnisse und unermüdliches Drucken</title>
      <link>https://cbrueggenolte.de/2024-ueberlegungen-erkenntnisse-und-unermuedliches-drucken/</link>
      <pubDate>Mon, 06 Jan 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/2024-ueberlegungen-erkenntnisse-und-unermuedliches-drucken/</guid>
      <description>&lt;p&gt;Es war Januar und wie immer wurde die Miete erhöht, um knapp 4,5 Prozent. Wir haben unseren Urlaub gebucht und zum ersten Mal mit ChatGPT bezahlt. Am Anfang fand ich es komisch, als würde ich fürs Atmen bezahlen, aber ich hab es so oft benutzt, dass es unvernünftig erschien, nicht zu bezahlen. Ich habe auch für den API-Zugang bezahlt, um das Fabric Framework von Daniel Miessler zu nutzen.&lt;/p&gt;&#xA;&lt;p&gt;Ende Januar habe ich meinen Bambu Lab P1S 3D-Drucker in der Combo-Edition mit dem AMS (Automatic Material System) bestellt. Seitdem benutze ich ihn jede Woche, manchmal sogar jeden Tag. Es ist schon traurig, dass er jetzt für die Hälfte des Preises verkauft wird, aber so ist das nun mal in der Welt der Technik.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Es war Januar und wie immer wurde die Miete erhöht, um knapp 4,5 Prozent. Wir haben unseren Urlaub gebucht und zum ersten Mal mit ChatGPT bezahlt. Am Anfang fand ich es komisch, als würde ich fürs Atmen bezahlen, aber ich hab es so oft benutzt, dass es unvernünftig erschien, nicht zu bezahlen. Ich habe auch für den API-Zugang bezahlt, um das Fabric Framework von Daniel Miessler zu nutzen.</p>
<p>Ende Januar habe ich meinen Bambu Lab P1S 3D-Drucker in der Combo-Edition mit dem AMS (Automatic Material System) bestellt. Seitdem benutze ich ihn jede Woche, manchmal sogar jeden Tag. Es ist schon traurig, dass er jetzt für die Hälfte des Preises verkauft wird, aber so ist das nun mal in der Welt der Technik.</p>
<p>Im Februar habe ich mich dann voll und ganz in den 3D-Druck verliebt. Ich habe Organizer für meine Filamentspulen entworfen und gedruckt, und die sind auf Makerworld ziemlich beliebt geworden. Es macht immer Spaß, wenn man was erschafft hat und andere das auch zu schätzen wissen.</p>
<p>Im März habe ich angefangen, mich mit Notizsystemen zu beschäftigen. Ich habe schon über die Feiertage viel dazu gelesen und nach besseren Möglichkeiten gesucht, meine Gedanken zu ordnen. Am Ende des Monats hatte ich alle meine Day-One-Tagebucheinträge auf eine WordPress-Website verschoben, die ich auf meinem Laptop gehostet habe. Jetzt mache ich mir Notizen in Apple Notes auf meinen Geräten und übertrage sie später auf WordPress. Der Container ist auf meinem NAS gehostet. Am Ende ist Privatsphäre das Wichtigste.</p>
<h2 id="frühlingserwachen-und-kaffee-perfektion">Frühlingserwachen und Kaffee-Perfektion</h2>
<p>Der April war unser Urlaubsmonat. Du findest ein paar der Bilder in der Galerie des Blogs. Am Ende des Urlaubs gab&rsquo;s sogar noch ein kleines Geschenk von der Crew. Das hat die Reise noch schöner gemacht.</p>
<p>Im Mai haben wir eine DF83 G-iota Pro83 V2 Mühle gekauft, weil wir den fantastischen Kaffee, den wir während unseres Urlaubs getrunken haben, nach Hause bringen wollten. Teuer? Ja, war es das wert? Absolut! Diese Mühle hat echt unser Kaffeeerlebnis auf den Kopf gestellt. Sie liefert immer ein super gleichmäßiges und genaues Mahlresultat.</p>
<h2 id="sommer-des-lernens-und-druckens">Sommer des Lernens und Druckens</h2>
<p>Der Juni war ein weiterer arbeitsreicher Monat. Der P1S hat weiter Geschenke für Familie und Freunde gedruckt. Wir haben festgestellt, dass Polymaker-Filament echt super ist. Das ist bisher das beste Filament, das wir getestet haben.</p>
<p>Außerdem waren wir auf einer christlichen Einkehrwoche in der Eifel. Die Zeit wird auch &ldquo;Rüstzeit&rdquo; genannt. Es gab viele tiefgreifende Gespräche über Ethik, Politik und persönliche Entwicklung. Wir haben über alles Mögliche gesprochen, zum Beispiel über den Krieg in Gaza, den Krieg in der Ukraine und den Umgang mit Stress und Nachrichten in schwierigen Zeiten. Es war echt eine großartige Erfahrung.</p>
<p>Im Juni habe ich auch angefangen, mein &ldquo;Home-Lab&rdquo; einzurichten. Eigentlich wollte ich ein Mini-HM90-Forum nutzen, aber das hat leider nicht geklappt. Das Gerät, das ich bestellt hatte, war leider defekt und ließ sich nicht einschalten. Nachdem ich es zurückgegeben hatte, habe ich mich für ein weniger leistungsstarkes, aber funktionierendes Gerät mit einem Intel i5 der 12. Generation entschieden. Also, der ist jetzt nicht so leistungsstark wie der Ryzon im HM90, aber für meine Zwecke reicht er auf jeden Fall.</p>
<p>Ruhige Sommertage
Der Juli war ein ruhiger Monat. Das Wetter war kühler als sonst in den Niederlanden. Damit wir die Pfunde, die wir im Urlaub verloren hatten, nicht wieder zunehmen, haben wir uns vor dem Herbst ein Walking Pad gekauft. Wir haben es viel benutzt, bis wir im Dezember krank wurden. Bis dahin hat es sich echt gelohnt: Wir sind nicht nur fitter und ein bisschen leichter geworden, wir fühlen uns auch gleich viel gesünder und motivierter.</p>
<p>Im August haben wir tatsächlich mal kein Geld ausgegeben. Stattdessen habe ich mich erneut mit dem Fabric Framework beschäftigt, ein paar KI-Kurse besucht (meist nur enttäuschende Buzzwords) und alte Freunde wiedergetroffen. Ich habe gemerkt, dass wir uns mehr Mühe geben müssen, mit den Leuten in Kontakt zu bleiben.</p>
<h2 id="herbstübergänge-und-familienumzüge">Herbstübergänge und Familienumzüge</h2>
<p>Apple hat im September neue Versionen seiner Produkte rausgehauen. Wir haben unsere alte Apple Watch 4 durch die neue Apple Watch 10 ersetzt. Der Oktober war abgesehen von dem großen Umzug eines Familienmitglieds, bei dem wir geholfen haben, weitgehend ruhig. Es ist schon erstaunlich, wie eine Person so viel Zeug anhäufen kann. Dabei darf ich gar nicht an unseren zukünftigen Umzug denken.</p>
<p>Im November war dann der Black Friday und ich habe dem Netzwerk endlich ein paar Upgrades verpasst. Ich habe mir ein Unifi Gateway Ultra, U6+ Access Points und Switch Lite 8 PoE-Einheiten gekauft. Ich habe eine ganze Weile gebraucht, um alles einzurichten, aber jetzt haben wir ein sicheres System. Alle Geräte können nur das sehen, was sie sehen sollten.</p>
<p>Außerdem haben wir unseren Zweitwagen, den Polo, an die Werkstatt verkauft. Die Auszahlung des Verkaufserlöses hat sich wegen ein paar bürokratischer Hürden ein bisschen verzögert, aber das wird sich hoffentlich in Kürze erledigen.</p>
<h2 id="das-jahr-mit-einem-lächeln-beenden">Das Jahr mit einem Lächeln beenden</h2>
<p>Der Dezember endete mit einer unterhaltsamen Live-Veranstaltung von Sorted Food mit dem Titel &ldquo;Traitor at Culinary Castle&rdquo;. Wir hatten ein echt unterhaltsames Wochenende. Beim Jahresabschluss-Essen mit Freunden und Kollegen haben wir uns wohl eine schwere Erkältung eingefangen. Das hat uns mehr als eine Woche außer Gefecht gesetzt. Zum Glück haben wir uns rechtzeitig vor den Weihnachtsfeiertagen erholt. So konnten wir die Besuche bei Familie und Freunden in Deutschland wie geplant genießen.</p>
<p>2024 war ein Jahr zwischen digitaler Weiterentwicklung, persönlicher Struktur und ruhigen Alltagsmomenten. Die Miete ist gestiegen und der Urlaub wurde früh gebucht. Ich habe mich sehr über die neuen Technologien wie den Bambu Lab 3D-Drucker und das Unifi-Netzwerk-Upgrade gefreut. Auch die Experimente mit Notizsystemen und die Einrichtung meines Home-Lab haben Spaß gemacht. Es war ein Jahr der kleinen, aber spürbaren Verbesserungen -technisch, persönlich und spirituell.
Ich hoffe, dass wir 2025 nicht mehr so sehr auf Dinge, sondern mehr auf Erfahrungen schauen.</p>
<p>Vielen Dank fürs Lesen. Ich wünsche mir für das nächste Jahr, dass wir wieder viel lernen, schaffen und uns verbinden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Die Transparenzsuchmaschine</title>
      <link>https://cbrueggenolte.de/die-transparenzsuchmaschine/</link>
      <pubDate>Thu, 27 Apr 2023 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/die-transparenzsuchmaschine/</guid>
      <description>&lt;p&gt;In letzter Zeit dreht sich alles um KI und ihre Anwendungen wie ChatGPT und CoPilot. Stellen Sie sich vor, Sie könnten&#xA;den Namen einer beliebigen Person des öffentlichen Lebens eingeben und hätten sofort Zugriff auf alles, was diese Person&#xA;jemals zu einem bestimmten Thema gesagt hat. Was wäre, wenn wir eine Suchmaschine hätten, die uns das ermöglicht?&lt;/p&gt;&#xA;&lt;p&gt;Eine solche &lt;strong&gt;Transparenzsuchmaschine&lt;/strong&gt; kam uns beim Mittagessen in den Sinn.&lt;/p&gt;&#xA;&lt;p&gt;Die Möglichkeit, einen kompletten Datensatz über eine Person abzufragen und Informationen zu jedem beliebigen Thema zu&#xA;erhalten, wäre wohl die wahre Stärke dieser Technologie. Man könnte die Entwicklung der politischen Ansichten einer&#xA;Person während ihrer gesamten Online-Karriere verfolgen und die Genauigkeit ihrer Vorhersagen im Laufe ihrer Karriere&#xA;bewerten.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In letzter Zeit dreht sich alles um KI und ihre Anwendungen wie ChatGPT und CoPilot. Stellen Sie sich vor, Sie könnten
den Namen einer beliebigen Person des öffentlichen Lebens eingeben und hätten sofort Zugriff auf alles, was diese Person
jemals zu einem bestimmten Thema gesagt hat. Was wäre, wenn wir eine Suchmaschine hätten, die uns das ermöglicht?</p>
<p>Eine solche <strong>Transparenzsuchmaschine</strong> kam uns beim Mittagessen in den Sinn.</p>
<p>Die Möglichkeit, einen kompletten Datensatz über eine Person abzufragen und Informationen zu jedem beliebigen Thema zu
erhalten, wäre wohl die wahre Stärke dieser Technologie. Man könnte die Entwicklung der politischen Ansichten einer
Person während ihrer gesamten Online-Karriere verfolgen und die Genauigkeit ihrer Vorhersagen im Laufe ihrer Karriere
bewerten.</p>
<p>Die Technologie wird jedoch auch für Angriffe auf Personen, für die Untersuchung ihrer Beiträge und für die Erstellung
bemerkenswerter Darstellungen ihrer Entwicklung als Person im Laufe der Zeit genutzt werden. Vor allem aber wird es -
zumindest anfangs - dazu dienen, Menschen bloßzustellen.</p>
<blockquote>
<p>“The growth of the Internet will slow drastically, as the flaw in ‘Metcalfe’s law’—which states that the number of
potential connections in a network is proportional to the square of the number of participants—becomes apparent: most
people have nothing to say to each other! By 2005 or so, it will become clear that the Internet’s impact on the economy
has been no greater than the fax machine’s.”</p>
<p>// Paul Krugman, 1998</p>
</blockquote>
<p>Wie falsch diese Einschätzung war und wie rasant sich das Internet entwickelt hat. Man kann sagen, dass das Internet
revolutionäre Auswirkungen auf Wirtschaft, Gesellschaft und Kultur hatte. Die meisten Menschen haben heute Zugang zu
mehr Informationen als je zuvor und zu Möglichkeiten der Zusammenarbeit, die vor wenigen Jahren noch undenkbar waren.</p>
<p>Hätten wir damals schon eine solche Transparenz-Suchmaschine gehabt, hätten wir die Wirksamkeit solcher Aussagen in
Bezug auf Vertrauen und Genauigkeit bewerten können.</p>
<p>Aber die eigentliche Bedeutung dieser Technologie liegt nicht in einer bestimmten Anwendung, sondern in der Schaffung
von Transparenz. KI ermöglicht es, alle Informationen zu einem Thema abzurufen und dann gezielte Fragen zu stellen.
Dies führt zu bisher nicht möglichen Einblicken und Erkenntnissen.</p>
<p>Daraus ergibt sich natürlich auch die Sorge, dass KI als Instrument für Mobbing und öffentliche Demütigung eingesetzt
werden könnte. Es ist wichtig, mit den Informationen, die durch KI gewonnen werden, verantwortungsvoll umzugehen. Es geht
nicht darum, Antworten blind zu akzeptieren und Entscheidungen nur auf der Grundlage der gelieferten Daten zu treffen.
Leider geschieht dies teilweise bereits. Es ist sehr wahrscheinlich, dass viel Dreck ausgegraben wird, auch wenn sich
die Täter bereits entschuldigt oder längst von ihren Taten distanziert haben.</p>
<p>Wir müssen uns der potenziellen Voreingenommenheit und der Grenzen der Technologie bewusst sein. Wir müssen sie als
Werkzeug zur Verbesserung unseres Verständnisses nutzen und nicht als Ersatz für kritisches Denken und Analyse.</p>
<p>Insgesamt birgt die Technologie der Transparenz-Suchmaschine ein enormes Potenzial für den Zugang zu Informationen und
das Verständnis von Persönlichkeiten des öffentlichen Lebens. Es ist jedoch wichtig, dass wir diese Technologie mit
Bedacht einsetzen und uns ihrer Chancen und Risiken bewusst sind. Wir sollten uns bemühen, ihre Vorteile zu nutzen und
gleichzeitig dafür zu sorgen, dass sie im Einklang mit den Werten der Privatsphäre, der Fairness und den ethischen
Standards eingesetzt wird. Nur so können wir sicherstellen, dass die KI-Technologie unsere Gesellschaft und Kultur auch
in Zukunft weiter verbessert.</p>
]]></content:encoded>
    </item>
    <item>
      <title>2DS XL, eShop-Abschied und meine Must-haves</title>
      <link>https://cbrueggenolte.de/2ds-xl-eshop-abschied-und-meine-must-haves/</link>
      <pubDate>Fri, 24 Mar 2023 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/2ds-xl-eshop-abschied-und-meine-must-haves/</guid>
      <description>&lt;p&gt;Seit ein paar Tagen habe ich den 2DS XL und bin sehr zufrieden mit dem Gerät.&#xA;Mit Blick auf die Schließung des eShop am 27. März habe ich mich noch einmal&#xA;umgeschaut, was man sich vorher unbedingt sichern sollte.&lt;/p&gt;&#xA;&lt;p&gt;Auch wenn man keine Homebrew-Software installieren will, lohnt sich ein letzter&#xA;Besuch im eShop. Denn selbst nach der Schließung kann man gekaufte Titel, DLCs&#xA;und andere Inhalte weiterhin herunterladen. Außerdem bleibt Online‑Gameplay&#xA;bestehen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Seit ein paar Tagen habe ich den 2DS XL und bin sehr zufrieden mit dem Gerät.
Mit Blick auf die Schließung des eShop am 27. März habe ich mich noch einmal
umgeschaut, was man sich vorher unbedingt sichern sollte.</p>
<p>Auch wenn man keine Homebrew-Software installieren will, lohnt sich ein letzter
Besuch im eShop. Denn selbst nach der Schließung kann man gekaufte Titel, DLCs
und andere Inhalte weiterhin herunterladen. Außerdem bleibt Online‑Gameplay
bestehen.</p>
<p>Ich habe mich durch ein paar Videos und Webseiten geklickt und hier meine
kleine Liste an Games und Programmen zusammengestellt, die ich mir noch
heruntergeladen habe.</p>
<p>Bevor es losgeht: Schau bei Nintendo vorbei, um zu wissen, wie man sein
Nintendo‑Konto mit Guthaben auflädt – sonst lassen sich keine Käufe tätigen.</p>
<p><a href="https://www.nintendo.de/Hilfe/Nintendo-3DS-und-Nintendo-2DS/Benutzung/Nintendo-eShop/Per-Kreditkarte-Guthaben-fur-den-Nintendo-eShop-hinzufugen-1626660.html">So lädst du Guthaben auf</a></p>
<h2 id="diese-titel-lohnen-sich-aus-meiner-sicht">Diese Titel lohnen sich (aus meiner Sicht)</h2>
<ul>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Pokemon-Bank-845518.html">Pokémon Bank</a>
und PokéMover – ab dem 27. wird der Service kostenfrei. Damit kannst du
Pokémon zwischen X, Y, Omega Rubin, Alpha Saphir, Sonne, Mond, Ultrasonne und
Ultramond verschieben – bis hoch auf die Switch. Dort brauchst du
<a href="https://www.nintendo.de/Hilfe/Nintendo-Switch/Was-ist-Pokemon-HOME-1728295.html">Pokémon HOME</a>
und ein aktives Nintendo‑Online‑Abo.</li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Pokemon-Picross-1074224.html">Pokémon Picross</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Fallblox-664607.html">Fallblox</a>,
<a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Pullblox--298087.html">Pullblox</a>,
<a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Fullblox-1007235.html">Fullblox</a>
– Puzzle‑Reihe</li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Nintendo-Pocket-Football-Club-852614.html">Nintendo Pocket Football Club</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Mario-vs-Donkey-Kong-Tipping-Stars-954726.html">Mario vs. Donkey Kong: Tipping Stars</a>
– Mario und Co. wie bei Lemmings durch Level schicken</li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/The-Legend-of-Zelda-Tri-Force-Heroes-1026135.html">The Legend of Zelda: Tri Force Heroes</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/The-Legend-of-Zelda-A-Link-Between-Worlds-765381.html">The Legend of Zelda: A Link Between Worlds</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/The-Legend-of-Zelda-Majora-s-Mask-3D-941070.html">The Legend of Zelda: Majora’s Mask 3D</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/Hyrule-Warriors-Legends-1025970.html">Hyrule Warriors: Legends</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/Mario-Kart-7-274402.html">Mario Kart 7</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/New-Super-Mario-Bros-2-527668.html">New Super Mario Bros. 2</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/SUPER-MARIO-3D-LAND-274908.html">Super Mario 3D Land</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-Portal/Ace-Attorney-Portal/Ace-Attorney-Portal-851601.html">Ace Attorney Portal</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-Portal/Layton-Reihe/Layton-Portal-627605.html">Layton‑Portal</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Spiele/RPG-Maker-Fes-1218214.html">RPG Maker Fes</a> und <a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/RPG-Maker-Player-1237726.html">RPG Maker Player</a></li>
<li><a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Fairune-943114.html">Fairune</a> und <a href="https://www.nintendo.de/Spiele/Nintendo-3DS-Download-Software/Fairune-2-1149771.html">Fairune 2</a></li>
</ul>
<p>Zusätzlich habe ich im Reddit‑Thread eine
<a href="https://docs.google.com/spreadsheets/d/10L3CIuZdlNZd_iN3LiRkufTWqySD58WYVc1yKTYS3LY/edit#gid=0">Liste aller exklusiven 3DS‑Shop‑Titel</a>
gefunden – die ist wirklich lang. Auf Metacritic gibt es außerdem eine
<a href="https://www.metacritic.com/browse/games/score/metascore/all/3ds/filtered">Liste der 100 bestbewerteten 3DS‑Spiele</a>.</p>
<h2 id="alternative-cfw--homebrew">Alternative: CFW &amp; Homebrew</h2>
<p>Alternativ kann man eine CFW installieren. Alle 2DS‑ und 3DS‑Konsolen lassen sich
mittlerweile „befreien“ bzw. durch Homebrew deutlich aufwerten. Wie das geht und
was man dafür braucht, findest du in dieser Anleitung und im Video von Anton
Retro – beides hat bei mir ohne Probleme funktioniert:</p>
<ul>
<li><a href="https://3ds.hacks.guide/">3ds.hacks.guide</a></li>
<li><a href="https://redirect.invidious.io/watch?v=ttHCJ1oFpDc">Anton Retro – Anleitungsvideo</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Impfpflicht, Verantwortung und gesellschaftlicher Zusammenhalt</title>
      <link>https://cbrueggenolte.de/impfpflicht-verantwortung-und-gesellschaftlicher-zusammenhalt/</link>
      <pubDate>Fri, 10 Dec 2021 12:59:51 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/impfpflicht-verantwortung-und-gesellschaftlicher-zusammenhalt/</guid>
      <description>&lt;p&gt;Da ist sie, die &lt;a href=&#34;https://www.dw.com/de/bundestag-beschlie%C3%9Ft-begrenzte-impfpflicht/a-60077220&#34;&gt;Impfpflicht für medizinisches Portal in Krankenhäusern und Pflegeheimen&lt;/a&gt;. Ich finde, dass es die richtige Entscheidung ist. Allerdings sollte diese Impfpflicht auf alle ausgeweitet werden, da wir es nur so schaffen werden, dieses verdammte Virus zu bekämpfen. Eine Ausweitung auf alle ist aber auch aus anderer Sicht sinnvoll, denn niemand soll sich benachteiligt fühlen. Die Pflegekräfte und das Krankenhauspersonal ist meist eh schon durchgeimpft. Daher kann eine Ausweitung auf alle nur die logische Folge sein.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Da ist sie, die <a href="https://www.dw.com/de/bundestag-beschlie%C3%9Ft-begrenzte-impfpflicht/a-60077220">Impfpflicht für medizinisches Portal in Krankenhäusern und Pflegeheimen</a>. Ich finde, dass es die richtige Entscheidung ist. Allerdings sollte diese Impfpflicht auf alle ausgeweitet werden, da wir es nur so schaffen werden, dieses verdammte Virus zu bekämpfen. Eine Ausweitung auf alle ist aber auch aus anderer Sicht sinnvoll, denn niemand soll sich benachteiligt fühlen. Die Pflegekräfte und das Krankenhauspersonal ist meist eh schon durchgeimpft. Daher kann eine Ausweitung auf alle nur die logische Folge sein.</p>
<p>Nicht zu vergessen ist, dass eine Pandemie nicht jeden Tag eintritt und die Regeln und Maßnahmen einer ständigen Anpassung unterliegen. Ein Prozess der immer neu evaluiert und eben angepasst werden muss. Natürlich wollte niemand eine Impfpflicht, allerdings sind wir leider an einem Punkt angekommen, wo wir um diese Maßnahme nicht mehr umherkommen. Der Eigensinn der Impfgegner gefährdet die körperliche Unversehrtheit und das Leben ihrer Mitbürger.</p>
<p>Früher gab es keine Anschnallpflicht. Zur Einführung wurde Demonstriert und gemeckert und gemosert. Heute kräht kein Hahn mehr danach.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Booster-Debatte, Janssen und politische Widersprüche</title>
      <link>https://cbrueggenolte.de/booster-debatte-janssen-und-politische-widersprueche/</link>
      <pubDate>Mon, 08 Nov 2021 11:18:03 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/booster-debatte-janssen-und-politische-widersprueche/</guid>
      <description>&lt;p&gt;Im Mai wurden wir mit dem Janssen-Impfstoff von Johnson&amp;amp;Johnson geimpft. Mittlerweile, oder besser gesagt seit einigen Wochen ist es quasi amtlich, dass dieser Impfstoff keinen ausreichenden Schutz gegen die Delta-Variante bietet. Jetzt gibt es seit Wochen die Diskussion, ob wir wirklich müssen und für wen denn ein &amp;ldquo;Booster&amp;rdquo; sinnvoll sei, dabei haben das &lt;a href=&#34;https://www.rki.de/DE/Content/Infekt/EpidBull/Archiv/2021/43/Art_02.html&#34;&gt;RKI&lt;/a&gt; und auch die &lt;a href=&#34;https://www.bundesregierung.de/breg-de/themen/coronavirus/coronavirus-auffrischungsimpfung-faq-1970900&#34;&gt;Bundesregierung&lt;/a&gt; (Abschnitt: &lt;em&gt;Für wen empfiehlt die Ständige Impfkommission eine Auffrischungsimpfung?&lt;/em&gt;) mittlerweile klare Aussagen getroffen. Im Mai wurde das Impfangebot auch für die Angehörigen ausgesprochen, die im aktuellen Angebot allerdings nicht mehr enthalten sind. Unverständlich und nicht nachvollziehbar.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Im Mai wurden wir mit dem Janssen-Impfstoff von Johnson&amp;Johnson geimpft. Mittlerweile, oder besser gesagt seit einigen Wochen ist es quasi amtlich, dass dieser Impfstoff keinen ausreichenden Schutz gegen die Delta-Variante bietet. Jetzt gibt es seit Wochen die Diskussion, ob wir wirklich müssen und für wen denn ein &ldquo;Booster&rdquo; sinnvoll sei, dabei haben das <a href="https://www.rki.de/DE/Content/Infekt/EpidBull/Archiv/2021/43/Art_02.html">RKI</a> und auch die <a href="https://www.bundesregierung.de/breg-de/themen/coronavirus/coronavirus-auffrischungsimpfung-faq-1970900">Bundesregierung</a> (Abschnitt: <em>Für wen empfiehlt die Ständige Impfkommission eine Auffrischungsimpfung?</em>) mittlerweile klare Aussagen getroffen. Im Mai wurde das Impfangebot auch für die Angehörigen ausgesprochen, die im aktuellen Angebot allerdings nicht mehr enthalten sind. Unverständlich und nicht nachvollziehbar.</p>
<p>Erst will man sich impfen lassen, doch es gibt nicht genug Impfstoff. Jetzt will und soll man sich impfen lassen, Impfstoff ist genug da, aber man darf nicht oder wird nicht berücksichtigt. Die Möglichkeit nach Deutschland zu fahren besteht zwar, allerdings ist es auch dort nicht einfach, einen Termin zu bekommen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>The Billion Dollar Code und die Geschichte von TerraVision</title>
      <link>https://cbrueggenolte.de/the-billion-dollar-code-und-die-geschichte-von-terravision/</link>
      <pubDate>Mon, 01 Nov 2021 00:12:14 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/the-billion-dollar-code-und-die-geschichte-von-terravision/</guid>
      <description>&lt;p&gt;Um mich ein wenig von den Ereignissen am Wochenende abzulenken, habe ich mir heute alle vier Folgen der kurz Serie &amp;ldquo;&lt;a href=&#34;https://www.netflix.com/title/81074012&#34;&gt;The One Dollar Code&lt;/a&gt;&amp;rdquo; auf Netflix angeschaut.&lt;/p&gt;&#xA;&lt;p&gt;Vor ein paar Wochen habe ich davon im &lt;a href=&#34;https://www.netflix.com/title/81074012&#34;&gt;CRE-Podcast Folge 222 TerraVision&lt;/a&gt; gehört und die Serie stand somit auf der To-do-Liste. Wer mehr über die Hintergrundgeschichte von TerraVision und ART+COM hören möchte, der sollte sich die Serie und den Podcast anhören.&lt;/p&gt;&#xA;&lt;p&gt;Die Serie ist gut. Wirklich gut. Als ich dann noch gelesen habe, dass diese aus Deutschland kommt und produziert wurde, war ich wirklich überrascht. Gute Schauspieler und eine hervorragende Aufteilung und Erzählung der zwei Zeitstränge.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Um mich ein wenig von den Ereignissen am Wochenende abzulenken, habe ich mir heute alle vier Folgen der kurz Serie &ldquo;<a href="https://www.netflix.com/title/81074012">The One Dollar Code</a>&rdquo; auf Netflix angeschaut.</p>
<p>Vor ein paar Wochen habe ich davon im <a href="https://www.netflix.com/title/81074012">CRE-Podcast Folge 222 TerraVision</a> gehört und die Serie stand somit auf der To-do-Liste. Wer mehr über die Hintergrundgeschichte von TerraVision und ART+COM hören möchte, der sollte sich die Serie und den Podcast anhören.</p>
<p>Die Serie ist gut. Wirklich gut. Als ich dann noch gelesen habe, dass diese aus Deutschland kommt und produziert wurde, war ich wirklich überrascht. Gute Schauspieler und eine hervorragende Aufteilung und Erzählung der zwei Zeitstränge.</p>
<p>Mir hat das gut gefallen, wie die Vergangenheit und Gründung von ART+COM dargestellt wurde. Die Probleme mit der damaligen Technik, die Telekom, mit den Leuten aus dem Silicon Valley. Auf der anderen Seite, im Wechsel die Vorbereitung und Durchführung das Gerichtsverfahren gegen Google.</p>
<p>In dem oben erwähnten Podcast <a href="https://pca.st/episode/5f97449a-c5eb-4268-9b88-60bd8d6913c6">CRE222 TerraVision</a> spricht Tim Pritlove mit Pavel Mayer, einem der ehemaligen Entwickler von TerraVision. Sie unterhalten sich über die Entstehungsgeschichte, den CCC und die Technikkultur der 90er-Jahre. Viel Hintergrund Infos die es nicht in die Serie geschafft haben aus Gründen.</p>
<p>Hinweis: Serie vor der Podcast-Folge ansehen. Spoiler-Warnung!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Drachenlord, Mobbing und kollektive Verrohung</title>
      <link>https://cbrueggenolte.de/drachenlord-mobbing-und-kollektive-verrohung/</link>
      <pubDate>Thu, 28 Oct 2021 17:11:42 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/drachenlord-mobbing-und-kollektive-verrohung/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Rainer W. alias Drachenlord wird gemobbt, digital und analog. So sehr, dass er manchmal ausrastet. Nun muss er in Haft – das vorläufige Ende eines bösen Spiels.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://archive.ph/cDwBH&#34;&gt;archive.today - zeit online&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Widerliche Handlungen von Sadismus geprägt, führen wohl zur Inhaftierung. Ganz unschuldig ist Rainer W. an seiner Situation allerdings nicht, lieferte er doch immer wieder neuen Stoff für die Drachenlord-Hater-Community. Dennoch ist es ein widerliches Verhalten und eine verachtenswerte Doppelmoral, wenn sich die Mitglieder dieser „Drachengame“-Community teils aus falsch verstandener Selbstjustiz, teils aus reiner Belustigung am Leid anderer ergötzen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>Rainer W. alias Drachenlord wird gemobbt, digital und analog. So sehr, dass er manchmal ausrastet. Nun muss er in Haft – das vorläufige Ende eines bösen Spiels.</p>
<p><a href="https://archive.ph/cDwBH">archive.today - zeit online</a></p>
</blockquote>
<p>Widerliche Handlungen von Sadismus geprägt, führen wohl zur Inhaftierung. Ganz unschuldig ist Rainer W. an seiner Situation allerdings nicht, lieferte er doch immer wieder neuen Stoff für die Drachenlord-Hater-Community. Dennoch ist es ein widerliches Verhalten und eine verachtenswerte Doppelmoral, wenn sich die Mitglieder dieser „Drachengame“-Community teils aus falsch verstandener Selbstjustiz, teils aus reiner Belustigung am Leid anderer ergötzen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Pi-hole auf dem BananaPi: Werbung blockieren im Heimnetz</title>
      <link>https://cbrueggenolte.de/pi-hole-auf-dem-bananapi-werbung-blockieren-im-heimnetz/</link>
      <pubDate>Mon, 25 Oct 2021 23:27:28 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/pi-hole-auf-dem-bananapi-werbung-blockieren-im-heimnetz/</guid>
      <description>&lt;p&gt;Ich habe mich endlich mal dazu durchringen können mich mit dem &lt;a href=&#34;https://pi-hole.net/&#34;&gt;Pi-Hole Project&lt;/a&gt; zu beschäftigen. Installiert habe ich das auf meinem leicht verstaubten &lt;a href=&#34;https://wiki.banana-pi.org/Banana_Pi_BPI-M2_Berry&#34;&gt;BananaPi M2-Berry&lt;/a&gt;, den ich noch in der Schreibtischschublade rumfliegen hatte.&lt;/p&gt;&#xA;&lt;p&gt;Schnell hatte ich eine microSD-Karte für das Debian-System gefunden. Nach dem Aufspielen und dem ersten Start gleich mal das root-Passwort ändern. Anschließend habe ich mich ein wenig mit der Netzwerkkonfiguration herumgeschlagen. Nach einigen Versuchen hat es aber geklappt und WLAN sowie ETH0 (Kabel) haben eine statische IP-Adresse. Einzig das WLAN will nach einem Neustart nicht so richtig. Das muss ich immer noch per Hand einmal anstoßen, damit es funktioniert.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe mich endlich mal dazu durchringen können mich mit dem <a href="https://pi-hole.net/">Pi-Hole Project</a> zu beschäftigen. Installiert habe ich das auf meinem leicht verstaubten <a href="https://wiki.banana-pi.org/Banana_Pi_BPI-M2_Berry">BananaPi M2-Berry</a>, den ich noch in der Schreibtischschublade rumfliegen hatte.</p>
<p>Schnell hatte ich eine microSD-Karte für das Debian-System gefunden. Nach dem Aufspielen und dem ersten Start gleich mal das root-Passwort ändern. Anschließend habe ich mich ein wenig mit der Netzwerkkonfiguration herumgeschlagen. Nach einigen Versuchen hat es aber geklappt und WLAN sowie ETH0 (Kabel) haben eine statische IP-Adresse. Einzig das WLAN will nach einem Neustart nicht so richtig. Das muss ich immer noch per Hand einmal anstoßen, damit es funktioniert.</p>
<p>Da die Internetverbindung nun vorhanden war, konnte ich das System mithilfe von <code>apt update &amp;&amp; apt upgrade</code> auf den neusten Stand bringen. Anschließend habe ich noch ein paar Tools installiert um danach die <a href="https://docs.pi-hole.net/main/basic-install/">Installation von pi-hole</a> zu starten.</p>
<p>An dem Punkt, an dem man zur Eingabe der Upstream-DNS Server gefragt wird, empfiehlt es sich, einen Server aus dieser Liste hier zu nehmen: <a href="https://www.privacy-handbuch.de/handbuch_93d.htm">Privacy-Handbuch - DNS &amp; DNSSEC Server -  zensur-freie und vertrauenswürdigen DNS-Server mit No-Logging Policy</a>.</p>
<p>Zum Abschluss habe ich noch die DNS-Einstellungen in meinem Router / Wifi-Mesh-System für den DHCP-Dienst (automatische Vergabe von IP-Adressen) geändert. Hier habe ich für den DNS-Server die IP-Adresse die BananaPi eingetragen. Sobald die angeschlossenen Geräte sich das nächste Mal mit dem Netzwerk verbinden, bekommen sie die neuen Einstellungen zugeteilt. Ab dann laufen alle Anfragen über das Pi-hole-Project und werden gefiltert.</p>
<p>Der nächste Schritt wird sein, dass ich den BananaPi neben meinem NAS installiere. Hier oben auf dem Schreibtisch in der &ldquo;Wurfkabel&rdquo;-Installation kann er nämlich nicht bleiben.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Apples Kurswechsel beim MacBook Pro</title>
      <link>https://cbrueggenolte.de/apples-kurswechsel-beim-macbook-pro/</link>
      <pubDate>Wed, 20 Oct 2021 21:00:47 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/apples-kurswechsel-beim-macbook-pro/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;There’s plenty to be excited about when it comes to Apple’s new 14- and 16-inch MacBook Pros. As well as souped-up Pro and Max versions of the already capable M1 chip that Apple debuted last year, they also include numerous quality of life improvements like the return of MagSafe, a row of function keys rather than an OLED Touch Bar, and of course, a full selection of ports that won’t have users reaching for a dongle if they just want to import some photos from an SD card.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>There’s plenty to be excited about when it comes to Apple’s new 14- and 16-inch MacBook Pros. As well as souped-up Pro and Max versions of the already capable M1 chip that Apple debuted last year, they also include numerous quality of life improvements like the return of MagSafe, a row of function keys rather than an OLED Touch Bar, and of course, a full selection of ports that won’t have users reaching for a dongle if they just want to import some photos from an SD card.</p>
<p><a href="https://www.theverge.com/22734645/apple-macbook-pro-2021-ports-magsafe-touch-bar-usb-c-future">theverge.com</a></p>
</blockquote>
<p>Apple hat sich die Sorgen der Pro-User wirklich angehört und nachgebessert. Ich habe für mein MacBook Air einen Dongle mit HDMI, USB-A und SD-Card Slot. Pro-User brauchen hier wahrlich mehr Anschlüsse. Da ist es kein Wunder also, dass alle ziemlich positiv über die neuen MacBook Pro sprechen.</p>
<blockquote>
<p>Although Apple stopped short of calling out its past MacBook designs, this week’s announcement was Apple’s biggest mea culpa since the Mac Pro trash can. The event completed the company’s backtrack on basically every controversial decision it’s made with recent MacBooks, after already having made the decision to ditch its controversial butterfly keyboard in favour of more traditional scissor switches. Apple made the wrong call in 2016, but this week, it thankfully got itself back on track.</p>
<p><a href="https://www.theverge.com/22734645/apple-macbook-pro-2021-ports-magsafe-touch-bar-usb-c-future">theverge.co</a><a href="https://www.theverge.com/22734645/apple-macbook-pro-2021-ports-magsafe-touch-bar-usb-c-future">m</a></p>
</blockquote>
<p>Ich denke, dass kann man so stehen lassen. Das Release der neuen MacBook Pro Laptops ist Apples aufrichtige Entschuldigung an all die professionellen Benutzer da draußen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Kühlmittel, Werkstattbesuch und Autopflege im Alltag</title>
      <link>https://cbrueggenolte.de/kuehlmittel-werkstattbesuch-und-autopflege-im-alltag/</link>
      <pubDate>Sat, 16 Oct 2021 15:37:54 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/kuehlmittel-werkstattbesuch-und-autopflege-im-alltag/</guid>
      <description>&lt;p&gt;Auf dem Behälter steht &lt;strong&gt;G13 Silikat&lt;/strong&gt; und enthält eine pinkfarbene Flüssigkeit. Doch wo bekommt man diesen &lt;strong&gt;Koelvloeistof&lt;/strong&gt; in den Niederlanden her? In Deutschland kenne ich ATU, Bau- und Supermärkte in denen man Kühlmittel kaufen kann. Doch in Holland gestaltetet sich das schwierig, denn hier führen die Baumärkte die Produkte eher nicht und die Werkstätten hatten alle schon zu. Die Autozubehörkette &lt;a href=&#34;https://www.halfords.nl/&#34;&gt;Halfords&lt;/a&gt; gibt es zwar noch. Allerdings sind die Läden in der Umgebung alle geschlossen und existieren teils schon gar nicht mehr.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Auf dem Behälter steht <strong>G13 Silikat</strong> und enthält eine pinkfarbene Flüssigkeit. Doch wo bekommt man diesen <strong>Koelvloeistof</strong> in den Niederlanden her? In Deutschland kenne ich ATU, Bau- und Supermärkte in denen man Kühlmittel kaufen kann. Doch in Holland gestaltetet sich das schwierig, denn hier führen die Baumärkte die Produkte eher nicht und die Werkstätten hatten alle schon zu. Die Autozubehörkette <a href="https://www.halfords.nl/">Halfords</a> gibt es zwar noch. Allerdings sind die Läden in der Umgebung alle geschlossen und existieren teils schon gar nicht mehr.</p>
<p>Am Mittwochabend nach der Arbeit hat sich mein Octavia beim Einparken mit &ldquo;Bitte Kühlmittel auffüllen&rdquo; gemeldet. Etwas verwundert habe ich dann mal unter die Haube geschaut und musste feststellen, dass der Stand an Flüssigkeit sich im Kühlmittelbehälter ca. 1 Fingerbreit unter Minimum war. Warmer Motor wohlgemerkt. Ein paar Stunden später habe ich dann im kalten Zustand noch einmal kontrolliert und da war er dann knapp über Minimum. Feuchte oder nassen Stellen habe ich keine entdecken können, dennoch sollte ich ja etwas Kühlmittel nachfüllen.</p>
<p>Die diversen Tankstellen in der Umgebung haben leider alle kein G13 im Angebot. Eine Tankstelle hatte überhaupt kein Autozubehör, sondern sah mehr wie ein kleiner Supermarkt aus. Für den täglichen Bedarf gab es alles, Brötchen, Zahnbürste, Getränke, alles da, Autozubehör wie Scheibenklar oder Motoröl sucht man dort vergebens.</p>
<p>In einer der Tankstellen habe ich dann aber doch eine Flasche <strong>G12 LL</strong> erworben. Im Skoda-Forum wurde nämlich geschrieben, dass man G13 und G12 mischen kann, sofern die Farbe gleich ist. Bevor ich es jedoch eingefüllt habe, habe ich noch auf die ein oder andere Antwort gewartet, die dann auch kamen.</p>
<p>Lange Rede kurzer Sinn, es wurde nicht empfohlen, dass G12 zum G13 zu schütten, sondern einfach bei der nächsten Werkstatt vorbeifahren und dort um ein wenig <strong>Koelvloeistof</strong> zu bitten. Diesem Rat bin ich dann auch gefolgt und bin in der Werkstatt meines Vertrauens gefahren. Dort war man so nett und hat zum einen Kühlmittel aufgefüllt und auch gleich mal mit der Taschenlampe den Motorraum abgesucht. Der Fachmann sieht dann doch eher wo vielleicht etwas austritt oder nicht. Aber auch er konnte auf Anhieb nichts erkennen. Das ist schon mal ein gutes Zeichen! Als Dank gab es einen kleinen Obolus für die Kaffeekasse. Zusätzlich habe ich gleich einen Termin für den anstehenden Ölwechsel, TÜV und Reifenwechsel gemacht.</p>
<p>Nach über 400 km habe ich auch jetzt keinen Verlust festgestellt. Da es noch ein relativ neues Fahrzeug ist, gehe ich mal davon aus, dass es daran liegt, dass sich im Laufe der ersten Jahre die Schläuche noch etwas geweitet haben und sich so der niedrigere Füllstand erklären lässt. Zumindest ist das eine der Theorien im Skoda-Forum. Hoffen wir mal, dass es so ist und nicht doch irgendwo ein kleines Leck ist. Falls doch, dann hoffen wir mal, dass es bei der Inspektion Anfang November gefunden und behoben wird.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Der Große Zapfenstreich und historische Einordnung</title>
      <link>https://cbrueggenolte.de/der-grosse-zapfenstreich-und-historische-einordnung/</link>
      <pubDate>Sat, 16 Oct 2021 15:14:12 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/der-grosse-zapfenstreich-und-historische-einordnung/</guid>
      <description>&lt;p&gt;Wie ich gerade so mitbekommen habe, regen sich ziemliche viele darüber auf, dass der große Zapfenstreich ein „herumwackeln mit Fackeln vor dem Reichstag“ war.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ja-sagt-mal-gehts-noch&#34;&gt;Ja sagt mal: Geht’s noch?&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Der Große Zapfenstreich ist die höchste militärische Ehrenbezeugung, die die Bundeswehr kennt. Er ist keine Nazi-Erfindung, sondern geht auf militärische Traditionen des 16. Jahrhunderts zurück, die die Funktionsweise der Armee symbolisch darstellen – einschließlich der Trommel- und Trompetensignale von Infanterie und Kavallerie. Verteidigungsminister, ihre Staatssekretäre und hohe Offiziere werden so verabschiedet, ebenso die Bundeskanzler, zuletzt 2005 der Sozialdemokrat Gerhard Schröder. Auch Angela Merkel wird diese Ehre zuteilwerden.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Wie ich gerade so mitbekommen habe, regen sich ziemliche viele darüber auf, dass der große Zapfenstreich ein „herumwackeln mit Fackeln vor dem Reichstag“ war.</p>
<h2 id="ja-sagt-mal-gehts-noch">Ja sagt mal: Geht’s noch?</h2>
<blockquote>
<p>Der Große Zapfenstreich ist die höchste militärische Ehrenbezeugung, die die Bundeswehr kennt. Er ist keine Nazi-Erfindung, sondern geht auf militärische Traditionen des 16. Jahrhunderts zurück, die die Funktionsweise der Armee symbolisch darstellen – einschließlich der Trommel- und Trompetensignale von Infanterie und Kavallerie. Verteidigungsminister, ihre Staatssekretäre und hohe Offiziere werden so verabschiedet, ebenso die Bundeskanzler, zuletzt 2005 der Sozialdemokrat Gerhard Schröder. Auch Angela Merkel wird diese Ehre zuteilwerden.</p>
<p><a href="https://www.welt.de/debatte/kommentare/article234415486/Bundeswehr-Ehrung-Die-masslose-Kritik-am-Zapfenstreich-vor-dem-Reichstag.html">Welt.de</a></p>
</blockquote>
<p>So sieht es nämlich aus und „gewackelt“ hat da niemand. Der Große Zapfenstreich ist eine sehr präzise durchgeführte Zeremonie zu Ehren derer, die besonderes geleistet haben. Das Militär oder der Beruf des Soldaten, ist eben kein Beruf wie jeder andere.</p>
<blockquote>
<p>Der Zapfenstreich ist ein klares Signal dafür, dass es um etwas Ernstes geht, dass „Militär“ etwas qualitativ Einzigartiges ist. Soldat zu sein, das ist eben kein Beruf wie jeder andere, sondern beinhaltet im äußersten Fall die Pflicht zur Aufopferung für sein Land, also: unter Umständen für eine demokratisch legitimierte Sache zu sterben – oder zu töten. Man kann das nicht zur Dienstleistung herunterbanalisieren.</p>
<p><a href="https://www.welt.de/debatte/kommentare/article234415486/Bundeswehr-Ehrung-Die-masslose-Kritik-am-Zapfenstreich-vor-dem-Reichstag.html">Welt.de</a></p>
</blockquote>
<p>Wer dabei nur an die Nazi-Zeit denkt, hat es wirklich nicht verstanden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Windows 11: Zwang, Einschränkungen und falsche Prioritäten</title>
      <link>https://cbrueggenolte.de/windows-11-zwang-einschraenkungen-und-falsche-prioritaeten/</link>
      <pubDate>Wed, 06 Oct 2021 15:31:24 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/windows-11-zwang-einschraenkungen-und-falsche-prioritaeten/</guid>
      <description>&lt;p&gt;Windows 11 ist erschienen. &amp;ldquo;Juhu&amp;rdquo; mag so manch einer denken. Endlich ein Windows welches nur ein wenig nach macOS aussieht. Aber nein, nein, das ist alles nicht geklaut oder abgeguckt.&lt;/p&gt;&#xA;&lt;p&gt;Allerdings soll das jeder mal schön für sich selber entscheiden. Mir gefällt das neue Windows 11 auf jeden Fall nicht!&lt;/p&gt;&#xA;&lt;p&gt;Was mir noch viel weniger gefällt, ist die Tatsache, dass man einen verpflichtenden Microsoft Online-Account benötigt, wenn man nur mit der Home-Edition unterwegs ist. Auch ist TPM 2.0 und Secure Boot verpflichtend. Ohne diese technischen Voraussetzungen lässt sich ein Windows 11 also nicht installieren und betreiben. Abgesehen davon, benötigt es mindestens 64 GB Speicherplatz. WTH? Ich will nur ein Betriebssystem installieren und nicht gleich noch die gesamte Office-Suite. Wobei, Windows und Microsoft Office mehr als 64 GB Speicherplatz beanspruchen. Besser mal aufrüsten.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Windows 11 ist erschienen. &ldquo;Juhu&rdquo; mag so manch einer denken. Endlich ein Windows welches nur ein wenig nach macOS aussieht. Aber nein, nein, das ist alles nicht geklaut oder abgeguckt.</p>
<p>Allerdings soll das jeder mal schön für sich selber entscheiden. Mir gefällt das neue Windows 11 auf jeden Fall nicht!</p>
<p>Was mir noch viel weniger gefällt, ist die Tatsache, dass man einen verpflichtenden Microsoft Online-Account benötigt, wenn man nur mit der Home-Edition unterwegs ist. Auch ist TPM 2.0 und Secure Boot verpflichtend. Ohne diese technischen Voraussetzungen lässt sich ein Windows 11 also nicht installieren und betreiben. Abgesehen davon, benötigt es mindestens 64 GB Speicherplatz. WTH? Ich will nur ein Betriebssystem installieren und nicht gleich noch die gesamte Office-Suite. Wobei, Windows und Microsoft Office mehr als 64 GB Speicherplatz beanspruchen. Besser mal aufrüsten.</p>
<p>Für diejenigen, die aber kein Bock auf TPM und Secure Boot haben, gibt es allerdings schon eine Lösung. <a href="https://www.bleepingcomputer.com/news/microsoft/new-windows-11-install-script-bypasses-tpm-system-requirements/">Findige Script-Kiddies haben nämlich schon ein Script erstellt</a>, welches die Windowsinstallationsdateien so verändert, dass sich Windows 11 auch ohne TPM und Secure Boot installieren lässt.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ring Fit Adventure und andere Spiele: Bewegung im Herbst 2021</title>
      <link>https://cbrueggenolte.de/ring-fit-adventure-und-andere-spiele/</link>
      <pubDate>Sun, 12 Sep 2021 18:25:02 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ring-fit-adventure-und-andere-spiele/</guid>
      <description>&lt;p&gt;Ich habe &lt;a href=&#34;https://www.nintendo.de/Spiele/Nintendo-Switch/Ring-Fit-Adventure-1638708.html&#34;&gt;Ring Fit Adventure&lt;/a&gt; bekommen. Sehr geil! Wir haben es direkt ausprobiert und ich muss ehrlich zugeben, ich bin wirklich nicht mehr in Form.&lt;/p&gt;&#xA;&lt;p&gt;Das viele Home-Office und dass ich dieses Jahr nicht so viele Kilometer mit dem Rad gefahren bin, haben definitiv ihre Spuren hinterlassen. Schade ist auch, dass ich meine Uhr nicht mehr im Büro tragen darf. Keine Smart-Devices. Durch die fehlende Erinnerung sitzt man dann doch ungewollt viel mehr und bewegt sich seltener. Da muss ich mir noch eine Lösung für einfallen lassen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe <a href="https://www.nintendo.de/Spiele/Nintendo-Switch/Ring-Fit-Adventure-1638708.html">Ring Fit Adventure</a> bekommen. Sehr geil! Wir haben es direkt ausprobiert und ich muss ehrlich zugeben, ich bin wirklich nicht mehr in Form.</p>
<p>Das viele Home-Office und dass ich dieses Jahr nicht so viele Kilometer mit dem Rad gefahren bin, haben definitiv ihre Spuren hinterlassen. Schade ist auch, dass ich meine Uhr nicht mehr im Büro tragen darf. Keine Smart-Devices. Durch die fehlende Erinnerung sitzt man dann doch ungewollt viel mehr und bewegt sich seltener. Da muss ich mir noch eine Lösung für einfallen lassen.</p>
<p>Nichtsdestotrotz hat die erste halbe Stunde sehr viel Spaß gemacht. Zwar habe ich nur 8:23 Minuten trainiert, aber mit Einführung und Erklärungen waren es schon gute 30 Minuten. Was ich sehr positiv finde: man kann sich ein eigenes Trainingsset zusammenstellen, oder eines der vorgegebenen Sets wählen, die unterschiedliche Körperbereiche trainieren.</p>
<h2 id="vier-tage-später">Vier Tage später</h2>
<p>&ldquo;Ein Abenteuer das bewegt!&rdquo;, so steht es auf der Verpackung. Ich kann nur bestätigen, dass dem auch so ist.</p>
<p>Ich habe es jetzt vier Tage hintereinander ausprobiert und heute zum ersten Mal fast 30 Minuten durchgängig trainiert. Mit &ldquo;trainiert&rdquo; ist die Zeit gemeint, die man aktiv im Spiel verbringt, nicht die Zeit im Menü oder mit der Zubereitung von virtuellen Smoothies.</p>
<p>Es macht super viel Spaß, ich bin schon gut ins Schwitzen gekommen. Die einzelnen Stationen auf der Karte und die Monsterkämpfe sind abwechslungsreich und bei jedem Durchgang anders. Durch jede sportliche Bewegung gibt es Erfahrungspunkte, die bei einem Level-Up Angriff und Abwehr steigern. Zusätzlich schaltet man nach dem Abschließen von Abschnitten neue Übungen frei, die man dann ins Set aufnehmen kann.</p>
<p>Das Ergebnis nach vier Tagen kann sich schon sehen lassen. Morgen lege ich aber eine Pause ein. Wer nach so langer Zeit wieder mit Sport anfängt, der muss es ja nicht gleich übertreiben.</p>
<h2 id="ein-paar-wochen-später">Ein paar Wochen später</h2>
<p>Ich habe viel trainiert in den letzten Wochen. Mittlerweile habe ich den Ring fast 9300-mal zusammengedrückt, 550-mal Kriegerhaltung 1 und 500-mal Kriegerhaltung 2 gemacht. Dabei bin ich fast 47 km auf der Stelle gelaufen. Ziemlich gut, wie ich finde. Ein positiver Nebeneffekt: ich habe schon fast 4 kg abgenommen, Körperfett gesunken, Muskelmasse gestiegen, wenn man der Waage Glauben schenken darf.</p>
<p>Mit der Hauptstory bin ich noch nicht durch, Kapitel 16 oder 17 von 24. Trotzdem macht es weiter Spaß, die Herausforderungen werden mehr und intensiver. Für mich, bzw. für uns hat sich das echt gelohnt, und ich bin auch super stolz auf meine Frau, die das ebenfalls konsequent durchhält. Sie ist dabei sogar engagierter als ich und hat fast 3 Stunden mehr auf der Uhr.</p>
<h2 id="diablo-2-resurrected">Diablo 2: Resurrected</h2>
<p>Ende September kam Diablo 2: Resurrected auf den Markt. Ich hatte mich so gefreut, doch am ersten Tag ging leider erst mal nicht viel. Überlastete Server, nervende Spieler, Blizzard schweigt sich aus. Eigentlich alles wie immer.</p>
<p>In den folgenden Tagen habe ich dann mit ein paar Freunden einige schöne Stunden in der Welt von Sanctuary verbracht und Mephisto, Diablo und Baal mehrere Male den Garaus gemacht. Einer aus der Gruppe hat es ein wenig übertrieben und uns anderen damit gewissermaßen den Spielspaß verdorben. Hinzu kam der Release von New World, ein anderer aus der Gruppe war damit weg. Auch ging mir das schnelle Überspringen von Inhalten gegen den Strich. Ich habe eben nicht wirklich Bock auf 400 Baal-Runs, nur weil man schon so weit ist, aber durch das Überspringen nur wenig gelevelt hat.</p>
<p>D2R hat sich somit ziemlich schnell ausgespielt und konnte leider nur kurzzeitig für Vergnügen sorgen.</p>
<h2 id="astroneer">Astroneer</h2>
<p>Weil D2R nicht funktioniert hat, wir aber ein neues Multiplayer-Spiel gesucht haben, sind wir bei <a href="https://astroneer.space/">Astroneer</a> gelandet. Tolle bunte Grafik, Aufbauen einer Basis, Sammeln von Ressourcen, und das alles ohne Gegner. Entspannend und gleichzeitig eine Möglichkeit, den Alltag mal aus dem Kopf zu bekommen.</p>
<p>Es macht einfach Spaß, über den Planeten zu hüpfen und sich an der schönen, bunten Voxelwelt zu erfreuen. Im Multiplayer gleich doppelt so viel. Als wir den großen Truck bauen konnten, war es nur noch eine Frage der Zeit, bis wir den Kern des ersten Planeten erreichten. Das ist das Ziel des Spiels: alle Kerne der einzelnen Planeten erreichen, um die dort erzeugten geheimnisvollen Steine auf dem Trabanten der Sonne zu platzieren. Noch haben wir nicht alle Steine zusammen, aber wir basteln fleißig weiter.</p>
<h2 id="the-riftbreaker">The Riftbreaker</h2>
<p>Am 14. Oktober wurde <a href="https://www.riftbreaker.com/">The Riftbreaker</a> veröffentlicht. Ein Spiel, das mir gefallen könnte, wirklich. Du landest als Wissenschaftlerin in einem Mech auf einem Alien-Planeten und musst dort Ressourcen sammeln, um ein Portal zurück zur Erde zu bauen. Nicht alle Ressourcen sind auf einer Karte vorhanden, also muss man mithilfe des Portals weitere Gegenden erkunden.</p>
<p>Die Kreaturen des Planeten machen es einem nicht leicht, immer wieder kommen Horden von Gegnern, um die Basis zu zerstören. Durch geschickten Basisbau und gut platzierte Türme lässt sich das mal leichter, mal schwieriger abwehren, auch der Mech selbst greift mit verschiedenen Waffensystemen ins Kampfgeschehen ein. Neben der Kampagne gibt es noch einen Herausforderungsmodus, in dem man bis zum Ablauf der Zeit eine Verteidigungsbasis aufbauen muss, die dem folgenden Angriff standhält.</p>
<h2 id="satisfactory">Satisfactory</h2>
<p>Dann kam es, wie es kommen musste: ich habe mir erneut <a href="https://www.satisfactorygame.com/">Satisfactory</a> angeschaut und mich von einem Arbeitskollegen dazu hinreißen lassen, nicht nach 10 Minuten schon wieder aufzugeben. Unsere gemeinsame Fabrik hat inzwischen knapp 50 Stunden Spielzeit und einige coole, kleinere Fabrikkomplexe hervorgebracht.</p>
<p>Leider will der Kollege alles mit Fließbändern durch die Gegend schieben, ich würde gerne mehr Fahrzeuge wie Traktoren einsetzen. Züge haben wir noch nicht, aber was nicht da ist, kommt ja noch irgendwann. Wir haben die Fabriken für die meisten Grund-Komponenten erstellt und so weit automatisiert wie möglich. Schade nur, dass wir die Fabrik direkt neben die Quellen gebaut haben, jetzt können wir nicht so leicht eine größere Fabrik danebensetzen.</p>
<p>Nach der Pionier- und Besiedlungsphase sind wir nun in der Expansionsphase, mit Zugriff auf Öl und Plastik, damit Computer und weitere Bauteile. Auch Züge sind in Reichweite gerutscht. Ich hätte nie gedacht, dass Satisfactory mich mal so fesseln kann wie es Factorio getan hat.</p>
<h2 id="und-sonst">Und sonst</h2>
<p>Wer von alldem genug hat: die Netflix-Serie <a href="https://www.netflix.com/title/80995819">Inside Job</a> ist schräg und abgedreht, aber sehenswert.</p>
]]></content:encoded>
    </item>
    <item>
      <title>20 Jahre 9/11: Erinnerung, Überwachung und Afghanistan</title>
      <link>https://cbrueggenolte.de/20-jahre-9-11-erinnerung-ueberwachung-und-afghanistan/</link>
      <pubDate>Sat, 11 Sep 2021 18:05:06 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/20-jahre-9-11-erinnerung-ueberwachung-und-afghanistan/</guid>
      <description>&lt;p&gt;Heute ist der 20. Jahrestag der Anschläge vom &lt;a href=&#34;https://de.wikipedia.org/wiki/Terroranschl%C3%A4ge_am_11._September_2001&#34;&gt;11. September&lt;/a&gt;. Ein Tag in der Geschichte der westlichen Welt, den mal wohl gerne vergessen oder auch ungeschehen machen möchte. Vieles kommt aktuell wieder hoch. Viele, die nach dem 11. September geboren wurden, sind heute Anfang 20 und wissen gar nicht genau, was damals geschehen ist und wie die Anschläge unsere Welt verändert haben. Mitunter hat sich Vieles bei der Handhabung der Privatsphäre und im Bereich der Überwachung geändert.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute ist der 20. Jahrestag der Anschläge vom <a href="https://de.wikipedia.org/wiki/Terroranschl%C3%A4ge_am_11._September_2001">11. September</a>. Ein Tag in der Geschichte der westlichen Welt, den mal wohl gerne vergessen oder auch ungeschehen machen möchte. Vieles kommt aktuell wieder hoch. Viele, die nach dem 11. September geboren wurden, sind heute Anfang 20 und wissen gar nicht genau, was damals geschehen ist und wie die Anschläge unsere Welt verändert haben. Mitunter hat sich Vieles bei der Handhabung der Privatsphäre und im Bereich der Überwachung geändert.</p>
<p>Ich kann mich noch gut daran erinnern, wo ich zu diesem Zeitpunkt gewesen bin. Wir haben gemeinsam in der Kantine der Graf-York-Kaserne gesessen, als ein damaliger Kamerad hereinkam und meinte, die Türme in New York seien eingestürzt, weil zwei Flugzeuge reingeflogen seien. Wir alle haben es anfangs erst für einen Scherz gehalten und gelacht. Bis wir dann zurück in der Einheit waren und es tatsächlich auf dem Fernseher im Pausenraum gesehen haben. An normalen Tagesdienst war sodann nicht mehr zu denken. Alle haben gebannt auf den Fernseher geschaut und auch in den nächsten Tagen gab es fast kein anderes Thema mehr.</p>
<p>Auf der Seite der Bundeswehr gibt es einen Beitrag mit weiteren Erinnerungen von Kameraden und Kameradinnen: <em>Die totale Erinnerung – Die Terroranschläge vom 11. September 2001</em> (<a href="https://www.bundeswehr.de/de/aktuelles/meldungen/totale-erinnerung-terroranschlaege-11-september-2001-5217562">bundeswehr.de</a>)</p>
<p><a href="https://www.bundeswehr.de/de/aktuelles/meldungen/tagesbefehl-generalinspekteur-ende-einsatz-in-afghanistan-5102730">20 Jahre später ist der Einsatz in Afghanistan vorbei</a>. Viele Veteranen, die in Afghanistan waren, stellen sich Fragen wie &ldquo;Haben wir etwas falsch gemacht?&rdquo; oder &ldquo;War das alles umsonst?&rdquo;. Ich glaube nicht, dass der Einsatz in Afghanistan umsonst war. Die gebrachten Opfer waren nicht vergeblich. Lesenswert ist dazu das <a href="https://www.dbwv.de/aktuelle-themen/einsatz-aktuell/beitrag/am-ende-haben-in-afghanistan-die-ereignisse-fuer-uns-entschieden">Interview mit dem ehem. Generalinspekteur General a.D. Kujat auf den Seiten des Deutschen Bundeswehr Verbandes</a>.</p>
<p>Einen so lange laufender Einsatz zu analysieren braucht allerdings auch seine Zeit. Das Fehler gemacht wurden, ist vielen bewusst. Wie sich manche Politiker allerdings benommen haben, finde ich teils ziemlich grotesk. Vor allem im Hinblick auf die kommenden Wahlen ist es jetzt wichtig, richtig hinzuschauen und zu prüfen, welche Dinge für kommenden Einsätze verbessert werden müssen. Dass die Bundeswehr unter Personalmangel leidet und vor allem mit Ausrüstungsmangel zu kämpfen hat, sollte jedem bewusst sein.</p>
<blockquote>
<p>Militärseelsorger: Bundeswehreinsatz in Afghanistan war nicht umsonst</p>
<p>Trotz des Vormarschs der Taliban in Afghanistan hat der Militärseelsorger Joachim Simon den jahrelangen Einsatz der Bundeswehr in dem Land verteidigt. Der Einsatz sei nicht umsonst gewesen, sagte Simon am Dienstag gegenüber katholisch.de.</p>
<p><a href="https://www.katholisch.de/artikel/30860-militaerseelsorger-bundeswehreinsatz-in-afghanistan-war-nicht-umsonst">Joachim Simon - katholisch.de</a></p>
</blockquote>
<p>Ich bin kein aktiver Kirchengänger, doch kann ich diesen Worten nur zustimmen.</p>
<p>Zurzeit sieht es überhaupt nicht danach aus, dass die Taliban irgendetwas gelernt hätten. Auch wenn sie sich aktuell noch moderat verhalten, so glaube ich, dass sie wieder in ihre alten, mittelalterlichen Strukturen zurückfallen und Menschenrechte mit Füßen treten werden. Ich glaube aber fest daran, dass einige der Menschen, die dort leben, zumindest etwas gelernt haben. Vielleicht die jüngere Generation. Doch die scheint sich allzu leicht von hässlicher Propaganda beeinflussen zu lassen. Aber wir sollten die Hoffnung nicht ganz aufgeben, denn vielleicht ist doch etwas hängengeblieben.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Made to Measure und der Mythos nichts zu verbergen</title>
      <link>https://cbrueggenolte.de/made-to-measure-und-der-mythos-nichts-zu-verbergen/</link>
      <pubDate>Tue, 31 Aug 2021 22:24:50 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/made-to-measure-und-der-mythos-nichts-zu-verbergen/</guid>
      <description>&lt;p&gt;Gestern habe ich schon die hervorragend und ein wenig erschreckende Dokumentation &lt;a href=&#34;https://cbrueggenolte.de/2021/08/die-story-im-ersten-wahlkampf-undercover/&#34;&gt;Die Story im Ersten: Wahlkampf undercover&lt;/a&gt; erwähnt. Heute ist &lt;a href=&#34;https://www.ardmediathek.de/video/wdr-dok/made-to-measure-eine-digitale-spurensuche/wdr-fernsehen/Y3JpZDovL3dkci5kZS9CZWl0cmFnLWYwZGQwNTgwLWMyNDUtNGIwZC1iNjE5LTljY2YwNDM5NmVhMQ/&#34;&gt;Made to Measure: Eine digitale Spurensuche&lt;/a&gt; in der ARD Mediathek erschienen.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Ein crossmediales Datenexperiment macht auf eindrucksvolle Weise erlebbar, welche Einblicke Google, Facebook &amp;amp; Co. in unsere intimsten Geheimnisse haben.&lt;/p&gt;&#xA;&lt;p&gt;Die interaktive Website des Datenexperiments: &amp;lt;www.madetomeasure.online&amp;gt; - &amp;ldquo;Made To Measure: Eine digitale Spurensuche&amp;rdquo; veranschaulicht, wie Online-Unternehmen, Werbetreibende und andere Datenhändler die gesammelten Informationen nutzen, um aus den Schwächen, Unsicherheiten, Krankheiten und Suchtpotenzialen der Menschen Profit zu schlagen und stellt die große philosophische Frage: Ist die Idee der Autonomie des Einzelnen im Digitalzeitalter überholt? Eine Produktion von Beware of Horses in Koproduktion mit WDR, SRG SSR, RBB und DOCMINE.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gestern habe ich schon die hervorragend und ein wenig erschreckende Dokumentation <a href="https://cbrueggenolte.de/2021/08/die-story-im-ersten-wahlkampf-undercover/">Die Story im Ersten: Wahlkampf undercover</a> erwähnt. Heute ist <a href="https://www.ardmediathek.de/video/wdr-dok/made-to-measure-eine-digitale-spurensuche/wdr-fernsehen/Y3JpZDovL3dkci5kZS9CZWl0cmFnLWYwZGQwNTgwLWMyNDUtNGIwZC1iNjE5LTljY2YwNDM5NmVhMQ/">Made to Measure: Eine digitale Spurensuche</a> in der ARD Mediathek erschienen.</p>
<blockquote>
<p>Ein crossmediales Datenexperiment macht auf eindrucksvolle Weise erlebbar, welche Einblicke Google, Facebook &amp; Co. in unsere intimsten Geheimnisse haben.</p>
<p>Die interaktive Website des Datenexperiments: &lt;www.madetomeasure.online&gt; - &ldquo;Made To Measure: Eine digitale Spurensuche&rdquo; veranschaulicht, wie Online-Unternehmen, Werbetreibende und andere Datenhändler die gesammelten Informationen nutzen, um aus den Schwächen, Unsicherheiten, Krankheiten und Suchtpotenzialen der Menschen Profit zu schlagen und stellt die große philosophische Frage: Ist die Idee der Autonomie des Einzelnen im Digitalzeitalter überholt? Eine Produktion von Beware of Horses in Koproduktion mit WDR, SRG SSR, RBB und DOCMINE.</p>
<p><a href="https://www.ardmediathek.de/video/wdr-dok/made-to-measure-eine-digitale-spurensuche/wdr-fernsehen/Y3JpZDovL3dkci5kZS9CZWl0cmFnLWYwZGQwNTgwLWMyNDUtNGIwZC1iNjE5LTljY2YwNDM5NmVhMQ/">ARD Mediathek</a></p>
</blockquote>
<p>Die beiden Dokumentationen kann man sich ruhig hintereinander anschauen. Es lohnt sich!</p>
<p>Ebenfalls sehr sehenswert, informativ und auch erschreckend. Wer hat sein Adressbuch nicht doch mit Facebook und WhatsApp und Instagram und Co geteilt? Wer hat nicht viele Informationen in seinem Adressbuch gespeichert und schön dafür gesorgt, dass unsere Schattenprofile detailliert und ausreichend informativ für Datenhändler sind?</p>
<p>Denn wenn wir mal ehrlich zu uns selbst sind: <em>Gewusst hast du das doch auch, irgendwie, tief in deinem Inneren. Doch wirklich wahrhaben will man nicht. &ldquo;Mir kann ja nichts passieren, ich passe auf!&rdquo;</em></p>
<p><a href="https://digitalcourage.de/nichts-zu-verbergen">Das man nichts zu verbergen hat, ist ein moderner Mythos.</a> Jeder hat etwas zu verbergen!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Warum ich netzpolitik.org unterstütze</title>
      <link>https://cbrueggenolte.de/warum-ich-netzpolitik-org-unterstuetze/</link>
      <pubDate>Mon, 30 Aug 2021 22:16:40 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/warum-ich-netzpolitik-org-unterstuetze/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Herzlich willkommen im netzwerk,&lt;/p&gt;&#xA;&lt;p&gt;als Teil des netzwerks unterstützt du eine der wichtigsten unabhängigen Informationsquellen für digitale Freiheitsrechte und Verbraucherschutz im deutschsprachigen Raum. Wir recherchieren investigativ, klopfen Wirtschaft und Politik auf die Finger und geben der Zivilgesellschaft eine Stimme. &lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://netzpolitik.org/&#34;&gt;netzpolitik.org&lt;/a&gt; wird zu mehr als 95 Prozent von Menschen wie dir finanziert und garantiert uns eine unabhängige Berichterstattung. Vielen Dank an dieser Stelle dafür!&lt;/p&gt;&#xA;&lt;p&gt;Antwort-E-Mail von netzpolitik.org&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Seit heute bin ich Teil des &amp;lsquo;&lt;a href=&#34;https://netzpolitik.org/netzwerk/&#34;&gt;netzwerk&lt;/a&gt;&amp;rsquo; von &lt;a href=&#34;https://netzpolitik.org&#34;&gt;netzpolitik.org&lt;/a&gt; und spende einen monatlichen Beitrag für guten Journalismus, der mir besonders wichtig ist.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>Herzlich willkommen im netzwerk,</p>
<p>als Teil des netzwerks unterstützt du eine der wichtigsten unabhängigen Informationsquellen für digitale Freiheitsrechte und Verbraucherschutz im deutschsprachigen Raum. Wir recherchieren investigativ, klopfen Wirtschaft und Politik auf die Finger und geben der Zivilgesellschaft eine Stimme. </p>
<p><a href="http://netzpolitik.org/">netzpolitik.org</a> wird zu mehr als 95 Prozent von Menschen wie dir finanziert und garantiert uns eine unabhängige Berichterstattung. Vielen Dank an dieser Stelle dafür!</p>
<p>Antwort-E-Mail von netzpolitik.org</p>
</blockquote>
<p>Seit heute bin ich Teil des &lsquo;<a href="https://netzpolitik.org/netzwerk/">netzwerk</a>&rsquo; von <a href="https://netzpolitik.org">netzpolitik.org</a> und spende einen monatlichen Beitrag für guten Journalismus, der mir besonders wichtig ist.</p>
<p>Ich lese die Artikel super gerne und höre auch regelmäßig den Podcast <a href="https://logbuch-netzpolitik.de/">Logbuch-Netzpolitik</a>, den ich an dieser Stelle nur wärmstens empfehlen kann! Und weil ich schon so lange zu den Lesern gehöre, habe ich mich dann endlich dazu entschlossen, auch regelmäßig für guten Journalismus zu bezahlen, bzw. zu spenden.</p>
<p>Wir brauchen diese Menschen mehr denn je. Desinformationskampagnen, Fake News und Hass im Netz sind nur einige der Themen, die man angehen muss. Unsere Politiker gehören hier leider nicht immer zu den hellsten Kerzen auf der Torte (<a href="https://netzpolitik.org/2021/cdu-gegen-hackerin-scheisse-bauen-rueckzieher-machen-repeat/">CDU gegen Hackerin</a>) und so braucht es freien und unabhängigen Journalismus der denen ab und zu auf die Finger klopft. Aber nicht nur dort, sondern auch bei vielen anderen netzpolitischen Dinge wie <a href="https://netzpolitik.org/2021/afghanistan-vom-facebook-profil-auf-die-verhaftungslisten-der-taliban/">Social-Media</a>, <a href="https://netzpolitik.org/2021/everkuendung-bundesregierung-troedelt-bei-digitaler-veroeffentlichung-von-gesetzen/">Gesetzen</a>, <a href="https://netzpolitik.org/2021/neue-datenschutzbestimmungen-lidl-teilt-persoenliche-daten-ohne-einwilligung-mit-facebook-und-google/">Datenschutz in Firmen für Angestellte und Kunden</a> und noch viel mehr.</p>
<p>Ich spende, du auch?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Abschied von Spotify und der Wechsel zu Deezer</title>
      <link>https://cbrueggenolte.de/abschied-von-spotify-und-der-wechsel-zu-deezer/</link>
      <pubDate>Fri, 13 Aug 2021 08:55:31 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/abschied-von-spotify-und-der-wechsel-zu-deezer/</guid>
      <description>&lt;p&gt;Dear SpotifyDE,&lt;/p&gt;&#xA;&lt;p&gt;da ihr es seit Jahren nicht geschafft habt die Audiobooks besser zu integrieren, mir immer wieder die niederländische Seite anzeigt, obwohl deutsche Adresse und Sprache eingestellt ist, und ihr euch mit Europa immer noch nicht einigen könnt, ist es Zeit zu gehen.&lt;/p&gt;&#xA;&lt;p&gt;Es tut mir auch nicht weh. Die Sortierung ist eine Katastrophe, in meinen Augen, die Mixe sind OK aber warum werden da Hörspiele eingepflegt? Und was soll so ein Blödsinn wie “Edgar Allen Poe Radio” oder “Mimi Rutherford Radio”? WTH&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Dear SpotifyDE,</p>
<p>da ihr es seit Jahren nicht geschafft habt die Audiobooks besser zu integrieren, mir immer wieder die niederländische Seite anzeigt, obwohl deutsche Adresse und Sprache eingestellt ist, und ihr euch mit Europa immer noch nicht einigen könnt, ist es Zeit zu gehen.</p>
<p>Es tut mir auch nicht weh. Die Sortierung ist eine Katastrophe, in meinen Augen, die Mixe sind OK aber warum werden da Hörspiele eingepflegt? Und was soll so ein Blödsinn wie “Edgar Allen Poe Radio” oder “Mimi Rutherford Radio”? WTH</p>
<p>Das sind alles Hörspiele! Die will man nicht im Mix hören. Schon gar nicht im Mix mit TKKG, Hanni und Nanni und Fünf Freunde. Aber genug aufgeregt. Die Zeit war schön, ok aber nicht ganz zufriedenstellend. Machts gut und hoffentlich in Zukunft besser!</p>
<p>Wir sind dann jetzt mal bei Deezer. Das kostet zwar etwas mehr, aber die haben eine eigene, separate <a href="https://apps.apple.com/de/app/audiobooks-by-deezer/id1482898319">Audiobook By Deezer</a>-App. Und das ist so viel übersichtlicher und angenehmer.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Politik, Überwachung und Wahlentscheidung</title>
      <link>https://cbrueggenolte.de/politik-ueberwachung-und-wahlentscheidung/</link>
      <pubDate>Fri, 13 Aug 2021 08:22:52 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/politik-ueberwachung-und-wahlentscheidung/</guid>
      <description>&lt;p&gt;Vielleicht sollten wir irgendwann einmal kompetente Leute in die Regierung wählen. Wer nach 15 Jahren CDU/CSU immer noch nicht verstanden hat, warum das so nicht weitergehen kann, dem kann ich auch nicht mehr helfen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://netzpolitik.org/2021/anonymitaet-im-netz-rassistinnen-kommentieren-mit-identifizierbaren-accounts/&#34;&gt;netzpolitik.org&lt;/a&gt; schreibt:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Anonymität im Netz: Rassist:innen kommentieren mit identifizierbaren Accounts&lt;/p&gt;&#xA;&lt;p&gt;Die Forderung nach einer Verifikation für Accounts baut damit auf der Annahme, dass sich Rassist:innen im Deckmantel der Anonymität verstecken würden.&#xA;&lt;strong&gt;99% der Accounts waren nicht anonym&lt;/strong&gt;&#xA;Der Analyse von Twitter zufolge stellt sich diese Annahme nun als ein Irrtum heraus.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Vielleicht sollten wir irgendwann einmal kompetente Leute in die Regierung wählen. Wer nach 15 Jahren CDU/CSU immer noch nicht verstanden hat, warum das so nicht weitergehen kann, dem kann ich auch nicht mehr helfen.</p>
<p><a href="https://netzpolitik.org/2021/anonymitaet-im-netz-rassistinnen-kommentieren-mit-identifizierbaren-accounts/">netzpolitik.org</a> schreibt:</p>
<blockquote>
<p>Anonymität im Netz: Rassist:innen kommentieren mit identifizierbaren Accounts</p>
<p>Die Forderung nach einer Verifikation für Accounts baut damit auf der Annahme, dass sich Rassist:innen im Deckmantel der Anonymität verstecken würden.
<strong>99% der Accounts waren nicht anonym</strong>
Der Analyse von Twitter zufolge stellt sich diese Annahme nun als ein Irrtum heraus.</p>
</blockquote>
<p>Siehe dazu auch den anderen Beitrag von <a href="https://netzpolitik.org/2021/identifizierungszwang-hass-im-netz-als-vehikel-fuer-massenueberwachung/">netzpolitik.org</a>:</p>
<blockquote>
<p>Unglaubwürdige Unionsparteien</p>
<p>Der Kampf gegen „Hass im Netz“, also vor allem Rassismus, Antisemitismus und Faschismus, muss an der Gesellschaft selbst ansetzen. Wenn CDU und CSU gleichzeitig Programme zur Demokratieförderung verhindern, weil sie linke Umtriebe vermuten und im selben Atemzug rechte Umtriebe von WerteUnion und Hans-Georg Maaßen in den eigenen Reihen zulassen, dann zeigt das, dass es gar nicht so sehr um „Hass im Netz“ geht, sondern um einen Ausbau der Überwachung.</p>
</blockquote>
<p>Armin Laschet war und ist nicht der Kanzlerkandidat den sich die meisten wünschen. Warum man ihn dennoch aufgestellt hat, keine Ahnung. Die Umfragewerte sind niedriger als die, die Helmut Kohl bekam, kurz bevor er das Amt niederlegte.</p>
<p>Wer sich noch unschlüssig ist, welche Partei er wählen soll, dem möchte ich zwei Dinge empfehlen:</p>
<ul>
<li>für Menschen, die sich nicht viel Zeit nehmen wollen: schaut euch den Wahl-O-Mat <a href="https://www.wahl-o-mat.de/bw2021/app/main_app.html">https://www.wahl-o-mat.de/bw2021/app/main_app.html</a></li>
<li>für Menschen die etwas mehr Zeit haben, die sollten sich die letzten Folgen vom <a href="https://klabautercast.de/">Klabautercast</a> mit <a href="https://twitter.com/martinhaase">Martin Hase (twitter)</a> anhören. Dort werden die einzelnen Parteiprogramme sprachlich auseinander genommen. Interessant, was alles so in Sprache verpackt werden kann.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Apple, CSAM und die Grenze der Privatsphäre</title>
      <link>https://cbrueggenolte.de/apple-csam-und-die-grenze-der-privatsphaere/</link>
      <pubDate>Mon, 09 Aug 2021 13:19:17 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/apple-csam-und-die-grenze-der-privatsphaere/</guid>
      <description>&lt;p&gt;Apple steht gerade ziemlich in der Kritik wegen ihrem Vorstoß, lokal auf dem Smartphone nach Bildern zu scannen, bei denen es sich um CSAM (Child Sexual Abuse Material) handeln könnte. &lt;a href=&#34;https://www.apple.com/child-safety/&#34;&gt;Apple Child Safety Webseite&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Sobald das überprüfte Bild einen bestimmten Schwellenwert überschritten hat, werden die zuständigen Behörden informiert. Apple ist bekannt dafür, in vielen Fällen das Richtige zu tun (Spoiler: Apple-Fanboy hier), sind allerdings viele besorgt, dass dieses der erste Schritt ist, der den Behörden einen Fuß in der Tür gibt, die bisher als gut verschlossen und geschützt angesehen wurde. Auch scheint es, dass es für Apple danach schwieriger werden wird, ihre Anti-FBI-Backdoor-Haltung weiter aufrecht zu halten.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Apple steht gerade ziemlich in der Kritik wegen ihrem Vorstoß, lokal auf dem Smartphone nach Bildern zu scannen, bei denen es sich um CSAM (Child Sexual Abuse Material) handeln könnte. <a href="https://www.apple.com/child-safety/">Apple Child Safety Webseite</a>.</p>
<p>Sobald das überprüfte Bild einen bestimmten Schwellenwert überschritten hat, werden die zuständigen Behörden informiert. Apple ist bekannt dafür, in vielen Fällen das Richtige zu tun (Spoiler: Apple-Fanboy hier), sind allerdings viele besorgt, dass dieses der erste Schritt ist, der den Behörden einen Fuß in der Tür gibt, die bisher als gut verschlossen und geschützt angesehen wurde. Auch scheint es, dass es für Apple danach schwieriger werden wird, ihre Anti-FBI-Backdoor-Haltung weiter aufrecht zu halten.</p>
<p>Mehr Infos bei <a href="https://www.theverge.com/2021/8/5/22611305/apple-scan-photos-iphones-icloud-child-abuse-imagery-neuralmatch">The Verge</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>MkDocs mit Docker: Dokumentation sauber entwickeln</title>
      <link>https://cbrueggenolte.de/mkdocs-mit-docker-dokumentation-sauber-entwickeln/</link>
      <pubDate>Fri, 06 Aug 2021 15:31:42 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/mkdocs-mit-docker-dokumentation-sauber-entwickeln/</guid>
      <description>&lt;p&gt;Die letzten Tage habe ich mit dem Sven an der Matrix-Dokumentation für den Tildeverse-Server envs.net gearbeitet. Nachdem wir erfolglos versucht haben, den Fork der TU-Dresden zu bearbeiten, haben wir uns dau entschlossen, die Dokumentation anstatt mit Hugo doch lieber mit MkDocs umzusetzen. Hinzu kommt, dass MkDocs von Haus aus eine Suchfunktion mitliefert und das nicht extra eingebunden werden muss.&lt;/p&gt;&#xA;&lt;p&gt;MkDocs konnte ich lokal mit brew installieren, doch nachdem es ein neues Theme und damit weitere Extensions für MkDocs geben sollte, habe ich mir gedacht: “warum soll ich mir mein System mit irgendwelchen Sachen zu müllen, wenn ich dafür doch lieber einen Docker-Container verwenden kann”.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die letzten Tage habe ich mit dem Sven an der Matrix-Dokumentation für den Tildeverse-Server envs.net gearbeitet. Nachdem wir erfolglos versucht haben, den Fork der TU-Dresden zu bearbeiten, haben wir uns dau entschlossen, die Dokumentation anstatt mit Hugo doch lieber mit MkDocs umzusetzen. Hinzu kommt, dass MkDocs von Haus aus eine Suchfunktion mitliefert und das nicht extra eingebunden werden muss.</p>
<p>MkDocs konnte ich lokal mit brew installieren, doch nachdem es ein neues Theme und damit weitere Extensions für MkDocs geben sollte, habe ich mir gedacht: “warum soll ich mir mein System mit irgendwelchen Sachen zu müllen, wenn ich dafür doch lieber einen Docker-Container verwenden kann”.</p>
<p>Den lokalen Rechner sauber halten ist keine so schlechte Idee und da MkDocs in Python geschrieben ist, lässt sich das sehr gut in einem Docker-Image verpacken. Das macht es auch für andere Entwickler einfacher, es auf ihrem lokalen Rechner auszuführen.</p>
<h2 id="docker-image-erstellen">Docker Image erstellen</h2>
<p>Hier ist das Dockerfile:</p>





<pre tabindex="0"><code>FROM python:3.9-alpine3.14LABEL maintainer=&#34;cblte@envs.net&#34;LABEL version=&#34;1.0&#34;LABEL description=&#34;\This Dockerfile installs python3 and pip3 to\then install and run MkDocs with several extensions.&#34;RUN pip install \    mkdocs \    mkdocs-material \    pymdown-extensions</code></pre><p>So einfach ist das. Wir verwenden das python-Basisimage in der alpine Version welches ca. 100 MB groß ist. Im Image installieren wir dann <code>mkdocs</code>, das Designpaket <code>mkdocs-material</code> und das erforderliche <code>pymdown-extensions</code> Paket.</p>
<h2 id="image-erstellen">Image Erstellen</h2>
<p>Erstellt wird das Image mit dem folgenden Befehl:</p>
<p><code>docker build -t cblte/mkdocs:1.0 .</code></p>
<p>Der Punkt am Ende ist wichtig, damit Docker das <code>Dockerfile</code> findet. Mit dem Parameter <code>-t cblte/mkdocs:1.0</code> legen wir den Tag fest mit auf das Image verwiesen werden kann. Hinter dem Doppelpunkt kann eine Versionsnummer angegeben werden.</p>
<h2 id="docker-container-starten">Docker Container starten</h2>
<p>Nehmen wir an, die Dateien für die Dokumentation liegen im Verzeichnis <code>$HOME/data/mkdocs-src</code>. Auf diesen Ordner soll von dem Docker-Container aus zugegriffen werden können. Außerdem möchte ich die Dokumentation vom Container aus über MkDocs bereitstellen und vom Host aus auf dem Entwicklungs-Server zugreifen.</p>
<p>Folgende Parameter müssen wir verwenden:</p>
<ul>
<li><code>-it</code>: interaktiver modus</li>
<li><code>--rm</code>: nach dem Beenden container löschen</li>
<li><code>-p 8888:8000</code>: den Port 8000 aus dem Container auf dem Host unter Port 8888 verfügbar stellen</li>
<li><code>-v '$HOME/data/mkdocs-src':/src</code>: stelle das lokale Verzeichnis im Container im Verzeichnis <code>/src</code> zur Verfügung</li>
<li><code>cblte/mkdocs:1.0</code>: das Image welches wir für den Container verwenden wollen</li>
<li><code>/bin/sh</code>: den Befehl den wir ausführen wollen</li>
</ul>
<p>Den Container starten wir mit folgendem Befehl:</p>





<pre tabindex="0"><code>docker run -it --rm \    -p 8888:8000 \    -v $HOME/data/mkdocs-src:/src \    cblte/mkdocs:1.0 /bin/sh</code></pre><p>Nachdem der Container gestartet ist, wechseln wir mit <code>cd /src</code> in das verbundene Verzeichnis und erstellen mit <code>mkdocs new .</code> ein neues Projekt.</p>
<p>Dadurch das wir das lokale Verzeichnis mit dem Container verbunden haben, können wir auf dem Host bequeme daran arbeiten.</p>
<h2 id="dateien-wurden-im-verzeichnis-auf-dem-host-erstelltmkdocs-server-starten">Dateien wurden im Verzeichnis auf dem Host erstellt.MkDocs Server starten</h2>
<p>Den MkDocs Entwicklungsserver starten wir mit folgendem Befehl:</p>
<p><code>mkdocs server --liveReload --dev-addr 0.0.0.0:8000</code></p>
<p>Da sich MkDocs standardmäßig an 127.0.0.1 bindet, müssen wir den Parameter <code>--dev-addr</code> verwenden, um auf den Entwicklungsserver vom Host aus zuzugreifen.</p>
<p>Auf dem Host-Rechner kann unter <code>http://localhost:8888</code> auf den die Dokumentation zugregriffen werden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Microblog-Refactoring und bessere Dateistrukturen</title>
      <link>https://cbrueggenolte.de/microblog-refactoring-und-bessere-dateistrukturen/</link>
      <pubDate>Thu, 29 Jul 2021 21:30:09 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/microblog-refactoring-und-bessere-dateistrukturen/</guid>
      <description>&lt;p&gt;Ich habe mich heute mal hingesetzt und den Microblog überarbeitet. Dadurch das ich mit ganz vielen Dateien und einer etwas komplizierten Ordner Struktur angefangen habe, wurde das irgendwann ziemlich aufwendig, neue Beiträge zu erstellen.&lt;/p&gt;&#xA;&lt;p&gt;Erst habe ich versucht alle Beiträge in einer Datei zu sammeln. Eine Datei pro Jahr sollte ausreichen. Dazu habe ich ein kleines Python Script geschrieben.&lt;/p&gt;&#xA;&lt;p&gt;Alle Beiträge waren nur in einer Datei und nach ein wenig hin und her und umformatieren, hatte ich auch ein passables Ergebnis.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe mich heute mal hingesetzt und den Microblog überarbeitet. Dadurch das ich mit ganz vielen Dateien und einer etwas komplizierten Ordner Struktur angefangen habe, wurde das irgendwann ziemlich aufwendig, neue Beiträge zu erstellen.</p>
<p>Erst habe ich versucht alle Beiträge in einer Datei zu sammeln. Eine Datei pro Jahr sollte ausreichen. Dazu habe ich ein kleines Python Script geschrieben.</p>
<p>Alle Beiträge waren nur in einer Datei und nach ein wenig hin und her und umformatieren, hatte ich auch ein passables Ergebnis.</p>
<p>Das Template für den Blog sah dann so aus:</p>
<p>Auch wenn die Änderungen auf den ersten Blick ganz gut ausgesehen haben, so hat es leider nicht mehr mit dem RSS-Feed funktioniert. Da alle Beiträge in einer Datei sind, ist der RSS Feed viel zu kurz und ich möchte das niemandem zumuten, ständig den gesamten Feed zu laden. Also musste ich eine andere Lösung finden.</p>
<p>Nach einigem Hin und Her bin ich dann doch wieder bei einzelnen Dateien gelandet. Dieses Mal allerdings ohne <a href="https://gohugo.io/content-management/front-matter/">Frontmatter</a>. Der Dateinamen, bestehend aus Jahreszahl, einem Punkt und einer fortlaufenden Nummer.</p>
<p>Das Python Script habe ich dazu ein wenig umgeschrieben und erzeugt nun Dateien nach dem oben beschriebenen Schema.</p>
<p>Das dazugehörige Template <code>list.html</code> musste ich ebenfalls ändern und sieht nun so aus:</p>
<p>Der obere Teil (Zeile 2-7) transkludiert die Inhalte der <code>_index.md</code>-Datei. Dabei wird auch die Zahl im Dokument durch einen Link ersetzt.</p>
<p>Ab Zeile 9 werden dann alle vorhandenen Dateien verarbeitet. Der Dateiname wir vorne abgeschnitten und die führenden Nullen werden ebenfalls entfernt, um die Zahl für die Webseite zu erzeugen (Zeile 10). Danach wird ein Link erzeugt (Zeile 11) der anschließend vorne vor den Beitrag gesetzt (Zeile 12) wird.</p>
<p>Der erzeugte Link mit der Nummer kann benutzt werden, um auf den Beitrag zu verlinken oder diesen Direkt anzuspringen. Sprich die Zahl kann als Sprungmarke genutzt werden, um direkt zum Eintrag im Microblog zu springen. Zum Beispiel zum Eintrag #55.</p>
<p>Im großen ganzen kann man sagen, dass ich mit all den Änderungen die Dateistruktur vereinfacht und die Anzeige (zumindest für mich) verbessert habe.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Papierloser werden: Dokumente scannen und automatisiert ordnen</title>
      <link>https://cbrueggenolte.de/papierloser-werden-dokumente-scannen-und-automatisiert-ordnen/</link>
      <pubDate>Wed, 21 Jul 2021 20:40:11 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/papierloser-werden-dokumente-scannen-und-automatisiert-ordnen/</guid>
      <description>&lt;p&gt;Jetzt in meinem Urlaub bin ich mal wieder dazu übergegangen ein paar meiner Papierablagen zu sortieren und zu digitalisieren. Noch immer habe ich mehrere Ordner mit sehr viel Papier. Hauptsächliche Versicherungsunterlagen und Rechnungen.&lt;/p&gt;&#xA;&lt;p&gt;Wenn wir mal ehrlich sind, wir heben doch wirklich viel zu viel auf, oder? Die meisten Rechnungen kommen sowieso nur noch per E-Mail, wenn überhaupt, oder ich kann sie mir im Kundenportal herunterladen &lt;a href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;. Warum sollte ich also Unterlagen in Papierform der Jahre 2019 und älter noch aufbewahren?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Jetzt in meinem Urlaub bin ich mal wieder dazu übergegangen ein paar meiner Papierablagen zu sortieren und zu digitalisieren. Noch immer habe ich mehrere Ordner mit sehr viel Papier. Hauptsächliche Versicherungsunterlagen und Rechnungen.</p>
<p>Wenn wir mal ehrlich sind, wir heben doch wirklich viel zu viel auf, oder? Die meisten Rechnungen kommen sowieso nur noch per E-Mail, wenn überhaupt, oder ich kann sie mir im Kundenportal herunterladen <a href="#fn:1">1</a>. Warum sollte ich also Unterlagen in Papierform der Jahre 2019 und älter noch aufbewahren?</p>
<h2 id="scanner-pro--scannen-und-ocr-mit-dem-telefon">Scanner Pro – Scannen und OCR mit dem Telefon</h2>
<p>Die für mich bisher am besten funktionierende Software ist <a href="https://readdle.com/scannerpro">Scanner Pro</a> von <a href="https://readdle.com/">Readdle</a>. Damit kann ich meine Post schnell und unkompliziert einscannen und mithilfe der eingebauten OCR-Funktion durchsuchbar machen.</p>
<p>Sobald Post kommt (oder aber auch mal später) fotografiere ich die Blätter mit Scanner Pro und vergebe einen eindeutigen Dateinamen. Für die nette Beitragsrückerstattung der Nürnberger Krankenversicherung zum Beispiel setze ich als Dateinamen:</p>
<p><code>2021-07-21-VerEins-Rueckerstattung Beitraege 2020 und 2019.pdf</code></p>
<p>Das Datum am Anfang garantiert die einfache Sortierung im Finder und Zuordnung wann das Dokument verschickt wurde, ohne es zu öffnen. Nach dem Datum kommt immer der Name der Firma oder Versicherung, die das Dokument verschickt hat. Der Rest enthält dann so viele Details wie möglich, damit sich das Dokument schnell wieder finden lässt. Hierbei denke ich an mein zukünftiges Ich, welches die Datei irgendwann mal suchen sollte.</p>
<p>Ist der Dateiname vergeben, speichere ich das Dokument und es wird per iCloud auf den Mac synchronisiert. Hier kommt jetzt das <a href="https://github.com/tfeldmann/organize">organize-tool</a> ins Spiel, welches anhand von Regeln die Datei in den entsprechenden Ordner packt.</p>
<h2 id="organize-tool--command-line-utility-to-automate-file-organization-tasks">organize-tool – command line utility to automate file organization tasks</h2>
<p><a href="http://github.com/tfeldmann/organize">Organize Tool</a></p>
<p>Früher habe ich die Organisation mit <a href="https://www.noodlesoft.com/">Hazel</a> gemacht. Allerdings bin ich dazu übergegangen doch mehr Open-Source-Software zu verwenden und habe in den letzten zwei Tagen das <a href="https://github.com/tfeldmann/organize">organize-tool</a> ausprobiert. Ich bin positiv überrascht, dass sich damit ziemlich schnell funktionieren Abläufe schreiben kann.</p>
<p>Um auf das Beispiel von oben wieder zurückzukommen, habe ich mir eine Datei mit Regeln geschrieben, die meine Unterlagen der verschiedenen Versicherungen in die passenden Ordner ablegt.</p>
<h3 id="beispiel-regel-für-die-versicherungen">Beispiel Regel für die Versicherungen</h3>





<pre tabindex="0"><code>rules:  # Sort files into my documents archive on the synology  - folders: ~/Desktop/Inbox    subfolders: true    filters:      - regex: &#39;(\d{4}-\d{2}-\d{2})-(?P&lt;target&gt;(VerEins|VerZwei|VerDrei))-&#39;    actions:      - echo: &#34;Moving file to {regex.target}&#34;      - move: ~/SyncFolder/docs-versicherungen/{regex.target}/</code></pre><p>Die Regel hier durchsucht den Ordner <code>Inbox</code> auf dem Desktop und filtert anhand des Dateinamens. Der reguläre Ausdruck im Filter schaut dabei ob der Dateiname mit einem einem Datum im Format <code>YYYY-MM-DD</code> beginnt und ein Wort aus der Liste der Versicherungen folgt. Der Name der Versicherung wird dabei in der Variable <code>target</code> gespeichert, die ich in der <code>move</code>-Aktion benutzen kann.</p>
<p>Somit kann ich Dokumente mehrerer Versicherungen mit einer Regel in die jeweils korrekten Ordner einsortieren.</p>
<h3 id="regel-ausführen">Regel ausführen</h3>
<p>Wenn alle Papiere eingescannt sind und diese als PDF im iCloud-Ordner liegen, verschiebe ich alle Dateien in den Inbox-Ordner auf dem Desktop und führe ich in der Kommandozeile folgenden Befehl aus:</p>
<p><code>$ organize run --config-file .config/organize-tool/versicherungen.yaml</code></p>
<p>Alle Dateien die zu denen die Regel passt, werden nun in ihre entsprechenden Unterordner einsortiert.</p>
<p>Anstelle die Dateien vorher noch in den Inbox-Ordner auf dem Desktop zu verschieben, könnte man als Quell-Ordner auch den iCloud-Ordner <code>/Users/&lt;user&gt;/Library/Mobile Documents/iCloud~com~readdle~Scanner~PDF/Documents</code> angeben. Da ich aber von mehreren Quellen Dokumente bekommen, zum Beispiel auch per E-Mail, habe ich eine Inbox auf dem Desktop erstellt.</p>
<h2 id="fazit">Fazit</h2>
<p>Ich bin mit <a href="https://readdle.com/scannerpro">Scanner Pro</a> wirklich zufrieden und es die einzige App die sauber und ohne viel Schnickschnack zuverlässig ihre Arbeit macht.</p>
<p>Mit <a href="https://github.com/tfeldmann/organize">organize</a> habe ich nun ein Tool gefunden, welches sich sogar Plattform übergreifend einsetzen und neben den organisatorischen Möglichkeiten auch als Massen-Umbenennungs-Tool verwenden lässt.</p>
<p>Es sieht zwar nicht so schön wie Hazel aus, lässt aber durch die vielfältigen Regeln und Möglichkeiten keine Wünsche offen.</p>
<p><strong>Tip</strong>: auf macOS lässt es sich bequem via <code>brew</code> installieren.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Impfen schützt – aber nicht vor Ansteckung</title>
      <link>https://cbrueggenolte.de/impfen-schuetzt-aber-nicht-vor-ansteckung/</link>
      <pubDate>Sun, 18 Jul 2021 21:52:59 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/impfen-schuetzt-aber-nicht-vor-ansteckung/</guid>
      <description>&lt;p&gt;In Israel hat ein Mann auf einer Party über 80 andere Gäste mit Covid angesteckt. Er, geimpft, hat sich bei wem angesteckt, auch geimpft, der sich wieder beim wem angesteckt hat, der ebenfals geimpft war. &lt;a href=&#34;https://www.morgenpost.de/vermischtes/article232700219/corona-infektion-israel-geimpft-delta-impfung.html&#34;&gt;morgenpost.de&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Durch die Impfung schütze ich mich selbst! Wenn du geschützt sein willst, dann musst du dich auch impfen lassen! Die Impfung schützt mich vor einer Erkrankung aber nicht vor einer Ansteckung. Wenn wir weitere Lockerungen kriegen, dann werden wir uns alle einmal anstecken und durchinfizieren. Allerdinge werden nur die, die sich auch haben impfen lassen, vor Schlimmerem bewahrt werden!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In Israel hat ein Mann auf einer Party über 80 andere Gäste mit Covid angesteckt. Er, geimpft, hat sich bei wem angesteckt, auch geimpft, der sich wieder beim wem angesteckt hat, der ebenfals geimpft war. <a href="https://www.morgenpost.de/vermischtes/article232700219/corona-infektion-israel-geimpft-delta-impfung.html">morgenpost.de</a></p>
<p>Durch die Impfung schütze ich mich selbst! Wenn du geschützt sein willst, dann musst du dich auch impfen lassen! Die Impfung schützt mich vor einer Erkrankung aber nicht vor einer Ansteckung. Wenn wir weitere Lockerungen kriegen, dann werden wir uns alle einmal anstecken und durchinfizieren. Allerdinge werden nur die, die sich auch haben impfen lassen, vor Schlimmerem bewahrt werden!</p>
<p><strong>Lass dich impfen!</strong></p>
]]></content:encoded>
    </item>
    <item>
      <title>Besuch in Deutschland, steigende Inzidenzen und Blogging-Geschichten</title>
      <link>https://cbrueggenolte.de/besuch-in-deutschland-steigende-inzidenzen-und-blogging-geschichten/</link>
      <pubDate>Sun, 11 Jul 2021 18:20:16 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/besuch-in-deutschland-steigende-inzidenzen-und-blogging-geschichten/</guid>
      <description>&lt;p&gt;Es ist schon wieder Sonntag und damit Zeit für eine weitere Ausgabe meines kleinen Wochenrückblicks.&lt;/p&gt;&#xA;&lt;h2 id=&#34;besuch-in-deutschland&#34;&gt;Besuch in Deutschland&lt;/h2&gt;&#xA;&lt;p&gt;Nach einer recht anstrengenden Woche im Büro waren wir dann endlich mal wieder in Deutschland Freunde besuchen. Am Freitag haben wir mit Freunden gegrillt und ein paar alte Bekannte wiedergesehen. Einige davon nicht mehr seit wir Deutschland in Richtung Belgien verlassen hatten.&lt;/p&gt;&#xA;&lt;p&gt;Am Samstagvormittag sind wir dann einkaufen gewesen und haben uns so ein digitales Impfzertifikat aus der Apotheke geholt. Irgendwie ist das schon traurig, dass man dafür extra 230 km fahren muss und es nicht auf anderem Wege organisiert werden kann.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Es ist schon wieder Sonntag und damit Zeit für eine weitere Ausgabe meines kleinen Wochenrückblicks.</p>
<h2 id="besuch-in-deutschland">Besuch in Deutschland</h2>
<p>Nach einer recht anstrengenden Woche im Büro waren wir dann endlich mal wieder in Deutschland Freunde besuchen. Am Freitag haben wir mit Freunden gegrillt und ein paar alte Bekannte wiedergesehen. Einige davon nicht mehr seit wir Deutschland in Richtung Belgien verlassen hatten.</p>
<p>Am Samstagvormittag sind wir dann einkaufen gewesen und haben uns so ein digitales Impfzertifikat aus der Apotheke geholt. Irgendwie ist das schon traurig, dass man dafür extra 230 km fahren muss und es nicht auf anderem Wege organisiert werden kann.</p>
<p>Den Abend haben wir mit unseren Gastgebern mit einer Runde Mario Party auf der Switch ausklingen lassen. Leider habe ich nicht gewonnen und bin nur Dritter geworden. Dabei sah es Anfangs so gut aus. Aber man kann nicht immer gewinnen und muss es ja auch nicht. Hauptsache man hat Spaß und den hatten wir reichlich.</p>
<h2 id="inzidenzen-in-den-niederlanden">Inzidenzen in den Niederlanden</h2>
<p>Dashboard Corona Situation in the Netherlan</p>
<p>So schön der Ausflug auch gewesen ist, so weiß ich gerade nicht, ob es in naher Zukunft wieder welche geben wird. Die Inzidenzen hier in den Niederlanden sehen überhaupt nicht gut aus. Gestern hatten wir hier einen <a href="https://coronadashboard.government.nl/">Anstieg von über 10.000 Neuinfektionen</a>. Heute sind es schon über 9.300. Da sollte es niemanden wundern, wenn die Regierung erneut in die Kiste der Einschränkungen greift.</p>
<p>AUf <a href="https://www.government.nl/latest/news/2021/07/09/no-choice-but-to-take-summertime-measures-in-face-of-rapid-increase-in-infections">government.nl</a> schreiben sie:</p>
<blockquote>
<p>The coronavirus infection rate in the Netherlands has increased much faster than expected since society reopened almost completely on 26 June. Most infections have occurred in nightlife settings and parties with high numbers of people.</p>
</blockquote>
<h2 id="blogoldies">Blogoldies</h2>
<p>Aber genug der schlimmen Sachen. Es gibt auch schöne Sachen zu berichten. Ich habe für den <a href="https://www.offenesblog.de">offenen Blog vom Alex</a> einen Artikel geschrieben, der meine Geschichte erzählt, wie ich zum Bloggen gekommen bin. Unter dem Link <a href="https://www.offenesblog.de/2021/07/die-blogoldies-zn80-net/">Die Blogoldies: zn80.net</a> findet ihr den Artikel mit allen Details zu meiner “Blogger-Karriere” (wenn man das Karriere nennen kann :-)).</p>
<p>Schöne finde ich auch, dass Alex die Liste der Gastartikel überarbeitet hat. So habe ich erstmal erfahren, dass ich <a href="https://www.offenesblog.de/mitwirkende/carstens-gastartikel/">16 Gastartikel</a> verfasst habe. Einiges davon ist kann man heute immer noch gebrauchen.</p>
<h2 id="macbook-air">MacBook Air</h2>
<p>Das MacBook Air habe ich jetzt nicht ganz eine Woche und kann keine negativen Punkte finden. Nach der Einrichtung habe ich direkt <a href="https://brew.sh/">homebrew</a> installiert. Ohne diesen Paketmanager für macOS geht gewissermaßen gar nichts bei mir. Mithilfe von <a href="https://brew.sh/">brew</a> konnte ich dann einen großen Teil der Softwarepakete installieren.</p>
<p>Die Installation von Firefox, iTerm2, Element (Matrix Chat), Spotify, MacAppStore-CLI (mas-cli) und einigen weiteren Programm ist damit im Handumdrehen erledigt. Mit dem MacAppStore-CLI habe ich dann meinen Password Manager Bitwarden und die Desktopversion vom LanguageTool installiert.</p>
<p>Danach habe ich dann auch mal ein paar Spiele ausprobiert und bin sehr positiv überrascht. Gut, das, was der M1 leisten kann, kenne ich auch vielen Videos und Benchmarks. Allerdings ist es immer noch einmal etwas anderes, wenn man es dann doch selbst ausprobieren kann.</p>
<p>Am meisten überrascht hat mich aber die Akkulaufzeit. Du kannst einfach stundenlang schreiben, surfen, installieren, kurz was spielen, Video schauen etc. In den letzten 6 Tage habe ich gerade einmal zwei Ladezyklen gebraucht. Ich denke, dass sich durch das optimierte Laden und wenn ich alles an Software installiert habe, die Zyklen noch weniger werden.</p>
<p>Ich bin jedenfalls sehr angetan vom neuen MacBook Air und hoffe inständig, dass es genauso langen halten wird wie der Vorgänger.</p>
<h2 id="100-days-to-offload">100 Days To Offload</h2>
<p>Dieses hier ist der 99. Beitrag. Bald habe ich es geschafft. Es wird also Zeit, sich so langsam mit Beitrag 100 zu beschäftigen. Mit dem geht die Staffel 1 dann nämlich zu Ende.</p>
<p>So ganz habe ich mich ja nicht an die Regeln gehalten. Es gab auch schon mal Zeiten, an denen ich es nicht geschafft habe, alle 2-3 Tage einen Beitrag zu schreiben. Ich gelobe Besserung und hoffe, dass Staffel 2 besser wird. Aber bis dahin sind es noch ein paar Tage.</p>
<p>Vielleicht fange ich mit Staffel 2 auch 100 Tage vor Jahresende an. Mal schauen was sich da so ergibt.</p>
<h2 id="die-lieblingslinks-der-woche">Die Lieblingslinks der Woche</h2>
<p>HowTo: My Terminal &amp; Shell setup - Hyper.js + ZSH + starship. <a href="https://dev.to/netguru/howto-my-terminal-shell-setup-hyper-js-zsh-starship-2j2k">dev.to</a></p>
<p>Alternative dazu: How to Customize the zsh Prompt in the macOS Terminal <a href="https://www.makeuseof.com/customize-zsh-prompt-macos-terminal/">MakeUseOf.com</a></p>
<p><a href="https://2.flexiple.com/scale/multi-color-illustrations">Scale von Flexible</a> bietet Illustrationen für was auch immer ohne Angabe des Urhebers. Alle Dateien gibt es als SVG oder PNG. Farben lassen sich nach belieben ändern. Die nächste Präsentation kann kommen.</p>
<p>Noch etwas für auf die Ohren: <a href="https://blog.wdr.de/digitalistan/dark-pattern-wie-wir-im-netz-manipuliert-werden/">Dark Pattern - Wie wir im Netz manipuliert werden</a>. Und hier ist der Link zur <a href="https://www1.wdr.de/radio/cosmo/podcast/tech/cosmo-tech-dark-pattern-100.html">Podcast-Folge von Cosmo-Tech</a></p>
<hr>
<p>Zum Schluss möchte ich noch einen Tweet zitieren der mir in diesen Tage sehr gut gefallen hat:</p>
<p><em>Beitrag 99 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Umzug, Urlaubspläne und ein neues MacBook Air</title>
      <link>https://cbrueggenolte.de/umzug-urlaubsplaene-und-ein-neues-macbook-air/</link>
      <pubDate>Sun, 04 Jul 2021 13:44:22 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/umzug-urlaubsplaene-und-ein-neues-macbook-air/</guid>
      <description>&lt;p&gt;Es ist mal wieder Sonntag und das Wetter könnte besser sein. Doch so schlimm wie es in den vergangenen Tagen in einigen Gemeinden und Landkreisen war, war es hier bei uns glücklicherweise nicht. Wir sind von Hagel, Regen und Sturm verschont geblieben. Dennoch ist es immer noch kein richtiges Strandwetter und zum Fahrradausflug lädt der bewölkte Himmel auch nicht wirklich ein. Daher machen wir es uns noch ein wenig Zuhause gemütlich und hoffen, dass die nächsten Wochen schöner und angenehmer werden. Denn wenn ich Urlaub habe, möchte ich die Zeit schon gerne im Garten oder auf dem Rad verbringen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Es ist mal wieder Sonntag und das Wetter könnte besser sein. Doch so schlimm wie es in den vergangenen Tagen in einigen Gemeinden und Landkreisen war, war es hier bei uns glücklicherweise nicht. Wir sind von Hagel, Regen und Sturm verschont geblieben. Dennoch ist es immer noch kein richtiges Strandwetter und zum Fahrradausflug lädt der bewölkte Himmel auch nicht wirklich ein. Daher machen wir es uns noch ein wenig Zuhause gemütlich und hoffen, dass die nächsten Wochen schöner und angenehmer werden. Denn wenn ich Urlaub habe, möchte ich die Zeit schon gerne im Garten oder auf dem Rad verbringen.</p>
<h2 id="der-umzug">Der Umzug</h2>
<p>Letzte Woche, hatte ich bereite drüber geschrieben, habe ich ziemlich viel Zeit im Büro verbracht. Denn nach einem Umzug muss man sich erst einmal ein wenig zurechtfinden. Bis dann alle Netzwerkanschlüsse gepatcht und Verbindungen eingerichtet sind, vergeht auch immer noch ein wenig Zeit. Aber das hat sich mittlerweile alles schon eingespielt und wir können wieder arbeiten. Durch die ein oder andere Verzögerung allerdings, lies es sich nicht vermeiden, dass es die nächste Woche doch wieder ins Büro geht. Eigentlich wären wieder Home-Office-Wochen angesetzt. Ist vielleicht aber auch ganz gut so, wenn ich im Büro bin, kann ich noch das ein oder andere Projekt vor der Sommerpause abschließen.</p>
<h2 id="urlaub-im-garten">Urlaub im Garten</h2>
<p>Apropos Sommerpause. Bald habe ich Urlaub und damit kann ich endlich ein paar Projekten nachgehen, die ich schon lange auf dem Schirm habe. Zum einen möchte ich unser Büro auf dem Dachboden (ausgebaut) ausmisten. Es haben sich schon wieder so viele Kartons und unnütze Dinge angesammelt. Unglaublich, was man manchmal kauft und dann doch nur kurz verwendet. Drohnen, Bürostühle, diverse Tastaturen und Hardware. Darunter alte Festplatten, diverse USB-Sticks von Anno dazumal.</p>
<p>Nach dem Büro will ich das Gästezimmer entrümpeln. Dort haben wir zwei Schränke, in denen wir alle mögliche an Krimskrams aufbewahren. Ob wir all die Dinge brauchen, keine Ahnung! Doch was hebt man nicht alles auf, weil man glaubt, man könne es irgendwann noch einmal verwenden. Einen großen Teil werden wir aber weiterhin behalten, denn wer kann jetzt schon sagen, in welche Art von Wohnung wir mal ziehen werden, wenn es für uns aus den Niederlanden wieder nach Deutschland geht.</p>
<p>Wenn die Dinge im Haus erledigt sind, geht es raus in den Garten. Die Sitzmöbel benötigen noch mal einen Anstrich, die Autos müssen mal wieder gewaschen und vor allem neu versiegelt werden und die Fahrräder auf Vordermann bringen. Was ich mir schon im Frühjahr vorgenommen aber nicht umgesetzt habe: den Schuppen aufräumen!</p>
<p>Das ist auch so eine kleine Chaosbude. Werkzeug, Autowaschzeug, Kühltruhe, Getränkekühlschrank, Sitzpolster und Getränkekisten. Auch stehen doch immer noch einige Umzugskisten mit Zeug, was wir seit zwei Jahren nicht angefasst haben. Das Beste wird wohl einfach sein, alles in eine große Kiste zu packen und es zum Wertstoffhof zu bringen. Die alten Farbdosen und Reinigungsmittel brauchen wir nun wirklich nicht mehr aufzuheben.</p>
<h2 id="macbook-air-mit-apple-m1">MacBook Air mit Apple M1</h2>
<p>Neben all den handwerklichen Tätigkeiten möchte ich mich dann aber auch mit dem neuen Laptop beschäftigen. Ich habe mich endlich durchgerungen und ein neues MacBook Air mit dem Apple M1 Apple bestellt.</p>
<p>Ich habe lange gewartet und gehofft, dass zur WWDC vielleicht ein neues MacBook Pro erscheint. Das habe aber nicht nur ich, sondern auch sehr viele andere gedacht. Trotz vieler Gerüchte und Spekulationen, kam keine neue Hardware. Die Gerüchte, die aktuell durchs Netz kreisen, prognostizieren den Oktober als mögliches Releasedatum für neue Hardware. Doch so lange möchte ich jetzt auch nicht mehr warten. Ich habe ein gutes Angebot gesehen und heute Nacht zugeschlagen! Es ist jetzt ein MacBook Air mit 8 GB Speicher und 512 GB SSD geworden.</p>
<p>Ich weiß, ich weiß, ich habe davon gesprochen, dass ich keines mit 8 GB Speicher kaufen wollte und unbedingt eines mit 16 GB haben wollte. Die Erfahrungsberichte der letzten Monate jedoch zeigten, dass die M1 Chips mit sehr viel weniger RAM auskommen und so viel Power haben, dass die 16 GB wirklich nur gebraucht werden, wenn man 8K Videoschnitt machen möchte. Ich habe nicht einmal ein Gerät, welches in so hoher Auflösung aufzeichnen könnte.</p>
<p>Ich werde jetzt vom alten Laptop noch eine Sicherung machen und meine Dateien ein wenig sortieren und etwas aufräumen, sodass ich meine Daten reibungslos auf das neue Gerät umziehen kann. Dadurch das ich erst jetzt umsteige, sind schon sehr viele Programme angepasst und laufen nativ auf der Apple Silicon Architektur.</p>
<h2 id="meine-lieblingslinks-der-woche">Meine Lieblingslinks der Woche</h2>
<p>Und damit kommen wir zu den Links der Woche.</p>
<ul>
<li>Unter <a href="https://isapplesiliconready.com/">https://isapplesiliconready.com/</a> findest du eine Liste an Software, die schon für Apple Silicon bereit ist oder nicht.</li>
<li>Große Script-Sammlung für TiddlyWiki. <a href="https://kookma.github.io/TW-Scripts/">https://kookma.github.io/TW-Scripts/</a></li>
<li>Neben GrokTiddlyWiki habe ich noch <a href="https://tiddlywiki.psat.com.au/TW5NewUser.html">https://tiddlywiki.psat.com.au/TW5NewUser.html</a> gefunden. Dieses TiddlyWiki ist, auch wenn es bisher nur ein “Entwurf” ist, schon ziemlich fortgeschritten. Es gibt einiges zu entdecken welches sich für das eigene Wiki bestimmt gebrauchen lässt.</li>
<li>Für alle FireFox Nutzer gibt es dann noch Tabliss new tab add-on <a href="https://addons.mozilla.org/de/firefox/addon/tabliss/">https://addons.mozilla.org/de/firefox/addon/tabliss/</a> <em>A beautiful New Tab page with many customisable backgrounds and widgets that does not require any permissions.</em> Neue Tabs in schönem Gewand. Finde ich gut!</li>
</ul>
<p>Und damit sind wir auch schon am Ende. Ich schaue mir jetzt noch mal das Video mit den Features von <a href="https://www.youtube.com/watch?v=I3oR8wQPFxI">macOS Big Sur</a> an.</p>
<hr>
<p>Mehr interessantes Zeug findest du beim <a href="https://dn15.de/">dn15</a>, beim <a href="https://happybuddha1975.de/">happybuddha1975</a> und natürlich beim <a href="https://monstropolis.wordpress.com/">monstropolis</a>. Ich wünsche dir noch einen schönen Sonntagnachmittag oder -abend oder Montag morgen und einen guten Start in die Woche!</p>
<p><em>Beitrag 98 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Influencer, Werbekörper und Ideologie</title>
      <link>https://cbrueggenolte.de/influencer-werbekoerper-und-ideologie/</link>
      <pubDate>Mon, 21 Jun 2021 21:48:48 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/influencer-werbekoerper-und-ideologie/</guid>
      <description>&lt;p&gt;Influencer sind ja genau mein Ding. Menschen verkaufen ihre Körper an die Werbeindustrie! Auf eine derart perfide Art und Weisd as mit manchmal dabei schlecht wird. Da kommt es ganz passend, dass ich über die Buchvorstellung Woche der Beitrag zur politischen Bildung der ASTa Bonn erschienen ist.&lt;/p&gt;&#xA;&lt;p&gt;Die ASTa hat den Buchautoren, YouTuber und Podcaster &lt;a href=&#34;https://de.wikipedia.org/wiki/Wolfgang_M._Schmitt&#34;&gt;Wolfgang M. Schmitt&lt;/a&gt; eingeladen und reden mit ihm über sein neues Buch »&lt;a href=&#34;https://www.suhrkamp.de/buch/influencer-t-9783518076408&#34;&gt;Influencer - Die Ideologie der Werbekörper&lt;/a&gt;«. Ein sehr interessanter Beitrag und ein mit Sicherheit sehr interessantes Buch.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Influencer sind ja genau mein Ding. Menschen verkaufen ihre Körper an die Werbeindustrie! Auf eine derart perfide Art und Weisd as mit manchmal dabei schlecht wird. Da kommt es ganz passend, dass ich über die Buchvorstellung Woche der Beitrag zur politischen Bildung der ASTa Bonn erschienen ist.</p>
<p>Die ASTa hat den Buchautoren, YouTuber und Podcaster <a href="https://de.wikipedia.org/wiki/Wolfgang_M._Schmitt">Wolfgang M. Schmitt</a> eingeladen und reden mit ihm über sein neues Buch »<a href="https://www.suhrkamp.de/buch/influencer-t-9783518076408">Influencer - Die Ideologie der Werbekörper</a>«. Ein sehr interessanter Beitrag und ein mit Sicherheit sehr interessantes Buch.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Staatstrojaner und digitale Grundrechte</title>
      <link>https://cbrueggenolte.de/staatstrojaner-und-digitale-grundrechte/</link>
      <pubDate>Mon, 14 Jun 2021 19:11:03 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/staatstrojaner-und-digitale-grundrechte/</guid>
      <description>&lt;p&gt;Heute erschien der Newsletter von meinem Mail-Dienstleister der Wahl &lt;a href=&#34;https://mailbox.org&#34;&gt;mailbox.org&lt;/a&gt;. Im ersten Teil geht es um den &lt;strong&gt;Staatstrojaner per Grundgesetz&lt;/strong&gt;. Weil das ein sehr ernstes und wichtiges Thema ist, will ich dir den Inhalt auch nicht vorenthalten und empfehle dringend, den verlinken Artikel zu lesen! Danke.&lt;/p&gt;&#xA;&lt;p&gt;Mailbox.org schreibt:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;Staatstrojaner per Grundgesetz&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Am Donnerstag, dem 10. Juni hat der Deutsche Bundestag mit den Stimmen&#xA;der SPD, CDU und CSU den breiten Einsatz von Staatstrojanern beschlossen.&#xA;Erneut unter großem Zeitdruck, ignorierte die Koalition Kritik von&#xA;Experten und aus den eigenen Reihen und entschied sich für ein&#xA;verschärftes Gesetz, das Anbieter von Kommunikationsdiensten zwingt, die&#xA;Sicherheit und Integrität ihrer eigenen Dienste einzuschränken, um&#xA;Nachrichtendienste bei der Überwachung zu unterstützen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute erschien der Newsletter von meinem Mail-Dienstleister der Wahl <a href="https://mailbox.org">mailbox.org</a>. Im ersten Teil geht es um den <strong>Staatstrojaner per Grundgesetz</strong>. Weil das ein sehr ernstes und wichtiges Thema ist, will ich dir den Inhalt auch nicht vorenthalten und empfehle dringend, den verlinken Artikel zu lesen! Danke.</p>
<p>Mailbox.org schreibt:</p>
<blockquote>
<p><em>Staatstrojaner per Grundgesetz</em></p>
<p>Am Donnerstag, dem 10. Juni hat der Deutsche Bundestag mit den Stimmen
der SPD, CDU und CSU den breiten Einsatz von Staatstrojanern beschlossen.
Erneut unter großem Zeitdruck, ignorierte die Koalition Kritik von
Experten und aus den eigenen Reihen und entschied sich für ein
verschärftes Gesetz, das Anbieter von Kommunikationsdiensten zwingt, die
Sicherheit und Integrität ihrer eigenen Dienste einzuschränken, um
Nachrichtendienste bei der Überwachung zu unterstützen.</p>
<p>Auch wenn App-Anbieter und Mail-Dienste wie mailbox.org explizit
ausgenommen sind, untergräbt diese Gesetzgebung die Sicherheit und das
Vertrauen der Internet-Provider massiv, erklärt unser CEO Peer Heinlein.</p>
<p>Ausführlich im Blog unter:
<a href="https://mailbox.org/de/post/hektisch-durch-die-hintertuer-neues-g-10-gesetz-will-nutzer-direkter-ueberwachen">https://mailbox.org/de/post/hektisch-durch-die-hintertuer-neues-g-10-gesetz-will-nutzer-direkter-ueberwachen</a></p>
</blockquote>
<p>Den verlinkten Artikel empfehle ich dringend!</p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>Politik, Kaffeevollautomat und kleine Alltagsfluchten</title>
      <link>https://cbrueggenolte.de/politik-kaffeevollautomat-und-kleine-alltagsfluchten/</link>
      <pubDate>Sun, 06 Jun 2021 12:20:49 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/politik-kaffeevollautomat-und-kleine-alltagsfluchten/</guid>
      <description>&lt;p&gt;Wir haben Juni und das erste halbe Jahr ist fast vorbei. Mit schnellen Schritten gehen wir weiteren Lockerungen und mehr Freiheiten entgegen. Wollen wir die Daumen drücken, dass wir diesen Sommer die Pandemie in den Griff bekommen und wir den nächsten Winter nicht erneut isoliert zu Hause sitzen müssen, oder? Aber man soll nicht immer so pessimistisch denken, denn bald sind Wahlen und dann wird vieles besser werden &lt;em&gt;hust&lt;/em&gt;, &lt;em&gt;hust&lt;/em&gt; – oder auch nicht.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Wir haben Juni und das erste halbe Jahr ist fast vorbei. Mit schnellen Schritten gehen wir weiteren Lockerungen und mehr Freiheiten entgegen. Wollen wir die Daumen drücken, dass wir diesen Sommer die Pandemie in den Griff bekommen und wir den nächsten Winter nicht erneut isoliert zu Hause sitzen müssen, oder? Aber man soll nicht immer so pessimistisch denken, denn bald sind Wahlen und dann wird vieles besser werden <em>hust</em>, <em>hust</em> – oder auch nicht.</p>
<p>Im Bekanntenkreis mehren sich die Beschwerden über die Grünen und die zu Erwartenden steigenden Kraftstoffpreise. Allerdings sind es nicht die Grünen allein, die einen solchen Anstieg zu verantworten haben. War es doch die bisherige Regierung aus CDU/CSU und der SPD, die die CO2-Steuern erhöht und damit einen ersten Anstieg der Preise zu verantworten haben. Die Grünen machen also nur da weiter wo aufgehört wurde. Aber auch wenn es die Grünen mit Annalena Baerbock nicht auf den <em>Thron</em> schaffen, <a href="https://www.volksverpetzer.de/analyse/spritpreis-klimaheuchler/">so werden die Preise für Diesel und Benzin steigen</a>. Denn auch ein Armin Laschet kann die geforderten Klimaziele ohne eine Erhöhung nicht erreichen. Bevor wir einen alten Mann wählen, den eigentlich niemand so richtig will, sollten wir uns vielleicht doch für etwas frischen Wind aus Hannover entscheiden, oder?</p>
<p>Doch genug von Politik und Co., konzentrieren wir uns lieber auf die wirklich wichtigen Dinge im Leben, wie zum Beispiel der Reparatur des Kaffeevollautomaten.</p>
<p>Der Vollautomat hat jetzt, nachdem er vor gut 12 Monaten zur Inspektion war, einen Fehler im Dampfdüsensystem. So steht es zumindest auf dem Bildschirm. Die Dampfdüse wird von zwei Motoren hin und herbewegt. Auf und ab und vor und zurück. Das Problem ist, dass die Dampfdüse ohne Hilfe nicht mehr auf- oder abfährt. Mit leichtem Druck oder Zug geht es noch, allerdings setzt sie dann unten auf, was ein lautes Rattern zur Folge hat. Ob das jetzt ein defektes Zahnrad oder ein defekter Sensor ist, konnte ich nicht feststellen. Die Zahnstange sieht noch gut aus. Zumindest so weit ich das erkennen konnte. Leider kann ich das nicht selber beheben und so verwenden wir erst einmal nur noch die Funktionen für normalen Kaffee. Eine Aufgabe für die kommende Woche ist also, einen Reparaturladen für Kaffeevollautomaten finden.</p>
<h2 id="meine-lieblingslinks-der-woche">Meine Lieblingslinks der Woche</h2>
<ol>
<li>Wer gerne mit dem Terminal arbeitet und ein wenig mehr Farbe in die ganze Angelegenheit bringen will, dem möchte ich die <a href="https://gitlab.com/dwt1/shell-color-scripts">Color-Shell-Script</a>-Sammlung von <a href="https://distro.tube/">Derek Tyler</a> empfehlen. Auch wenn die Installation für Arch-Linux angepasst ist, so sollte es nicht so schwer sein, dass <code>colorscript.sh</code> Script an seine Bedürfnisse anzupassen.</li>
<li>Noch ein kleines Programm für das Terminal: <a href="https://github.com/chubin/cheat.sh">cheat.sh</a> – <em>Unified access to the best community driven cheat sheets repositories of the world.</em> Mit diesem lässt sich schnell und unkompliziert Hilfe zu den gängigsten Programmen abrufen. Schöne Alternative zum Browser.</li>
<li>Das Terminal ist vielseitig und manchmal kann man Dinge viel schneller erledigen als mit Programmen, die eine grafische Oberfläche haben. Das Terminal muss dabei nicht hässlich sein und zusätzlich zu den netten <em>Color-Scripts</em> gibt es tolle Prompts die einem das Leben zusätzlichen zum Aussehen noch mehr erleichtern. Ausprobiert habe ich <a href="https://starship.rs/">Starship.rs</a> und <a href="https://github.com/b-ryan/powerline-shell">Powerline</a>. Beides sind Prompts für dein Terminal unter Linux, beide sind Plattform übergreifend auch für die Powershell-Konsole unter Windows verfügbar. Bei Powerline kannst du dich entweder für die <a href="https://github.com/b-ryan/powerline-shell">Python</a> oder die <a href="https://github.com/justjanne/powerline-go">Golang</a> Variante entscheiden. Ich habe die Golang-Variante via <a href="https://formulae.brew.sh/formula/powerline-go#default">homebrew</a> installiert. Aktuell habe ich noch beide im Einsatz, da ich mich noch nicht so richtig entscheiden kann. Powerline ist schön, aber nimmt auch viel Platz ein. Starship hat von vornherein zwei Zeilen, was bei langen Verzeichnissen schon mal nicht schlecht ist.</li>
<li>Kaum zu glauben, aber es ist wirklich schon ein Jahr vorbei und die <a href="https://bigbrotherawards.de/">BigBrotherAwards 2021</a> stehen schon wieder vor der Tür. Am 11. Juni ab 18:00 Uhr kannst du unter <a href="https://bigbrotherawards.de/stream">https://bigbrotherawards.de/stream</a> live zuschauen.</li>
</ol>
<hr>
<p>Ich hoffe, es hat dir gefallen und vielleicht freust du dich genauso wie ich auf den Start der WWDC. Lange genug gespart habe ich schließlich und dem eventuellen Kauf eines neuen MacBooks steht eigentlich nichts mehr im Wege. Es sei denn, hier geht neben der Kaffeemaschine noch irgendetwas kaputt ;-).</p>
<p>Mehr interessantes Zeug findest du beim <a href="https://dn15.de/links-am-sonntag-ausgabe-10/">dn15</a>der interessante Bildschirme gefunden hat, bei <a href="https://happybuddha1975.de/22-kw-2021/">happybuddha1975</a> der ausführliche Gespräche mit einer KI führt und natürlich beim <a href="https://monstropolis.wordpress.com/2021/06/04/krims-krams-207/">monstropolis</a>, der wie immer sehr ausführliche Listen an tollen Themen hat. Ich wünsche dir noch einen schönen Sonntagnachmittag oder -abend oder Montag morgen und einen guten Start in die Woche!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Geimpft, vernetzt und ein Blick nach vorn</title>
      <link>https://cbrueggenolte.de/geimpft-vernetzt-und-ein-blick-nach-vorn/</link>
      <pubDate>Sun, 30 May 2021 17:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/geimpft-vernetzt-und-ein-blick-nach-vorn/</guid>
      <description>&lt;p&gt;Es ist die 21. Woche und endlich dürfen wir uns auf besser Wetter freuen. Die Sonne hat die vielen Regenwolken verdrängt und bei blauem Himmel erfreuen wir uns der sommerlichen Temperaturen.&lt;/p&gt;&#xA;&lt;p&gt;Da ist es gut, dass wir eine Bundesregierung haben, die sich jetzt - es stehen schließlich Wahlen an - mehr um den Klimaschutz bemühen will. Karl Lauterbach hat herausgefunden, dass ein paar seiner Honorare nicht rechtzeitig dem Bundestag gemeldet wurden und hat dieses jetzt &lt;a href=&#34;https://www.tagesschau.de/inland/lauterbach-honorare-101.html&#34;&gt;nachgeholt&lt;/a&gt;. Einen Teil davon soll er sogar gespendet habe. Kann man jetzt so und so sehen. Ich halte es für gut, besser spät einen Fehler einzugestehen und sich zu entschuldigen, als wenn man es versucht zu vertuschen und es doch herauskommt.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Es ist die 21. Woche und endlich dürfen wir uns auf besser Wetter freuen. Die Sonne hat die vielen Regenwolken verdrängt und bei blauem Himmel erfreuen wir uns der sommerlichen Temperaturen.</p>
<p>Da ist es gut, dass wir eine Bundesregierung haben, die sich jetzt - es stehen schließlich Wahlen an - mehr um den Klimaschutz bemühen will. Karl Lauterbach hat herausgefunden, dass ein paar seiner Honorare nicht rechtzeitig dem Bundestag gemeldet wurden und hat dieses jetzt <a href="https://www.tagesschau.de/inland/lauterbach-honorare-101.html">nachgeholt</a>. Einen Teil davon soll er sogar gespendet habe. Kann man jetzt so und so sehen. Ich halte es für gut, besser spät einen Fehler einzugestehen und sich zu entschuldigen, als wenn man es versucht zu vertuschen und es doch herauskommt.</p>
<p>Außerdem sind jetzt mehr als 14 Tage vergangen und somit dürfen wir uns nun offiziell als vollständig Geimpfte bezeichnen. Ob wir mit Johnson&amp;Johnson durch sind, wird sich in den nächsten Monaten zeigen. Denke aber, dass wir nicht noch einmal hin müssen.</p>
<h2 id="abzocken-wie-die-mafia---nur-leichter">Abzocken wie die Mafia - nur leichter</h2>
<p>Apropos Corona-Impfung. Ihr habt bestimmt mitbekommen, wie sich <a href="https://www.tagesschau.de/investigativ/wdr/corona-schnelltest-zentren-103.html">eine Bochumer Firma unrechtmäßig mithilfe vieler Coronatests praktisch dumm und dämlich verdient hat</a>. Abzocke hoch zehn und ich hoffe, dass die Verantwortlichen dafür lange hinter Schloss und Riegel kommen. Auch wenn in der Verordnung steht, dass die Daten der Getesteten nicht erfasst und weitergeleitet werden würden, so sollte man doch davon ausgehen, dass bei 18 Euro pro Test mal einer genauer hinschaut. Es wundert auch nicht, wenn solche Anbieter (ist jetzt nicht derselbe, aber egal) keine Ahnung vom Datenschutz haben und <a href="https://www.spiegel.de/netzwelt/web/massive-datenschutzprobleme-bei-coronavirus-tests-a-9d2df0ec-a076-4e65-bac9-540cf6e84898">alles einfach so offen im Netz steht</a>. Da kannst du nur mit dem Kopf schütteln.</p>
<p>Aber kommen wir zu den schönen Dingen der Woche :-)</p>
<h2 id="videokonferenz-mit-der-clique">Videokonferenz mit der Clique</h2>
<p>Wir haben es tatsächlich am Freitag geschafft, nach 18 Monaten Pandemie, ein Online-Stammtisch-Cliquen-Treffen zu veranstalten. Auch wenn ich dafür Zoom installieren musste, war es wirklich, wirklich schön! Ganz ehrlich. So lange haben wir viele aus der Clique nicht gesehen und dann einen Großteil mal wieder live und in Farbe zu Gesicht zu bekommen war wirklich toll. Man merkt aber deutlich, dass in vielen Rechnern wirklich schlechte Webcams verbaut sind. Weil dem so ist, habe ich mein iPhone 11 als Webcam benutzt und glaube schon, dass wir gut ausgesehen haben. Immerhin wurde gefragt, ob unser Hintergrund ein Foto sei. Scheint dann ja von der Bildqualität nicht so schlecht gewesen zu sein.</p>
<p>Angenehm war auch, dass wir nicht nur über Corona gesprochen haben. Der ein oder anderen war zwar davon betroffen, aber im großen Ganzen haben wir es vermeiden können. Interessant zu hören war, dass in Pandemiezeiten es vor allem die Lehrer:innen und Menschen in Betreuungseinrichten wirklich schwer getroffen hat. Ich muss schon zugeben, dass mich einige der Erzählungen etwas schockiert haben. Gehört man als Softwareentwickler doch eher zu den privilegierteren Arbeitnehmern, wenn es ums Home-Office geht. Nichtsdestotrotz war es ein toller Abend und wir haben viel gelacht. Einer will noch einmal heiraten und in ein neues Gebäude mit seiner Tanzschule ziehen. Einige der Lehrer:innen sind froh, dass der Unterricht wieder losgeht und man nicht mehr rund um die Uhr vor dem Bildschirm sitzen muss. Und wiederum ein anderer Teil freut sich, dass die Chorproben nicht mehr online stattfinden müssen. Frage ich mich doch die ganze Zeit, ob das mit dem Ton immer so gut geklappt hat :-).</p>
<h2 id="meine-lieblingslinks-der-woche">Meine Lieblingslinks der Woche</h2>
<ol>
<li>Apple hat einen neuen Werbespot herausgebracht. <a href="https://www.youtube.com/watch?v=8w4qPUSG17Y">Privacy on iPhone | Tracked</a>. Einfach Mega! Anbei die Empfehlung zu einem Artikel von <a href="https://daringfireball.net/2020/09/online_privacy_real_world_privacy">John Gruber Online Privacy Should Be Modeled on Real-World Privacy</a></li>
<li>Ausprobiert: <a href="https://github.com/go-shiori/shiori">Shiori</a>. Shiori ist ein schön gemachter Bookmark-Manager. Geschrieben in Go ist es schnell, komfortabel und funktioniert ähnlich wie <a href="https://getpocket.com/">Pocket</a> oder <a href="https://wallabag.org/">Wallabag</a>. Zum Betrieb braucht man keinen Webserver - der ist schon eingebaut, die Daten verbleiben in einer lokalen SQLite-Datenbank, und man kann die Software ohne Probleme von einem USB-Stick starten und verwenden. Hinzu kommt ein Kommandozeilen-Interface zum Hinzufügen von Lesezeichen und zum Starten des eingebauten Webservers. Das Webinterface sieht gut aus und funktioniert auf Desktop und Smartphone gleichermaßen gut.</li>
<li>Ich will mich hier mal selber empfehlen. Für alle Konsolen-Fans habe ich ein altes Wrapper-Skript für <a href="https://wttr.in">https://wttr.in</a> etwas angepasst und ein paar kleinere Fehler behoben. Das Skript lässt sich hier herunterladen: <a href="https://github.com/cblte/bash-script-wttr">https://github.com/cblte/bash-script-wttr</a></li>
</ol>
<hr>
<p>Ich hoffe, es hat euch gefallen. Mal schauen, was nächste Woche alles so ansteht. Freue ich mich jetzt schon ein wenig auf die <a href="https://developer.apple.com/wwdc21/">WWDC 2021</a> die am 7. Juni beginnt. Die Zeichen stehen gut, dass es neue MacBooks geben wird.</p>
<p>Mehr interessantes Zeug findet ihr bei <a href="https://dn15.de/links-am-sonntag-ausgabe-9/">dn15</a>, <a href="https://happybuddha1975.de/21-kw-2021/">happybuddha1975</a> oder <a href="https://monstropolis.wordpress.com/2021/05/28/krims-krams-204/">monstropolis</a>. Damit noch einen schönen Sonntagabend oder Montag morgen und einen guten Start in die Woche!</p>
<p><em>Beitrag 92 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Von Pop!_OS zu Manjaro</title>
      <link>https://cbrueggenolte.de/von-pop-os-zu-manjaro/</link>
      <pubDate>Sun, 23 May 2021 10:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/von-pop-os-zu-manjaro/</guid>
      <description>&lt;p&gt;Anfang Mai hatte ich über &lt;a href=&#34;https://zn80.net/2021/05/hallo-pop-os/&#34;&gt;Pop!_OS&lt;/a&gt; geschrieben und wie toll ich doch das System finde. Doch nach ein paar Tagen hat sich das System mehr und mehr ins Abseits befördert. Der Sound stockte oder war verzerrt, ständig wechselte das Ausgabegerät. Auch nahmen die Systemabstürze wieder zu und der Fix schien keine Abhilfe gebracht zu haben. Daher blieb mir nur das System zu wechseln.&lt;/p&gt;&#xA;&lt;p&gt;Da die 20.04 LTS Version für mich nicht funktioniert hat, habe ich die Version 20.10 installiert. Doch auch hier waren Soundprobleme gang und gäbe und ließen sich nicht beheben, egal was ich versucht habe. Nach drei Tagen Forum lesen, hin und her konfigurieren und ausprobieren von verschiedenen Einstellungen habe ich aufgegeben und mich nach anderen Distributionen umgeschaut.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Anfang Mai hatte ich über <a href="https://zn80.net/2021/05/hallo-pop-os/">Pop!_OS</a> geschrieben und wie toll ich doch das System finde. Doch nach ein paar Tagen hat sich das System mehr und mehr ins Abseits befördert. Der Sound stockte oder war verzerrt, ständig wechselte das Ausgabegerät. Auch nahmen die Systemabstürze wieder zu und der Fix schien keine Abhilfe gebracht zu haben. Daher blieb mir nur das System zu wechseln.</p>
<p>Da die 20.04 LTS Version für mich nicht funktioniert hat, habe ich die Version 20.10 installiert. Doch auch hier waren Soundprobleme gang und gäbe und ließen sich nicht beheben, egal was ich versucht habe. Nach drei Tagen Forum lesen, hin und her konfigurieren und ausprobieren von verschiedenen Einstellungen habe ich aufgegeben und mich nach anderen Distributionen umgeschaut.</p>
<p>Anstelle von Ubuntu basierten Distributionen habe ich mich dann in der Arch-Linux Ecke umgeschaut. <a href="https://manjaro.org/">Manjaro</a>, <a href="https://endeavouros.com/">EndeavorOS</a>, <a href="https://garudalinux.org/">Garuda Linux</a>, <a href="https://arcolinux.com/">Arco Linux</a>, und <a href="https://distrowatch.com/search.php?ostype=All&amp;category=All&amp;origin=All&amp;basedon=Arch&amp;notbasedon=None&amp;desktop=All&amp;architecture=All&amp;package=All&amp;rolling=All&amp;isosize=All&amp;netinstall=All&amp;language=All&amp;defaultinit=All&amp;status=Active#simple">andere</a>.</p>
<p>EndeavorOS konnte ich weder in einer VM noch vom USB Stick starten. Garuda sieht schön aus, ist mir aber irgendwie doch zu bunt. Arco Linux funktioniert. Abgesehen von der Webseite ist es eine wirklich gelungene Arch-Distribution, sofern ich das mit meinem Wissensstand beurteilen kann. Es gibt haufenweise vorgefertigte Distributionen für alle möglichen Window-Manager und Desktop-Umgebungen. Damit läst sich jeder Desktop vorab ausprobieren und erkunden. Der Installer Calamares ist gut durchdacht und ermöglicht es, eine genau auf den Nutzer zugeschnittene Installation durchzuführen.</p>
<p>Letztendlich bin ich aber doch bei <a href="https://manjaro.org/">Manjaro</a> geblieben. In der XFCE-Edition ist die Basiskonfiguration gut und durchdacht. Es gibt nicht besonders viel, was man noch einstellen müsste. Natürlich muss man noch ein paar Programme installieren, aber wie gesagt, die Grundkonfiguration mit den proprietären Treiber für NVIDIA ist gut und funktioniert. Vorallem aber habe ich keine Soundprobleme mehr!</p>
<p>Wenn du auch Linux ausprobieren willst, dann lad dir einfach ein ISO herunter und packe es in eine virtuelle Maschine oder mit <a href="https://www.balena.io/etcher/">etcher</a> auf einen USB Stick. Man kann nichts kaputt machen und in Ruhe ausprobieren. Viel Erfolg!</p>
<h2 id="meine-lieblinkslinks-der-woche">Meine Lieblinkslinks der Woche</h2>
<ol>
<li>Im Laufe der Woche, während ich von einer Distribution zur nächste gesprungen bin, bin ich auf mehrere gute YouTube Kanäle gestoßen. Diese haben mir sehr geholfen, mein System einzurichten. Zum einen hätten wir den <a href="https://www.youtube.com/channel/UCVls1GmFKf6WlTraIb_IaJg">DistroTube Youtube</a>/<a href="https://odysee.com/@DistroTube:2">Odysee Channel</a> von Derek Tayler. Zu fast jedem Problem auf das ich gestoßen bin hat er ein Video gemacht.</li>
<li>Den zweiten Kanal den ich intensiv konsumiert habe ist der von <a href="https://www.youtube.com/c/TheLinuxCast/about">The Linux Cast</a>. Auch hier gibt es zu fast jedem Problem ein Video und viele weitere wenn man einfach mal nur so etwas neues entdecken will.</li>
<li>Die dritte Empfehlung geht raus für den <a href="https://www.youtube.com/c/TechHutHD/about">TechHut Kanal</a>. Neben den vielen Videos gibt es auch einen Blog <a href="https://techhut.tv">techut.tv</a> den man im RSS-Reader abonnieren kann um kein Videos zu verpassen.</li>
<li><a href="https://odysee.com/">Odysee</a> ist eine alternative Video-Platform. Auf dieser finden sich auch sehr viele Videos von Youtube und mehr. Allerdings ohne Werbung und ohne dieses nervige Pop-up, sich doch endlich mal bei YouTube-Musik anzumelden.</li>
</ol>
<h2 id="medien-empfehlung-der-woche">Medien-Empfehlung der Woche</h2>
<p><a href="https://www.netflix.com/de/title/80013941">Die Pinguine aus Madagaskar</a> ist ein toller Film für Groß und Klein. Ich habe sehr gelacht!</p>
<p>Und für die Ohren habe ich die Folge <a href="https://pca.st/luzsl4sw"><em>Click and Destroy - Die Macht der Cyberkriminellen (PocketCasts)</em></a> von <a href="https://www.hr2.de/programm/der-tag/index.html">hr2 kultur - Der Tag</a></p>
<blockquote>
<p>Panik-Käufe an den Tankstellen in den USA. Lieferengpässe bei Benzin. Ein Präsident, der die Nation zur Besonnenheit aufruft. Und das alles nur wegen des erfolgreichen Angriffs auf die Computersysteme eines einzigen großen Pipeline-Betreibers in den Vereinigten Staaten.</p>
</blockquote>
<p>Da kann man mal sehen, wie angreifbar wir sind und wie schnell man eine Nation in die Bedrouille bringen kann. Im Beitrag werden weitere Fälle besprochen und Hintergrundinformationen veröffentlicht.</p>
<p>Mir stellt sich dabei immer die Frage: Wie verwundbar sind wir und was können wir dagegen tun?</p>
<p>Links: <a href="https://pca.st/luzsl4sw">PocketCasts</a> / <a href="https://mp3podcasthr-a.akamaihd.net/mp3/podcast/derTag/derTag%5c_20210517%5c_88511132.mp3">MP3-Direkt-Link</a></p>
<hr>
<p>So, und das war es auch schon wieder für diese Woche. ich wünsche dir noch ein schönes Pfingstwochenende. Hoffen wir mal, dass wir nächste Woche besseres Wetter bekommen. Bisher sieht es nicht so nett aus <a href="https://de.wttr.in/Den&#43;Haag&#43;Netherlands?F">wttr.in</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>WhatsApp-AGB und der Abschied vom Datenhandel</title>
      <link>https://cbrueggenolte.de/whatsapp-agb-und-der-abschied-vom-datenhandel/</link>
      <pubDate>Thu, 13 May 2021 15:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/whatsapp-agb-und-der-abschied-vom-datenhandel/</guid>
      <description>&lt;p&gt;In zwei Tagen ist es soweit! In zwei Tagen werden die &lt;a href=&#34;https://www.zdf.de/nachrichten/digitales/whatsapp-neue-agbs-dsgvo-100.html&#34;&gt;heiß&lt;/a&gt; &lt;a href=&#34;https://www.faz.net/aktuell/wirtschaft/digitec/neue-whatsapp-agb-erlauben-teilen-von-daten-mit-facebook-17133680.html&#34;&gt;diskutierten&lt;/a&gt; AGB von WhatsApp aktiv. Im Januar noch, wurden diese angeprangert und es gab einen regelrechten Aufschrei, woraufhin WhatsApp, oder eher Facebook, die Einführung der neuen AGB erst einmal ausgesetzt hatte.&lt;/p&gt;&#xA;&lt;p&gt;Ab dem 15. Mai jedoch wird es ernst. Denn ab dann gelten die neuen AGB nun wirklich und du solltest dir wirklich überlegen, ob du dem zustimmen willst, oder eher nicht. Die Mitarbeiter von &lt;a href=&#34;https://threema.ch/de/blog/posts/warum-threema-statt-whatsapp&#34;&gt;Threema&lt;/a&gt; schreiben dazu auf ihrem Blog:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In zwei Tagen ist es soweit! In zwei Tagen werden die <a href="https://www.zdf.de/nachrichten/digitales/whatsapp-neue-agbs-dsgvo-100.html">heiß</a> <a href="https://www.faz.net/aktuell/wirtschaft/digitec/neue-whatsapp-agb-erlauben-teilen-von-daten-mit-facebook-17133680.html">diskutierten</a> AGB von WhatsApp aktiv. Im Januar noch, wurden diese angeprangert und es gab einen regelrechten Aufschrei, woraufhin WhatsApp, oder eher Facebook, die Einführung der neuen AGB erst einmal ausgesetzt hatte.</p>
<p>Ab dem 15. Mai jedoch wird es ernst. Denn ab dann gelten die neuen AGB nun wirklich und du solltest dir wirklich überlegen, ob du dem zustimmen willst, oder eher nicht. Die Mitarbeiter von <a href="https://threema.ch/de/blog/posts/warum-threema-statt-whatsapp">Threema</a> schreiben dazu auf ihrem Blog:</p>
<blockquote>
<p>Am 15. Mai wird WhatsApp seine neuen Nutzungsbedingungen durchsetzen. Die Änderungen sind auf breite Ablehnung gestossen und haben neben einer Welle der Entrüstung auch eine neue Grundsatzdebatte über Datenschutz bei Messaging-Diensten ausgelöst.</p>
</blockquote>
<p>Aber die Hoffnung ist noch nicht ganz begraben, denn es gibt immer noch Widerstand seitens einiger Datenschutzbeauftragter:</p>
<p><a href="https://blog.wdr.de/digitalistan/whatsapp-draengelt-was-jetzt-passieren-muesste/">Jörg Schieb</a> für Digitalistan (WDR):</p>
<blockquote>
<p>Respekt an Johannes Caspar. Der Hamburgische Datenschutzbeauftragte hat jetzt eine Anordnung gegen Facebook erlassen. In dieser Anordnung wird es Facebook untersagt, “personenbezogene Daten von Whatsapp zu verarbeiten, soweit dies zu eigenen Zwecken erfolgt”. Gemeint ist damit: Schluss mit dem ungenierten Ausschlachten von Nutzerdaten. “Der sofortige Vollzug wurde angeordnet.”</p>
</blockquote>
<p>Es ist schön, dass sich wenigstens einer darum kümmert. Vom <a href="https://www.ldi.nrw.de/">LDI NRW</a> kann man das nicht erwarten. Dort gibt es seit dem 1. Juli 2020 niemanden offizielles mehr, der sich <em>Landesbeauftragte für Datenschutz und Informationsfreit</em> nennt. Frau Block ist nämlich im Ruhestand und die aktuelle Regierung ist wohl zu beschäftigt mit Corona. Da kann man das mit dem Datenschutz schon mal schleifen lassen, oder wie?</p>
<p>Du willst auch wechseln? Gute Entscheidung! Informationen wie das geht findet du bei <a href="https://digitalcourage.de/suche?keys=whatsapp">Digitalcourage</a> und auf dem <a href="https://www.kuketz-blog.de/datenschutzfreundliche-und-sichere-whatsapp-alternativen/">Blog von Mike Kuketz</a>.</p>
<p>Ich habe im Januar den Schritt vollzogen und mein WhatsApp-Account gelöscht und die App gelöscht. Nur löschen hilft nicht. Schwenke um auf <a href="https://threema.id/2s96rxbj">Threema</a>, <a href="https://www.signal.org/de/">Signal</a> oder <a href="https://matrix.org/">Matrix</a>. Alles drei gute Dienste und viel datenschutzfreundlicher als WhatsApp und Facebook es je sein werden. Für einen Teil der Familie oder Freunde nutze ich iMessage oder die gute alte Email. Übrigens, wie <a href="https://dn15.de/goodbye-jabber-xmpp/">John</a> so schön geschrieben hat: E-Mail ist nicht tot.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Neuer Arbeitsrechner und Linux-Experimente</title>
      <link>https://cbrueggenolte.de/neuer-arbeitsrechner-und-linux-experimente/</link>
      <pubDate>Sun, 09 May 2021 02:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/neuer-arbeitsrechner-und-linux-experimente/</guid>
      <description>&lt;p&gt;Hallo und willkommen zu einer neuen Wochenausgabe von “Was Bisher Geschah”.&lt;/p&gt;&#xA;&lt;p&gt;Das aufregendste Ereignis diese Woche war, dass ich einen neuen Arbeitslaptop erhalten habe. Also, eigentlich habe ich zwei Geräte bekommen. Das erste Gerät hat nur Ärger gemacht. Abstürze, &lt;a href=&#34;https://de.wikipedia.org/wiki/Bluescreen_%28Windows%29&#34;&gt;BlueScreen-of-Death&lt;/a&gt;, Sound- und Tastatur-Probleme. Nach dem dritten Ticket hat man sich dann meiner erbarmt und mir ein anderes Gerät gegeben. Das ist zwar nicht die aktuelle Generation, hat auch seine Probleme, aber immerhin besser als das schlecht konfigurierte Teil vorher.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hallo und willkommen zu einer neuen Wochenausgabe von “Was Bisher Geschah”.</p>
<p>Das aufregendste Ereignis diese Woche war, dass ich einen neuen Arbeitslaptop erhalten habe. Also, eigentlich habe ich zwei Geräte bekommen. Das erste Gerät hat nur Ärger gemacht. Abstürze, <a href="https://de.wikipedia.org/wiki/Bluescreen_%28Windows%29">BlueScreen-of-Death</a>, Sound- und Tastatur-Probleme. Nach dem dritten Ticket hat man sich dann meiner erbarmt und mir ein anderes Gerät gegeben. Das ist zwar nicht die aktuelle Generation, hat auch seine Probleme, aber immerhin besser als das schlecht konfigurierte Teil vorher.</p>
<p>Bisher habe ich keine Probleme. Sound funktioniert und keine zusätzlichen Effekte. Was unter anderem daran liegen könnte, dass auf diesem Geräte das Konfigurationsprogramm für die Soundkarte installiert ist. Tastatur klappt auch und bisher keine Aussetzer. Einen BSoD habe ich während der erneuten Einrichtung auch nicht gehabt. Daumen drücken, dass alles gut funktioniert.</p>
<p>Eines macht mir dennoch ein wenig Sorgen. Arbeitskollegen haben von sich aufblähenden Batterien berichtet. Hoffen wir mal, das ich davon verschont bleibe. In meinem privaten MacBook Air ist die Batterie nun etwas mehr als acht Jahre alt und verrichtet einwandfrei ihre Arbeit.</p>
<h2 id="linux-pop_os">Linux Pop!_OS</h2>
<p><a href="https://zn80.net/2021/05/hallo-pop-os/">Anfange der Woche</a> hatte ich ja schon geschrieben, dass ich mich mal wieder mit einer Linux-Installation auseinandergesetzt habe. Nach der anfänglichen Euphorie, bin ich allerdings auf einige Probleme gestoßen, die ich so nicht behoben bekommen habe.</p>
<p>Unter anderem ist es vorgekommen, dass das System aus unerfindlichen Gründen einfach einfriert. Entweder im Brave-Browser, oder in VSCodium. Wobei der Brave-Browser das System komplett lahmgelegt hat und ich nur durch Aus- und Einschalten weiterarbeiten konnte.</p>
<p>Nach viel herumprobieren und konfigurieren, habe ich dann zum Test die <a href="https://pop.system76.com/">20.10 NVIDIA</a> installiert. Oh Wunder, oh Wunder! Bisher hatte ich keinen Absturz und eingefroren ist es auch nicht. Also auch hier: Daumen drücken!</p>
<h2 id="zocken-unter-linux-mit-steam-und-lutris">Zocken unter Linux mit Steam und Lutris</h2>
<p>Was ich auch ausprobiert habe, ist dass Spielen unter Linux. Hier kann man sich im Pop!_Shop Steam und Lutris installieren.</p>
<p>Steam macht es einem sehr einfach unter Linux. Nach der Anmeldung kann man seine Spielbibliothek durchforsten und installieren, was unter Linux nativ zur Verfügung steht. Durch einen Klick auf den kleinen Tux in der Suchleiste lässt sich nach kompatiblen Linux Spielen filtern.</p>
<p>Für alle Spiele, die nicht nativ unter Linux laufen, bietet Steam die Proton-Umgebung an. Das ist Steams Version von Wine und ermöglicht es, Windowsprogramme und Spiele unter Linux zu starten. Ohne zu übertreiben, ich bin wirklich überrascht wie gut und transparent das funktioniert.</p>
<p>Unter <a href="https://www.protondb.com/">protondb.com</a> kannst du nachschauen, ob dein Spiel funktioniert und ob es Probleme gab und noch gibt. Dazu gibt es viele Reviews mit Tipps und Tricks.</p>
<p><a href="https://lutris.net/">Lutris</a> hingegen ist eine Open-Gaming-Plattform auf der man viele freie Spiele, aber auch <a href="https://www.gog.com/">Good Old Games</a>, <a href="https://www.humblebundle.com/">Humble Bundle</a>, Steam, Epic Games Store und Origin findet. Zum Ausprobieren habe ich mir den <a href="https://www.epicgames.com/">Epic Games Store</a> heruntergeladen und dann im Epic Games Store das neue kostenlose Spiel <a href="https://www.epicgames.com/store/de/p/pine">Pine</a>. Pine und auch die anderen Spiele funktionieren wunderbar und bisher ohne Probleme. Schön wäre natürlich, wenn es die Spiele auch nativ auf Linux schaffen würden, aber so ist es bisher ein guter Kompromiss.</p>
<h2 id="was-kommt">Was kommt</h2>
<p>Nächste Woche habe ich ein paar Tage frei und so wie das Wetter aussieht, haben wir die Chance den Garten auf Vordermann zu bringen. Blumen bestellen, mit dem Hochdruckreiniger ordentlich durchwischen, die Gartenmöbel und den Sonnenschirm aufstellen.</p>
<p>Und dann? Dann endlich wieder grillen und ein kaltes Bier im Garten unter freiem Himmel trinken! Vorausgesetzt es regnet oder stürmt mal gerade nicht.</p>
<p>Einen schönen Start in die Woche!</p>
<p>Noch nicht genug? Dann schau doch mal bei <a href="https://monstropolis.wordpress.com/">Monstropolis</a>, <a href="https://dn15.de/">dn15</a> oder <a href="https://happybuddha1975.de/">HappyBuddha</a> vorbei. Viel Spaß!</p>
<p><em>Beitrag 87 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Pop!_OS und rätselhafte Systemabstürze</title>
      <link>https://cbrueggenolte.de/pop-os-und-raetselhafte-systemabstuerze/</link>
      <pubDate>Thu, 06 May 2021 20:58:44 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/pop-os-und-raetselhafte-systemabstuerze/</guid>
      <description>&lt;p&gt;Ich finde Pop!_OS immer noch gut 🙂, doch habe ich seit gestern leider sporadischen und zufälligen Abstürzen zu kämpfen. Wenn ich zum Beispiel den Brave-Browser starte, dauert es keine 60 Sekunden, bis das System komplett eingefroren ist. In VSCodium ist das System zwar auch ab und an kurz eingefroren, allerdings nur für ein paar Sekunden. Auf der Suche nach einer Lösung für mein Problem bin ich leider nirgends fündig geworden.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich finde Pop!_OS immer noch gut 🙂, doch habe ich seit gestern leider sporadischen und zufälligen Abstürzen zu kämpfen. Wenn ich zum Beispiel den Brave-Browser starte, dauert es keine 60 Sekunden, bis das System komplett eingefroren ist. In VSCodium ist das System zwar auch ab und an kurz eingefroren, allerdings nur für ein paar Sekunden. Auf der Suche nach einer Lösung für mein Problem bin ich leider nirgends fündig geworden.</p>
<p>Im Github.com_Repository von System76 zu Pop!_OS gibt es den Issue <a href="https://github.com/pop-os/pop/issues/1172">System Eventually Freezes Completely · Issue #1172 · pop-os/pop</a>, mit sehr vielen Kommentaren. Keiner der Hinweise hat bisher zur Lösung meines Problems geführt. Auf Reddit brauche ich mehr zu suchen. Dort gibt es viele Threads, die das Problem beschreiben, aber in keinem habe ich eine Lösung oder auch nur einen Hinweis gefunden, dass das Problem zu beheben scheint. Kann aber auch daran liegen, dass ich mit dem Layout von Reddit nicht zurechtkomme.</p>
<p>Anyway! Heute gab es ein System-Update von <a href="https://system76.com">System76</a> gegeben. Doch auch diese Updates haben vorerst keine Abhilfe gebracht, denn während ich diesen Beitrag schreibe, hat sich das System auch gleich noch mal verabschiedet 😤. Allerdings erst, nachdem ich versucht habe die Fenster an eine bestimmte Position zu schieben.</p>
<p>Erst habe ich gedacht, die Hardwarebeschleunigung im Firefox wäre das Problem. Scheint aber nicht so zu sein. Nachdem ich dann aber im Matrix-Kanal von Pop!_OS nachgefragt habe, habe ich folgenden Tipp erhalten:</p>
<blockquote>
<p>Versuche mal eine weitere Kernel-Boot-Option hinzuzufügen. Für die NVMe geht das so:</p>
<p><code>sudo kernelstub -a nvme_core.default_ps_max_latency_us=5500</code></p>
</blockquote>
<p>Das deckt sich mit der Angabe, die ich auch <a href="https://tekbyte.net/2020/fixing-nvme-ssd-problems-on-linux/">hier</a> und <a href="https://askubuntu.com/a/1274020">hier</a> gefunden haben. Man könnte anstatt der <code>5500</code> eine <code>0</code> eintragen, aber vielleicht klappt es ja auch so. Falls nicht, muss die <code>0</code> es halt richten.</p>
<p>🤞 Fingers-Crossed 🤞, dass es jetzt funktioniert und ich ausnahmsweise keinen eingefrorenen Desktop habe.</p>
<p>Falls ich das Problem aber partout nicht in den Griff bekommen sollte, werde ich mich wohl oder über mal bei <a href="https://manjaro.org/">Manjaroa</a> oder <a href="https://archcraft-os.github.io/">Archcraft</a> umsehen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Pop!_OS installieren und einrichten</title>
      <link>https://cbrueggenolte.de/pop-os-installieren-und-einrichten/</link>
      <pubDate>Tue, 04 May 2021 02:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/pop-os-installieren-und-einrichten/</guid>
      <description>&lt;p&gt;Heute habe ich POP!_OS auf dem Rechner installiert. Was ich nach der einfachen Installation noch alles gemacht habe, habe ich hier mal aufgeschrieben.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pop_os-installation&#34;&gt;Pop!_OS Installation&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pop.system76.com/&#34;&gt;Pop!_OS&lt;/a&gt; ist ein modernes Linux Betriebssystem für MINT (STEM) und Kreative. Unter der Haube Ubuntu, oben drauf moderne und sichere Open-Source-Software.&lt;/p&gt;&#xA;&lt;p&gt;Pop!_OS gibt es aktuell in der Version 20.10 und 20.04 LTS (Long Term Support). Außerdem gibt es speziell für Computer mit NVIDIA Grafiken von jeder Version ein Image,bei dem die NVIDIA Grafikkartentreiber schon vorinstalliert sind.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute habe ich POP!_OS auf dem Rechner installiert. Was ich nach der einfachen Installation noch alles gemacht habe, habe ich hier mal aufgeschrieben.</p>
<h2 id="pop_os-installation">Pop!_OS Installation</h2>
<p><a href="https://pop.system76.com/">Pop!_OS</a> ist ein modernes Linux Betriebssystem für MINT (STEM) und Kreative. Unter der Haube Ubuntu, oben drauf moderne und sichere Open-Source-Software.</p>
<p>Pop!_OS gibt es aktuell in der Version 20.10 und 20.04 LTS (Long Term Support). Außerdem gibt es speziell für Computer mit NVIDIA Grafiken von jeder Version ein Image,bei dem die NVIDIA Grafikkartentreiber schon vorinstalliert sind.</p>
<p>Nach dem Herunterladen der Image-Datei benötigen wir noch [balenaEtcher)(https://www.balena.io/etcher/) oder <a href="https://unetbootin.github.io/">UNetbootin</a> um aus dem Image einen bootfähigen USB-Stick zu erstellen.</p>
<p>Jetzt den Rechner neustarten, vom USB-Stick booten und dem Installationsassistenten folgen.</p>
<h2 id="einrichtung-nach-dem-ersten-start">Einrichtung nach dem ersten Start</h2>
<p>Nach dem ersten Start werden noch Angaben abgefragt und der Benutzer angelegt. Wenn man dann auf dem Desktop ist, öffne eine Konsole um ein paar wichtige Aufgaben zu erledigen.</p>
<h3 id="1-system-aktualisieren">1. System aktualisieren</h3>
<p>Mein System ist schon auf dem neusten StandDurch eingabe der folgenden Befehle werden die Paketequellen, die installierten Programme und das System selbst auf den aktuellen Stand gebracht.</p>





<pre tabindex="0"><code>sudo apt-get update -y sudo apt-get upgrade -y sudo apt-get dist-upgrade -y</code></pre><p>Die drei Befehle kann man auch mithilfe von <code>&amp;&amp;</code> aneinander ketten.</p>





<pre tabindex="0"><code>sudo apt-get update -y &amp;&amp; sudo apt-get upgrade -y &amp;&amp; sudo apt-get dist-upgrade -y</code></pre><h3 id="2-installiere-die-gnome-tweaks">2. Installiere die GNOME Tweaks</h3>
<p>Mithilfe der GNOME Tweaks lassen sich in Pop!_OS die “Minimize” und “Maximize” Buttons für die Fenster aktivieren. Das ist besonders dann hilfreich, wenn man nicht im Fullscreen-Modus arbeitet oder den “Tile-Windows”-Mode aktiviert hat.</p>





<pre tabindex="0"><code>sudo apt install gnome-tweaks</code></pre><p>Alternativ findet man die GNOME Tweaks auch im Pop!_Shop.</p>
<h3 id="3-dash-to-dock">3. Dash To Dock</h3>
<p>Wenn du das Dock dauerhaft sichtbar haben möchtest, dann kannst du dir die GNOME Extension <a href="https://extensions.gnome.org/extension/307/dash-to-dock/">Dash to Dock</a> installieren. Diese holt das Dock aus der Übersicht (SuperKey/Windows Taste drücken) in den Vordergrund. Außerdem kann man das Aussehen und Verhalten anpassen.</p>
<p>Der empfohlene Weg für GNOME Extensions ist über den Browser. Dazu musst du aber erst noch ein Plugin für Firefox installieren, die GNOME Shell Extensions. Nach Installation die Webseite neu laden und den Schalter auf ON stellen. Es sollte nun eine Abfrage kommen, ob du die Extension installieren willst.</p>
<h3 id="4-programme-aus-dem-pop_shop-installieren">4. Programme aus dem Pop!_Shop installieren</h3>
<p>Pop!_OS kommt mit einer Basis-Austattung an Programmen. Was durchaus beabsichtigt ist, da man dem Nutzer eine saubere und klare Vorlage geben möchten. Wer mehr möchte, kann sich in Ruhe durch den Shop klicken.</p>
<p>Der Shop ist übersichtlich und klar strukturiert. Kein wunder, hat sich System76 doch bei <a href="https://elementary.io/de/">ElementaryOS</a> bedient. In den Pop!_Picks findest du eine Auswahl an beliebten Programmen wie Steam, Signal, Spotify, Visual Studio Code.</p>
<h3 id="5-installieren-von-closed-source-media-codecs-optional">5. Installieren von Closed-Source Media Codecs (Optional)</h3>
<p>Pop!_OS kommt mit vielen Open-Source-Media-Formaten daher, aber manchmal kommt es vor, dass man ein Video abspielen möchte, für das man dann keinen Code hat. Hier hilft das Paket <code>ubuntu-restricted-extras</code> weiter. Installiert wird es so:</p>





<pre tabindex="0"><code>sudo apt-get install ubuntu-restricted-extras</code></pre><p>Wärend die Installation läuft, wirst du aufgefordert die ein oder anderen Lizenz zu akzeptieren. Sehr wahrscheinlich wird hier etwas von Microsoft angezeigt werden.</p>
<h3 id="6-software-die-ich-installiert-habe">6. Software die ich installiert habe</h3>
<p>Über die Kommandozeile habe ich folgende Software installiert:</p>
<ul>
<li>Youtube und Video downloader: ‘youtube-dl’</li>
<li>Video Lan Client: vlc</li>
<li>neofetch, htop, iftop</li>
<li>Brave-Browser via <a href="https://brave.com/linux/#linux">https://brave.com/linux/#linux</a></li>
<li>VSCodium via <a href="https://vscodium.com/">https://vscodium.com/</a></li>
</ul>
<p>Und aus dem Shop habe ich mir geladen:</p>
<ul>
<li>Signal via flathub</li>
<li>Steam via flathub</li>
<li>Element via flathub</li>
</ul>
<h2 id="fazit">Fazit</h2>
<p>Bisher muss ich sagen, bin ich super zufrieden. Das System ist schnell, die Festplattte ist verschlüsselt, die Softwarepakete funktionieren und ich kann mich bisher nicht beklagen.</p>
<p>Als nächstes muss ich noch meinen Passwortmanager installieren und meine E-Mail-Konten einrichten. Ob ich Thunderbird nochmal eine Change gebe? Ich weiß nicht. Geary scheint als E-Mail-Programm eigentlich völlig ausreichend zu sein. Falls doch mal etwas verschlüsseltes eintreffen sollte, kann ich das immer noch in der Konsole oder im Texteditor entschlüsseln.</p>
<p>Ich bin zufrieden! Und du, verwendest du schon Linux oder willst es mal versuchen?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Lockerungen, AirTags und digitale Selbstbestimmung</title>
      <link>https://cbrueggenolte.de/lockerungen-airtags-und-digitale-selbstbestimmung/</link>
      <pubDate>Sun, 02 May 2021 12:57:08 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/lockerungen-airtags-und-digitale-selbstbestimmung/</guid>
      <description>&lt;p&gt;Koningsdag, Öffnungen und Lockerungen in den Niederlanden, Apple AirTags, iOS 14.5, Mitglied werden im 512kb und 250kb Club, verschlüsselte E-Mails. Es ist einiges passiert diese Woche und auch wieder nicht.&lt;/p&gt;&#xA;&lt;h2 id=&#34;corona-und-die-niederlande&#34;&gt;Corona und die Niederlande&lt;/h2&gt;&#xA;&lt;p&gt;Am 27. April haben die Niederländer 🇳🇱 den Geburtstag des Königs gefeiert. &lt;a href=&#34;https://zn80.net/2021/04/koningsdag-2021/&#34;&gt;Ich hatte darüber geschrieben.&lt;/a&gt; Verrückte Sache, denn es waren so viele Menschen auf den Straßen. Wenige haben sich an die geltenden Regeln gehalten. So wirklich fällt mir da nichts mehr zu ein. Was soll man da noch groß zu sagen?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Koningsdag, Öffnungen und Lockerungen in den Niederlanden, Apple AirTags, iOS 14.5, Mitglied werden im 512kb und 250kb Club, verschlüsselte E-Mails. Es ist einiges passiert diese Woche und auch wieder nicht.</p>
<h2 id="corona-und-die-niederlande">Corona und die Niederlande</h2>
<p>Am 27. April haben die Niederländer 🇳🇱 den Geburtstag des Königs gefeiert. <a href="https://zn80.net/2021/04/koningsdag-2021/">Ich hatte darüber geschrieben.</a> Verrückte Sache, denn es waren so viele Menschen auf den Straßen. Wenige haben sich an die geltenden Regeln gehalten. So wirklich fällt mir da nichts mehr zu ein. Was soll man da noch groß zu sagen?</p>
<p><a href="https://www.government.nl/topics/coronavirus-covid-19/plan-to-reopen-society">Corona Regeln government.nl 2021-05-02</a>Am Tag darauf, den 28.April, wurden die ersten Lockerungen umgesetzt. Shops durften wieder öffnen und Strandbars, Cafés, Restaurants mit Außenbereich wieder erste Gäste empfangen. Weitere Lockerungen, die kurz darauf folgen sollten, sind allerdings erst mal wieder vom Tisch und nach hinten verschoben. Die Inzidenz liegt einfach viel zu hoch 😒. Eine Entscheidung wann was passiert, soll morgen, Montag, den 3. Mai, gefällt werden.</p>
<h2 id="apple-airtags">Apple AirTags</h2>
<p>Wir haben uns ein vierer-Set bestellt. Leider zu spät. Laut der Angabe in der Apple-Store-App, bekommen wir die <a href="https://www.apple.com/de/airtag/">AirTags</a> nicht vor Mitte Juni. Ganze sechs Wochen warten auf ein so Päckchen. Immerhin bleibt uns noch genügend Zeit, Schlüssel- und Rucksack-Anhänger zu kaufen. Die von Apple sind zwar schön, ehrlich gesagt, mir aber zu teuer.</p>
<h2 id="ios-145---app-tracking-transparency">iOS 14.5 - App Tracking Transparency</h2>
<p>Das Update mit den 10 neuen Emojis ist endlich da - 🥳 Yeah! Mit iOS 14.5 kommen nicht nur neue Emojis und die Möglichkeit dein iPhone mithilfe der Apple Watch zu entsperren, wenn du eine Maske trägst. Es kommt auch die Anti-Tracking-Einstellung!</p>
<p>Die App-Tracking-Transparenz verhindert, dass Unternehmen dich über App hinweg heimlich tracken. Die Reklameindustrie, allen voran 💩Facebook, ärgert das besonders. Vor allem, weil viele Nutzer dem Tracking widersprechen. Genauer gesagt, muss eine App jetzt darum bitten, dich zu tracken. Falls du dem widersprichst, generiert iOS eine zufällige Zeichen-Nummern-Folge und weist die App an, dich nicht zu tracken. Falls die App es doch tut, hat sie nur diese zufällige Nummer die in keiner anderen App auftaucht 👍.</p>
<p>Ist tut gut zu sehen, dass dieses Facebook-Universum ein wenig in die Schranken gewiesen wird. Gut erklärt wird das in dem Video des WSJ:</p>
<p>Nachdem du iOS 14.5 installiert hast, kannst du das Tracking folgendermaßen abschalten: Einstellungen ⇒ Datenschutz ⇒ Tracking</p>
<p>Leseempfehlung:</p>
<p><a href="https://www.nytimes.com/2021/04/26/technology/personaltech/apple-app-tracking-transparency.html">The New York Times - To Be Tracked or Not! Apple Is Now Giving Us the Choice</a></p>
<h2 id="512kbclub-und-250kbclub">512kb.club und 250kb.club</h2>
<p>Während der Umgestaltung meiner Webseite und dem Zusammenfassen von Content der über mehrere Domains verstreut war, bin ich auf den <a href="https://512kb.club">512kb.club</a> und <a href="https://250kb.club">250kb.club</a> gestoßen.</p>
<p>Die beiden Seiten haben sich zum Ziel gesetzt, eine Liste an Webseiten zu pflegen, die der Anforderung entsprechen, dass die Hauptseite eine bestimmte Größe nicht überschreitet.</p>
<p><a href="https://512kb.club">512kb.club</a> schreibt:</p>
<blockquote>
<p>The internet has become a bloated mess. Massive JavaScript libraries, countless client-side queries and overly complex frontend frameworks are par for the course these days.</p>
<p>When online newspapers like The Guardian are over 4MB in size, you know there’s a problem. Why does an online newspaper need to be over 4MB in size? It’s crazy.</p>
</blockquote>
<p>Und <a href="https://250kb.club">250kb.club</a> schreibt:</p>
<blockquote>
<p>The Web Is Doom Lets do something about it! The 250kb Club is a collection of web pages that focus on performance, efficiency and accessibility.</p>
</blockquote>
<p>Im ersten Moment klingt das alles ziemlich aufwendig und anstrengend. Allerdings muss ich sagen, dass es mir richtig Spaß gemacht hat, hier und da zu optimieren. Nebenbei konnte ich mein Wissen über CSS und Bildkompression verbessern und viele neue <a href="https://zn80.net/sammelsurium">Tools und Webseiten</a> entdecken.</p>
<p>Ich war so in der Lage von ursprünglichen 800kb auf 80kb zu drücken. Und das ist doch mal richtig gut! Ehrlicherweise muss ich erwähnen, dass dieses nur für die Hauptseite gilt 😇. Die einzelnen Blogbeiträge sind größer.</p>
<p>Zusätzlich habe ich neue Bekanntschaften geschlossen und angeregte Diskussionen per E-Mail geführt. Was mich zum nächsten Thema bringt.</p>
<h2 id="verschlüsselte-e-mails">Verschlüsselte E-Mails</h2>
<p>Es soll einfach sein. Die Schlüsselverwaltung muss übersichtlich sein. Dennoch hatte ich teilweise das Gefühl, dass ich irgendwie die Kontrolle verloren habe. Anders ausgedrückt: Teils, teils konnte ich nicht feststellen, mit welchen Schlüssel ich welche E-Mail versendet habe und welchen Schlüssel ich nutzen muss, eine ankommende E-Mail zu entschlüsseln 😱. Liegt es vielleicht an mir und ich bin einfach zu doof dafür?</p>
<p>Auf der Webseite habe ich den 🔐<a href="/impressum">Schlüssel</a> für die E-Mail-Adresse hinterlegt, die im Impressum steht. Das ist aber nicht die E-Mail, von der ich normalerweise meine E-Mails verschicke. So kam es, dass mir einige mit verschlüsselten E-Mails geantwortet haben, die mit dem Schlüssel von der Webseite verschlüsselt waren.</p>
<p><a href="https://mailbox.org">Mailbox.org</a> scheint da durcheinander zu kommen. Der Mailbox-Guard konnte keine dieser E-Mails entschlüsseln und zeigte nur einen Fehler an. Am MacBook habe ich dann versucht, den verschlüsselten Text per Hand zu entschlüsseln. Anhang im Editor geöffnet und über die Services die Entschlüsselung versucht. Klappte leider auch nicht, da GnuPG keinen passenden Schlüssel gefunden hat. Der private Schlüssel von Mailbox.org und von der Webseite sind aber vorhanden.</p>
<p>Seit der Integration der Enigmail-Funktionen in Thunderbird, werden die Schlüssel intern in Thunderbird gespeichert und ich hätte noch einen weiteren Schlüsselbund. Das kommt für also auch nicht infrage.</p>
<p>Bisher habe ich keine passende Lösung für dieses Problem gefunden und bin geneigt dazu, PGP gänzlich ad-acta zu legen 🤔. Auf der anderen Seite gibt es noch <a href="https://zn80.net/impressum/">Keybase</a> und <a href="https://keyoxide.org/">Keyoxide</a>. Keybase habe ich schon, Keyoxide muss ich noch ausprobieren.</p>
<h2 id="was-nicht-passiert-ist">Was nicht passiert ist</h2>
<p>Weil man nicht immer nur vor dem Rechner hocken kann, wollte ich dieses Wochenende eigentlich mal den Garten sauber machen. Hochdruckreiniger und Co, die Palettenmöbel anschleifen und überstreichen. Meine Frau wollte sich um die Blumen die Begrünung kümmern. Leider hat uns aber das Wetter noch mal einen Strich durch die Rechnung gemacht. Es ist einfach noch zu kalt und viel zu windig. Mimimimi ich weiß. Ist aber so!</p>
<p>Aufgeschoben ist nicht aufgehoben und so werden wir das Übernächste in Angriff nehmen. Dann soll es auch endlich warm und sonnig werden. Außerdem habe ich ein paar Tage frei, so das wir in alle Ruhe den Garten auf Vordermann bringen können. Unkraut wuchert nämlich auch schon wieder. Dabei ist es vier Wochen her, dass ich das gerupft habe.</p>
<h2 id="was-hast-du-so-gemacht">Was hast du so gemacht?</h2>
<p>Was ist dir so die Woche passiert? Hast du das Update auf 14.5 schon gemacht? Oder auch schon die AirTags bestellt oder vielleicht ein neues iPhone oder den schicken iMac? Lass uns drüber reden. Schreib mir doch eine E-Mail. Gerne auch verschlüsselt, aber bitte an die richtige Adresse 🙏.</p>
<hr>
<p>Noch nicht genug? Dann schau doch mal bei <a href="https://monstropolis.wordpress.com/">Monstropolis</a>, <a href="https://dn15.de/">dn15</a> oder <a href="https://happybuddha1975.de/">HappyBuddha</a> vorbei. Viel Spaß!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Wenn Banken die Kosten weiterreichen</title>
      <link>https://cbrueggenolte.de/wenn-banken-die-kosten-weiterreichen/</link>
      <pubDate>Thu, 29 Apr 2021 19:36:48 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/wenn-banken-die-kosten-weiterreichen/</guid>
      <description>&lt;p&gt;Gestern habe ich Post von der Commerzbank und auch von der ABN Amro erhalten. Beides Banken, bei denen wir ein Konto haben. Beide Banken erhöhen zum 1. Juli 2021 die Kontoführungsgebühren. Das System fühlt sich einfach nur kaputt an.&lt;/p&gt;&#xA;&lt;p&gt;Die ABN Amro erhöht die Gebühren von 1,70 Euro auf 1,95 Euro. Das ist noch ganz moderat und zu verkraften. Sie müssen das machen, weil sie sich besser gegen Bankenkriminalität und Geldwäschen schützen wollen. Ist noch nachvollziehbar. Was aber einen schlechten Geschmack hinterlässt ist die Meldung, dass die ABN Amro von den niederländischen Finanzbehörden zu einer Strafe verurteilt wurde. Die ABN Amro hat sich nämlich in den Jahren 2014-2020 nicht genügend um Geldwäsche gekümmert und das System wurde teilweise für kriminelle Machenschaften missbraucht.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gestern habe ich Post von der Commerzbank und auch von der ABN Amro erhalten. Beides Banken, bei denen wir ein Konto haben. Beide Banken erhöhen zum 1. Juli 2021 die Kontoführungsgebühren. Das System fühlt sich einfach nur kaputt an.</p>
<p>Die ABN Amro erhöht die Gebühren von 1,70 Euro auf 1,95 Euro. Das ist noch ganz moderat und zu verkraften. Sie müssen das machen, weil sie sich besser gegen Bankenkriminalität und Geldwäschen schützen wollen. Ist noch nachvollziehbar. Was aber einen schlechten Geschmack hinterlässt ist die Meldung, dass die ABN Amro von den niederländischen Finanzbehörden zu einer Strafe verurteilt wurde. Die ABN Amro hat sich nämlich in den Jahren 2014-2020 nicht genügend um Geldwäsche gekümmert und das System wurde teilweise für kriminelle Machenschaften missbraucht.</p>
<p>Für mich sieht das jetzt so aus, dass der kleine Kunde mit seinem Girokonto für das Fehlverhalten der Bank aufkommen muss und jetzt diese Strafe bezahlen darf.</p>
<p>Die Commerzbank hingegen erhöht einfach mal so von 0 auf 500! <a href="https://www.commerzbank.de/portal/de/seiten/wechselinfo/inhalt/startseite/wechselinfo.html">Ab dem 1. Juli 2021 werden für das bisherige kostenfreie Girokonto 4,90 Euro fällig</a>. Pro Monat! Ich finde das ziemlich Frech und da hilft auch keine lächelnde Person auf dem Bild der Webseite.</p>
<p>Zum sind sechs Wochen knapp bemessen, wenn es darum geht auf ein anderes Konto umzusteigen. Da müssen so viele Agenturen angeschrieben werden, so viele Online-Dienste, bei denen man seine Kreditkarte hinterlegt hat. Nicht zu vergessen der Arbeitgeber, der das neue Konto einpflegen muss, um das Gehalt zu überweisen. Bei mir dauert das mal mindestens 8 Wochen, wenn durch Corona nicht noch mehr.</p>
<p>Was mich dann aber noch mehr ärgert ist die Tatsache, dass man wohl die Gebühren drastisch erhöht, <a href="https://www.focus.de/finanzen/geldanlage/strafzinsen-erstes-geldhaus-verlangt-gebuehr-von-einem-prozent_id_13091864.html">weil die EZB hohe Gebühren verlangt</a>, wenn Geld zwischengelagert wird. Das dann noch mit der Aussage</p>
<blockquote>
<p>Gerade mit dem kostenlosen Girokonto wurden wir diesem Anspruch über einen langen Zeitraum mehr als gerecht. Doch mittlerweile haben sich die Rahmenbedingungen des Marktes so stark verändert, dass wir dieses Angebot in der bisherigen Form nicht mehr bieten können. (Quelle <a href="https://www.commerzbank.de/portal/de/seiten/wechselinfo/inhalt/startseite/wechselinfo.html">commerzbank.de</a>)</p>
</blockquote>
<p>zu begründen grenzt schon fast an Hohn. Meine Meinung!</p>
<p>Seit Jahren baut sich die Bank quasi selber ab. Die App war lange, lange Zeit eine Katastrophe. Fehlerhafte Texteingabe, eigene Tastatur, Benutzer-unfreundliche Navigation und so weiter. Immerhin hat sich das mittlerweile ein wenig gebessert. Geblieben ist aber immer noch der Scheiß, das ich bis heute keine Auslandsdaueraufträge im Online-Banking einrichten kann. Ich glaube auch nicht, dass sich das in Zukunft ändern wird, wenn man jetzt 5 Euro im Monat bezahlen muss.</p>
<p>Es wird wohl doch so langsam Zeit, sich eine neue Bank zu suchen. Leider ist das immer mit viel Papierkram und vielen E-Mails verbunden. Da geht wieder ein ganzer Tag für drauf 😒 . Was noch hinzukommt: versuch mal in Deutschland ein Konto zu eröffnen, wenn du keinen aktiven Wohnsitz dort hast. Super oder?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Allesdichtmachen und die Grenzen der Kritik</title>
      <link>https://cbrueggenolte.de/allesdichtmachen-und-die-grenzen-der-kritik/</link>
      <pubDate>Thu, 22 Apr 2021 23:44:19 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/allesdichtmachen-und-die-grenzen-der-kritik/</guid>
      <description>&lt;p&gt;Hinter den Hashtags &lt;a href=&#34;https://twitter.com/hashtag/allesdichtmachen&#34;&gt;#allesdichtmachen&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/hashtag/niewiederaufmachen&#34;&gt;#niewiederaufmachen&lt;/a&gt; und &lt;a href=&#34;https://twitter.com/hashtag/**lockdownf%c3%bcrimmer**&#34;&gt;#lockdownfürimmer&lt;/a&gt; stehen einige Schauspieler und Künstler, die sich in Videos über die Corona-Maßnahmen kritisieren. Erst habe ich das für eine gut gemacht Werbeaktion gehalten, muss aber auch eingestehen, dass die Videos nicht mehr so lustig sind, wenn man da mal eine Nacht drüber geschlafen hat.&lt;/p&gt;&#xA;&lt;p&gt;Da die Seite &lt;a href=&#34;https://allesdichtmachen.de&#34;&gt;https://allesdichtmachen.de&lt;/a&gt;, die für die Videos wohl verantwortlich war/ist, ist mittlerweile vom nicht mehr erreichbar und leitet auf &lt;code&gt;127.0.0.1&lt;/code&gt; weiter. Die rund 50 Videos kann man, wenn man will, aber auch auf dem YouTube-Kanal von &lt;em&gt;allesdichtmachen&lt;/em&gt; anschauen: &lt;a href=&#34;https://www.youtube.com/channel/UC3_dHQpx8O9JT2LW1U2Beuw/videos&#34;&gt;YouTube-Kanal allesdichtmachen&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hinter den Hashtags <a href="https://twitter.com/hashtag/allesdichtmachen">#allesdichtmachen</a>, <a href="https://twitter.com/hashtag/niewiederaufmachen">#niewiederaufmachen</a> und <a href="https://twitter.com/hashtag/**lockdownf%c3%bcrimmer**">#lockdownfürimmer</a> stehen einige Schauspieler und Künstler, die sich in Videos über die Corona-Maßnahmen kritisieren. Erst habe ich das für eine gut gemacht Werbeaktion gehalten, muss aber auch eingestehen, dass die Videos nicht mehr so lustig sind, wenn man da mal eine Nacht drüber geschlafen hat.</p>
<p>Da die Seite <a href="https://allesdichtmachen.de">https://allesdichtmachen.de</a>, die für die Videos wohl verantwortlich war/ist, ist mittlerweile vom nicht mehr erreichbar und leitet auf <code>127.0.0.1</code> weiter. Die rund 50 Videos kann man, wenn man will, aber auch auf dem YouTube-Kanal von <em>allesdichtmachen</em> anschauen: <a href="https://www.youtube.com/channel/UC3_dHQpx8O9JT2LW1U2Beuw/videos">YouTube-Kanal allesdichtmachen</a>.</p>
<p>Gestern Abend habe ich ja noch gedacht: “Geile Aktion! Einiges bissel übertrieben und hart an der Grenze. Aber trotzdem gut gemacht.” Heute jedoch muss ich aber sagen, dass die Aktion wohl doch ein Schuss in den Ofen war. Nicht im Sinne, dass man die Maßnahmen nicht kritisieren oder diskutieren darf, soll oder muss, sondern in der Hinsicht, dass sich viele der Querdenker und Verschwörungstheoretiker nun die Videos zu eigen machen und behaupten, dass das ja genau das sei, was wie Leerdenker schon seit Monaten behaupten.</p>
<p>Der <a href="https://www.tagesspiegel.de/gesellschaft/panorama/verunglueckte-netz-kampagne-alles-dicht-machen-ist-so-schaebig-dass-es-weh-tut/27124112.html">Tagesspiegel</a> zum Beispiel schreibt:</p>
<blockquote>
<p>Die Videos enthalten Botschaften, wie man sie von Querdenken-Demos kennt: Die Pandemie sei Panikmache, die Medien seien gleichgeschaltet, die Bundesregierung regiere autoritär.</p>
<p>Ja, die Kulturbranche leidet seit mehr als einem Jahr, etliche stehen vor dem Ruin, die Hilfen sind unzureichend. Aber diese Aufnahmen zeigen privilegierte, gut verdienende Menschen, viele von ihnen sind etablierte „Tatort“-Darsteller. Ist ihre Teilnahme ein Zeichen von Zivilcourage oder nicht eher von Wohlstandsverwahrlosung?</p>
</blockquote>
<p>Hier muss ich dem Autor zustimmen. Wer Geld und Wohnung und Villa viel Platz hat, der hat leicht reden. Man hätte die Kritik besser verpacken müssen. Wie? Das weiß ich leider auch nicht. Doch so wie es gemacht wurde, ist es nicht so gut angekommen, wie es wohl gedacht war. Aufmerksamkeit hat es aber in jedem Fall erzeugt. So viel Aufmerksamkeit und Kritik, dass einige Schauspieler ihre <a href="https://www.tagesspiegel.de/gesellschaft/panorama/alles-dicht-machen-kritisiert-corona-politik-liefers-distanziert-sich-von-querdenkern-makatsch-zieht-video-zurueck/27123938.html">Videos auch schon wieder zurückgezogen</a> haben.</p>
<p>Man darf und sollte sich kritisch mit der Thematik SarsCov2 und Covid19 auseinandersetzen dürfen. Man muss es sogar tun! Aber bitte nicht auf diese Art und Weise. Man darf gerne geteilter Meinung sein und ich will gar nicht bestreiten, dass ich <a href="https://youtu.be/B9i-bpOumRI?list=PLJZme9ZBIhG9gOB4uLw5vO2v5SSxF71iw">einige</a> der <a href="https://youtu.be/RJlZZOJA_X4?list=PLJZme9ZBIhG9gOB4uLw5vO2v5SSxF71iw">Videos</a> gut finde, die meisten davon sind mir dann doch zu tief und zu schräg (<a href="https://youtu.be/AlDAjrKw3gk?list=PLJZme9ZBIhG9gOB4uLw5vO2v5SSxF71iw">1</a>, <a href="https://youtu.be/KQX79GqSAME?list=PLJZme9ZBIhG9gOB4uLw5vO2v5SSxF71iw">2</a>, <a href="https://youtu.be/sOCi3B9wJ5U?list=PLJZme9ZBIhG9gOB4uLw5vO2v5SSxF71iw">3</a>, <a href="https://youtu.be/UJfNyAru4zQ?list=PLJZme9ZBIhG9gOB4uLw5vO2v5SSxF71iw">4</a>).</p>
<p>Daher möchte ich hier den Tweet von Jan Böhmermann einbinden, in dem er die <a href="https://www.ardmediathek.de/video/Y3JpZDovL3JiYi1vbmxpbmUuZGUvY2hhcml0ZS1pbnRlbnNpdi8yMDIxLTA0LTE0VDIxOjAwOjAwXzc1YTZhYTgwLThlZjYtNDE3Yy05ZjRhLTI1YjZhZDNkMDRiMC9jaGFyaXRlLWludGVuc2l2LXN0YXRpb24tNDMtZm9sZ2UtMS1zdGVyYmVu/">ARD-Dokumentation <em>Station 43 - Sterben</em></a> verlinkt hat.</p>
<p><em>Bleibt gesund, lasst euch Impfen und haltet euch an die Regeln. Man muss nicht alles gut finden, man muss aber auch nicht ohne Maske auf der Straße herumlaufen und sich oder andere anstecken.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Nordkoreas Cyberarmee und digitale Kriegsführung</title>
      <link>https://cbrueggenolte.de/nordkoreas-cyberarmee-und-digitale-kriegsfuehrung/</link>
      <pubDate>Thu, 22 Apr 2021 12:40:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/nordkoreas-cyberarmee-und-digitale-kriegsfuehrung/</guid>
      <description>&lt;p&gt;In Nordkorea sitzt wohl die erfolgreichste Hackernation der Welt. Die Cyberarmee haben für das Regime Milliarden von Dollar eingebracht. Durch Betrügereien an Geldautomaten, hacken und ausnehmen von Tauschbörsen für Kryptowährungen, Ransomware und lang angelegten Aktionen in Banken.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;North Korea, whose government is the only one on earth known to conduct nakedly criminal hacking for monetary gain, has run schemes in some hundred and fifty nations. &lt;em&gt;(Nordkorea, dessen Regierung die einzige auf der Welt ist, von der bekannt ist, dass sie unverhohlen kriminelle Hackerangriffe zum Zwecke des finanziellen Gewinns durchführt, hat in etwa hundertfünfzig Ländern Betrügereien durchgeführt.)&lt;/em&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In Nordkorea sitzt wohl die erfolgreichste Hackernation der Welt. Die Cyberarmee haben für das Regime Milliarden von Dollar eingebracht. Durch Betrügereien an Geldautomaten, hacken und ausnehmen von Tauschbörsen für Kryptowährungen, Ransomware und lang angelegten Aktionen in Banken.</p>
<blockquote>
<p>North Korea, whose government is the only one on earth known to conduct nakedly criminal hacking for monetary gain, has run schemes in some hundred and fifty nations. <em>(Nordkorea, dessen Regierung die einzige auf der Welt ist, von der bekannt ist, dass sie unverhohlen kriminelle Hackerangriffe zum Zwecke des finanziellen Gewinns durchführt, hat in etwa hundertfünfzig Ländern Betrügereien durchgeführt.)</em></p>
</blockquote>
<p>Ein Thema was ich so überhaupt noch nicht gehört habe, hervorragend zusammengestellt.</p>
<p>Link -&gt; <a href="https://www.newyorker.com/magazine/2021/04/26/the-incredible-rise-of-north-koreas-hacking-army">The New Yorker The Incredible Rise of North Korea’s Hacking Army</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Apple setzt ein Zeichen gegen Tracking</title>
      <link>https://cbrueggenolte.de/apple-setzt-ein-zeichen-gegen-tracking/</link>
      <pubDate>Tue, 20 Apr 2021 23:50:18 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/apple-setzt-ein-zeichen-gegen-tracking/</guid>
      <description>&lt;p&gt;Auch wenn Apple heute ein paar tolle neue Geräte vorgestellt hat, so ist doch wohl die Ankündingung, dass mit iOS 14.5 dem Tracking endlich Einhalt geboten wird. In der neuen Version muss der Nutzer dann explizit jeder App eine Erlaubnis erteilen, ob es Tracking verwenden darf. Facebook ist darüber natürlich überhaupt nicht erfreut und hat mit großen Worten und Anzeigen viel heiße Luft produziert.&lt;/p&gt;&#xA;&lt;p&gt;Ein langen Artikel dazu gibt es in der New York Times vom 03. Juni 2020: &lt;a href=&#34;https://www.nytimes.com/2020/06/23/technology/apple-announces-new-privacy-features.html&#34;&gt;Apple Announces New Privacy Features&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Auch wenn Apple heute ein paar tolle neue Geräte vorgestellt hat, so ist doch wohl die Ankündingung, dass mit iOS 14.5 dem Tracking endlich Einhalt geboten wird. In der neuen Version muss der Nutzer dann explizit jeder App eine Erlaubnis erteilen, ob es Tracking verwenden darf. Facebook ist darüber natürlich überhaupt nicht erfreut und hat mit großen Worten und Anzeigen viel heiße Luft produziert.</p>
<p>Ein langen Artikel dazu gibt es in der New York Times vom 03. Juni 2020: <a href="https://www.nytimes.com/2020/06/23/technology/apple-announces-new-privacy-features.html">Apple Announces New Privacy Features</a></p>
<p>Weniger Tracking ist gut und wichtig. Es gibt nicht umsonst so viele Artikel im Netz die sich damit beschäftigen, wie man das ganze <a href="https://www.consumerreports.org/privacy/how-facebook-tracks-you-even-when-youre-not-on-facebook/">Tracking-Gedöns von Facebook abschalten</a> kann.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Neustart mit Hugo und digitale Ordnung</title>
      <link>https://cbrueggenolte.de/neustart-mit-hugo-und-digitale-ordnung/</link>
      <pubDate>Sun, 18 Apr 2021 02:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/neustart-mit-hugo-und-digitale-ordnung/</guid>
      <description>&lt;p&gt;Ein paar Wochen sind vergangen, seit dem ich den letzten Beitrag geschrieben habe.&#xA;Auf der einen Seite war ich einfach zu faul, auf der anderen Seite war ich einfach Internet müde.&lt;/p&gt;&#xA;&lt;p&gt;Eigentlich wollte ich ja auch schon lange den Garten mit dem Hochdruckreiniger sauber machen,&#xA;Blumen bestellen oder mit dem Rad eine Runde zum Strand fahren.&#xA;Leider ist es für all das einfach noch viel zu kalt.&lt;/p&gt;&#xA;&lt;p&gt;Nichtsdestotrotz habe ich dann aber doch an dem ein oder anderen Projekt gearbeitet.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ein paar Wochen sind vergangen, seit dem ich den letzten Beitrag geschrieben habe.
Auf der einen Seite war ich einfach zu faul, auf der anderen Seite war ich einfach Internet müde.</p>
<p>Eigentlich wollte ich ja auch schon lange den Garten mit dem Hochdruckreiniger sauber machen,
Blumen bestellen oder mit dem Rad eine Runde zum Strand fahren.
Leider ist es für all das einfach noch viel zu kalt.</p>
<p>Nichtsdestotrotz habe ich dann aber doch an dem ein oder anderen Projekt gearbeitet.</p>
<h2 id="autopflege">Autopflege</h2>
<p>Seit langem habe ich mal wieder meinem Auto ein wenig Pflege gegönnt.
Erst innen saugen und Polsterpflege.
Danach von außen mit dem Hochdruckreiniger reinigen,
mit Schaum einsprühen und anschließend mit vielen Waschtüchern abwaschen.
Nach dem Abtrocknen dann noch mit <a href="https://www.sonax.de/pflegeprodukte/profiline/profiline-brilliant-shine-detailer/profiline-brilliant-shine-detailer-5-l">Sonax Brilliant Shine Detailer</a> auf Glanz gebracht.</p>
<p>Auch wenn ich die Sonax Produkte eigentlich nicht so gut finde, ist das Sonax BSD wirklich gut.
Wenn man es 1:1 mit Wasser verdünnt, hält es doppelt so lange und man kann es besser verteilen.
Es liegt wie eine leichte Schutzschicht auf dem Lack die verhindert, dass Dreck und Regen haften bleiben.
Also ein wenig zumindest. 😄</p>
<h2 id="github">Github</h2>
<p>Nebenher habe ich meinem <a href="https://github.com/cblte">Github Repository</a> ebenfalls eine Schönheitskur verpasst.</p>
<p>Zum einen kann man ja jetzt ein Repo mit dem Namen des Benutzers anlegen,
welches dann in der Profilansicht angezeigt wird.
So sieht das schon viel hübscher aus, wenn man das Profil eines anderen besucht.</p>
<p>Zum anderen habe ich mich schlau gemacht über Webhooks und Github-Actions und überhaupt Git so im Allgemeinen.
Denn das hat auch was mit dem großen Umbau der Webseite zu tun.</p>
<h2 id="der-wechsel-zu-hugo">Der Wechsel zu Hugo</h2>
<p>Als Erstes habe ich mich wieder einmal dazu entschlossen meine Webseiten zu überarbeiten.
Das hat leider was damit zu tun,
dass die aktuellen Updates von Ghost so überhaupt nicht meinem Geschmack entsprechen.</p>
<h3 id="ghost-hat-sich-nicht-zum-guten-verbessert">Ghost hat sich nicht zum guten verbessert</h3>
<p>In Version 4 haben sie in Ghost viele Dinge eingebaut,
um den Blog oder die Website zu monetarisieren.
Da ich das alles nicht brauche und auch nicht haben will,
es sich auch nicht abschalten lässt,
werde ich mich nach nur kurzer Zeit wieder von Ghost trennen müssen.
Doch was sind die Alternativen? Wieder einen Wordpress-Blog aufsetzen? Noch mal Bludit ausprobieren?
Oder, oder, oder? Es gibt so viele Dinge, die man machen kann.
Da ich aber ein Mensch bin der es gerne ordentlich und aufgeräumt hat,
habe ich mich langem hin und her für Hugo entschieden.</p>
<h3 id="hugo-ist-einfach-schnell-und-komfortabel-zugleich">Hugo ist einfach, schnell und komfortabel zugleich</h3>
<p><a href="https://gohugo.io">Hugo</a> ist ein Generator für statische Webseiten.
Man nehmen einen ganzen Haufen an Texten und Dateien,
ein Theme wie die Seite aussehen soll und jagt das durch Hugo durch.
Am Ende kommen dann viele statische HTML Seiten heraus die man ohne großen Aufwand auf jedem Webserver hosten kann.</p>
<p><em>Hugo</em> ist für mich halt super, weil ich genau weiß, wo was gespeichert wird,
wie ich was wo ablegen muss damit es funktioniert
und bei einem Update passiert halt kein Schnick-Schnack, den ich nicht beeinflussen kann.
Hinzu kommt, dass statische Seiten nicht gehackt werden können.
Wie auch? Es gibt kein Login-Formular, kein Script das irgendetwas bei Seitenaufruf generiert.</p>
<p>Die Installation von Hugo ist ebenfalls super einfach.
Du lädst dir nur das passende Binary für dein Betriebssystem herunter.
Fertig! Kein umständliches Aufsetzen von Webserver und irgendwelchen Skriptsprachen.
Wenn man dann eine neue Seite erstellt hat, kann man quasi sofort loslegen.
Hugo selbst lässt sich sogar dazu benutzen, um die generierten Seiten auszuliefern.
Praktisch, oder?</p>
<p>Im Vergleich: Ghost 3.42.1 belegt aktuell knapp <strong>450 MB Speicherplatz</strong>.
Im Gegensatz dazu hat das Binary von Hugo knapp 50 MB.
Mit dem Sourcecode und der komplett generierte Webseite, inkl. Bilder,
kommen noch mal knapp 30 MB obendrauf.
450MB gegenüber 80 MB. Ist schon mal ein krasser Unterschied.</p>
<p>Backups sind ebenfalls super einfach.
Aller Sourcecode liegt in einem Github-Repository und die Beiträge und Seiten liegen als Markdown-Text vor.
Einfach ein Backup vom Verzeichnis machen und gut ist.
Ich habe jetzt auch das Hugo-Binary mit ins Backup gepackt,
so kann ich die Webseite auch später noch generieren, wenn ich möchte.</p>
<p>Hugo ist außerdem schnell, verdammt schnell sogar.
In meinem Test habe ich meine exportierten Blogbeiträge einfach 10 mal in das <code>Content</code>-Verzeichnis kopiert.
Um aus den über 1800 Dateien eine voll funktionierende Webseite mit Tags,
Archive, Seiten-Navigation und mehr zu generieren, braucht Hugo keine 3 Sekunden.</p>
<p>Hugo benötigt nur ein paar Sekunden für die Webseiten Generierung### Ich mag es gerne einfach</p>
<p>Für Ghost habe ich lange nach einem einfachen Design gesucht.
Doch nie wirklich eines gefunden welches mich überzeugen konnte,
weshalb ich dann beim Standard-Design / -Theme geblieben bin.
Wirklich gefallen hat es mir nie.
Doch das Aufsetzen einer Entwicklungsumgebung für Ghost,
um ein Theme zu schreiben, erschien mir zu kompliziert.</p>
<p>Und weil ich es auch gerne einfach mag,
habe ich mich für das <a href="https://github.com/janraasch/hugo-bearblog/">Bear-Theme</a> entschieden
und es ein wenig angepasst.
Die eigentliche Blog-Übersicht ist nun das Archiv
und die Blog-Übersicht zeigt Ausschnitte der fünf letzten Beiträge.
Dazu gibt es eine Navigation am Ende um zu vorherigen Seiten zu springen.
Ob das so bleibt weiß ich noch nicht,
vielleicht kommt der Archiv-Link auch da unten hin,
um das Menü nicht zu sehr zu überladen.</p>
<h3 id="bisher-migrierter-content">Bisher migrierter Content</h3>
<p>Der Export aus Ghost und die Umwandlung in einzelnen Textdateien ist schon erfolgt.
Dennoch muss ich jeden Beitrag einmal anpacken und anpassen,
da die Bookmark-Cards auf Ghost nicht in Hugo funktionieren.
Zumindest nicht so, als dass man den Text ohne weiteres übernehmen kann.
Die Bilder sind ebenfalls exportiert und warten darauf wieder eingebunden zu werden.</p>
<p>Die Seiten für die Blogroll und die Podcasts habe ich überarbeitet und eine weitere Seite für Ressourcen hinzugefügt.
Das sind von mir fast täglich genutzte Seiten.
Da ich an vielen Rechnern und mit vielen Browsern unterwegs bin,
habe ich relativ wenig Favoriten gespeichert
und nutze dafür nun die Ressourcen-Seite und meinen <a href="https://bm.zn80.net">Bookmark-Manager shaarli</a>.</p>
<h3 id="was-nicht-so-toll-ist">Was nicht so toll ist</h3>
<p>Was nicht so toll ist, weil ich es aber gerne strukturiert und sauber haben will,
dass sich die URLs von einigen Beiträgen ändern werden.
Das ist doof, aber ich versuche mit ein paar Umleitungen (re-directs) so viel wie möglich abzufangen.</p>
<h3 id="was-ist-das-für-ein-gesicht-im-titel">Was ist das für ein Gesicht im Titel?</h3>
<p>Das Gesicht im Titel ist übrigens ein sogenanntes <a href="https://www.mimikama.at/aktuelles/emojis-fr-fortgeschrittene-kaomojis-teil-1-hilfecenter/"><em>kaomoji</em></a>.</p>
<blockquote>
<p>Ein Kaomoji ist eine Kombination von zwei japanischen Wörtern. <em>kao</em> =&gt; Gesicht und <em>mojo</em> =&gt; Charakter.</p>
</blockquote>
<p>Weil ich (meistens) ein fröhlicher und aufgeschlossener Mensch bin,
dachte ich mir, ich begrüße meine Besucher mit einem lachenden und winkendem Gesicht.
Ich hoffe, es bringt dir ein Lächeln ins Gesicht.</p>
<h3 id="fazit">Fazit</h3>
<p>Im groben Ganzen bin ich mit Hugo super zufrieden.
Ich habe viel gelernt in den letzten zwei Wochen und einige neue Tools und Services kennengelernt.</p>
<p>Es gibt super viele <a href="https://jamstack.org/generators/">statische Seitengeneratoren</a>,
ich habe gelernt wie man mit <a href="https://docs.github.com/en/github-ae@latest/developers/webhooks-and-events/webhooks">Github und Webhooks</a>
automatisiert die Webseite bauen kann,
über <a href="https://docs.github.com/en/github-ae@latest/actions/guides/setting-up-continuous-integration-using-workflow-templates">Continuous-Integration</a>
mit <a href="https://travis-ci.com/">Travis-CI</a>
und <a href="https://www.netlify.com/">Netlify</a> und vieles mehr.</p>
<p>Viel gelernt habe ich auch über <a href="https://www.git-scm.com">git</a> selber.
<em>Best Practices</em> gelesen und mir einige Videos angeschaut,
wie andere Nutzer verschiedene Probleme lösen oder gelöst haben.
Das hilft mir nicht nur bei meinen privaten Projekten,
sondern auch auf der Arbeit wo wir bald von Mercurial auf Git umsteigen werden.</p>
<h2 id="sonst-noch-was">Sonst noch was?</h2>
<p>Ja, da gibt es tatsächlich noch was.</p>
<p>Eigentlich wollte ich ja auch schon lange den Garten mit dem Hochdruckreiniger sauber machen,
Blumen bestellen oder mit dem Rad eine Runde zum Strand fahren.
Leider ist es für all das einfach noch viel zu kalt.</p>
<p>Nichtsdestotrotz habe ich dann aber doch an dem ein oder anderen Projekt gearbeitet.</p>
<h2 id="autopflege-1">Autopflege</h2>
<p>Seit langem habe ich mal wieder meinem Auto ein wenig Pflege gegönnt.
Erst innen saugen und Polsterpflege.
Danach von außen mit dem Hochdruckreiniger reinigen, mit Schaum einsprühen und anschließend mit vielen Waschtüchern abwaschen.
Nach dem Abtrocknen dann noch mit <a href="https://www.sonax.de/pflegeprodukte/profiline/profiline-brilliant-shine-detailer/profiline-brilliant-shine-detailer-5-l">Sonax Brilliant Shine Detailer</a> auf Glanz gebracht.</p>
<p>Auch wenn ich die Sonax Produkte eigentlich nicht so gut finde, ist das Sonax BSD wirklich gut.
Wenn man es 1:1 mit Wasser verdünnt, hält es doppelt so lange und man kann es besser verteilen.
Es liegt wie eine leichte Schutzschicht auf dem Lack, die verhindert, dass Dreck und Regen haften bleiben.
Also ein wenig zumindest. 😄</p>
<h2 id="github-1">Github</h2>
<p>Nebenher habe ich meinem <a href="https://github.com/cblte">Github Repository</a> ebenfalls eine Schönheitskur verpasst.</p>
<p>Zum einen kann man ja jetzt ein Repo mit dem Namen des Benutzers anlegen,
welches dann in der Profilansicht angezeigt wird.
So sieht das schon viel hübscher aus, wenn man das Profil eines anderen besucht.</p>
<p>Zum anderen habe ich mich schlau gemacht über Webhooks
und Github-Actions und überhaupt Git so im Allgemeinen.
Denn das hat auch was mit dem großen Umbau der Webseite zu tun.</p>
<h2 id="der-wechsel-zu-hugo-1">Der Wechsel zu Hugo</h2>
<p>Als Erstes habe ich mich wieder einmal dazu entschlossen, meine Webseiten zu überarbeiten.
Das hat leider was damit zu tun, dass die aktuellen Updates von Ghost so überhaupt nicht meinem Geschmack entsprechen.</p>
<h3 id="ghost-hat-sich-nicht-zum-guten-verbessert-1">Ghost hat sich nicht zum guten verbessert</h3>
<p>In Version 4 haben sie in Ghost viele Dinge eingebaut, um den Blog oder die Website zu monetarisieren.
Da ich das alles nicht brauche und auch nicht haben will, es sich auch nicht abschalten lässt,
werde ich mich nach nur kurzer Zeit wieder von Ghost trennen müssen.
Doch was sind die Alternativen?
Wieder einen Wordpress-Blog aufsetzen? Noch mal Bludit ausprobieren? Oder, oder, oder?
Es gibt so viele Dinge, die man machen kann.
Da ich aber ein Mensch bin, der es gerne ordentlich und aufgeräumt hat, habe ich mich langem hin und her für Hugo entschieden.</p>
<h3 id="hugo-ist-einfach-schnell-und-komfortabel-zugleich-1">Hugo ist einfach, schnell und komfortabel zugleich</h3>
<p><a href="https://gohugo.io">Hugo</a> ist ein Generator für statische Webseiten.
Man nehme einen ganzen Haufen an Texten und Dateien, ein Theme wie die Seite aussehen soll,
und jage das durch Hugo durch.
Am Ende kommen dann viele statische HTML-Seiten heraus, die man ohne großen Aufwand auf jedem Webserver hosten kann.</p>
<p>Hugo ist für mich halt super, weil ich genau weiß,
wo was gespeichert wird und wie ich was wo ablegen muss, damit es funktioniert.
Bei einem Update passiert halt kein Schnick-Schnack, den ich nicht beeinflussen kann.
Hinzu kommt, dass statische Seiten nicht gehackt werden können.
Wie auch?
Es gibt kein Login-Formular, kein Script, das irgendetwas bei Seitenaufruf generiert.</p>
<p>Die Installation von Hugo ist ebenfalls super einfach.
Du lädst dir nur das passende Binary für dein Betriebssystem herunter.
Fertig!
Kein umständliches Aufsetzen von Webserver und irgendwelchen Skriptsprachen.
Wenn man dann eine neue Seite erstellt hat, kann man quasi sofort loslegen.
Hugo selbst lässt sich sogar dazu benutzen, um die generierten Seiten auszuliefern.
Praktisch, oder?</p>
<p>Im Vergleich: Ghost 3.42.1 belegt aktuell knapp <strong>450 MB Speicherplatz</strong>.
Im Gegensatz dazu hat das Binary von Hugo knapp 50 MB.
Mit dem Sourcecode und der komplett generierten Webseite, inkl. Bilder, kommen noch mal knapp 30 MB obendrauf.
450MB gegenüber 80 MB.
Ist schon mal ein krasser Unterschied.</p>
<p>Backups sind ebenfalls super einfach.
Aller Sourcecode liegt in einem Github-Repository und die Beiträge und Seiten liegen als Markdown-Text vor.
Einfach ein Backup vom Verzeichnis machen und gut ist.
Ich habe jetzt auch das Hugo-Binary mit ins Backup gepackt,
so kann ich die Webseite auch später noch generieren, wenn ich möchte.</p>
<p>Hugo ist außerdem schnell, verdammt schnell sogar.
In meinem Test habe ich meine exportierten Blogbeiträge einfach zehnmal in das <code>Content</code>-Verzeichnis kopiert.
Um aus den über 1800 Dateien eine voll funktionierende Webseite mit Tags, Archive, Seiten-Navigation
und mehr zu generieren, braucht Hugo keine 3 Sekunden.</p>
<p>Hugo benötigt nur ein paar Sekunden für die Webseiten-Generierung</p>
<h3 id="ich-mag-es-gerne-einfach">Ich mag es gerne einfach</h3>
<p>Für Ghost habe ich lange nach einem einfachen Design gesucht.
Doch nie wirklich eines gefunden, welches mich überzeugen konnte,
weshalb ich dann beim Standard-Design / -Theme geblieben bin.
Wirklich gefallen hat es mir nie.
Doch das Aufsetzen einer Entwicklungsumgebung für Ghost, um ein Theme zu schreiben, erschien mir zu kompliziert.</p>
<p>Und weil ich es auch gerne einfach mag,
habe ich mich für das <a href="https://github.com/janraasch/hugo-bearblog/">Bear-Theme</a> entschieden und es ein wenig angepasst.
Die eigentliche Blog-Übersicht ist nun das Archiv und die Blog-Übersicht zeigt Ausschnitte der fünf letzten Beiträge.
Dazu gibt es eine Navigation am Ende, um zu vorherigen Seiten zu springen.
Ob das so bleibt weiß ich noch nicht; vielleicht kommt der Archiv-Link auch da unten hin, um das Menü nicht zu sehr zu überladen.</p>
<h3 id="bisher-migrierter-content-1">Bisher migrierter Content</h3>
<p>Der Export aus Ghost und die Umwandlung in einzelne Textdateien ist schon erfolgt.
Dennoch muss ich jeden Beitrag einmal anpacken und anpassen, da die Bookmark-Cards auf Ghost nicht in Hugo funktionieren.
Zumindest nicht so, als dass man den Text ohne weiteres übernehmen kann.
Die Bilder sind ebenfalls exportiert und warten darauf, wieder eingebunden zu werden.</p>
<p>Die Seiten für die Blogroll und die Podcasts habe ich überarbeitet und eine weitere Seite für Ressourcen hinzugefügt.
Das sind von mir fast täglich genutzte Seiten.
Da ich an vielen Rechnern und mit vielen Browsern unterwegs bin, habe ich relativ wenig Favoriten gespeichert
und nutze dafür nun die Ressourcen-Seite und meinen <a href="https://bm.zn80.net">Bookmark-Manager shaarli</a>.</p>
<h3 id="was-nicht-so-toll-ist-1">Was nicht so toll ist</h3>
<p>Was nicht so toll ist, weil ich es aber gerne strukturiert und sauber haben will, ist,
dass sich die URLs von einigen Beiträgen ändern werden.
Das ist doof, aber ich versuche mit ein paar Umleitungen (re-directs) so viel wie möglich abzufangen.</p>
<h3 id="fazit-1">Fazit</h3>
<p>Im Groben und Ganzen bin ich mit Hugo super zufrieden.
Ich habe viel gelernt in den letzten zwei Wochen und einige neue Tools und Services kennengelernt.</p>
<p>Es gibt super viele <a href="https://jamstack.org/generators/">statische Seitengeneratoren</a>.
Ich habe gelernt, wie man mit <a href="https://docs.github.com/en/github-ae@latest/developers/webhooks-and-events/webhooks">Github und Webhooks</a> automatisiert die Webseite bauen kann,
über <a href="https://docs.github.com/en/github-ae@latest/actions/guides/setting-up-continuous-integration-using-workflow-templates">Continuous-Integration</a> mit <a href="https://travis-ci.com/">Travis-CI</a> und <a href="https://www.netlify.com/">Netlify</a> und vieles mehr.</p>
<p>Viel gelernt habe ich auch über <a href="https://www.git-scm.com">git</a> selber.
<em>Best Practices</em> gelesen und mir einige Videos angeschaut, wie andere Nutzer verschiedene Probleme lösen oder gelöst haben.
Das hilft mir nicht nur bei meinen privaten Projekten, sondern auch auf der Arbeit, wo wir bald von Mercurial auf Git umsteigen werden.</p>
<h2 id="sonst-noch-was-1">Sonst noch was?</h2>
<p>Ja, da gibt es tatsächlich noch was.</p>
<p>Auf der Webseite <a href="https://lennyface.de/">https://lennyface.de/</a> gibt es noch sehr viel mehr Kaomojis.
Benutzt habe ich sie bisher hauptsächlich in Skype-Konversationen, zum Leid meiner Arbeitskollegen.
Ich finds aber nicht nur lustig, sondern sie helfen auch dem geschriebenen Wort etwas mehr Ausdruck zu verleihen.</p>
<p>=&gt; <a href="https://lennyface.de/">https://lennyface.de/</a></p>
<p>Auf dev.to gibt es eine ganze Menge an guten Artikeln in vielen Themenbereichen.
Mich interessiert zwar hauptsächlich Golang, Java, Python und Git.
Die Community in den Bereichen Javascript und Web-Development ist aber sehr stark ausgeprägt und es gibt viele coole Projekte und Hinweise zu interessanten Webseiten.
Durchgucken lohnt sich alle mal.</p>
<p>=&gt; <a href="https://dev.to/">https://dev.to/</a></p>
<p>Irgendwo hatte ich das zwar auch schon mal zusammengetragen, aber keine Ahnung, wo meine Liste abgeblieben ist.
Egal.
Mike Kuketz vom Kuketz-Blog hat eine aktuelle Liste an <a href="https://www.kuketz-blog.de/datenschutzfreundliche-web-frontends-fuer-youtube-twitter-instagram-reddit-und-co/">datenschutzfreundlichen Web-Frontends für YouTube, Twitter, Instagram, Reddit und Co.</a> erstellt.
via <a href="https://happybuddha1975.de/15-kw-2021/">HappyBuddah1975</a></p>
<h3 id="die-darf-ich-das-app">Die “Darf ich das” App</h3>
<blockquote>
<p>Was darf man eigentlich, und welche Regeln und Gesetze sind in in deiner Region gerade gültig?</p>
</blockquote>
<blockquote>
<p>Während Corona gelten in allen Bundesländern unterschiedliche Regeln, und sogar der nächste Landkreis kann schon wieder anderen Erlassen unterliegen.
Im Rahmen der Covid-19 Pandemie gibt es fast täglich neue Gesetze und Verordnungen, die unseren Alltag betreffen.
Da informiert zu bleiben kann schwierig sein!</p>
</blockquote>
<p>Von <a href="https://twitter.com/padeluun/status/1383554877322719236">padeluun</a> empfohlen, kann die App nicht schlecht sein.
Probiere es doch einfach mal aus.</p>
<p>=&gt; <a href="https://www.darfichdas.info/">https://www.darfichdas.info/</a></p>
<hr>
<p>Es gäbe zwar noch einiges mehr zu berichten, aber das muss für heute reichen.
Ich hoffe auch mal, dass ich es schaffe, wieder etwas regelmäßiger zu schreiben.</p>
<p>So wirklich warm wird es ja immer noch nicht.
Ein kurzer Ausreißer am Dienstag, aber das war es dann auch schon.
Damit nun einen guten Start in die Woche.
Haltet die Ohren steif!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Alltag zwischen Technik, Politik und Frühling</title>
      <link>https://cbrueggenolte.de/alltag-zwischen-technik-politik-und-fruehling/</link>
      <pubDate>Sun, 21 Mar 2021 21:56:24 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/alltag-zwischen-technik-politik-und-fruehling/</guid>
      <description>&lt;p&gt;Und wieder ist eine Woche rum und wir befinden uns weiterhin auf diesem Planeten namens Erde. Hier gibt es Politiker sich am Gemeinwohl schamlos bereichern und ziemlich viele verirrte Personen, die meinen gegen eine Diktatur auf den Straßen demonstrieren zu müssen. Liebe Leute, wenn wir wirklich in einer Diktatur leben würden, dann würden eure Demos nicht so nett und friedlich ablaufen. Aber was rege ich mich auf.&lt;/p&gt;&#xA;&lt;h2 id=&#34;arctis-7&#34;&gt;Arctis 7&lt;/h2&gt;&#xA;&lt;p&gt;Die Kopfhörer die wir uns letzte Woche zugelegt haben funktionieren hervorragend und dieser Game-Chat-Modus ist super. Damit lässt sich hervorragend mal schnell der Sound im Spiel hochstellen, wenn man die Geschichte verstehen will und im Teamspeak gerade zu viel geredet wird.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Und wieder ist eine Woche rum und wir befinden uns weiterhin auf diesem Planeten namens Erde. Hier gibt es Politiker sich am Gemeinwohl schamlos bereichern und ziemlich viele verirrte Personen, die meinen gegen eine Diktatur auf den Straßen demonstrieren zu müssen. Liebe Leute, wenn wir wirklich in einer Diktatur leben würden, dann würden eure Demos nicht so nett und friedlich ablaufen. Aber was rege ich mich auf.</p>
<h2 id="arctis-7">Arctis 7</h2>
<p>Die Kopfhörer die wir uns letzte Woche zugelegt haben funktionieren hervorragend und dieser Game-Chat-Modus ist super. Damit lässt sich hervorragend mal schnell der Sound im Spiel hochstellen, wenn man die Geschichte verstehen will und im Teamspeak gerade zu viel geredet wird.</p>
<p>Aber auch sonst gefallen die uns wirklich gut. Liegen tatsächlich sehr angenehm auf dem Kopf und lassen sich gut tragen. Die Reichweite ist ebenfalls mehr als ausreichend und die Batterielaufzeit hat bei mir jetzt gut eine Woche durchgehalten.</p>
<p>Ich bin auch nicht der einzige, dem diese Kopfhörer wirklich gut gefallen. Die Woche beim Videos gucken auf YouTube und Co ist mir aufgefallen, dass die Steelseries Arctis 7 (oder ein anderes Model) sehr beliebt ist und von vielen YouTubern benutzt wird.</p>
<h2 id="wenn-der-monitor-komische-dinge-macht">Wenn der Monitor komische Dinge macht</h2>
<p>Eine Anschaffung jagt die nächste. Mein bisheriger guter alter ASUS Monitor gibt, glaube ich, so langsam seinen Geist auf. Die Woche ist jetzt der Displayport kaputtgegangen und lässt sich nicht mehr benutzen. Ich habe alle Displayport-Kabel ausprobiert, die ich finden konnte und keines hat an meinem Monitor funktioniert. Am Bildschirm meiner Frau hat alles funktioniert. Es liegt also nicht am Kabel oder der Dockingstation vom Laptop oder am Displayport des Laptops selber. Es liegt definitiv am Displayport meines Monitors.</p>
<p>Vor ein paar Wochen hat das Bild nämlich schon mal geflackert und ich hatte kurzzeitig schwarzes Bild. Nun ist es ganz weg und ich habe den Arbeitsrechner über ein altes VGA-Kabel anschließen müssen. Der Laptop und auch die Dockingstation haben leider nur Displayport und VGA, kein HDMI.</p>
<p>Das Bild über das VGA-Kabel ist jetzt noch ganz OK aber so wirklich schön ist das nicht. Man merkt schon den Unterschied zwischen HDMI und VGA. Und daher habe ich mich die Tage mal nach einem neuen Monitor umgeschaut. Schön finde ich das nicht und geplant ist die Ausgabe eigentlich auch nicht, allerdings habe ich so langsam das Gefühl, dass es der Monitor nicht mehr lange macht.</p>
<p><img class="content-image" src="https://cbrueggenolte.de/wp-content/uploads/2021/08/lg-32-zoll-monitor.jpeg" alt="" loading="lazy" />LG 32 ZollNach einigen Recherchen bin ich dann beim <a href="https://www.lg.com/us/monitors/lg-32GK650F-B-gaming-monitor">LG 32GK650F UltraGear</a> hängen geblieben. Nicht nur hat er gute Bewertungen bekommen, er ist etwas größer als mein bisheriger (32&quot; vs. 27&quot;), hat schnelle 144Hz und 1ms Reaktionszeit, lässt sich leicht in der Höhe verstellen und bietet eine Splitscreen-Funktion an. Mit 350cd ist er auch noch etwas heller als mein jetziger ASUS. Hinzu kommt, dass er vorrätig und wenn ich den morgen bestellen sollte, dann ist er schon am Dienstag hier bei mir zu Hause.</p>
<h2 id="golang-präsentation">Golang Präsentation</h2>
<p><img class="content-image" src="https://cbrueggenolte.de/wp-content/uploads/2021/08/golang-gopher.jpeg" alt="" loading="lazy" />Golang GopherAm Freitag habe ich einen kurzen Vortrag über <a href="https://golang.org">die Programmiersprache Golang</a> gehalten. Wir haben in der Firma etwas das sich “Knowledge Transfer” nennt und jeder ist mal an der Reihe, einen Vortrag über ein Thema im Bereich IT oder Programmierung zu halten. Ich habe mich für Golang entschieden, da ist Go eine ziemlich interessante und spannende Sprache finde. Vielleicht schreibe ich da mal was zu. Mal schauen.</p>
<p>Das da oben ist übrigens der <a href="https://blog.golang.org/gopher">Gopher</a>. Das Maskottchen von Golang.</p>
<hr>
<p>Ansonsten ist nicht wirklich nichts passiert. Die Kinder von unseren Nachbarn sind immer noch super laut, also lauter als normal, und holen einen jetzt schon Sonntags um 08:00 Uhr aus den Betten. Der Octavia braucht einen Öl-Wechsel und ich muss mich die Woche um einen Termin in der Werkstatt kümmern. Gute Gelegenheit, auch gleich auf die Sommerräder zu wechseln.</p>
<p>Laut Wetterbericht soll es zum Wochenende hin fast 15 Grad warm werden. Da könnte man sich glatt zu einer kleinen Fahrradtour zum Strand hinreisen lassen. Seit gestern, den 20. März, haben wir ja auch offiziell Frühling. Da kann sich Petrus mal von seiner guten Seite zeigen und ein wenig Sonne schicken.</p>
<p>Eine schöne und angenehme Woche wünsche ich euch.</p>
<p><em>Beitrag 76 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Neue Kopfhörer und digitale Gewohnheiten</title>
      <link>https://cbrueggenolte.de/neue-kopfhoerer-und-digitale-gewohnheiten/</link>
      <pubDate>Sun, 14 Mar 2021 18:44:53 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/neue-kopfhoerer-und-digitale-gewohnheiten/</guid>
      <description>&lt;p&gt;Und schon wieder sind zwei Wochen um.&#xA;Wie schnell doch die Zeit vergeht.&#xA;Wenn man den ganzen Tag auf der Arbeit ohne Mobiltelefon,&#xA;ohne Kontakt zur Außenwelt,&#xA;wirklich richtig konzentriert arbeitet,&#xA;dann vergeht die Zeit wie im Fluge.&#xA;Hätte ich so auch nicht gedacht,&#xA;aber ist wirklich so.&#xA;Allerdings hatte ich Abends dann auch nicht mehr so viel Lust,&#xA;noch was in den Blog zu schreiben.&lt;/p&gt;&#xA;&lt;p&gt;Aber es gibt ein paar Neuigkeiten,&#xA;die ich gerne teilen möchte.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Und schon wieder sind zwei Wochen um.
Wie schnell doch die Zeit vergeht.
Wenn man den ganzen Tag auf der Arbeit ohne Mobiltelefon,
ohne Kontakt zur Außenwelt,
wirklich richtig konzentriert arbeitet,
dann vergeht die Zeit wie im Fluge.
Hätte ich so auch nicht gedacht,
aber ist wirklich so.
Allerdings hatte ich Abends dann auch nicht mehr so viel Lust,
noch was in den Blog zu schreiben.</p>
<p>Aber es gibt ein paar Neuigkeiten,
die ich gerne teilen möchte.</p>
<h2 id="neue-kopfhörer">Neue Kopfhörer</h2>
<p>Ich habe für uns - nötig oder nicht - neue Kopfhörer gekauft.
Die bisherigen Sennheiser die wir auch auf der Arbeit benutzen sind gut,
aber liegen auf den Ohren auf.
Das hat mich schon immer irgendwie gestört.
Ich habe große Ohren die ein klein wenig abstehen.
Dadurch rutschen die Kopfhörer immer ein Stück nach vorne
und ich muss alle fünf Minuten die Kopfhörer wieder auf die Ohren schieben.
Das hat jetzt ein Ende.</p>
<p>Die <a href="https://steelseries.com/gaming-headsets/arctis-7">Steelseries Arctis 7</a> sind tolle Kopfhörer.
Nicht nur,
dass die gut sitzen und einen angenehmen Anpressdruck haben,
sie sind auch wirklich komfortabel,
wenn man sie über mehrere Stunden auf dem Kopf hat.
Das ungewöhnliche Design mit dem Aluminiumband und dem Gummiband zeigt,
dass es auch anders geht.
Das Gummiband passt sich der Kopfform an
und so entsteht kein unangenehmer Druck.
Der Sound ist gut
und bringt Tiefen und Höhen gut zur Geltung.
Den Equalizer sollte man aber auf gar keinen Fall vergessen einzuschalten,
klingen die Kopfhörer doch recht flach,
wenn man sie nicht korrekt einstellt.</p>
<p>Das Mikrofon lässt sich im Kopfhörer verstecken
und kann bei Bedarf ausgezogen werden.
Das macht es sehr komfortable,
wenn man den Kopfhörer mal im Rucksack verstauen will
und so nicht Gefahr läuft,
das Mikrofon zu beschädigen.</p>
<p>Weiterhin finde ich die Arctis 7 gut,
weil es die für mich perfekten Features liefert.
Neben der Möglichkeit über das Adapterkabel das Headset auch an einer Switch zu benutzen,
kann ich am PC zwei Audio-Geräte auswählen.
Einmal den Eintrag <em>Kopfhörer (Arctis 7 Game)</em>
und einmal <em>Kopfhörer (Arctis 7 Chat)</em>.
Am Kopfhörer selber kann man an der rechten Ohrmuschel
zwischen diesen beiden Geräten die Lautstärke verschieben.
Quasi ein Fader für die beiden Kanäle.
Damit lässt sich die Lautstärke von Spiel und Sprachchat (Teamspeak/Discord) sehr gut einstellen.
Die Mixer-App unter Windows oder macOS muss ich damit gar nicht mehr öffnen.</p>
<p>Am 2,4GHz Dongle, das Arctis 7 hat kein Bluetooth,
gibt es noch einen Line-In und Line-Out Anschluss.
Wer noch Desktop-Lautsprecher hat,
kann hier die Lautsprecher in den Line-Out einstecken,
die dann beschallt werden,
wenn man das Headset ausschaltet.
Finde ich gut,
leider jedoch ist hier ein Designfehler.
Das Loch zum Einstecken liegt weit hinten im Dongle
und mein Stecker vom Lautsprecher passt da leider nicht rein.
Damit das funktioniert,
stellt man die Standardaudioausgabe auf Kopfhörer (Arctis 7 Game).</p>
<p><a href="https://steelseries.com/gaming-headsets/arctis-7">Arctis 7 Gaming Headset</a>
Nach nun knapp 48h Benutzung würde ich schon mal eine klare Empfehlung aussprechen.
Mal schauen wie sich die Akkulaufzeit gibt
und wie komfortabel sich die Kopfhörer über die nächsten Wochen tragen lassen.</p>
<h2 id="signal">Signal</h2>
<p>Wir haben im Team immer über WhatsApp kommuniziert.
Nach meinem Austritt aus der WhatsApp Welt haben es nach 3 Monaten immerhin schon mal 4 von 5 Leuten geschafft,
sich bei Signal anzumelden.
Leider wird immer noch viel zu viel über WA geteilt.
Glaube ich.
Bin ja nicht mehr dabei.</p>
<p>Eine Gruppe wie auf WA haben wir aber immer noch nicht.
Muss auch nicht mehr.
Denn bis auf die kurzen Ansagen,
dass man noch im Verkehr hängt
oder wenn man mal verschlafen hat,
gibt es so nicht mehr.
Homeoffice und so.
Aber es ist schön,
wenn die Leute langsam zu Alternativen wechseln.</p>
<h2 id="was-war-sonst-noch">Was war sonst noch?</h2>
<p>Die Maus hatte Geburtstag.
Nachträglich herzlichen Glückwunsch!</p>
<p><a href="https://www1.wdr.de/unternehmen/der-wdr/unternehmen/maus-geburtstag-prominente-gratulieren-100.html">“Happy Birthday, liebe Maus!”: Prominente gratulieren</a></p>
<p>Als Zusatz für Safari: <a href="https://apps.apple.com/de/app/hush-nag-blocker/id1544743900">Hush Nag Blocker</a>.</p>
<blockquote>
<p>Browse the web like it should be – free of nags to accept cookies or privacy invasive tracking. It’s tiny, fast, free, open, secure and without any access to your data. “I’d recommend Hush to anyone who uses Safari”— John Gruber, Daring Fireball SECURE AND PRIVATE Hush doesn’t have any third par…</p>
</blockquote>
<p>Funktioniert ganz gut.
Benutze es zusammen mit <a href="https://adguard.com/de/adguard-ios-pro/overview.html">AdGuard Pro</a>.
1Blocker gibt es auch noch,
finde ich aber nicht so toll.
Hush ist kostenfrei und funktioniert für mich.
Auf iOS und macOS.</p>
<p>Ich schreibe fast alle meine Notizen in Markdown.
Da ist es gut,
dass sich mal einer hingesetzt und sich die vielen Editoren angeschaut hat.</p>
<p><a href="https://sixcolors.com/post/2021/03/searching-for-the-perfect-ios-markdown-writing-tool/">Searching for the perfect iOS Markdown writing tool</a></p>
<blockquote>
<p>I love writing on my iPad. The mere act of getting up from my desk and switching away from my iMac can help me break out of a rut and be more productive. I frequently write in my backyard and at my…</p>
</blockquote>
<p>Und noch mehr zu lesen gibt es beim <a href="https://happybuddha1975.de/10-kw-2021/">fröhlichen Buddha Jürgen</a> oder beim <a href="https://monstropolis.wordpress.com/category/krims-krams/">Monstropolis</a>.
Viel Spaß beim Stöbern.</p>
<p>Das war es auch schon.
Nicht viel wie man sieht.
Eigentlich wollte ich noch den Garten sauber gemacht habe,
aber Sturm, Regen und eine kurze Kältefront haben das verhindert.
Warten wir noch ein paar Tage bis die Temperaturen über 15 Grad steigen.
Dann kann ich auch endlich mal wieder mein Auto waschen.
Hat es das doch dringen nötig.</p>
<p>Einen schönen Sonntag noch.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Frühjahrsputz, Datenlecks und Motivation</title>
      <link>https://cbrueggenolte.de/fruehjahrsputz-datenlecks-und-motivation/</link>
      <pubDate>Sun, 28 Feb 2021 12:34:17 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/fruehjahrsputz-datenlecks-und-motivation/</guid>
      <description>&lt;p&gt;Einen wunderschönen Sonntagnachmittag wünsche ich dir.&#xA;Eine weitere Woche ist vorbei&#xA;und es gibt da doch ein paar Dinge,&#xA;die ich aufschreiben möchte.&#xA;Hat es in der letzten Zeit etwas an Motivation gemangelt?&#xA;Das soll ja ab und zu auch mal vorkommen,&#xA;obwohl ich ja eigentlich mindestens alle zwei, drei Tage was schreiben wollte.&lt;/p&gt;&#xA;&lt;p&gt;Auch ist mir aufgefallen,&#xA;dass ich mich glaube ich in den Wochenzahlen vertan habe.&#xA;Daher hier nun die Woche Acht&#xA;und nicht wie ursprünglich gedacht Woche Neun.&#xA;Die kommt nämlich erst noch.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Einen wunderschönen Sonntagnachmittag wünsche ich dir.
Eine weitere Woche ist vorbei
und es gibt da doch ein paar Dinge,
die ich aufschreiben möchte.
Hat es in der letzten Zeit etwas an Motivation gemangelt?
Das soll ja ab und zu auch mal vorkommen,
obwohl ich ja eigentlich mindestens alle zwei, drei Tage was schreiben wollte.</p>
<p>Auch ist mir aufgefallen,
dass ich mich glaube ich in den Wochenzahlen vertan habe.
Daher hier nun die Woche Acht
und nicht wie ursprünglich gedacht Woche Neun.
Die kommt nämlich erst noch.</p>
<h2 id="frühjahrsputz">Frühjahrsputz</h2>
<p>So langsam wird es draußen wieder wärmer
und damit gehen auch immer mehr Leute wieder mehr vor die Tür.
Das tut zum einen gut,
zum anderen ist es aber auch immer noch nicht ganz “ungefährlich”.
Gut bestellt sind die,
die einen Garten haben.</p>
<p>Unser Garten/Hof,
wir haben ja nur Pflastersteine und keinen Rasen,
bedarf einer Reinigung von Moos und Grünspan.
Außerdem haben die Palettensitzmöbel doch etwas gelitten
und dort wo die Nägel sind,
haben sich unschöne Rostflecken gebildet.
Ich werde also nicht drumherum kommen,
ein wenig Farbe zu kaufen,
um den Paletten einen weiteren Anstrich zu verpassen.
Bei schönem Wetter ist das aber alles kein Problem
und macht auch noch Spaß
und man ist an der frischen Luft.</p>
<p>Abgesehen davon wird meine Frau wieder einen Haufen an Blumen bestellen
und dann haben wir es den Sommer über schön bunt um uns herum.
Dann ist das mit dem fehlenden Rasen auch nicht ganz so schlimm.
Ärgere ich mich doch auch immer ein wenig,
wenn der Nachbar sonntags früh um 10:00 Uhr mit dem Handrasenmäher seine 20qm Rasen auf Länge bringt.
(War nur Spaß :-))</p>
<p>Sobald es also so warm wird,
dass man wieder draußen sitzen kann,
spätestens doch vor Ostern,
wird der Hochdruckreiniger gute Arbeit leisten müssen.</p>
<h2 id="comb---compilation-of-many-breaches">C.O.M.B. - Compilation of Many Breaches</h2>
<p>Diese Datenbank hat es wirklich in sich.
Dabei geht es nicht darum, wie alt die Daten sind,
sondern dass sie in einer großen, riesigen und leicht zugänglichen Art und Weise aufbereitet sind.</p>
<p>Die Datenbank enthält über 3.2 Milliarden einzigartige E-Mail- und Passwort-Kombinationen.
Dabei geht es nicht darum,
dass diese Daten Zugang zu einem E-Mail-Postfach gewähren,
sondern es sind Login-Daten zu bekannten Webseiten wie LinkedIn, Netflix, Exploit.it, Bitcoin und mehr.</p>
<p>Ich kann wirklich nur dazu anraten,
sich einen Passwortmanager anzuschaffen,
damit man einigermaßen den Überblick über seine ganzen Accounts und Logins behält.
Auch sollte man sich von Zeit zu Zeit mal wirklich die Zeit nehmen
und alte Accounts, die man nicht mehr braucht, zu löschen!</p>
<blockquote>
<p>More than 3.2 billion unique pairs of plain text emails and passwords have been leaked for free.
This makes it the largest compilation ever.</p>
</blockquote>
<p><a href="https://cybernews.com/news/largest-compilation-of-emails-and-passwords-leaked-free/">COMB - Biggest Data Breach of All Time Explained | CyberNews</a></p>
<p>Anekdote am Rande: Einer meiner Arbeitskollegen ist davon überzeugt,
dass er das nicht braucht
und diese ganzen Leaks und Passwortlisten von den Herstellern der Passwortmanager kommen,
damit man deren Software kauft.
Also manchmal…</p>
<p>Dazu gibt es von <a href="https://twit.tv/shows/security-now/episodes/806">Security Now auch die hörenswerte Folge 806 C.O.M.B</a>
und die <a href="https://www.grc.com/sn/sn-806-notes.pdf">Show-Notes</a>
mit dem <a href="https://www.grc.com/sn/sn-806.htm">Transkript</a>
auf der <a href="https://www.grc.com/securitynow.htm">Security Now Webseite von Steve Gibson</a>.</p>
<blockquote>
<p>Florida Water Supply Hack Update, Major Patch Tuesday, Android SHAREit Vulnerability
<a href="https://twit.tv/shows/security-now/episodes/806">C.O.M.B. | TWiT.TV</a></p>
</blockquote>
<h2 id="sehenswerte-vorträge-vom-rc3">Sehenswerte Vorträge vom rC3</h2>
<blockquote>
<p>Wer die ersten Wochen des Jahres sinnvoll nutzen möchte,
kann viele gute Vorträge von der Remote Chaos Experience (rC3) online ansehen.
Eine kleine Auswahl.</p>
</blockquote>
<p><a href="https://digitalcourage.de/blog/2021/sehenswerte-vortraege-rc3">Sehenswerte Vorträge vom rC3 | Digitalcourage</a></p>
<p>Wer noch nicht in den Genuss einiger Vorträge vom remote Chaos Communication Congress gekommen ist,
dem möchte ich die <a href="https://digitalcourage.de/blog/2021/sehenswerte-vortraege-rc3">Liste von digitalcourage</a> empfehlen.
Kann man sich immer noch mal ansehen,
wenn es im Frühling doch noch mal regnen sollte.</p>
<h2 id="mein-kleines-project-yarlg">Mein kleines Project “YARLG”</h2>
<p>Das Project nimmt Form an
und ich bin ein kleines Stückchen weiter gekommen.</p>
<p>Immerhin kann ich mich jetzt schon mal durch Höhlen bewegen
und das auf mehreren Ebenen.
Die meiste Zeit in der letzten Woche habe ich jedoch damit verbracht,
die Grafikbibliothek ein wenig auf Vordermann zu bringen
und neue Schriftarten bzw. Glyphensätze installiert und ausprobiert.
Die <a href="https://github.com/cblte/asciipanel">AsciiPanel</a> Bibliothek enthält neben vielen Kommentaren
nun auch ein kleines Beispiel,
wie man ein Fenster erstellt und Text ausgibt.</p>
<blockquote>
<p>A java control that displays as an ascii terminal using code page 437. - cblte/AsciiPanel
<a href="https://github.com/cblte/asciipanel">cblte/AsciiPanel</a></p>
</blockquote>
<h2 id="diablo-4-und-diablo-2">Diablo 4 und Diablo 2</h2>
<p>Blizzard hat mit neuen Trailern die Spannung auf Diablo 4 ein weiteres Mal erhöht.
Mit dem Trailer für die Jägerin zeigen sie wieder einmal,
wie man so etwas macht.
Wenn man mal vom Inhalt absieht,
sind die Trailer von Blizzard qualitativ echt gut
und machen Laune auf mehr!</p>
<h3 id="diablo-2-resurrected">Diablo 2: Resurrected</h3>
<p>Außerdem gab es die Woche mit der Ankündigung Diablo 2 neu aufzulegen,
eine weitere tolle Ankündigung.
Auch wenn für <a href="https://diablo2.blizzard.com/de-de/">Diablo 2 Resurrected</a> wohl noch mal 40 Euro fällig werden,
werde ich mir das mit sehr großer Wahrscheinlichkeit zulegen.</p>
<p>Da kommen Erinnerungen hoch, sag ich dir.
An durchgezockte Nächte mit Freunden auf der Jagd nach dem nächsten und besseren Item
und um noch eine Stufe höher zu kommen.
Ans Kuhlevel und viele weitere tolle Dinge,
die man in D2 so machen konnte.</p>
<hr>
<p>Damit einen guten Start in die Woche und einen schönen Sonntag noch.
Genießt das schöne Wetter.</p>
<p><em>Beitrag 74 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Scharfe Messer und analoge Lösungen</title>
      <link>https://cbrueggenolte.de/scharfe-messer-und-analoge-loesungen/</link>
      <pubDate>Wed, 24 Feb 2021 09:38:47 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/scharfe-messer-und-analoge-loesungen/</guid>
      <description>&lt;p&gt;HORL 2 Rollschleifer WebseiteMeine Frau hat sich am Wochenende mit dem Schärfen von Messer auseinandergesetzt.&#xA;Denn, wir haben wohl doch recht gute Küchenmesser, aber so wirklich scharf sind die halt nicht mehr.&lt;/p&gt;&#xA;&lt;p&gt;Um den Messern erneut eine “gute” Schärfe zu verleihen, hatte ich vor ein paar Jahren&#xA;(ja ich glaube es sind schon Jahre) so ein&#xA;&lt;em&gt;&lt;a href=&#34;https://www.amazon.de/dp/B07YSB5WWK/&#34;&gt;Messer-Schleif-Durchzieh-Apparillo-Dingsda&lt;/a&gt;&lt;/em&gt; gekauft.&#xA;Das mit dem Messer durchziehen klappt auch so ganz O.K., aber wirklich lange sind die Messer nicht scharf.&#xA;Abgesehen davon, dass meine Frau das Ding überhaupt nicht mag, es quietscht ihr zu sehr,&#xA;kommen wir beide mit dem Wetzstahl auch nicht zurecht.&#xA;Winkel und Ziehrichtung, Geschwindigkeit und was auch immer.&#xA;Es klappt halt nicht.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>HORL 2 Rollschleifer WebseiteMeine Frau hat sich am Wochenende mit dem Schärfen von Messer auseinandergesetzt.
Denn, wir haben wohl doch recht gute Küchenmesser, aber so wirklich scharf sind die halt nicht mehr.</p>
<p>Um den Messern erneut eine “gute” Schärfe zu verleihen, hatte ich vor ein paar Jahren
(ja ich glaube es sind schon Jahre) so ein
<em><a href="https://www.amazon.de/dp/B07YSB5WWK/">Messer-Schleif-Durchzieh-Apparillo-Dingsda</a></em> gekauft.
Das mit dem Messer durchziehen klappt auch so ganz O.K., aber wirklich lange sind die Messer nicht scharf.
Abgesehen davon, dass meine Frau das Ding überhaupt nicht mag, es quietscht ihr zu sehr,
kommen wir beide mit dem Wetzstahl auch nicht zurecht.
Winkel und Ziehrichtung, Geschwindigkeit und was auch immer.
Es klappt halt nicht.</p>
<p><a href="https://freakshow.fm/fs252-keine-grobe-feinheit">FS252 Keine grobe Feinheit</a></p>
<p>Weil ich mich aber an die
<a href="https://freakshow.fm/fs252-keine-grobe-feinheit?t=2%3A53%3A58%2C3%3A07%3A13">Freakshow-Sendung 252 “<em>Keine grobe Feinheit</em>&quot;</a>
vor ein paar Monaten erinnert habe, haben wir uns nun einen
<a href="https://www.horl.com/de_de">HORL Rollschleifer</a> bestellt.
Auch wenn das Teil mit seinen 140 Euro ziemlich teuer erscheint,
so vertraue ich dem Hukl wenn er sagt: ““Da geht noch was!”.</p>
<p>Jetzt heißt es aber noch ein paar Tage abwarten bis der
<a href="https://www.horl.com/de_de/rollschleifer/horl2">HORL 2 Rollschleifer</a> bei uns eintrifft.
Ich werde berichten, wie gut das wirklich funktioniert.
Das Internet zumindest (YouTube und Co) sind ziemlich begeistert von dem Teil, hoffentlich wir auch.
Endlich wieder scharfe Messer.</p>
<p><em>Beitrag 73 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Briefmarken, Matrixcodes und digitale Halbherzigkeit</title>
      <link>https://cbrueggenolte.de/briefmarken-matrixcodes-und-digitale-halbherzigkeit/</link>
      <pubDate>Fri, 12 Feb 2021 06:13:33 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/briefmarken-matrixcodes-und-digitale-halbherzigkeit/</guid>
      <description>&lt;p&gt;Meine Frau hat mich gestern Abend auf die neue Briefmarke der Deutschen Post hingewiesen.&#xA;Wow!&#xA;Digitale Briefmarken?&#xA;“Cool” habe ich gedacht,&#xA;endlich wie in den Niederlanden einfach einen Code in der App bestellen,&#xA;auf den Umschlag schreiben und ab in den Briefkasten.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Durch Scannen des Matrixcodes auf der Briefmarke&#xA;können Sie Informationen zur Basis-Sendungsverfolgung Ihres Briefes und zum Briefmarkenmotiv per Post &amp;amp; DHL App abrufen.&#xA;&lt;a href=&#34;https://www.deutschepost.de/de/b/briefmarke-mit-matrixcode.html&#34;&gt;Briefmarke mit Matrixcode&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Aber nein, falsch gedacht.&#xA;Es ist eine richtige Briefmarke, aus Papier, mit Kleber, zum Aufdrücken.&#xA;WTH?!?!?&#xA;Wir haben 2021 und ich soll immer noch &lt;a href=&#34;https://shop.deutschepost.de/digitaler-wandel-briefmarke-zu-0-80-eur-10er-bogen?tid=DP_101003319&#34;&gt;Briefmarken im Laden kaufen&lt;/a&gt;,&#xA;um sie auf einen Umschlag zu kleben?&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Meine Frau hat mich gestern Abend auf die neue Briefmarke der Deutschen Post hingewiesen.
Wow!
Digitale Briefmarken?
“Cool” habe ich gedacht,
endlich wie in den Niederlanden einfach einen Code in der App bestellen,
auf den Umschlag schreiben und ab in den Briefkasten.</p>
<blockquote>
<p>Durch Scannen des Matrixcodes auf der Briefmarke
können Sie Informationen zur Basis-Sendungsverfolgung Ihres Briefes und zum Briefmarkenmotiv per Post &amp; DHL App abrufen.
<a href="https://www.deutschepost.de/de/b/briefmarke-mit-matrixcode.html">Briefmarke mit Matrixcode</a></p>
</blockquote>
<p>Aber nein, falsch gedacht.
Es ist eine richtige Briefmarke, aus Papier, mit Kleber, zum Aufdrücken.
WTH?!?!?
Wir haben 2021 und ich soll immer noch <a href="https://shop.deutschepost.de/digitaler-wandel-briefmarke-zu-0-80-eur-10er-bogen?tid=DP_101003319">Briefmarken im Laden kaufen</a>,
um sie auf einen Umschlag zu kleben?</p>
<p>Wie oft hat man einen Bogen gekauft,
um dann nach ein oder zwei Jahren festzustellen,
dass ich mit der Erhöhung des Portos nun noch drei weitere Briefmarken aufkleben darf.
Ich glaube mich an einen Brief mit 6 Briefmarken zu erinnern,
um das erforderliche Porto zu erreichen.
Oder an die 42ct Briefmarke und was weiß ich noch alles für seltsame Auswüchse im Porto-Dschungel der letzten Jahre.
Was für ein Quatsch.
Ganz ehrlich.
Und jetzt gibt es das Ding auch noch mit einem Matrix-Code?
Hurray!
Vor allen Dingen ist über den Code nur eine Basis-Verfolgung enthalten.</p>
<blockquote>
<p>Sie erhalten eine Statusinformation,
wann und in welchem unserer Logistikzentren Ihre Sendung in den Sortiermaschinen bearbeitet wurde,
und an welchem Tag die Sendung in die Zustellung geht.
Eine Bestätigung über die tatsächlich erfolgte Zustellung
ist nicht Teil der Sendungsverfolgung von Briefmarken mit Matrixcode.
Wenn ein Nachweis der Zustellung benötigt wird,  empfehlen wir unsere Zusatzleistung.
(Quelle <a href="https://www.deutschepost.de/de/b/briefmarke-mit-matrixcode.html">DeutschePost</a>)</p>
</blockquote>
<p>Hurray!
Das ist ja voll super,
dass ich weiß,
dass der Brief zumindest bearbeitet wurde.
Wann er jedoch beim Empfänger ankommt,
wird mir anscheinen nicht angezeigt.
Welchen wirklichen Mehrwert soll das bieten,
außer dass mir Zusatzinformationen zur Briefmarke angezeigt werden,
die auch auf der Webseite der Post einsehbar sind.</p>
<p>Naja, aber neben der ganzen Meckerei sollten wir glaube ich froh sein,
dass die Post sich dem digitalen Zeitalter zu nähern scheint.
Es wäre aber auch zu schön,
wenn ich anstatt einer Briefmarke einfach einen Code auf den Umschlag schreiben könnte,
den ich zuvor in der App oder über die Webseite gekauft habe.
Spart Papier und funktioniert genauso gut.
Sorry, ihr Briefmarkensammler.</p>
<blockquote>
<p>Mobile Briefmarke: Briefe einfach mit dem Handy frankieren!
Porto in der Post &amp; DHL App wählen,
mit PayPal bezahlen,
Code auf den Brief oder Postkarte schreiben,
fertig!
<a href="https://www.deutschepost.de/de/m/mobile-briefmarke.html">Mobile Briefmarke</a></p>
</blockquote>
<p>Aber halt, das mit dem Code und der App und Webseite geht tatsächlich schon.
Seit 2009 sogar.
Doof nur, dass der 8-stelligen Code per SMS (WTH) angefordert werden muss
und dann auch noch 99ct anstelle der 80ct kostet, für eine Postkarte.
Ein Brief kostet sogar 1,29 Euro.
Liebe Post, sagt mal: Geht’s noch?
Ein Produkt das digital und ohne Arbeitsaufwand erzeugt wird,
kostet dann auch noch mehr und ist auch nur innerhalb Deutschlands möglich.</p>
<p>Danke an <a href="https://jlelse.blog/">Jan</a> für den Hinweis:
in der <a href="https://apps.apple.com/de/app/post-dhl/id329315203">Post &amp; DHL App</a>
können Codes für den normalen Preis von 80ct mit Paypal erstanden werden.</p>
<p>Das ist gut.</p>
<p>Wenn du jetzt etwas ins Ausland schicken willst,
dann kannst du dir eine Internetmarke ausdrucken und aufkleben.
Die Briefmarke zum selber drucken.
Immerhin kostet diese “Briefmarke” keinen Aufpreis.
Abgesehen von Druckertoner und der Seite Papier,
von der man nur einen kleinen Teil für den Druck benötigt.</p>
<hr>
<p>Nicht alles ist schlecht.
Die Internetmarke ist schon mal ein Schritt in die richtige Richtung.
Dennoch, so finde ich, kompliziert und aufwändig.
<a href="https://www.dpdhl.com/de/presse/pressemitteilungen/2020/deutsche-post-und-dhl-paket-kuendigen-neue-digitale-services-zur-qualitaetsverbesserung-an.html">Die Post arbeitet an einer Digitalisierung ihrer System</a>,
was viele neue Services bringen soll.</p>
<p>Was mich aber mehr freuen würde wäre,
wenn wir das endlich mal mit dem Personalausweis geregelt bekommen würden.
Ich möchte endlich meine Dokumente digital unterschreiben
und dann auch per verschlüsselter E-Mail sicher an eine Behörde senden könnte.
Leider geht das im Jahre 2021 in Deutschland immer noch nicht.</p>
<p>Wenn wir irgendwann mal in ein paar Jahren zurückkommen,
dann graut es mir ein wenig.
Denn was die Behörden in den Niederlanden angeht,
sind die zumindest in Sachen Digitalisierung,
um Jahre voraus.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Der digitale Personalausweis und Deutschlands Tempo</title>
      <link>https://cbrueggenolte.de/der-digitale-personalausweis-und-deutschlands-tempo/</link>
      <pubDate>Thu, 11 Feb 2021 07:44:07 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/der-digitale-personalausweis-und-deutschlands-tempo/</guid>
      <description>&lt;p&gt;Manchmal frage ich mich,&#xA;was in Deutschland so grundlegend verkehrt läuft,&#xA;dass dieses Online-E-Perso-Ding so lange dauert.&#xA;Vor drei Jahren, bevor wir Deutschland verlassen haben,&#xA;haben wir noch neue Personalausweise beantragt.&#xA;Auch habe ich mir ein Lesegerät dafür gekauft,&#xA;um den Perso dann auch digital nutzen zu können.&#xA;Doch die Auswahl an Möglichkeiten war 2018/2019 sehr beschränkt.&#xA;Bis auf die Steuererklärung gab es für Privatanwender quasi nichts,&#xA;was sich mit dem digitalen Teil des Personalausweises erledigen ließe.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Manchmal frage ich mich,
was in Deutschland so grundlegend verkehrt läuft,
dass dieses Online-E-Perso-Ding so lange dauert.
Vor drei Jahren, bevor wir Deutschland verlassen haben,
haben wir noch neue Personalausweise beantragt.
Auch habe ich mir ein Lesegerät dafür gekauft,
um den Perso dann auch digital nutzen zu können.
Doch die Auswahl an Möglichkeiten war 2018/2019 sehr beschränkt.
Bis auf die Steuererklärung gab es für Privatanwender quasi nichts,
was sich mit dem digitalen Teil des Personalausweises erledigen ließe.</p>
<p><a href="https://www.tagesschau.de/inland/personalausweis-elektronisch-101.html">Laura Koppenhöfer für Tagesschau.de</a> schreibt:</p>
<blockquote>
<p>Kabinettsbeschluss: Handy-Personalausweis ab September</p>
<p>Bisher nutzt fast niemand die Online-Funktionen des elektronischen Personalausweises.
Die Bundesregierung will die Nutzung nun vereinfachen.
Künftig kann er auch auf dem Handy gespeichert werden.</p>
</blockquote>
<p>Ursprünglich habe ich ja gedacht,
dass ich damit dann auch Dokumente rechtssicher unterschreiben kann.
Pustekuchen!
Auch wenn einige Zertifikate auf dem Ausweis vorhanden sind,
so ist doch keines davon geeignet,
Dokumente zu unterschreiben/zu signieren.
Die Webseite der Bundesdruckerei, der Bundesanwaltschaft (oder so)
und auch der Dienst der Sparkasse haben hier keine Abhilfe geschaffen.
Dabei war der Dienst der Sparkasse schon seit längerer Zeit eingestellt,
die Bundesanwaltkammer (oder so) hat mir mitgeteilt,
dass ich, sobald ich Anwalt bin, dann ein Zertifikat beantragen könne
und die Bundesdruckerei hat gar nicht geantwortet.
Alternative Zertifikat-Austeller-Dienste verlangen teilweise horrende Summen pro Jahr.
Also für den Privatanwender auch keine wirkliche Alternative.</p>
<p>Wollen wir hoffen,
dass es dieses Jahr, nachdem wir ja schon soooo viel geschafft haben,
dann doch vielleicht besser wird.</p>
<p>p.s.: Hinweise an dieser Stelle:
Du hast noch bis zum 30. Juli 2021 Zeit,
dir einen neuen Person ohne Fingerabdruck zu bestellen.
Ab dem 2. August wird der Fingerabdruck im Person nämlich Pflicht.</p>
<blockquote>
<p>Ab 2. August 2021 gilt der Zwang zur Speicherung von Fingerabdrücken auf Personalausweisen.</p>
<p>Es ist Zeit, #PersoOhneFinger zu beantragen.
Weitersagen!</p>
</blockquote>
<p>Link » <a href="https://digitalcourage.de/blog/2021/personalausweis-ohne-fingerabdruecke">Personalausweis ohne Fingerabdrücke beantragen! #PersoOhneFinger | Digitalcourage</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Factorio 1.1 – The Factory Must Grow</title>
      <link>https://cbrueggenolte.de/factorio-1-1-the-factory-must-grow/</link>
      <pubDate>Sat, 30 Jan 2021 11:34:02 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/factorio-1-1-the-factory-must-grow/</guid>
      <description>&lt;p&gt;Endlich ist sie da! Die Version 1.1.0 Stable. Mit so vielen tollen Neuerungen,&#xA;dass ich gar nicht weiß, wo ich anfangen soll.&#xA;Ich meine, so viel habe ich über Factorio in den letzten Monaten,&#xA;oder eher Jahren, ja auch gar nicht geschrieben. Egal.&lt;/p&gt;&#xA;&lt;p&gt;Im Dezember hatte ich mich nach 4 Jahre Pause dann nämlich wieder mit dem offiziellen Release von Version 1.0 dran begeben,&#xA;ein letzter Erfolg hat mir ja noch gefehlt.&#xA;Das war dann auch lustigerweise genau nach 4 Jahren erreicht.&#xA;Eine lange Zeit, hatte ich doch auch nicht viel gespielt.&#xA;Und nun gibt es mit Version 1.1. noch mal viele schöne neue Features.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Endlich ist sie da! Die Version 1.1.0 Stable. Mit so vielen tollen Neuerungen,
dass ich gar nicht weiß, wo ich anfangen soll.
Ich meine, so viel habe ich über Factorio in den letzten Monaten,
oder eher Jahren, ja auch gar nicht geschrieben. Egal.</p>
<p>Im Dezember hatte ich mich nach 4 Jahre Pause dann nämlich wieder mit dem offiziellen Release von Version 1.0 dran begeben,
ein letzter Erfolg hat mir ja noch gefehlt.
Das war dann auch lustigerweise genau nach 4 Jahren erreicht.
Eine lange Zeit, hatte ich doch auch nicht viel gespielt.
Und nun gibt es mit Version 1.1. noch mal viele schöne neue Features.</p>
<ul>
<li>Blueprints können endlich auch gepielgelt werden.</li>
<li>Das erspaart einem so einige Neubauten.</li>
<li>Der neue Spidertron kann jetzt über mehrere Wegpunkte hinweg gesteuert werde und man kann es so einstellen,</li>
<li>dass mehrere Spidertron einem folgen.</li>
<li>Das Verlegen von Transportbändern ist nun etwas besser und ist etwas smarter geworden.</li>
<li>Außerdem werden automatisch Untergrundbänder bei Hindernissen platziert.</li>
<li>Es gibt endlich ein neues HMI für die Züge.</li>
<li>Das alte Interface wurde ziemlich unübersichtliche, wenn es mehr als 10 oder 20 Züge wurden.</li>
<li>Das Neue hat nun eine Liste mit allen Zügen und es lässt sich auch nach Zügen suchen. Super!</li>
<li>Das Speichern wurde erheblich verbessert und die Karten speichern nun rund 20% schneller.</li>
<li>Ist bei einigen Spielständen mit über 100MB Größe, schon eine ziemliche Verbesserung.</li>
</ul>
<p>Die Patch-Notes mit den vielen bewegten Bildern gibt es hier:</p>
<blockquote>
<p>Hello, we have a stable version! When we were releasing the 1.0 FFF-360,
we actually stated that there were “around 150 bugs on the forums and around 80 internal tasks to be solved”.
These were obviously minor issues, things hard to reproduce or very rare problems. In other words,…</p>
</blockquote>
<p>Link » <a href="https://factorio.com/blog/post/fff-364">Friday Facts #364 - 1.1 stable | Factorio</a></p>
<p>Und nun, viel Spaß beim Spielen. <em><strong>The Factory must grow!</strong></em></p>
<p><a href="https://factorio.com/support/press-kit">Bild ist von Wube-FFF364</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Digitale Privatsphäre und Verschlüsselung</title>
      <link>https://cbrueggenolte.de/digitale-privatsphaere-und-verschluesselung/</link>
      <pubDate>Fri, 29 Jan 2021 14:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/digitale-privatsphaere-und-verschluesselung/</guid>
      <description>&lt;p&gt;In Zeiten, in denen WhatsApp die Einführung neuer Nutzungsbedingungen verschieben musste,&#xA;weil Nutzerinnen und Nutzer aufgrund mangelhafter Kommunikation und unklarer Datenschutzregeln abspringen,&#xA;ist es wichtiger denn je, über Datenschutz zu sprechen.&#xA;Die Corona‑Warn‑App scheiterte nicht an strikten Datenschutzregeln,&#xA;sondern an mangelnder Nutzung und fehlender Abstimmung der Behörden.&#xA;Solange weiterhin Faxe und Briefe mit Coupons für Masken verschickt werden, bleibt viel zu tun.&lt;/p&gt;&#xA;&lt;p&gt;Es ist nicht verwunderlich, dass einige EU‑Mitgliedstaaten versuchen, Ende‑zu‑Ende‑Verschlüsselung mittels Backdoors zu unterlaufen.&#xA;Die These lautet, man sei stärker auf digitale Beweise angewiesen, die aufgrund der Verschlüsselung nicht zugänglich seien.&#xA;Damit lasse sich Verbrechen und Terrorismus nicht ausreichend bekämpfen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In Zeiten, in denen WhatsApp die Einführung neuer Nutzungsbedingungen verschieben musste,
weil Nutzerinnen und Nutzer aufgrund mangelhafter Kommunikation und unklarer Datenschutzregeln abspringen,
ist es wichtiger denn je, über Datenschutz zu sprechen.
Die Corona‑Warn‑App scheiterte nicht an strikten Datenschutzregeln,
sondern an mangelnder Nutzung und fehlender Abstimmung der Behörden.
Solange weiterhin Faxe und Briefe mit Coupons für Masken verschickt werden, bleibt viel zu tun.</p>
<p>Es ist nicht verwunderlich, dass einige EU‑Mitgliedstaaten versuchen, Ende‑zu‑Ende‑Verschlüsselung mittels Backdoors zu unterlaufen.
Die These lautet, man sei stärker auf digitale Beweise angewiesen, die aufgrund der Verschlüsselung nicht zugänglich seien.
Damit lasse sich Verbrechen und Terrorismus nicht ausreichend bekämpfen.</p>
<p><a href="https://threema.ch/de/blog/posts/datenschutztag-2021">Datenschutztag 2021: Ein Reminder für den EU‑Rat</a></p>
<p><a href="https://threema.ch/press-files/1_press_info/dpd21-joint-statement-de.pdf">Die vier Internetdienstanbieter Threema, ProtonMail, Tresorit und Tutanota haben einen offenen Brief verfasst.</a></p>
<p>Die gemeinsame Stellungnahme der Anbieter ist unterstützenswert;
wir sollten darauf hinarbeiten, dass Ende‑zu‑Ende‑Verschlüsselung weiterhin unsere Privatsphäre schützt.</p>
<p>Verschlüsselung beruht auf Mathematik — sie ist eindeutig.
Wie die Anbieter ProtonMail, Threema, Tresorit und Tutanota in ihrem Gegenstatement formulieren:</p>
<blockquote>
<p>„Der aktuelle Entwurf der Resolution des EU‑Ministerrates
beruht auf einem eingeschränkten Verständnis der technischen Aspekte von Ende‑zu‑Ende‑Verschlüsselung.
Denn Ende‑zu‑Ende‑Verschlüsselung ist absolut: Daten sind entweder verschlüsselt oder nicht.“ (Quelle: Netzpolitik.org)</p>
</blockquote>
<blockquote>
<p>Vier europäische Software‑Unternehmen warnen vor dem jüngsten Vorstoß der EU‑Länder,
verschlüsselte Kommunikation brechen zu wollen.
Hintertüren würden die Datensicherheit in Europa bedrohen,
heißt es in einem gemeinsamen Schreiben am Europäischen Datenschutztag.</p>
</blockquote>
<p>Link » <a href="https://netzpolitik.org/2021/verschluesselung-sichere-kommunikationsanbieter-warnen-vor-hintertueren/">Verschlüsselung — Sichere Kommunikationsanbieter warnen vor Hintertüren</a></p>
<p>Falls Hintertüren eingeführt würden, wären die betroffenen Verschlüsselungen nicht mehr sicher.
Behörden und Nutzerinnen und Nutzer müssten dann auf andere Dienste ausweichen,
was die Sicherheitslage insgesamt verschlechtern würde.</p>
]]></content:encoded>
    </item>
    <item>
      <title>20 Jahre Wikipedia – Wissen im Wandel</title>
      <link>https://cbrueggenolte.de/20-jahre-wikipedia-wissen-im-wandel/</link>
      <pubDate>Fri, 15 Jan 2021 07:45:49 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/20-jahre-wikipedia-wissen-im-wandel/</guid>
      <description>&lt;p&gt;Die Wikipedia wird heute 20 Jahre alt. Herzlichen Glückwunsch!&#xA;Zu meiner Ausbildungszeit um ‘98-2001 fing das mit dem ganzen Online-Lexikon erst an&#xA;und ich kann mich noch gut daran erinnern,&#xA;dass ich damals immer mal wieder den Brockhaus aus dem Regal im Wohnzimmer gezogen haben.&#xA;Den Brockhaus gibt es nicht mehr und der Druck wurde schon vor Jahren eingestellt.&#xA;Aber seien wir mal ehrlich, wer würde sich heutzutage noch ein gedrucktes Lexikon kaufen wollen?  &lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die Wikipedia wird heute 20 Jahre alt. Herzlichen Glückwunsch!
Zu meiner Ausbildungszeit um ‘98-2001 fing das mit dem ganzen Online-Lexikon erst an
und ich kann mich noch gut daran erinnern,
dass ich damals immer mal wieder den Brockhaus aus dem Regal im Wohnzimmer gezogen haben.
Den Brockhaus gibt es nicht mehr und der Druck wurde schon vor Jahren eingestellt.
Aber seien wir mal ehrlich, wer würde sich heutzutage noch ein gedrucktes Lexikon kaufen wollen?  </p>
<blockquote>
<p>Gedruckte Enzyklopädien - das war einmal.
Heute sucht man überall auf der Welt in Wikipedia nach Fachwissen, es gibt Versionen in rund 300 Sprachen.
Doch der Erfolg ist nicht ohne Makel. Von Marcus Schuler.</p>
</blockquote>
<p>Link » <a href="https://www.tagesschau.de/ausland/amerika/wikipedia-jubilaeum-101.html">20 Jahre Wikipedia: Ort für gesammeltes Weltwissen</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>WhatsApp</title>
      <link>https://cbrueggenolte.de/whatsapp/</link>
      <pubDate>Thu, 07 Jan 2021 11:58:45 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/whatsapp/</guid>
      <description>&lt;p&gt;Damals, beim Kauf von WhatsApp hat Mark Zuckerberg noch getönt “Wir werden keine Daten mit WhatsApp teilen” Tja, von dem Versprechen ist nun nichts mehr geblieben.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Mit der Fusion der Whatsapp-, Instagram- und Messenger-Technik&#xA;beendet der Facebook-Chef die Unabhängigkeit der Apps endgültig.&#xA;Das macht den Weg frei für eine gigantische Datenbank über Milliarden Menschen.&#xA;(Quelle &lt;a href=&#34;https://www.sueddeutsche.de/digital/facebook-whatsapp-instagram-zuckerberg-fusion-1.4306126&#34;&gt;SZ.DE&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;WhatsApp ändert Nutzungsbedingungen: Daten werden mit Facebook geteilt Facebook teilt&#xA;und bekommt Informationen von WhatsApp-Nutzern.&#xA;Die Datenschutzerklärung ist angepasst worden.&#xA;Ohne Zustimmung gibt es keinen Zugriff mehr.&#xA;(Quelle &lt;a href=&#34;https://www.heise.de/news/WhatsApp-aendert-Nutzungsbedingungen-Daten-werden-mit-Facebook-geteilt-5005893.html&#34;&gt;heise.de&lt;/a&gt;)&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Damals, beim Kauf von WhatsApp hat Mark Zuckerberg noch getönt “Wir werden keine Daten mit WhatsApp teilen” Tja, von dem Versprechen ist nun nichts mehr geblieben.</p>
<blockquote>
<p>Mit der Fusion der Whatsapp-, Instagram- und Messenger-Technik
beendet der Facebook-Chef die Unabhängigkeit der Apps endgültig.
Das macht den Weg frei für eine gigantische Datenbank über Milliarden Menschen.
(Quelle <a href="https://www.sueddeutsche.de/digital/facebook-whatsapp-instagram-zuckerberg-fusion-1.4306126">SZ.DE</a>)</p>
</blockquote>
<blockquote>
<p>WhatsApp ändert Nutzungsbedingungen: Daten werden mit Facebook geteilt Facebook teilt
und bekommt Informationen von WhatsApp-Nutzern.
Die Datenschutzerklärung ist angepasst worden.
Ohne Zustimmung gibt es keinen Zugriff mehr.
(Quelle <a href="https://www.heise.de/news/WhatsApp-aendert-Nutzungsbedingungen-Daten-werden-mit-Facebook-geteilt-5005893.html">heise.de</a>)</p>
</blockquote>
<p>Wer jetzt noch die App auf seinem Telefon hat, sollte sich gut überlegen, ob er das wirklich will.
Besser löschen und auf Apps wie <strong>Signal</strong> oder <strong>Threema</strong> umsteigen.</p>
<ul>
<li><a href="https://signal.org/de/">Signal Messenger: Speak Freely</a></li>
<li><a href="https://threema.ch/de">Threema - Sicherer und privater Messenger</a></li>
</ul>
<p>Vielen Dank!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Was bisher geschah – Jahresauftakt 2021</title>
      <link>https://cbrueggenolte.de/was-bisher-geschah-jahresauftakt-2021/</link>
      <pubDate>Sun, 03 Jan 2021 14:47:55 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/was-bisher-geschah-jahresauftakt-2021/</guid>
      <description>&lt;p&gt;Ich wünsche euch allen ein frohes neues Jahr!&lt;/p&gt;&#xA;&lt;p&gt;Hoffentlich seit ihr entspannt und gesund ins Jahr gestartet.&#xA;Hier gab es leider sehr wenig Schlaf und es war so gar nicht entspannt.&#xA;Von Mittags an gab es Böller und in weiter bis naher Entfernung wurde die niederländische Tradition &amp;ldquo;Carbid-Schießen&amp;rdquo; gepflegt.&#xA;Meiner Meinung nach eine völlig sinnlose Knallerei die so viel Lärm verursacht,&#xA;dass man die Vibration unter den Füßen spürt und sich selbst die Fische in der hintersten Ecke vom Aquarium verstecken.&#xA;Der Kauf der Airpods Pro hat sich, zumindest aus Sicht meiner Frau, unheimlich gelohnt.&#xA;Die haben mit ANC schon sehr dazu beigetragen, dass es sich halbwegs aushalten ließ.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich wünsche euch allen ein frohes neues Jahr!</p>
<p>Hoffentlich seit ihr entspannt und gesund ins Jahr gestartet.
Hier gab es leider sehr wenig Schlaf und es war so gar nicht entspannt.
Von Mittags an gab es Böller und in weiter bis naher Entfernung wurde die niederländische Tradition &ldquo;Carbid-Schießen&rdquo; gepflegt.
Meiner Meinung nach eine völlig sinnlose Knallerei die so viel Lärm verursacht,
dass man die Vibration unter den Füßen spürt und sich selbst die Fische in der hintersten Ecke vom Aquarium verstecken.
Der Kauf der Airpods Pro hat sich, zumindest aus Sicht meiner Frau, unheimlich gelohnt.
Die haben mit ANC schon sehr dazu beigetragen, dass es sich halbwegs aushalten ließ.</p>
<p>Die Nachbarn haben erneut ein Lagerfeuer mit Paletten, alten Tonnen und Weihnachtsbäumen auf den Kreuzungen veranstaltet
und dicht gedrängt unter Alkoholeinfluss ordentlich geböllert.
Aber nicht überall in den Niederlanden war so viel Ungehorsam.
Es wurde hauptsächlich in den Großstädten viel geböllert.
Auf dem Land und in den kleinen Gemeinden ist es doch eher ruhig verblieben.
Da muss ich wirklich mal lobend nach Deutschland schauen.
Im WDR den Neujahrswechsel verfolgt und bis auf wirklich nur vereinzeltes Feuerwerk am Himmel,
war außer den Glocken vom Kölner Dom nichts zu hören.
So hätte ich mir das hier in Den Haag auch gewünscht.
Ein bißchen Neidisch bin ich dann schon, wenn ich Zeilen wie diese hier lese:</p>
<p><a href="https://www.tagesschau.de/inland/silvester-deutschland-117.html">Silvester in Deutschland: Ruhiger Start ins neue Jahr</a></p>
<p>Aber nichtsdestotrotz.
Heute ist Sonntag und das Schreiben tut mir gut und ich kann mir einiges von der Seele reden.
Das hat letztes Jahr wirklich gut getan und ich will das dieses Jahr auf jeden Fall weiterführen.
Vielleicht ein wenig mehr Meinung?
Vielleicht ein wenig mehr aus meinem Privatleben?
Mal schauen, was das Jahr so bringt.
Hoffentlich einen guten Impfstoff der wirkt und wir sind das <strong>scheiß Corona</strong> endlich los (den konnte ich mir jetzt nicht verkneifen und nein, die Umgangssprache kann hier ruhig so stehen bleiben).</p>
<h2 id="geburtstage">Geburtstage</h2>
<p>Unsere runden Geburtstage konnten wir letztes Jahr leider nur im kleinen Kreise feiern.
Vielleicht bekommen wir die Chance 2021 das in größerem Umfang nachzuholen.
Denn in diesem Jahr sind viele unsere Freunde mit der nächsten Null dran.</p>
<p>Einen herzlichen Glückwunsch an dieser Stelle auch an Greta Thunberg. Die ist heute nämlich 18 geworden.</p>
<blockquote>
<p>Greta Thunberg ist das Gesicht der globalen Klimabewegung. Corona hat ihr Thema lange von der Tagesordnung der Mächtigen verdrängt. Doch sie macht weiter und findet Mitstreiter nicht nur in ihrer Generation.</p>
</blockquote>
<p><a href="https://www.zdf.de/politik/auslandsjournal/greta-thunberg-die-kaempferin-108.html">Greta Thunberg - Die Kämpferin</a></p>
<h2 id="heimat-winterberg">Heimat Winterberg</h2>
<p>In Winterberg geht gerade die Post ab.
Nicht nur, dass das Städtchen im Sauerland von Touristen überrannt wird, nein, die Leute sind auch noch so unverschämt
und uneinsichtig, hinterlassen Müll und ihre Notdurft im Wald, auf den Seitenstraßen und -wegen und in manchen Vorgärten.
Widerlich ist das!
Bei manchen fragt man sich manchmal wirklich, ob die in einem Zuhause oder in einem Stall aufgewachsen sind.
Benehmen sich wie Schweine, obwohl das eine Beleidigung für die Schweine wäre.</p>
<p>Uns erreichen seit ein paar Tagen unfassbare Bilder der Verwandtschaft. Man will das teilweise gar nicht glauben,
wenn man es nicht auf den Bildern gesehen hätte.</p>
<p>Der <a href="https://www1.wdr.de/nachrichten/westfalen-lippe/winterberg-corona-verkehr-parkplaetze-100.html">WDR berichtet seit Tagen</a> von der quasi Hilflosigkeit der Winterberger.
Die können einem aber auch wirklich leidtun.</p>
<p><a href="https://www1.wdr.de/nachrichten/westfalen-lippe/winterberg-corona-verkehr-parkplaetze-100.html">Besucheransturm - Winterberg macht Straßen und Pisten dicht</a></p>
<blockquote>
<p>Seit heute dürfen Pisten und Rodelhänge in Winterberg nicht betreten werden. Die Polizei hat die Zufahrtswege gesperrt, trotzdem fahren wieder unzählige Menschen für einen Ausflug ins Sauerland.</p>
</blockquote>
<h2 id="spotify-jahresrückblick">Spotify Jahresrückblick</h2>
<p>Der Spotify-Jahresrückblick beinhaltet wie erwartet doch ziemlich viele Hörspielfolgen.
Wobei ganze Folgen sind es ja nicht mal.
Es sind einzelne Kapitel aus vielen verschiedenen Folgen.
Und das macht es irgendwie so richtig schlecht.
Es ist schade, dass es in 2020/2021 auf keinem der großen Musik-Plattformen eine echte Unterscheidung zwischen Musik
und Hörspielen/-büchern gibt.</p>
<p>Doch neben den Hörbüchern und Hörspielen gibt es auch einige überraschende Titel.
Viel Drum&amp;Bass und <em>&ldquo;Liquid&rdquo;</em> Zeugs.
Wobei ich gar nicht mal sagen kann, was dieses Liquid ist.
Ich mag es einfach.
Einige meiner Favoriten daraus:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=GXjCplmSm9U">Sailor Moon Trendsetter Cyberpunk Remix</a></li>
<li><a href="https://www.youtube.com/watch?v=RJUJ6NzdSXQ">Miike Snow Black Blue Netsky Remix</a></li>
<li>Doxx &amp; Feint - The Pink Fields</li>
<li><a href="https://www.youtube.com/watch?v=ProwCLCppgo">Massive Attack - Paradise Circus</a></li>
<li><a href="https://www.youtube.com/watch?v=ouyDX8BL-4A">Boris Brechja - Lost Memory</a></li>
</ul>
<p>Neben den ganzen Drum &amp; Bass gibt es aber auch einige Ausreißer.
Da sind dann zum Beispiel
<a href="https://www.youtube.com/watch?v=bEiFKOf697A&amp;amp;list=OLAK5uy_mXkb4IRNodvn9dOykzj42-fGzU1hTH78E">Die Ärzte</a>,
<a href="https://www.youtube.com/watch?v=2p_GUfhAmQs">Käptn Peng und Lemur</a>,
<a href="https://monstropolis.wordpress.com/2020/12/31/meute-rooftop-session-full-length/">Meute</a>
(sehr coole Band die ich dieses Jahr durch den
<a href="https://monstropolis.wordpress.com/2020/12/31/meute-rooftop-session-full-length/">Ralf</a> entdeckt habe),
<a href="https://www.youtube.com/watch?v=BDgelEJwZoo">Georgio Moroder</a>.
Aber auch so Exoten wie <a href="https://www.youtube.com/watch?v=X3y7krkcb0o">Zabumba no Mar von Zuco 103</a>.
Keine Ahnung warum das es mit in die Liste geschafft hat.</p>
<p>Meine Top-Songs 2020 Playliste gibt es hier: <a href="https://open.spotify.com/playlist/37i9dQZF1ELZDdEdtOseP2?si=-IBNg6bJQQmSM36CKZV98g">Link Spotify</a></p>
<p>Daneben gibt es noch die wunderbare Hintergrundmusik von Factorio.
Die kann ich nur empfehlen.
Dystopisch, ruhig, entspannend, zum Zeit vergessen: <a href="https://www.youtube.com/watch?v=Vl53udSD84Q&amp;amp;list=PLSCof0DliEVFn1jYcy6BJtteAtueOFe22">Factorio OST</a>.</p>
<p>Aber nicht nur Musik, sondern auch haben wir viele Hörspiele gehört.
Darunter waren neben den üblichen Verdächtigen wie Sherlock Holmes, Mimi Rutherfurt, Pater Brown und die Drei ??? auch ein paar Neuzugänge.
Neben ein paar der tollen <a href="https://www.lovelybooks.de/autor/Jacques-Berndorf/reihe/Eifel-Krimis-in-Reihenfolge-1514819600/">Eiffel Krimis</a> gibt es die Hörspiele &ldquo;<a href="https://www.cd-hoerspiele.de/lord-atherton/">Der wundersame Lord Atherton</a>&rdquo;, &ldquo;<a href="https://www.cd-hoerspiele.de/kurier-preston-aberdeen/">Kurier Preston Aberdeen</a>&rdquo; und &ldquo;<a href="https://hoerwachsen.de/krimi/gestatten-piefke/">Gestatten, Piefke</a>&rdquo;, eine Krimi-Serie im Berlin der 1920er Jahre.</p>
<h2 id="war-sonst-noch-was">War sonst noch was?</h2>
<p>Für die, die einen Impftermin bekommen möchten, ist es zurzeit wohl schwierig diesen auch wirklich zu erhalten.
Die Hotline ist chronisch überbelastet und teilweise für Stunden nicht erreichbar.
Gäbe es da nicht so kleine Computer in den Taschen der Nutzer?
<a href="https://www.tagesschau.de/inland/corona-impfen-hotline-101.html">Link Tagesschau</a></p>
<p>Youtube-dl kann man auch auf iOS als Shortcut einstellen.
Mithilfe des SW-DLT Shortcuts.
Coole Sache das, kann ich mir den Umweg über den Rechner in Zukunft sparen.
<a href="https://www.iphoneblog.de/2021/01/02/youtube-dl-via-shortcuts/">Link iPhoneblog</a></p>
<p>Die CSU will die Cookie-Klickerei abschaffen.
Ich wünsche ihnen viel Glück dabei.
Wird das doch immer schlimmer mit den verdammten Cookie-Bannern.
<a href="https://www.golem.de/news/digitalisierung-csu-will-generelle-zustimmungspflicht-zu-cookies-abschaffen-2101-153118.html">Link Golem</a></p>
<p>Ergänzend dazu, im Zusammenhang mit den Cookies, möchte ich dir den Artikel von Gutjahr empfehlen:
<a href="https://www.gutjahr.biz/2020/12/wir-pfeifen-auf-ihre-privatsphaere/">Wir pfeifen auf ihre Privatsphäre (Link Gutjahr)</a></p>
<p>Der FlashPlayer ist endlich Geschichte!
Eine Software, durch die so viel Unheil angerichtet werden konnte wird endlich eingestampft.
Das hätte man vor Jahren schon machen sollen.
<a href="https://www.maclife.de/news/adobe-beerdigt-adobe-flash-endgueltig-100118287.html">Link Maclife</a></p>
<p>Podcastempfehlung der Woche: Der Machiavelli-Podcast mit der Elefantenrunde 2020:
“<em>Der Politik-Rückblick. Oder wie wir ihn nennen: Die Elefantenrunde. Dafür haben wir unsere liebsten Politik-Podcaster:innen versammelt - und einen Ehrengast.</em>”
<a href="https://www1.wdr.de/radio/cosmo/podcast/machiavelli/machiavelli-remix-elefantenrunde-2020-100.html">Link WDR</a></p>
<p>Der Shit-Der-Woche: Die neue <em>&ldquo;Terms of Use von Instagram&rdquo;</em>,
erschreckend humorvoll erklärt von <a href="https://www.youtube.com/channel/UCwUizOU8pPWXdXNniXypQEQ">AwakenWithJP</a>.</p>
<p><strong>TL;DR:</strong> Instagram darf einfach alles und du musst Instagram alles geben damit es funktioniert.
Auch deine Textnachrichten und alle deine Informationen über alle deine Geräte in deinem Haus
die irgendwie auch nur da sind.
<a href="https://www.youtube.com/watch?v=VhSX7IzHkrE">Link Youtube</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Windows 10 datenschutzfreundlich einrichten</title>
      <link>https://cbrueggenolte.de/windows-10-datenschutzfreundlich-einrichten/</link>
      <pubDate>Tue, 22 Dec 2020 14:46:20 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/windows-10-datenschutzfreundlich-einrichten/</guid>
      <description>&lt;p&gt;Hier in kurzen knappen Worten die Maßnahmen, die ich ergriffen habe,&#xA;um mein Windows 10 System so privat wie es mir möglich ist einzustellen.&lt;/p&gt;&#xA;&lt;p&gt;Vor ein paar Wochen habe ich mal darüber geschrieben,&#xA;dass ich &lt;a href=&#34;https://zn80.net/microsoft-windows-installation/&#34;&gt;Windows 10 neu installiert&lt;/a&gt; habe.&#xA;Nun habe ich es erneut installieren müssen und dabei sind mir weitere Dinge unangenehm aufgefallen.&lt;/p&gt;&#xA;&lt;p&gt;Wenn Windows 10 installiert wird und dabei eine aktive Netzwerkverbindung besteht,&#xA;lässt sich halt leider kein lokales Benutzerkonto erstellen.&#xA;Hier hilft wirklich nur, die Netzwerkverbindung zu trennen.&#xA;Also Netzwerkkabel ziehen und/oder WiFi abschalten.  &lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hier in kurzen knappen Worten die Maßnahmen, die ich ergriffen habe,
um mein Windows 10 System so privat wie es mir möglich ist einzustellen.</p>
<p>Vor ein paar Wochen habe ich mal darüber geschrieben,
dass ich <a href="https://zn80.net/microsoft-windows-installation/">Windows 10 neu installiert</a> habe.
Nun habe ich es erneut installieren müssen und dabei sind mir weitere Dinge unangenehm aufgefallen.</p>
<p>Wenn Windows 10 installiert wird und dabei eine aktive Netzwerkverbindung besteht,
lässt sich halt leider kein lokales Benutzerkonto erstellen.
Hier hilft wirklich nur, die Netzwerkverbindung zu trennen.
Also Netzwerkkabel ziehen und/oder WiFi abschalten.  </p>
<h2 id="installation">Installation</h2>
<p>Den USB-Stick habe ich mit dem <a href="https://www.microsoft.com/de-de/software-download/windows10">Media Creation Tool</a>
von Microsoft erstellt.
Alternativ dazu kann man auch die ISO-Datei herunterladen
und mithilfe von <a href="https://www.balena.io/etcher/">balenaEtcher</a> den Stick erstellen.</p>
<p>Vom USB-Stick booten und den Anweisungen zur Installation folgen.
Meine Boot-Platte, eine 500 GB SSD, habe ich komplett für Windows gelassen.
Daten und mehr werden auf anderen Medien gespeichert.</p>
<h2 id="benutzer-einrichten">Benutzer einrichten</h2>
<p>Die Einrichtung von Windows erfolgt nach der Installation der Basisdateien und dem ersten Neustart.
Falls nötig, USB-Stick vorher abziehen, um nicht erneut das Setup zu starten.</p>
<p>Es sollte zu diesem Zeitpunkt keine Netzwerkverbindung bestehen. Falls doch, lässt sich kein lokales Benutzerkonto einrichten.</p>
<p>Geduldig den Anweisungen der Sprachausgabe folgen und dann abschalten.
Zum Einrichten eines lokalen Benutzers muss man die “Eingeschränkte Benutzererfahrung” wählen.
Diese Bezeichnung  ist eine Irreführung und in meinen Augen eine Frechheit.
Benutzernamen und Kennwort wählen und den weiteren Anweisungen auf dem Bildschirm folgen.
Hierbei immer die untere Einstellung wählen, den keine bis wenig Daten übermittelt.</p>
<p>Ist das Setup beendet, wird das System zum ersten Mal gestartet und kann mit dem Internet verbunden werden.
Anschließend wird <a href="https://chocolatey.org/">Chocolatey</a> installiert,
welches ich für die weitere Installation der Software benötige.</p>
<h2 id="software-installieren">Software installieren</h2>
<p>Nach dem <a href="https://chocolatey.org/install">Chocolatey</a> installiert ist, habe ich folgende Programme installiert:</p>
<ul>
<li>7Zip, Firefox, Tor Browser und VideoLan-Client</li>
<li>VeraCrypt und VSCodium</li>
<li>Discord, Teamspeak, Steam, EpicGamesLauncher</li>
<li>VirtualBox BitVise SSH Client</li>
</ul>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="ln">1</span><span class="cl"><span class="n">choco</span> <span class="n">install</span> <span class="n">7zip</span> <span class="n">firefox</span> <span class="nb">tor-browser</span> <span class="n">vlc</span> <span class="n">veracrypt</span> <span class="n">vscodium</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">choco</span> <span class="n">install</span> <span class="n">discord</span> <span class="n">teamspeak</span> <span class="n">steam</span> <span class="n">epicgameslauncher</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">choco</span> <span class="n">install</span> <span class="n">virtualbox</span> <span class="nb">bitvise-ssh</span><span class="n">-client</span></span></span></code></pre></div><p>Danach habe ich noch die Synology Drive App für die Synchronisation mit meiner Synology DiskStation installiert.</p>
<h2 id="wiederherstellungspunkt-und-wiederherstellungslaufwerk-erstellen">Wiederherstellungspunkt und Wiederherstellungslaufwerk erstellen</h2>
<p>Sicherheit geht vor, sagt man immer. Falls beim Abschalten der Telemetrie-Funktionen irgendetwas schiefgeht,
ist es gut, wenn ein Wiederherstellungspunkt oder sogar ein Wiederherstellungslaufwerk existiert.
Beide Funktionen sind über das Startmenü zu finden.
Dazu einfach “Wiederherstellung” in der Suchfunktion vom Start-Menü eingeben.
Dazu die Windows-Taste drücken und “Wiederherstellung” eingeben.</p>
<hr>
<p>Da sich nur in der Windows Enterprise Version die Telemetrie mit Windows Bordmitteln komplett abschalten lässt,
müssen wir Privatanwender zu anderen Mitteln greifen.
Glücklicherweise gibt es da ein paar schlaue Menschen,
die eine App namens <a href="https://github.com/builtbybel/sharpapp">SharpApp</a> entworfen haben.</p>
<p><a href="https://github.com/builtbybel/sharpapp">SharpApp</a> von BuiltByBel ist eine grafische Oberfläche
für einen Haufen an Powershell-Skripten die alle möglichen unnötigen Dinge in Windows 10 entfernen können.
Zumindest kann einen großen Teil der Bloatware deinstallieren und sich ein Stück Privatsphäre zurückholen.
Mehr Hintergrundinfos und Screenshots gibt es auf <a href="https://www.bleepingcomputer.com/news/microsoft/debloating-windows-10-and-increasing-privacy-with-sharpapp/">BleepingComputer</a></p>
<p>Ich habe das “Basic Template for beginners” und “Template to block telemetry via Host files” installiert/ausgeführt.
Das sollte für den Anfang wohl erstmal ausreichen.</p>
<p>Über den Menüpunkt <strong>Policies</strong> können nun die verschiedenen Scripts ausgeführt werden.
Um den den Basis-Schutz führst du nun unter <strong>Templates</strong> das <strong>basicPrivacyTemplate</strong> aus.
Damit wird ein großer Teil der Datensammelei abgeschaltet.</p>
<p>Wer du mehr Kontrolle haben möchtest, kannst du dich durch die einzelnen Einstellungen klicken.</p>
<p>Hier kann das abgeschaltet werden, was man abschalten will.
<a href="https://github.com/builtbybel/sharpapp">SharpApp</a> kann hier auf Github heruntergeladen werden:</p>
<p><strong>Hinweis:</strong> bevor diese Einstellungen ausprobiert werden, empfiehlt es sich einen Wiederherstellungspunkt zu setzen!</p>
<h3 id="telemetrie-blockieren">Telemetrie blockieren</h3>
<p>Um jetzt noch die Telemetrie zu blockieren,
müssen die dazugehörigen Regeln in die
<a href="https://de.wikipedia.org/wiki/Hosts_%28Datei%29">Windows Hosts Datei</a> eingetragen werden.</p>
<p>Blocken von IP-AdressenDie *spy *Liste vom Windows Blocker auswählen.
Dazu klickst du auf den Eintrag <strong>Telemetry</strong>
und dann über den Punkt <strong>Add community rules</strong> den Eintrag <strong>spy</strong> aus der Liste auswählen und auf Apply klicken.</p>
<p>Wenn jetzt ein Fehlerdialog auftaucht und eine Benachrichtigung darüber informiert,
dass Windows das Verändern der Hosts-Datei unterbunden hat, müssen wir das noch anpassen.
Dazu öffnet man den Bedrohungsschutz in den Windows-Einstellungen und erlaubt die Änderung der hosts-Datei.</p>
<p>Viren und BedrohungsschutzWindows 10 Warnung die wir aber zulassen müssen.
Hier auf den Eintrag klicken und <strong>Auf Gerät zulassen</strong> auswählen.
Jetzt darf SharApp auch die hosts-Datei editieren und die vielen Regeln einfügen.</p>
<p>Aktuelle BedrohungenZulassen der angeblichen Bedrohung, die hosts-Datei zu verändern.
Ich musste ein wenig fummeln, bis das endlich geklappt hat.
Auf der einen Seite ist es gut, dass man die Datei nicht so einfach überschreiben kann,
allerdings wird es einem aber auch unnötig kompliziert gemacht.</p>
<p>Überprüfen kannst du die Einträge auch von Hand. Öffne dazu die hosts-Datei mit einem Editor.
Diese befindet sich im Verzeichnis:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="ln">1</span><span class="cl"><span class="n">C:</span><span class="p">\</span><span class="n">Windows</span><span class="p">\</span><span class="n">System32</span><span class="p">\</span><span class="n">drivers</span><span class="p">\</span><span class="n">etc</span></span></span></code></pre></div><p>Diese sollte nach der Modifizierung ca. 14kb groß sein.</p>
<hr>
<p>Die Windows Installation ist immer wieder ein Abenteuer. Unglaublich was dem Nutzer da zugemutet wird.</p>
<p>Mit Chocolatey lassen sich immerhin sehr viele Programme auf sehr einfache Art und Weise installieren.
Es muss nicht mehr lästig die Webseite aufgerufen, der Download gefunden werden, um das Programm dann händisch zu installieren.</p>
<p>SharpApp hilft einem ein wenig seine Privatsphäre wieder herzustellen.
Eine etwas weniger komplizierte Variante von SharpApp ist das Programm <a href="https://github.com/builtbybel/privatezilla/releases">PrivateZilla</a>.
Ebenfalls von BuiltByBel aber einfacher gehalten als SharpApp.</p>
<p><strong>Nicht vergessen:</strong> Nach jedem größeren Update muss SharpApp oder PrivateZilla erneut ausgeführt werden,
dass die Telemetrie-Datensammlung zurückgesetzt wird.
Es wird ein Katz- und Mauspiel bleiben.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ein Mutmachmärchen für schwierige Zeiten</title>
      <link>https://cbrueggenolte.de/ein-mutmachmaerchen-fuer-schwierige-zeiten/</link>
      <pubDate>Tue, 15 Dec 2020 17:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ein-mutmachmaerchen-fuer-schwierige-zeiten/</guid>
      <description>&lt;p&gt;Eine tolle Kurzgeschichte die uns Mut machen sollte.&#xA;Uns daran erinnert, dass es manchmal die einfachen Dinge im Leben sind,&#xA;die funktionieren und das Richtige bewirken.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Ein Mutmachmärchen das aktueller nicht sein könnte. Übersetzt von P. Ignasi Peguera aus Wien (c) magdalena schauer. (Quelle: &lt;a href=&#34;https://www.ordensgemeinschaften.at/artikel/5441-geschichten-die-mut-machen-ein-virus-namens-corona&#34;&gt;Ordensgemeinschaften.at&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Auf der Webseite der &lt;a href=&#34;https://www.ordensgemeinschaften.at/artikel/5441-geschichten-die-mut-machen-ein-virus-namens-corona&#34;&gt;Ordensgemeinschaft&lt;/a&gt;&#xA;gibt es eine Version in hoher Auflösung zum Teilen und Ausdrucken.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Eine tolle Kurzgeschichte die uns Mut machen sollte.
Uns daran erinnert, dass es manchmal die einfachen Dinge im Leben sind,
die funktionieren und das Richtige bewirken.</p>
<blockquote>
<p>Ein Mutmachmärchen das aktueller nicht sein könnte. Übersetzt von P. Ignasi Peguera aus Wien (c) magdalena schauer. (Quelle: <a href="https://www.ordensgemeinschaften.at/artikel/5441-geschichten-die-mut-machen-ein-virus-namens-corona">Ordensgemeinschaften.at</a>)</p>
</blockquote>
<p>Auf der Webseite der <a href="https://www.ordensgemeinschaften.at/artikel/5441-geschichten-die-mut-machen-ein-virus-namens-corona">Ordensgemeinschaft</a>
gibt es eine Version in hoher Auflösung zum Teilen und Ausdrucken.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Systemabsturz und Musik gegen Überwachung</title>
      <link>https://cbrueggenolte.de/systemabsturz-und-musik-gegen-ueberwachung/</link>
      <pubDate>Tue, 15 Dec 2020 14:15:37 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/systemabsturz-und-musik-gegen-ueberwachung/</guid>
      <description>&lt;p&gt;Am Ende der Folge &lt;a href=&#34;https://chaosradio.de/cr264-schnueffelgesetze-auf-ewiger-wiedervorlage&#34;&gt;Chaosradio CR264&lt;/a&gt;, vom 01. Dezember lief dieser Song von &lt;a href=&#34;https://soundcloud.com/systemabsturz&#34;&gt;Systemabsturz&lt;/a&gt;. Den will ich euch nicht vorenthalten.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://soundcloud.com/systemabsturz/verdachtig[Datenschutzrichtlinie&#34;&gt;https://soundcloud.com/systemabsturz/verdachtig[Datenschutzrichtlinie&lt;/a&gt; von Soundcloud](&lt;a href=&#34;https://soundcloud.com/pages/privacy%29Weitere&#34;&gt;https://soundcloud.com/pages/privacy)Weitere&lt;/a&gt; gute Songs:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://soundcloud.com/systemabsturz/staatstrojaner&#34;&gt;Staatstrojaner&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://soundcloud.com/systemabsturz/daten-daten-daten&#34;&gt;daten daten daten&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://soundcloud.com/systemabsturz/und-alle-so-yeah&#34;&gt;Und Alle So Yeah&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<p>Am Ende der Folge <a href="https://chaosradio.de/cr264-schnueffelgesetze-auf-ewiger-wiedervorlage">Chaosradio CR264</a>, vom 01. Dezember lief dieser Song von <a href="https://soundcloud.com/systemabsturz">Systemabsturz</a>. Den will ich euch nicht vorenthalten.</p>
<p><a href="https://soundcloud.com/systemabsturz/verdachtig[Datenschutzrichtlinie">https://soundcloud.com/systemabsturz/verdachtig[Datenschutzrichtlinie</a> von Soundcloud](<a href="https://soundcloud.com/pages/privacy%29Weitere">https://soundcloud.com/pages/privacy)Weitere</a> gute Songs:</p>
<ul>
<li><a href="https://soundcloud.com/systemabsturz/staatstrojaner">Staatstrojaner</a></li>
<li><a href="https://soundcloud.com/systemabsturz/daten-daten-daten">daten daten daten</a></li>
<li><a href="https://soundcloud.com/systemabsturz/und-alle-so-yeah">Und Alle So Yeah</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Wochenrückblick: Technik, Konsum und Alternativen</title>
      <link>https://cbrueggenolte.de/wochenrueckblick-technik-konsum-und-alternativen/</link>
      <pubDate>Sun, 29 Nov 2020 22:20:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/wochenrueckblick-technik-konsum-und-alternativen/</guid>
      <description>&lt;p&gt;Diese Woche habe ich im Büro verbracht. “Wurde auch mal wieder Zeit”, hat meine Frau gesagt. Meinen Chef hat es bestimmt auch gefreut. Ja, es war gut aus dem Homeoffice mal wieder herauszukommen. Auch wenn man sich von seinen Mitmenschen ja etwas fern halten soll, so sind soziale Kontakte wichtig und es tat gut, mal wieder seine Kollegen und Freund in Echt zu sehen.&lt;/p&gt;&#xA;&lt;p&gt;Ach ja, heute war ja auch der erste Advent. Wir haben gar keine Kerze angezündet. Ist aber auch nicht so schlimm. Dafür hat aber meine Frau schon den Weihnachtsbaum aufgestellt und ihre 24 Tüten vom Woll-Adventskalender darunter gepackt.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Diese Woche habe ich im Büro verbracht. “Wurde auch mal wieder Zeit”, hat meine Frau gesagt. Meinen Chef hat es bestimmt auch gefreut. Ja, es war gut aus dem Homeoffice mal wieder herauszukommen. Auch wenn man sich von seinen Mitmenschen ja etwas fern halten soll, so sind soziale Kontakte wichtig und es tat gut, mal wieder seine Kollegen und Freund in Echt zu sehen.</p>
<p>Ach ja, heute war ja auch der erste Advent. Wir haben gar keine Kerze angezündet. Ist aber auch nicht so schlimm. Dafür hat aber meine Frau schon den Weihnachtsbaum aufgestellt und ihre 24 Tüten vom Woll-Adventskalender darunter gepackt.</p>
<p>Highlight heute war aber das durchaus lange Telefongespräch mit einer guten Freundin von uns. So ein Telefongespräch kann zwar keine gemütliche Kaffeerunde ersetzen, dennoch aber die Gemüter ein wenig erhellen. Schöne Grüße in die Heimat, falls du das hier lesen solltest K.</p>
<h2 id="digitalcourage-vorträge">Digitalcourage Vorträge</h2>
<p>Ich kann mich hier nur noch mal wiederholen. Die beiden Vorträge diese Woche waren wirklich gut und ich kann nur jedem anraten, sich am Dienstag und am Mittwoch die Zeit zu nehmen und an den beiden verbleibenden Vorträgen teilzunehmen. Die beiden bisherigen handelten von  <a href="https://cbrueggenolte.de/2020/11/passwoerter-und-dateiverschluesselung/">Passwörter und Dateiverschlüsselung</a>  und  <a href="https://cbrueggenolte.de/2020/11/sicher-und-anonym-im-internet-surfen/">Sicher und anonym im Internet surfen</a>.  </p>
<p>Am Mittwoch, den 2. Dez. 2020, geht es um <a href="https://digitalcourage.de/hochschulgruppe-bielefeld">E-Mail-Verschlüsselung</a>  und am Donnerstag, den 3. Dez. 2020, wird erzählt, wie man den  <a href="https://digitalcourage.de/hochschulgruppe-bielefeld">Datenschutz auf Mobilgeräten</a>  verbessern kann.</p>
<p>Bei dem Thema E-Mail-Verschlüsselung werden E‑Mail-Anbieter vorgestellt, wie die E‑Mail-Verwaltung mit Thunderbird funktioniert, welche Vorteile und Nachteile die E‑Mail-Verschlüsselung hat. Dazu wird etwas zu den Grundlagen der Verschlüsselung (geschichtliche Entwicklung, Verfahren, Schlüssel, symmetrische/asymmetrische Verschlüsselung) erzählt und wie man das mit dem Verschlüsseln und Signieren überhaupt macht.</p>
<p>Am Donnerstag geht es dann um Metadaten und was sie über uns verraten. Es geht um die Datensammlung durch Apps, über mobile Geräte und die verschiedenen Betriebssysteme. Passend dazu wird erklärt wie das Gerät sicher gesperrt und gesichert wird, wie du Datenverschlüsselung nutzen kannst und warum ein kritischer Umgang mit Apps und Berechtigungen wichtig ist.  Für die Android-Nutzer wird erklärt, wie man sein Gerät „entgoogeln“ kann und wie mit F‑Droid freie Software installiert wird, einem alternativen App-Store für das Androidsystem. Es werden Messenger-Empfehlungen gegeben (Kriterien und Beispiele), Browser-Empfehlungen, Werbeblocker, E‑Mail-Apps und weitere Apps vorgestellt.</p>
<p>Mehr Informationen und die Folien der vergangenen Vorträge findest du hier: <a href="https://digitalcourage.de/hochschulgruppe-bielefeld">Hochschulgruppe Bielefeld | Digitalcourage</a>. Den Blogeintrag dazu gibt es hier: <a href="https://digitalcourage.de/blog/2020/online-crypto-seminar-25-november-3-dezember-2020">Online-Crypto-Seminar vom 25. November bis zum 3. Dezember 2020 | Digitalcourage</a></p>
<h2 id="immer-noch-keinen-mac-mit-16-ge">Immer noch keinen Mac mit 16 Ge</h2>
<p>Ich habe mir immer noch keinen Mac bestellt. Nun ja, wenn, dann hätte ich das hier mit Sicherheit schon geschrieben. Aber solange ich den nicht mit 16 GB RAM bekommen kann, muss ich wohl oder über noch eine Weile warten. In der Zwischenzeit habe ich aber auch einige interessante Alternativen gefunden, bzw. wurden mir empfohlen.</p>
<p><a href="https://puri.sm/products/librem-14/">Purism– Librem 14</a></p>
<p>Da wäre unter anderem das <a href="https://puri.sm/products/librem-14/">Purism– Librem 14</a>. Dieses weist interessante Eigenschaften in Bezug auf Privatsphäre und Datenschutz auf. Es gibt Hardware-Kill-Switches für Kamera, Mikrofon und WLAN und man kann einen USB-Stick als Schlüssel verwenden, mit dem sich das System entsperren lässt. Der USB-Stick wurde zusammen mit <a href="https://www.nitrokey.com/de">NitroKey</a> entwickelt. Die Marke, die ich mir auch mal anschauen wollte, da sie ähnlich wie die <a href="https://www.yubico.com/">YubiKeys</a> funktionieren. Für ein i7 mit 16 GB RAM, 512 GB NVMe Pro muss man aber auch immerhin 1.750 Dollar auf den Tisch legen.</p>
<p><a href="https://system76.com/laptops/galago">Galago Pro</a></p>
<p>Die zweite Alternative ist ein <a href="https://system76.com/">System 76. Laptop</a>. Um genau zu sein, das <a href="https://system76.com/laptops/galago">Galago Pro - System76</a>. Konfiguriert mit 16 GB RAM, einer 500 GB PCIe 4 SSD und einer GTX 1650, kostet dieses Gerät nur 1400 Euro. Schon mal kein schlechter Preis für die Leistung.</p>
<h2 id="black-fridae">Black Fridae</h2>
<p>Diese Woche, fand die Black Week bzw. der Black Friday statt. Bis auf die <a href="https://cbrueggenolte.de/2020/11/apple-airpods-pro/">AirPods Pro</a>, die ich am Dienstag im Angebot gekauft habe, haben wir uns wirklich zurückgehalten. Die AirPods Pro sind aber auch zu gut, um sie nicht zu kaufen, wenn sie im Angebot sind. Keine zusätzliche und Sinn freie Hardware, keinen unnötigen Quatsch den man nur ein oder zweimal benutzt und dann in der Schublade verstaut.</p>
<p><a href="https://www.happyfabric.de/gerate/transferpressen/happypress-2-1-pink.html">HappyPress 2.1 pink</a></p>
<p>Eine Sache die meine Frau aber dann doch gekauft hat, war die schon lange unter Beobachtung stehende <a href="https://www.happyfabric.de/gerate/transferpressen/happypress-2-1-pink.html">Transferpresse Happy Press</a>. So eine Transferpresse wird benötigt, um Bügelfolie auf Kleidung bzw. Stoff zu übertragen. Auf diese hatte sie schon seit ein paar Monaten ein  Auge geworfen und jetzt, wo sie dann doch tatsächlich im Angebot war, dann doch gekauft.</p>
<p>Das war es aber auch schon. Viel weniger als die Jahre zuvor. Ich habe mir nicht mal ein neues Computerspiel gekauft. Und das will schon was heißen.</p>
<h2 id="gab-es-da-sonst-noch-wase">Gab es da sonst noch wase</h2>
<p>Ja natürlich.</p>
<p>Im Zuge der Recherche zum MacBook Pro M1 bin ich die Tage ja auch über die Webseite von Jeffrey Paul gestoßen. Dieser hat sich entschlossen, Twitter zu verlassen. Vielleicht keine so schlechte Idee. <a href="https://sneak.berlin/20201031/goodbye-twitter/">Link</a></p>
<p>Falls du auch darüber nachdenken solltest, Facebook, Instagram und Twitter hinter dir zu lassen, dann gibt es eine Übersicht von Mastodon-Instanzen, dem dezentralen Social-Network. <a href="https://instances.social/">Link</a></p>
<p>Auf Github gibt es eine Übersicht an Software zu Netzwerken und Techniken für dezentrale Dienste. Quasi einem alternativen Internet. Ein Blick lohnt sich. <a href="https://github.com/redecentralize/alternative-internet">Link</a></p>
<p>Auf dem Blog von Mike Kuketz gibt es eine ganze Menge zu lesen. Die interessanteste Beitrags-Reihe ist die, über die verrückte Welt der Messenger. <a href="https://www.kuketz-blog.de/die-verrueckte-welt-der-messenger-messenger-teil1/">Link</a></p>
<p>Für die Terminal-Fans unter euch gibt es in der LinuxCommandLibrary eine Übersicht an One-liners. Kommandos für die man nur eine Zeile benötigt. Sollte man mal gesehen haben. <a href="https://linuxcommandlibrary.com/basic/oneliners.html">Link</a></p>
<p>Die Podcast-Empfehlung für diese Woche ist <a href="https://www.relay.fm/20macs">20 Macs for 2020 - Relay FM</a></p>
<p>Flash ist endlich tot! Nun ja, nicht ganz, denn das <a href="https://blog.archive.org/2020/11/19/flash-animations-live-forever-at-the-internet-archive/">Internetarchiv</a> war so freundlich eine große Anzahl an Flash-Animationen zu archivieren und zur Verfügung zu stellen. Ausschnitt gefällig? Bitte <a href="https://archive.org/details/peanut-butter-jelly-time#">Link</a></p>
<hr>
<p>Zum Abschluss habe ich noch einen kleinen Comic für euch.</p>
<p>Gut das es mir nicht so ergangen ist. Euch vielleicht? Egal! Ich wünsche euch einen guten Start in die Woche. Gut das ich bald Urlaub habe.</p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>Digitalcourage: Sicher und anonym im Web</title>
      <link>https://cbrueggenolte.de/digitalcourage-sicher-und-anonym-im-web/</link>
      <pubDate>Sat, 28 Nov 2020 19:03:37 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/digitalcourage-sicher-und-anonym-im-web/</guid>
      <description>&lt;p&gt;Vorgestern Abend fand der zweite von vier Vorträgen der &lt;a href=&#34;https://digitalcourage.de/hochschulgruppe-bielefeld&#34;&gt;Hochschulgruppe Bielefeld | Digitalcourage&lt;/a&gt; aus Bielefeld statt.&#xA;Das Thema war &lt;strong&gt;Spurenarmes und anonymes Surfen&lt;/strong&gt; und drehte sich hauptsächlich um den Einsatz von Firefox mit ein paar guten Add-ons und der Benutzung des Tor-Browsers.&lt;/p&gt;&#xA;&lt;p&gt;Eine kleine Übersicht der Themen habe ich dir hier aufgelistet.&lt;/p&gt;&#xA;&lt;h2 id=&#34;wirklich-alles-so-schlimm-im-internet-ja-ist-es&#34;&gt;Wirklich alles so schlimm im Internet? Ja ist es&lt;/h2&gt;&#xA;&lt;p&gt;Gut, dieser Teil war für mich jetzt weniger interessant, dennoch informativ und es wurde gut erklärt, wie das mit dem Internet funktioniert und warum wir Domain-Namen verwenden und keine IP-Adressen.&#xA;Wenn du es noch genauer erklärt haben willst, die Sendung mit der Maus, haben da auch schon mal einen Film zu gemacht: &lt;a href=&#34;https://yewtu.be/watch?v=Xs7T1QAe-8E&#34;&gt;Die Sendung mit der Maus - Wie funktioniert das Internet&lt;/a&gt;.&#xA;Danach wurde am Beispiel von &lt;a href=&#34;http://www.spiegel.de&#34;&gt;www.spiegel.de&lt;/a&gt; erklärt, warum das Internet zwar eine gute Sache ist, aber die Web-Realität dennoch schlimm ist und man sich schützen muss.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Vorgestern Abend fand der zweite von vier Vorträgen der <a href="https://digitalcourage.de/hochschulgruppe-bielefeld">Hochschulgruppe Bielefeld | Digitalcourage</a> aus Bielefeld statt.
Das Thema war <strong>Spurenarmes und anonymes Surfen</strong> und drehte sich hauptsächlich um den Einsatz von Firefox mit ein paar guten Add-ons und der Benutzung des Tor-Browsers.</p>
<p>Eine kleine Übersicht der Themen habe ich dir hier aufgelistet.</p>
<h2 id="wirklich-alles-so-schlimm-im-internet-ja-ist-es">Wirklich alles so schlimm im Internet? Ja ist es</h2>
<p>Gut, dieser Teil war für mich jetzt weniger interessant, dennoch informativ und es wurde gut erklärt, wie das mit dem Internet funktioniert und warum wir Domain-Namen verwenden und keine IP-Adressen.
Wenn du es noch genauer erklärt haben willst, die Sendung mit der Maus, haben da auch schon mal einen Film zu gemacht: <a href="https://yewtu.be/watch?v=Xs7T1QAe-8E">Die Sendung mit der Maus - Wie funktioniert das Internet</a>.
Danach wurde am Beispiel von <a href="http://www.spiegel.de">www.spiegel.de</a> erklärt, warum das Internet zwar eine gute Sache ist, aber die Web-Realität dennoch schlimm ist und man sich schützen muss.</p>
<h2 id="wie-kann-man-sich-schützen">Wie kann man sich schützen</h2>
<p>Was passiert, wenn man sich nicht schützt, wurde eindrucksvoll am Beispiel von <a href="http://www.spiegel.de">www.spiegel.de</a> demonstriert.
Wenn die Seite aufgerufen wird, dann werden nicht nur vom <a href="https://www.spiegel.de/netzwelt/web/tracking-auf-spon-weshalb-wir-messen-wie-sie-uns-lesen-a-1162306.html">Spiegel.de</a>-Server Daten geladen, sondern auch von über 50 anderen Domains.
Hauptsächlich von sogenanntem <a href="https://de.wikipedia.org/wiki/Content_Delivery_Network">Content Delivery Network</a>-Server.
Viele davon stehen nicht mal in Europa, sondern sind über die ganze Welt verteilt.
Hinzu kommt, dass über 50 Cookies erstellt werden, wovon 21 von Drittanbietern und Werbetreibenden sind.</p>
<p>Mit dem Firefox-Add-on <a href="https://addons.mozilla.org/de/firefox/addon/lightbeam-3-0/?utm_source=addons.mozilla.org&amp;utm_medium=referral&amp;utm_content=search">Lightbeam 3.0</a> kann man all diese Verknüpfungen sichtbar machen.
Damit lässt sich zum Beispiel ungefähr nachverfolgen, welche Webseiten zusammenhängen und gemeinsam Content-Delivery-Netzwerke verwenden.
Das Add-on visualisiert dabei auf ansehnliche Weise die Verbindungen und zeigt auch, wie viele Anfragen an anderen Adressen gestellt werden, um eine Webseite zu laden.
Manchmal ist das ganz schön erschreckend.
Einen guten Eindruck von der Menge an Verbindungen sieht man auf den Screenshot in den <a href="https://digitalcourage.de/sites/default/files/2020-11/dc-hsgbi-crypto-folien-browser-web.pdf">Folien vom Vortrag auf den Seiten 9ff</a>.</p>
<h2 id="wie-kann-man-sich-nun-schütze">Wie kann man sich nun schütze</h2>
<p>Zuallererst kann man sich schon mal damit schützen, dass man den richtigen Browser verwendet.
Empfohlen wird eigentlich immer der <a href="https://www.mozilla.org/de/firefox/new/">Firefox Browser von Mozilla</a>.
Auch ich verwende den auch sehr gerne neben den Safari-Browser.
Firefox solltest du aber noch um ein paar gute Add-ons aufstocken, sonst lohnt es sich eigentlich gar nicht und man verlässt besser wieder das Internet.</p>
<p>Vor den Add-on-Empfehlungen wurde aber erst noch wichtige Einstellungen für den Firefox-Browser gezeigt.
Ich zitiere hier einfach mal aus den Folien (Seite &ldquo;<em>Wie kann ich mich vor Tracking schützen?</em>&rdquo;)</p>
<h3 id="browser-einstellungen">Browser Einstellungen</h3>
<ul>
<li>Seitenelemente blockieren: Benutzerdefiniert</li>
<li>Elemente zur Aktivitätsverfolgung in allen Fenstern blockieren</li>
<li>Alle Cookies von Drittanbieter blockieren</li>
<li>Identifizierer (Fingerprinter) blockieren</li>
<li>&ldquo;Do Not Track&rdquo;-Information immer senden</li>
<li>Suchmaschinen: MetaGer.de, Startpage.com, Duckduckgo.com, lite.qwant.com (im Gegensatz zu Google auch keine individualisierten Ergebnisse)</li>
<li>JavaScript abschalten, wenn möglich</li>
</ul>
<h3 id="add-ons">Add-ons</h3>
<p>In der darauffolgenden Folie wurden die folgenden guten Add-ons für Anfänger und Einsteiger vorgestellt.</p>
<ul>
<li><a href="https://addons.mozilla.org/de/firefox/addon/ublock-origin/">uBlock Origin</a> um sich vor allen möglichen Trackern und Zeug was man nicht auf seinem Rechner haben will zu schützen;</li>
<li><a href="https://addons.mozilla.org/de/firefox/addon/localcdn-fork-of-decentraleyes/?utm_source=addons.mozilla.org&amp;utm_medium=referral&amp;utm_content=search">LocalCDN</a> zum Ersetzen von Javascript-Bibliotheken durch lokale Versionen;</li>
<li><a href="https://addons.mozilla.org/de/firefox/addon/https-everywhere/">HTTPS Everywhere</a> um nur noch über eine HTTPS Verbindung zu kommunizieren (kann man mittlerweile weglassen, siehe unten);</li>
<li><a href="https://addons.mozilla.org/de/firefox/addon/cookie-autodelete/">Cookie AutoDelete</a> löscht automatisch alle zugehörigen Cookies eines Tabs, wenn dieser geschlossen wird.</li>
</ul>
<p><em>HTTPS Everywhere kann man aber mittlerweile weglassen, denn der Firefox hat auf der Einstellungsseite Datenschutz und Sicherheit die Einstellung <strong>Nur-HTTPS-Modus</strong> mittlerweile eingebaut.
Somit kann man sich ein Add-on sparen.</em></p>
<p>Die Add-ons, die ich verwende, findet ihr <a href="/meine-firefox-add-ons">an dieser Stelle</a>.</p>
<h2 id="warum-der-private-modus-nicht-anonym-is">Warum der private Modus nicht anonym is</h2>
<p>Ein weiteres Thema im Vortrag war der private Modus von Firefox und anderen Browsern.
Viele in meinem Umfeld meinen auch immer, dass man ja in den privaten Modus schalten kann, um sich zu schützen.
Auch ich habe das eine Zeit lange geglaubt und gedacht.
Der private Modus jedoch speichert einfach nur keine Daten.</p>
<p>Der private Modus von Firefox hinterlässt keine Spuren auf dem Gerät.
Es werden keine Cookies gespeichert, keine Historie angelegt und auch keine Daten im Cache behalten.
Anonym ist man allerdings dennoch nicht.
Warum das so ist, hat Mozilla in diesem Beitrag aufgeschrieben: <a href="https://support.mozilla.org/de/kb/haufige-missverstandnisse-surfen-im-privaten-modus">Häufige Missverständnisse über das Surfen im Privaten Modus | Hilfe zu Firefox</a>.</p>
<h2 id="anonymous-surfen">Anonymous Surfen</h2>
<p>Im zweiten Teil des Vortrages ging es dann um das anonyme Surfen im Internet.
Dazu wurde der Tor Browser empfohlen und vorgestellt.
Der Tor Browser basiert auf dem Firefox und soll verhindern, dass Webseiten herausfinden von wo aus du dich ins Internet eingeklinkt hast.
Sprich, wenn die Webseitenbetreiber deine IP-Adresse erhalten, kann man so etwas feststellen.
Außerdem schützt der Tor Browser dich für Trackern und angeblich auch vor Staatstrojanern.</p>
<p><a href="https://www.torproject.org/">The Tor Project | Privacy &amp; Freedom Online</a></p>
<p>Mehr Anonymität kann man also mit dem Tor-Browser erreichen.
<a href="https://www.torproject.org/"><strong>The Onion Router</strong></a> stellt ein Netzwerk zu Anonymisierung von Verbindungsdaten zur Verfügung und verschleiert die eigene IP-Adresse.
Er ist quelloffen, als freie Software erhältlich und ermöglicht ein (fast) anonymes surfen.</p>
<p>Trotz seiner vielen Vorteile, hat er auch einige Nachteile.
Einer davon ist die Geschwindigkeit.
Dadurch das eine Verbindung zum Ziel immer über mehrere Rechner (Knoten) hergestellt wird, steigt die Latenz teilweise erheblich.
Außerdem sollte man immer bedenken, dass man nicht mehr anonym ist, wenn man auf einer Webseite die man über den Tor-Dienst aufgerufen hat, sich mit einem persönlichen Login anmeldet.</p>
<h3 id="den-tor-browser-installieren">Den Tor-Browser Installieren</h3>
<p>Den Tor-Browser findet man auf der offiziellen Webseite: <a href="https://www.torproject.org/">Tor Project | Anonymity Online</a>.
Hier kannst du die verschiedenen Versionen für dein Betriebssystem herunterladen und installieren.</p>
<ul>
<li>Unter macOS geht das auch mit <a href="https://brew.sh/">Homebrew</a>: <code>brew install tor-browser</code></li>
<li>Für Windows kann man das auch mit <a href="https://chocolatey.org/">Chocolatey</a> erledigen: <code>choco install tor-browser</code></li>
<li>Wenn du Linux verwenden solltest, dann findest du den Tor-Browser auch mit deinem Paketmanager (apt-get, yum, dnf, pacman).</li>
</ul>
<p>Was während des Vortrages und im Chat mehrfach noch erwähnt wurde und ich hier auch nicht vergessen will ist folgende Aussage: <strong>Wenn du den Tor-Browser benutzt, dann ändere um Gottes willen nichts an den Einstellungen.
Auch nicht die Fenstergröße</strong>!</p>
<p>Sobald der Browser installiert ist, kann man ihn ganz normal verwenden.</p>
<h2 id="tail">Tail</h2>
<p>Wenn du noch einen Schritt weitergehen möchtest, kannst du dir auch das Betriebssystem <a href="https://tails.boum.org/">Tails</a> anschauen.
Tails ist eine Linux-Distribution die auf Sicherheit und Anonymität ausgelegt ist.</p>
<p><a href="https://tails.boum.org/">Tails</a> wird von einem USB-Stick aus gestartet und hinterlässt bei der Benutzung keine Spuren.
Immer wenn man es startet, ist es so als ob man es nie benutzt hätte.
Wenn man doch ein paar Dateien Speichen will, dann geht das natürlich.
Dazu wird ein verschlüsselter Speicher verwendet.
<a href="https://zn80.net/2020/11/passw%c3%b6rter-und-dateiverschl%c3%bcsselung//">Wie man so einen Speicher zum Beispiel mit VeraCrypt anlegt, kannst du hier erfahren</a>.</p>
<h2 id="gesammelte-links">Gesammelte Links</h2>
<p>Hier sind alle Links, die ich während des Vortrags gesammelt habe.</p>
<ul>
<li>Vortragsfolien Sicher und anonym im World Wide Web <a href="https://digitalcourage.de/sites/default/files/2020-11/dc-hsgbi-crypto-folien-browser-web.pdf">Link PDF</a></li>
<li>Handzettel zum Vortrag <a href="https://digitalcourage.de/sites/default/files/2020-11/cp_handout_Browser_v5.1.pdf">Link PDF</a></li>
<li>Vor dem Vortrag wurde sich über IP-Telefonie unterhalten. Dabei sind ein paar Links im Chat gefallen (von <a href="https://ukleemann.de/">Uli Kleemann</a>)</li>
<li>VoiP-Telefongespräche lassen sich leicht abhören - Praktisches Beispiel <a href="https://www.com-magazin.de/news/datenschutz/voip-telefongespraeche-lassen-leicht-abhoeren-1226058.html?page=1_praktisches-beispiel">Link</a></li>
<li>Maßnahmen gegen das Abhören von VoIP-Gesprächen <a href="https://www.ip-insider.de/massnahmen-gegen-das-abhoeren-von-voip-gespraechen-a-341097/">Link</a></li>
<li>HTTPS ist keine Garantie für Sicherheit <a href="https://www.kaspersky.de/blog/https-does-not-mean-safe/15669/">Link</a></li>
<li>HTTPS / HTTP Secure <a href="https://www.elektronik-kompendium.de/sites/net/1811281.htm">Link</a></li>
<li>Was ist Tracking <a href="https://www.seo-kueche.de/lexikon/tracking/">Link</a></li>
<li>Privacy Handbuch - Mozilla Firefox <a href="https://www.privacy-handbuch.de/handbuch_21browser.htm">Link</a></li>
<li>Es geht auch ohne Google <a href="https://digitalcourage.de/digitale-selbstverteidigung/es-geht-auch-ohne-google-alternative-suchmaschinen">Link</a></li>
<li>Was sind Cookies <a href="https://en.wikipedia.org/wiki/HTTP_cookie#Origin_of_the_name">Link</a></li>
<li>Sendung mit der Maus - Wie funktioniert das Internet <a href="https://yewtu.be/watch?v=Xs7T1QAe-8E">Video</a></li>
<li>nuudel - das nichtspeichernde Terminool <a href="https://nuudel.digitalcourage.de/">Link</a></li>
<li>Kuketz Blog Empfehlungen <a href="https://www.kuketz-blog.de/empfehlungsecke/#firefox">Link Firefox</a></li>
<li>Kuketz Blog</li>
<li>Tor Server von digitalcourage <a href="https://digitalcourage.de/blog/2020/unser-neuer-tor-server-fuer-alle">Link</a></li>
<li>Tor Server die von digitalcourage betrieben werden <a href="https://digitalcourage.de/support/tor">Link</a></li>
<li>Das Darknet und Tor erklärt in 3 Minuten <a href="https://yewtu.be/watch?v=IIfK41NTsxU">Video</a></li>
<li>Das Tor zur Anonymität <a href="https://anoxinon.media/blog/tor/">Link</a></li>
<li>The Ultimate Guide to the Tor Browser <a href="https://pixelprivacy.com/resources/tor-browser-guide/">Link</a></li>
<li>VPN Overview: Wie sicher ist Tor <a href="https://vpnoverview.com/de/privatsphaere/anonym-surfen/wie-sicher-ist-tor/">Link</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>M1 Macs: 8 GB vs 16 GB RAM</title>
      <link>https://cbrueggenolte.de/m1-macs-8-gb-vs-16-gb-ram/</link>
      <pubDate>Thu, 26 Nov 2020 13:30:06 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/m1-macs-8-gb-vs-16-gb-ram/</guid>
      <description>&lt;p&gt;Die Reviews sind da. Die Jungs von &lt;a href=&#34;https://www.youtube.com/channel/UCptwuAv0XQHo1OQUSaO6NHw&#34;&gt;Max Tech&lt;/a&gt; waren die ersten mit ihrem Review und viele weiter ziehen jetzt so langsam hinterher.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Nimm so viel RAM wie geht, vor allem dann, wenn du es dir leisten kannst. Sprich: nimm die 16 GB, selbst wenn du sie jetzt im Moment nicht benötigst. Apple Computer halten super lange und weil man den Speicher und die Konfiguration eines &lt;em&gt;MacBook Air&lt;/em&gt; oder &lt;em&gt;MacBook Pro&lt;/em&gt; nicht erweitern kann, ist es wichtig, von vornherein zu wissen was man will. Festplattenspeicher kann man immer noch durch externe NVMe oder SSDs erweitern.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die Reviews sind da. Die Jungs von <a href="https://www.youtube.com/channel/UCptwuAv0XQHo1OQUSaO6NHw">Max Tech</a> waren die ersten mit ihrem Review und viele weiter ziehen jetzt so langsam hinterher.</p>
<p><strong>TL;DR:</strong> Nimm so viel RAM wie geht, vor allem dann, wenn du es dir leisten kannst. Sprich: nimm die 16 GB, selbst wenn du sie jetzt im Moment nicht benötigst. Apple Computer halten super lange und weil man den Speicher und die Konfiguration eines <em>MacBook Air</em> oder <em>MacBook Pro</em> nicht erweitern kann, ist es wichtig, von vornherein zu wissen was man will. Festplattenspeicher kann man immer noch durch externe NVMe oder SSDs erweitern.</p>
<h2 id="die-reviews">Die Reviews</h2>
<p>Hier is eine kleine Übersicht meiner Review-Favoriten.</p>
<p>Max Tech 8GB vs 16GB - Single App Benchmarks</p>
<p>Zusammenfassend kann man sagen, dass weder bei Geekbench, Cinebench, Logic Pro große Unterschiede erkennen lassen. In XCode und Lightroom, bei 4K und 10bit HEVC Video nur ein minimaler Unterschied feststellen lässt. Einzig bei 8k RAW Video hängen die 16GB die 8GB im Welten ab.</p>
<p><strong>Sind die 240 Euro mehr für die 16GB also sinnvoll?</strong> Auch wenn der nicht Profi sehr wahrscheinlich niemals mit 8K Video arbeiten wird und die Profi-Geräte noch auf sich warten lassen, weiß nicht was die Zukunft bringt. Ein Real-World Test steht bisher also noch aus. Also bis vor ein paar Tagen nun.</p>
<h2 id="m1-mac-8gb-vs-16gb---rene-ritchie">M1 Mac 8GB vs 16GB - Rene Ritchie</h2>
<p>Kurz nach dem Video von Max Tech Rene Ritchie sein Video veröffentlicht. Seine Aussage könnte ihr oben schon lesen. <strong>TL;DR: Kaufe 16 GB wann immer es du dir leisten kannst.</strong> Du kannst es nicht aufrüsten und dein Mac soll ja noch ein paar Jahre halten.</p>
<h2 id="max-tech-real-world-max-stress-test">Max Tech Real World Max Stress Test</h2>
<p>Nach dem ersten Video von Max Tech erschien dann auch relativ schnell der Real-World-RAM Stress Test. Denn was viele wissen wollten, war nicht die Leistung einzelner Apps, sondern wie sich der Unterschied bei alltäglichen Aufgaben bemerkbar macht. Weniger RAM bedeutet also, dass mehr Daten die in der Auslagerungsdatei landen. Dadurch wird die SSD schon sehr belastet. Eine SSD ist halt kein Arbeitsspeicher und für eine so hohe Anzahl Zugriff ausgelegt.</p>
<p>Wie man aber jetzt im Video sehen kann, werden selbst bei 16GB RAM immer noch viele Daten in die Swap-Datei geschrieben. Das kann man selber auch gar nicht beeinflussen. Apple wird das schon richtig machen. Dieses Mysterium ist also beseitigt. Die Festplatte wird so oder so benutzt, egal wie viel RAM man hat.</p>
<p>Wie oben schon erwähnt, sind die SSDs heutzutage nicht mehr mit denen von vor 7 oder 8 Jahren vergleichbar. SSDs sind mittlerweile wesentlich robuster und können das vielfache an Schreib-/Lesezugriffen verarbeiten als noch vor 5 Jahren. Von meinen MacBook Air aus 2013 kann ich zumindest nicht behaupten, das die SDD gelitten hat. Fehler hat meine Festplatte bisher keine und weniger Speicherplatz wird mir bisher auch nicht angezeigt. Ein schöner Report zur Lebenszeit von SSDs gibt es bei <a href="https://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead/">TechReport aus dem Jahr 2015</a>.</p>
<p>Aber mehr RAM ist halt einfach mehr RAM und wenn wirklich viele Tabs geöffnet sind, und ich habe wirklich sehr viele Tabs offen, dann macht sich das schon bemerkbar.</p>
<p>Aber wenn wir mal ehrlich sind, so viele Arbeitsspeicher hungrigen Apps habe ich nicht mal. Daher dürfte das 8GB Modell wohl doch ausreichen? Ich denke nicht. Ich habe immer noch den Anwendungsfall, dass ich ein oder zwei virtuelle Maschinen brauche, die sich schon so 3-4 GB RAM genehmigen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Digitalcourage: Passwörter und Verschlüsselung</title>
      <link>https://cbrueggenolte.de/digitalcourage-passwoerter-und-verschluesselung/</link>
      <pubDate>Wed, 25 Nov 2020 20:35:40 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/digitalcourage-passwoerter-und-verschluesselung/</guid>
      <description>&lt;p&gt;Heute Abend hat der erste von insgesamt &lt;a href=&#34;https://digitalcourage.de/blog/2020/online-crypto-seminar-25-november-3-dezember-2020&#34;&gt;4 Vorträgen rund um das Thema Online-Crypto&lt;/a&gt; stattgefunden.&#xA;Organisiert werden die 4 Vorträge von der &lt;a href=&#34;https://digitalcourage.de/hochschulgruppe-bielefeld&#34;&gt;Digitalcourage&lt;/a&gt;-Hochschulgruppe Bielefeld.&lt;/p&gt;&#xA;&lt;p&gt;**TL;DR:**&lt;em&gt;Ein schöner und informativer Vortrag.&#xA;Er richtete sich aber vornehmlich an Personen,&#xA;die sich bisher gar nicht oder nur ein wenig mit den Themen Passworterstellung&#xA;und -verwaltung sowie Dateiverschlüsselung beschäftigt haben oder auskennen.&#xA;Alle Folien findet ihr auf der Übersichtsseite der &lt;a href=&#34;https://digitalcourage.de/hochschulgruppe-bielefeld&#34;&gt;DC-HSG-Bielefeld&lt;/a&gt; (falls die Links unten nicht mehr funktionieren).&lt;/em&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute Abend hat der erste von insgesamt <a href="https://digitalcourage.de/blog/2020/online-crypto-seminar-25-november-3-dezember-2020">4 Vorträgen rund um das Thema Online-Crypto</a> stattgefunden.
Organisiert werden die 4 Vorträge von der <a href="https://digitalcourage.de/hochschulgruppe-bielefeld">Digitalcourage</a>-Hochschulgruppe Bielefeld.</p>
<p>**TL;DR:**<em>Ein schöner und informativer Vortrag.
Er richtete sich aber vornehmlich an Personen,
die sich bisher gar nicht oder nur ein wenig mit den Themen Passworterstellung
und -verwaltung sowie Dateiverschlüsselung beschäftigt haben oder auskennen.
Alle Folien findet ihr auf der Übersichtsseite der <a href="https://digitalcourage.de/hochschulgruppe-bielefeld">DC-HSG-Bielefeld</a> (falls die Links unten nicht mehr funktionieren).</em></p>
<p>**Hinweis in eigener Sache:***Wer das hier liest und Fragen zu den Themen hat,
darf mir auch gerne eine E-Mail schreiben oder mich über die diversen sozialen Medien kontaktieren.
Ich versuche dann gerne zu helfen.
Ein wenig kenne ich mich ja auch aus. ;-)</p>
<h2 id="sichere-passwörter">Sichere Passwörter</h2>
<p>Der erste Vortrag drehte sich um beiden Themen Passwörter und Dateiverschlüsselung.
Im ersten Teil wurde erklärt, wie du ausreichend sichere Passwörtern erstellen kannst und wie man die vielen Passwörtern sicher und geordnet mithilfe eines Passwortmanagers abspeichern kann.</p>
<h3 id="diceware-methode">Diceware-Methode</h3>
<p>Zur Erstellung von ausreichend sicheren Passwörtern wurde die <a href="https://de.wikipedia.org/wiki/Diceware">Diceware-Methode</a> von <a href="https://theworld.com/~reinhold/diceware.html">Arnold G.
Reinhold</a> vorgeschlagen.
Hierbei nimmt sich einen oder mehrere Würfel und erzeigt sich Zahlenreihen.
Diese Zahlenfolgen werden dann benutzt, um sich die zugehörigen Wörter aus einer Wortliste herauszusuchen.
Kombiniert mit Sonderzeichen ergeben sich so gute und ausreichend sicherer Passwörter oder Passphrasen.</p>
<h3 id="was-ist-ein-sicheres-passwort">Was ist ein sicheres Passwort?</h3>
<p>Was ein sicheres Passwort ist, ist schwer zu sagen.
Was generell empfohlen wird, sind folgende Merkmale:</p>
<ul>
<li>es sollte mindestens 16 Zeichen lang sein</li>
<li>verwende Groß-/Kleinbuchstaben und Zahlen</li>
<li>verwende ein oder mehrere Sonderzeichen</li>
<li>zufällig generiert und nicht ausgedacht</li>
</ul>
<h3 id="2fa">2FA</h3>
<p>Zusätzliche zum Thema Passwörter wurde auch das Thema 2-Faktor-Authentifizierung angesprochen.
Es wurde erklärt warum das wichtig ist und welche Möglichkeiten es heutzutage gibt.</p>
<h3 id="passwortmanager-keepassxc">Passwortmanager KeePassXC</h3>
<p>Im dritten Abschnitt ging es dann um <a href="https://keepassxc.org/">KeepassXC</a>, eine Open-Source-Software zur Passwortverwaltung.
<a href="https://keepassxc.org/">KeepassXC</a> ist mit einer der aktuellsten Clients und wird regelmäßig mit Updates versehen.
Dadurch kann man die Software ruhigen Gewissens empfehlen.
Natürlich sind die Passwortverwalter nur so sicher, wie das Master-Kennwort welches zur Absicherung der Passwortdatenbank vergeben wird.
Hier musst du also aufpassen, dass du ebenfalls ein sicheres und gutes Kennwort vergibst.</p>
<p>Die Folien zum Vortrag findest du hier: <a href="https://digitalcourage.de/sites/default/files/2020-07/dc-hsgbi-crypto-folien-passw%C3%B6rter_20200625.pdf">Vortragsfolien (PDF)</a> und die <a href="https://digitalcourage.de/sites/default/files/2020-11/cp_handout_KeePassXC_v1.1.pdf">Handzettel (PDF)</a>.</p>
<h2 id="verschlüsselung-von-datenträgern">Verschlüsselung von Datenträgern</h2>
<p>Im zweiten Teil des Vortrags ging es mit dem Thema Verschlüsselung von Datenträgern weiter.
Hier wurde die Software <a href="https://www.veracrypt.fr/en/Home.html">VeraCrypt</a> vorgestellt.
Eine Weiterentwicklung der Software <a href="https://de.wikipedia.org/wiki/TrueCrypt">TrueCrypt</a>.</p>
<p>Nach kurzer Einführung und Vorstellung des Funktionsumfangs gab es wie zu KeePassXC eine Demonstration.</p>
<p>Die Folien zum Vortrag findest du hier: <a href="https://digitalcourage.de/sites/default/files/2020-11/dc-hsgbi-crypto-folien-dateiverschl%C3%BCsselung_20201125.pdf">Vortragsfolien (PDF)</a> und die <a href="https://digitalcourage.de/sites/default/files/2020-11/cp_handout_Veracrypt_v3.5.pdf">Handzettel (PDF)</a>.</p>
<h2 id="fazit">Fazit</h2>
<p>Insgesamt war der Vortrag wirklich gut und informativ.
Auch wenn ich schon einiges an Hintergrundwissen hatte, so habe ich doch noch die ein oder andere Idee und Information mitgenommen.</p>
<h3 id="nitrokey">NitroKey</h3>
<p>Zum einen habe ich von einem anderen Teilnehmer erfahren, dass es sogenannte <a href="https://www.nitrokey.com/de">NitroKeys</a> gibt.
Das sind Hardware-USB-Sticks die als 2FA-Lösung benutzt werden können.
Diese lassen sich aber nicht nur für 2FA verwenden, sondern auch für den Anmeldevorgang, die Ver- und Entschlüsselung von E-Mails und vielem mehr.
Auf dem Blog von <a href="https://www.kuketz-blog.de/zwei-schluessel-fuer-alle-faelle-nitrokey-teil1/">Mike Kuketz</a> gibt es dazu eine ausführliche Anleitung.</p>
<h3 id="haveibeenpwned">HaveIBeenPwned</h3>
<p>Dazu gab es sinnvolle Hinweise im Chat zu Diensten wie <a href="https://haveibeenpwned.com/">HaveIBeenPwned</a> und dem <a href="https://sec.hpi.de/ilc/search?lang=de">Identity Leak Checker</a> vom Hasso-Plattner-Instutit.</p>
<p>Was ich noch erwähnenswert finde ist, dass in KeePassXC und auch in Bitwarden, meinem Passwortmanager der Wahl, die Möglichkeit besteht, die eigenen Passwortdatenbank gegen diese beiden Datenbanken zu prüfen.
Aber keine Angst, es werden keine Passwörter abgeglichen, sondern nur die Webseiten wo ihr Accounts für eingetragen habt.</p>
<h2 id="spurenarmes-und-anonymes-surfen">Spurenarmes und anonymes Surfen</h2>
<p>Das ist der Vortrag, der morgen stattfinden wird und an dem ich auch auf jeden fall teilnehmen will.
Vielleicht sehen wir uns ja morgen im Chat.
Bis dahin, einen schönen und angenehmen Abend / Tag noch.</p>
]]></content:encoded>
    </item>
    <item>
      <title>macOS Big Sur, OCSP und Vertrauen</title>
      <link>https://cbrueggenolte.de/macos-big-sur-ocsp-und-vertrauen/</link>
      <pubDate>Wed, 25 Nov 2020 13:53:10 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/macos-big-sur-ocsp-und-vertrauen/</guid>
      <description>&lt;p&gt;In meiner Timeline und in meinem News-Reader bin ich in den letzten Tagen immer mal wieder über den Artikel &lt;a href=&#34;https://sneak.berlin/20201112/your-computer-isnt-yours/&#34;&gt;Your Computer Isn’t Yours von Jeffrey Paul&lt;/a&gt; gestoßen.&lt;/p&gt;&#xA;&lt;p&gt;Darin geht es um die Ausfälle einiger Apple-Dienst und das Apple für jeden App-Start eine unverschlüsselte Anfrage an einen Dienst stellt (oscp.apple.com), um herauszufinden, ob du auf dieses Programm auf deinem Mac öffnen darfst oder nicht.&lt;/p&gt;&#xA;&lt;h2 id=&#34;viele-hüpfende-app-icons&#34;&gt;Viele hüpfende App-Icons&lt;/h2&gt;&#xA;&lt;p&gt;Herausgekommen ist das alles, weil vor ein paar Tagen der Server für die Zertifikats-Validierung zwar erreichbar war,&#xA;aber nicht schnell genug geantwortet hat.&#xA;Dadurch ließen sich bei aktiver Internetverbindung, keine Apps mehr öffnen.&#xA;Alles war irgendwie eingefroren.&#xA;Der dafür zustände Dienst (&lt;em&gt;trustd&lt;/em&gt;) hat keine Antwort bekommen und dadurch den App-Start nicht freigegeben.&#xA;Beheben ließ sich das vorerst nur, wenn die &lt;a href=&#34;https://www.heise.de/news/Apple-Server-Fehler-legt-Macs-lahm-4959009.html&#34;&gt;Internetverbindung getrennt&lt;/a&gt; oder der Dienst mithilfe einer Firewall blockiert wird.&#xA;Zum einen ist das allerdings nicht ratsam, und zum anderen geht das mit der Firewall &lt;a href=&#34;https://www.apple.com/macos/big-sur/&#34;&gt;Big Sur&lt;/a&gt; nicht mehr.&#xA;Was aber ein anderes Thema ist.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In meiner Timeline und in meinem News-Reader bin ich in den letzten Tagen immer mal wieder über den Artikel <a href="https://sneak.berlin/20201112/your-computer-isnt-yours/">Your Computer Isn’t Yours von Jeffrey Paul</a> gestoßen.</p>
<p>Darin geht es um die Ausfälle einiger Apple-Dienst und das Apple für jeden App-Start eine unverschlüsselte Anfrage an einen Dienst stellt (oscp.apple.com), um herauszufinden, ob du auf dieses Programm auf deinem Mac öffnen darfst oder nicht.</p>
<h2 id="viele-hüpfende-app-icons">Viele hüpfende App-Icons</h2>
<p>Herausgekommen ist das alles, weil vor ein paar Tagen der Server für die Zertifikats-Validierung zwar erreichbar war,
aber nicht schnell genug geantwortet hat.
Dadurch ließen sich bei aktiver Internetverbindung, keine Apps mehr öffnen.
Alles war irgendwie eingefroren.
Der dafür zustände Dienst (<em>trustd</em>) hat keine Antwort bekommen und dadurch den App-Start nicht freigegeben.
Beheben ließ sich das vorerst nur, wenn die <a href="https://www.heise.de/news/Apple-Server-Fehler-legt-Macs-lahm-4959009.html">Internetverbindung getrennt</a> oder der Dienst mithilfe einer Firewall blockiert wird.
Zum einen ist das allerdings nicht ratsam, und zum anderen geht das mit der Firewall <a href="https://www.apple.com/macos/big-sur/">Big Sur</a> nicht mehr.
Was aber ein anderes Thema ist.</p>
<blockquote>
<p>Ein Serverausfall hat bei vielen Macs für Probleme gesorgt. Der Vorfall wirft aber auch Licht auf eine bedenkl</p>
</blockquote>
<p><a href="https://t3n.de/news/macos-big-sur-apple-datenschutz-vpn-netzwerkfilter-1337470/">Big Sur hebelt Firewalls aus, um Daten an Apple zu senden</a></p>
<p>Aber eben um diese unverschlüsselten Anfragen bei Apple geht der ganz oben genannten <a href="https://sneak.berlin/20201112/your-computer-isnt-yours/">Beitrag von Jeffrey Paul</a>.
Lesenswert bis zum Schluss.
Wirklich.</p>
<h2 id="warum-ich-das-hier-schreibe">Warum ich das hier schreibe</h2>
<p>Zum einen interessiere ich mich für Dinge rund um die Privatsphäre und den Datenschutz und zum anderen,
sollte man sich immer nicht nur aus einer Quelle informieren und nicht alles als gegeben hinnehmen.</p>
<p>Klar kann man jetzt sagen “Apple schreibt sich Datenschutz und Privatsphäre immer so groß auf die Flagge
und dann machen sie so etwas! Das geht ja mal gar nicht!” - Kann man machen, muss man aber nicht.
Wie sagt man doch so schön: Es wird nicht alles so heiß gegessen wie es es gekocht wird.</p>
<p>Zusätzlich dazu, habe ich mich dazu hinreißen lassen, auf dem Blog von <a href="https://monstropolis.wordpress.com/2020/11/23/krims-krams-105/#comment-57520">monstropolis</a> einen längeren Kommentar zu verfassen
und dann hier im eigenen Blog noch ein paar weitere Dinge aufzuführen.
Hier aber erst einmal mein Kommentar:</p>
<blockquote>
<p>MacNutzer haben wohl weniger Kontrolle.
Da habe ich heute noch lange mit einem Arbeitskollegen drüber gesprochen.
Vielleicht schreibe ich das mal nieder.
Weiß noch nicht.
Aber so viel vorweg: Ich habe mich schon damit beschäftigt, Alternativen zu Bear und Co und haste nicht gesehen zu suchen.
Leider sind die Tools auf Linux mir nicht ausgereift genug und zweitens, wenn ich da an Windows denke? Haua, haua, haua.</p>
<p>Dann gebe ich meine paar Logfiles wann und wo welche App geöffnet habe doch leider Apple.
Ich meine, das schwirrt nun schon länger im Netz rum, OCSP ist ja nicht erst seit heute implementiert.
Und wenn Apple jetzt, wie versprochen, sich darum kümmern will, dann finde ich das in Ordnung.
Was trotzdem bleibt ist die Sache mit der Firewall.
Ehrlich gesagt habe ich in LittleSnitch die default regeln aber auch noch nie ausgemacht.
Hätte ich das tun sollen? Ich vertraue da aber Apple, dass sie mit meinen Logs keinen Scheiß machen.
Immerhin kann man aber glaube schon behaupten, dass Apple mit unseren Daten nicht für Geld verkaufen muss.</p>
</blockquote>
<h2 id="was-ist-denn-jetzt-so-schlimm">Was ist denn jetzt so schlimm</h2>
<p>Für mich stellt sich also gar nicht mal mehr so sehr die Frage, wie viele Daten Apple von mir bekommt.
Einen Großteil der Daten haben sie eigentlich eh schon.
Kontakte, E-Mails, Nachrichten, Bezahlinformation etc.
Und das schon seit ein paar Jahren.
Ich bin Nutzer von iCloud seit der ersten Stunde als es damals unter dem Namen <strong>mobileme</strong> eingeführt wurde.</p>
<p>Doch was ist jetzt so schlimm an der ganzen Sachen? Apple will auf der einen Seite sicherstellen,
dass das System sauber und anständig funktioniert und keine Malware sich einnisten kann.
Auf der anderen Seite sehen aber viele einen Bruch mit dem Datenschutz und werfen Apple unötiges Tracking vor.</p>
<p>Jeffrey Paul schreibt:</p>
<blockquote>
<p>This means that Apple knows when you’re at home.
When you’re at work.
What apps you open there, and how often.
They know when you open Premiere over at a friend’s house on their Wi-Fi,
and they know when you open Tor Browser in a hotel on a trip to another city.</p>
</blockquote>
<p>Das ist auf der einen Seite verständlich, doch ist das wirklich so schlimm, dass mein Provider nun weiß, wann ich Premier geöffnet habe und steht das überhaupt in der Anfrage?</p>
<p><a href="https://blog.jacopo.io/en/post/apple-ocsp/">Jacopo Jannone</a> schreibt:</p>
<blockquote>
<p>It is clear that the <code>trustd</code> service on macOS doesn’t send out a hash of the apps you launch.
[…] macOS does actually send out some opaque information about the developer certificate of those apps, and that’s quite an important difference on a privacy perspective.</p>
</blockquote>
<p>Es wird also gar kein Hash der App übertragen,
sondern nur ein paar allgemeine Informationen die den Entwickler der App identifizieren.
Gut, wenn der Entwickler nur eine App hat, dann wird es halt doch wieder einfach.
Aber Apple macht hier schon vieles richtig und muss schließlich sicherstellen,
dass Software aus dem App Store läuft und das man böse Entwickler sperren kann, wenn man denn muss.
Einige weitere Informationen findet man dazu auch auf dem Blog von SentinalOne.</p>
<blockquote>
<p>Macs worldwide became unresponsive last week while attempting to launch 3rd party apps.
What caused the issue and what does it mean for your Mac’s security?</p>
</blockquote>
<p><a href="https://www.sentinelone.com/blog/what-happened-to-my-mac-apples-ocsp-apocalypse/">What Happened to My Mac? Apple’s OCSP Apocalypse | SentinelOne</a></p>
<h2 id="bleiben-oder-nicht-bleiben">Bleiben oder nicht bleiben</h2>
<p>das ist hier wohl die Frage.
Doch was tun, wenn man wenig alternativen sieht.
Sicherlich könnte ich auf viele Open Source Lösungen umstellen.
Doch will man das? Ich habe in den letzten Jahren schon ziemlich viel Geld in Software investiert.
Diese Software gibt es nicht unter Linux.
Soll ich das jetzt alles aufgeben, nur weil Apple den Start meiner Apps mitprotokoliert?</p>
<p>Ich denke nicht, dass ich in die Kategorie Personen falle, die sich Sorgen machen muss, wenn ich Apps starte.
Auch wenn jeder von uns etwas zu verbergen hat, so sehe ich die Sache mit den Abfragen als eher unproblematisch an.
<strong>Also werde ich bleiben.</strong> Ich mag das Ökosystem von Apple, auch wenn es Kanten und Macken hat.
Aber es sind immerhin sehr viel weniger Kanten und Macken als andere Systeme (Linux ist gut, aber es gibt nicht alle Software die ich verwenden möchte).
Für mich funktioniert das System gut und ich denke für viele andere eben auch.
Jeder macht mal Fehler und <a href="https://support.apple.com/en-us/HT202491">Apple hat sich mittlerweile auch schon zu dem Problem geäußert und versprochen, an dem Problem zu arbeiten und das System zu verbessern (Letzter Absatz)</a>.</p>
<h2 id="end-gut-alles-gut">End gut alles gut?</h2>
<p>Mit Sicherheit nicht.
<a href="https://mjtsai.com/blog/2020/11/13/apple-server-outage-makes-mac-apps-hang-on-launch/">Apple hat jetzt aber wohl genut Shit-Storm abbekommen</a>,
dass sie sich hinsetzen werden und das bestehende System überarbeiten.
Die nächsten Monate und Jahre werden zeigen, in welche Richtung sich Apple weiterentwickeln will.</p>
<blockquote>
<p><em>Früher waren es Apple Computer, aber jetzt ist es der Computer von Apple.</em></p>
</blockquote>
<p>Ich wünsche mir nur, dass der Mac ein Mac bleibt und nicht zu einem ultra-geschlossenes System wie iOS oder iPad OS mutiert.</p>
]]></content:encoded>
    </item>
    <item>
      <title>AirPods Pro: Spontankauf mit Begeisterung</title>
      <link>https://cbrueggenolte.de/airpods-pro-spontankauf-mit-begeisterung/</link>
      <pubDate>Tue, 24 Nov 2020 20:29:59 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/airpods-pro-spontankauf-mit-begeisterung/</guid>
      <description>&lt;p&gt;Heute habe ich mir im Elektronikmarkt um die Ecke spontan ein die &lt;a href=&#34;https://www.apple.com/de/airpods-pro/&#34;&gt;AirPods Pro&lt;/a&gt; im &lt;em&gt;Black-Friday-Week-irgendwas-Angebot&lt;/em&gt; geshoppt.&#xA;Warum? Keine Ahnung! Vielleicht, weil ich einfach was kaufen wollte.&#xA;Klingt jetzt vielleicht ein wenig dekadent, kann sein, allerdings hatte ich in den letzten Wochen aber ein wenig ausgemistet und ein paar gebrauchte Dinge verkauft, so das mein PayPal Konto ein wenig Guthaben aufwies.&lt;/p&gt;&#xA;&lt;p&gt;Auf jedenfalls weiß ich aber noch, dass ich mir heute Morgen die aktuelle Folge der Freakshow, &lt;a href=&#34;https://freakshow.fm/fs252-keine-grobe-feinheit&#34;&gt;Folge 252 Keine große Freiheit&lt;/a&gt;, angehört habe, Tim und Co.&#xA;von den AirPods Pro so dermaßen begeistert waren und geschwärmt haben wie gut die doch sind, dass ich irgendwie nicht widerstehen konnte.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute habe ich mir im Elektronikmarkt um die Ecke spontan ein die <a href="https://www.apple.com/de/airpods-pro/">AirPods Pro</a> im <em>Black-Friday-Week-irgendwas-Angebot</em> geshoppt.
Warum? Keine Ahnung! Vielleicht, weil ich einfach was kaufen wollte.
Klingt jetzt vielleicht ein wenig dekadent, kann sein, allerdings hatte ich in den letzten Wochen aber ein wenig ausgemistet und ein paar gebrauchte Dinge verkauft, so das mein PayPal Konto ein wenig Guthaben aufwies.</p>
<p>Auf jedenfalls weiß ich aber noch, dass ich mir heute Morgen die aktuelle Folge der Freakshow, <a href="https://freakshow.fm/fs252-keine-grobe-feinheit">Folge 252 Keine große Freiheit</a>, angehört habe, Tim und Co.
von den AirPods Pro so dermaßen begeistert waren und geschwärmt haben wie gut die doch sind, dass ich irgendwie nicht widerstehen konnte.</p>
<p>Tja, und ein paar Minuten später hatte ich dann auch schon bezahlt und bekam per E-Mail die Bestätigung, dass ich sie im Laufe des Tages abholen könnte.
Und hier sind sie nun.</p>
<p>Klein und handlich sind sie.
Passen gut in die Ohren und das Verbinden mit dem iPhone war super einfach.
Da muss man nicht mal viel klicken oder so.
Einfach nur neben das iPhone halten und die Ladeschale öffnen.
Ein, zwei Minuten später habe ich auch schon Musik gehört und mit der Rauschunterdrückung herumgespielt.
Fantastisch kann ich nur sagen.
Das Brummen der Kaffeemaschine ist weg und meine Frau höre ich auch nicht mehr (<em>zwinker)</em>.</p>
<blockquote>
<p>Die AirPods Pro verfügen über drei verschiedene Geräuschkontrollmodi: “Aktive Geräuschunterdrückung”, “Transparenzmodus” und “Aus”.
Wechsle zwischen ihnen, je nachdem, wie viel du von deiner Umgebung hören möchtest.
<a href="https://support.apple.com/de-de/HT210643">AirPods Pro: Aktive Geräuschunterdrückung und Transparenzmodus</a></p>
</blockquote>
]]></content:encoded>
    </item>
    <item>
      <title>Apple M1: Erste Gedanken zu Air und Pro</title>
      <link>https://cbrueggenolte.de/apple-m1-erste-gedanken-zu-air-und-pro/</link>
      <pubDate>Wed, 11 Nov 2020 15:17:05 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/apple-m1-erste-gedanken-zu-air-und-pro/</guid>
      <description>&lt;p&gt;Mit sehr viel Spannung und Aufregung habe auch ich die Keynote gestern Abend verfolgt.&#xA;Ich habe mich wirklich zurückgehalten und dieses Jahr noch keinen Kauf getätigt.&#xA;Also habe ich wie viele Andere auf die gestrige &lt;a href=&#34;https://www.apple.com/apple-events/november-2020/&#34;&gt;Apple Keynote&lt;/a&gt; gewartet und bin super überrascht worden.&lt;/p&gt;&#xA;&lt;h2 id=&#34;13-m1-macbook-air&#34;&gt;13&amp;quot; M1 MacBook Air&lt;/h2&gt;&#xA;&lt;p&gt;Eigentlich hatte ich mich ja schon dazu entschieden mein MacBook Air durch ein neues &lt;strong&gt;MacBook Pro i5 2.0GHz&lt;/strong&gt; zu ersetzen, kam Apple dann mit dem neuen MacBook Air um die Ecke.&#xA;Keine Lüfter, 8 Kerne, mehr Akku-Laufzeit, mehr Grafikpower und so weiter.&#xA;Super dachte ich mir! Kaufe ich mir kein MacBook Pro mit i5 sondern das neue &lt;strong&gt;&lt;a href=&#34;https://www.apple.com/de/macbook-air/&#34;&gt;M1 MacBook Air&lt;/a&gt;.&lt;/strong&gt; Bam! Und das für einen quasi Schnäppchenpreis ab 1100 Euro.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Mit sehr viel Spannung und Aufregung habe auch ich die Keynote gestern Abend verfolgt.
Ich habe mich wirklich zurückgehalten und dieses Jahr noch keinen Kauf getätigt.
Also habe ich wie viele Andere auf die gestrige <a href="https://www.apple.com/apple-events/november-2020/">Apple Keynote</a> gewartet und bin super überrascht worden.</p>
<h2 id="13-m1-macbook-air">13&quot; M1 MacBook Air</h2>
<p>Eigentlich hatte ich mich ja schon dazu entschieden mein MacBook Air durch ein neues <strong>MacBook Pro i5 2.0GHz</strong> zu ersetzen, kam Apple dann mit dem neuen MacBook Air um die Ecke.
Keine Lüfter, 8 Kerne, mehr Akku-Laufzeit, mehr Grafikpower und so weiter.
Super dachte ich mir! Kaufe ich mir kein MacBook Pro mit i5 sondern das neue <strong><a href="https://www.apple.com/de/macbook-air/">M1 MacBook Air</a>.</strong> Bam! Und das für einen quasi Schnäppchenpreis ab 1100 Euro.</p>
<p>Der <a href="https://www.apple.com/de/mac-mini/">Mac mini</a> ist ja jetzt nicht so mein Gerät und ich würde mir den wohl auch nicht kaufen, solange meine Windows-Kiste hier noch funktioniert.
Dennoch wurde ich nach dem <a href="https://www.apple.com/de/mac-mini/">Mac mini</a> noch ein weiteres Mal überrascht und jetzt bin ich dann doch unentschlossen, ob ich meine Kaufentscheidung noch mal ändern muss.</p>
<h2 id="13-m1-macbook-pro">13&quot; M1 MacBook Pro</h2>
<p>Den zum Schluss hat Apple noch mal richtig ausgeholt und auch ein neues <a href="https://www.apple.com/de/macbook-pro-13/">13&quot; M1 MacBook Pro</a> vorgestellt.
Mit noch mehr Akku-Laufzeit, noch mehr Power und besseren Mikrofonen.</p>
<p>Eine berechtigte Frage ist dennoch, um wie viel sich das MacBook Pro vom MacBook Air unterscheidet? Denn bis auf den Lüfter und die Mikrofone kann ich jetzt nicht viel Unterschied erkennen.
Und da stellt sich mir schon die berechtige Frage, ob ich nun das MacBook Air oder doch das teurere MacBook Pro kaufen soll.</p>
<p>Denn seien wir mal ehrlich.
Wenn in den beiden Geräten der gleich Chip steckt, die gleiche Menge RAM, dann kann es ja nur sein, dass das Pro mit aktiver Kühlung doch etwas besser performt als das Air.
Aber das sind alles Spekulationen, denn bisher lassen sich wirklich nur Vermutungen darüber anstellen, wie gut sich der neue M1 Chip unter <em>Real-Live-Bedingungen</em> verhalten wird und vor allem wie gut er unter Last arbeitet.</p>
<h2 id="air-oder-pro">Air oder Pro?</h2>
<p>Was ich aber weiß ist, dass ich schon mal gerne das ein oder andere Spiel auf dem MacBook gespielt hätte, und auch wenn das neue MacBook Air den gleichen Chip hat, bin ich davon überzeugt, dass das MacBook Pro hier besser abschneiden wird.
Denn je kühler ein Chip ist, desto weniger wird er gebremst und arbeitet besser.
Und da mit dem M1 nun all die Dinge aus (oder sagen wir die meisten Apps) auch auf macOS nun verfügbar sind, wird das spannend.</p>
<p><a href="https://www.apple.com/de/mac-mini/">https://www.apple.com/de/mac-mini/</a>Aber wie lange die Entwickler benötigen, um ihre Software anzupassen, kann man ja auch noch nicht sagen.
Aber ist das wirklich so wichtig? Keine Ahnung.
Big Sur kommt mit Rosetta 2 und Apple hat die Ansage gemacht, dass während der Übergangszeit sich alle Apps normal verhalten werden.
Das wird sich zeigen.</p>
<h2 id="fazit">Fazit</h2>
<p>Da es bisher noch recht viele offene Fragen und nur Vermutungen zum Leistungsunterschied gibt, werde ich mit dem Kauf also noch auf die ersten Reviews warten.
Will ich ein “Early Adopter” sein? Ja, definitiv! Muss ich sofort und jetzt schon bestellen? Nein.
Das neue Gerät soll auch wie das aktuelle, mindestens 4, wenn nicht sogar 7 oder 8 Jahre lange halten.
Der Unterschied zwischen den beiden MacBook Air ist nicht so signifikant und für den kleinen preislichen Unterschied, kann man eigentlich immer die 8 GPU-Core Version nehmen.</p>
<h3 id="vergleich-mbair-87-mbair-88-und-mbpro-88">Vergleich MBAir 8/7, MBAir 8/8 und MBPro 8/8</h3>
<p>Alle Konfigurationen haben 16 GB RAM und 512 GB SSD (planen für die Zukunft)</p>
<p><strong>MB Air 8 CPU-Cores, 7 GPU-Cores für 1548,90 Euro</strong> oder <strong>MB Air 8 CPU-Cores, 8 GPU-Cores für 1587,90 Euro</strong> oder <strong>MB Pro 8 CPU-Cores, 8 GPU-Cores für 1860,85 Euro</strong> - Der große Unterschied, wie oben erwähnt, sind die 270 Euro für einen Lüfter und bessere Mikrofone.
Apple hat schon immer <em>leicht</em> überhöhte Preise verlangt, aber so? Nun ja, es wird sich zeigen wie die drei Geräte in den Tests abschneiden, die nicht von Apple gemacht wurden.</p>
<p>Wenn ich auch zum Pro tendieren, habe ich jetzt fast 8 Jahre mit einem MacBook Air gearbeitet, da kommt es auf zwei, drei oder vier Wochen auch nicht mehr an.</p>
<h2 id="noch-mehr-informationen">Noch mehr Informationen</h2>
<p>Noch mehr Informationen findest du, falls du es nicht schon selber gefunden hast, auf den Webseiten von: <a href="https://www.maclife.de/newsticker/2020/46">MacLife.de</a>, <a href="https://www.theverge.com/apple-event">TheVerge</a>, <a href="https://www.macrumors.com/2020/11/10/apple-november-event-recap/">MacRumors</a>, <a href="https://t3n.de/news/m1-macbooks-mehr-highlights-apple-event-1336654/">T3N</a>,<a href="https://www.cnet.com/news/macbook-air-gets-apples-m1-chip-longest-battery-life-ever-fanless-body-starting-at-999/">CNET</a>, <a href="https://www.heise.de/news/MacBook-Air-mit-M1-Apple-krempelt-Tastatur-um-4954181.html">Heise.de</a>, <a href="https://video.golem.de/pc-hardware/25247/apple-stellt-das-macbook-air-m1-vor-herstellervideo.html">Golem.de</a> und vielen weiteren.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ghost: Ungenutzte Bilder automatisch löschen</title>
      <link>https://cbrueggenolte.de/ghost-ungenutzte-bilder-automatisch-loeschen/</link>
      <pubDate>Tue, 10 Nov 2020 21:58:17 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ghost-ungenutzte-bilder-automatisch-loeschen/</guid>
      <description>&lt;p&gt;Mit dem [Tool/&lt;a href=&#34;https://github.com/ghostboard/ghost-purge-images&#34;&gt;Script&lt;/a&gt;] von &lt;a href=&#34;https://github.com/ghostboard/ghost-purge-images&#34;&gt;David Burgos&lt;/a&gt; lassen sich in einer &lt;a href=&#34;http://ghost.org&#34;&gt;Ghost&lt;/a&gt;-Installation die nicht benutzten Bilder löschen.&#xA;Denn leider gibt es immer noch keinen Medien-Manager (oder ich bin zu doof den zu finden) um hochgeladene Dateien zu löschen.&#xA;Das Script von David funktioniert hervorragend.&lt;/p&gt;&#xA;&lt;p&gt;Auf dem &lt;a href=&#34;https://uberspace.de&#34;&gt;Uberspace&lt;/a&gt; kann man das Tool ganz einfach installieren.&#xA;Achte nur darauf, dass du auch die richtige Version für deine Ghost-Version installierst:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ghost v3 &lt;code&gt;npm install -g ghost-purge-images&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Ghost v2 +v2.16 &lt;code&gt;npm install -g ghost-purge-images@2.1.1&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Ghost v2 - v2.15.x &lt;code&gt;npm install -g ghost-purge-images@2.0.3&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Ghost v0.7.2 - v1.x &lt;code&gt;npm install -g ghost-purge-images@1.0.0&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Um das Tool jetzt einzusetzen, benötigst du noch zwei Schlüssel.&#xA;Diese generiert man sich in &lt;strong&gt;Settings&lt;/strong&gt; unter dem Menüpunkt &lt;strong&gt;Integrations.&lt;/strong&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Mit dem [Tool/<a href="https://github.com/ghostboard/ghost-purge-images">Script</a>] von <a href="https://github.com/ghostboard/ghost-purge-images">David Burgos</a> lassen sich in einer <a href="http://ghost.org">Ghost</a>-Installation die nicht benutzten Bilder löschen.
Denn leider gibt es immer noch keinen Medien-Manager (oder ich bin zu doof den zu finden) um hochgeladene Dateien zu löschen.
Das Script von David funktioniert hervorragend.</p>
<p>Auf dem <a href="https://uberspace.de">Uberspace</a> kann man das Tool ganz einfach installieren.
Achte nur darauf, dass du auch die richtige Version für deine Ghost-Version installierst:</p>
<ul>
<li>Ghost v3 <code>npm install -g ghost-purge-images</code></li>
<li>Ghost v2 +v2.16 <code>npm install -g ghost-purge-images@2.1.1</code></li>
<li>Ghost v2 - v2.15.x <code>npm install -g ghost-purge-images@2.0.3</code></li>
<li>Ghost v0.7.2 - v1.x <code>npm install -g ghost-purge-images@1.0.0</code></li>
</ul>
<p>Um das Tool jetzt einzusetzen, benötigst du noch zwei Schlüssel.
Diese generiert man sich in <strong>Settings</strong> unter dem Menüpunkt <strong>Integrations.</strong></p>
<p>Ich habe das hier für mcih schon erstellt, du musst in deinem Blog auf <strong>Add custom integration</strong> klicken.
Dann einen Namen vergeben und mit Save speichern.</p>
<p>Das sollte dann so aussehen:</p>
<p>In der Kommandozeile wechselst du dann in das Verzeichnis von deiner Ghost Installation und führst den Befehl <code>ghost-purge-images display --content-key=1234567890 --admin-key=0987654321s</code> aus.
Die Zahlen musst du natürlich durch deine Schlüssel aus der oben erstellen <strong>Integration</strong> nehmen.</p>
<p><strong>ghost-purge-images</strong> mit Parameter <strong>display</strong> zeigt die möglichen Kandidaten
Den gleichen Befehl kannst du dann noch mal mit dem Parameter <strong>purge</strong> ausführen, um die Bilder auch wirklich zu löschen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hintertüren in Messenger sind keine Lösung</title>
      <link>https://cbrueggenolte.de/hintertueren-in-messenger-sind-keine-loesung/</link>
      <pubDate>Mon, 09 Nov 2020 12:21:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/hintertueren-in-messenger-sind-keine-loesung/</guid>
      <description>&lt;p&gt;Ich bin nicht immer einer Meinung mit Felix von Leitner von &lt;a href=&#34;http://blog.fefe.de&#34;&gt;blog.fefe.de&lt;/a&gt;, aber das was er &lt;a href=&#34;http://blog.fefe.de/?ts=a157d173&#34;&gt;hier&lt;/a&gt; und &lt;a href=&#34;http://blog.fefe.de/?ts=a157c1a0&#34;&gt;hier&lt;/a&gt; über die Hintertüren in Messenger schreibt, geht mal gar nicht! Und damit meine ich die &lt;a href=&#34;https://www.europarl.europa.eu/RegData/etudes/STUD/2020/648784/IPOL_STU%282020%29648784_EN.pdf&#34;&gt;Dinge die unsere EU-Vertreter gerade so verabschieden und beschließen&lt;/a&gt; (siehe Punkt 5.1 European Cloud/European Internet).&lt;/p&gt;&#xA;&lt;p&gt;Was zum Geier?&lt;/p&gt;&#xA;&lt;p&gt;Es braucht keine Hintertüren in Messenger und erst recht brauchen wir in Europa keine Firewall nach chinesischem Vorbild.&#xA;Wenn es diese geben sollte, dann suchen sich die, die man überwachen und ausspionieren will, sowieso etwas anderes.&#xA;Die gelackmeierten sind dann die braven Bürger.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich bin nicht immer einer Meinung mit Felix von Leitner von <a href="http://blog.fefe.de">blog.fefe.de</a>, aber das was er <a href="http://blog.fefe.de/?ts=a157d173">hier</a> und <a href="http://blog.fefe.de/?ts=a157c1a0">hier</a> über die Hintertüren in Messenger schreibt, geht mal gar nicht! Und damit meine ich die <a href="https://www.europarl.europa.eu/RegData/etudes/STUD/2020/648784/IPOL_STU%282020%29648784_EN.pdf">Dinge die unsere EU-Vertreter gerade so verabschieden und beschließen</a> (siehe Punkt 5.1 European Cloud/European Internet).</p>
<p>Was zum Geier?</p>
<p>Es braucht keine Hintertüren in Messenger und erst recht brauchen wir in Europa keine Firewall nach chinesischem Vorbild.
Wenn es diese geben sollte, dann suchen sich die, die man überwachen und ausspionieren will, sowieso etwas anderes.
Die gelackmeierten sind dann die braven Bürger.</p>
<p>Ich finde das ganz und gar nicht in Ordnung und wir sollten uns dagegen wehren! Es braucht Vertreter, die für das Volk sind, und nicht gegen das Volk.</p>
<h2 id="update-09112020">Update 09.11.2020:</h2>
<p>Im aktuellen Artikel von <a href="https://netzpolitik.org/2020/bits-angriff-auf-sichere-kommunikation-eu-staaten-wuenschen-sich-hintertueren/">Netzpolitik.org steht:</a></p>
<blockquote>
<p>Bei Futurezone.at kommentiert Barbara Wimmer den Aufhänger der Resolution, das Attentat in Wien: <a href="https://futurezone.at/netzpolitik/nach-terroranschlag-in-wien-muss-jetzt-whatsapp-ueberwacht-werden/401091594">Nach Terroranschlag in Wien – Muss jetzt WhatsApp überwacht werden?</a> Die Beweislage ist in Österreich recht klar, der dortige Verfassungsschutz hatte im Vorfeld diverse Hinweise auf den Attentäter ignoriert.
Das Muster ist bekannt.</p>
</blockquote>
<p>Wenn Hinweise ständig ignoriert, verloren oder nicht beachtet werden, dann braucht es auch nicht mehr Überwachung.
Wie soll das nur werden, wenn es noch mehr Daten gibt, die auszuwerten sind?</p>
<h2 id="ditigalcourage-online-crypto-seminar">Ditigalcourage Online Crypto Seminar</h2>
<p>Passend zum Thema, gibt es von Digitalcourage vom 25.
November bis zum 3.
Dezember 2020 ein Online-Crypto-Seminar.
Ich schon mal an einem teilgenommen und kann es nur empfehlen! Schaut doch am 25.
einfach mal vorbei.</p>
<p>Du möchtest praktisch erlernen, wie man im digitalen Alltag weniger Spuren hinterlässt und die eigene Kommunikation schützen kann? Dann nimm an unserem Online-Crypto-Seminar teil.</p>
<p><a href="https://digitalcourage.de/blog/2020/online-crypto-seminar-25-november-3-dezember-2020">Online-Crypto-Seminar vom 25.
November bis zum 3.
Dezember 2020 | Digitalcourage</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>US-Wahlen, Trump und politische Rhetorik</title>
      <link>https://cbrueggenolte.de/us-wahlen-trump-und-politische-rhetorik/</link>
      <pubDate>Thu, 05 Nov 2020 15:23:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/us-wahlen-trump-und-politische-rhetorik/</guid>
      <description>&lt;p&gt;Das kann sich ja keiner den ganzen Tag lang anhören.&#xA; Es wird gelogen wo es nur geht und alles was nicht in deren Kram passt, wird geleugnet und für falsch gehalten.&lt;/p&gt;&#xA;&lt;p&gt;Und dann dieser &lt;a href=&#34;https://youtu.be/eP4QiJ0cIO8&#34;&gt;Auftritt von diesem Wahlkampfleiter&lt;/a&gt;.&#xA;Ich bin sprachlos! Also so etwas lächerliches.&#xA;Das der sich überhaupt traut, so wirres Zeug in der Öffentlichkeit aufzutreten.&#xA;Aber nur mal angenommen er hat recht mit seiner Behauptung, dass die Wahlbeobachter 20-30 Fuß weit weg haben stehen müssen.&#xA;Dann kann man das auch in einem anständigen Ton sagen, ohne in einem Satz gleich mehrerer Beleidigungen abzusondern.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Das kann sich ja keiner den ganzen Tag lang anhören.
 Es wird gelogen wo es nur geht und alles was nicht in deren Kram passt, wird geleugnet und für falsch gehalten.</p>
<p>Und dann dieser <a href="https://youtu.be/eP4QiJ0cIO8">Auftritt von diesem Wahlkampfleiter</a>.
Ich bin sprachlos! Also so etwas lächerliches.
Das der sich überhaupt traut, so wirres Zeug in der Öffentlichkeit aufzutreten.
Aber nur mal angenommen er hat recht mit seiner Behauptung, dass die Wahlbeobachter 20-30 Fuß weit weg haben stehen müssen.
Dann kann man das auch in einem anständigen Ton sagen, ohne in einem Satz gleich mehrerer Beleidigungen abzusondern.</p>
<p>Da war <a href="https://youtu.be/a49j90calso">die Ansprache von Joe Biden</a> schon sehr viel angenehmer.
Der geht wenigstens auf  die Menschen zu, ohne irgendwen zu beschimpfen oder zu verleumden.
Er bezeichnet seinen Kontrahenten auch nicht als Feind oder Abschaum, spricht davon, auch wenn er Demokrat ist, ein Präsident für das gesamte amerikanische Volk zu sein, sollte er ins weiße Haus einziehen.
So einen Satz würde Trump wohl nie sagen.
Trump kann irgendwie immer nur lügen und Blödsinn erzählen.
Nicht umsonst sind viele Tweets von Trump mit Hinweis versehen, dass die Auszählung noch nicht zu Ende ist.</p>
<p>So und nun ist aber genug.
Das wird so oder so keine saubere Wahl.
Denn wenn der amtierende Präsident von vornherein damit droht, die Auszählung vor Gericht anzufechten, dann ist da nicht mehr viel von Demokratie.</p>
]]></content:encoded>
    </item>
    <item>
      <title>AdGuard und NAS-Sicherheit im Heimnetz</title>
      <link>https://cbrueggenolte.de/adguard-und-nas-sicherheit-im-heimnetz/</link>
      <pubDate>Thu, 05 Nov 2020 11:23:54 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/adguard-und-nas-sicherheit-im-heimnetz/</guid>
      <description>&lt;p&gt;Wenn Du auch eine Synology NAS dein Eigen nennst, dann ist es vielleicht keine so schlechte Idee, wenn du nicht nur deinen Rechner mit AdBlocker und Co absicherst, sondern auch dein NAS Gerät.&lt;/p&gt;&#xA;&lt;p&gt;Meine DS 215j ist für Docker-Images leider  zu schwach und ich muss das mit Hilfe eines RaspberryPi loesen.&#xA;Wenn du aber eine Synology besitzt, die etwas mehr Leistung hat und auf der man Docker-Images laden kann, dem kann ich die Anleitung nur empfehlen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Wenn Du auch eine Synology NAS dein Eigen nennst, dann ist es vielleicht keine so schlechte Idee, wenn du nicht nur deinen Rechner mit AdBlocker und Co absicherst, sondern auch dein NAS Gerät.</p>
<p>Meine DS 215j ist für Docker-Images leider  zu schwach und ich muss das mit Hilfe eines RaspberryPi loesen.
Wenn du aber eine Synology besitzt, die etwas mehr Leistung hat und auf der man Docker-Images laden kann, dem kann ich die Anleitung nur empfehlen.</p>
<blockquote>
<p>Unter Hass.io ist die Installation von AdGuard schnell erledigt.
Addon laden und starten.
Wenn du kein Raspberry Pi mit Hass.io im eigenen Netzwerk betreibst, aber ein NAS von Synology besitzt…</p>
</blockquote>
<p><a href="https://techbox.rocks/adguard-auf-synology-nas-installieren/">AdGuard auf Synology-NAS installieren</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>APK und Auto-Check vor dem Winter</title>
      <link>https://cbrueggenolte.de/apk-und-auto-check-vor-dem-winter/</link>
      <pubDate>Tue, 03 Nov 2020 21:22:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/apk-und-auto-check-vor-dem-winter/</guid>
      <description>&lt;p&gt;Heute habe ich mein Auto zum niederländischen TÜV gebracht, zum &lt;a href=&#34;https://www.rdw.nl/over-rdw/information-in-english/periodic-technical-inspection-apk&#34;&gt;APK, der &lt;em&gt;Algemene Periodieke Keuring&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ein Weg zum Service wäre zwar laut Fahrzeug-Informations-System erst ist 19000 km oder 190 Tagen fällig, doch auch wenn wir mit dem Octavia keine 10000 km dieses Jahr gefahren sind, so kann ein Check vor dem Winter gar nicht so schlecht sein.&lt;/p&gt;&#xA;&lt;p&gt;Gefunden haben sie in der Werkstatt nichts, und das ist auch gut so! Ein wenig Kühlflüssigkeit haben sie aufgefüllt (das erste Mal in 3 Jahren) und die Reifen ordentlich aufgepumpt (&lt;em&gt;Kurz nebenher erwähnt: in den Niederlanden muss man an den Luftstationen Geld einwerfen!&lt;/em&gt;).&#xA;Netter Service von der Werkstatt, denn sie haben mir nichts zusätzlich berechnet.&#xA;Da kommt man doch gerne wieder.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute habe ich mein Auto zum niederländischen TÜV gebracht, zum <a href="https://www.rdw.nl/over-rdw/information-in-english/periodic-technical-inspection-apk">APK, der <em>Algemene Periodieke Keuring</em></a>.</p>
<p>Ein Weg zum Service wäre zwar laut Fahrzeug-Informations-System erst ist 19000 km oder 190 Tagen fällig, doch auch wenn wir mit dem Octavia keine 10000 km dieses Jahr gefahren sind, so kann ein Check vor dem Winter gar nicht so schlecht sein.</p>
<p>Gefunden haben sie in der Werkstatt nichts, und das ist auch gut so! Ein wenig Kühlflüssigkeit haben sie aufgefüllt (das erste Mal in 3 Jahren) und die Reifen ordentlich aufgepumpt (<em>Kurz nebenher erwähnt: in den Niederlanden muss man an den Luftstationen Geld einwerfen!</em>).
Netter Service von der Werkstatt, denn sie haben mir nichts zusätzlich berechnet.
Da kommt man doch gerne wieder.</p>
<p>Warum ich zum “TÜV” bin, obwohl ich nicht brauchte? Nun, da wir hier in den Niederlanden nicht ansässig und quasi nur <em>geduldet</em> sind, muss ich die Fahrzeugscheine jedes Jahr erneuern.
Und eine APK-Bescheinigung ist nun mal Teil der Unterlagen, die man vorweisen muss.
Zwar ist das für Fahrzeuge unter 4 Jahren noch nicht nötig, aber wie gesagt, ein Check vor dem Winter kann nicht schlecht sein.</p>
]]></content:encoded>
    </item>
    <item>
      <title>NaBloPoMo, Schreiben und Blogging-Routinen</title>
      <link>https://cbrueggenolte.de/nablopomo-schreiben-und-blogging-routinen/</link>
      <pubDate>Mon, 02 Nov 2020 21:19:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/nablopomo-schreiben-und-blogging-routinen/</guid>
      <description>&lt;p&gt;Der &lt;a href=&#34;https://www.startupinstitute.com/blog/its-national-blog-posting-month&#34;&gt;NaBloPoMo&lt;/a&gt; ist der &lt;em&gt;National Blog Posting Month&lt;/em&gt;.&#xA;Kannte ich bisher auch nicht, aber finde ich gut.&#xA;Allerdings nehme ich ja schon an der #100DaysToOffload Challenge teil und ich bin mir gerade nicht so sicher, ob sich das nicht ein wenig überschneidet.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update 2026:&lt;/strong&gt; Ich habe die Challenge beendet, allerdings nach mehrern restrukturierungen meines Blogs, die Tags und die Zeilen am Ende der Beitrage entfernt. Auch sind einige Beiträge nicht mehr verfügbar, da sie aus der Zeit gefallen sind und ich mich dazu entschieden habe, diese nicht mehr zu veröffentlichen. Ich habe die Challange trotzdem sehr genossen, wuerde sie heute aber eher auf einer anderen Platform machen.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Der <a href="https://www.startupinstitute.com/blog/its-national-blog-posting-month">NaBloPoMo</a> ist der <em>National Blog Posting Month</em>.
Kannte ich bisher auch nicht, aber finde ich gut.
Allerdings nehme ich ja schon an der #100DaysToOffload Challenge teil und ich bin mir gerade nicht so sicher, ob sich das nicht ein wenig überschneidet.</p>
<blockquote>
<p><strong>Update 2026:</strong> Ich habe die Challenge beendet, allerdings nach mehrern restrukturierungen meines Blogs, die Tags und die Zeilen am Ende der Beitrage entfernt. Auch sind einige Beiträge nicht mehr verfügbar, da sie aus der Zeit gefallen sind und ich mich dazu entschieden habe, diese nicht mehr zu veröffentlichen. Ich habe die Challange trotzdem sehr genossen, wuerde sie heute aber eher auf einer anderen Platform machen.</p>
</blockquote>
<p>Auf dieses NaBloPoMo bin ich gestoßen, als ich im <a href="https://thesweetsetup.com/ulysses-mini-masterclass-video-replay/">Ulysses Mini-Masterclass Webinar bei Shawn Blanc</a> von der Aktion <a href="https://en.wikipedia.org/wiki/National_Novel_Writing_Month">NaNoWriMo</a> gehört habe.
Das ist die <em>National Novel Writing Month</em> Aktion und findet immer im November des Jahres stattfindet.
Aufgabe ist, eine kurze Novelle mit 50000 Wörtern zu schreiben.
Das sind also ca.
1700 Wörter pro Tag.
Aber ehrlich gesagt, ist mir das dann doch zu viel.
Neben meinem Selbststudium in Python und Ethical Hacking dann noch eine Stunde lange was ausdenken? Ne, lass mal.
Mal ganz abgesehen davon, dass ich jetzt auch schon 15 Minuten hier dran sitze und gerade mal knapp 250 Wörter zusammen haben.</p>
<p>Nichtsdestotrotz finde ich die Idee schon super und will versuchen, auch wenn ich nicht offiziell daran teilnehmen werde, also an der <em>NaBloPoMo</em>-Challenge, jeden Tag einen kleinen und kurzen Beitrag zu verfassen.
Keinen Linkpost oder so.
Nein, einen kurzen Post über eine Sache, die mir an diesem Tag wichtig war und es soll nicht länger als 20 Minuten dauern.
Bedeutet aber auch, dass ich hier jetzt auch aufhören muss.</p>
<p>Was du davon hältst, würde mich wirklich interessieren.
<a href="https://cbrueggenolte.de/impressum">Schreib mir das doch einfach mal</a>.
Ich würde mich sehr darüber freuen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Wochenrückblick: Tastaturen, Touchtyping und youtube-dl</title>
      <link>https://cbrueggenolte.de/wochenrueckblick-tastaturen-touchtyping-und-youtube-dl/</link>
      <pubDate>Sun, 25 Oct 2020 18:18:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/wochenrueckblick-tastaturen-touchtyping-und-youtube-dl/</guid>
      <description>&lt;p&gt;Hallo, lieber Leser.&#xA;Willkommen bei meinem Wochenrückblick.&lt;/p&gt;&#xA;&lt;p&gt;Heute Nacht haben wir die Uhren eine Stunde zurückgestellt und so eine Stunde mehr Schlaf erhalten.&#xA;Mir macht das eigentlich nichts aus, soll aber Menschen geben, die das nicht so gut verkraften.&#xA;Auch ist man sich nicht so wirklich sicher, &lt;a href=&#34;https://www.tagesschau.de/inland/eu-zeitumstellung-111.html&#34;&gt;wie lange man an dieser Zeitumstellung noch festhalten will&lt;/a&gt;.&#xA;Es gibt halt immer noch keine Einigung der einzelnen Staaten, welches denn nun die richtige Zeit ist.&#xA;Was wir aber definitiv sagen können, ist, dass wir uns mitten im Herbst befinden und der Winter sich nähert.&#xA;Mehr Regen und Wind und düstere Tage.&#xA;Gut das ich wieder ins Büro darf.&#xA;So kommt man zumindest mal aus dem Haus.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Hallo, lieber Leser.
Willkommen bei meinem Wochenrückblick.</p>
<p>Heute Nacht haben wir die Uhren eine Stunde zurückgestellt und so eine Stunde mehr Schlaf erhalten.
Mir macht das eigentlich nichts aus, soll aber Menschen geben, die das nicht so gut verkraften.
Auch ist man sich nicht so wirklich sicher, <a href="https://www.tagesschau.de/inland/eu-zeitumstellung-111.html">wie lange man an dieser Zeitumstellung noch festhalten will</a>.
Es gibt halt immer noch keine Einigung der einzelnen Staaten, welches denn nun die richtige Zeit ist.
Was wir aber definitiv sagen können, ist, dass wir uns mitten im Herbst befinden und der Winter sich nähert.
Mehr Regen und Wind und düstere Tage.
Gut das ich wieder ins Büro darf.
So kommt man zumindest mal aus dem Haus.</p>
<h3 id="mechanische-tastaturen">Mechanische Tastaturen</h3>
<p>Diverse mechanische TastaturenDiese Woche habe ich mich über mechanische Tastaturen informmiert.
Meine bisherige <a href="https://www.amazon.de/Tastatur-Layout-drucksensitiver-Tastenzone-RGB-Tastenbeleuchtung/dp/B01MY497MY">ISKU+ Force FX von Roccat</a> ist zwar noch ganz gut, aber die ersten Tasten fangen an zu quietschen.
Und ganz besonders betroffen ist die Leertaste.
Zusätzliche entwickeln einige Tasten mittlerweile ein eigenartiges Eigenleben.
STRG, ALT und einige andere Tasten bleiben manchmal <em>kleben</em>.
Dann muss ich die Taste wiederholt drücken, um die Funktion zu deaktivieren.
Also habe ich mich nach Alternativen umgeschaut.</p>
<p>Also habe ich die Woche über mehrere Stunden Videomaterial zu mechanischen Tastaturen konsumiert.
Die Vielfalt ist groß und auch die Preisspanne geht von günstigen 50 Euro bis weit über 1000 Euro für eine handgemachte mechanische Tastatur.
Es gibt eine eigene kleine Subkultur, die sich ausschließlich mit diesen Tastaturen beschäftigt und schon auch, zumindest für Außenstehende, ein wenig seltsam und eigenartig erscheint.</p>
<p>Die Kanäle die ich für empfehlenswert halte sind:</p>
<ul>
<li>:3ildcat: <a href="https://www.youtube.com/user/jseom">https://www.youtube.com/user/jseom</a></li>
<li>TeaKeyboards: <a href="https://www.youtube.com/channel/UCllGwtW6scxAjM28fIgEozg">https://www.youtube.com/channel/UCllGwtW6scxAjM28fIgEozg</a></li>
<li>TechLead Show: <a href="https://www.youtube.com/watch?v=bQGwPcZ3U70">https://www.youtube.com/watch?v=bQGwPcZ3U70</a></li>
<li>Taeha Types: <a href="https://www.youtube.com/user/FeelgHoodMusic">https://www.youtube.com/user/FeelgHoodMusic</a></li>
<li>Ali Abdaal: <a href="https://www.youtube.com/c/aliabdaal">https://www.youtube.com/c/aliabdaal</a></li>
<li>Switch and Click: <a href="https://www.youtube.com/channel/UCT6AJiTYspOILBK3hMWEq2g">https://www.youtube.com/channel/UCT6AJiTYspOILBK3hMWEq2g</a></li>
</ul>
<p>Den ausführlichen Beitrag zu den drei Tastaturen, die ich mir bestellt habe, kommt im Laufe der Woche.
Dann werde ich dir ein wenig über die <a href="https://www.amazon.de/gp/product/B083Z6PXXS?psc=1">Dierya DK63 BT4.0 60%</a>, die <a href="https://www.amazon.de/gp/product/B07GSWT56W?psc=1">Royal Klugde Sink87 Brown Switch</a> und eine <a href="https://www.amazon.de/gp/product/B088DYXFRL?psc=1">Durgod Taurus K320</a> erzählen.</p>
<p>Was ich aber jetzt schon mal sagen kann ist, dass ich ziemlich viel über die verschiedenen Tastaturen gelernt habe und auch darüber, wie welcher Switch funktioniert und warum die so klingen wie sie klingen.</p>
<p>Doch dazu mehr, wenn der andere Artikel fertig ist.</p>
<h3 id="touchtyping-lernen">Touchtyping lernen</h3>
<p>Im Zuge der Recherche um die mechanischen Tastaturen bin ich auch auf zahlreiche Webseiten gestoßen die sich mit dem lernen und überprüfen der Tippgeschwindigkeit beschäftigen.
Ich habe leider feststellen müssen, dass ich bei korrekter Haltung, alle Finger immer auf die Heimreihe zurück, mit knapp 40 Wörtern pro Minute doch sehr langsam bin.
Mit meinem eigenen System, was nicht optimal ist, komme ich auf knapp 70 Wörter pro Minute.
Das ist aber nicht mehr zu verbessern, denn das verwende ich ja seit Jahren und schneller werde ich wohl nicht mehr.</p>
<p>Um mich zu verbessern, übe ich nun fleißig jeden Tag ein wenig auf <a href="https://keybr.com">keybr.com</a> und <a href="https://10fastfingers.com/">10fastfingers.org</a>.
Das sind zwar keine richtigen Schreibtrainer, dennoch kann ich damit gut üben.
Diesen Text hier versuche ich übrigens ebenfalls schon so zu schreiben.
Ich muss mich zwar dazu zwingen, nicht auf die Tastatur zu schauen und mache noch relativ viele Fehler, aber nach den ersten paar Tagen merke ich schon, wie ich besser werden.
Auch gewöhnen sich die Finger langsam an die neue Haltung.
Vor allem ist das gar nicht so einfach, wenn man jahrelang den kleinen Finger nur für die Enter- oder Shift-Taste benutzt hat.
Erschwerend kommt hinzu, dass ich diesen Text nicht auf meiner ISKU+ schreibe, sondern mit der [Durgod Taurus K320 Chery Silent Red][dtk320csr] und jeder Tastatur ist ein klein wenig anders.</p>
<p>Neben den beiden oben genannten Webseiten gibt es noch <a href="https://typings.gg/">typings.gg</a> und diverse kostenlose Online-Kurse.
Den einzigen den ich bisher aber für gut befinden kann, ist der <a href="https://www.typingclub.com/">TypingClub</a>.
Das Ganze funktioniert im Browser und man kann auch ein kostenfreies Benutzerkonto anlegen, um seinen Fortschritt rechnerübergreifend zu speichern.</p>
<h3 id="akku-im-macbook-air">Akku im MacBook Air</h3>
<p>Wie ich diese Woche schon berichtet hatte, habe ich den Akku im MacBook Air getauscht.
Ich bin damit sehr zufrieden und kann wieder mehr als 6 Stunden damit arbeiten, ohne das nach dem Netzteil gerufen wird.
Das ist gut und für den günstigen Preis wirklich erschwinglich.</p>
<p>Dennoch warte ich gespannt auf das Event vom Apple im November.
Wenn es da einen neuen Laptop mit ARM Chip gibt, könnte ich tatsächlich schwach werden.</p>
<h3 id="es-gibt-nun-eine-interaktive-corona-karte-für-deutschland">Es gibt nun eine interaktive Corona Karte für Deutschland</h3>
<p>Nun kann jeder für sich herausfinden, wie es um seine Nachbarschaft bestelle ist.
Ich wünschte, es gäbe eine solche Karte auch für die Niederlande.</p>
<blockquote>
<p>SARS-CoV2 Infektions­fälle als Heatmaps für Deutschland Visu­al­isierung der Coronavirus-Fall­zahlen.
Heatmaps dar­ge­stellt mit Alters­gruppen und Kalender­wochen pro Land- und Stadtkreis sowie Bundes­land.</p>
<p><a href="https://corona-data.eu/">https://corona-data.eu/</a></p>
</blockquote>
<h3 id="corona-und-erfahrung-aus-zwei-wochen-quarantäne">Corona und Erfahrung aus zwei Wochen Quarantäne</h3>
<p>Jonny Häusler hatte am 16.10.2020 darüber berichtet, in Form eines Tagebuches, wie sich das so abspielen kann, wenn einer aus der Familie positiv auf Corona getestet wird.
<a href="https://www.spreeblick.com/blog/2020/10/16/corona-in-the-house-quarantaene-mit-der-familie/">Spreeblick 16.10.2020</a></p>
<p>Dazu gibt es jetzt einen lesenswerten Nachfolgeartikel: <a href="https://www.spreeblick.com/blog/2020/10/22/erkenntnisse-aus-zwei-wochen-corona-quarantaene-in-der-familie/">Erkenntnisse aus zwei Wochen Corona Quarantäne</a></p>
<p>Ich wünsche das niemandem und hoffe, wenn man davon betroffen ist, dass es harmlos und glimpflich verläuft.</p>
<h3 id="der-aufreger-der-woche-dmca-takedown-request-gegen-github-wegen-youtube-dl-von-der-riaa">Der Aufreger der Woche: DMCA Takedown Request gegen Github wegen Youtube-dl von der RIAA</h3>
<p>Gegen Github hat die RIAA (ja die gibt es noch, willkommen in den 90’er) einen Takedown Request gestellt.
Diesem muss wohl oder übel Folge geleistet werden.
Youtube-dl ist ein Kommandozeilenprogramm, mit dem sich die Videos vieler Internetplattformen herunterladen lassen.
Ursprünglich mal geschaffen, um die Videos von YouTube herunterzuladen und oder zu konvertieren.
Zum Beispiel in mp3 oder m4a.</p>
<p>Als Grund wurde angebracht, dass sich mit Youtube-dl urheberrechtliches Material von YouTube herunterladen laden lässt.
Doch dazu braucht es gar kein besonderes Tool.
Das geht heutzutage mit so gut wie jedem modernen Browser.
Man aktiviert die Entwicklungswerkzeuge und kommt auch so an die URL heran.
Seltsam ist auch, dass es weiterhin die vielen Internetseiten gibt, die eine solche Youtube-Download-Funktion anbieten.</p>
<p>Vielleicht weil Youtube-dl es einem ziemlich einfach macht, automatisiert ganze Alben herunterzuladen.
Aber wohl auch, weil auf YouTube immer mehr komplette Alben der Künstlern online gestellt werden.
Die <a href="https://github.com/github/dmca/blob/master/2020/10/2020-10-23-RIAA.md">RIAA</a> sah sich also bedroht und will das Programm jetzt verbieten.
Blöd ist nur, dass sich in dem <a href="https://github.com/github/dmca/blob/master/2020/10/2020-10-23-RIAA.md">Github DMCA Repository</a> in einem Pull Request (wurde entfernt) der gesamte Sourcecode von <a href="https://youtube-dl.org/">Youtube-dl</a> befindet.
Und auch wenn das ursprüngliche Repository nicht mehr existiert, einen Pull Request kann man nicht so einfach entfernen.</p>
<p><strong>Ich würde mal sagen: Dumm gelaufen RIAA!</strong> Denn die Internetgemeinde hält zusammen und die Kopien schießen nur so aus dem Boden.
<a href="https://twitter.com/search?q=youtube-dl">Twitter</a> ist eine gute Anlaufstelle, wenn man den Sourcecode selber kompilieren möchte.
Ansonsten empfehle ich [Chocolatey] oder <a href="https://formulae.brew.sh/formula/youtube-dl#default">Homebrew</a> zur Installation.</p>
<p>Ein wenig mehr Hintergrundinformationen zum RIAA DMCA Bullshit liefert <a href="https://www.golem.de/news/urheberrecht-code-von-youtube-dl-wegen-dmca-anfrage-offline-2010-151700.html">Golem</a>.</p>
<p>Update: Cory Doctorow hat das auch sehr ausführlich aufgedröselt und beschreibt gut, warum das System kaputt ist.
<a href="https://mamot.fr/@pluralistic/105090176790708909">Cory Doctorow’s linkblog</a> <a href="https://mamot.fr/@pluralistic">@pluralistic@mamot.fr</a></p>
<p>Der <a href="https://github.com/github/dmca/tree/416da574ec0df3388f652e44f7fe71b1e3a4701f">Youtube-dl SourceCode</a> liegt im github dmca rep <a href="https://github.com/github/dmca/tree/416da574ec0df3388f652e44f7fe71b1e3a4701f">github/dmca</a></p>
<hr>
<p>Und damit wünsche ich dir noch einen schönen und angenehmen Sonntagnachmittag und -abend.
Nächste Woche geht das “richtige” Arbeitsleben wieder los.
Die Homeoffice-Wochen sind vorbei und ich darf mich wieder ins Büro begeben.
Juhu!</p>
]]></content:encoded>
    </item>
    <item>
      <title>macOS Big Sur: Apple-Dienste und Netzwerkfilter</title>
      <link>https://cbrueggenolte.de/macos-big-sur-apple-dienste-und-netzwerkfilter/</link>
      <pubDate>Fri, 23 Oct 2020 17:10:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/macos-big-sur-apple-dienste-und-netzwerkfilter/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.heise.de/news/macOS-11-Apple-verbirgt-eigene-Dienste-vor-Mac-Netzwerkfiltern-4937971.html&#34;&gt;Heise.de&lt;/a&gt; schreibt:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Mit macOS 11 Big Sur wird das allerdings verhindert: Apple stuft die Kernel-Extensions seit 2019 als abgekündigt ein.&#xA;Sie werden durch verschiedene “System Extensions” abgelöst, die nicht mehr im Kernelspace, sondern im Userspace laufen und somit nicht mehr so tief in das Betriebssystem eingreifen können.&#xA;Die auf der Ausschlussliste stehenden Dienste des Herstellers bleiben damit für installierte Apps unsichtbar, wie der &lt;a href=&#34;https://twitter.com/patrickwardle/status/1318437929497235457&#34;&gt;Sicherheitsforscher Patrick Wardle bestätigte&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Ist zwar schon seit Dienstag in der Runde, aber ich wollte das hier trotzdem noch mal kurz erwähnen.&#xA;&lt;a href=&#34;https://blog.zn80.net/tag:Google&#34;&gt;#Google&lt;/a&gt; macht das ähnlich mit seinen eigenen Diensten im Chrome Browser.&#xA;Das sind auch viele Dinge ausgenommen die von Google kommen.&#xA;Und Apple geht nun irgendwie den gleichen Weg.&#xA;Ich bin mir nicht so sicher, ob ich das so gut finde.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://www.heise.de/news/macOS-11-Apple-verbirgt-eigene-Dienste-vor-Mac-Netzwerkfiltern-4937971.html">Heise.de</a> schreibt:</p>
<blockquote>
<p>Mit macOS 11 Big Sur wird das allerdings verhindert: Apple stuft die Kernel-Extensions seit 2019 als abgekündigt ein.
Sie werden durch verschiedene “System Extensions” abgelöst, die nicht mehr im Kernelspace, sondern im Userspace laufen und somit nicht mehr so tief in das Betriebssystem eingreifen können.
Die auf der Ausschlussliste stehenden Dienste des Herstellers bleiben damit für installierte Apps unsichtbar, wie der <a href="https://twitter.com/patrickwardle/status/1318437929497235457">Sicherheitsforscher Patrick Wardle bestätigte</a>.</p>
</blockquote>
<p>Ist zwar schon seit Dienstag in der Runde, aber ich wollte das hier trotzdem noch mal kurz erwähnen.
<a href="https://blog.zn80.net/tag:Google">#Google</a> macht das ähnlich mit seinen eigenen Diensten im Chrome Browser.
Das sind auch viele Dinge ausgenommen die von Google kommen.
Und Apple geht nun irgendwie den gleichen Weg.
Ich bin mir nicht so sicher, ob ich das so gut finde.</p>
<p>Und wie <a href="https://blog.fefe.de/?ts=a171ed38">Fefe</a> das so trefflich am Dienstag geschrieben hat: <em>“Ich stelle mir bei sowas immer vor, wie groß der Aufschrei gewesen wäre, wenn Microsoft das vor zehn Jahren oder so gebracht hätte.&quot;</em></p>
<p>Tja, damals wäre der Aufschrei wohl wirklich ziemlich groß gewesen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>FreeOffice als Alternative zu Microsoft Office</title>
      <link>https://cbrueggenolte.de/freeoffice-als-alternative-zu-microsoft-office/</link>
      <pubDate>Fri, 23 Oct 2020 17:08:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/freeoffice-als-alternative-zu-microsoft-office/</guid>
      <description>&lt;p&gt;Neben &lt;a href=&#34;https://de.libreoffice.org/&#34;&gt;LibreOffice&lt;/a&gt; ist &lt;a href=&#34;https://www.freeoffice.com/de/&#34;&gt;FreeOffice&lt;/a&gt; von Softmaker wohl &lt;strong&gt;die&lt;/strong&gt; Alternative zu Microsoft Office.&#xA;Es gibt immerhin genügend Gründe, nicht mehr die Office-Programme von Microsoft zu verwenden (&lt;a href=&#34;https://www.rnd.de/digital/microsoft-datenschutzer-sehen-mangel-bei-office-paket-LHNW6DGSFDVEYF727FGE4TM45Y.html&#34;&gt;Grund 1: Datenschutz&lt;/a&gt;, &lt;a href=&#34;https://www.rnd.de/digital/microsoft-installiert-kostenpflichtige-apps-bei-windows-10-so-lassen-sich-die-office-anwendungen-wieder-entfernen-ZJ2PGPHO2BGBDE4KHJ6GFWSNYE.html&#34;&gt;Grund 2: ungefragte Installation&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;FreeOffice&lt;/strong&gt; von Softmaker ist in der kostenfreien Version schon sehr gut ausgestattet.&#xA;&lt;em&gt;Textmaker&lt;/em&gt; für Texte und Briefe, &lt;em&gt;Planmaker&lt;/em&gt; für Tabellenkalkulation und &lt;em&gt;Presentations&lt;/em&gt; für die Erstellung von Präsentationen und Vorträgen.&lt;/p&gt;&#xA;&lt;p&gt;In der kostenfreien Variante gibt es alles was man für den alltäglichen Office-Einsatz benötigt.&#xA;Abgesehen von ein paar Kleinigkeiten gegenüber der günstigen Bezahlversion, ist die kostenfreie wirklich gut ausgestattet.&#xA;&lt;a href=&#34;https://www.softmaker.de/vergleich-freeoffice-softmaker-office/&#34;&gt;Details findest Du hier&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Neben <a href="https://de.libreoffice.org/">LibreOffice</a> ist <a href="https://www.freeoffice.com/de/">FreeOffice</a> von Softmaker wohl <strong>die</strong> Alternative zu Microsoft Office.
Es gibt immerhin genügend Gründe, nicht mehr die Office-Programme von Microsoft zu verwenden (<a href="https://www.rnd.de/digital/microsoft-datenschutzer-sehen-mangel-bei-office-paket-LHNW6DGSFDVEYF727FGE4TM45Y.html">Grund 1: Datenschutz</a>, <a href="https://www.rnd.de/digital/microsoft-installiert-kostenpflichtige-apps-bei-windows-10-so-lassen-sich-die-office-anwendungen-wieder-entfernen-ZJ2PGPHO2BGBDE4KHJ6GFWSNYE.html">Grund 2: ungefragte Installation</a>).</p>
<p><strong>FreeOffice</strong> von Softmaker ist in der kostenfreien Version schon sehr gut ausgestattet.
<em>Textmaker</em> für Texte und Briefe, <em>Planmaker</em> für Tabellenkalkulation und <em>Presentations</em> für die Erstellung von Präsentationen und Vorträgen.</p>
<p>In der kostenfreien Variante gibt es alles was man für den alltäglichen Office-Einsatz benötigt.
Abgesehen von ein paar Kleinigkeiten gegenüber der günstigen Bezahlversion, ist die kostenfreie wirklich gut ausgestattet.
<a href="https://www.softmaker.de/vergleich-freeoffice-softmaker-office/">Details findest Du hier</a>.</p>
<p>Falls Du einen Mac Dein Eigen nennst, kannst Du natürlich auch die Programme von Apple benutzen.
<a href="https://apps.apple.com/de/app/pages/id409201541?l=en&amp;amp;mt=12"><em>Pages</em></a>, <a href="https://apps.apple.com/de/app/numbers/id409203825?l=en&amp;amp;mt=12"><em>Numbers</em></a> und <a href="https://apps.apple.com/de/app/keynote/id409183694?l=en&amp;amp;mt=12"><em>Keynote</em></a> sind ebenfalls gute Programme, aber nicht jedermanns Sache.</p>
<p>Da ich immer gerne auch neue Software ausprobiere, werde ich mir FreeOffice mal anschauen.
Das kannte ich bisher noch gar nicht und es ist immer gut, auch Alternativen zu kennen.</p>
<p><strong>FreeOffice gibt es für Windows, Mac und Linux.</strong></p>
<p>Update: habe ich auch erst später gesehen.
Es gibt von Softmaker sogar einen kostenfreien <a href="https://www.getfreepdf.de/">PDF-Editor (leider nur) für Windows</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>MacBook Air: Akku selbst tauschen</title>
      <link>https://cbrueggenolte.de/macbook-air-akku-selbst-tauschen/</link>
      <pubDate>Tue, 20 Oct 2020 14:51:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/macbook-air-akku-selbst-tauschen/</guid>
      <description>&lt;p&gt;Ich habe am Wochenende einen neuen Akku für das MacBook Air bestellt und gestern Abend eingebaut.&#xA;Der alte Akku hatte nach über 520 Ladezyklen nur noch 70% Kapazität.&#xA;Es wurde also Zeit für einen Austausch.&#xA;Also fix einen neuen Akku bestellt.&lt;/p&gt;&#xA;&lt;p&gt;Dank der Anleitung von &lt;a href=&#34;https://de.ifixit.com/Anleitung/MacBook&amp;#43;Air&amp;#43;13-Inch&amp;#43;Mid&amp;#43;2013&amp;#43;Akku&amp;#43;Austausch/15205&#34;&gt;iFixit&lt;/a&gt; war der Austausch auch sehr einfach.&#xA;Gut das die Pentalobe-Schraubendreher mitgeliefert wurden.&#xA;Also Schrauben raus, Bodenplatte ab, Schrauben raus, Akku raus, Akku rein, alles wieder festschrauben.&#xA;Vor dem Einschalten dann hoffen, dass man alles richtig angeschlossen hat und nicht aus Versehen etwas anders beschädigt hat.&#xA;Da ich jetzt diesen Text hier schreiben kann, habe ich ja anscheinend alles richtig gemacht.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich habe am Wochenende einen neuen Akku für das MacBook Air bestellt und gestern Abend eingebaut.
Der alte Akku hatte nach über 520 Ladezyklen nur noch 70% Kapazität.
Es wurde also Zeit für einen Austausch.
Also fix einen neuen Akku bestellt.</p>
<p>Dank der Anleitung von <a href="https://de.ifixit.com/Anleitung/MacBook&#43;Air&#43;13-Inch&#43;Mid&#43;2013&#43;Akku&#43;Austausch/15205">iFixit</a> war der Austausch auch sehr einfach.
Gut das die Pentalobe-Schraubendreher mitgeliefert wurden.
Also Schrauben raus, Bodenplatte ab, Schrauben raus, Akku raus, Akku rein, alles wieder festschrauben.
Vor dem Einschalten dann hoffen, dass man alles richtig angeschlossen hat und nicht aus Versehen etwas anders beschädigt hat.
Da ich jetzt diesen Text hier schreiben kann, habe ich ja anscheinend alles richtig gemacht.</p>
<p>Um den neuen Akku zu kalibrieren, soll man den Akku einmal komplett aufladen und dann noch mindestens 2h am Netz lassen.
Danach komplett entladen und den Rechner ausgehen lassen.
Das hat über Nacht gut funktioniert und heute Mittag um 12 habe das MacBook Air dann wieder ans Netz angeschlossen und komplett aufgeladen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Woche 42: Homeoffice, Apple und Brotbacken (Teil 2)</title>
      <link>https://cbrueggenolte.de/woche-42-homeoffice-apple-und-brotbacken-teil-2/</link>
      <pubDate>Sun, 18 Oct 2020 16:55:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/woche-42-homeoffice-apple-und-brotbacken-teil-2/</guid>
      <description>&lt;p&gt;Die Woche 42 war eine Home-Office-Woche.&#xA;Schön zu Hause zu sitzen und später aufstehen.&#xA;Das ist ab und zu auch nicht verkehrt.&#xA;Allerdings habe ich festgestellt, dass es mit jedem Tag etwas später geworden ist.&#xA;Fehlende Selbstdisziplin? Vielleicht, vielleicht aber auch nicht.&lt;/p&gt;&#xA;&lt;h3 id=&#34;hoftrammm&#34;&gt;Hoftrammm&lt;/h3&gt;&#xA;&lt;p&gt;Am Donnerstag wären wir eigentlich mit der &lt;a href=&#34;https://www.hoftrammm.nl/en&#34;&gt;Hoftrammm&lt;/a&gt; bei einem 4-Gänge-Menü und Bierbegleitung durch die Stadt gefahren.&#xA;Doch leider hat sich das erst einmal für unbestimmte Zeit erledigt.&#xA;Gerne hätte ich ein paar Bilder gemacht und geteilt, doch leider wurde daraus nichts.&#xA;Aber es ist vorerst nur verschoben und nicht komplett abgesagt worden.&#xA;Die &lt;em&gt;Gutscheine&lt;/em&gt; sind weiterhin gültig und wir hoffen, dass demnächst nachholen zu können.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Die Woche 42 war eine Home-Office-Woche.
Schön zu Hause zu sitzen und später aufstehen.
Das ist ab und zu auch nicht verkehrt.
Allerdings habe ich festgestellt, dass es mit jedem Tag etwas später geworden ist.
Fehlende Selbstdisziplin? Vielleicht, vielleicht aber auch nicht.</p>
<h3 id="hoftrammm">Hoftrammm</h3>
<p>Am Donnerstag wären wir eigentlich mit der <a href="https://www.hoftrammm.nl/en">Hoftrammm</a> bei einem 4-Gänge-Menü und Bierbegleitung durch die Stadt gefahren.
Doch leider hat sich das erst einmal für unbestimmte Zeit erledigt.
Gerne hätte ich ein paar Bilder gemacht und geteilt, doch leider wurde daraus nichts.
Aber es ist vorerst nur verschoben und nicht komplett abgesagt worden.
Die <em>Gutscheine</em> sind weiterhin gültig und wir hoffen, dass demnächst nachholen zu können.</p>
<h3 id="python-und-vscodium">Python und VSCodium</h3>
<p>Mit VSCodium bin ich bisher sehr zufrieden.
Das klappt wirklich wunderbar.
Ein toller Editor den Microsoft da gebaut hat.
Ganz im Gegensatz zu dem <a href="https://zn80.net/2020/10/microsoft-windows-installation/">Quatsch bei Windows</a> den Microsoft da fabriziert.</p>
<h3 id="beginner-weißbrot-teil-2">Beginner-Weißbrot Teil 2</h3>
<p>Gestern hatte ich ja den Vorteig angesetzt, der heute Morgen sehr gut aussah – soweit ich das als Anfänger beurteilen kann.
Schöne viele Blasen hatte er.
Daraus habe ich dann den Hauptteig gemacht.</p>
<p>Vorab aber noch etwas, was ich falsche bzw.
nicht ganz richtig gemacht habe.
Der <a href="https://brotdoc.com/2013/03/13/beginner-weisbrot/#comment-19695">Brotdoc</a> hat mir auf <a href="https://brotdoc.com/2013/03/13/beginner-weisbrot/#comment-19694">meine Frage geantwortet</a>, wie viel Trockenhefe man nehmen kann, wenn man keine Frischhefe hat: <em>”… Trockenhefe zu Frischhefe immer 1:3, also durch drei teilen.”</em>.
Leider hatte ich das zu spät gesehen und natürlich 1:1 genommen.
Sprich, 8g Trockenhefe für meinen Teig.
Daher sind die auch so riesig geworden und haben unglaublich viele Blasen gebildet.</p>
<p>Hauptteig: * 450g Wasser (lauwarm) * 8g Frischhefe (3g Trockenhefe – ist wichtig!) * 20g Salz * den Vorteig (der 12h gegangen ist) * 800g Mehl</p>
<p>Ich habe die Hefe mit dem lauwarmen Wasser vermischt und auch das Salz hinzugegeben.
Das ganze dann mit dem Vorteig vermischt und anschließend die 800g Mehl hinzugefügt.</p>
<p>Die Masse so lange mit dem Silikonspatel gerührt und gewendet und bearbeitet, bis es eine schöne klebrige Teigmasse geworden ist.
Dabei habe ich geschaut, dass ich keine Mehlnester (diese kleinen Mehlblasen) mehr übrig habe.
Nach Anleitung dann in eine leicht geölte Schüssel aufgehen lassen und alle 30 Minuten strecken und wenden.</p>
<p>Nach erneutem Kneten und Falten dann noch mal für 50 Minuten aufgehen lassen, in dieser neuen länglichen Form.
Leider hatte ich kein Bäckerleinen (woher auch) und habe ein Trockentuch genommen, welches ich vorher ordentlich mit Mehl bepudert hatte.
Dachte ich zumindest.
Denn nachdem ich den Teig herunterrollen wollte, klebte er an einigen Stellen am Tuch fest.
Beim nächsten Mal also mehr Mehl!</p>
<p>Nun hatte ich ja so viel Hefe beigemischt, dass die Teiglinge so stark aufgegangen waren, dass ich nicht beide gleichzeitig in den Ofen packen konnte.
Auf dem heißen Stein, der ja noch mal ein kleines Stückchen kleiner ist, passte nur einer der beiden Teighälften.
Also habe ich nur einen Teil gebacken und den anderen Teil wieder in die leicht geölte Schlüssel.</p>
<p>Zum Brotlaib habe ich dann auf das untere Blech eine halbe Tasse Wasser geschüttet und die Ofentür schnell verschlossen.
Der Wasserdampf, der sich bildet, soll eine schöne und glänzende Kruste bilden.
Nach ca.
10 Minuten dann den Backofen kurz öffnen und den Wasserdampf ablassen und für weitere 30-40 Minuten weiter backen.
Im Anschluss daran habe ich das Prozedere mit dem zweiten Teil wiederholt.</p>
<p>Unser Backofen hier ist ziemlich dicht und ziemlich heiß.
Daher ist der erste Versuch ein wenig zu knusprig geworden und die Kruste ist etwas zu dick und etwas hart.
Aber auch wenn es nicht so toll aussieht, schmecken tut es gut und knuspert schön.</p>
<p><strong>Mein erster Versuch ein Brot zu backen</strong></p>
<p>Den zweiten Teil kann ich leider noch nicht probieren, denn <a href="https://twitter.com/cblte/status/1317777676975939586">das Brot klebt in der Auflaufform fest</a>.
Das mit dem einölen war vielleicht keine so gute Idee ¯\_(ツ)_/¯.
Hätte besser eine ordentliche Menge Mehl nehmen sollen.
Wenn das Brot abgekühlt ist, versuche ich es dann mal aus der Form zu bekommen.
Irgendwie wird das schon klappen.</p>
<p>Der nächste Versuch ist schon in Planung.
Dann mit der richtigen Menge Hefe und weniger Chaos in der Küche.
Meine Frau wird es mir Danken.</p>
<p>Gehabt euch wohl und einen schönen Sonntag noch.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Delta Chat: Chat über E-Mail</title>
      <link>https://cbrueggenolte.de/delta-chat-chat-ueber-e-mail/</link>
      <pubDate>Fri, 16 Oct 2020 16:51:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/delta-chat-chat-ueber-e-mail/</guid>
      <description>&lt;p&gt;Da habe ich gar nichts mehr hinzuzufügen.&#xA;Die Webseite spricht für sich selber:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Mit “Chat over E-Mail” zurück in die Zukunft!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Delta Chat&lt;/strong&gt; ist wie Telegram oder Whatsapp aber ohne Tracking oder zentrale Steuerung.&#xA;Delta Chat benötigt nicht deine Telefonnummer.&#xA;Schauen Sie unsere &lt;a href=&#34;https://delta.chat/de/gdpr&#34;&gt;Datenschutzerklärung&lt;/a&gt; an.&lt;/p&gt;&#xA;&lt;p&gt;Delta Chat betreibt keine eigenen Server, verwendet jedoch das umfangreichste und vielfältigste offene Messaging System überhaupt: Das bestehende E-Mail-Server-Netzwerk.&lt;/p&gt;&#xA;&lt;p&gt;Einfach mit jeder Person chatten, deren E-Mail-Adresse bekannt ist.&#xA;Der Chatpartner benötigt dabei kein Delta Chat.&#xA;Ein Standard-E-Mail-Konto reicht aus!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Da habe ich gar nichts mehr hinzuzufügen.
Die Webseite spricht für sich selber:</p>
<blockquote>
<p>Mit “Chat over E-Mail” zurück in die Zukunft!</p>
<p><strong>Delta Chat</strong> ist wie Telegram oder Whatsapp aber ohne Tracking oder zentrale Steuerung.
Delta Chat benötigt nicht deine Telefonnummer.
Schauen Sie unsere <a href="https://delta.chat/de/gdpr">Datenschutzerklärung</a> an.</p>
<p>Delta Chat betreibt keine eigenen Server, verwendet jedoch das umfangreichste und vielfältigste offene Messaging System überhaupt: Das bestehende E-Mail-Server-Netzwerk.</p>
<p>Einfach mit jeder Person chatten, deren E-Mail-Adresse bekannt ist.
Der Chatpartner benötigt dabei kein Delta Chat.
Ein Standard-E-Mail-Konto reicht aus!</p>
</blockquote>
<p>Link -&gt; <a href="https://delta.chat/de/">Delta Chat: Der Messenger</a></p>
<p>Einfach herunterladen und sich mit seinem E-Mail-Konto anmelden.
Ich würde auch mal behaupten, dass für 99 % aller Server die automatische Konfiguration funktioniert.
Ich habe es mit mehrere Accounts ausprobiert, auch ein paar Exoten, und alles hat wunderbar geklappt.</p>
<p>Probiere es doch einfach mal aus, wenn du meinst, dass E-Mail schreiben blöd ist.
Aber wovon man nicht ausgehen darf ist, dass die Gegenseite sofort antwortet.
Viele meinen ja immer, man müsste in eine E-Mail immer sehr viel Text reinschreiben, aber das muss man gar nicht.</p>
<p>p.s.: <a href="https://delta.chat/de/help#encryption">Es geht sogar verschlüsselt</a>, wenn beide Seiten die App bzw.
ein kompatibles Programm benutzen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Brotbacken: Beginner-Weißbrot (Teil 1)</title>
      <link>https://cbrueggenolte.de/brotbacken-beginner-weissbrot-teil-1/</link>
      <pubDate>Thu, 15 Oct 2020 16:54:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/brotbacken-beginner-weissbrot-teil-1/</guid>
      <description>&lt;p&gt;Heute und morgen will ich mich mal am Brotbacken versuchen.&#xA;Auch wenn ich das bisher immer meiner Frau überlassen habe, will ich das jetzt auch mal versuchen.&#xA;Was bietet sich da also besser an, als ein Beginner-Weißbrot vom &lt;a href=&#34;https://brotdoc.com/2013/03/13/beginner-weisbrot/&#34;&gt;BrotDoc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Genommen habe ich:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;200g Mehl (NL Tarwebloem)&lt;/li&gt;&#xA;&lt;li&gt;210g Wasser (lauwarm)&lt;/li&gt;&#xA;&lt;li&gt;1,1g Trockenhefe&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Frischhefe haben wir nicht mehr.&#xA;Denke aber, dass es mit der Trockenhefe auch funktioniert.&#xA;Auch wenn meine Mengen leicht, ganz leicht abweichen, hoffe ich doch, dass es funktioniert.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute und morgen will ich mich mal am Brotbacken versuchen.
Auch wenn ich das bisher immer meiner Frau überlassen habe, will ich das jetzt auch mal versuchen.
Was bietet sich da also besser an, als ein Beginner-Weißbrot vom <a href="https://brotdoc.com/2013/03/13/beginner-weisbrot/">BrotDoc</a></p>
<p>Genommen habe ich:</p>
<ul>
<li>200g Mehl (NL Tarwebloem)</li>
<li>210g Wasser (lauwarm)</li>
<li>1,1g Trockenhefe</li>
</ul>
<p>Frischhefe haben wir nicht mehr.
Denke aber, dass es mit der Trockenhefe auch funktioniert.
Auch wenn meine Mengen leicht, ganz leicht abweichen, hoffe ich doch, dass es funktioniert.</p>
<p>Die Zutaten habe ich einem Löffel langsam verrührt und geschaut, dass ich alle Mehlnester (diese kleinen Klumpen) aufgelöst habe.</p>
<p>Nur was mir gerade aufgefallen ist, dass ich jetzt um 06:00 Uhr aufstehen muss.
Der Teig soll 12h reifen.
Und die sind morgen früh um sechs vorbei.
Oh-je!</p>
<p>Die Idee dazu kam mir übrigens, nachdem ich den <a href="https://www1.wdr.de/radio/wdr5/sendungen/alles-in-butter/aib-siebzehnter-oktober-100.html">Beitrag über Brot backen bei Alles in Butter im WDR5</a> gehört habe.</p>
<p><em>Beitrag 33 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Windows-Installation: „eingeschränkte Nutzererfahrung“</title>
      <link>https://cbrueggenolte.de/windows-installation-eingeschraenkte-nutzererfahrung/</link>
      <pubDate>Thu, 15 Oct 2020 08:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/windows-installation-eingeschraenkte-nutzererfahrung/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Mittlerweile nutze ich &lt;a href=&#34;https://github.com/ntdevlabs/tiny11builder&#34;&gt;Tiny11&lt;/a&gt;,&#xA;um mir ein schlankes Windows 11 ohne den ganzen Ballast zu bauen.&lt;/p&gt;&#xA;&lt;p&gt;Also, ich habe ja schon viel erlebt, aber dieses Microsoft Windows und die Fragen bei der Installation sind ja mal nur nervig.&#xA;Ich will weder einen Online Modus, noch einen Sprachassistenten mit Namen Cortana.&#xA;Auch will ich nicht irgendwelche Daten irgendwo hinsenden.&#xA;Was glauben die eigentlich wer die sind?&lt;/p&gt;&#xA;&lt;p&gt;Ich möchte eine Windows Installation, die nur lokal auf einem Rechner arbeitet.&#xA;Ohne Cloud, ohne Schnickschnack, ohne Zip und Zap.&#xA;Einfach nur Windows zum Zocken und für die Plotter-Software.&#xA;Das kann doch nicht so schwer sein.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><strong>Update:</strong> Mittlerweile nutze ich <a href="https://github.com/ntdevlabs/tiny11builder">Tiny11</a>,
um mir ein schlankes Windows 11 ohne den ganzen Ballast zu bauen.</p>
<p>Also, ich habe ja schon viel erlebt, aber dieses Microsoft Windows und die Fragen bei der Installation sind ja mal nur nervig.
Ich will weder einen Online Modus, noch einen Sprachassistenten mit Namen Cortana.
Auch will ich nicht irgendwelche Daten irgendwo hinsenden.
Was glauben die eigentlich wer die sind?</p>
<p>Ich möchte eine Windows Installation, die nur lokal auf einem Rechner arbeitet.
Ohne Cloud, ohne Schnickschnack, ohne Zip und Zap.
Einfach nur Windows zum Zocken und für die Plotter-Software.
Das kann doch nicht so schwer sein.</p>
<p>Aber nein, da muss man, wenn man kein Online-Konto verwenden will, erst auf <strong>eingeschränkte Nutzererfahrung</strong> klicken, um ein lokales Benutzerkonto zu erstellen.
<strong>Eingeschränkte Nutzererfahrung</strong> so ein Schwachsinn.
Es ist die für mich korrekte Art und Weise wie man das machen sollte und schränkt mich in nichts ein.</p>
<p>Ein Benutzerkonto sollte lokal sein, und dann, wenn ich denn will, noch zusätzliche Online-Dienste hinzuschalten.
Bei Apple zum Beispiel klappt das super.
Als Zusatz, obendrauf, als <strong>Extra</strong>.
Also wirklich.
Früher hätte es das nicht gegeben.</p>
<p>Und dann dieser Blödsinn mit dem Übermitteln von Diagnosedaten.
Das kann man ja nicht mal abstellen! Gleich erstmal im Internet suchen, wo und wie man das abstellen kann.
Frechheit!</p>
<p>Schrecklich, dieses Microsoft Windows…</p>
]]></content:encoded>
    </item>
    <item>
      <title>Apple Event: iPhone 12, HomePod mini und Apple Silicon</title>
      <link>https://cbrueggenolte.de/apple-event-iphone-12-homepod-mini-und-apple-silicon/</link>
      <pubDate>Mon, 12 Oct 2020 22:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/apple-event-iphone-12-homepod-mini-und-apple-silicon/</guid>
      <description>&lt;p&gt;Das Apple Event ist vorbei und wir bekommen, wie schon vorausgesagt, ein neues iPhone mit &lt;a href=&#34;https://de.wikipedia.org/wiki/5G&#34;&gt;5G Technologie&lt;/a&gt;, Keramik-Glas und einem neuen Design.&#xA;Und was soll ich euch sagen? Mit dem Design und diesem Keramik-Schild haben sie mich ja fast gehabt.&#xA;Dennoch wird es erstmal kein neues Telefon geben, haben wir doch erst im Dezember ‘19 unsere &lt;em&gt;iPhone 11&lt;/em&gt; gekauft.&#xA;Wohlgemerkt nachdem ich über 4 Jahre mit einem 7er unterwegs was.&lt;/p&gt;&#xA;&lt;h3 id=&#34;iphone-12&#34;&gt;iPhone 12&lt;/h3&gt;&#xA;&lt;p&gt;Das iPhone Pro ist ebenfalls ein wirklich schickes Smartphone mit ordentlich viel Technik drin.&#xA;Aber nichts für mich.&#xA;Erstens ist es mir dann doch ein wenig zu teuer und die ganzen Pro-Features würde ich eh nicht nutzen.&#xA;Bin weder Profi-Fotograf noch Amateurfilmer.&#xA;Die paar Bilder im Jahr, die ich mache, da reicht das iPhone 11 oder meine keine Taschenkamera allemal für aus.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Das Apple Event ist vorbei und wir bekommen, wie schon vorausgesagt, ein neues iPhone mit <a href="https://de.wikipedia.org/wiki/5G">5G Technologie</a>, Keramik-Glas und einem neuen Design.
Und was soll ich euch sagen? Mit dem Design und diesem Keramik-Schild haben sie mich ja fast gehabt.
Dennoch wird es erstmal kein neues Telefon geben, haben wir doch erst im Dezember ‘19 unsere <em>iPhone 11</em> gekauft.
Wohlgemerkt nachdem ich über 4 Jahre mit einem 7er unterwegs was.</p>
<h3 id="iphone-12">iPhone 12</h3>
<p>Das iPhone Pro ist ebenfalls ein wirklich schickes Smartphone mit ordentlich viel Technik drin.
Aber nichts für mich.
Erstens ist es mir dann doch ein wenig zu teuer und die ganzen Pro-Features würde ich eh nicht nutzen.
Bin weder Profi-Fotograf noch Amateurfilmer.
Die paar Bilder im Jahr, die ich mache, da reicht das iPhone 11 oder meine keine Taschenkamera allemal für aus.</p>
<p>Wenn in zwei oder drei Jahren der Austausch vom 11er ansteht, Apple das <em>iPhone mini</em> dann immer noch gibt, könnte das eine wirkliche Alternative sein.
Wobei? Ich weiß nicht.
Habe heute mal das 5er und das 7er aufgeladen und noch mal in der Hand gehabt.
So wirklich groß sind die ja nicht und die Tastatur ist auch ganz schön klein.
Na ja, bis es so weit ist, vergeht ja noch ein wenig Zeit.</p>
<h3 id="homepod-mini">HomePod mini</h3>
<p>Und dann gab es dir für mich / uns tollste Neuerung: den HomePod mini.
Ein schönes, kleines, schickes Stück Technik für zu Hause.
Ich habe zwar bisher einen <em>Sonos Mobil Play:1</em> der wirklich guten Sound macht, allerdings ist das Ding dermaßen schwerfällig, funktioniert nicht mit allen Diensten, kann kein AirPlay und wurde nicht von Overcast unterstützt.
Daher habe ich damals extra zu <a href="https://www.pocketcasts.com/">Pocket Cast</a> gewechselt.</p>
<p>Nun gut, ob Pocket Casts auch mit den HomePods funktioniert? Ich denke mal schon, denn AirPlay fähig sollte die ja schon sein.
Und darum geht es mir auch eigentlich.
Ich bin dieses Bluetooth Speaker wechseln nämlich leid.
Entweder musst du den Lautsprecher mit dir herumtragen, ins Treppenhaus stellen (dann haben aber auch alle was davon) oder du kannst halt nicht in jedem Raum hören.
Klar, das sind vielleicht Neue-Welt-Probleme, aber das ist mir egal.
Ich möchte es einfach haben und wenn ich etwas in Laut hören will, möchte ich nicht erst umständlich mich mit irgendwelchen Bluetooth-Lautsprechern verbinden, sondern einfach meinen Ton auf dem einen Gerät ausgeben lassen.</p>
<p>Jetzt aber warte ich erstmal noch die Reviews vom Gerät ab, dass kann man ja auch erst ab dem 6.
November bestellen.
Ich denke aber, dass ich mir wohl mindestens 2 bestellen werde.
Küche und Dachboden.
Und der Sonos kommt dann erstmal ins Schlafzimmer für die Hörbücher zum Einschlafen.</p>
<h3 id="a14-bionic-super-super-haste-nicht-gesehen-chip">A14 Bionic Super-Super-Haste-Nicht-Gesehen Chip</h3>
<p>Das einzige, was mich interessiert ist: kommt der A14 auch in die neuen Apple Mac oder wird der erste Apple Computer mit Apple Silicon einen neuen, noch schnelleren und besseren Chip als den A14 erhalten? Vielleicht einen A14M oder einen A14S? Keine Ahnung.</p>
<p>Irgendwann im November soll es noch ein Event geben.
Warten wir also noch ein klein wenig.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Wochen-Update: Rasur, Apple, Python und Gaming</title>
      <link>https://cbrueggenolte.de/wochen-update-rasur-apple-python-und-gaming/</link>
      <pubDate>Mon, 12 Oct 2020 16:12:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/wochen-update-rasur-apple-python-und-gaming/</guid>
      <description>&lt;p&gt;Neben der &lt;a href=&#34;https://www.hellofresh.de/&#34;&gt;Hello Fresh&lt;/a&gt; Box, worüber ich ja schon geschrieben habe, ist eigentlich nicht wirklich viel passiert.&#xA;Obwohl das ja jeder auch immer irgendwie ein wenig anders sieht, nicht war?&lt;/p&gt;&#xA;&lt;h3 id=&#34;boldking&#34;&gt;Boldking&lt;/h3&gt;&#xA;&lt;p&gt;Was ich aber diese Woche wieder einmal ausprobiert habe ist, dass ich wieder die Nassrasur ausprobieren möchte.&#xA;Ich hatte noch eine unbenutzt Klinge von &lt;a href=&#34;https://www.boldking.com/de&#34;&gt;Boldking&lt;/a&gt; gefunden und war doch sehr über das Ergebnis überrascht.&#xA;Es gibt da so Stellen am Hals wo man mit den Trockenrasierer einfach nicht gut dran kommt.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Neben der <a href="https://www.hellofresh.de/">Hello Fresh</a> Box, worüber ich ja schon geschrieben habe, ist eigentlich nicht wirklich viel passiert.
Obwohl das ja jeder auch immer irgendwie ein wenig anders sieht, nicht war?</p>
<h3 id="boldking">Boldking</h3>
<p>Was ich aber diese Woche wieder einmal ausprobiert habe ist, dass ich wieder die Nassrasur ausprobieren möchte.
Ich hatte noch eine unbenutzt Klinge von <a href="https://www.boldking.com/de">Boldking</a> gefunden und war doch sehr über das Ergebnis überrascht.
Es gibt da so Stellen am Hals wo man mit den Trockenrasierer einfach nicht gut dran kommt.</p>
<p>Boldking ProbepaketAlso habe ich mir das Probepaket noch mal bestellt.
Enthalten sind die normalen Klingen, Rasierschaum, Seife, Aftershave und Gesichtspflege.
Als Bonus ist noch ein Deoroller enthalten.
Die Produkte riechen gut, aber nicht zu aufdringlich.
Mal schauen wie ich mit den normalen Klingen zurechtkomme.
Mittlerweile haben sie noch zwei weitere im Sortiment.</p>
<h3 id="apple-event">Apple Event</h3>
<p>Ein neues Apple Event steht vor der Tür.
Hatte ich die Tage ja schon <a href="https://cbrueggenolte.de/2020/10/das-apple-event-im-oktober/">verlinkt</a>.
Die üblichen Verdächtigen werfen ja schon seit ein paar Tagen mit Gerüchten nur so um sich.
Ich gehe ja fest davon aus, das ein iPhone 12 präsentiert wird und eventuell neue Homepods.
Was mich sehr freuen würde, wenn Apple es war macht und dieses Jahr noch einen Mac mit Apple Silicon vorstellen würde.</p>
<p>Jetzt sind anscheinend aber zuverlässige Leaks aufgetaucht.
<a href="https://www.macrumors.com/guide/what-to-expect-apple-event-october/">Macrumors</a> hat einen guten Beitrag dazu verfasst.
Und auch <a href="https://www.youtube.com/watch?v=Bkr3Ej3S-Ho">Rene Ritchie</a> hat ein gutes 20 Minuten Video dazu produziert.</p>
<p>Wenn du aber mehr auf die lustige und unterhaltsame Version stehst, dann solltest du dir das Video “<a href="https://www.youtube.com/watch?v=SQEow8ZfRIU">iPhone 12 FuLL Lineup Leaks (Colors, Cost, Delivery Dates)</a>” von Lew Later anschauen.</p>
<h3 id="der-richtige-editor-für-python">Der richtige Editor für Python</h3>
<p>Neben TryHackMe versuche ich auch noch ein wenig Python zu lernen.
Es ist eine tolle Sprache und ich wollte Python eigentlich schon immer mal lernen.
Aber irgendwie bin ich nie richtig dazu gekommen.
Aber ich habe mir jetzt fest vorgenommen, die beiden Python-Kurse endlich mal durchzuarbeiten.</p>
<p>Und um meinen Python-Quellcode zu schreiben braucht es auch einen Editor.
Natürlich kann man das auch mit Notepad, vim oder dem Textpad machen.
Allerdings haben wir 2020 und ein klein wenig Unterstützung hinsichtlich <a href="https://de.wikipedia.org/wiki/Syntaxhervorhebung">Syntax-Hervorherbung</a> und Auto-Vervollständigung sind schon nicht verkehrt.
Beschäftigt habe ich mich mit Sublime Text 3, Visual Studio Code / VSCodium und Atom.
Mit jedem Editor habe ich zwei Tage lang meine Aufgaben und Übungen durchprobiert.</p>
<p>Sublime Text ist super schnell und eignet sich eigentlich hervorragend zum Python programmieren, da von Haus aus die Unterstützung durch Python schon mitgeliefert wird.
Eine kleine Konfigurationsdatei später und es klappte auch den Code mit Python 3 auszuführen.
Allerdings finde ich, dass es einfach zu viele Konfigurationsdateien gibt, die man von Hand editieren muss.
Ist mir ehrlich gesagt zu umständlich.</p>
<p>Atom finde ich vom Aussehen her und von den verfügbaren Paketen ganz schick aber irgendwie ist der Editor ziemlich langsam.
Nach der Installation von ein paar Plugins, brauchte dieser ewig zum Starten.
Die Anzahl an Plugins ist allerdings sehr gut und es gibt einige wirklich schicke Ideen.
Zum Beispiel <a href="https://atom.io/packages/maperwiki">MaPerWiki Markdown-Wiki-Links</a>.
Damit lässt sich ein Wiki mit Markdown-Dateien aufbauen.
Ziemlich cool.
Der Python-Part allerdings hat bisher nicht richtig funktioniert.</p>
<p>Und dann ist da noch <a href="https://code.visualstudio.com/">Visual Studio Code</a>.
Hätte ja nie gedacht, dass Microsoft mal einen wirklich guten Editor rausbringt, der dann auch noch Open Source ist.
Und weil das ganz so ist, habe ich mich für <a href="https://vscodium.com/">VSCodium</a> entschieden.
Der Ableger ist genauso gut wie das Original, kommt aber ohne den ganzen Tracking-Kram von Microsoft daher.</p>
<p>Was <a href="https://vscodium.com/">VSCodium</a> für mich so interessant macht ist, die Integration von Git, die Konsole und die schier unglaubliche Anzahl an Plugins/Extensions.
Ich habe die Erweiterung für die <a href="https://github.com/Microsoft/vscode-loc">deutsche Sprache</a>, <a href="https://github.com/yzhang-gh/vscode-markdown">Markdown All-In-One</a> für das Editieren von Markdown-Dateien und für Python das offizielle <a href="https://github.com/Microsoft/vscode-python">Microsoft Python Paket</a> installiert.
Und, auch wenn Git schon mit eingebaut ist, finde ich das Add-on <a href="https://github.com/DonJayamanne/gitHistoryVSCode">Git History</a> ziemlich sinnvoll.</p>
<h3 id="gaming--watch-dogs-legion-und-horizon-zero-dawn">Gaming – Watch Dogs: Legion und Horizon: Zero Dawn</h3>
<p>Ich habe diese Woche ein paar Videos über <a href="https://www.ubisoft.com/en-us/game/watch-dogs/legion">Watch Dogs: Legion</a> gesehen und ich freue mich schon sehr darauf, endlich in die Welt von London eintauchen zu dürfen.
Nach <em>Watch Dogs</em> und <em>Watch Dogs 2</em> endlich wieder ein frischer Titel im Hacking-Genre.
Gibt ja nicht so viele.</p>
<p>Eines der ausführlichsten Videos was ich gesehen habe,  ist das von <a href="https://www.youtube.com/watch?v=k9MDMx4RChA">Quest Mode: Watch Dogs Legion GamePlay – The Ultimate Review</a>.
Für ein wenig Gameplay und ein paar Spoiler kann ich das <a href="https://www.youtube.com/watch?v=gDHy8ExhRFM">Video von BlackPantha Watch Dogs: Legion Early Gameplay</a> empfehlen.</p>
<p>Bevor ich jedoch mit <em>Watch Dogs: Legion</em> beginnen möchte, würde ich gerne Horizon beenden.
Jedoch ist die Welt von Horizon so groß und spannend, dass ich befürchte, wenn ich mich nicht ran halte, dann schaffe ich nicht mal die Hauptstory von Horizon vor dem 29.
Oktober, wenn <em>Watch Dogs: Legion</em> erscheint.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Auf der Suche nach einer Dokumenten-Management-Lösung</title>
      <link>https://cbrueggenolte.de/auf-der-suche-nach-einer-dokumenten-management-loesung/</link>
      <pubDate>Sun, 04 Oct 2020 13:50:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/auf-der-suche-nach-einer-dokumenten-management-loesung/</guid>
      <description>&lt;p&gt;Ich sortiere alle meine Dokumente bisher immer nur in Ordner ein.&#xA;Alles durchsuchbare PDF-Dokumente und hier und da habe ich auch schon mal farbliche Tags von macOS verwendet.&lt;/p&gt;&#xA;&lt;p&gt;Doch so wirklich bin ich bisher noch nicht fündig geworden.&#xA;&lt;a href=&#34;https://marinersoftware.com/product/paperless/&#34;&gt;Paperless von Mariner Software&lt;/a&gt; und &lt;a href=&#34;https://www.devontechnologies.com/&#34;&gt;DEVONthink von DevonTechnologies&lt;/a&gt; habe ich mir angeguckt.&#xA;Sind zwar nicht schlecht, doch speichern die alle Dokument in einer Datenbank.&#xA;Und was mache ich mal, wenn es die Software nicht mehr gibt oder ich sie auf einem aktuellen System nicht mehr starten kann? Dann stehe ich da.&#xA;Exportieren habe ich noch nicht probiert, wird aber noch getestet.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ich sortiere alle meine Dokumente bisher immer nur in Ordner ein.
Alles durchsuchbare PDF-Dokumente und hier und da habe ich auch schon mal farbliche Tags von macOS verwendet.</p>
<p>Doch so wirklich bin ich bisher noch nicht fündig geworden.
<a href="https://marinersoftware.com/product/paperless/">Paperless von Mariner Software</a> und <a href="https://www.devontechnologies.com/">DEVONthink von DevonTechnologies</a> habe ich mir angeguckt.
Sind zwar nicht schlecht, doch speichern die alle Dokument in einer Datenbank.
Und was mache ich mal, wenn es die Software nicht mehr gibt oder ich sie auf einem aktuellen System nicht mehr starten kann? Dann stehe ich da.
Exportieren habe ich noch nicht probiert, wird aber noch getestet.</p>
<p>Als Alternative dazu habe ich noch <a href="https://ironicsoftware.com/yep/">Yep von Ironic Software</a> gefunden.
Yep ist quasi <em>Spotlight on Steroids</em>.
Ich kann meine Datei- und Ordner-Struktur behalten und mit Yep vielleicht noch schneller suchen was ich brauche.
Das würde auch mein Problem lösen, wenn ich mal mit Smartphone von Unterwegs aus auf meine Dokumente zugreifen will.</p>
<p>Doch mehr dazu dann in einem anderen Beitrag, wenn ich mich ein wenig mehr mit der Software auseinandergesetzt habe.</p>
]]></content:encoded>
    </item>
    <item>
      <title>iOS 14: Private WLAN-Adressen und lokales Netzwerk</title>
      <link>https://cbrueggenolte.de/ios-14-private-wlan-adressen-und-lokales-netzwerk/</link>
      <pubDate>Thu, 01 Oct 2020 13:47:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ios-14-private-wlan-adressen-und-lokales-netzwerk/</guid>
      <description>&lt;p&gt;Nein, ich will heute nicht über die ganzen &lt;a href=&#34;https://twitter.com/search?q=%23ios14homescreen&#34;&gt;Homescreens&lt;/a&gt; reden, sondern über die Features, die Apple in iOS 14 eingebaut, die aber wohl den wenigsten aufgefallen sind.&lt;/p&gt;&#xA;&lt;p&gt;Das erste coole neue Feature ist die &lt;a href=&#34;https://support.apple.com/de-de/HT211227&#34;&gt;Verwendung von privaten WLAN-Adressen&lt;/a&gt;.&#xA;Denn um die Privatsphäre noch weiter zu schützen, kann man in den WLAN Einstellungen festlegen, dass für jedes Netzwerk eine eigene MAC-Adresse vergeben wird.&lt;/p&gt;&#xA;&lt;p&gt;Das ist deshalb ganz schick, weil unsere Geräte standardmäßig nach neuen WLAN-Netzen suchen und dabei wird ständig die MAC-Adresse hinausposaunt.&#xA;Das kann dann unter anderem in Innenstädten zum Beispiel, zum Tracking von Kunden benutzt werden.&#xA;Um das Datenschutzrisiko zu verringern, vergibt nicht nur iOS 14 sondern auch iPadOS14 und watchOS7 für jedes Netzwerk eine eigene MAC-Adresse.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Nein, ich will heute nicht über die ganzen <a href="https://twitter.com/search?q=%23ios14homescreen">Homescreens</a> reden, sondern über die Features, die Apple in iOS 14 eingebaut, die aber wohl den wenigsten aufgefallen sind.</p>
<p>Das erste coole neue Feature ist die <a href="https://support.apple.com/de-de/HT211227">Verwendung von privaten WLAN-Adressen</a>.
Denn um die Privatsphäre noch weiter zu schützen, kann man in den WLAN Einstellungen festlegen, dass für jedes Netzwerk eine eigene MAC-Adresse vergeben wird.</p>
<p>Das ist deshalb ganz schick, weil unsere Geräte standardmäßig nach neuen WLAN-Netzen suchen und dabei wird ständig die MAC-Adresse hinausposaunt.
Das kann dann unter anderem in Innenstädten zum Beispiel, zum Tracking von Kunden benutzt werden.
Um das Datenschutzrisiko zu verringern, vergibt nicht nur iOS 14 sondern auch iPadOS14 und watchOS7 für jedes Netzwerk eine eigene MAC-Adresse.</p>
<p>Das zweite coole neue Feature lässt dich genau festlegen, welche App sich in deinem Netzwerk zu Hause umschauen darf.
Leider ist die Funktion icht sehr genau im <a href="https://support.apple.com/de-de/guide/iphone/iph168c4bbd5/14.0/ios/14.0">Handbuch von iOS 14</a> beschrieben.
Dort wird nur erwähnt, dass man den Zugriff auf Hardwarefunktionen einschränken kann.
Darunter fällt dann auch der Zugriff auf Geräte im lokalen Netzwerk.
Die Funktion findet du in den Einstellungen –&gt; Datenschutz –&gt; Lokales Netzwerk.
Doch was macht man mit dieser Einstellung eigentlich?</p>
<p>Der Zugriff auf Geräte in deinem lokalen Netzwerk beschreibt die Fähigkeit von Apps, sich in deinem Netzwerk umzuschauen und zu sehen, welche weiteren Geräte sich noch so in dem Netzwerk befinden, in dem du gerade angemeldet bist.
Ein Beispiel wäre zum Beispiel ein Sonos Soundsystem oder der Zugriff auf ein NAS.
Aber alle anderen Apps brauchen das eigentlich nicht.</p>
<p>Also erst einmal den Zugriff verweigern.
Einschalten kann man es dann immer noch.</p>
]]></content:encoded>
    </item>
    <item>
      <title>DuckDuckGo und Privatsphäre</title>
      <link>https://cbrueggenolte.de/duckduckgo-und-privatsphaere/</link>
      <pubDate>Thu, 01 Oct 2020 13:41:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/duckduckgo-und-privatsphaere/</guid>
      <description>&lt;p&gt;Habe gerade die &lt;a href=&#34;https://twit.tv/shows/security-now/episodes/785?autostart=false&#34;&gt;Folge 785 von Security Now&lt;/a&gt; angehört und war sehr überrascht, dass &lt;a href=&#34;https://www.grc.com/&#34;&gt;Steve Gibson&lt;/a&gt; bisher noch nicht von &lt;a href=&#34;https://duckduckgo.com/&#34;&gt;DuckDuckGo&lt;/a&gt; gehört hat.&#xA;Dabei ist es doch eine meiner Lieblingssuchmaschinen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.grc.com/sn/sn-785.pdf&#34;&gt;Steve Gibson&lt;/a&gt; (Seite 7, pp3) hat sagt:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;So, okay.&#xA;We’ve never talked about DuckDuckGo except maybe in passing.&#xA;And maybe I’m showing my age, but just naming something DuckDuckGo and then saying, oh, yeah, this is the privacy-protecting anti-tracking search engine, it’s like, okay, are you guys serious, really? DuckDuckGo? But what brought it onto my radar is it’s breaking records.&#xA;They had and recently reported that August was 2 billion searches, 4 million of their app extension installs, 65 million – and I really did appreciate this, they said “Guesstimated active users.&#xA;We really don’t know because… privacy.”&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Habe gerade die <a href="https://twit.tv/shows/security-now/episodes/785?autostart=false">Folge 785 von Security Now</a> angehört und war sehr überrascht, dass <a href="https://www.grc.com/">Steve Gibson</a> bisher noch nicht von <a href="https://duckduckgo.com/">DuckDuckGo</a> gehört hat.
Dabei ist es doch eine meiner Lieblingssuchmaschinen.</p>
<p><a href="https://www.grc.com/sn/sn-785.pdf">Steve Gibson</a> (Seite 7, pp3) hat sagt:</p>
<blockquote>
<p>So, okay.
We’ve never talked about DuckDuckGo except maybe in passing.
And maybe I’m showing my age, but just naming something DuckDuckGo and then saying, oh, yeah, this is the privacy-protecting anti-tracking search engine, it’s like, okay, are you guys serious, really? DuckDuckGo? But what brought it onto my radar is it’s breaking records.
They had and recently reported that August was 2 billion searches, 4 million of their app extension installs, 65 million – and I really did appreciate this, they said “Guesstimated active users.
We really don’t know because… privacy.”</p>
</blockquote>
<p>Ja gut, der Name ist schon ziemlich komisch, und der Name <em>Duck Duck Go</em> kommt von den Kinderspiel <a href="https://en.wikipedia.org/wiki/Duck,_duck,_goose"><em>Duck Duck Goose</em></a>.
Hier in Deutschland kennen wir das aber wohl eher unter dem Namen <a href="https://de.wikipedia.org/wiki/Fangen#Plumpsack"><em>Plumbsack</em></a>.
Haben wir bestimmt alle irgendwann in unserer Kindheit mal gespielt.</p>
<p>Aber eigentlich freut mich viel mehr, dass <em>DuckDuckGo</em> so unglaublich viele neue Nutzer bekommen hat.
Also, davon ist auszugehen wenn man sich die Zahlen anschaut.
Wie viele Nutzer es wirklich sind, kann man nicht sagen, DuckDuckGo speichert ja keine Nutzerstatistiken.
Und das ist auch gut so.</p>
<p>Hast du <a href="https://duckduckgo.de">DuckDuckGo</a> schon mal ausprobiert?</p>
]]></content:encoded>
    </item>
    <item>
      <title>Doppelmoral bei Datenverboten</title>
      <link>https://cbrueggenolte.de/doppelmoral-bei-datenverboten/</link>
      <pubDate>Fri, 18 Sep 2020 12:55:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/doppelmoral-bei-datenverboten/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;The Trump administration will ban WeChat and video-sharing app TikTok&#xA;from U.S.&#xA;app stores starting Sunday night,&#xA;a move that will block Americans from downloading the Chinese-owned platforms&#xA;over concerns they pose a national security threat.&#xA;&lt;em&gt;(David Shepardson für Reuters)&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Link –&amp;gt; &lt;a href=&#34;https://www.reuters.com/article/us-usa-tiktok-ban-exclusive/exclusive-trump-to-block-u-s-downloads-of-tiktok-wechat-on-sunday-officials-idUSKBN2691QO&#34;&gt;reuters.com&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Auf den ersten Blick vielleicht ganz OK.&#xA;Weil jedoch niemand so richtig weiß,&#xA;wer das angeblich existierende Abkommen unterschrieben hat&#xA;und nun Besitzer von TikTok wird,&#xA;werden die beiden Dienste nun einfach mal für Illegal erklärt.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p>The Trump administration will ban WeChat and video-sharing app TikTok
from U.S.
app stores starting Sunday night,
a move that will block Americans from downloading the Chinese-owned platforms
over concerns they pose a national security threat.
<em>(David Shepardson für Reuters)</em></p>
</blockquote>
<p>Link –&gt; <a href="https://www.reuters.com/article/us-usa-tiktok-ban-exclusive/exclusive-trump-to-block-u-s-downloads-of-tiktok-wechat-on-sunday-officials-idUSKBN2691QO">reuters.com</a></p>
<p>Auf den ersten Blick vielleicht ganz OK.
Weil jedoch niemand so richtig weiß,
wer das angeblich existierende Abkommen unterschrieben hat
und nun Besitzer von TikTok wird,
werden die beiden Dienste nun einfach mal für Illegal erklärt.</p>
<p>Was mich dabei stört ist, dass die USA quasi einfach so etwas verbannen können
weil es angeblich Daten an die Chinesen liefert,
wir hier in Europa aber immer noch nichts unternommen haben,
um Facebook und Co daran zu hindern, unsere Daten an die USA zu liefern.
Wann verbannen wir Facebook, WhatsApp und Instagram denn endlich mal?</p>
<p>Ganze nebenbei,
<a href="https://www.bloomberg.com/news/articles/2020-09-18/facebook-accused-of-watching-instagram-users-through-cameras">Facebook wurde jetzt bestraft</a>,
dass sie mit Hilfe von Instagram heimlich die Kamera von iPhones benutzt haben
um die Nutzer auszuspionieren.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Beirut: Katastrophe und Versagen</title>
      <link>https://cbrueggenolte.de/beirut-katastrophe-und-versagen/</link>
      <pubDate>Fri, 18 Sep 2020 12:15:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/beirut-katastrophe-und-versagen/</guid>
      <description>&lt;p&gt;Korruption und eine nicht funktionierende Regierung verursachten&#xA;eine der größten Katastrophen in der Geschichte des Libanon.&lt;/p&gt;&#xA;&lt;p&gt;Die &lt;a href=&#34;https://www.nytimes.com/interactive/2020/09/09/world/middleeast/beirut-explosion.html&#34;&gt;New York Times&lt;/a&gt; schreibt:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;An investigation by a team of New York Times reporters who conducted dozens&#xA;of interviews with port, customs and security officials, shipping agents and&#xA;other maritime trade professionals revealed how a corrupt and dysfunctional&#xA;system failed to respond to the threat while enriching the country’s&#xA;political leaders through bribery and smuggling.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Korruption und eine nicht funktionierende Regierung verursachten
eine der größten Katastrophen in der Geschichte des Libanon.</p>
<p>Die <a href="https://www.nytimes.com/interactive/2020/09/09/world/middleeast/beirut-explosion.html">New York Times</a> schreibt:</p>
<blockquote>
<p>An investigation by a team of New York Times reporters who conducted dozens
of interviews with port, customs and security officials, shipping agents and
other maritime trade professionals revealed how a corrupt and dysfunctional
system failed to respond to the threat while enriching the country’s
political leaders through bribery and smuggling.</p>
</blockquote>
<p>Diese Reportage der New York Times ist eine der Besten die ich bisher gelesen
habe.
Visuell hervorragend aufbereitet und  medial sehr gut dargestellt,
erklärt sie sehr ausführlich wie es zu der Katastrophe kommen konnte.
An dieser Aufbereitung können sich viele mal eine Scheibe abschneiden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Correctiv, Kommunen und Transparenz</title>
      <link>https://cbrueggenolte.de/correctiv-kommunen-und-transparenz/</link>
      <pubDate>Sat, 05 Sep 2020 12:05:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/correctiv-kommunen-und-transparenz/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://correctiv.org/in-eigener-sache/2020/09/04/die-kohle-der-kommunen&#34;&gt;Correctiv&lt;/a&gt; schreibt:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;„Was ich nicht verstehe“, sagt Lucia Parbel (21) von Fridays for Future,&#xA;„warum so viele Kommunen nicht mit uns kooperieren wollen.&#xA;Was gegen die Klimakrise zu tun ist, ist ja auch in ihrem Interesse.&#xA;Vor allem werben viele Kommunen auf ihren Internetseiten mit Nachhaltigkeit –&#xA;wenn das so ist, was haben sie dann zu verbergen?“&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Das ist allerdings eine wirklich gute Frage.&#xA;Was aber noch viel besser ist, ist die Möglichkeit auf der Seite von Correctiv&#xA;den Namen seiner Stadt in NRW einzugeben und nachzulesen, wie die Damen und&#xA;Herren der eigenen Stadt geantwortet haben.&#xA;Dann kann man immer noch entscheiden, wem man bei der nächsten Kommunalwahl&#xA;die Stimme geben will.&#xA;Denn bei der ein oder anderen Antwort, fragt man sich schon,&#xA;ob hier für oder doch eher gegen die Bevölkerung gearbeitet wird.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://correctiv.org/in-eigener-sache/2020/09/04/die-kohle-der-kommunen">Correctiv</a> schreibt:</p>
<blockquote>
<p>„Was ich nicht verstehe“, sagt Lucia Parbel (21) von Fridays for Future,
„warum so viele Kommunen nicht mit uns kooperieren wollen.
Was gegen die Klimakrise zu tun ist, ist ja auch in ihrem Interesse.
Vor allem werben viele Kommunen auf ihren Internetseiten mit Nachhaltigkeit –
wenn das so ist, was haben sie dann zu verbergen?“</p>
</blockquote>
<p>Das ist allerdings eine wirklich gute Frage.
Was aber noch viel besser ist, ist die Möglichkeit auf der Seite von Correctiv
den Namen seiner Stadt in NRW einzugeben und nachzulesen, wie die Damen und
Herren der eigenen Stadt geantwortet haben.
Dann kann man immer noch entscheiden, wem man bei der nächsten Kommunalwahl
die Stimme geben will.
Denn bei der ein oder anderen Antwort, fragt man sich schon,
ob hier für oder doch eher gegen die Bevölkerung gearbeitet wird.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Über Sicherheit</title>
      <link>https://cbrueggenolte.de/ueber-sicherheit/</link>
      <pubDate>Sun, 23 Aug 2020 22:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ueber-sicherheit/</guid>
      <description>&lt;p&gt;Gerade mal in Bitwarden den Datendiebstahl-Bericht angefordert&#xA;und festgestellt, dass ich einen Account bei Wattpad.&#xA;Auf der einen Seite ist es schlimm genug, dass sie im Juni/Juli diesen Jahres&#xA;gehackt wurden und haben sich dabei gleich mal&#xA;&lt;a href=&#34;https://www.golem.de/news/hackerforum-18-datenlecks-mit-386-millionen-betroffenen-veroeffentlicht-2007-149961.html&#34;&gt;über 270 Millionen Datensätze&lt;/a&gt;&#xA;klauen lassen.&#xA;Auf der anderen Seite finde ich es aber noch viel, viel schlimmer,&#xA;dass man die Nutzer darüber nicht per E-Mail informiert hat&#xA;und sie zu einer Passwort-Änderung aufgefordert hat.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gerade mal in Bitwarden den Datendiebstahl-Bericht angefordert
und festgestellt, dass ich einen Account bei Wattpad.
Auf der einen Seite ist es schlimm genug, dass sie im Juni/Juli diesen Jahres
gehackt wurden und haben sich dabei gleich mal
<a href="https://www.golem.de/news/hackerforum-18-datenlecks-mit-386-millionen-betroffenen-veroeffentlicht-2007-149961.html">über 270 Millionen Datensätze</a>
klauen lassen.
Auf der anderen Seite finde ich es aber noch viel, viel schlimmer,
dass man die Nutzer darüber nicht per E-Mail informiert hat
und sie zu einer Passwort-Änderung aufgefordert hat.</p>
<p>Ebenfalls ein Unding ist die Tatsache, dass ich bei der Passwortrücksetzung
(die von mir ausging), für ein neues Passwort maximal 20 Zeichen verwenden darf,
ist auch so ein Unding aus den 2000er Jahren.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Zurück am MacBook</title>
      <link>https://cbrueggenolte.de/zurueck-am-macbook/</link>
      <pubDate>Wed, 19 Aug 2020 06:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/zurueck-am-macbook/</guid>
      <description>&lt;p&gt;Endlich.&#xA;Nachdem sich meine Frau ihr neues &lt;a href=&#34;https://www.apple.com/de/ipad-pro/&#34;&gt;iPad&lt;/a&gt;&#xA;gegönnt hat, darf ich endlich mein MacBook Air zurückhaben.&#xA;Was für eine Erleichterung nicht mehr soviel mit Windows arbeiten zu müssen.&#xA;Eine anständige Tastatur und ein super Touchpad.&lt;/p&gt;&#xA;&lt;p&gt;Das Lenovo X230 habe ich aber auch sehr genossen.&#xA;Allerdings ist das Touchpad vom X230 nicht mit dem vom MacBook Air zu vergleichen.&#xA;Die von Apple haben es halt schon damals wirklich gut hinbekommen,&#xA;ein geiles Multi-Touchpad zu kreieren.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Endlich.
Nachdem sich meine Frau ihr neues <a href="https://www.apple.com/de/ipad-pro/">iPad</a>
gegönnt hat, darf ich endlich mein MacBook Air zurückhaben.
Was für eine Erleichterung nicht mehr soviel mit Windows arbeiten zu müssen.
Eine anständige Tastatur und ein super Touchpad.</p>
<p>Das Lenovo X230 habe ich aber auch sehr genossen.
Allerdings ist das Touchpad vom X230 nicht mit dem vom MacBook Air zu vergleichen.
Die von Apple haben es halt schon damals wirklich gut hinbekommen,
ein geiles Multi-Touchpad zu kreieren.</p>
<p>Und auch wenn das
<a href="https://everymac.com/systems/apple/macbook-air/specs/macbook-air-core-i5-1.3-13-mid-2013-specs.html">MacBook Air6,2</a>
von Mitte 2013 ist, so war es und ist es immer noch mein
“<a href="https://www.urbandictionary.com/define.php?term=daily&#43;driver">daily driver</a>”,
wenn es um E-Mails, Web-Browsing, Programmierung oder Blog-Artikel schreiben ist.</p>
<p><em>Beitrag 10 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Abschied von 1Password</title>
      <link>https://cbrueggenolte.de/abschied-von-1password/</link>
      <pubDate>Sun, 16 Aug 2020 22:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/abschied-von-1password/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Die Anleitung im&#xA;&lt;a href=&#34;https://lab.uberspace.de/guide_vaultwarden.html&#34;&gt;Lab&lt;/a&gt; wurde&#xA;aktualisiert und funktioniert mittlerweile so,&#xA;dass mit einem Docker-Extract-Script die vorkompilierte Binary&#xA;aus dem Docker-Image extrahiert wird.&#xA;Das macht ein Update sehr einfach und schnell.&#xA;Aus Gründen habe ich allerdings die öffentlich erreichbare Version&#xA;von Vaultwarden mittlerweile auf meinem NAS hier zu Hause installiert.&#xA;Damit ist sie nur über das lokale Netzwerk&#xA;bzw. per VPN erreichbar.&#xA;Auch wenn ich den Leuten von Vaultwarden vertraue,&#xA;ist mir das lieber.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><strong>Update:</strong> Die Anleitung im
<a href="https://lab.uberspace.de/guide_vaultwarden.html">Lab</a> wurde
aktualisiert und funktioniert mittlerweile so,
dass mit einem Docker-Extract-Script die vorkompilierte Binary
aus dem Docker-Image extrahiert wird.
Das macht ein Update sehr einfach und schnell.
Aus Gründen habe ich allerdings die öffentlich erreichbare Version
von Vaultwarden mittlerweile auf meinem NAS hier zu Hause installiert.
Damit ist sie nur über das lokale Netzwerk
bzw. per VPN erreichbar.
Auch wenn ich den Leuten von Vaultwarden vertraue,
ist mir das lieber.</p>
<p>Gestern Abend habe ich es noch mithilfe der Anleitung im
<a href="https://lab.uberspace.de/guide_vaultwarden.html">Lab</a> geschafft,
den <a href="https://github.com/dani-garcia/bitwarden_rs">bitwarden_rs</a>-Service
auf meinem Uberspace zu installieren.
Wenn man die Anleitung Schritt für Schritt durcharbeitet,
kommt man auf jeden Fall zum Ziel.
Das funktioniert nicht nur auf dem <a href="https://uberspace.de">Uberspace</a>,
sondern auch auf anderen Linux-Servern.</p>
<p>Weil ich damit keine 1Password-Subscription mehr brauche,
habe ich das auch gleich mal gekündigt.
Gerade noch rechtzeitig!
Denn am 21. August wären erneut ca. 40 Euro fällig gewesen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Über das Schreiben</title>
      <link>https://cbrueggenolte.de/ueber-das-schreiben/</link>
      <pubDate>Sun, 09 Aug 2020 18:39:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/ueber-das-schreiben/</guid>
      <description>&lt;p&gt;Im Gegensatz zu den letzten Woche, habe ich diese Woche ziemlich viel&#xA;geschrieben.&#xA;Das war gut, wirklich, und es hat Spaß gemacht.&#xA;Irgendwie war auch dieser Druck “ich muss da jetzt was schreiben” nicht da.&#xA;Einfach mal drauf los schreiben.&lt;/p&gt;&#xA;&lt;p&gt;Und hier ist sie nun, die Liste der Dinge mit denen ich mit diese Woche&#xA;beschäftigt habe.&#xA;Ein erster Versuch sozusagen.&#xA;Über das Layout kann man sich ja noch mal unterhalten.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Im Gegensatz zu den letzten Woche, habe ich diese Woche ziemlich viel
geschrieben.
Das war gut, wirklich, und es hat Spaß gemacht.
Irgendwie war auch dieser Druck “ich muss da jetzt was schreiben” nicht da.
Einfach mal drauf los schreiben.</p>
<p>Und hier ist sie nun, die Liste der Dinge mit denen ich mit diese Woche
beschäftigt habe.
Ein erster Versuch sozusagen.
Über das Layout kann man sich ja noch mal unterhalten.</p>
<p><strong><a href="https://pleroma.social/">Pleroma</a></strong> ist ein #Microblogging-Dienst ähnlich
wie #Mastodon im Fediverse.
Funktioniert in etwas genauso wie Twitter, nur das man wesentlich mehr Text
schreiben kann, wenn man will.
Ich finde es eigentlich ganz cool und freue mich auf neue Bekanntschaften.</p>
<p><strong><a href="https://bibliogram.art/">Bibliogram</a></strong> ist Instagram-Viewer
den man ohne Instagram-Account benutzen.</p>
<blockquote>
<p>Bibliogram is a website that takes data from Instagram’s public profile views
and puts it into a friendlier page that loads faster, gives downloadable
images, eliminates ads, generates RSS feeds, and doesn’t urge you to sign up.</p>
</blockquote>
<p><strong><a href="https://nitter.net/">Nitter</a></strong> ist wie Bibliogram eine sichere
und No-Tracking Alternative, dieses mal aber für den Kurznachrichtendienste
Twitter.</p>
<p>Dann habe ich diese Woche <strong><a href="https://keybase.io">Keybase.io</a></strong>
wieder für mich entdeckt.
Zum einen kann ich damit verschlüsselte Kommunikation betreiben und ich kann
Texte auf einfache Art und Weise verschlüsseln und dann über einen beliebigen
Kanal versenden.
Vorrassetzung ist natürlich, dass die Gegenstelle ebenfalls einen
#Keybase-Account hat.
Public-Key-Verfahren.</p>
<p>Die Libreho.st Webseiten von <strong><a href="https://hostux.network/en/">https://hostux.network/en/</a></strong>
und <strong><a href="https://snopyta.org/">https://snopyta.org/</a></strong> sind nur zwei von vielen auf Privatsphäre
ausgelegte Webseiten, die verschiedenste Dienste kostenfrei zur Verfügung
stellen.</p>
<blockquote>
<p>Snopyta provides online services based on freedom, privacy and
decentralization. We are part of the librehosters network, more information
at libreho.st</p>
</blockquote>
<p>Kann man mal ausprobieren, genauso wie die Server im <a href="https://tildeverse.org">Tildeverse</a>-Netzwerk.</p>
<p>Auf #Netflix habe ich die zweite Staffel von
<a href="https://de.wikipedia.org/wiki/Brooklyn_Nine-Nine">Brooklyn Nine Nine</a>
angefangen.
Heute morgen <a href="https://en.wikipedia.org/wiki/Mr._Iglesias">Mr. Iglesias</a>
entdeckt.
Leichte Unterhaltung für nebenher.</p>
<hr>
<p>So, und nun geh ich mir einen Eiskaffee machen und mich nach draußen setzen.
Ich habe gesehen, dass ein wenig Wind aufgekommen ist,
und somit dürfte die Hitze etwas erträglich sein.</p>
<p><em>Beitrag 5 der <a href="https://100daystooffload.com">#100DaysToOffload</a> Herausforderung.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>PayPal und Telefonnummern</title>
      <link>https://cbrueggenolte.de/paypal-und-telefonnummern/</link>
      <pubDate>Tue, 04 Aug 2020 22:00:00 +0000</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/paypal-und-telefonnummern/</guid>
      <description>&lt;p&gt;Gestern Abend kam von PayPal eine E-Mail, in der sie angekündigt haben,&#xA;sich in Zukunft besser um die Sicherheit der Nutzer zu kümmern.&#xA;Allerdings machen sie das, in dem sie eine SMS an eine Telefonnummer schicken.&#xA;Ich finde das Quatsch, denn es soll ja tatsächlich noch Menschen geben,&#xA;die keine Mobilfunknummer haben.&lt;/p&gt;&#xA;&lt;p&gt;Na ja, das trifft zumindest nicht für mich.&#xA;Allerdings habe ich in der Vergangenheit mehrfach versucht,&#xA;meine Telefonnummer zu ändern.&#xA;Was leider immer daran scheiterte, dass man weder über die Webseite&#xA;noch in der Smartphone-App eine &lt;strong&gt;nicht&lt;/strong&gt;-deutsche Telefonnummer eingeben konnte.&#xA;Es war schlicht nicht möglich.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gestern Abend kam von PayPal eine E-Mail, in der sie angekündigt haben,
sich in Zukunft besser um die Sicherheit der Nutzer zu kümmern.
Allerdings machen sie das, in dem sie eine SMS an eine Telefonnummer schicken.
Ich finde das Quatsch, denn es soll ja tatsächlich noch Menschen geben,
die keine Mobilfunknummer haben.</p>
<p>Na ja, das trifft zumindest nicht für mich.
Allerdings habe ich in der Vergangenheit mehrfach versucht,
meine Telefonnummer zu ändern.
Was leider immer daran scheiterte, dass man weder über die Webseite
noch in der Smartphone-App eine <strong>nicht</strong>-deutsche Telefonnummer eingeben konnte.
Es war schlicht nicht möglich.</p>
<p>Vor ca. 2 Jahren habe ich sogar mal über eine Stunde mit einem
Support-Mitarbeiter telefoniert.
Doch auch dieser war nicht in der Lage, meine damals belgische Telefonnummer
in das System einzutragen.
Es schien sogar so, als ob der Mitarbeiter noch nie mit nicht-deutschen
Nummer zu tun gehabt hätte.
Er schien nicht mal zu wissen, was eine internationale Vorwahl ist.
Egal.</p>
<p>Doch heute war ich sehr überrascht, als ich in der PayPal-App
in die Einstellungen geschaut habe.
Denn oh Wunder, oh Wunder!
Es ist nun tatsächlich möglich eine Telefonnummer seiner Wahl einzutragen.
Es gibt endlich eine Auswahlliste für die Ländervorwahl.</p>
<p>Ich für meinen Teil habe damit meine Pflicht getan, zumindest was den Teil mit meiner Telefonnummer angeht.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
