<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>livingIT</title>
		<link>https://livingit.de/de/</link>
		<description>Recent content on livingIT</description>
		<generator>Hugo</generator>
		<language>de</language>
		
		
		
		
			<lastBuildDate>Wed, 07 Oct 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://livingit.de/de/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Stadtrat im Ehrenamt: Was mache ich da eigentlich?</title>
				<link>https://livingit.de/de/politics/ehrenamtlicher-stadtrat/</link>
				<pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/politics/ehrenamtlicher-stadtrat/</guid>
				<description>Seit der Kommunalwahl 2026 bin ich ehrenamtlicher Stadtrat in Rodgau, für Volt. Oft fragen mich Menschen: Was macht man da eigentlich? Sitzt Du jetzt im Stadtparlament? Die kurze Antwort: nein. Die lange Antwort steht hier.</description>
			</item>
			<item>
				<title>Rede auf dem Landesparteitag 2026 in Darmstadt</title>
				<link>https://livingit.de/de/politics/rede-lpt-2026/</link>
				<pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/politics/rede-lpt-2026/</guid>
				<description>Ein Plädoyer für Vertrauen in die Mitglieder: Selbstfürsorge und das Einschätzen eigener Grenzen sind ein persönlicher Lernprozess, den wir unseren Mitgliedern zutrauen sollten – statt ihnen vorsorglich Ämter und Mandate zu verwehren. Gerade im ländlichen Raum sind Mehrfachrollen eine Stärke. Aufruf, Regeln an der Realität einer jungen, wachsenden Partei auszurichten, damit Volt pragmatisch, progressiv und paneuropäisch bleibt.</description>
			</item>
			<item>
				<title>Bookmarks sind keine Branches, und das ist der Punkt</title>
				<link>https://livingit.de/de/software/jj-08-bookmarks-vs-branches/</link>
				<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-08-bookmarks-vs-branches/</guid>
				<description>&lt;h1 id=&#34;bookmarks-sind-keine-branches-und-das-ist-der-punkt&#34;&gt;Bookmarks sind keine Branches, und das ist der Punkt&lt;/h1&gt;&#xA;&lt;p&gt;Teil 8 von 9.&lt;/p&gt;&#xA;&lt;p&gt;jjs benannte Zeiger &amp;ldquo;Bookmarks&amp;rdquo; statt &amp;ldquo;Branches&amp;rdquo; zu nennen sah anfangs nach&#xA;unnötigem Vokabular aus. Ist es nicht. Ein Git-Branch rückt jedes Mal automatisch&#xA;vor, wenn du committest, während er ausgecheckt ist, das Ref und deine aktuelle&#xA;Arbeitslinie sind dasselbe, bis du explizit wechselst. Ein jj-Bookmark ist davon&#xA;entkoppelt: Du kannst mehrere Commits über der letzten Stelle arbeiten, auf die ein&#xA;Bookmark zeigt, und es bleibt einfach dort, bis du es mit &lt;code&gt;jj bookmark set&lt;/code&gt;&#xA;verschiebst oder indem du den Commit rebasierst, an den es angehängt ist.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Teammitglieder, die jj nie anfassen, müssen nicht wissen, dass es existiert</title>
				<link>https://livingit.de/de/software/jj-09-git-only-teammates-dont-need-to-care/</link>
				<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-09-git-only-teammates-dont-need-to-care/</guid>
				<description>&lt;h1 id=&#34;teammitglieder-die-jj-nie-anfassen-müssen-nicht-wissen-dass-es-existiert&#34;&gt;Teammitglieder, die jj nie anfassen, müssen nicht wissen, dass es existiert&lt;/h1&gt;&#xA;&lt;p&gt;Teil 9 von 9.&lt;/p&gt;&#xA;&lt;p&gt;Das war die Frage, die vor der Übernahme von all dem für echte Arbeit am meisten&#xA;zählte: Was passiert, wenn ein PR-Review-Kommentar von jemandem kommt, der schlichtes&#xA;&lt;code&gt;git&lt;/code&gt; verwendet, oder wenn ich selbst aus Gewohnheit auf einen schlichten&#xA;&lt;code&gt;git&lt;/code&gt;-Befehl zurückfalle. Die Antwort stellte sich als der undramatischste Teil der&#xA;ganzen Serie heraus, nichts Besonderes passiert, weil der Colocated-Modus bedeutet,&#xA;dass jj dieselbe Git-Objektdatenbank liest und schreibt wie alle anderen. Ein mit&#xA;&lt;code&gt;git push&lt;/code&gt; gepushter Commit und ein mit &lt;code&gt;jj git push&lt;/code&gt; gepushter Commit sind am&#xA;anderen Ende dieselbe Art von Objekt.&lt;/p&gt;</description>
			</item>
			<item>
				<title>History bearbeiten, ohne die Luft anzuhalten</title>
				<link>https://livingit.de/de/software/jj-07-editing-history-without-holding-my-breath/</link>
				<pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-07-editing-history-without-holding-my-breath/</guid>
				<description>&lt;h1 id=&#34;history-bearbeiten-ohne-die-luft-anzuhalten&#34;&gt;History bearbeiten, ohne die Luft anzuhalten&lt;/h1&gt;&#xA;&lt;p&gt;Teil 7 von 9.&lt;/p&gt;&#xA;&lt;p&gt;Die drei Züge, die diese Lektion behandelt, neue Arbeit beginnen, bestehende Arbeit&#xA;bearbeiten, neue Arbeit von einem Punkt in der Vergangenheit aus beginnen, bilden&#xA;Dinge ab, die ich in Git ohnehin ständig getan habe. Der Unterschied ist, wie sehr&#xA;ich mich früher darauf gefasst gemacht habe.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;jj new&lt;/code&gt;, das die aktuelle Arbeitskopie abschließt und eine leere öffnet, ist&#xA;unspektakulär, im Grunde &lt;code&gt;git commit&lt;/code&gt; mit entferntem Staging-Schritt. Der, der&#xA;verändert hat, wie ich arbeite, ist &lt;code&gt;jj edit &amp;lt;change-id&amp;gt;&lt;/code&gt;. Etwas zwei Commits zurück&#xA;zu korrigieren bedeutete früher &lt;code&gt;git rebase -i&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt; in der richtigen Zeile&#xA;auswählen, die Korrektur machen, &lt;code&gt;git rebase --continue&lt;/code&gt; und hoffen, dass unterwegs&#xA;nichts weiter unten in Konflikt geriet. Mit jj verschiebt &lt;code&gt;jj edit&lt;/code&gt; einfach die&#xA;Arbeitskopie auf diesen Commit. Jede Datei, die ich anfasse, ergänzt ihn direkt.&#xA;Nachfahren werden automatisch rebasiert, sobald jj mir den Graphen das nächste Mal&#xA;zeigen muss. Kein Detached-HEAD-Zustand, kein mehrstufiger Rebase, den man auf halbem&#xA;Weg abbrechen muss, wenn ich meine Meinung ändere, &lt;code&gt;jj undo&lt;/code&gt; deckt das ab.&lt;/p&gt;</description>
			</item>
			<item>
				<title>d-you: Digitale Identität europäisch denken – und endlich machen</title>
				<link>https://livingit.de/de/politics/d-you/</link>
				<pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/politics/d-you/</guid>
				<description>Die EUDI-Wallet und d-you bieten die Chance, digitale Identität europäisch, sicher und alltagstauglich zu gestalten. Entscheidend ist, dass Datenschutz und gemeinsame Standards gewahrt bleiben und gleichzeitig auch Vereine, kleine Organisationen und kostenfreie Angebote einen einfachen Zugang erhalten. Digitalisierung braucht hohe Ansprüche – aber auch den Mut, anzufangen, Erfahrungen zu sammeln und Lösungen kontinuierlich zu verbessern.</description>
			</item>
			<item>
				<title>jj log dazu bringen, über das Remote zu sprechen</title>
				<link>https://livingit.de/de/software/jj-06-a-log-that-tells-me-about-the-remote/</link>
				<pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-06-a-log-that-tells-me-about-the-remote/</guid>
				<description>&lt;h1 id=&#34;jj-log-dazu-bringen-über-das-remote-zu-sprechen&#34;&gt;jj log dazu bringen, über das Remote zu sprechen&lt;/h1&gt;&#xA;&lt;p&gt;Teil 6 von 9.&lt;/p&gt;&#xA;&lt;p&gt;Was mich &lt;code&gt;jj log&lt;/code&gt; als Alltagswerkzeug vertrauen ließ statt als Spielerei, war zu&#xA;sehen, wie der Remote-Zustand ohne zusätzliche Zeremonie darin auftaucht.&#xA;&lt;code&gt;jj git fetch&lt;/code&gt; aktualisiert jjs Sicht auf jedes Remote-Bookmark, und das&#xA;Standard-Log-Template annotiert Commits bereits mit den Bookmarks, ob lokal, remote&#xA;oder beides, die auf sie zeigen.&lt;/p&gt;&#xA;&lt;p&gt;Die Marker zu lesen brauchte einen Moment der Gewöhnung. &lt;code&gt;main main@origin&lt;/code&gt; in&#xA;derselben Zeile bedeutet, dass das lokale und das Remote-Bookmark derzeit&#xA;übereinstimmen. &lt;code&gt;old-experiment@origin&lt;/code&gt; ohne ein bloßes &lt;code&gt;old-experiment&lt;/code&gt; bedeutet,&#xA;dass es ein Bookmark ist, das niemand lokal hat, nur sichtbar, weil es auf dem Remote&#xA;existiert. Ein Sternchen an einem von beiden bedeutet, dass sie divergiert sind.&lt;/p&gt;</description>
			</item>
			<item>
				<title>jj wie Tokyo Night aussehen lassen</title>
				<link>https://livingit.de/de/software/jj-05-tokyo-night-in-the-terminal/</link>
				<pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-05-tokyo-night-in-the-terminal/</guid>
				<description>&lt;h1 id=&#34;jj-wie-tokyo-night-aussehen-lassen&#34;&gt;jj wie Tokyo Night aussehen lassen&lt;/h1&gt;&#xA;&lt;p&gt;Teil 5 von 9.&lt;/p&gt;&#xA;&lt;p&gt;Das ist die am wenigsten essenzielle Lektion der Serie und die, an der ich das meiste&#xA;unmittelbare Vergnügen hatte. jj liefert keine Theme-Presets, es liefert eine&#xA;&lt;code&gt;[colors]&lt;/code&gt;-Konfigurationstabelle, in der jeder Schlüssel ein Style-Label ist, das an&#xA;getemplatete Ausgabe angehängt ist (&lt;code&gt;change_id&lt;/code&gt;, &lt;code&gt;bookmarks&lt;/code&gt;, &lt;code&gt;conflict&lt;/code&gt; und so&#xA;weiter), und der Wert ein Farbname, ein Hex-String oder eine Tabelle für fett, kursiv,&#xA;unterstrichen. Das ist ein allgemeinerer Mechanismus als ein fester Theme-Schalter,&#xA;zum Preis, das Theme selbst bauen zu müssen.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Repositories forken mit jj</title>
				<link>https://livingit.de/de/software/working-with-forked-repositories/</link>
				<pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/working-with-forked-repositories/</guid>
				<description>&lt;h1 id=&#34;repositories-forken-mit-jj&#34;&gt;Repositories forken mit jj&lt;/h1&gt;&#xA;&lt;p&gt;&amp;ldquo;Fork&amp;rdquo; ist eines der meistgenutzten Wörter in der täglichen Arbeit mit GitHub,&#xA;GitLab, Gitea, Forgejo oder Bitbucket - und es existiert weder in git noch in jj.&#xA;&lt;code&gt;git help&lt;/code&gt; kennt keinen &lt;code&gt;fork&lt;/code&gt;-Befehl, &lt;code&gt;jj help&lt;/code&gt; genauso wenig. Alles, was Forken&#xA;wie eine natürliche Erweiterung der Versionsverwaltung wirken lässt, ist ein&#xA;Feature der Hosting-Plattform, aufgesetzt auf ein Werkzeug, das nur Repositories,&#xA;Commits und Refs kennt - und diese Grenze rührt jj gar nicht erst an. Die&#xA;Beispiele unten nutzen durchgehend jj, im Colocated Mode.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Notwendigkeiten und Schau: der Tankrabatt als Beispiel</title>
				<link>https://livingit.de/de/politics/tankrabatt-notwendigkeit-und-schau/</link>
				<pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/politics/tankrabatt-notwendigkeit-und-schau/</guid>
				<description>Ein Tankrabatt kurz vor der Wahl: was er kostet, was die Mineralölkonzerne beitragen, und ob es Belege dafür gibt, dass so etwas Wahlen beeinflusst.</description>
			</item>
			<item>
				<title>Wie jj darunter tatsächlich gebaut ist</title>
				<link>https://livingit.de/de/software/jj-04-how-jj-is-built/</link>
				<pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-04-how-jj-is-built/</guid>
				<description>&lt;h1 id=&#34;wie-jj-darunter-tatsächlich-gebaut-ist&#34;&gt;Wie jj darunter tatsächlich gebaut ist&lt;/h1&gt;&#xA;&lt;p&gt;Teil 4 von 9.&lt;/p&gt;&#xA;&lt;p&gt;Das mentale Modell aus dem letzten Beitrag (Arbeitskopie als Commit, Change-ID&#xA;getrennt von der Commit-ID) ist die nach außen sichtbare Geschichte. Nachdem ich jjs&#xA;eigene Design-Dokumente und den Quellcode-Aufbau etwas länger als unbedingt nötig&#xA;durchgegangen bin, erklärt die zugrunde liegende Architektur, &lt;em&gt;warum&lt;/em&gt; dieses Modell&#xA;zusammenhält und warum sich der Colocated-Modus nicht anfühlt wie das Betreiben&#xA;zweier zusammengeklebter Versionskontrollsysteme.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Der Commit-Store ist ein austauschbares Backend, und Git ist eine Implementierung&#xA;davon.&lt;/strong&gt; jj definiert seinen eigenen internen Begriff eines Commits, und ein&#xA;Backend-Trait entscheidet, wie das in Bytes auf der Platte verwandelt wird. Das&#xA;Git-Backend ist der Standard und dasjenige, das dieser ganze Kurs verwendet; es&#xA;speichert jjs Commits zufällig als echte Git-Commit-Objekte. Das ist der eigentliche&#xA;Mechanismus hinter &amp;ldquo;alles ist darunter immer noch ein normales Git-Repo&amp;rdquo;, es ist&#xA;keine nachträglich angeschraubte Übersetzungsschicht, es ist der primäre&#xA;Speicherpfad.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Das Vokabular, das jj von Git übernimmt, verändert und weglässt</title>
				<link>https://livingit.de/de/software/jj-vocabulary-vs-git/</link>
				<pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-vocabulary-vs-git/</guid>
				<description>&lt;h1 id=&#34;das-vokabular-das-jj-von-git-übernimmt-verändert-und-weglässt&#34;&gt;Das Vokabular, das jj von Git übernimmt, verändert und weglässt&lt;/h1&gt;&#xA;&lt;p&gt;Die Falle bei &lt;code&gt;jj&lt;/code&gt; ist, dass es mehrere Git-Begriffe für etwas anderes wiederverwendet,&#xA;statt durchgängig neue zu erfinden. Das ist zu Beginn schlimmer als ein sauberer Schnitt&#xA;gewesen wäre: Ein wirklich neues Wort zwingt dazu, nachzuschlagen, ein vertrautes lässt&#xA;einen annehmen, man kenne es schon.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Branch wurde zu Bookmark, und der Unterschied ist nicht kosmetisch.&lt;/strong&gt; Ein Git-Branch&#xA;folgt immer seiner Spitze - committest du darauf, rückt er automatisch mit vor. Ein&#xA;jj-Bookmark tut das nicht; es bleibt dort stehen, wo du es hingesetzt hast, bis du es mit&#xA;&lt;code&gt;jj bookmark set&lt;/code&gt; bewegst. Als ich zum ersten Mal dreimal committete und erwartete, dass&#xA;mein Feature-Bookmark mitwandert, und feststellte, dass es immer noch auf den ersten&#xA;Commit zeigte, hörte das auf, eine Namenskuriosität zu sein, und wurde zu einer Tatsache,&#xA;die ich tatsächlich verinnerlichen musste.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Die Arbeitskopie ist ein Commit</title>
				<link>https://livingit.de/de/software/jj-03-working-copy-as-a-commit/</link>
				<pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-03-working-copy-as-a-commit/</guid>
				<description>&lt;h1 id=&#34;die-arbeitskopie-ist-ein-commit-und-andere-dinge-die-einen-moment-brauchten-bis-es-klick-machte&#34;&gt;Die Arbeitskopie ist ein Commit, und andere Dinge, die einen Moment brauchten, bis es klick machte&lt;/h1&gt;&#xA;&lt;p&gt;Teil 3 von 9.&lt;/p&gt;&#xA;&lt;p&gt;Gits mentales Modell hat drei Schichten: Arbeitsverzeichnis, Index (Staging-Bereich)&#xA;und Commits. Die meiste alltägliche Reibung, die ich mit Git verbinde, &lt;code&gt;git add -p&lt;/code&gt;,&#xA;das Vergessen, eine Datei zu stagen, &lt;code&gt;git status&lt;/code&gt;, das überlappende &amp;ldquo;staged&amp;rdquo;- und&#xA;&amp;ldquo;unstaged&amp;rdquo;-Abschnitte für dieselbe Datei zeigt, kommt vom Verwalten der Grenze&#xA;zwischen den ersten beiden.&lt;/p&gt;&#xA;&lt;p&gt;jj entfernt diese Grenze. Das Arbeitsverzeichnis ist der Inhalt eines echten Commits,&#xA;adressiert als &lt;code&gt;@&lt;/code&gt;. Jeder Befehl macht zuerst einen Snapshot davon. Es gibt kein&#xA;&lt;code&gt;jj add&lt;/code&gt;. Der Wunsch, &amp;ldquo;manche, aber nicht alle&amp;rdquo; der aktuellen Änderungen zu committen,&#xA;wird von &lt;code&gt;jj split&lt;/code&gt; erledigt, was ein expliziter Akt am Commit selbst ist statt einer&#xA;laufenden Nebenverhandlung mit einem Index.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Colocated-Modus</title>
				<link>https://livingit.de/de/software/jj-02-colocated-mode-first-impressions/</link>
				<pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-02-colocated-mode-first-impressions/</guid>
				<description>&lt;h1 id=&#34;colocated-modus-zwei-speicher-ein-verzeichnis&#34;&gt;Colocated-Modus: zwei Speicher, ein Verzeichnis&lt;/h1&gt;&#xA;&lt;p&gt;Teil 2 von 9.&lt;/p&gt;&#xA;&lt;p&gt;Die Installation selbst ist ein Nicht-Ereignis, ein Paketmanager oder ein&#xA;&lt;code&gt;cargo install&lt;/code&gt;, dann eine &lt;code&gt;user.name&lt;/code&gt;/&lt;code&gt;user.email&lt;/code&gt;-Konfiguration, dieselbe Form wie&#xA;Gits eigenes Erst-Setup. Der interessante Teil beginnt bei &lt;code&gt;jj git init --colocate&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Führe das innerhalb eines bestehenden Git-Checkouts aus, und es legt ein&#xA;&lt;code&gt;.jj&lt;/code&gt;-Verzeichnis neben &lt;code&gt;.git&lt;/code&gt; an, fügt &lt;code&gt;.jj/&lt;/code&gt; zu &lt;code&gt;.git/info/exclude&lt;/code&gt; hinzu, damit es&#xA;nie als untracked auftaucht, und importiert die aktuellen Branches und &lt;code&gt;HEAD&lt;/code&gt; als&#xA;jj-Commits. Nichts in &lt;code&gt;.git&lt;/code&gt; wird umgeschrieben. Wenn ich &lt;code&gt;.jj&lt;/code&gt; jetzt sofort löschte,&#xA;wäre das Repository genau das schlichte Git-Repo, das es vorher war, nichts verloren.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Warum überhaupt einen Blick auf Jujutsu werfen</title>
				<link>https://livingit.de/de/software/jj-01-why-jj/</link>
				<pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/jj-01-why-jj/</guid>
				<description>&lt;h1 id=&#34;warum-überhaupt-einen-blick-auf-jujutsu-werfen&#34;&gt;Warum überhaupt einen Blick auf Jujutsu werfen&lt;/h1&gt;&#xA;&lt;p&gt;Teil 1 von 9 einer Serie über das Erlernen von &lt;code&gt;jj&lt;/code&gt; im Colocated-Modus.&lt;/p&gt;&#xA;&lt;p&gt;Git funktioniert. Fünfzehn Jahre später ist das Ökosystem drumherum enorm, und jeder&#xA;im Team kennt es bereits. Das ist eine hohe Hürde für alles, was beansprucht, es zu&#xA;ersetzen, und Jujutsu (&lt;code&gt;jj&lt;/code&gt;) versucht gar nicht erst, diese Hürde in einem Sprung zu&#xA;nehmen. Es versucht, auf denselben Git-Repositories aufzusitzen, die alle ohnehin&#xA;schon haben, sodass die Einführung eine persönliche Entscheidung ist statt einer&#xA;Team-Migration.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Eine fish-Konfiguration nach nushell portieren</title>
				<link>https://livingit.de/de/software/fish-to-nu-port/</link>
				<pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/fish-to-nu-port/</guid>
				<description>&lt;h1 id=&#34;eine-fish-konfiguration-nach-nushell-portieren-zwei-bugs-die-sich-nur-in-einer-echten-shell-zeigen&#34;&gt;Eine fish-Konfiguration nach nushell portieren: zwei Bugs, die sich nur in einer echten Shell zeigen&lt;/h1&gt;&#xA;&lt;p&gt;Ich nutze fish seit Jahren als tägliche Shell, mit einer chezmoi-verwalteten Konfiguration für das PATH-Setup, Tool-Integrationen (starship, zoxide, atuin, mise), ein paar Dutzend Abbreviations und eine Handvoll eigener Funktionen. Nushell stand daneben als unkonfiguriertes Gerüst, installiert, aber nie wirklich genutzt. Diese Woche habe ich es auf denselben Stand gebracht.&lt;/p&gt;&#xA;&lt;p&gt;Es geht nicht darum, fish zu ersetzen. Ich greife für unterschiedliche Dinge zu den beiden Shells: fish bleibt meine interaktive Standard-Shell, und nu kommt zum Einsatz, wenn ich strukturierte Daten-Pipelines statt Text-Gefummel will. Was ich wollte, war, dass sich der Alltagskram identisch anfühlt, egal in welcher der beiden ich gerade sitze, damit mich das Wechseln nie einen Gedanken kostet. Mein starship-Prompt zeigt an, welche Shell aktiv ist, also ist der einzige sichtbare Unterschied ein Label und keine Änderung im Muskelgedächtnis.&lt;/p&gt;</description>
			</item>
			<item>
				<title>cargo: command not found, obwohl rustup installiert ist</title>
				<link>https://livingit.de/de/software/rustup-keg-only-path-fix/</link>
				<pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/rustup-keg-only-path-fix/</guid>
				<description>&lt;h1 id=&#34;cargo-command-not-found-obwohl-rustup-installiert-ist&#34;&gt;cargo: command not found, obwohl rustup installiert ist&lt;/h1&gt;&#xA;&lt;p&gt;Symptom: &lt;code&gt;rustup&lt;/code&gt; funktioniert, &lt;code&gt;rustup show&lt;/code&gt; listet eine installierte und aktive Toolchain auf, aber &lt;code&gt;cargo&lt;/code&gt;, &lt;code&gt;rustc&lt;/code&gt; und &lt;code&gt;rustfmt&lt;/code&gt; schlagen alle mit &amp;ldquo;command not found&amp;rdquo; fehl.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ursache&#34;&gt;Ursache&lt;/h2&gt;&#xA;&lt;p&gt;Unter macOS mit Homebrew ist &lt;code&gt;rustup&lt;/code&gt; eine &lt;strong&gt;keg-only&lt;/strong&gt;-Formula. Homebrew verlinkt nur das &lt;code&gt;rustup&lt;/code&gt;-Binary selbst nach &lt;code&gt;/opt/homebrew/bin&lt;/code&gt;. Die Proxy-Shims, die rustup normalerweise daneben mitliefert, &lt;code&gt;cargo&lt;/code&gt;, &lt;code&gt;rustc&lt;/code&gt;, &lt;code&gt;rustfmt&lt;/code&gt;, &lt;code&gt;cargo-clippy&lt;/code&gt; und so weiter, verlinkt Homebrew nicht. Die liegen im Keg:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Eine stille Prüfsumme, die jeden S3-kompatiblen Upload zerschossen hat</title>
				<link>https://livingit.de/de/software/a-silent-checksum/</link>
				<pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/a-silent-checksum/</guid>
				<description>&lt;h1 id=&#34;eine-stille-prüfsumme-die-jeden-s3-kompatiblen-upload-zerschossen-hat&#34;&gt;Eine stille Prüfsumme, die jeden S3-kompatiblen Upload zerschossen hat&lt;/h1&gt;&#xA;&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;&#xA;&lt;p&gt;Wir hatten einen kleinen Go-Service, der generierte Dateien in einen S3-kompatiblen Objektspeicher schrieb, der von einem selbst gehosteten, Ceph-basierten Gateway bereitgestellt wurde. Er nutzte eine verbreitete, cloud-portable Bibliothek zur Blob-Storage-Abstraktion, also die Art, mit der man &lt;code&gt;s3://&lt;/code&gt;, &lt;code&gt;gs://&lt;/code&gt; oder &lt;code&gt;file://&lt;/code&gt; hinter einer einzigen Schnittstelle austauschen kann, sodass der Anwendungscode nie wissen muss, mit welchem Backend er gerade spricht.&lt;/p&gt;&#xA;&lt;p&gt;Jeder Schreibvorgang schlug fehl. Nicht sporadisch, sondern jeder einzelne &lt;code&gt;PutObject&lt;/code&gt;-Aufruf kam mit einem 400 zurück und einem Fehler in der Art von:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Volt: Local Lead Wahlen 2026</title>
				<link>https://livingit.de/de/politics/local-lead-wahlen-2026/</link>
				<pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/politics/local-lead-wahlen-2026/</guid>
				<description>Ich möchte gerne in den nächsten 18 Monaten weiter machen!</description>
			</item>
			<item>
				<title>Gebrochene Versprechen: der fruchtbare Boden für Populismus</title>
				<link>https://livingit.de/de/politics/broken-promises/</link>
				<pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/politics/broken-promises/</guid>
				<description>Gebrochene Versprechen: der fruchtbare Boden für Populismus</description>
			</item>
			<item>
				<title>Inhalte in Dateien mit ripgrep ersetzen</title>
				<link>https://livingit.de/de/software/replace-content/</link>
				<pubDate>Wed, 10 Jan 2024 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/replace-content/</guid>
				<description>&lt;p&gt;Spoiler: &lt;a href=&#34;https://github.com/BurntSushi/ripgrep&#34;&gt;ripgrep&lt;/a&gt; kann das nicht allein. Aber du kannst es mit anderen Werkzeugen kombinieren, um das Ziel zu erreichen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;das-problem&#34;&gt;Das Problem&lt;/h2&gt;&#xA;&lt;p&gt;Ich nutze &lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt; mit Frontmatter (YAML), um mein Journal zusammen mit einigen Statistiken zu führen. Manchmal vergesse ich, alle Daten zu erfassen, und möchte die Lücken mit der letzten Messung auffüllen. Sei nachsichtig: Ich weiß, dass das mathematisch nicht korrekt ist, aber für mich ist es gut genug. Wenn meine Notiz automatisch erzeugt wird, wird ein Standardwert verwendet.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Per RDP von Linux zu Windows verbinden</title>
				<link>https://livingit.de/de/software/rdp-linux-windows/</link>
				<pubDate>Thu, 07 Dec 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/rdp-linux-windows/</guid>
				<description>&lt;h1 id=&#34;das-problem&#34;&gt;Das Problem&lt;/h1&gt;&#xA;&lt;p&gt;Ich habe einen Windows-Rechner in meinem lokalen Netzwerk und möchte mich von meinem Linux-Rechner aus per RDP damit verbinden. Dafür nutze ich &lt;code&gt;remmina&lt;/code&gt;, einen schönen RDP-Client. Ohne VPN kann ich mich problemlos mit dem Windows-Rechner verbinden. Sobald ich aber ein VPN nutze, komme ich nicht mehr auf den Windows-Rechner.&lt;/p&gt;&#xA;&lt;h2 id=&#34;die-lösung&#34;&gt;Die Lösung&lt;/h2&gt;&#xA;&lt;p&gt;Die Lösung bestand darin, in der Windows-Firewall RDP WS und WSS zuzulassen. Diese Regeln sind normalerweise standardmäßig deaktiviert. Nachdem ich sie aktiviert hatte, konnte ich mich auch bei aktivem VPN per RDP mit dem Windows-Rechner verbinden.&lt;/p&gt;</description>
			</item>
			<item>
				<title>tclip auf einem Zimaboard betreiben</title>
				<link>https://livingit.de/de/software/tclip-on-zimaboard/</link>
				<pubDate>Thu, 24 Aug 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/tclip-on-zimaboard/</guid>
				<description>&lt;h2 id=&#34;warum&#34;&gt;Warum?&lt;/h2&gt;&#xA;&lt;p&gt;Weil private Gists fantastisch sind und sich zusammen mit Tailscale und einem Zimaboard leicht hosten lassen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;wie&#34;&gt;Wie?&lt;/h2&gt;&#xA;&lt;p&gt;Vor Kurzem habe ich ein &lt;a href=&#34;https://www.zimaboard.com/&#34;&gt;Zimaboard&lt;/a&gt; in die Hände bekommen. Es ist leistungsstark und wird mit vorinstalliertem &lt;a href=&#34;https://www.casaos.io/&#34;&gt;CasaOS&lt;/a&gt; geliefert. Außerdem bin ich Fan von &lt;a href=&#34;https://tailscale.com&#34;&gt;Tailscale&lt;/a&gt;, das wohl eine der einfachsten und zugleich ultrasicheren VPN-Lösungen überhaupt ist. Das Beste: Es gibt einen sehr großzügigen kostenlosen Tarif.&lt;/p&gt;&#xA;&lt;p&gt;Kürzlich haben sie einen Blogbeitrag über &lt;a href=&#34;https://tailscale.dev/blog/tclip&#34;&gt;tclip&lt;/a&gt; veröffentlicht, eine einfache, nicht sonderlich ausgefeilte Möglichkeit, deine Gists privat zu hosten.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Tausche deine Keyboard-Switches</title>
				<link>https://livingit.de/de/software/change-keyboard-switches/</link>
				<pubDate>Wed, 26 Jul 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/change-keyboard-switches/</guid>
				<description>&lt;h2 id=&#34;warum&#34;&gt;Warum?&lt;/h2&gt;&#xA;&lt;p&gt;Einfach weil du es kannst. Und weil es Spaß macht. Und weil du etwas Neues lernen kannst. Und weil du es kannst. Oder du hast dir gerade ein weiteres teures Board gekauft und das Experiment mit linearen Switches ist gescheitert. Und die Switches zu tauschen ist günstiger, als ein neues Board zu kaufen.&lt;/p&gt;&#xA;&lt;p&gt;Das ist kein 5-Minuten-Job. Es dauert eine Weile und du musst vorsichtig sein. Aber es ist machbar.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Willkommen RedHat im Spiel von ... nun ja, Geschäft wird verrückt</title>
				<link>https://livingit.de/de/software/redhat-closing/</link>
				<pubDate>Fri, 23 Jun 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/redhat-closing/</guid>
				<description>&lt;p&gt;RedHat zwingt Klone dazu, ihr Betriebsmodell zu überarbeiten (und bricht damit vielleicht sein Versprechen).&lt;/p&gt;&#xA;&lt;p&gt;Die Community findet die Entscheidung nicht gut. Nimm zum Beispiel das hier: &lt;a href=&#34;https://www.jeffgeerling.com/blog/2023/dear-red-hat-are-you-dumb&#34;&gt;Dear Red Hat: Are you dumb?&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Das stellt aktiv &lt;em&gt;jede&lt;/em&gt; Nutzung von Open Source infrage, an der RedHat beteiligt ist. Letztlich ist RedHat ein Unternehmen und muss sich als solches an bestimmte Regeln halten. Akzeptiert. Andere Unternehmen unter Druck zu setzen (die irgendwann einmal Kunden für RHEL hätten sein können), ist &amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Über Schriften</title>
				<link>https://livingit.de/de/software/about-fonts/</link>
				<pubDate>Tue, 30 May 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/about-fonts/</guid>
				<description>&lt;h2 id=&#34;über-schriften&#34;&gt;Über Schriften&lt;/h2&gt;&#xA;&lt;p&gt;Ich mag ein gutes Schriftbild auf meinem Bildschirm. Ich mag es, wenn viele Informationen (manche würden sagen &lt;em&gt;zu viele&lt;/em&gt;) auf einmal angezeigt werden. Das bedeutet, ich mag keine zu große Schriftgröße. Leider muss ich eine etwas stärkere Brille tragen. Das heißt, ich bevorzuge klar geschnittene Schriften ohne zu viele Serifen usw.&lt;/p&gt;&#xA;&lt;p&gt;Aktuell sind das meine Favoriten:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://berkeleygraphics.com/typefaces/berkeley-mono/&#34;&gt;Berkeley Mono&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://indestructibletype.com/Drafting/&#34;&gt;Drafting Mono&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://fonts.google.com/specimen/Comfortaa&#34;&gt;Comfortaa&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Comfortaa wird hier auf der Website verwendet, aber ich tausche sie vielleicht gegen &lt;a href=&#34;https://indestructibletype.com/Jost.html&#34;&gt;Jost*&lt;/a&gt;. Jost* scheint auch schön zu sein, wenn man etwas schreiben möchte.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Software Engineering vs. Software-Entwicklung</title>
				<link>https://livingit.de/de/software/engineering-vs-development/</link>
				<pubDate>Mon, 13 Feb 2023 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/engineering-vs-development/</guid>
				<description>&lt;p&gt;Software-Entwicklung und Software Engineering sind zwei verwandte, aber unterschiedliche Bereiche innerhalb der Informatik. Software-Entwicklung bezeichnet den Prozess des Entwerfens, Programmierens, Testens und Wartens von Softwareanwendungen, während Software Engineering ein stärker strukturierter und systematischer Ansatz zur Software-Entwicklung ist, der den Entwurf und die Entwicklung hochwertiger, zuverlässiger und wartbarer Softwaresysteme betont.&lt;/p&gt;&#xA;&lt;p&gt;Daten spielen im Software Engineering eine entscheidende Rolle und werden oft während des gesamten Entwicklungsprozesses genutzt. In der Phase der Anforderungserhebung werden Daten verwendet, um die Bedürfnisse von Nutzern und Stakeholdern zu verstehen und Anforderungen an Softwaresysteme zu identifizieren. In der Entwurfs- und Architekturphase werden Daten genutzt, um den Entwurf von Softwaresystemen zu unterstützen und die Performance und Skalierbarkeit von Systemen zu analysieren. In der Phase des Testens und der Validierung werden Daten verwendet, um Softwaresysteme zu validieren und sicherzustellen, dass sie den Bedürfnissen der Nutzer und Stakeholder entsprechen. In der Betriebs- und Wartungsphase werden Daten genutzt, um Performance und Verfügbarkeit von Softwaresystemen zu überwachen und zu steuern.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Den Titan Security Key USB-C unter Linux zum Laufen bringen</title>
				<link>https://livingit.de/de/software/titan/</link>
				<pubDate>Wed, 26 Feb 2020 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/titan/</guid>
				<description>&lt;p&gt;Ich habe mir einen Titan Security Key von Google als Zweitschlüssel zugelegt, falls mein Hauptschlüssel kaputtgeht. Ich nutze Linux, und Yubicos Serie 5 NFC lief einwandfrei ohne weitere Einrichtung.&lt;/p&gt;&#xA;&lt;p&gt;Nicht so bei Googles Titan Key. Immerhin bot Googles Dokumentation zu diesem Thema eine Lösung an:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://support.google.com/titansecuritykey/answer/9148044?hl=en&amp;amp;ref_topic=9115742&#34;&gt;Add a Titan Security Key on a Linux system&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Leider funktionierte die Lösung nicht auf Anhieb. Beim Lesen der Ausgabe von dmesg (du musst &lt;code&gt;sudo dmesg&lt;/code&gt; ausführen) stellte ich fest, dass idVendor und idProduct von den Werten im Beispiel abwichen.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Lebenslauf</title>
				<link>https://livingit.de/de/cv/</link>
				<pubDate>Sat, 11 Jan 2020 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/cv/</guid>
				<description>Senior Software Engineer mit 25 Jahren Erfahrung in Desktop-, Web-, Cloud- und verteilten Systemen.</description>
			</item>
			<item>
				<title>Ein nicht so offensichtlicher Grund für einen Auth-Fehler bei SSH</title>
				<link>https://livingit.de/de/software/ssh-auth-error/</link>
				<pubDate>Tue, 19 Nov 2019 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/ssh-auth-error/</guid>
				<description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;&#xA;&lt;p&gt;Du versuchst, sicher zu bleiben. Wie bitte? Ja, zu sicher. Wenn du für verschiedene Kunden arbeitest und so tickst wie ich, möchtest du vielleicht nicht denselben Schlüssel für jeden Kunden verwenden. Der Bequemlichkeit halber fügst du nun alle deine Schlüssel deinem lokalen Agenten hinzu:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ssh-add key1&#xA;    ...&#xA;ssh-add keyN&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Klasse. Sicher und trotzdem bequem. Bis du einen Auth-Fehler bekommst:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Received disconnect from a.b.c.d port 22:2: Too many authentication failures&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Du prüfst den Benutzernamen doppelt. Du prüfst doppelt, ob dein Schlüssel im Agenten geladen ist. Du fängst an, an dir selbst zu zweifeln. Und doch scheint es keine Erklärung zu geben.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Zu Mattermost beitragen</title>
				<link>https://livingit.de/de/software/contribute-to-mattermost/</link>
				<pubDate>Sun, 06 Oct 2019 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/software/contribute-to-mattermost/</guid>
				<description>&lt;h2 id=&#34;was-ist-mattermost&#34;&gt;Was ist Mattermost?&lt;/h2&gt;&#xA;&lt;p&gt;Von ihrer Website:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Mattermost is a flexible, open source messaging platform&#xA;that enables secure team collaboration&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Stell dir Mattermost also als Open-Source-Alternative zu Slack vor. Es ist außerdem bei On-Premise-Installationen von GitLab Omnibus mit dabei.&lt;/p&gt;&#xA;&lt;h2 id=&#34;was-möchte-ich-erreichen&#34;&gt;Was möchte ich erreichen?&lt;/h2&gt;&#xA;&lt;p&gt;Beim Versuch, an Hacktoberfest 2019 teilzunehmen, habe ich mir ein Migrations-Issue für Mattermost als erstes Ziel für einen PR ausgesucht:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/mattermost/mattermost-server/issues/12550&#34;&gt;Migrate tests from &amp;ldquo;model/system_test.go&amp;rdquo; to use testify&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Maximal Rodgau: Göb, Benz, Hoffmann</title>
				<link>https://livingit.de/de/life/maximal-20180518/</link>
				<pubDate>Fri, 18 May 2018 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/de/life/maximal-20180518/</guid>
				<description>&lt;script src=&#34;https://code.jquery.com/jquery-1.12.4.min.js&#34; integrity=&#34;sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&lt;script src=&#34;https://livingit.de/js/load-photoswipe.js&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css&#34; integrity=&#34;sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css&#34; integrity=&#34;sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js&#34; integrity=&#34;sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js&#34; integrity=&#34;sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pswp&#34; tabindex=&#34;-1&#34; role=&#34;dialog&#34; aria-hidden=&#34;true&#34;&gt;&#xA;&#xA;&lt;div class=&#34;pswp__bg&#34;&gt;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;pswp__scroll-wrap&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;pswp__container&#34;&gt;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &#xA;    &lt;div class=&#34;pswp__ui pswp__ui--hidden&#34;&gt;&#xA;    &lt;div class=&#34;pswp__top-bar&#34;&gt;&#xA;      &#xA;      &lt;div class=&#34;pswp__counter&#34;&gt;&lt;/div&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--close&#34; title=&#34;Close (Esc)&#34;&gt;&lt;/button&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--share&#34; title=&#34;Share&#34;&gt;&lt;/button&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--fs&#34; title=&#34;Toggle fullscreen&#34;&gt;&lt;/button&gt;&#xA;      &lt;button class=&#34;pswp__button pswp__button--zoom&#34; title=&#34;Zoom in/out&#34;&gt;&lt;/button&gt;&#xA;      &#xA;      &#xA;      &lt;div class=&#34;pswp__preloader&#34;&gt;&#xA;        &lt;div class=&#34;pswp__preloader__icn&#34;&gt;&#xA;          &lt;div class=&#34;pswp__preloader__cut&#34;&gt;&#xA;            &lt;div class=&#34;pswp__preloader__donut&#34;&gt;&lt;/div&gt;&#xA;          &lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;pswp__share-modal pswp__share-modal--hidden pswp__single-tap&#34;&gt;&#xA;      &lt;div class=&#34;pswp__share-tooltip&#34;&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--left&#34; title=&#34;Previous (arrow left)&#34;&gt;&#xA;    &lt;/button&gt;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--right&#34; title=&#34;Next (arrow right)&#34;&gt;&#xA;    &lt;/button&gt;&#xA;    &lt;div class=&#34;pswp__caption&#34;&gt;&#xA;      &lt;div class=&#34;pswp__caption__center&#34;&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Endlich haben wir das &lt;a href=&#34;http://www.maximal-rodgau.de/&#34;&gt;Maximal&lt;/a&gt; in Rodgau besucht. Es wird von einem Verein getragen, der Jazz-Livemusik und andere Livemusik veranstaltet. Es ist erschwinglich und ein kleiner, aber einzigartiger Ort.&lt;/p&gt;&#xA;&lt;p&gt;Wenn du Konzerte mit privater Atmosphäre magst und in der Nähe bist, solltest du es ausprobieren.&lt;/p&gt;&#xA;&lt;p&gt;Unten findest du ein paar Eindrücke von diesem Abend.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
