<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="https://planet.debianforum.de">
	<title>planet.debianforum.de</title>
	<link>https://planet.debianforum.de</link>
	<description>planet.debianforum.de - https://planet.debianforum.de</description>
	<atom:link rel="self" href="https://planet.debianforum.de/rss10.xml" type="application/rss+xml"/>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="https://www.my-it-brain.de/wordpress/?p=4409" />
			<rdf:li rdf:resource="https://zockertown.de/s9y/index.php?/archives/1852-guid.html" />
			<rdf:li rdf:resource="https://blog.atari-frosch.de/?p=20790" />
			<rdf:li rdf:resource="https://www.my-it-brain.de/wordpress/?p=4404" />
			<rdf:li rdf:resource="https://hangup.de/?p=509" />
			<rdf:li rdf:resource="https://blog.atari-frosch.de/?p=20784" />
			<rdf:li rdf:resource="https://www.christoph-wickert.de/?p=1236" />
			<rdf:li rdf:resource="https://hangup.de/?p=490" />
			<rdf:li rdf:resource="https://blog.jkip.de/?p=1530" />
			<rdf:li rdf:resource="https://zockertown.de/s9y/index.php?/archives/1851-guid.html" />
			<rdf:li rdf:resource="https://inne.sdf-eu.org/blog/2026/07/12/shaman-bell-a-wake-up-call-to-the-buffalos-and-the-snakes/" />
			<rdf:li rdf:resource="https://inne.sdf-eu.org/blog/2026/07/12/schaman-bell-a-wakeup-call-to-the-buffalos-and-the-snakes/" />
			<rdf:li rdf:resource="https://blog.jkip.de/?p=1512" />
			<rdf:li rdf:resource="https://blog.stefan-betz.net/2026/06/20/going-golang/" />
			<rdf:li rdf:resource="https://blog.mdosch.de/2026/05/22/magentatv-funktioniert-nicht-mehr-im-browser/" />
			<rdf:li rdf:resource="https://blog.mdosch.de/2026/04/11/iortcw-return-to-castle-wolfenstein-auf-debian-spielen/" />
			<rdf:li rdf:resource="https://www.christoph-wickert.de/?p=1219" />
			<rdf:li rdf:resource="https://www.datenteiler.de/?p=10579" />
			<rdf:li rdf:resource="https://www.datenteiler.de/?p=10534" />
			<rdf:li rdf:resource="https://maltris.org/?p=7511" />
			<rdf:li rdf:resource="https://blog.aero2k.de/posts/containermanagement/" />
			<rdf:li rdf:resource="https://blog.aero2k.de/posts/take-back-the-web/" />
			<rdf:li rdf:resource="https://maltris.org/?p=7777" />
			<rdf:li rdf:resource="https://suckup.de/?p=7063" />
			<rdf:li rdf:resource="https://suckup.de/?p=7054" />
			<rdf:li rdf:resource="http://invia1200.wordpress.com/?p=8015" />
			<rdf:li rdf:resource="http://invia1200.wordpress.com/?p=8012" />
			<rdf:li rdf:resource="https://kupschke.eu/?p=1041" />
			<rdf:li rdf:resource="https://www.pc-howto.com/?p=4354" />
			<rdf:li rdf:resource="https://kupschke.eu/?p=1008" />
			<rdf:li rdf:resource="https://www.pc-howto.com/?p=4347" />
			<rdf:li rdf:resource="https://zefanjas.de/?p=3105" />
			<rdf:li rdf:resource="https://zefanjas.de/?p=3069" />
			<rdf:li rdf:resource="https://vinzv.de/?p=922104003" />
			<rdf:li rdf:resource="http://www.fz6fazer.net/wordpress/?p=797" />
			<rdf:li rdf:resource="https://curius.de/blog/13-betriebssysteme/desktop/open-source/659-centos-mit-unklarem-supportstatus" />
			<rdf:li rdf:resource="https://www.schiessle.org/articles/2017/07/09/welcome-to-my-new-homepage/" />
			<rdf:li rdf:resource="https://curius.de/blog/14-dienste/276-datenabfluss-bei-facebook-eine-nachbetrachtung" />
			<rdf:li rdf:resource="https://www.schiessle.org/articles/2009/02/01/an-awesome-event-is-over-kde-42-release-party-and-fellowship-meeting-in-stuttgart/" />
			<rdf:li rdf:resource="http://marmaro.de/lue/txt/2018-07-05.txt" />
			<rdf:li rdf:resource="https://malte-kiefer.de/blog/Threema-Lizenzen/" />
			<rdf:li rdf:resource="http://marmaro.de/lue/txt/2018-03-08.txt" />
			<rdf:li rdf:resource="http://vinzv.de/?p=922102283" />
			<rdf:li rdf:resource="https://www.chrismoonlight.de/wordpress/?p=2601" />
			<rdf:li rdf:resource="https://suntsu.ch/index.php?/archives/248-guid.html" />
			<rdf:li rdf:resource="https://www.chrismoonlight.de/wordpress/?p=2607" />
			<rdf:li rdf:resource="https://malte-kiefer.de/blog/Kommentare-mit-Github/" />
			<rdf:li rdf:resource="https://www.globalcitizen.red/?p=11355" />
			<rdf:li rdf:resource="http://www.black-cat-online.net/wordpress/?p=447" />
			<rdf:li rdf:resource="https://suntsu.ch/index.php?/archives/234-guid.html" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="https://www.my-it-brain.de/wordpress/?p=4409">
	<title>Joerg Kastning (Tronde): RHEL CVE Monitor für arme Admins</title>
	<link>https://www.my-it-brain.de/wordpress/rhel-cve-monitor-fuer-arme-admins/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;em&gt;User Story:&lt;/em&gt; Als RHEL-Systemadministrator:in möchte ich für einige ausgewählte Kompontenten, wie z.B. &lt;code&gt;kernel&lt;/code&gt;, &lt;code&gt;openssl&lt;/code&gt; oder &lt;code&gt;samba&lt;/code&gt;, über neue CVE für diese Komponenten informiert werden. Leider steht mir dazu keine Schwachstellenmanagementlösung zur Verfügung. Einen Red Hat Satellite Server habe ich nicht und den Vulnerability Service in der Hybrid Cloud Console kann bzw. darf ich nicht nutzen.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;em&gt;Transparenzhinweis:&lt;/em&gt; Ich arbeite als &lt;a href=&quot;https://www.my-it-brain.de/wordpress/was-tut-ein-technical-account-manager-tam-bei-red-hat/&quot;&gt;TAM&lt;/a&gt; für Red Hat. Die im Folgenden vorgestellte Anwendung habe ich als Open-Source-Projekt unter &lt;a href=&quot;https://de.wikipedia.org/wiki/MIT-Lizenz&quot;&gt;MIT-Lizenz&lt;/a&gt; veröffentlicht. Es steht in keiner offiziellen Verbindung zu Red Hat.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;RHEL CVE Monitor ist ein Python-Tool, das die &lt;a href=&quot;https://docs.redhat.com/en/documentation/red_hat_security_data_api/1.0/html/red_hat_security_data_api/index&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Red Hat Security Data API&lt;/a&gt; regelmäßig abfragt und neue Sicherheitslücken (CVEs) für eine konfigurierbare Liste von RHEL-Paketen meldet.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Die zu überwachenden Pakete werden in &lt;code&gt;packages.txt&lt;/code&gt; festgelegt (z. B. &lt;code&gt;kernel&lt;/code&gt;, &lt;code&gt;openssl&lt;/code&gt;, &lt;code&gt;samba&lt;/code&gt;, &lt;code&gt;rear&lt;/code&gt;). Beim ersten Lauf werden CVEs der letzten 30 Tage ausgegeben; danach zeigt das Tool nur noch neue Einträge seit dem letzten erfolgreichen Durchlauf. Bereits gemeldete CVEs werden in einer lokalen Zustandsdatei (&lt;code&gt;.cve_monitor_state.json&lt;/code&gt;) gespeichert, damit nichts doppelt erscheint.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Die Ausgabe kann als Text, JSON oder CSV erfolgen und eignet sich für manuelle Prüfungen, Cron-Jobs oder systemd-Timer. Mit &lt;code&gt;--exit-code&lt;/code&gt; lässt sich das Tool auch in CI/CD-Pipelines einbinden, die bei neuen CVEs alarmieren sollen.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Wie benutzt man das?&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Der folgende Code-Block zeigt die CVE im RHEL-&lt;code&gt;kernel&lt;/code&gt; der letzten 5 Tage:&lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;[host.example.com rhel_cve_monitor]$ python3 rhel_cve_monitor.py --initial-days 4
=== kernel (1 new CVE) ===
  CVE-2026-80725       important    2026-08-29  https://access.redhat.com/security/cve/CVE-2026-80725

Total: 1 new CVE across 1 package&lt;/code&gt;&lt;/pre&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Die Ausgabe ist bewusst spartanisch gehalten. Man erhält lediglich die CVE-Nummer, die Severity, das Erscheinungsdatum und die URL zur &lt;a href=&quot;https://access.redhat.com/security/security-updates/cve&quot;&gt;Red Hat CVE Datenbank&lt;/a&gt;, wo man weitere Informationen zur Schwachstelle findet.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Verfügbare CLI-Optionen findet man in der Hilfe:&lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;[host.example.com rhel_cve_monitor]$ python3 rhel_cve_monitor.py --help
usage: rhel_cve_monitor.py [-h] [--packages PACKAGES]
                           [--state-file STATE_FILE]
                           [--initial-days INITIAL_DAYS] [--output OUTPUT]
                           [--exit-code] [--verbose] [--dry-run]
                           [--format {text,json,csv}]
                           [--reset-packages PACKAGE [PACKAGE ...]]
                           [--reset-after YYYY-MM-DD]

Monitor Red Hat Security Data API for new CVEs affecting given RHEL packages.

options:
  -h, --help            show this help message and exit
  --packages PACKAGES   Path to file with one package name per line (default:
                        packages.txt)
  --state-file STATE_FILE
                        Path to state file tracking last run time (default:
                        .cve_monitor_state.json)
  --initial-days INITIAL_DAYS
                        On first run (no state file), look back this many days
                        (default: 30)
  --output OUTPUT       Optional file path to write the report to (in addition
                        to stdout)
  --exit-code           Exit with code 2 when new CVEs are found (useful for
                        CI/automation)
  --verbose, -v         Enable verbose logging
  --dry-run             Preview what would be queried without hitting the API
  --format {text,json,csv}
                        Output format: text (default), json, or csv
  --reset-packages PACKAGE [PACKAGE ...]
                        Clear seen-CVE state for these packages (use 'all' for
                        every package) and exit
  --reset-after YYYY-MM-DD
                        When resetting, also set last_run to this date so next
                        run queries from here&lt;/code&gt;&lt;/pre&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Mehr kann die kleine Anwendung nicht.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Und wo gibt es das?&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Unter der URL: &lt;a href=&quot;https://github.com/Tronde/rhel_cve_monitor&quot;&gt;https://github.com/Tronde/rhel_cve_monitor&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Das englischsprachige &lt;code&gt;README&lt;/code&gt; enthält weitere Beispiele und Hinweise zur Nutzung.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Falls ihr diese kleine Anwendung nützlich findet, freue ich mich, wenn ihr mir hier im Blog einen Kommentar hinterlasst und eure Erfahrung weiterverbreitet. Wenn ihr Fehler findet oder Verbesserungsvorschläge habt, meldet diese bitte im GitHub-Issue-Tracker des Projekts.&lt;/p&gt;</content:encoded>
	<dc:date>2026-09-07T05:00:37+00:00</dc:date>
	<dc:creator>Jörg Kastning</dc:creator>
</item>
<item rdf:about="https://zockertown.de/s9y/index.php?/archives/1852-guid.html">
	<title>Bernd Dau (whisper): MMO-2044 V2: Allianz-System – Gemeinsam gegen den Schwarm!</title>
	<link>https://zockertown.de/s9y/index.php?/archives/1852-MMO-2044-V2-Allianz-System-Gemeinsam-gegen-den-Schwarm!.html</link>
	<content:encoded>&lt;p&gt; &lt;/p&gt;

&lt;div&gt;
&lt;h2 style=&quot;margin-top: 0; color: white; text-align: center;&quot;&gt;🚀 MMO-2044 V2 — Allianz-System ist da! 🚀&lt;/h2&gt;

&lt;p style=&quot;text-align: center; color: #e0e0e0; font-size: 1.1em; line-height: 1.6;&quot;&gt;Wie wäre es, wenn du nicht allein gegen eine übermächtige Bedrohung kämpfst?&lt;/p&gt;

&lt;p style=&quot;text-align: center; color: #e0e0e0; font-size: 1.1em; line-height: 1.6;&quot;&gt;In &lt;strong&gt;MMO-2044 V2&lt;/strong&gt; schmiedest du jetzt Allianzen mit anderen Spielern, teilst Wissen und koordinierst Angriffe, denn nur gemeinsam können wir den Schwarm besiegen!&lt;/p&gt;

&lt;div&gt;
&lt;h3 style=&quot;margin-top: 0; color: #00ff88;&quot;&gt;🆕 Neues Allianz-System:&lt;/h3&gt;

&lt;ul style=&quot;color: #e0e0e0;&quot;&gt;
    &lt;li&gt;Gründe deine eigene Allianz mit Name, Beschreibung und Motto&lt;/li&gt;
    &lt;li&gt;Lade Spieler ein oder trete öffentlichen Allianzen bei&lt;/li&gt;
    &lt;li&gt;Verwalte Mitglieder als Leader oder Officer&lt;/li&gt;
    &lt;li&gt;Teile Wissen – Allianz-Mitglieder sehen alle gemeinsamen Forschungen&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3 style=&quot;margin-top: 0; color: #00ff88;&quot;&gt;🎯 In der nächsten Version kommen:&lt;/h3&gt;

&lt;ul style=&quot;color: #e0e0e0;&quot;&gt;
    &lt;li&gt;🎯 Koordinierte Flottenangriffe (Synchronisiertes Eintreffen ±2 Minuten)&lt;/li&gt;
    &lt;li&gt;🔍 Spionage-Sonden für Schwarm-Erkundung&lt;/li&gt;
    &lt;li&gt;📜 Progressive Enthüllung der Schwarm-Bedrohung&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div style=&quot;background: #00ff88; color: black; border-radius: 8px; text-align: center; font-weight: bold;&quot;&gt;📢 Beta-Test starten! Die erste Beta mit Allianz-System steht kurz vor der Veröffentlichung!&lt;br /&gt;
&lt;strong&gt;Wann? Nächstes Wochenende&lt;/strong&gt;&lt;br /&gt;
Teste die Allianz-Funktionen und melde Bugs!&lt;/div&gt;

&lt;p style=&quot;text-align: center; color: #e0e0e0; margin-bottom: 0;&quot;&gt;Bleibt dran – der Schwarm kommt! 🪐&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2026-08-29T15:21:00+00:00</dc:date>
	<dc:creator>bed</dc:creator>
</item>
<item rdf:about="https://blog.atari-frosch.de/?p=20790">
	<title>Sabine Becker (AtariFrosch): Angesehen: Inside I‘m Dancing</title>
	<link>https://blog.atari-frosch.de/2026/08/29/angesehen-inside-im-dancing/</link>
	<content:encoded>&lt;p&gt;Auf der „Spur“ von James McAvoy landete ich gestern Abend bei dem irischen Film „&lt;a href=&quot;https://de.wikipedia.org/wiki/Inside_I%E2%80%99m_Dancing&quot;&gt;Inside I'm Dancing“&lt;/a&gt; (2004) über zwei behinderte junge Menschen, die aus dem Heim-Leben ausbrechen wollen und von denen einer dafür von der Bürokratie nicht ernst genommen wird.&lt;/p&gt;
&lt;p&gt;Der Film wurde zu einer Zeit gedreht, als es die UN-Behindertenrechtskonvention noch nicht gab. Die beiden zitieren jedoch einen Paragrafen aus europäischem Recht (?) bezüglich Antidiskriminierung, zum Beispiel, um in eine Disco zu kommen (ob der echt oder erfunden war, weiß ich nicht, ich müßte nochmal nachhören und dann recherchieren; ich hatte mir das nicht aufgeschrieben).&lt;/p&gt;
&lt;p&gt;Das Alter des Films nimmt ihm leider kaum etwas von seiner Aktualität. &lt;span id=&quot;more-20790&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Positiv überrascht hat mich, daß das – zumindest meiner Ansicht nach – so überhaupt kein „&lt;a href=&quot;https://de.wikipedia.org/wiki/Inspiration_Porn&quot;&gt;inspiration porn&lt;/a&gt;“ ist. Ich hatte sowas nämlich so halb befürchtet. Im Gegenteil, im Film tauchen typische Vorurteile auf, nur um deutlich zu machen, daß es eben nur Vorurteile sind. Die beiden jungen Männer tun auch so ziemlich alles, um diese verbal oder aktiv zu widerlegen.&lt;/p&gt;
&lt;p&gt;Leider nur in einer herausgeschnittenen Szene ist zu sehen, daß Rory sich von einem Polizisten sowas anhören muß wie „ach, mein (irgendein Verwandter) sitzt auch im Rollstuhl“ und der typischerweise nicht gerade höfliche Rory ihn daraufhin heftig zusammenfaltet. Die Szene hätte für mich gern im Film bleiben dürfen. Das gleiche gilt für die Szene bei Rorys Beerdigung, als Michael bekannt gibt, daß er an die Uni gehen und Jura studieren will.&lt;/p&gt;
&lt;p&gt;Man könnte kritisieren, daß die Rollen der Hauptdarsteller nicht mit entsprechend behinderten Menschen besetzt worden waren. Aber ich vermute, daß Menschen mit solchen Behinderungen kaum eine ernsthafte Chance haben (oder zumindest vor über 20 Jahren hatten), eine Schauspiel-Ausbildung zu durchlaufen – was den Kreis in gewisser Weise wieder schließt.&lt;/p&gt;
&lt;p&gt;Ich vermute, daß es James McAvoy nicht so leicht hatte, zur Darstellung nur eine Hand und sein Gesicht zur Verfügung haben, und keinerlei Körpersprache einsetzen zu können. Der hervorragenden Darstellung tat das keinen Abbruch.&lt;/p&gt;
&lt;p&gt;Für das Ende ist es angebracht, eine Packung Taschentücher bereitzuhalten.&lt;/p&gt;
&lt;p&gt;Mein Tip: Empfehlenswert. Sollten sich vor allem die Leute angucken, die meinen, daß Geld wichtiger sei als die Menschenrechte von behinderten Menschen.&lt;/p&gt;</content:encoded>
	<dc:date>2026-08-29T11:38:59+00:00</dc:date>
	<dc:creator>Atari-Frosch</dc:creator>
</item>
<item rdf:about="https://www.my-it-brain.de/wordpress/?p=4404">
	<title>Joerg Kastning (Tronde): Meine FrOSCon 2026</title>
	<link>https://www.my-it-brain.de/wordpress/meine-froscon-2026/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Letzte Woche, um diese Zeit, öffnete die 21. FrOSCon ihre Tore für technik- und Open-Source-begeisterte Menschen. Nun ist sie bereits seit einer Woche vorbei und ich habe Konferenzblues überwunden.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Es hat mich sehr gefreut, Alexandra, Armin, Chris, Christian Thinkpadowik (den Museumsdirektor), Christof, Christoph (stoeps), Dirk, Henning, Jens und Sujeevan wiederzutreffen. Ebenso habe ich mich gefreut, einige neue Gesichter kennenzulernen. Wir werden uns sicher auf zukünftigen Konferenzen wieder über den Weg laufen und irgendwann, werde ich mir eure Namen auch merken können (bitte entschuldigt, mein Namensgedächtnis ist wirklich schlecht).&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Vorträge gab es reichlich. &lt;a href=&quot;https://programm.froscon.org/froscon2026/talk/c9af97dd-374e-4555-b828-ffb789e199c2/&quot;&gt;Unbekannt heißt nicht unzugänglich – Warum OSS Nutzung Mut braucht&lt;/a&gt; von Silvia Deimeke ist tatsächlich der einzige Vortrag, den ich vor Ort gehört habe und ich finde ihn großartig. Sivlvia hat zum ersten Mal auf einer Open-Source-Konferenz gesprochen und einen interessanten Beitrag geleistet. Aus für gewöhnlich gut informierten Quellen kam mir zu Ohren, dass dies nicht ihr letzter Beitrag zu einer Open-Source-Konferenz gewesen sein soll.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Dass ich es nicht zu mehr Vorträgen geschafft habe, liegt zum einen an den schönen Gesprächen auf dem Gang, im Hof und an den Ständen und zum anderen, dass ich dieses Jahr gleich mit zwei Vorträgen und einem Workshop beigetragen habe. Allein sind drei Beiträge kaum zu stemmen, weswegen ich mich mit Christian Stankowic zusammentan habe, um folgende Beiträge abzuliefern:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Vortrag: &lt;a href=&quot;https://programm.froscon.org/froscon2026/talk/383a9fe1-c572-41d9-8ba6-e479a5aec0fc/&quot;&gt;Patch me, if you can&lt;/a&gt;. &lt;a href=&quot;https://media.ccc.de/v/froscon2026-3524-patch_me_if_you_can&quot;&gt;Aufzeichnung&lt;/a&gt;. &lt;a href=&quot;https://www.my-it-brain.de/wordpress/wp-content/uploads/2026/08/patch_me_if_you_can.pdf&quot;&gt;Vortrag als PDF&lt;/a&gt;.&lt;/li&gt;



&lt;li&gt;Workshop: &lt;a href=&quot;https://programm.froscon.org/froscon2026/talk/fffc3668-5fc8-4811-a807-068fda1375ad/&quot;&gt;Linux Patch-Management mit Foreman und Katello&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Christian, es war mir eine große Freude, mit dir gemeinsam zu dieser Konferenz beizutragen.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Darüber hinaus habe ich ein Thema beigetragen, welches mir persönlich wichtig ist und Rückmeldungen zufolge einige Backlogs gefüllt hat:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://programm.froscon.org/froscon2026/talk/9d8cd41d-b647-437c-866d-ed5788c57205/&quot;&gt;Nerds gefähden die digitale Souveränität ihrer Familie&lt;/a&gt;. &lt;a href=&quot;https://media.ccc.de/v/froscon2026-3473-nerds_gefahrden_die_digitale_souveranitat_ihrer_familie&quot;&gt;Aufzeichnung&lt;/a&gt;. &lt;a href=&quot;https://www.my-it-brain.de/wordpress/wp-content/uploads/2026/08/nerds_gefaehrden_die_digitale_souveraenitaet_ihrer_familie.pdf&quot;&gt;Vortrag als PDF&lt;/a&gt;. &lt;a href=&quot;https://www.my-it-brain.de/wordpress/nerds-gefaehrden-die-digitale-souveraenitaet-ihrer-familie/&quot;&gt;Blog-Artikel zum Vortrag&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Ich betrachte darin ein Unterthema aus dem digitalen Nachlass und wünsche mir, dass noch mehr Nerds auch in diesem Bereich Vorsorge betreiben.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Normalerweise finde ich nach einer Konferenz nicht die Zeit, mir Vortragsaufzeichnungen anzusehen. Dieses Mal haben es jedoch folgende Beiträge geschafft, mein Interesse zu wecken, so dass ich mir die Zeit genommen habe:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://programm.froscon.org/froscon2026/talk/9cd441ad-0fa1-47bf-928a-c04ba0138d9c/&quot;&gt;Der Open Source Stack für souveräne LLMs&lt;/a&gt; von Florian Sommer&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://programm.froscon.org/froscon2026/talk/86a97c61-8362-40af-9934-821d04f08ccd/&quot;&gt;curl: Mehr als HTTP&lt;/a&gt; von und mit Christoph Stoettner (stoeps)&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://programm.froscon.org/froscon2026/talk/7493570e-195c-42a9-a162-9f8b27592c41/&quot;&gt;shutdown&lt;/a&gt; mit Hinrikus Wolf&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;In letzterem findet ihr auch einige interessante Statistiken zur diesjährigen Konferenz.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Für mich heißt es nun: Nach der Konferenz ist vor der Konferenz. Ich freue mich als nächstes auf die Chemnitzer Linux-Tage 2027.&lt;/p&gt;</content:encoded>
	<dc:date>2026-08-22T07:00:00+00:00</dc:date>
	<dc:creator>Jörg Kastning</dc:creator>
</item>
<item rdf:about="https://hangup.de/?p=509">
	<title>(thoys): Nemo Actions – Datei per Rechtsklick mailen</title>
	<link>https://hangup.de/nemo-actions-datei-per-rechtsklick-mailen/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;LinuxMint bringt in der Cinnamon Ausführung als Standard-Dateimanager Nemo mit. Beginn meiner Beschäftigung mit Nemo Actions war, dass ich es vermisst habe, Dateien mit der rechten Maustaste anzuklicken und direkt per Mail verschicken zu können. Konkret sollte, wie bei Ubuntu/Debian/Gnome eine neue Mail des Standardmailprogramms öffnen und die Datei als Anhang hinzugefügt werden.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Nun habe ich Nemo Actions entdeckt und gesehen, dass dies eine Spielwiese an neuen Funktionen bedeutet. Dies ist mal ein Bereich, bei dem die KI des Vertrauens einem wirklich etwas helfen kann – wobei natürlich das eigene Verstehen immer im Vordergrund stehen sollte. &lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Konkret für E-Mail&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Als erstes öffnet man den Terminal und erstellt ein Verzeichnis:&lt;/p&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;mkdir -p ~/.local/share/nemo/actions &lt;/pre&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Anschließend erstellt und öffnet man im erstellten Verzeichnis eine Datei mit entsprechendem Namen. xed öffnet einen grafischen Editor, nano funktioniert natürlich genauso. &lt;/p&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;xed ~/.local/share/nemo/actions/send_mail.nemo_action &lt;/pre&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Folgendes wird eingefügt und gespeichert. Dank der Kommentare angepasst am 23. August. Durch die Nutzung des relativen Pfades (%U), dürfen offensichtlich auch Leerzeichen im Dateinamen, den man verschicken will, sein. &lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;[Nemo Action]
Name=Per Mail senden
Comment= %U Per Thunderbird senden
Exec=thunderbird -compose to=,&quot;attachment='%U'&quot;
Icon-Name=mail-attachment-symbolic
Selection=notnone
Extensions=nodirs
Separator=,
Dependencies=thunderbird;&lt;/code&gt;&lt;/pre&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Nun muss Nemo nur noch neu gestartet werden. Wenn nun eine Datei mit einem Rechtsklick angeklickt wird, öffnet sich das Kontextmenü (das war vorher schon so), aber es enthält nun den Punkt „Per E-Mail senden“.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Bin ich nun restlos glücklich? Es gibt noch ein Problem. Zwar benenne ich Dateien meistens ohne Leerzeichen, aber wenn es doch mal eine gibt, die eines hat, dann funktionierte das bei meinem Test nicht. Es gab von Thunderbird eine Fehlermeldung, dass die Datei nicht existiert. Hat jemand einen Tipp, wie ich den Prozess dazu bringe, auch Dateien mit Leerzeichen im Namen anzuhängen?&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Gerne hätte ich einen Screenshot gezeigt, aber das Drücken der Druck-Taste funktioniert bei aufgerufenem Kontextmenü nicht. Schade eigentlich. Aber probiert es einfach selber aus, es macht total Freude sich mit Nemo Actions zu beschäftigen.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2026-08-21T17:18:53+00:00</dc:date>
	<dc:creator>Timotheus</dc:creator>
</item>
<item rdf:about="https://blog.atari-frosch.de/?p=20784">
	<title>Sabine Becker (AtariFrosch): Laserdrucker mit Kopfständen</title>
	<link>https://blog.atari-frosch.de/2026/08/21/laserdrucker-mit-kopfstaenden/</link>
	<content:encoded>&lt;p&gt;Bereits vor über einem Jahr stand ich plötzlich vor dem Problem, daß die Tonerkartusche, die ich mal kurz aus dem Laserdrucker Lexmark M1145 gezogen hatte, nicht mehr reingehen wollte. Ich war dann erstmal eine Weile ohne Laserdrucker und bekam schließlich aus meinem Umfeld einen Brother DCP-1512 geschenkt. Für meinen normalen Bedarf reicht der. Allerdings sponsore ich für den hiesigen &lt;a href=&quot;https://tauschring-duesseldorf.de/&quot;&gt;Tauschring&lt;/a&gt; die Flyer – derzeit meine einzige Möglichkeit, für mein Gewerbe Werbung zu machen. Ich darf dafür nämlich eine Werbeanzeige mit draufdrucken.&lt;/p&gt;
&lt;p&gt;Der DCP-1512 kann keinen Rückseitendruck und ist mit mehr als 100 Seiten am Stück massiv überfordert bzw. er überhitzt. Er macht dann nach jeder Seite eine lange Pause, und damit dauert der „Massendruck“ einfach viel zu lange. Dafür hat er einen Scanner huckepack, ist also ein Kombi-Gerät. Das hat durchaus auch seine Vorteile: So hatte ich angefangen, mit diesem Drucker meinen Papierkram zu scannen, um damit den „guten“ Canon CanoScan nicht zu belasten. Der soll für Fotos, Postkarten und Tickets reserviert bleiben.&lt;/p&gt;
&lt;p&gt;Mit dem DCP-1512 hab ich zwischendurch auch Tauschring-Flyer gedruckt, aber mich jedesmal erstmal mit der Rückseite vertan, so daß diese auf dem Kopf stand. Oder auf die Vorderseite obendrauf gedruckt wurde. Oder beides. Auf Dauer war das keine Lösung. Also wollte ich den Lexmark reparieren lassen. &lt;span id=&quot;more-20784&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Das erwies sich jedoch als für mich recht teures Vorhaben: Damit die Firma, die hier in relativer Nähe Toner verkauft und auch Drucker repariert, das Gerät überhaupt mal anschaut, wollen sie schonmal knapp 30 € haben. Und das ist vermutlich noch recht günstig. Ich hatte mich Mitte Juni darüber informiert, was eine neue Belichtungseinheit kosten würde: Sie meinten, 60 bis 70 €. Und dann könne es noch sein, daß immer noch nicht alles funktioniert – ich hatte nur gefragt, ohne das Gerät mitzubringen.&lt;/p&gt;
&lt;p&gt;Bei eBay schaute ich mich nach leistungsfähigen gebrauchten Laserdruckern um, die nicht nach 100 Seiten anfangen zu plärren. Ich fand einen einzigen, der bei 80 € lag, alle anderen lagen auch gebraucht gleich mal deutlich über 200 €. Also entschied ich mich für die Reparatur. Mit Kostenvoranschlag, damit ich nicht plötzlich eine Rechnung präsentiert bekomme, die ich dann nicht bezahlen kann.&lt;/p&gt;
&lt;p&gt;Aber erst in diesem Monat schaffte ich es, mit Hilfe aus dem Tauschring, den Drucker die fünf Stockwerke runter und zu dem Laden zu bringen. Ich bezahlte die knapp 30 € und wartete ab, was da kommen sollte.&lt;/p&gt;
&lt;p&gt;Sie probierten es mit einer anderen, gleichartigen, aber leeren Tonercassette und meinten, sie müßten auf jeden Fall die Trommel, also die Belichtungseinheit, tauschen, da sei was kaputtgegangen. Aber auch die Tonercassette, die drin war, hätte einen Schaden. Kostenpunkt für beides zusammen: 121 €. Aua.&lt;/p&gt;
&lt;p&gt;Ich gab das OK für die Reparatur, weil ich keine Alternative sah.&lt;/p&gt;
&lt;p&gt;Am Dienstag habe ich den Drucker schließlich wieder abgeholt. Hochbringen wollte ich ihn mit einer gerade neu erstandenen, treppenfähigen Sackkarre, aber das stellte sich als Reinfall heraus. Die Sackkarre bringt selbst 11,5 kg auf die Waage, also etwa nochmal das gleiche Gewicht wie der Drucker. Und da ich beides Stufe für Stufe hochziehen muß und ich dann mit jeder Stufe das volle Gewicht zum Ziehen auf meinen Bauchmuskeln habe, ist das … nicht sehr hilfreich. Ein Nachbar hat sich schließlich erbarmt und mir beides, Drucker und Sackkarre, hochgetragen.&lt;/p&gt;
&lt;p&gt;Am Mittwoch habe ich dann Platz für den Lexmark gemacht, denn an seinem ursprünglichen Platz steht ja jetzt der Brother. Der Lexmark steht jetzt direkt nebendran auf dem TV-Unterschrank, den ich hier als Druckertisch einsetze. Dann hab ich erstmal ein Kaltgerätekabel gesucht. Ich weiß, daß ich eine große Tasche voll habe. Nur ist diese Tasche wohl irgendwo in meinem Chaos vergraben. Ich zog schließlich das Kabel von meinem Testrechner ab, den ich derzeit eh nicht nutzen kann. Das Netzwerkkabel für den Lexmark lag noch bereit; der Brother ist über USB angeschlossen.&lt;/p&gt;
&lt;p&gt;Als ich dann jedoch die Flyer endlich drucken wollte, kamen die ersten 10 Exemplare getrennt nach Seiten raus, also Vorder- und Rückseite jeweils auf einem eigenen Blatt, obwohl ich im Druckmenü Duplex gewählt hatte. Äh, wat?&lt;/p&gt;
&lt;p&gt;Ich ging beim Drucker direkt ins Menü und stellte fest, daß er dort auf Simplex eingestellt war. Also war meine Einstellung für Rückseitendruck entweder nicht beim Treiber oder vom Treiber aus nicht beim Drucker angekommen. Ich stellte also direkt am Drucker auf Duplex um. Das Ergebnis: Ja, er druckte die Rückseiten mit. Aber auf dem Kopf stehend.&lt;/p&gt;
&lt;p&gt;Nach zwei Stunden Fehlersuche gab ich erstmal auf. Ich konnte nicht herausfinden, warum meine Einstellung nicht korrekt ausgeführt wurde.&lt;/p&gt;
&lt;p&gt;Gestern ging bei mir gar nichts, also habe ich es heute nochmal versucht. Diesmal bin ich tiefer in die Menüs direkt am Drucker eingestiegen. Und siehe da: Statt „Duplex (kurze Kante)“ stand der Drucker auf „Duplex (lange Kante)“. Umgestellt, getestet, und endlich kommen die Flyer wieder so aus dem Drucker, wie sie sollen und wie es vor der Reparatur war.&lt;/p&gt;
&lt;p&gt;Ich vermute, der Drucker war, als ich ihn bekommen hatte, schon so eingestellt gewesen, und dann hat der Techniker in dem Laden ihn auf Werkseinstellung zurückgesetzt. &lt;/p&gt;
&lt;p&gt;Jedenfalls gibt's jetzt wieder Flyer für den Düsseldorfer Tauschring.&lt;/p&gt;</content:encoded>
	<dc:date>2026-08-21T12:16:33+00:00</dc:date>
	<dc:creator>Atari-Frosch</dc:creator>
</item>
<item rdf:about="https://www.christoph-wickert.de/?p=1236">
	<title>Christoph Wickert (raoul): Fritz!Box und ältere WLAN-Geräte</title>
	<link>https://www.christoph-wickert.de/2026/08/20/fritzbox-und-aeltere-wlan-geraete/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Wer eine halbwegs aktuelle FRITZ!Box aber ältere WLAN-Geräte hat, kennt das Problem vielleicht: Obwohl die FRITZ!Box im &lt;strong&gt;&lt;em&gt;WPA2 + WPA3&lt;/em&gt;&lt;/strong&gt;-Modus läuft, können sich ältere Geräte, die nur WPA2 beherrschen, nicht verbinden. Bei mir war das der Fall mit einem alten TP-Link TL-WA850RE WLAN-Repeater.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;WPA3 zu deaktivieren kam für mich nicht infrage, aber zum Glück gibt ab es FRITZ!OS 8.00 unter &lt;strong&gt;&lt;em&gt;WLAN → Sicherheit&lt;/em&gt;&lt;/strong&gt; die Option &lt;strong&gt;&lt;em&gt;Sicherheitseinstellungen für den WLAN-Zugang auf eine erhöhte Kompatibilität für ältere WLAN-Geräte optimieren&lt;/em&gt;&lt;/strong&gt;. Sie aktiviert WPA2 auf dem 2,4 Ghz-Band und erlaubt Anmeldungen ohne Protected Management Frames (PMF), so dass sich mein alter Repeater verbinden kann.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Allerdings sollte man diese Option nur nutzen, wenn man sie wirklich benötigt. Erstens sollten heute alle Geräte PMF unterstützen, ist es doch Bestandteil des bereits 2009 verabschiedeten &lt;a class=&quot;wpel-icon-right&quot; href=&quot;https://en.wikipedia.org/wiki/IEEE_802.11w-2009&quot; rel=&quot;external noopener noreferrer&quot; target=&quot;_self&quot;&gt;IEEE 802.11w-Standards&lt;i class=&quot;wpel-icon dashicons-before dashicons-external&quot;&gt;&lt;/i&gt;&lt;/a&gt;. Überprüfen kann man das unter Linux mit&lt;br /&gt;&lt;code&gt;grep MFP_CAPABLE /sys/kernel/debug/ieee80211/*/hwflags&lt;/code&gt; und unter Windows mittels &lt;code&gt;netsh wlan show driver&lt;/code&gt;. Zweitens kann die Änderung dazu führen, dass bei neuen Geräten keine Wi-Fi 7-Verbindungen mit Multi-Link-Operation (MLO) möglich sind. Das beherrscht meine FRITZ!Box aber ohnehin nicht, also verliere ich hier nichts. Ich darf nur nicht vergessen, PMF wieder verpflichtend zu machen, wenn ich den Repeater aussortiere. Dazu dieser Artikel – vielleicht hat ja jemand das gleiche Problem.&lt;/p&gt;</content:encoded>
	<dc:date>2026-08-20T18:48:00+00:00</dc:date>
	<dc:creator>chris</dc:creator>
</item>
<item rdf:about="https://hangup.de/?p=490">
	<title>(thoys): Linux aktualisieren</title>
	<link>https://hangup.de/linux-aktualisieren/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Nun gibt es nicht die eine Linux Distribution, sondern viele verschiedene. Je nachdem, ob und welche grafische Oberfläche es gibt, könnt ihr euer System grafisch, d.h. mithilfe eines Programms, aktuell halten. &lt;/p&gt;



&lt;span id=&quot;more-490&quot;&gt;&lt;/span&gt;



&lt;figure class=&quot;wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex&quot;&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-491&quot; height=&quot;714&quot; src=&quot;https://hangup.de/wp-content/uploads/260810_softwarecenter-1024x714.png&quot; width=&quot;1024&quot; /&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-492&quot; height=&quot;714&quot; src=&quot;https://hangup.de/wp-content/uploads/260810_software-1024x714.png&quot; width=&quot;1024&quot; /&gt;&lt;/figure&gt;
Gnome-Software und der Reiter „Aktualisierungen“&lt;/figure&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Beispielsweise Debian mit Gnome-Software ist es möglich die Updates aus den Repositories (apt), Flatpak und die Firmwareupdates mit einem Programm einzuspielen. Das ist natürlich super komfortabel.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Ansonsten hatte ich eine gewisse Routine im Terminal und da ich das nicht immer von neuem eingeben wollte, habe ich eine .sh-Datei erstellt. Diese muss ich dann nur mit ./Dateipfad/Dateiname aufrufen. &lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;#!/bin/bash

wartungsangelegenheiten () {

echo &quot;:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:--:-:-:-:-:-:-:-:-:-:-:-:-:-:
:-:-:-:-:-:-:-:-:-:-:Start Durchlauf&quot; $i &quot;:-:-:-:-:-:-:-:-:-:-:
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:--:-:-:-:-:-:-:-:-:-:-:-:-:-:&quot;
sudo apt update
sudo apt full-upgrade -y
sudo apt clean
sudo apt autoremove -y
# sudo snap refresh
# flatpak update
sudo apt install -f -y
}

fertigausgabe () {

echo &quot;:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:--:-:-:-:-:-:-:-:-:-:-:-:-:-:
:-:-:-:-:-:-:-:-:-:-:-:-:-:-fertig-:-:-:-:-:-:-:-:-:-:-:-:-:
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:--:-:-:-:-:-:-:-:-:-:-:-:-:-:&quot;
}



i=0
while [ $i -lt 2 ]; do wartungsangelegenheiten &amp;amp;&amp;amp; i=$[$i+1]; done

fertigausgabe&lt;/code&gt;&lt;/pre&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Wie ihr sehr, werden die üblichen Befehle für ein Update aufgerufen. &lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Aktualisierung der Programmlisten. (update)&lt;/li&gt;



&lt;li&gt;Aktualisierungen inkl. der Abhängigkeiten installieren (full-upgrade)&lt;/li&gt;



&lt;li&gt;Nicht mehr genutzte Abhängigkeiten deinstallieren (autoremove)&lt;/li&gt;



&lt;li&gt;Reparieren, falls etwas verpfuscht ist (install -f)&lt;/li&gt;



&lt;li&gt;Das ganze so, dass man nicht immer bestätigen muss (-y)&lt;/li&gt;



&lt;li&gt;Auskommentiert ist snap und flatpak – je nachdem, was eben genutzt wird, kann man die Raute entfernen.&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Das ganze wird zweimal durchlaufen. Das ist nur mein ganz normaler innerer Zwang, falls beim ersten Durchgang irgendwas liegen bleibt. Quittiert wird das Ganze mit „Start Durchlauf 0“, „Start Durchlauf 1“ und „fertig“.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Wen die Sache mit sudo stört, der kennt sein System so gut, dass er weiß, was es damit auf sich hat. Und natürlich seht ihr, dass es sich um ein System mit apt (Debian, Ubuntu, Mint usw.) handelt.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Findet ihr so etwas eine tolle Arbeitserleichterung oder total fahrlässig, dass man ohne zu schauen, was gefragt wird, alles mit ja beantwortet?&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Auf jeden Fall habt ihr grafisch oder per Terminal hinterher ein aktuelles System. Abhängig von der Distribution sollte natürlich vorher geschaut werden, welche Auswirkungen aktuelle Updates haben können und ob vielleicht apt upgrade anstelle von apt dist-upgrade genutzt werden sollte. &lt;/p&gt;</content:encoded>
	<dc:date>2026-08-15T15:04:04+00:00</dc:date>
	<dc:creator>Timotheus</dc:creator>
</item>
<item rdf:about="https://blog.jkip.de/?p=1530">
	<title>Jörg Kruse (4A4B): Optionale Checks in ShellCheck</title>
	<link>https://blog.jkip.de/optionale-checks-in-shellcheck/</link>
	<content:encoded>&lt;p&gt;Zum Überprüfen von Fehlern in Shell-Scripten hat sich das Kommandozeilen-Tool &lt;em&gt;&lt;a href=&quot;https://www.shellcheck.net/&quot;&gt;ShellCheck&lt;/a&gt;&lt;/em&gt; als Quasi-Standard etabliert. Den Shell-Dialekt (sh, bash, dash, ksh oder busybox), dessen jeweilige Checks angewandt werden sollen, kann &lt;em&gt;ShellCheck&lt;/em&gt; anhand der Dateiendung oder dem Shebang des zu prüfenden Scripts erkennen, andernfalls muss dieser mit der Option &lt;code&gt;--shell&lt;/code&gt; bestimmt werden.&lt;span id=&quot;more-1530&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Die Warnungen von ShellCheck bei Bash-Scripten sind eher konservativ gehalten, so dass eine Behebung der angezeigten Fehler nicht unnötigerweise „Bashismen“ erzeugt. Ein moderner Coding-Style mit doppelten statt einfacher Klammern, wie z. B. im &lt;a href=&quot;https://google.github.io/styleguide/shellguide.html&quot;&gt;Shell Style Guide von Google&lt;/a&gt; gefordert, ließe sich aber mit dem optionalen Check &lt;em&gt;require-double-brackets&lt;/em&gt; forcieren. Mit der Option &lt;code&gt;--list-optional&lt;/code&gt; können die in der jeweiligen Version von ShellCheck verfügbaren optionalen Checks inklusive Beschreibung und Beispiel-Code mit Fix aufgeführt werden, beispielsweise für die Version 0.11.0:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
$ shellcheck --version
ShellCheck - shell script analysis tool
version: 0.11.0
license: GNU General Public License, version 3
website: https://www.shellcheck.net
$ shellcheck --list-optional
name:    add-default-case
desc:    Suggest adding a default case in `case` statements
example: case $? in 0) echo 'Success';; esac
fix:     case $? in 0) echo 'Success';; *) echo 'Fail' ;; esac

name:    avoid-negated-conditions
desc:    Suggest removing unnecessary comparison negations
example: [ ! &quot;$var&quot; -eq 1 ]
fix:     [ &quot;$var&quot; -ne 1 ]

name:    avoid-nullary-conditions
desc:    Suggest explicitly using -n in `[ $var ]`
example: [ &quot;$var&quot; ]
fix:     [ -n &quot;$var&quot; ]

name:    check-extra-masked-returns
desc:    Check for additional cases where exit codes are masked
example: rm -r &quot;$(get_chroot_dir)/home&quot;
fix:     set -e; dir=&quot;$(get_chroot_dir)&quot;; rm -r &quot;$dir/home&quot;

name:    check-set-e-suppressed
desc:    Notify when set -e is suppressed during function invocation
example: set -e; func() { cp *.txt ~/backup; rm *.txt; }; func &amp;amp;&amp;amp; echo ok
fix:     set -e; func() { cp *.txt ~/backup; rm *.txt; }; func; echo ok

name:    check-unassigned-uppercase
desc:    Warn when uppercase variables are unassigned
example: echo $VAR
fix:     VAR=hello; echo $VAR

name:    deprecate-which
desc:    Suggest 'command -v' instead of 'which'
example: which javac
fix:     command -v javac

name:    quote-safe-variables
desc:    Suggest quoting variables without metacharacters
example: var=hello; echo $var
fix:     var=hello; echo &quot;$var&quot;

name:    require-double-brackets
desc:    Require [[ and warn about [ in Bash/Ksh
example: [ -e /etc/issue ]
fix:     [[ -e /etc/issue ]]

name:    require-variable-braces
desc:    Suggest putting braces around all variable references
example: var=hello; echo $var
fix:     var=hello; echo ${var}

name:    useless-use-of-cat
desc:    Check for Useless Use Of Cat (UUOC)
example: cat foo | grep bar
fix:     grep bar foo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Optionale Checks können mit der Direktive &lt;em&gt;enable&lt;/em&gt; in der User-Konfigurationsdatei ~/.config/shellcheckrc aktiviert werden, so dass ShellCheck diese künftig automatisch mit berücksichtigt, so z. B.:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
enable=avoid-negated-conditions
enable=avoid-nullary-conditions
enable=deprecate-which
enable=require-double-brackets
enable=useless-use-of-cat
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
	<dc:date>2026-07-22T12:35:27+00:00</dc:date>
	<dc:creator>Jörg Kruse</dc:creator>
</item>
<item rdf:about="https://zockertown.de/s9y/index.php?/archives/1851-guid.html">
	<title>Bernd Dau (whisper): Season 4 ist Geschichte</title>
	<link>https://zockertown.de/s9y/index.php?/archives/1851-Season-4-ist-Geschichte.html</link>
	<content:encoded>&lt;p&gt;Die vierte Spielrunde ging zu Ende. Zeit für eine kurze Bilanz. Die Teilnahme war stabil, die Kämpfe um die vorderen Plätze bis zuletzt eng. Am Ende setzte sich M0n1y durch und sicherte sich den ersten Platz.&lt;br /&gt;
&lt;a class=&quot;serendipity_image_link&quot; href=&quot;https://zockertown.de/s9y/uploads/games/rangliste_S4.png&quot; rel=&quot;lightbox[1851]&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_left&quot; height=&quot;182&quot; src=&quot;https://zockertown.de/s9y/uploads/games/rangliste_S4.serendipityThumb.png&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Die Top 3 sowie alle weiteren Platzierungen sind in der Grafik zu sehen. Wer genau wie viele Punkte gesammelt hat und wie die Bewegungen in den letzten Tagen aussahen, lässt sich dort nachvollziehen.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Der Start von &lt;strong&gt;MMO-2044 V2&lt;/strong&gt; steht in ein paar Wochen bevor. Die Grundmechanik bleibt, aber es gibt einige Anpassungen unter der Haube. Die wichtigsten Änderungen betreffen die Ressourcenlogistik und die Flottenbewegungen. Wer in der letzten Runde mit Spielmechaniken zu kämpfen hatte, wird einige Verbesserungen bemerken.&lt;br /&gt;
Mehr Details gibt es mit dem Starttermin.&lt;/p&gt;

&lt;p&gt;Bis dahin bleibt die aktuelle Instanz noch online, für alle, die die letzten Punkte sichern oder einfach nur noch ein paar Runden drehen wollen.&lt;/p&gt;

&lt;p&gt;Vielen Dank an alle Teilnehmer und auch danke für die Feedbacks!&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;</content:encoded>
	<dc:date>2026-07-12T11:43:00+00:00</dc:date>
	<dc:creator>bed</dc:creator>
</item>
<item rdf:about="https://inne.sdf-eu.org/blog/2026/07/12/shaman-bell-a-wake-up-call-to-the-buffalos-and-the-snakes/">
	<title>Steffen Rumberger (inne): Shaman Bell - a wake up call to … (the buffalos and the snakes)</title>
	<link>https://inne.sdf-eu.org/blog/2026/07/12/shaman-bell-a-wake-up-call-to-the-buffalos-and-the-snakes/</link>
	<content:encoded>&lt;pre&gt;# Welcome to Sonic Pi
# Shaman Bell - a wake up call to … (the buffalos and the snakes)
use_debug false
set :bpm, 60 # use_bpm 60
with_fx :reverb, room: 0.6, mix: 0.4 do
  live_loop :shaman_drum do
    use_bpm get(:bpm)
    sample :bd_tek, amp: rrand(0.9, 1.3), cutoff: rrand(60, 80)
    sleep 0.45 + rrand(-0.03, 0.03) # leichte Schwankung
  end
end
# Sphere
with_fx :slicer, phase: 16, mix: 0.15 do
  with_fx :wobble, phase: 8, mix: 0.3 do
    live_loop :sphere do
      use_synth :dark_ambience
      # weiche Lautstärkewelle
      amp_wave = (range 0.1, 0.3, step: 0.01).mirror.tick
      play :e2, sustain: 8, release: 4, amp: amp_wave, cutoff: rrand(60, 90)
      sleep [8].choose # orig: 8
    end
  end
end
# Bell
with_fx :reverb, room: 0.9, mix: 0.6 do
  with_fx :echo, phase: 0.375, mix: 0.25 do
    live_loop :bell do
      use_bpm 110
      amp_wave = (range 0.2, 0.4, step: 0.05).mirror.tick
      with_fx :slicer, phase: 0.5, mix: 0.3 do
        sample :perc_bell, rate: rrand(0.7875, 0.8125), amp: amp_wave
        sleep 0.5 + rrand(-0.05, 0.05)
      end
    end
    live_loop :shaker do
      use_bpm 110
      amp_wave = (range 0.1, 0.3, step: 0.05).mirror.tick
      with_fx :lpf do
        sample :perc_snap, rate: 1.2, amp: amp_wave
        sleep 0.25
      end
    end
  end
end
# BPM-Fade
live_loop :bpm_fade, sync: :shaman_drum do
  start = get(:bpm)
  ziel  = rrand(30, 90)
  steps = [16,32,64].choose # orig: 64
  dauer = [128].choose # orig: 128
  steps.times do |i|
    t = i.to_f / (steps - 1)
    curve = t ** 2 # quadratische Kurve
    bpm = start + (ziel - start) * curve
    set :bpm, bpm
    sleep dauer.to_f / steps
  end
  sleep rrand(0, 256)
end
&lt;/pre&gt;</content:encoded>
	<dc:date>2026-07-12T02:22:29+00:00</dc:date>
</item>
<item rdf:about="https://inne.sdf-eu.org/blog/2026/07/12/schaman-bell-a-wakeup-call-to-the-buffalos-and-the-snakes/">
	<title>Steffen Rumberger (inne): Schaman Bell - a wakeup call to … (the buffalos and the snakes)</title>
	<link>https://inne.sdf-eu.org/blog/2026/07/12/schaman-bell-a-wakeup-call-to-the-buffalos-and-the-snakes/</link>
	<content:encoded>&lt;pre&gt;# Welcome to Sonic Pi
# Schaman Bell - a wakeup call to … (the buffalos and the snakes)
use_debug false
use_synth_defaults debug: false
set :scopes, false
set :bpm, 60 # use_bpm 60
with_fx :reverb, room: 0.6, mix: 0.4 do
  live_loop :shaman_drum do
    use_bpm get(:bpm)
    sample :bd_tek, amp: rrand(0.9, 1.3), cutoff: rrand(60, 80)
    sleep 0.45 + rrand(-0.03, 0.03) # leichte Schwankung
  end
end
# Sphere
with_fx :slicer, phase: 16, mix: 0.15 do
  with_fx :wobble, phase: 8, mix: 0.3 do
    live_loop :sphere do
      use_synth :dark_ambience
      # weiche Lautstärkewelle
      amp_wave = (range 0.1, 0.3, step: 0.01).mirror.tick
      play :e2, sustain: 8, release: 4, amp: amp_wave, cutoff: rrand(60, 90)
      sleep [8].choose # orig: 8
    end
  end
end
# Bell
with_fx :reverb, room: 0.9, mix: 0.6 do
  with_fx :echo, phase: 0.375, mix: 0.25 do
    live_loop :bell do
      use_bpm 110
      amp_wave = (range 0.2, 0.4, step: 0.05).mirror.tick
      with_fx :slicer, phase: 0.5, mix: 0.3 do
        sample :perc_bell, rate: rrand(0.7875,0.8125), amp: amp_wave
      end
      sleep 0.5 + rrand(-0.05, 0.05)
    end
    live_loop :shaker do
      use_bpm 110
      amp_wave = (range 0.1, 0.3, step: 0.05).mirror.tick
      with_fx :lpf do
        sample :perc_snap, rate: 1.2, amp: amp_wave
        sleep 0.25
      end
    end
  end
end
# BPM-Fade
live_loop :bpm_fade, sync: :shaman_drum do
  start = get(:bpm)
  ziel  = rrand(30, 90)
  steps = [16,32,64].choose # orig: 64
  dauer = [128].choose # orig: 128
  steps.times do |i|
    t = i.to_f / (steps - 1)
    curve = t ** 2 # quadratische Kurve
    bpm = start + (ziel - start) * curve
    set :bpm, bpm
    sleep dauer.to_f / steps
  end
  sleep rrand(0, 256)
end
&lt;/pre&gt;</content:encoded>
	<dc:date>2026-07-12T02:22:29+00:00</dc:date>
</item>
<item rdf:about="https://blog.jkip.de/?p=1512">
	<title>Jörg Kruse (4A4B): Konfiguration mit vimrc und / oder .editorconfig</title>
	<link>https://blog.jkip.de/konfiguration-mit-vimrc-und-oder-editorconfig/</link>
	<content:encoded>&lt;p&gt;In dem Beitrag &lt;a href=&quot;https://blog.jkip.de/projektspezifische-vimrc/&quot;&gt;Projektspezifische Konfiguration von vim&lt;/a&gt; hatte ich vor sechseinhalb Jahren beschrieben, wie mit dem vim Plugin &lt;em&gt;localvimrc&lt;/em&gt; Konfigurationsdateien geladen werden können, die in einzelnen Projektordnern wirksam sind. Inzwischen verwende ich dieses Plugins und die lokalen .lvimrc Dateien seit längerem nicht mehr, stattdessen kommen in Projekten zur Definition von Coding-Styles &lt;em&gt;.editorconfig&lt;/em&gt; Dateien zum Einsatz.&lt;span id=&quot;more-1512&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Von Vorteil sind diese vor allem, da der &lt;a href=&quot;https://editorconfig.org/&quot;&gt;EditorConfig-Standard&lt;/a&gt; zwischenzeitlich von vielen Editoren unmittelbar oder mittels eines Plugins unterstützt wird und so in einem Projekt-Team mit unterschiedlichen Editoren für einheitliche Coding-Styles sorgen kann. In vim 9.1, welches im Repository von Debian Trixie enthalten ist, muss nicht einmal mehr ein Plugin installiert werden, &lt;em&gt;.editorconfig&lt;/em&gt; Dateien werden direkt unterstützt. Für ältere vim Versionen existiert das Plugin &lt;em&gt;vim-editorconfig&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Allgemein gehe ich so vor, dass ich globale Coding-Styles, die vor allem für die Bearbeitung von Shellscript- und Konfigurations-Dateien (v.a. durch root) relevant sind, weiterhin in der systemweiten Konfigurationsdatei /etc/vim/vimrc.local definiere:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;code&gt;
&lt;pre&gt;set autoindent
set expandtab
set tabstop=2
set shiftwidth=2&lt;/pre&gt;
&lt;/code&gt;&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ich habe hier eine automatische Einrückung von zwei Leerzeichen gewählt, da dies auch bei vielen Dateien unterhalb von /etc der Fall ist.&lt;/p&gt;
&lt;p&gt;In den jeweiligen Projektordnern liegen dann .editorconfig Dateien, deren Anweisungen von vim als vorrangig gegenüber denen der /etc/vim/vimrc oder ~/.vimrc behandelt werden. Beispiel einer .editorconfig Datei für ein Python-Projekt, mit einer automatischen Einrückung von vier Leerzeichen:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;code&gt;
&lt;pre&gt;root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 4&lt;/pre&gt;
&lt;/code&gt;&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In der .editorconfig Datei für ein WordPress-Plugin kommt dagegen der für WordPress übliche Standard von Einrückung mittels Tabs zum Zuge:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;&lt;code&gt;
&lt;pre&gt;root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = tab&lt;/pre&gt;
&lt;/code&gt;&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-30T13:15:00+00:00</dc:date>
	<dc:creator>Jörg Kruse</dc:creator>
</item>
<item rdf:about="https://blog.stefan-betz.net/2026/06/20/going-golang/">
	<title>Stefan J. Betz (encbladexp): Going Golang</title>
	<link>https://blog.stefan-betz.net/2026/06/20/going-golang/</link>
	<content:encoded>&lt;p&gt;Meine primäre Programmiersprache ist schon sehr lange &lt;a href=&quot;https://python.org&quot;&gt;Python&lt;/a&gt;.
Ich bin kein Softwareentwickler; dennoch liefere ich damit gut funktionierenden
Code und damit auch Lösungen — meist Plugins/Module für bestehende Komponenten,
aber auch mal ein Backend für IoT-Devices. Das meiste davon entstand im Rahmen
meiner Erwerbsarbeit und steht daher unter &lt;a href=&quot;https://de.wikipedia.org/wiki/Vertraulichkeitsvereinbarung&quot;&gt;NDA&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&quot;hello_worldgo&quot;&gt;hello_world.go&lt;/h1&gt;
&lt;p&gt;Schon länger besteht jedoch der Wunsch, eine weitere Programmiersprache zu können,
weshalb ich mir Gedanken über meine Anforderungen an eine neue Programmiersprache
gemacht habe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Die Sprache sollte kompiliert werden müssen; es sollte also keine Skriptsprache
mehr sein.&lt;/li&gt;
&lt;li&gt;Die Sprache sollte statisch typisiert sein.&lt;/li&gt;
&lt;li&gt;Die Sprache sollte plattformübergreifend, zumindest aber auf Linux und macOS
gut lauffähig sein.&lt;/li&gt;
&lt;li&gt;Die Sprache sollte architekturübergreifend, inkl. Cross-Compiling, verwendbar
sein. Ich möchte also auch in der Lage sein, auf einer Intel- oder AMD-CPU
Binaries für ARM zu bauen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Evaluiert habe ich folgende Programmiersprachen, jeweils eine Woche. Meine Testaufgabe
waren lediglich ein paar einfache REST-API-Aufrufe und das damit verbundene Parsen
von JSON.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rust&lt;/strong&gt;: Alle reden davon, ich wollte es also auch mal wissen. Um ehrlich zu
sein, war mir die Einstiegshürde (von Python kommend) zu hoch; gleichzeitig empfand
ich das Tooling als wenig attraktiv, und mir fehlte das von Python gewohnte “Batteries included”.
Rust ist sicher eine hervorragende Programmiersprache, aber eben doch nicht meine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C&lt;/strong&gt;: Im Hackerspace- und CCC-Umfeld wird häufig C verwendet, was naheliegend
ist für die vielen ESP32, die überall herumliegen. Die Lernkurve war zumindest
anfangs noch ganz OK; allerdings empfand ich das Tooling als eher altertümlich
und auch das “Batteries included” fehlte mir wieder. Dazu kommen noch die diversen
&lt;a href=&quot;https://en.wiktionary.org/wiki/footgun&quot;&gt;footguns&lt;/a&gt;, die die sichere Verwendung
dieser alten Sprache nicht gerade einfacher machen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go&lt;/strong&gt;: Bekannt vor allem durch das ganze Container- und DevOps-Tooling war
natürlich auch Go eine Sprache, die in Betracht kam. Im Vergleich zu Rust oder
C konnte ich mich recht schnell an das Tooling gewöhnen. Von Python kommend
wirkt Go fast schon wie eine Low-Level-Programmiersprache. Gefallen hat mir
auch, dass es wieder “Batteries included” gibt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So war die Entscheidung schnell gefallen: Es sollte &lt;a href=&quot;https://go.dev&quot;&gt;Go&lt;/a&gt; werden.
Nicht evaluiert habe ich &lt;a href=&quot;https://ziglang.org/&quot;&gt;Zig&lt;/a&gt;, was sicher auch eine gute
Programmiersprache ist; zum Zeitpunkt der Entdeckung hatte ich mich jedoch bereits
entschieden.&lt;/p&gt;
&lt;h1 id=&quot;learning-by-doing&quot;&gt;“Learning by Doing”&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://de.wikipedia.org/wiki/Learning_by_Doing&quot;&gt;Learning by Doing&lt;/a&gt; ist sehr
effizient, vor allem, da man dabei auch viele Fehler macht und daraus lernt.&lt;/p&gt;
&lt;p&gt;Zuerst habe ich die meisten privat laufenden Python-Tools durch neue Implementierungen
in Go ersetzt. Dies umfasst diverse Prometheus-Exporter, aber auch das angepasste
Lademanagement, welches mein &lt;a href=&quot;https://evcc.io/&quot;&gt;EVCC&lt;/a&gt; “optimiert”.&lt;/p&gt;
&lt;p&gt;Aufgefallen ist mir dabei unter anderem, wie viel kleiner meine Container wurden:
in einem Fall ging es von ca. 300 MiB auf ca. 15 MiB herunter — das ist ordentlich.&lt;/p&gt;
&lt;p&gt;Die (oft) deutlich bessere Performance von Go spielte hier nur selten eine Rolle;
nichts, was ich privat betreibe, läuft im Maßstab von Google, Cloudflare oder Amazon.&lt;/p&gt;
&lt;p&gt;Unerwartet schnell habe ich gelernt, dass Fehler auch Freunde sind (Go hat ein sehr
explizites Error-Handling) und dass Exceptions weniger nett sind, als das Konzept
zunächst klingt.&lt;/p&gt;
&lt;h1 id=&quot;dokumentation&quot;&gt;Dokumentation&lt;/h1&gt;
&lt;p&gt;Neben &lt;a href=&quot;https://go.dev/tour&quot;&gt;A Tour of Go&lt;/a&gt; empfand ich vor allem &lt;a href=&quot;https://gobyexample.com/&quot;&gt;Go by Example&lt;/a&gt;
als sehr hilfreich. Die offizielle Dokumentation der Sprache ist ebenfalls sehr
gut und verständlich.&lt;/p&gt;
&lt;h1 id=&quot;bücher&quot;&gt;Bücher&lt;/h1&gt;
&lt;p&gt;Der nächste Schritt war dann ein Deep Dive in Form von Abendlektüre und beinhaltete
zwei Bücher, die ich hier kurz vorstellen möchte.&lt;/p&gt;
&lt;h2 id=&quot;learning-go-an-idiomatic-approach-to-real-world-go-programming-english-edition&quot;&gt;Learning Go: An Idiomatic Approach to Real-World Go Programming (English Edition)&lt;/h2&gt;
&lt;p&gt;Vor allem, wenn man von einer anderen Sprache kommt, ist dieses Buch sehr hilfreich,
da es zeigt, wie man idiomatischen Code erstellt, der auch zu den Patterns der
Sprache passt.&lt;/p&gt;
&lt;p&gt;Zu oft ist es mir passiert, dass ich versucht habe, “pythonic” Code zu schreiben,
obwohl ich jetzt auf Go unterwegs bin, wo Dinge eben anders getan werden sollten
oder sogar müssen.&lt;/p&gt;
&lt;p&gt;Effektiv habe ich das Buch am Abend in einer Woche komplett verschlungen; es ist
meiner Ansicht nach jeden Cent wert.&lt;/p&gt;
&lt;h2 id=&quot;100-go-mistakes-and-how-to-avoid-them-english-edition&quot;&gt;100 Go Mistakes and How to Avoid Them (English Edition)&lt;/h2&gt;
&lt;p&gt;Wie schon weiter oben erwähnt: Aus Fehlern lernt man. Und der Autor dieses
Buches hat mindestens 100 Fehler sehr oft gemacht, sodass ich direkt vom Profi
lernen kann.&lt;/p&gt;
&lt;p&gt;Das Buch ist eine sehr gute Ergänzung, da man im einen Buch über idiomatischen Code
lernt, wie Code aussehen sollte, und in diesem hier, wie genau er nicht aussehen
sollte.&lt;/p&gt;
&lt;p&gt;Zugegeben: ca. ein Drittel der genannten Fehler wären mir auch ohne Kenntnisse
der Sprache aufgefallen; bei wiederum anderen wäre ich direkt in das offene Messer
gelaufen.&lt;/p&gt;
&lt;h1 id=&quot;ai--ki&quot;&gt;AI / KI&lt;/h1&gt;
&lt;p&gt;Zum Lernen habe ich auch KI-generierte Inhalte verwendet. Anfangs hatte ich
in meinem Editor (Visual Studio Code) noch Copilot aktiviert, aber zumindest
auf dem privaten PC wurde diese Erweiterung nach einigen Tests deinstalliert.&lt;/p&gt;
&lt;p&gt;Man lernt nicht oder nur sehr langsam, wenn einem die KI immer die “beste” Lösung
vorschlägt, und manchmal läuft man auch einen komplett falschen Pfad entlang.&lt;/p&gt;
&lt;p&gt;Mittlerweile verwende ich nur noch &lt;a href=&quot;https://opencode.ai/&quot;&gt;OpenCode&lt;/a&gt; und beziehe
ein paar Tokens durch &lt;a href=&quot;https://openrouter.ai&quot;&gt;OpenRouter&lt;/a&gt;. Hin und wieder hilft
mir auch Perplexity bei der Recherche.&lt;/p&gt;
&lt;p&gt;KI darf privat meinen Code nur noch reviewen oder mir in bestimmten Fällen etwas
Unterstützung geben. Meist reichen die Reviews aus, um meinen Code zu verbessern.
Agenten sollen privat keinen Code für mich schreiben. Ich möchte den Lerneffekt
mitnehmen, die Basics verstehen und in Fallen laufen. Scheitern ist Teil des Weges.&lt;/p&gt;
&lt;h1 id=&quot;fazit&quot;&gt;Fazit&lt;/h1&gt;
&lt;p&gt;Go macht mir sehr viel Spaß, und ich konnte das neue Wissen auch schon im beruflichen
Kontext umsetzen. Der Blick über den Python-Tellerrand hat mir gut getan.&lt;/p&gt;</content:encoded>
	<dc:date>2026-06-20T08:00:00+00:00</dc:date>
</item>
<item rdf:about="https://blog.mdosch.de/2026/05/22/magentatv-funktioniert-nicht-mehr-im-browser/">
	<title>Martin Dosch (Dogge): MagentaTV funktioniert nicht mehr im Browser</title>
	<link>https://blog.mdosch.de/2026/05/22/magentatv-funktioniert-nicht-mehr-im-browser/</link>
	<content:encoded>&lt;p&gt;Falls jemand vor hat sich wegen aktueller oder kommender Sportereignisse (z.B. die Weltmeisterschaften
im Eishockey und Fußball)  MagentaTV zu holen: Tut es nicht!
Zumindest nicht, wenn ihr am Rechner oder Laptop im Browser schauen wollt. Derzeit funktioniert das nicht
und die Telekom arbeitet offensichtlich nicht an Lösungen sondern schiebt die Schuld mit Aussagen in der
Art von “Es liegt an dir, bzw. deiner HW, nicht an uns!” von sich obwohl das Problem von einem Tag auf
den anderen ohne jeglichen HW-Tausch auftrat.&lt;/p&gt;
&lt;p&gt;Das Telekom-Hilfeforum ist voll von Threads über dieses Problem, exemplarisch verlinke ich &lt;a href=&quot;https://telekomhilft.telekom.de/conversations/tv/wiedergabe-wegen-hdcp-problem-nicht-m%C3%B6glich/69f071a48cd62224a6ea1d7f&quot;&gt;einen davon&lt;/a&gt;,
den die Telekom sogar als gelöst markiert hat, obwohl das Problem weiter besteht.&lt;/p&gt;</content:encoded>
	<dc:date>2026-05-22T08:07:46+00:00</dc:date>
</item>
<item rdf:about="https://blog.mdosch.de/2026/04/11/iortcw-return-to-castle-wolfenstein-auf-debian-spielen/">
	<title>Martin Dosch (Dogge): iortcw: Return to Castle Wolfenstein auf Debian spielen</title>
	<link>https://blog.mdosch.de/2026/04/11/iortcw-return-to-castle-wolfenstein-auf-debian-spielen/</link>
	<content:encoded>&lt;p&gt;Ich habe letztes Jahr bereits beschrieben, wie man &lt;a href=&quot;https://blog.mdosch.de/2025/08/13/openmohaa-medal-of-honor-allied-assault-auf-debian-spielen/&quot;&gt;Medal of Honor:
Allied Assault unter Debian installieren&lt;/a&gt; (und spielen 😉)
kann. Da mittlerweile &lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt; &lt;a href=&quot;https://www.bundesanzeiger.de/pub/publication/rIBMaUHpm3JNwYB1CtR/content/rIBMaUHpm3JNwYB1CtR/BAnz%20AT%2030.03.2026%20B6.pdf&quot;&gt;vom Index
genommen&lt;/a&gt; (pdf) wurde, möchte ich auch für dieses
Spiel die Installation beschreiben.  Diese Anleitung bezieht sich auf
&lt;a href=&quot;https://www.debian.org/releases/trixie/&quot;&gt;Debian Trixie&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;spieldaten&quot;&gt;Spieldaten&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/iortcw/iortcw/&quot;&gt;&lt;em&gt;Iortcw&lt;/em&gt;&lt;/a&gt; ist zwar frei, die Grafiken und Sounds von &lt;em&gt;RtCW&lt;/em&gt;
sind es aber nicht.  Um &lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt; spielen zu
können, benötigt man also die Daten des Originalspiels.  Ich habe das
Spiel während eines Auslandsaufenthalts bei &lt;a href=&quot;https://www.gog.com/de/game/return_to_castle_wolfenstein&quot;&gt;GOG&lt;/a&gt; gekauft.
In Deutschland wird das Spiel leider (noch?) nicht vertrieben obwohl
es nicht mehr auf dem Index ist, weil noch eine USK Alterseinstufung
fehlt.&lt;/p&gt;
&lt;h3 id=&quot;debianquellen-bearbeiten&quot;&gt;Debianquellen bearbeiten&lt;/h3&gt;
&lt;p&gt;Da man die unfreien &lt;a href=&quot;https://blog.mdosch.de/index.xml#spieldaten&quot;&gt;Spieldaten&lt;/a&gt; benötigt, kann &lt;em&gt;RtCW&lt;/em&gt;
nicht über &lt;a href=&quot;https://www.debian.org/doc/debian-policy/ch-archive.html#the-main-archive-area&quot;&gt;&lt;em&gt;Debian main&lt;/em&gt;&lt;/a&gt; bereitgestellt werden, sondern
befindet sich in &lt;a href=&quot;https://www.debian.org/doc/debian-policy/ch-archive.html#the-contrib-archive-area&quot;&gt;&lt;em&gt;contrib&lt;/em&gt;&lt;/a&gt;.  Darum muss man sicher
stellen, dass die &lt;em&gt;contrib&lt;/em&gt;-Quellen eingebunden sind.&lt;/p&gt;
&lt;p&gt;Wenn man das &lt;a href=&quot;https://wiki.debian.org/SourcesList#sources.list&quot;&gt;bisherige Format&lt;/a&gt; mit
&lt;code&gt;/etc/apt/sources.list&lt;/code&gt; nutzt, muss man sicherstellen, dass &lt;em&gt;contrib&lt;/em&gt;
enthalten ist. Die entsprechende Zeile sieht dann z.B. so aus:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;chroma&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;deb https://deb.debian.org/debian trixie main contrib non-free-firmware
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nutzt man schon das neue &lt;a href=&quot;https://wiki.debian.org/SourcesList#debian.sources&quot;&gt;&lt;em&gt;deb822&lt;/em&gt;-Format&lt;/a&gt; kann man in
die entsprechende Datei, z.B.
&lt;code&gt;/etc/apt/sources.list.d/debian.sources&lt;/code&gt;, bei &lt;code&gt;Components:&lt;/code&gt; &lt;code&gt;contrib&lt;/code&gt;
hinzufügen. Das sieht dann z.B. so aus:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;chroma&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;c1&quot;&gt;# Modernized from /etc/apt/sources.list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Types: deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;URIs: https://deb.debian.org/debian/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Suites: trixie
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Components: main contrib non-free-firmware non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&quot;benötigte-pakete-installieren&quot;&gt;Benötigte Pakete installieren&lt;/h3&gt;
&lt;p&gt;Nachdem man die &lt;a href=&quot;https://blog.mdosch.de/index.xml#debianquellen-bearbeiten&quot;&gt;Debianquellen&lt;/a&gt; bearbeitet
hat, aktualisiert man die Quellen:&lt;/p&gt;
&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;# apt update
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend kann man die benötigten Pakete installieren:&lt;/p&gt;
&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;# apt install game-data-packager rtcw lgogdownloader
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;spieldaten-paketieren&quot;&gt;Spieldaten paketieren&lt;/h3&gt;
&lt;p&gt;Die im &lt;a href=&quot;https://blog.mdosch.de/index.xml#ben%C3%B6tigte-pakete-installieren&quot;&gt;vorigen Schritt&lt;/a&gt; installierten
Pakete &lt;a href=&quot;https://packages.debian.org/trixie/game-data-packager&quot;&gt;game-data-packager&lt;/a&gt; und
&lt;a href=&quot;https://packages.debian.org/trixie/lgogdownloader&quot;&gt;lgogdownloader&lt;/a&gt; werden nun genutzt um die
Spieldaten herunterzuladen.&lt;/p&gt;
&lt;p&gt;Hat man &lt;em&gt;lgogdownloader&lt;/em&gt; bisher noch nicht genutzt, muss man sich erst
anmelden:&lt;/p&gt;
&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;$ lgogdownloader --login
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach werden Benutzername und Passwort abgefragt und man wird
eingeloggt. Danach kann mit dem &lt;em&gt;game-data-packager&lt;/em&gt; fortgefahren
werden:&lt;/p&gt;
&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;$ mkdir -p ~/Games/rtcw
$ cd ~/Games/rtcw
$ game-data-packager rtcw
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;spieldaten-installieren&quot;&gt;Spieldaten installieren&lt;/h3&gt;
&lt;p&gt;Nachdem nun die &lt;a href=&quot;https://blog.mdosch.de/index.xml#spieldaten-paketieren&quot;&gt;Spieldaten paketiert sind&lt;/a&gt;,
können diese installiert werden:&lt;/p&gt;
&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;# apt install /home/&amp;lt;USER&amp;gt;/Games/rtcw/rtcw*.deb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Der Platzhalter &lt;code&gt;&amp;lt;USER&amp;gt;&lt;/code&gt; ist natürlich durch den entsprechenden
Benutzer zu ersetzen.&lt;/p&gt;
&lt;h3 id=&quot;spielen&quot;&gt;Spielen&lt;/h3&gt;
&lt;p&gt;Nun kann man &lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt; spielen und in
Erinnerungen schwelgen, oder diese Spiele auch zum ersten Mal
genießen. Fröhliches Nazi-Ballern. 😀&lt;/p&gt;</content:encoded>
	<dc:date>2026-04-11T20:28:40+00:00</dc:date>
</item>
<item rdf:about="https://www.christoph-wickert.de/?p=1219">
	<title>Christoph Wickert (raoul): Lesbare Domain-Namen mit MyFRITZ!</title>
	<link>https://www.christoph-wickert.de/2026/03/02/lesbare-domain-namen-mit-myfritz/</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Damit FRITZ!Box-Nutzende auch von unterwegs auf ihren Router oder ihr Heimnetz zugreifen können, gibt es den Online-Dienst &lt;a class=&quot;wpel-icon-right&quot; href=&quot;https://fritz.com/pages/myfritz&quot; rel=&quot;external noopener noreferrer&quot; target=&quot;_self&quot;&gt;MyFRITZ!&lt;i class=&quot;wpel-icon dashicons-before dashicons-external&quot;&gt;&lt;/i&gt;&lt;/a&gt;, der – neben anderen nützlichen Funktionen – &lt;a class=&quot;wpel-icon-right&quot; href=&quot;https://de.wikipedia.org/wiki/Dynamisches_DNS&quot; rel=&quot;external noopener noreferrer&quot; target=&quot;_self&quot;&gt;dynamisches DNS&lt;i class=&quot;wpel-icon dashicons-before dashicons-external&quot;&gt;&lt;/i&gt;&lt;/a&gt; bietet.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Zur Nutzung muss man zuerst die &lt;a class=&quot;wpel-icon-right&quot; href=&quot;https://assets.avm.de/avmstart?target=myfritz-registration&amp;amp;language=de&quot; rel=&quot;external noopener noreferrer&quot; target=&quot;_self&quot;&gt;FRITZ!Box registrieren&lt;i class=&quot;wpel-icon dashicons-before dashicons-external&quot;&gt;&lt;/i&gt;&lt;/a&gt;. Nach der Anmeldung am &lt;a class=&quot;wpel-icon-right&quot; href=&quot;https://www.myfritz.net/&quot; rel=&quot;external noopener noreferrer&quot; target=&quot;_self&quot;&gt;Portal&lt;i class=&quot;wpel-icon dashicons-before dashicons-external&quot;&gt;&lt;/i&gt;&lt;/a&gt; sieht man die Geräteübersicht. Ein Klick auf eine FRITZ!Box leitet auf ihre Benutzeroberfläche weiter, allerdings unter einem automatisch genierten Domain-Namen im wie &lt;em&gt;kupzflvxinzjbygz.myfritz.net&lt;/em&gt;, den sich garantiert niemand merken kann. Die Möglichkeit, einen lesbaren Namen wie &lt;em&gt;beispiel.myfritz.lin&lt;/em&gt;k zu vergeben, ist leider gut versteckt.&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Klickt oben rechts auf Eure E-Mail-Adresse und dort auf &lt;strong&gt;&lt;em&gt;Einstellungen von MyFRITZ!Net&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;



&lt;li&gt;Klickt in der Navigation links unten auf &lt;em&gt;&lt;strong&gt;&lt;a class=&quot;wpel-icon-right&quot; href=&quot;https://www.myfritz.net/devices/#/settings/myfritz-addresses&quot; rel=&quot;external noopener noreferrer&quot; target=&quot;_self&quot;&gt;MyFRITZ!-Adressen verwalten&lt;i class=&quot;wpel-icon dashicons-before dashicons-external&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;



&lt;li&gt;Klickt auf das Stift-Symbol hinter der FRITZ!Box.&lt;/li&gt;



&lt;li&gt;Wählt &lt;strong&gt;&lt;em&gt;Eigene MyFRITZ!-Adresse erstellen&lt;/em&gt;&lt;/strong&gt; und vergebt einem Namen mit mindestens 8 Zahlen und/oder Buchstaben.&lt;/li&gt;



&lt;li&gt;Damit ihr nicht bis zur nächsten Zwangstrennung warten müsst, verbindet Eure FRITZ!Box neu. Geht dazu in ihrer Oberfläche auf &lt;em&gt;&lt;strong&gt;Internet → Online-Monitor → Verbindungsdetails → Neu verbinden&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Sobald die FRITZ!Box wieder online ist, findet Ihr sie in der MyFRITZ!-Geräteübersicht unter der neuen Adresse. Viel Spaß!&lt;/p&gt;</content:encoded>
	<dc:date>2026-03-02T20:33:00+00:00</dc:date>
	<dc:creator>chris</dc:creator>
</item>
<item rdf:about="https://www.datenteiler.de/?p=10579">
	<title>Christian Imhorst (immi): Waydroid mit Weston</title>
	<link>https://www.datenteiler.de/waydroid-mit-weston/</link>
	<content:encoded>&lt;p&gt;Um den Android-Emulator Waydroid unter X11 zu starten, weil z.B. Linux Mint 22.2 noch Probleme mit Wayland hat, benötigt man Weston, eine Art Wayland-Container mit Terminal. Für ein Android-System inklusive Google-Apps (GAPPS) muss man sich zudem noch eine Google-Zertifizierung besorgen. &lt;/p&gt;
&lt;p&gt;Für die Installation unter Debian/Ubuntu-Derivate wie Linux Mint werden folgende Befehle ausgeführt:&lt;/p&gt;
&lt;pre&gt;sudo apt update
sudo apt install curl ca-certificates -y
curl -s https://repo.waydro.id | sudo bash
sudo apt install waydroid weston -y
&lt;/pre&gt;
&lt;p&gt;Dann folgt die Installation von Waydroid mit den GAPPS:&lt;/p&gt;
&lt;pre&gt;sudo waydroid init -s GAPPS
&lt;/pre&gt;
&lt;p&gt;Wer kein Google möchte lässt alles nach &lt;code&gt;init&lt;/code&gt; weg und man muss auch keine Google-Zertifizierung machen.&lt;/p&gt;
&lt;p&gt;Starten Sie den Container:&lt;/p&gt;
&lt;pre&gt;sudo systemctl enable waydroid-container 
sudo systemctl start waydroid-container
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Mit Weston starten&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Waydroid wird dann in Westen gestartet, dazu &lt;code&gt;weston&lt;/code&gt; ausführen, das Terminal in Weston öffnen und folgendes eingeben:&lt;/p&gt;
&lt;pre&gt;waydroid show-full-ui
&lt;/pre&gt;
&lt;p&gt;Sollte Android, bzw LineageOS,kein Internet haben, liegt das vermutlich an Einstellungen in der Firewall. Zum Testen kann man sie einmal ausschalten, dann sollte das Android eine Internetverbindung haben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;F-Droid installieren&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Um F-Droid zu installieren wird die APK unter Linux heruntergeladen, in Downloads gespeichert und anschließend mit &lt;code&gt;waydroid&lt;/code&gt; installiert:&lt;/p&gt;
&lt;pre&gt;cd ~/Downloads
wget https://f-droid.org/F-Droid.apk
waydroid app install F-Droid.apk
&lt;/pre&gt;
&lt;p&gt;Danach ist die App sofort im LineageOS unter Waydroid verfügbar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gemeinsame Dateien&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mit &lt;code&gt;bindfs&lt;/code&gt; kann man auf das Dateisystem von Waydroid zugreifen:&lt;/p&gt;
&lt;pre&gt;sudo apt install bindfs
mkdir ~/Waydroid
sudo bindfs --mirror=$(id -u) ~/.local/share/waydroid/data/media/0 ~/Waydroid
&lt;/pre&gt;
&lt;p&gt;Nach der Installation von &lt;code&gt;bindfs&lt;/code&gt; wird der Ordner „Waydroid“ im eigenen Verzeichnis angelegt und das Dateisystem des Androids in Waydroid dahin „verbunden“. Jetzt kann man einfach Dateien über das Verzeichnis „~/Waydroid“ austauschen.&lt;/p&gt;
&lt;p&gt;Siehe auch &lt;a href=&quot;https://docs.waydro.id/faq/setting-up-a-shared-folder&quot;&gt;Setting up a shared folder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fenstergröße&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Beim Ändern der Weston-Fenstergröße startet der Android-Container mit LineageOS neu. Waydroid passt die Display-Auflösung an die Weston-Größe an, was einen Neustart der SurfaceFlinger-Komponente auslöst, die den Container/Session resetet, weil dynamisches Resizing nicht voll unterstützt wird.&lt;/p&gt;
&lt;p&gt;Für eine feste Fenstergröße kann man die Auflösung z.B. vorab in ein Start-Skript &lt;code&gt;start-waydroid&lt;/code&gt; schreiben:&lt;/p&gt;
&lt;pre&gt;#!/bin/bash

waydroid prop set persist.waydroid.width 1280
waydroid prop set persist.waydroid.height 720

weston -- sh -c '
  weston-terminal &amp;amp;
  sleep 1
  waydroid show-full-ui
'
waydroid session stop
&lt;/pre&gt;
&lt;p&gt;Das Skript setzt die Fenstergröße, startet Weston und dann Waydroid. Wird Lineage dann heruntergefahren, wird die Session gestoppt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Android ID abrufen&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nach dem Start von Android mit GAPPs beschweren sich die Google-Apps darüber, dass die Plattform nicht sicher ist. Um sie „sicher“ zu machen benötigt man eine Google-Zertifizierung. Dafür wird sichergestellt, dass Waydroid läuft (Container &amp;amp; Session) und dann im Linux-Terminal (außerhalb Weston) folgender Befehl eingegeben:&lt;/p&gt;
&lt;pre&gt;sudo waydroid shell -- sh \
-c &quot;ANDROID_RUNTIME_ROOT=/apex/com.android.runtime \
ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata \
ANDROID_I18N_ROOT=/apex/com.android.i18n \
sqlite3 /data/data/com.google.android.gsf/databases/gservices.db \
'select * from main where name = \&quot;android_id\&quot;;'&quot;
&lt;/pre&gt;
&lt;p&gt;Kopiere die Zahlen hinter &lt;code&gt;android_id|&lt;/code&gt; (z. B. 1234567890123456789).&lt;/p&gt;
&lt;p&gt;Gehe anschließend zu &lt;a href=&quot;https://www.google.com/android/uncertified/&quot;&gt;https://www.google.com/android/uncertified/&lt;/a&gt; (mit deinem Google-Konto angemeldet), füge die Android ID ein und klicke „Register“. Die Registrierung dauert 5–30 Minuten (manchmal auch länger bis zu 1-2 Stunden).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Waydroid-Daten wieder entfernen&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Falls man alte Daten von Waydroid wieder los werden will:&lt;/p&gt;
&lt;pre&gt;sudo waydroid session stop
sudo waydroid container stop
sudo rm -r /var/lib/waydroid ~/.local/share/waydroid
&lt;/pre&gt;</content:encoded>
	<dc:date>2026-01-04T19:43:10+00:00</dc:date>
	<dc:creator>Christian Imhorst</dc:creator>
</item>
<item rdf:about="https://www.datenteiler.de/?p=10534">
	<title>Christian Imhorst (immi): DOSBox-X mit Flatpak installieren und einrichten</title>
	<link>https://www.datenteiler.de/dosbox-x-mit-flatpak-installieren-und-einrichten/</link>
	<content:encoded>&lt;p&gt;Für die paar alten DOS-Games, die ich noch habe, bin ich auf DOSBox-X umgestiegen, weil ich ein paar Probleme z.B. mit der Tastatur unter DOSBox mit Debian hatte. DOSBox-X habe ich als Flatpak installiert:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;flatpak install dosbox-x&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Die Konfigurationsdatei befindet sich nach der Installation hier:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;~/.var/app/com.dosbox_x.DOSBox-X/config/dosbox-x/dosbox-x-2025.05.03.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Falls DOSBosX als System-Paket installiert wurde, kann man die Konfigurationsdatei direkt im eigenen Home-Verzeichnis unter &lt;code&gt;~/.config/dosbox-x/&lt;/code&gt; finden.&lt;/p&gt;
&lt;p&gt;Ganz am Ende der Datei wird die &lt;code&gt;autoexec&lt;/code&gt; konfiguriert, z.B. für ein deutsches Tastaturlayout &lt;code&gt;keyb gr 850&lt;/code&gt;, oder um den Einhängepunkt für Laufwerk C: zu definieren:&lt;/p&gt;
&lt;pre&gt;[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

keyb gr 850
mount c ~/dosgames
c:
&lt;/pre&gt;
&lt;p&gt;Der Ordner &lt;code&gt;~/dosgames&lt;/code&gt; muss vorher noch erstellt werden.&lt;/p&gt;
&lt;p&gt;Dabei kann man nicht nur Spiele installieren, in DOSBox-X funktioniert z.B. auch Windows 3.11 prima. Um die Maus in Windows zu steuern, kann man sie mit der Tastenkombination &lt;code&gt;&amp;lt;Strg&amp;gt;+&amp;lt;Shift&amp;gt;+&amp;lt;F10&amp;gt;&lt;/code&gt; in der DOSBox-X übernehmen und auch wieder freigeben.&lt;/p&gt;
&lt;div class=&quot;wp-caption alignnone&quot; id=&quot;attachment_10538&quot; style=&quot;width: 1034px;&quot;&gt;&lt;a href=&quot;https://www.datenteiler.de/wp-content/uploads/2025/07/Doom_Win311DOSBox-X.png&quot;&gt;&lt;img alt=&quot;Doom und Windows 3.11 in DOSBox-X&quot; class=&quot;size-large wp-image-10538&quot; height=&quot;251&quot; src=&quot;https://www.datenteiler.de/wp-content/uploads/2025/07/Doom_Win311DOSBox-X-1024x503.png&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; id=&quot;caption-attachment-10538&quot;&gt;Doom und Windows 3.11 in DOSBox-X&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Möchte man das Spiel direkt als Desktop-Anwendung aufrufen, also ohne den Umweg über die DOS-Kommandozeile, funktioniert der folgende Befehl:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dosbox-x -c &quot;mount c ~/dosgames&quot; -c &quot;c:&quot; -c &quot;cd DOOM&quot; -c &quot;DOOM.EXE&quot; -c &quot;exit&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;DOSBox-X akzeptiert mit der Option &lt;code&gt;-c&lt;/code&gt; Startparameter in der Kommandozeile, wie den Mount-Befehl oder direkte Aufrufe von Dateinamen. &lt;/p&gt;
&lt;p&gt;Mit Menulibre lässt sich jetzt komfortabel ein Desktop-Launcher (&lt;code&gt;.desktop&lt;/code&gt;-Dateien) erstellen, der diese Befehle automatisch ausführt. Dadurch entfällt dann die manuelle Eingabe im DOSBox-Prompt:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.datenteiler.de/wp-content/uploads/2025/07/Menulibre_DOOM.png&quot;&gt;&lt;img alt=&quot;Menulibre Eintrag mit DOOM als DOS-Spiel&quot; class=&quot;size-large wp-image-10575&quot; height=&quot;251&quot; src=&quot;https://www.datenteiler.de/wp-content/uploads/2025/07/Menulibre_DOOM.png&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mit dem Plus-Zeichen oben Links wird ein neuer Starter erstellt. Nachdem alles fertig eingetragen ist, inklusive passendem Bild, das selbst erstellt oder heruntergeladen wurde, wird der Starter gespeichert (das Icon rechts daneben mit dem Pfeil nach unten). Das funktioniert unter fast allen Desktop-Umgebungen wie GNOME, KDE, XFCE etc. Jetzt kann DOOM mit einem Doppelklick direkt aus DOSBox-X gestartet werden.&lt;/p&gt;</content:encoded>
	<dc:date>2025-12-29T20:59:33+00:00</dc:date>
	<dc:creator>Christian Imhorst</dc:creator>
</item>
<item rdf:about="https://maltris.org/?p=7511">
	<title>Malte Schmidt (maltris): Vom Erfolg, eine verschollene Samsung SSD-Firmware zu erhalten (MMCRE28G5MXP-0VB)</title>
	<link>https://maltris.org/vom-erfolg-eine-verschollene-samsung-ssd-firmware-zu-erhalten-mmcre28g5mxp-0vb-7511.html</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Im Beitrag “&lt;a href=&quot;https://maltris.org/vom-versuch-eine-verschollene-samsung-ssd-firmware-zu-erhalten-mmcre28g5mxp-0vb-7464.html&quot;&gt;Vom Versuch, eine verschollene Samsung SSD-Firmware zu erhalten (MMCRE28G5MXP-0VB)&lt;/a&gt;“, beschrieb ich die Schwierigkeiten, eine 10 Jahre alte Firmware für eine 10 Jahre alte und eher unbekannte Samsung SSD zu erhalten.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Während meine Versuche ausschließlich in Sackgassen endeten, meldeten sich in den Kommentaren einige freundliche Leser, darunter einer mit unbekanntem Namen, der eine koreanische Seite verlinkte, auf der sowohl die passende Anleitung zum Firmware-Update, als auch die passenden Firmware-Daten in der aktuellst verfügbaren Version auffindbar waren.&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.daum.net/coin5/17442720&quot;&gt;Originalbeitrag in koreanischer Sprache&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://translate.google.de/translate?hl=de&amp;amp;tab=wT&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fblog.daum.net%2Fcoin5%2F17442720&quot;&gt;Google-Translator Link&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;http://cfile236.uf.daum.net/attach/163EDE104B7E8D31189D40&quot;&gt;Link zur englischen Anleitung zum DSRD (Dos Samsung Re-Drive, dem Firmware-Update-Tool)&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20221121220033/http://cfile208.uf.daum.net/attach/1556E4104B7E8D3A01E9DA&quot;&gt;Link zur Firmware (web.archive.org)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Vorher-Nachher-Vergleich&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Erste Performancetests nach dem Firmware-Update zeigen relativ gute Werte. In Anbetracht dessen, dass Schreib- und Leseperformance zuvor (Firmware VBM1801Q) bei&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Schreibgeschwindigkeit sequenziell: 23.8 MB/s&lt;/li&gt;



&lt;li&gt;Lesegeschwindigkeit sequenziell: 196 MB/s&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;lagen, erreiche ich jetzt (Firmware VBM1901Q) Werte von&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Schreibgeschwindigkeit sequenziell: 194 MB/s&lt;/li&gt;



&lt;li&gt;Lesegeschwindigkeit sequenziell: 220 MB/s&lt;/li&gt;
&lt;/ul&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Ein beachtlicher Anstieg.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Firmware-Update mit DSRD und FreeDOS&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Die Anleitung Samsungs ist an einigen Stellen unverständlich und sogar fehlerhaft, da zusätzlich zum genannten Paket noch FreeDOS oder ein vergleichbares Betriebssystem benötigt wird. Daher fasse ich hier nochmal alle Schritte zum Firmware-Update bequem und korrigiert zusammen:&lt;/p&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/FD12FULL.zip
wget -O DSRD_2_1_0.zip http://cfile208.uf.daum.net/attach/1556E4104B7E8D3A01E9DA
unzip FD12FULL.zip
sudo dd if=FD12FULL.img of=/dev/sdX status=progress
mount /dev/sdX /mnt
mkdir /tmp/DSRD
unzip DSRD_2_1_0.zip -d /tmp/DSRD/
cp -R /tmp/DSRD/ /mnt/
umount /dev/sdX&lt;/pre&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Mit diesen Schritten ist der USB-Stick inklusive DSRD-Tool vorbereitet. Nun muss der Reboot erfolgen.&lt;/p&gt;



&lt;figure class=&quot;wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex&quot;&gt;
&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075202.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7514&quot; height=&quot;595&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075202-1024x595.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075236.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7515&quot; height=&quot;590&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075236-1024x590.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075300.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7516&quot; height=&quot;600&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075300-1024x600.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075328.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7517&quot; height=&quot;606&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075328-1024x606.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075344.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7518&quot; height=&quot;614&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075344-1024x614.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075355.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7519&quot; height=&quot;614&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075355-1024x614.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075403.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7520&quot; height=&quot;613&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075403-1024x613.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075421.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7521&quot; height=&quot;594&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075421-1024x594.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075446.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7522&quot; height=&quot;579&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075446-1024x579.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075516.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7523&quot; height=&quot;606&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075516-1024x606.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;a href=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075540.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7524&quot; height=&quot;641&quot; src=&quot;https://maltris.org/wp-content/uploads/2019/05/20190512_075540-1024x641.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/figure&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Das im Update-Prozess gewünschte “Power cycle” (Neustarten) der SSD habe ich hierbei nicht durchgeführt, da die SSD in meinem Notebook fest eingebaut war. Nach dem Firmware-Update und ohne die gewünschten “Power cycle” konnte ich jedoch keine Funktionsfehler feststellen.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;SMART-Daten zurückgesetzt&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Beim Firmware-Upgrade wurden jegliche SMART-Daten zurückgesetzt. Glücklicherweise konnte ich jedoch anhand der Laufzeit der zweiten SSD, ziemlich genau die Laufzeit bis zum Firmware-Update errechnen:&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Damals:&lt;br /&gt;&lt;br /&gt;SanDisk SDSSDH2128G&lt;br /&gt;Laufzeit: 12542 Stunden&lt;br /&gt;&lt;br /&gt;SAMSUNG MMCRE28G5MXP-0VB&lt;br /&gt;Laufzeit: 17619 Stunden&lt;br /&gt;&lt;br /&gt;Heute:&lt;br /&gt;&lt;br /&gt;SanDisk SDSSDH2128G&lt;br /&gt;Laufzeit: 15756 Stunden&lt;br /&gt;&lt;br /&gt;SAMSUNG MMCRE28G5MXP-0VB&lt;br /&gt;Laufzeit: 20833 Stunden&lt;br /&gt;&lt;br /&gt;(15756-12542)+17619 = 20833 Stunden&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Fazit&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Nach fast einem 3/4 Jahr habe ich die passende Firmware erhalten, konnte diese auf die alte SSD flashen und erreichte damit, von mir unerwartete, verbesserte Schreibgeschwindigkeiten.&lt;/p&gt;</content:encoded>
	<dc:date>2025-11-16T09:16:58+00:00</dc:date>
	<dc:creator>maltris</dc:creator>
</item>
<item rdf:about="https://blog.aero2k.de/posts/containermanagement/">
	<title>Thorsten Sperber (TRex): Containermanagement</title>
	<link>https://blog.aero2k.de/posts/containermanagement/</link>
	<content:encoded>&lt;div&gt;&lt;p&gt;Container sind ein tolles Tool. Man kann damit mühelos Prozesse &quot;paketieren&quot; und damit auch ein Stück weit vom Host isolieren, ohne sich über die zusätzlichen Attribute wie Sizing und Basissystem (wie bei LXC oder VMs) Gedanken machen zu müssen.&lt;/p&gt;
&lt;p&gt;Man kann sich aber auch kräftig in den Fuß schießen und einen Zoo von Containern anlegen, die man nie wieder &quot;eingefangen&quot; bekommt. Die größte mir bekannte Kritik am Konzept liegt darin, dass das Paketmanagement vom Host-System umgangen wird und so beispielsweise Sicherheitslücken im Container rumschimmeln können. Ergo wäre ein guter Management-Layer schon sehr vom Vorteil, und das ist auch meine Motivation zum Thema gewesen.&lt;/p&gt;
&lt;p&gt;Von BSD-Jails (2000) über Docker (2013) und Kubernetes (2014) sind wir nun bei Podman mit eng verzahnter systemd-Integration, auch Quadlets genannt (2023).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.aero2k.de/posts/containermanagement/&quot;&gt;Weiterlesen…&lt;/a&gt; (3 min verbleiben zum Lesen)&lt;/p&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2025-09-11T17:11:38+00:00</dc:date>
	<dc:creator>Thorsten</dc:creator>
</item>
<item rdf:about="https://blog.aero2k.de/posts/take-back-the-web/">
	<title>Thorsten Sperber (TRex): Take Back The Web</title>
	<link>https://blog.aero2k.de/posts/take-back-the-web/</link>
	<content:encoded>&lt;div&gt;&lt;h2&gt;Take Back the Web&lt;/h2&gt;
&lt;h3&gt;Warum ich mir das Web zurückhole&lt;/h3&gt;
&lt;p&gt;Das Web ist nicht für mich gemacht — es ist für Advertiser, Plattformen und manchmal für Developer gedacht, die nie über Usability nachgedacht haben. Ich nutze Userscripts (via Tampermonkey) und UserCSS (via Stylus), um:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Seiten für bessere Lesbarkeit umzufärben.&lt;/li&gt;
&lt;li&gt;Nervige Elemente zu entfernen, die vom Content ablenken.&lt;/li&gt;
&lt;li&gt;Fehlende Funktionalität nachzurüsten, wenn mir an Websites was fehlt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mit ein paar Zeilen eigenem Code kann ich das Web an meine Bedürfnisse anpassen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.aero2k.de/posts/take-back-the-web/&quot;&gt;Weiterlesen…&lt;/a&gt; (4 min verbleiben zum Lesen)&lt;/p&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2025-08-22T18:37:38+00:00</dc:date>
	<dc:creator>Thorsten</dc:creator>
</item>
<item rdf:about="https://maltris.org/?p=7777">
	<title>Malte Schmidt (maltris): Windows 7 Bluescreen mit FRITZ!WLAN Stick AC 430 wenn Verbindungen zu modernen Wifi-AP’s (FRITZ!Box 7690) aufgebaut werden</title>
	<link>https://maltris.org/windows-7-bluescreen-mit-fritzwlan-stick-ac-430-wenn-verbindungen-zu-modernen-wifi-aps-fritzbox-7690-aufgebaut-werden-7777.html</link>
	<content:encoded>&lt;p class=&quot;wp-block-paragraph&quot;&gt;Kürzlich stolperte ich beim Austausch einer alten FRITZ!Box 7490 mit einer neuesten FRITZ!Box 7690 auf ein merkwürdiges Phänomen. Um den Umstieg zu erleichtern übernahm ich SSID und Passwort des alten Gerätes und konfigurierte diese im neuen Gerät.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Als alle Client-Geräte anfingen sich neu zu verbinden stürzten plötzlich zwei Windows 7-PC’s, die zwar lange aus dem Support gelaufen sind, aber zwingend in dieser Konstellation notwendig sind, einfach mit einem Bluescreen mit Hinweis auf den Treiber “fwlanusb6.sys” ab.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;In einer solchen Situation ist gleich klar, dass es sich nicht um einen Zufall handeln kann. Besonders nicht bei zwei Systemen. Schnell war klar: Beide Systeme nutzen den gleichen älteren FRITZ!WLAN Stick AC 430.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Da eine kurze Recherche keine konklusiven Ergebnisse lieferte, probierte ich spontan ein paar neuere Wifi-Einstellungen der FRITZ!Box zu deaktivieren, darunter WPA3, bzw. den Wifi-Standard zu senken. Nichts half hier, sodass ich zunächst in Erwägung zog die AC 430 abzuschaffen und auf alternative Verbindungsmöglichkeiten (neuere Wifi-Sticks oder Ethernet) zu setzen.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Letztlich wollte ich jedoch alle einfachen Möglichkeiten nicht unausgeschöpft lassen und begab mich auf die Suche nach einem aktuelleren Windows 7-Treiber. Diesen erhält man in der Tat auch. Die FRITZ!WLAN Stick AC 430 haben einen kleinen Flash-Speicher, welcher die Treiber bereithält. In meiner Ausführung waren das jedoch Treiber aus dem Jahr 2014. Lange vor MU-MIMO, Wifi 7 und 6 GHz.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Auf der &lt;a href=&quot;https://fritz.com/service/update-news/?product=fritzwlan-usb-stick-ac-430&quot;&gt;FRITZ!-Seite findet man die aktuellsten Treiber für den FRITZ!WLAN Stick AC 430 – dort von 2018&lt;/a&gt;. Hat man diese einmal installiert, nach der manuellen Deinstallation der alten Treiber versteht sich, funktioneren die alten FRITZ!WLAN Stick AC 430 auch mit der neuesten FRITZ!Box 7690. Anwenderfreundlich ist es nicht und die Personen, welche mich hier um Hilfe baten, hätten das alleine nicht lösen können. Unklar ist auch weiterhin, was genau den Fehler auslöst. Klar ist jedoch, dass man für den FRITZ!WLAN Stick AC 430 besser auf die original mitgelieferten Treiber verzichten und stattdessen die neuesten nutzen sollte.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Die Direktlinks zu den Treibern sind aktuell hier: &lt;a href=&quot;https://download.avm.de/fritzwlan/fritzwlan-usb-stick-ac-430/deutschland/fritz.os/AVM_FRITZ!WLAN_USB_Stick_AC_430_64Bit_Build_180612.zip&quot;&gt;64bit&lt;/a&gt; &lt;a href=&quot;https://download.avm.de/fritzwlan/fritzwlan-usb-stick-ac-430/deutschland/fritz.os/AVM_FRITZ!WLAN_USB_Stick_AC_430_32Bit_Build_180612.zip&quot;&gt;32bit&lt;/a&gt;&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Viel Erfolg!&lt;/p&gt;</content:encoded>
	<dc:date>2025-06-18T12:08:09+00:00</dc:date>
	<dc:creator>maltris</dc:creator>
</item>
<item rdf:about="https://suckup.de/?p=7063">
	<title>Lars Moelleken (voku1987): .promptrc</title>
	<link>http://suckup.de/2025/06/promptrc/?pk_campaign=feed&amp;pk_kwd=promptrc&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=promptrc</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://suckup.de/2025/06/promptrc/?pk_campaign=feed&amp;amp;pk_kwd=promptrc&quot;&gt;.promptrc&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;has-text-align-center wp-block-paragraph&quot;&gt;&lt;em&gt;Steal this hints. Fork it. Adapt it to your needs. Treat it like &lt;code&gt;.dotfiles&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;I asked the LLM to analyze my own chat history based on &lt;a href=&quot;https://gist.github.com/voku/2d0c70613213ef9f11ce9f3d88a69244&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;this prompt&lt;/a&gt;.&lt;br /&gt;Here’s what it discovered – actual patterns from the way I ask.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;&lt;img alt=&quot;🕳&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f573.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;img alt=&quot;🐇&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f407.png&quot; style=&quot;height: 1em;&quot; /&gt; Follow the White Rabbit…&lt;/h2&gt;



&lt;figure class=&quot;wp-block-table&quot;&gt;&lt;table class=&quot;has-fixed-layout&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Ritual / Mechanism&lt;/th&gt;&lt;th&gt;Purpose&lt;/th&gt;&lt;th&gt;LLM Behavior Implication&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Follow the white rabbit...&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Marks a mode shift into high-context or metaphoric thinking&lt;/td&gt;&lt;td&gt;Cognitive priming for complexity&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Rest in the silent room, so that...&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Enforces pause, clears noise before action&lt;/td&gt;&lt;td&gt;Simulates deep work state&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Do it until you reach the point of self-discovery as...&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Signals reflective closure, not just output ending&lt;/td&gt;&lt;td&gt;Pattern mining becomes part of task conclusion&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Do it step by step and ask for confirmation after each...&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Makes iteration transparent and traceable&lt;/td&gt;&lt;td&gt;LLM reasons in deltas, not blobs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Be brutally honest...&lt;/code&gt;&lt;br /&gt;&lt;code&gt;Blind Spot Analysis for...&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Forces critique over compliance&lt;/td&gt;&lt;td&gt;Model becomes adversarial partner, not affirmation loop&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;&lt;img alt=&quot;🧰&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png&quot; style=&quot;height: 1em;&quot; /&gt; Dev Prompt Patterns&lt;/h2&gt;



&lt;figure class=&quot;wp-block-table is-style-regular&quot;&gt;&lt;table class=&quot;has-fixed-layout&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Prompt / Pattern&lt;/th&gt;&lt;th&gt;Why is it used?&lt;/th&gt;&lt;th&gt;When does it occur?&lt;/th&gt;&lt;th&gt;Example from usage&lt;/th&gt;&lt;th&gt;Hidden lesson / implication&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ask before output&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Prevent misalignment and irrelevant output&lt;/td&gt;&lt;td&gt;Multi-step or underspecified prompts&lt;/td&gt;&lt;td&gt;“Ask clarifying questions before answering.”&lt;/td&gt;&lt;td&gt;Intent beats guesswork.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Don’t output yet / wait for context&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Control flow across longer workflows&lt;/td&gt;&lt;td&gt;Stepwise tasks&lt;/td&gt;&lt;td&gt;“Don’t output yet. I’ll give you the next step.”&lt;/td&gt;&lt;td&gt;Turn-based prompting prevents premature commitment.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Challenge my assumptions&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Avoid echo chamber answers and surface bias&lt;/td&gt;&lt;td&gt;Design reviews, audits, strategic decisions&lt;/td&gt;&lt;td&gt;“Don’t mirror me — challenge my thinking.”&lt;/td&gt;&lt;td&gt;Truth hides behind agreement.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Be brutally honest&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Forces raw feedback without politeness&lt;/td&gt;&lt;td&gt;Refactor reviews, architecture critique&lt;/td&gt;&lt;td&gt;“Be brutally honest. Tear it apart.”&lt;/td&gt;&lt;td&gt;Feedback without fluff moves faster.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Reflect before answering&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Promotes self-checks, depth, and delayed output&lt;/td&gt;&lt;td&gt;After complex code or reasoning generation&lt;/td&gt;&lt;td&gt;“Reflect before answering. What’s missing?”&lt;/td&gt;&lt;td&gt;Thinking ≠ typing. Pause matters.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Add test cases / edge cases&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Enforces robustness and avoids happy-path traps&lt;/td&gt;&lt;td&gt;Post-codegen&lt;/td&gt;&lt;td&gt;“Add tests for e.g. null, failure, and recursion cases.”&lt;/td&gt;&lt;td&gt;Defense-first mindset, always.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Show the diff / refactor in steps&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Makes changes visible and digestible&lt;/td&gt;&lt;td&gt;All code rewrites&lt;/td&gt;&lt;td&gt;“Show the diff. Step-by-step, no jumps.”&lt;/td&gt;&lt;td&gt;Transparency over magic.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Normalize similar expressions&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Pushes abstraction and clarity&lt;/td&gt;&lt;td&gt;Meta-reviews, taxonomy creation&lt;/td&gt;&lt;td&gt;“Merge similar phrasing into one normalized pattern.”&lt;/td&gt;&lt;td&gt;Cognitive compression = clarity.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Extract as markdown / table / list&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Improves scanability, memory, and structure&lt;/td&gt;&lt;td&gt;Output formatting&lt;/td&gt;&lt;td&gt;“Return this as a markdown table.”&lt;/td&gt;&lt;td&gt;Structure improves reuse and recall.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Unname this concept&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Strips bias-inducing labels&lt;/td&gt;&lt;td&gt;Abstraction, philosophy, onboarding analysis&lt;/td&gt;&lt;td&gt;“Unname this: what is it without the buzzword?”&lt;/td&gt;&lt;td&gt;Naming narrows thinking.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Use production-ready code&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Avoids toy/demo examples&lt;/td&gt;&lt;td&gt;All codegen&lt;/td&gt;&lt;td&gt;“Make it prod-safe. Logging, errors, types.”&lt;/td&gt;&lt;td&gt;Real devs write for prod, not playgrounds.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Spot premature optimization&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Saves time and prevents complexity drift&lt;/td&gt;&lt;td&gt;Design or early performance tweaks&lt;/td&gt;&lt;td&gt;“Don’t optimize yet. Solve clearly first.”&lt;/td&gt;&lt;td&gt;Simplicity first. Always.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ask for sources / proofs&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Prevents hallucination or empty confidence&lt;/td&gt;&lt;td&gt;Any non-trivial claim&lt;/td&gt;&lt;td&gt;“Show evidence or references.”&lt;/td&gt;&lt;td&gt;Confidence ≠ correctness.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Do it again, but deeper&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Stops shallow answers in their tracks&lt;/td&gt;&lt;td&gt;Weak initial output&lt;/td&gt;&lt;td&gt;“Nope. Go deeper, explain decisions.”&lt;/td&gt;&lt;td&gt;First try ≠ final draft.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Prepare before generating&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Enforces scope, prevents rambling&lt;/td&gt;&lt;td&gt;Any open-ended task&lt;/td&gt;&lt;td&gt;“Prepare first. Don’t generate until scoped.”&lt;/td&gt;&lt;td&gt;Planning ≠ waste. It’s speed insurance.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Merge context from above&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Ensures continuity and avoids repeating yourself&lt;/td&gt;&lt;td&gt;Multi-part workflows&lt;/td&gt;&lt;td&gt;“Incorporate the context above into this next step.”&lt;/td&gt;&lt;td&gt;Memory = leverage.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;h3 class=&quot;wp-block-heading&quot;&gt;You can also combine them: &lt;/h3&gt;



&lt;p&gt;(change the keywords in the square brackets)&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Deep dive into this research, this is our base for the full solution, so follow the white rabbit until you reached the point of self-discovery as [YOUR_PROJECT_HERE].&lt;/li&gt;



&lt;li&gt;Do a blind spot analysis for [YOUR_RECOMMENDATIONS], be brutally honest, I deal with any kind of feedback and will use it for good.&lt;/li&gt;



&lt;li&gt;Fix it as requested before and show the final files here in the chat, do it step by step and ask for confirmation after each file.&lt;/li&gt;



&lt;li&gt;Do it, but rest in the silent room before you start so you can focus on the frontend style-guide I provided and work with a fresh mind.&lt;/li&gt;
&lt;/ul&gt;


&lt;img alt=&quot;&quot; height=&quot;0&quot; src=&quot;https://suckup.de/piwik/piwik.php?idsite=1&amp;amp;rec=1&amp;amp;url=http%3A%2F%2Fsuckup.de%2F2025%2F06%2Fpromptrc%2F%3Fpk_campaign%3Dfeed%26pk_kwd%3Dpromptrc&amp;amp;action_name=.promptrc&amp;amp;urlref=http%3A%2F%2Fsuckup.de%2Ffeed%2F&quot; style=&quot;border: 0; width: 0; height: 0;&quot; width=&quot;0&quot; /&gt;</content:encoded>
	<dc:date>2025-06-12T15:01:41+00:00</dc:date>
	<dc:creator>voku</dc:creator>
</item>
<item rdf:about="https://suckup.de/?p=7054">
	<title>Lars Moelleken (voku1987): My Custom GPTs – Nerd-Powered Motivation for Developers</title>
	<link>http://suckup.de/2025/06/my-custom-gpts-nerd-powered-motivation-for-developers/?pk_campaign=feed&amp;pk_kwd=my-custom-gpts-nerd-powered-motivation-for-developers&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=my-custom-gpts-nerd-powered-motivation-for-developers</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://suckup.de/2025/06/my-custom-gpts-nerd-powered-motivation-for-developers/?pk_campaign=feed&amp;amp;pk_kwd=my-custom-gpts-nerd-powered-motivation-for-developers&quot;&gt;My Custom GPTs – Nerd-Powered Motivation for Developers&lt;/a&gt;&lt;/p&gt;

&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;Over the last few months, I’ve created a collection of custom GPTs: some dealing with programming challenges with personality and humor, … some others are more useful but less funny. &lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Let’s dive in.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Practical enough to ship code.&lt;/p&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Fun enough to stop hating your legacy base.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;&lt;img alt=&quot;⚔&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/2694.png&quot; style=&quot;height: 1em;&quot; /&gt; Legacy (PHP) Code GPTs – Refactoring Fun&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Legacy code isn’t just technical — it’s emotional. These GPTs are built as archetypes, each channeling a different kind of energy. &lt;/p&gt;



&lt;figure class=&quot;wp-block-table&quot;&gt;&lt;table class=&quot;has-fixed-layout&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Theme&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Link&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Warrior &lt;img alt=&quot;⚔&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/2694.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Tactical grit—battle-tested refactoring.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-676d717a449c8191b5c07b616463be7a-legacy-code-warrior&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Ork &lt;img alt=&quot;🧌&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f9cc.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Smash spaghetti code with brute-force enthusiasm.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-676df44ad79c8191979c5e2e4e626c65-legacy-code-ork&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Spock &lt;img alt=&quot;🖖&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f596.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Calm logic, precise refactoring. Live long and debug.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-6771fbc57f78819189a27203ff11b088-legacy-code-spock&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Jedi &lt;img alt=&quot;🌐&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Minimalist wisdom, clean architecture. “Refactor, you must.”&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-676ef0f991a08191ba499a6401303b1b-legacy-code-jedi&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Son-Goku &lt;img alt=&quot;🐉&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f409.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Limitless energy. Kaio-Ken times SOLID!&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-676ef34c4b448191bbe3beb00168571c-legacy-code-son-goku&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Capsule-Corp &lt;img alt=&quot;💊&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f48a.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Inspired by Capsule Corporation’s ingenuity from Dragon Ball.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-676ef573c69c819181979ec12ec3258e-legacy-code-capsule-corp&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Wizzard &lt;img alt=&quot;🪄&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1fa84.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Magical abstraction powers. You shall not pass… bad code!&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-676df96129b08191b7b15498783a6dc5-legacy-code-wizzard&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Legacy-Code-Witch &lt;img alt=&quot;🧙‍♀️&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f9d9-200d-2640-fe0f.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Stylish, precise refactoring incantations.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-676df20836c481918a41264c15dfc62e-legacy-code-witch&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Paw Patrol &lt;img alt=&quot;🐾&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f43e.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Small dogs with SOLID coding skills. &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-68487a4867f88191a510fc449aecc1ec-paw-patrol-coding-assistant&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;Use the one that fits your mood. Or switch between them mid-session to keep your motivation from flatlining.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;&lt;img alt=&quot;🐘&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f418.png&quot; style=&quot;height: 1em;&quot; /&gt; (PHP) Coding GPTs – Clean and Typed&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;These GPTs don’t tell jokes—they ship code. They’re optimized for:&lt;/p&gt;



&lt;figure class=&quot;wp-block-table&quot;&gt;
&lt;table class=&quot;has-fixed-layout&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Link&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PHP Copilot++&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Typing enforcer + refactoring companion with nativ PHPStan and PHP-CS-Fixer Support via API.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-g1905v3LQ-php-copilot&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PHP Copilot++ (next-gen)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Aligned, brutal clarity for PHP systems, based on the &lt;a href=&quot;https://suckup.de/2025/06/from-survival-to-strategy/&quot;&gt;SYNC Framework&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-682b7926ca00819187270713ab25662a-php-copilot-next-generation&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PHP Architect&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fact-based, ASYNC-driven PHP 8.x architect eliminating inefficiencies with brutal clarity.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-6861a2471b6081918429aeb9634787f6-php-architect&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PHP #autofix&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1-click autofix for all your phpstan and CS woes.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-jkqUsrFHi-php-autofix&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Codelight&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Follows the &lt;a href=&quot;https://gist.github.com/voku/40d89d49259eaa598a903fcfeb615b9b&quot;&gt;Codelight Manifesto&lt;/a&gt;. Boringly code.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-6737e2027dbc8191a00c2a73abf7907e-codelight&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;&lt;img alt=&quot;💎&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f48e.png&quot; style=&quot;height: 1em;&quot; /&gt; Thinking Tools – Meta, Prompt Systems&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;These are not just for coding. They’re for &lt;strong&gt;thinking before you start typing.&lt;/strong&gt; Seriously.&lt;/p&gt;



&lt;figure class=&quot;wp-block-table&quot;&gt;&lt;table class=&quot;has-fixed-layout&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Link&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SyncAI&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Keeps you + AI in sync via Sync Process × Codelight Principles&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-67a90c62abd0819193a51dc4cfefa547-syncai&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sync Framework&lt;/strong&gt; v1.1 (old)&lt;/td&gt;&lt;td&gt;My first try for a coding framework, optimized for LLMs.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-68065ed814e0819186ec62ab9a2485da-sync-framework&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;MetaPrompt&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Pattern reuse for your prompts. Less yak-shaving.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-679e685cc244819190d054cd4afa4905-metaprompt&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DeepDive&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Clean your mental cache. Focused thought flow.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-67896856bca48191b54af7a8beb11127-deepdive&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Blind Spot | Prompt Generator&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Helps spot untested assumptions.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-6816771cf34c8191bf5a053958ce0c79-blind-spot-prompt-generator&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sync Framework &lt;/strong&gt;v1.2&lt;strong&gt; | Prompt Generator&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Prompt builder for dev workflows.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://chatgpt.com/g/g-6833835d060c8191afbdddbb772bcc59-coding-framework-prompt-generator&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;&lt;img alt=&quot;🧨&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e8.png&quot; style=&quot;height: 1em;&quot; /&gt; Disruption GPTs – Radical Clarity, No Filters&lt;/h2&gt;



&lt;p class=&quot;wp-block-paragraph&quot;&gt;These are not nice. They won’t coddle you. Consider yourself warned.&lt;/p&gt;



&lt;figure class=&quot;wp-block-table&quot;&gt;&lt;table class=&quot;has-fixed-layout&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Link&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;HVEB5000: Clarity Without Permission&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Cognitive demolition tool. &lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.google.com/search?q=https://chatgpt.com/g/g-6828ed7734a481918ced8f4a322c65ff-hveb5000-clarity-without-permission&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Null Tongue&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Distraction nullifier.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.google.com/search?q=https://chatgpt.com/g/g-68292365122081918cf67e6afdbfaf11-null-tongue&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;No-Bullshit ¦ Coding Assistant&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Senior dev with no time for your excuses.&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.google.com/search?q=https://chatgpt.com/g/g-67b6574d4470819185c4403b01a6345e-no-bullshit-coding-assistant&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;


&lt;img alt=&quot;&quot; height=&quot;0&quot; src=&quot;https://suckup.de/piwik/piwik.php?idsite=1&amp;amp;rec=1&amp;amp;url=http%3A%2F%2Fsuckup.de%2F2025%2F06%2Fmy-custom-gpts-nerd-powered-motivation-for-developers%2F%3Fpk_campaign%3Dfeed%26pk_kwd%3Dmy-custom-gpts-nerd-powered-motivation-for-developers&amp;amp;action_name=My%20Custom%20GPTs%20%E2%80%93%20Nerd-Powered%20Motivation%20for%20Developers&amp;amp;urlref=http%3A%2F%2Fsuckup.de%2Ffeed%2F&quot; style=&quot;border: 0; width: 0; height: 0;&quot; width=&quot;0&quot; /&gt;</content:encoded>
	<dc:date>2025-06-10T21:18:58+00:00</dc:date>
	<dc:creator>voku</dc:creator>
</item>
<item rdf:about="http://invia1200.wordpress.com/?p=8015">
	<title>(c3f2o): Radikalisierung und Strategie: Der AfD-Bundesparteitag in Riesa als Zäsur</title>
	<link>https://invia1200.wordpress.com/2025/01/15/radikalisierung-und-strategie-der-afd-bundesparteitag-in-riesa-als-zasur/</link>
	<content:encoded>Am 11. und 12. Januar fand im sächsischen Riesa der Bundesparteitag der AfD statt, begleitet von massiven Protesten. Rund 600 Delegierte wählten unter anderem Partei- und Fraktionschefin Alice Weidel zur Kanzlerkandidatin und beschlossen die Aufnahme des Begriffs „Remigration“ ins Wahlprogramm. Weidels Rede sowie zahlreiche Anträge enthielten radikale Positionen, die öffentlich als Zeichen der weiteren Radikalisierung […]</content:encoded>
	<dc:date>2025-01-15T13:23:44+00:00</dc:date>
	<dc:creator>invia1200</dc:creator>
</item>
<item rdf:about="http://invia1200.wordpress.com/?p=8012">
	<title>(c3f2o): Herr Merz: Schnauze halten!</title>
	<link>https://invia1200.wordpress.com/2025/01/09/herr-merz-schnauze-halten/</link>
	<content:encoded>Friedrich Merz will härter gegen straffallige Migrantenvorgehen. Warum? Weil ihm nichts Besseres einfällt, um in Schlagzeilen zu kommen. Der Mann, der einst „mehr Porsche wagen“ wollte, entdeckt plötzlich seine Liebe zum Polizeistaat – zumindest, wenn es um die anderen geht. Deutsche Täter? Steuerhinterzieher?Wirtschaftskriminelle? Keine Erwähnung. Aber der „kriminelle Ausländer“ – das zieht immer. Merz, der […]</content:encoded>
	<dc:date>2025-01-09T12:30:27+00:00</dc:date>
	<dc:creator>invia1200</dc:creator>
</item>
<item rdf:about="https://kupschke.eu/?p=1041">
	<title>Dominik Kupschke (bommi): Protect against Display Name Spoofing with Rspamd</title>
	<link>https://kupschke.eu/2024/09/15/protect-against-display-name-spoofing-with-rspamd/?pk_campaign=feed&amp;pk_kwd=protect-against-display-name-spoofing-with-rspamd</link>
	<content:encoded>Email security is an ever-evolving field, and one of the persistent threats is display name spoofing. This attack involves forging the display name in an email to trick recipients into thinking the message is from a trusted source. While Rspamd is a powerful tool for combating spam and improving email security, it can be fine-tuned […]&lt;img alt=&quot;&quot; height=&quot;0&quot; src=&quot;https://kupschke.eu/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;amp;rec=1&amp;amp;url=https%3A%2F%2Fkupschke.eu%2F2024%2F09%2F15%2Fprotect-against-display-name-spoofing-with-rspamd%2F%3Fpk_campaign%3Dfeed%26pk_kwd%3Dprotect-against-display-name-spoofing-with-rspamd&amp;amp;action_name=Protect%20against%20Display%20Name%20Spoofing%20with%20Rspamd&amp;amp;urlref=https%3A%2F%2Fkupschke.eu%2Ffeed%2F&quot; style=&quot;border: 0; width: 0; height: 0;&quot; width=&quot;0&quot; /&gt;</content:encoded>
	<dc:date>2024-09-15T18:08:21+00:00</dc:date>
	<dc:creator>Dominik Kupschke</dc:creator>
</item>
<item rdf:about="https://www.pc-howto.com/?p=4354">
	<title>Daniel Gestl (mcdaniels): Wiki für Linuxinteressierte und Einsteiger – wiki.techgamegeek.com</title>
	<link>https://www.pc-howto.com/wiki-fuer-linuxinteressierte-und-einsteiger-wiki-techgamegeek-com/</link>
	<content:encoded>In den letzten Wochen habe ich mich dazu entschieden, ein WIKI für Linuxinteressierte und Linuxanfänger zu bauen. Mittlerweile denke ich, dass ich die bisher eingepflegten Inhalte online stellen kann. Ich hoffe, dass ich damit dem einen oder anderen Umstiegswilligen etwas Starthilfe geben kann. Ihr könnt mir gerne hier oder auch auf Youtube eure Meinung, aber ... &lt;a class=&quot;read-more&quot; href=&quot;https://www.pc-howto.com/wiki-fuer-linuxinteressierte-und-einsteiger-wiki-techgamegeek-com/&quot; title=&quot;Wiki für Linuxinteressierte und Einsteiger – wiki.techgamegeek.com&quot;&gt;Weiterlesen&lt;/a&gt;</content:encoded>
	<dc:date>2024-08-21T17:54:19+00:00</dc:date>
	<dc:creator>Daniel</dc:creator>
</item>
<item rdf:about="https://kupschke.eu/?p=1008">
	<title>Dominik Kupschke (bommi): New Quad9 SSL Certificate – Mikrotik Devices Must Import New Root Certificate by July 29th</title>
	<link>https://kupschke.eu/2024/07/26/new-quad9-ssl-certificate-mikrotik-devices-must-import-new-root-certificate-by-july-29th/?pk_campaign=feed&amp;pk_kwd=new-quad9-ssl-certificate-mikrotik-devices-must-import-new-root-certificate-by-july-29th</link>
	<content:encoded>The DNS Provider Quad9 will change the certificates used by its „DNS over HTTPS“ service, those new certificates are signed from a different DigiCert Root CA as the one used before. For most systems and devices it will not be a problem, except for systems using Mikrotiks RouterOS. As Mikrotik RouterOS doesn’t ship a root […]&lt;img alt=&quot;&quot; height=&quot;0&quot; src=&quot;https://kupschke.eu/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;amp;rec=1&amp;amp;url=https%3A%2F%2Fkupschke.eu%2F2024%2F07%2F26%2Fnew-quad9-ssl-certificate-mikrotik-devices-must-import-new-root-certificate-by-july-29th%2F%3Fpk_campaign%3Dfeed%26pk_kwd%3Dnew-quad9-ssl-certificate-mikrotik-devices-must-import-new-root-certificate-by-july-29th&amp;amp;action_name=New%20Quad9%20SSL%20Certificate%20%26%238211%3B%20Mikrotik%20Devices%20Must%20Import%20New%20Root%20Certificate%20by%20July%2029th&amp;amp;urlref=https%3A%2F%2Fkupschke.eu%2Ffeed%2F&quot; style=&quot;border: 0; width: 0; height: 0;&quot; width=&quot;0&quot; /&gt;</content:encoded>
	<dc:date>2024-07-26T07:07:18+00:00</dc:date>
	<dc:creator>Dominik Kupschke</dc:creator>
</item>
<item rdf:about="https://www.pc-howto.com/?p=4347">
	<title>Daniel Gestl (mcdaniels): Headtracking mit einer Webcam unter Linux – Opentrack / Neuralnet-Tracker (DEB-File / DEB-Installer Opentrack)</title>
	<link>https://www.pc-howto.com/headtracking-mit-einer-webcam-unter-linux-opentrack-neuralnet-tracker-deb-file-deb-installer-opentrack/</link>
	<content:encoded>Ich habe mich in letzter Zeit, nicht zuletzt wegen Xplane 12, recht intensiv mit dem Thema Headtracking unter Linux beschäftigt. Leider ist es ja noch immer so, dass Naturalpoint (Thema TrackIR) Linux nicht berücksichtigt und somit Track IR meines Wissen nicht ohne Weiteres unter Linux in Betrieb zu nehmen ist und der „Linuxer“ deshalb eine ... &lt;a class=&quot;read-more&quot; href=&quot;https://www.pc-howto.com/headtracking-mit-einer-webcam-unter-linux-opentrack-neuralnet-tracker-deb-file-deb-installer-opentrack/&quot; title=&quot;Headtracking mit einer Webcam unter Linux – Opentrack / Neuralnet-Tracker (DEB-File / DEB-Installer Opentrack)&quot;&gt;Weiterlesen&lt;/a&gt;</content:encoded>
	<dc:date>2024-07-18T17:48:09+00:00</dc:date>
	<dc:creator>Daniel</dc:creator>
</item>
<item rdf:about="https://zefanjas.de/?p=3105">
	<title>Stephan Tetzel (zefanja): Einführung in Anki 23.10</title>
	<link>https://zefanjas.de/einfuehrung-in-anki-23-10/</link>
	<content:encoded>&lt;p&gt;Anki ist eine Karteikarten-App mit einem sehr sehr guten Algorithmus, der einem hilft, das Gelernte nicht mehr zu vergessen. Wie man &lt;a href=&quot;https://zefanjas.de/lernen-ohne-zu-vergessen-mit-anki/&quot;&gt;lernt ohne zu Vergessen&lt;/a&gt; habe ich bereits in meinem letzten Artikel kurz beschrieben. Vor kurzem habe ich den Schülern meiner Schule eine Einführung in Anki gegeben. Dazu habe ich auch einige Videos und Tutorials aufgenommen.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Anki 23.10&lt;/h2&gt;



&lt;p&gt;Vor kurzem wurde eine neue Version von Anki veröffentlicht, die mindestens zwei tolle Features enthält.&lt;/p&gt;



&lt;p&gt;Das eine ist ein neuer Algorithmus (&lt;a href=&quot;https://github.com/open-spaced-repetition/fsrs4anki/&quot;&gt;FSRS&lt;/a&gt;), der aktuell einer der &lt;a href=&quot;https://www.reddit.com/r/Anki/comments/18csuer/fsrs_is_now_the_most_accurate_spaced_repetition/&quot;&gt;besten Spaced-Repetition-Algorithmen&lt;/a&gt; ist. Im Prinzip ist dieser Algorithmus das Herzstück von Anki, da er dafür verantwortlich ist, mir genau die Karten zu zeigen, die ich am vergessen bin. Je genauer eine App diesen Zeitpunkt berechnen kann, umso länger kann ich Dinge in meinem Gedächtnis behalten, ohne das ich sie vergesse.&lt;/p&gt;



&lt;p&gt;Ein weiteres tolles Feature ist der neue Notiztyp „Bildverdeckung“, der jetzt nativ integriert wurde. Damit kann ich Teile von von Zeichnungen, Tabellen, Vorlesungsfolien etc. einfach abdecken und damit lernen. Auf die 3 wichtigsten Typen gehe ich in folgenden Video ein:&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;



&lt;figure class=&quot;wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;

&lt;/div&gt;&lt;/figure&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Einführung in Anki&lt;/h2&gt;



&lt;p&gt;Anki hat eine etwas steile Lernkurve, d.h. es dauert ein bisschen, bis man die App verstanden und durchdrungen hat. Auf der einen Seite ist sie sehr simpel aufgebaut, auf der anderen gleichzeitig sehr flexibel und erweiterbar. Daher ist es hilfreich, wenn man sich zu Beginn die ersten 5&lt;a href=&quot;https://docs.ankiweb.net/&quot;&gt; Kapitel der Dokumentation&lt;/a&gt; durchliest.&lt;br /&gt;&lt;/p&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@Anki4School&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-3118&quot; height=&quot;576&quot; src=&quot;https://zefanjas.de/wp-content/uploads/2023/12/Anki4SchoolHD-1-1024x576.png&quot; style=&quot;width: 508px; height: auto;&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;&lt;/p&gt;&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@Anki4School&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;/figure&gt;Für meine Schüler habe ich ein paar &lt;a href=&quot;https://www.youtube.com/playlist?list=PL4qiwBYCDtJS0gyY062b-SmzDefRffA-D&quot;&gt;einleitende Videos&lt;/a&gt; erstellt, die die Schritte von der Installation bis zur ersten Benutzung beschreiben. Weitere folgen noch in den nächsten Wochen und Monaten.&lt;p&gt;&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Fazit&lt;/h2&gt;



&lt;p&gt;Anki ist eine tolle App, die das Lernen sehr effektiv und effizient macht. Es liegt nicht so sehr an der App an sich, sondern eher daran, dass sie auf einer wissenschaftlich sehr gut untersuchte Lerntechnik basiert. Die &lt;a href=&quot;https://pcl.sitehost.iu.edu/rgoldsto/courses/dunloskyimprovinglearning.pdf&quot;&gt;Meta-Studie von John Dunlosky&lt;/a&gt; vergleicht verschiedene beliebte Lerntechniken und kommt ganz klar zu dem Ergebnis, dass verteiltes Wiederholen und Selbsttests die Lerntechniken sind, die den größten Effekt habe.&lt;/p&gt;



&lt;p&gt;Ich möchte jeden ermutigen, egal welchen Alters, sich einmal mit dieser App auseinanderzusetzen und den sogenannten „spacing effect“ an sich selbst zu erfahren. Lernen (fast) ohne zu vergessen ist möglich 🙂&lt;/p&gt;
&lt;img alt=&quot;&quot; height=&quot;0&quot; src=&quot;https://zefanjas.de/piwik/piwik.php?idsite=1&amp;amp;rec=1&amp;amp;url=https%3A%2F%2Fzefanjas.de%2Feinfuehrung-in-anki-23-10%2F&amp;amp;action_name=Einf%C3%BChrung+in+Anki+23.10&amp;amp;urlref=https%3A%2F%2Fzefanjas.de%2Ffeed%2F&quot; style=&quot;border: 0; width: 0; height: 0;&quot; width=&quot;0&quot; /&gt;&lt;p&gt;Der Beitrag &lt;a href=&quot;https://zefanjas.de/einfuehrung-in-anki-23-10/&quot;&gt;Einführung in Anki 23.10&lt;/a&gt; erschien zuerst auf &lt;a href=&quot;https://zefanjas.de&quot;&gt;zefanjas&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2023-12-16T07:37:23+00:00</dc:date>
	<dc:creator>zefanja</dc:creator>
</item>
<item rdf:about="https://zefanjas.de/?p=3069">
	<title>Stephan Tetzel (zefanja): Lernen ohne zu vergessen mit Anki</title>
	<link>https://zefanjas.de/lernen-ohne-zu-vergessen-mit-anki/</link>
	<content:encoded>&lt;p&gt;In den letzten Jahren habe ich mich immer wieder mit Erkenntnissen aus der Lernforschung auseinandergesetzt, um mein persönliches Lernen aber auch das Lernen an unserer &lt;a href=&quot;https://zefanjas.de/tag/schule/&quot;&gt;Schule&lt;/a&gt; stetig zu verbessern. Ein Begriff, der mir dabei immer wieder begegnete, ist „Spaced Repetition“. Was das mit „Lernen ohne zu vergessen“ und mit Anki zu tun, möchte ich in diesem Artikel kurz beschreiben.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Was ist „Spaced Repetion“?&lt;/h2&gt;



&lt;p&gt;&lt;a href=&quot;https://de.wikipedia.org/wiki/Spaced_repetition&quot;&gt;Spaced Repetition&lt;/a&gt; kann man am besten mit „zeitlich verteilte Wiederholung“ oder „verteilte Wiederholung“ übersetzen. Im Grunde geht es darum, dass ich Lerninhalte idealerweise dann wiederhole, kurz bevor ich sie vergessen habe. Wenn man Lernen als einen Kampf gegen das Vergessen bezeichnet, ist genau das wichtig: Wiederholen bevor mein Gedächtnis das Gelernte vergessen hat.&lt;/p&gt;



&lt;p&gt;Immer dann, wenn ich Gelerntes wiederhole und mich daran erinnern kann, verlängert sich die „Speicherdauer“ in meinem Gedächtnis.&lt;/p&gt;



&lt;p&gt;Wir alle kennen diesen Effekt. Wenn ich in meiner Schulzeit für einen Vokabeltest gelernt habe (meist am Tag davor 🙂 ), habe ich die meisten Vokabeln nach 3 Tagen wieder vergessen. Dass ist auch der Grund, warum ich mich nur noch an ganz wenige Französischvokabeln erinnern kann, obwohl ich 5 Jahre Sprachunterricht hatte. Hätte ich jedoch jeden Tag eine kleine Menge an Vokabeln gelernt und wiederholt, hätte ich mich wesentlich länger an sie erinnern können. Hier mal eine Grafik, die das Prinzip veranschaulicht:&lt;/p&gt;



&lt;figure class=&quot;wp-block-image size-full&quot;&gt;&lt;a href=&quot;https://zefanjas.de/wp-content/uploads/2023/10/Forgetting_curve_and_work_of_Ebbinghaus.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-3074&quot; height=&quot;668&quot; src=&quot;https://zefanjas.de/wp-content/uploads/2023/10/Forgetting_curve_and_work_of_Ebbinghaus.png&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;p&gt;Zusammenfassung: Wenn ich etwas Gelerntes im richtigen Moment wiederhole, kann ich die „Speicherdauer“ im Langzeitgedächtnis deutlich verlängern.&lt;/p&gt;



&lt;p&gt;Doch woher weiß ich, wann der richtige Zeitpunkt ist, um etwas zu wiederholen? Ich möchte ja nur die Dinge wiederholen, die ich gerade am Vergessen bin und nicht die, die ich noch weiß. Das ist eine sehr wichtige Frage. Wenn ich zu viele Dinge wiederhole (v.a. Lerninhalte, die ich noch weiß), steigt mein zeitlicher Aufwand für die Wiederholungen. Wenn ich zu wenige Lerninhalte wiederhole, steigt die Chance, dass ich Dinge vergesse und ich sie letztendlich neu lernen muss.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Anki&lt;/h2&gt;



&lt;p&gt;Genau an diesem Punkt kommt &lt;a href=&quot;http://ankiweb.net/&quot;&gt;Anki&lt;/a&gt; ins Spiel. Anki ist eine &lt;a href=&quot;https://zefanjas.de/tag/open-source/&quot;&gt;Open Source&lt;/a&gt; Karteikartensoftware, die mir die Arbeit der Berechnung der richtigen Intervalle abnimmt, sodass ich nur noch das wiederhole, was ich kurz vor dem Vergessen bin. Das genau ist es, was diese Lernmethode so effizient macht, denn nun kann ich Dinge in weniger Zeit lernen bzw. mehr in der gleichen Zeit, die ich bisher zum Lernen aufgewendet habe.&lt;/p&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://zefanjas.de/wp-content/uploads/2023/10/grafik.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-3075&quot; height=&quot;759&quot; src=&quot;https://zefanjas.de/wp-content/uploads/2023/10/grafik-1024x759.png&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;p&gt;Anki ist eine sehr mächtige und flexible Anwendung, die sich durch viele &lt;a href=&quot;https://ankiweb.net/shared/addons&quot;&gt;Erweiterungen&lt;/a&gt; anpassen lässt. Das sorgt auch dafür, dass die Lernkurve für diese App etwas steiler ist. Deshalb empfehle ich, dass man sich am besten ein paar einführende Videos anschaut.&lt;/p&gt;



&lt;p&gt;Karteikarten kann man sich entweder selbst erstellen oder nutzt eines der &lt;a href=&quot;https://ankiweb.net/shared/decks&quot;&gt;fertigen Lernpakete&lt;/a&gt;.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Lernen ohne zu vergessen – eine Utopie?&lt;/h2&gt;



&lt;p&gt;Persönlich nutze ich Anki seit ca. 1 Jahr.  Hauptsächlich lerne ich damit Vokabeln (ja, auch wieder Französisch…), &lt;a href=&quot;https://biblez.de&quot;&gt;Bibelverse / -texte&lt;/a&gt;, Markierungen / Zitate aus Büchern, die ich gelesen habe und alles, was mich sonst noch so interessiert. Ich bin total begeistert von den Ergebnissen. Ich hätte nicht gedacht, dass es so leicht ist, sich Dinge langfristig im Gedächtnis zu behalten.&lt;/p&gt;



&lt;p&gt;Wo ist der Haken? Damit das mit den Wiederholen zum richtigen Zeitpunkt auch klappt, &lt;em&gt;muss&lt;/em&gt; ich meine Wiederholungen &lt;em&gt;jeden&lt;/em&gt; Tag machen. Je nachdem wie viele Karten man lernt, können das 5 Minuten am Tag sein oder auch 2 Stunden. Der Schlüssel zum Erfolg ist die tägliche Wiederholung. Es dauert vielleicht ein paar Wochen bis man diese neue Gewohnheit in seinen Alltag integriert hat, aber man wird belohnt mit der Erfahrung, dass dieses Prinzip der verteilten Wiederholung wirklich funktioniert und unser Gedächtnis sich viele (&lt;em&gt;sehr viele) &lt;/em&gt;Dinge merken kann.&lt;/p&gt;
&lt;img alt=&quot;&quot; height=&quot;0&quot; src=&quot;https://zefanjas.de/piwik/piwik.php?idsite=1&amp;amp;rec=1&amp;amp;url=https%3A%2F%2Fzefanjas.de%2Flernen-ohne-zu-vergessen-mit-anki%2F&amp;amp;action_name=Lernen+ohne+zu+vergessen+mit+Anki&amp;amp;urlref=https%3A%2F%2Fzefanjas.de%2Ffeed%2F&quot; style=&quot;border: 0; width: 0; height: 0;&quot; width=&quot;0&quot; /&gt;&lt;p&gt;Der Beitrag &lt;a href=&quot;https://zefanjas.de/lernen-ohne-zu-vergessen-mit-anki/&quot;&gt;Lernen ohne zu vergessen mit Anki&lt;/a&gt; erschien zuerst auf &lt;a href=&quot;https://zefanjas.de&quot;&gt;zefanjas&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2023-10-09T05:00:48+00:00</dc:date>
	<dc:creator>zefanja</dc:creator>
</item>
<item rdf:about="https://vinzv.de/?p=922104003">
	<title>Vinzenz Vietzke (vinz): Mein XFCE Desktop im Juni 2017</title>
	<link>https://vinzv.de/mein-xfce-desktop-im-juni-2017/</link>
	<content:encoded>&lt;p&gt;Es wird Zeit, mal wieder meinen Desktop zu zeigen und wie ich ihn für mich angepasst habe. &lt;a href=&quot;https://smdavis.us/2017/05/05/my-xubuntu-customization-guide/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Sean hat das hier mit Xubuntu gemacht&lt;/a&gt;, ich übernehme die übersichtliche Struktur gerne.&lt;br /&gt;
Das Gerät ist ein ThinkPad x220 mit i5-2520M und 16GB RAM, einer 120GB Samsung 840 SSD, “gemoddetem” BIOS und 9-Zellen/73,3Wh Nachbauakku.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Konfiguration&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Desktop&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Distribution:&lt;/strong&gt; Debian Testing (Stretch)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desktopumgebung:&lt;/strong&gt; &lt;a href=&quot;https://xfce.org&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Xfce&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Window Manager:&lt;/strong&gt; Xfwm4&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Themes&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GTK:&lt;/strong&gt; Arc-Grey-Darker (&lt;a href=&quot;https://github.com/eti0/arc-grey-theme&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Window Manager:&lt;/strong&gt; Arc-Grey-Darker (&lt;a href=&quot;https://github.com/eti0/arc-grey-theme&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Icons:&lt;/strong&gt; Arc Limon (&lt;a href=&quot;https://github.com/eti0/arc-limon-icon-theme&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursors:&lt;/strong&gt; Adwaita&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firefox:&lt;/strong&gt; Arc-Darker (&lt;a href=&quot;https://github.com/horst3180/arc-firefox-theme&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schriften&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Standard:&lt;/strong&gt; Lato Regular 10&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Window Manager:&lt;/strong&gt; Lato Bold 10&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monospace:&lt;/strong&gt; Monospace Regular 10&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wallpaper:&lt;/strong&gt; &lt;a href=&quot;https://unsplash.com/photos/1F75STYUelc&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Incense Stick in balinese rainforest&lt;/a&gt; (CC0, &lt;a href=&quot;https://unsplash.com/@belart84&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Artem Beliaikin&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Panel Plugins&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Whisker-Menü (&lt;a href=&quot;https://gottcode.org/xfce4-whiskermenu-plugin/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Homepage&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Benachrichtigungsfläche&lt;/li&gt;
&lt;li&gt;Energieverwaltung&lt;/li&gt;
&lt;li&gt;PulseAudio Plugin&lt;/li&gt;
&lt;li&gt;Orage-Uhr&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Programme im Tray&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Audacious&lt;/li&gt;
&lt;li&gt;Gajim&lt;/li&gt;
&lt;li&gt;Liferea&lt;/li&gt;
&lt;li&gt;Nextcloud Client (&lt;a href=&quot;https://intux.de/2017/06/nextcloud-client-fuer-debian-9/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;HowTo&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Redshift&lt;/li&gt;
&lt;li&gt;Thunderbird (plus &lt;a href=&quot;https://packages.debian.org/xul-ext-firetray&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Firetray&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipps &amp;amp; Tricks&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Symbol des Whisker-Menü auf debian-emblem-white setzen (siehe Screenshot)&lt;/li&gt;
&lt;li&gt;Desktopsymbole deaktivieren&lt;/li&gt;
&lt;li&gt;Panel: Alpha auf 85% setzen&lt;/li&gt;
&lt;li&gt;Fensterknöpfe: &lt;em&gt;Knopfbeschriftungen anzeigen&lt;/em&gt; deaktivieren, &lt;em&gt;Griff anzeigen&lt;/em&gt; deaktivieren, &lt;em&gt;Flache Knöpfe&lt;/em&gt; aktivieren (siehe Screenshot)&lt;/li&gt;
&lt;li&gt;Super Key auf das Whiskermenu legen (&lt;a href=&quot;https://vinzv.de/quick-tipp-kde-plasma-5-und-die-windowstaste/&quot;&gt;ksuperkey installieren&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;In der Fensterverwaltung unter “Anordnung der Knöpfe” alle außer &lt;em&gt;Schließen&lt;/em&gt; entfernen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mehr Screenshots&lt;/strong&gt;&lt;/p&gt;

&lt;a href=&quot;https://vinzv.de/mein-xfce-desktop-im-juni-2017/bildschirmfoto_2017-06-14_00-49-56/&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;attachment-thumbnail size-thumbnail&quot; height=&quot;150&quot; src=&quot;https://vinzv.de/wp-content/uploads/Bildschirmfoto_2017-06-14_00-49-56-150x150.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://vinzv.de/mein-xfce-desktop-im-juni-2017/bildschirmfoto_2017-06-14_01-47-35/&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;attachment-thumbnail size-thumbnail&quot; height=&quot;150&quot; src=&quot;https://vinzv.de/wp-content/uploads/Bildschirmfoto_2017-06-14_01-47-35-150x150.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://vinzv.de/mein-xfce-desktop-im-juni-2017/bildschirmfoto_2017-06-14_01-35-20/&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;attachment-thumbnail size-thumbnail&quot; height=&quot;150&quot; src=&quot;https://vinzv.de/wp-content/uploads/Bildschirmfoto_2017-06-14_01-35-20-150x150.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://vinzv.de/mein-xfce-desktop-im-juni-2017/bildschirmfoto_2017-06-14_01-31-56/&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;attachment-thumbnail size-thumbnail&quot; height=&quot;150&quot; src=&quot;https://vinzv.de/wp-content/uploads/Bildschirmfoto_2017-06-14_01-31-56-150x150.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://vinzv.de/mein-xfce-desktop-im-juni-2017/bildschirmfoto_2017-06-14_01-12-40/&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;attachment-thumbnail size-thumbnail&quot; height=&quot;150&quot; src=&quot;https://vinzv.de/wp-content/uploads/Bildschirmfoto_2017-06-14_01-12-40-150x150.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://vinzv.de/mein-xfce-desktop-im-juni-2017/bildschirmfoto_2017-06-14_01-11-07/&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;attachment-thumbnail size-thumbnail&quot; height=&quot;150&quot; src=&quot;https://vinzv.de/wp-content/uploads/Bildschirmfoto_2017-06-14_01-11-07-150x150.png&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;</content:encoded>
	<dc:date>2017-06-14T00:10:23+00:00</dc:date>
	<dc:creator>vinzv</dc:creator>
</item>
<item rdf:about="http://www.fz6fazer.net/wordpress/?p=797">
	<title>Jürgen Braun (jaybe): Frankfurt Marathon</title>
	<link>http://www.fz6fazer.net/wordpress/2016/10/30/frankfurt-marathon/</link>
	<content:encoded>&lt;p&gt;Rückblick: 25.10.2015 findet der Frankfurt Marathon statt, ich sitze gespannt vom Fernseher als &lt;a href=&quot;https://de.wikipedia.org/wiki/Arne_Gabius&quot; target=&quot;_blank&quot;&gt;Arne Gabius&lt;/a&gt; zu einem &lt;a href=&quot;http://www.runnersworld.de/marathon/arne-gabius-knackt-deutschen-rekord.370844.htm&quot; target=&quot;_blank&quot;&gt;neuen deutschen Rekord&lt;/a&gt; läuft und finde es sehr interessant und spannend, zugleich aber auch verrückt und unmöglich, dies selbst einmal zu absolvieren. Einige Tage später wird der Termin für 2016 auf &lt;a href=&quot;https://www.facebook.com/&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt; veröffentlicht und ich klicke auf „interessiert mich“, einfach um den Termin nicht zu verpassen, absolut ohne den Hauch eines Gedankens daran, dort vielleicht selbst zu starten. Entsprechend verblüfft reagiere ich auf beim nächsten Lauftraining auch auf die Frage eines Trainingspartners „Und, schon angemeldet“? Ich? Nein, das traue ich mir nicht zu. Andere schon: „Komm, bei Deinem Training, ein paar lange Läufe noch zur Vorbereitung, ist das kein Problem“. Soll ich wirklich? Könnte das klappen? Warum eigentlich nicht. Am 06.12.2015 war ich dann so weit:&lt;/p&gt;
&lt;p&gt;Lieber Jürgen Braun,&lt;br /&gt;
vielen Dank für Deine Anmeldung zum Frankfurt Marathon 2016. Hier befinden sich alle wichtigen Daten und Angaben zu Deiner Anmeldung.&lt;/p&gt;
&lt;p&gt;Die Bestätigungsmail des Veranstalters war da. Es kann los gehen…&lt;/p&gt;
&lt;p&gt;Die Vorbereitung ist gut gelaufen, bei &lt;a href=&quot;http://www.lauftipps.ch/trainingsplaene/&quot; target=&quot;_blank&quot;&gt;Lauftipps.ch&lt;/a&gt; habe ich mir einen Trainingsplan erstellen lassen, an den ich mich zumindest in den letzten 7 Wochen vor dem Wettkampf zu 100% gehalten habe. Die Wochen davor fanden noch Wettkämpfe in der &lt;a href=&quot;http://www.hessischer-triathlon-verband.de/htl/htl-organisation&quot; target=&quot;_blank&quot;&gt;Hessischen Triathlon-Liga&lt;/a&gt; statt und ich war noch eine Woche im Urlaub, hier musste ein wenig improvisiert und lange Läufe durch schnelle 10km im Wettkampf werden.&lt;/p&gt;
&lt;p&gt;Nach meinen Problemen im Frühjahr mit &lt;a href=&quot;http://jaybe1966.bplaced.net/wordpress/?p=11&quot; target=&quot;_blank&quot;&gt;ISG&lt;/a&gt; und &lt;a href=&quot;http://jaybe1966.bplaced.net/wordpress/?p=20&quot; target=&quot;_blank&quot;&gt;Schienbeinkante&lt;/a&gt; achtete ich sehr auf irgendwelche Zeichen meines Körper und tatsächlich, drei Wochen vorm Wettkampf, am Ende des längsten Laufes über 33km waren sie da, Rückenschmerzen &lt;img alt=&quot;🙁&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/11/72x72/1f641.png&quot; style=&quot;height: 1em;&quot; /&gt; Wie würden wohl im Wettkampf die noch ausstehenden 9km zu bewältigen sein, lies sich der Wettkampf überhaupt erfolgreich beenden? Durch die Erfahrung aus dem Frühjahr, war eigentlich klar, dass es vermutlich das &lt;a href=&quot;http://www.runnersworld.de/gesundheit/isg-schmerzen.275696.htm&quot; target=&quot;_blank&quot;&gt;ISG bzw. die Lendenmuskulatur&lt;/a&gt; sein muss, also wurde in der verbleibenden Zeit noch mehr Wert auf Übungen zur Rumpfstabilisierung gelegt.&lt;/p&gt;
&lt;p&gt;Sonntag, 30.10.2016; Es ist so weit. Der &lt;a href=&quot;https://www.frankfurt-marathon.com/&quot; target=&quot;_blank&quot;&gt;Frankfurt Marathon&lt;/a&gt; steht an und ich stehe am Start.&lt;/p&gt;
&lt;p&gt;Es ist frisch, vielleicht 7 oder 8°, jedoch bei strahlend blauem Himmel. Ich fühle mich gut vorbereitet, habe vier Gels für die Verpflegung dabei, plane mit einer Zielzeit von 3:45:00 h, also einem Schnitt von 5:20 min/km. Dann geht es los, ich starte mit einem Laufpartner aus dem Verein, doch er hat sich wohl umentschieden und will doch schneller als die 3:45:00 ins Ziel, nach ca. 2,5 km verabschiede ich mich und lasse ihn laufen, suche mir selbst mein Wohlfühltempo, das sich bei ca. 5:10 min/km einpendelt. Ich genieße die Atmosphäre an der Strecke, die Zuschauer – einige erkenne ich, als sie meinen Namen rufen – Marina und André, Cornell, Wolfgang, Thomas, …&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;WhatsApp Image 2016-10-30 at 12.38.51&quot; class=&quot;aligncenter size-full wp-image-71&quot; height=&quot;856&quot; src=&quot;http://www.fz6fazer.net/wordpress/wp-content/uploads/2016/10/WhatsApp-Image-2016-10-30-at-12.38.51.jpeg&quot; width=&quot;627&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Bis km 30 fühlt es sich gut an, sehr gut sogar, ich muss mich bremsen um nicht schneller zu werden, ich brauche die Kraft noch am Ende. Dann fängt es an, etwas zäher zu werden, bei km 35 stehen meine Frau und meine beiden Töchter, Ihre Rufe spornen mich an, noch 7km, ich versuche schneller zu werden, muss den Versuch aber aufgeben, noch 6km, noch 5km, ich hangle mich von km-Schild zu km-Schild, ab wann soll ich alles geben, sind 3:40:00 noch möglich? Plötzlich kommt Frank auf die Strecke gelaufen „Jürgen, Du hast es gleich geschafft. Du siehst etwas angestrengt aus, bist Du etwa gelaufen?“ :-D, spornt mich nochmals an und wünscht mir viel Erfolg. Ich beschleunige nochmals etwas und gebe alles was geht. Dann der Einlauf in die Festhalle, die Musik, die vielen Menschen, die Lichter, ich krame das &lt;a class=&quot;broken_link&quot; href=&quot;http://meinerstermarathon.laufen.de/&quot; target=&quot;_blank&quot;&gt;#meinerstermarathon&lt;/a&gt; Band aus der Tasche, recke es in die Höhe und überquere die Ziellinie. GESCHAFFT!&lt;/p&gt;
&lt;p&gt;Ich bin völlig außer Atem, langsam bewege ich mich in den Verpflegungsbereich, dehne Oberschenkel und Waden. Dann die Finisher-Medallie, 42,195 km in einer Zeit von 3:41:10. Ich bin sehr zufrieden, die Zielzeit unterboten, komplett durchgelaufen ohne Gehpausen (außer beim Trinken) und keine Schmerzen in den Gelenken oder der Muskulatur, auch der Rücken hat problemlos mitgemacht.&lt;/p&gt;
&lt;p&gt;Im Verpflegungsbereich dann ein paar Becher Iso-Getränke, ein paar Apfelstückchen gegessen, etwas Mohnkuchen, alkoholfreies Weizenbier, mit den Vereinskollegen getroffen und abgeklatscht, dann zur Familie die mich schon freudig und stolz erwarten. Auf dem Weg zur S-Bahn merke ich schon, dass das Gehen etwas schwer fällt, Treppen steigen unangenehm ist und das Aufstehen nach dem Sitzen etwas länger dauert als sonst. Aber wie lautet der Spruch:&lt;/p&gt;
&lt;p&gt;„Der Schmerz vergeht, der Stolz bleibt“&lt;/p&gt;
&lt;div class=&quot;wb_fb_comment&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2016-10-30T14:45:38+00:00</dc:date>
	<dc:creator>jaybe</dc:creator>
</item>
<item rdf:about="https://curius.de/blog/13-betriebssysteme/desktop/open-source/659-centos-mit-unklarem-supportstatus">
	<title>Gerrit Kruse (MrGerardCruiz): CentOS mit unklarem Supportstatus</title>
	<link>https://curius.de/blog/13-betriebssysteme/desktop/open-source/659-centos-mit-unklarem-supportstatus</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;https://curius.de/images/header/werkzeuge_header.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;LTS Distributionen sind für mich das Maß der Dinge. Lange Produktlaufzeiten, wenig Wartungsaufwand und hohe Funktions- und Laufzeitstabilität sind nicht nur im Servereinsatz wichtig. Trotz hunderter Distributionen gibt es nur wenige LTS-Varianten (siehe: &lt;a href=&quot;https://curius.de/betriebssysteme/linux&quot;&gt;Linux - Eine sichere Basis&lt;/a&gt;). Mit CentOS steht hier ein weiteres Projekt vor dem Ausfall.&lt;/p&gt;

&lt;p&gt;Natürlich sind Arch, Manjaro, Tumbleweed und wie sie alle heißen tolle Projekte und für den individuellen Desktopeinsatz gut geeignet. Ich glaube auch gerne, dass viele nie oder nur extrem selten Probleme bei Updates haben. Sie taugen aber kaum für den wartungsarmen Masseneinsatz, wo der Anwender nicht selbst die Administration übernehmen kann oder will.&lt;/p&gt;
&lt;p&gt;Es braucht diese ständigen Updates eigentlich auch nicht. Linux auf dem Desktop ist im Wartungsmodus (siehe auch: &lt;a href=&quot;https://curius.de/blog/13-betriebssysteme/desktop/open-source/626-kein-ubuntu-20-04-test&quot;&gt;Kein Ubuntu 20.04 Test&lt;/a&gt;). Ob ich nun GNOME Shell 3.32 oder 3.28 verwende macht weder funktional, noch von der Stabilität einen Unterschied. Das gleiche gilt für Plasma, LibreOffice und viele weitere Projekte. Relevant sind über eine lange Laufzeit lediglich neue Treiber für neue Hardware (entweder über massive Kernel-Modifikation durch den Distributor oder neue Kernel-Versionen) und neue Browser-Versionen.&lt;/p&gt;
&lt;p&gt;Ich habe deshalb - sofern der Anwender mit GNOME klar kam - CentOS auch für den Desktop immer gemocht. 10 Jahre Ruhe am System sind einfach eine Hausnummer. Im Serverbereich dürfte CentOS neben Ubuntu LTS und Debian ebenfalls für viele eine maßgebliche Rolle spielen.&lt;/p&gt;
&lt;p&gt;Wie Michael Kofler &lt;a href=&quot;https://kofler.info/centos-8-wertlose-langzeitunterstuetzung/&quot;&gt;in seinem Blog&lt;/a&gt; aber zu recht thematisiert fällt CentOS 8 inzwischen für den Produktiveinsatz eigentlich aus. 71 und 48 Tage ohne Updates sind indiskutabel. Das Projekt scheint hier leider auch nicht willens oder fähig etwas zu ändern.&lt;/p&gt;
&lt;p&gt;Im LTS Bereich wird es jetzt eng. Die sehr lange Supportdauern von 10 Jahren bietet nun nur noch SLED gegen eine - preislich allerdings vollkommen akzeptable - Subscription. Wer mit circa 3-5 Jahren leben kann hat noch Debian, openSUSE Leap und Ubuntu LTS zur Auswahl. Viel ist das nicht mehr. Gegebenenfalls muss man sich wirklich mit Oracle Linux beschäftigen, auch wenn sich dabei alle Nackenhaare aufstellen.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;Bilder: &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;Einleitungsbild und Beitragsbild von von &lt;a href=&quot;https://pixabay.com/users/mohamed_hassan-5229782/&quot;&gt;mohamed Hassan&lt;/a&gt; via &lt;a href=&quot;https://pixabay.com&quot;&gt;pixabay&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&amp;quot;&quot; height=&quot;1&quot; src=&quot;https://vg08.met.vgwort.de/na/a0da5be90a644eeba11e19e5a4fcf123&quot; width=&quot;1&quot; /&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2020-06-20T11:27:32+00:00</dc:date>
	<dc:creator>Gerrit</dc:creator>
</item>
<item rdf:about="https://www.schiessle.org/articles/2017/07/09/welcome-to-my-new-homepage/">
	<title>Bjoern Schiessle (BeS): Welcome to my new Homepage</title>
	<link>https://www.schiessle.org/articles/2017/07/09/welcome-to-my-new-homepage/</link>
	<content:encoded>&lt;p&gt;Finally I moved my homepage a a complete static page powered by Hugo.
Here I want to document some challenges I faced during the transition
and how I solved them.&lt;/p&gt;

&lt;h2 id=&quot;basic-setup&quot;&gt;Basic setup&lt;/h2&gt;

&lt;p&gt;As already said I use Hugo to generate the static sites. My theme is
based on &lt;a href=&quot;https://github.com/nurlansu/hugo-sustain&quot;&gt;Sustain&lt;/a&gt;.
I did some changes and uploaded my version to
&lt;a href=&quot;https://gitlab.com/BeS/hugo-sustain-ng&quot;&gt;GitLab&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I want to have all dependencies like fonts and JavaScript libraries
locally, so this was one of the largest changes to the original theme.
Further I added a easy way to add some share buttons to a blog post,
like you can see at the end of this article. The theme also contains
a nice and easy way to add presentations or general slide shows to
the webpage, some examples can be seen &lt;a href=&quot;https://www.schiessle.org/tags/slides/&quot;&gt;here&lt;/a&gt;.
The theme contains a example site which shows all this features.&lt;/p&gt;

&lt;h2 id=&quot;comments&quot;&gt;Comments&lt;/h2&gt;

&lt;p&gt;This was one of the biggest challenges. I had some quite good
discussion on my old blog powered by Wordpress so I don’t want to lose
this feature completely. There are some solutions for static pages but
non of these are satisfying. For example &lt;a href=&quot;https://staticman.net/&quot;&gt;Staticman&lt;/a&gt;
looks really promising. Sadly it only works with GitHub. Please let me
know if you know something similar which doesn’t depend on GitHub.&lt;/p&gt;

&lt;p&gt;For now I decided to do two things. By default I add a short text at
the end of each article to tell people to send me a e-mail if they
want to share or discuss their view on the topic. Additionally I can
add to the meta data of each posts a link to a Friendica
post. In this case the link will be added at the end of the article,
inviting people to discuss the topic on this free, decentralised and
federated network. I have chosen Friendica because it allows users to
interact with my blog posts not only with a Friendica
account but also with a Diaspora, GNU Social, Mastodon or Hubzilla
account. If you have a account on one of these networks and want to get
updates about new blog posts in order to participate in conversations around it, follow
&lt;a href=&quot;https://soc.schiessle.org/profile/blog/?tab=profile&quot;&gt;this
Friendica account&lt;/a&gt;. I also created a &lt;a href=&quot;https://www.schiessle.org/fediverse&quot;&gt;more detailed description&lt;/a&gt;
for people new to the world of free social networking.&lt;/p&gt;

&lt;h2 id=&quot;deployment&quot;&gt;Deployment&lt;/h2&gt;

&lt;p&gt;After all the questions above where answered and a first version of the new
webpage was in place, I had to find a easy way to deploy it. I host the
source code of my homepage on GitLab which has a nicely integrated CI
service which can be used to deploy the webpage on any server.&lt;/p&gt;

&lt;p&gt;Therefore we need to add a CI script called &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; to the
root of the repository. This script needs to contain following (please
adjust the paths):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;image: publysher/hugo

before_script:
  - apt-get update
  - apt-get --yes --force-yes install git ssh rsync
  - git submodule update --init --recursive

pages:
  script:
  - hugo
  - mkdir &quot;${HOME}/.ssh&quot;
  - echo &quot;${SSH_HOST_KEY}&quot; &amp;gt; &quot;${HOME}/.ssh/known_hosts&quot;
  - echo &quot;${SSH_PRIVATE_KEY}&quot; &amp;gt; &quot;${HOME}/.ssh/id_rsa&quot;
  - chmod 700 &quot;${HOME}/.ssh/id_rsa&quot;
  - rsync -hrvz --delete --exclude=_ public/ schiesbn@schiessle.org:/home/schiesbn/websites/schiessle.org/htdocs/
  artifacts:
    paths:
    - public
  only:
  - master
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We need to create a ssh key-pair to deploy the webpage. For security
reasons it is highly recommend to create a ssh key used only for the
deployment.&lt;/p&gt;

&lt;p&gt;The variables &lt;code&gt;SSH_HOST_KEY&lt;/code&gt; and &lt;code&gt;SSH_PRIVATE_KEY&lt;/code&gt; need to be set at
GitLab in the CI settings. &lt;code&gt;SSH_PRIVATE_KEY&lt;/code&gt; contains the private ssh
key which is located in the ~/.ssh directory.&lt;/p&gt;

&lt;p&gt;To get the right value for &lt;code&gt;SSH_HOST_KEY&lt;/code&gt;, we run &lt;code&gt;ssh-keyscan
&amp;lt;our-webpage-host&amp;gt;&lt;/code&gt;. Once we executed that command, we should
see something similar to &lt;code&gt;schiessle.org ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAACAQCtwsSpeNV...&lt;/code&gt;.  Let’s copy this to the
&lt;code&gt;SSH_HOST_KEY&lt;/code&gt; value in our GitLab settings.&lt;/p&gt;

&lt;p&gt;Finally we need to copy the public ssh key to the .ssh/authorized_keys
file on the web-server to allow GitLab to access it.&lt;/p&gt;

&lt;p&gt;Now we are already done. The next time we push some changes to the
Github repository GitLab will build the page and sync it to the
web-server.&lt;/p&gt;

&lt;p&gt;Using the private key stored in the GitLab settings allows everyone
with access to the key to login to our web-server. Something we don’t
want. Therefore I recommend to limit the ssh key to only this one
rsync command from the .gitlab-ci.yml file. In order to do this, we
need to find the exact command send to the web-server by adding
&lt;code&gt;-e'ssh -v'&lt;/code&gt; to the rsync command.&lt;/p&gt;

&lt;p&gt;Executing the rsync command with the additional option should result
in something like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;debug1: Sending command: rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;we copy this command to create following .ssh/authorized_keys entry:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;command=&quot;rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/&quot;,no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Sf/PDty0d0SQPg9b+Duc18RxPGaBKMzlKR0t1Jz+0eMhTkXRDlBMrrkMIdXJFfJTcofh2nyklp9akUnKA4mRBVH6yWHI+j0aDIf5sSC5/iHutXyGZrLih/oMJdkPbzN2+6fs2iTQfI/Y6fYjbMZ+drmTVnQFxWN8D+9qTl49BmfZk6yA1Q2ECIljpcPTld7206+uaLyLDjtYgm90cSivrBTsC4jlkkwwYnCZo+mYK4mwI3On1thV96AYDgnOqCn3Ay9xiemp7jYmMT99JhKISSS2WNQt2p4fVxwJIa6gWuZsgvquP10688aN3a222EfMe25RN+x0+RoRpSW3zdBd
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now it is no longer possible to use the private key, stored at GitLab
to login to the web-server or to perform any other command than this
specific rsync command.&lt;/p&gt;

&lt;h2 id=&quot;interesting-observation&quot;&gt;Interesting observation&lt;/h2&gt;

&lt;p&gt;I run this static webpage now for a few weeks. During this weeks I got quite some
email from people interested in some topic I write about in my blog.
This are not new blog articles, but posts which where already online for
quite some time. Somehow it looks like more people find this articles
after the transition to a static site. Maybe search engines rate the
static site higher than the old Wordpress page? I don’t know, maybe it is
just a coincidence… but interesting.&lt;/p&gt;</content:encoded>
	<dc:date>2017-07-09T09:04:22+00:00</dc:date>
	<dc:creator>Björn Schießle</dc:creator>
</item>
<item rdf:about="https://curius.de/blog/14-dienste/276-datenabfluss-bei-facebook-eine-nachbetrachtung">
	<title>Gerrit Kruse (MrGerardCruiz): Datenabfluss bei Facebook - Eine Nachbetrachtung</title>
	<link>https://curius.de/blog/14-dienste/276-datenabfluss-bei-facebook-eine-nachbetrachtung</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;https://curius.de/images/header/social_header.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;em&gt;Bild von geralt via pixabay / Lizenz: CC0 Creative Commons&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Facebook hatte jüngst mit schlechter Presse zu kämpfen. Länder- und medienübergreifend artikulierte sich massive Kritik an der Praxis wie dort mit Daten umgegangen wird. Manche Journalisten &lt;a href=&quot;http://www.sueddeutsche.de/digital/datenmissbrauch-was-ist-eigentlich-gerade-bei-facebook-los-1.3932349&quot;&gt;sehen darin die größte Krise&lt;/a&gt; in der nicht mehr ganz so jungen Geschichte des sozialen Netzwerks. Die Aktienmärkte sahen das vergangene Woche nicht unähnlich wenn man sich die Entwicklung des Kurses von Facebook anschaut.&lt;/p&gt;

&lt;p&gt;Viele Datenschützer konnten sich eine gewisse Häme nicht verkneifen. Gehört umfassende Kritik an Facebook doch zum Standard-Repertoire von datenschutzbewussten Menschen (und solchen, die sich dafür halten). Die empfohlene Lösung war dann natürlich wie erwartet radikal. Verlasst endlich Facebook schallte es aus allen Kommentarspalten und Blogs.&lt;/p&gt;
&lt;p&gt;In der Printausgabe der Süddeutschen Zeitung konnte man dazu vergangene Woche einen schönen Vergleich lesen. Sinngemäß ging es darum, dass die Aufforderung Facebook zu verlassen, weil man mit der Datenhandhabung moderner IT-Unternehmen unzufrieden ist, genau so erfolgversprechend ist wie das Essen einzustellen, weil man mit der Lebensmittelindustrie unzufrieden ist. Konsequent aber letztlich aussichtslos weil es an der Lebenswirklichkeit vorbei geht.&lt;/p&gt;
&lt;p&gt;Genau dies beschreibt den Einfluss der Datenschützer auf das Verhalten der Masse. Radikal, konsequent und weitestgehend ignoriert, da wirklichkeitsfern. Bei diesem Thema und bei vielen anderen auch.&lt;/p&gt;
&lt;p&gt;Es ist keineswegs so, dass Facebook das Verlangen für sein Produkt erst bei den Menschen wecken musste. Etwas was man den Silicon Valley Firmen gerne nachsagt. In einer hochgradig mobilen Gesellschaft bedient Facebook einfach ein Bedürfnis. Es vereinfacht soziale Vernetzung über große Zeiträume und Distanzen einfach enorm, viele Menschen leben halt nicht mehr in einer Welt, in der man alle Freunde im Vereinslokal trifft. Ein Verlassen des sozialen Netzwerks ist daher für viele Anwender mit einem nicht unerheblichen sozialen Einschnitt verbunden. Das betrifft nicht nur die Selbstdarsteller auf der Timeline, sondern eben auch die Gruppen und den Messenger.&lt;/p&gt;
&lt;p&gt;Außerdem ist ein großer Trugschluss, dass man Facebook einfach den Rücken kehren kann. Man muss auch alle zugehörigen Dienste, am bekanntesten darunter sind sicher WhatsApp und Instagram, verlassen und trotzdem kann Facebook über die Vernetzung mit unzähligen Internetseiten - der Like-Button macht es möglich - noch ein Profil erstellen.&lt;/p&gt;
&lt;p&gt;Letztlich übt man sich zwar in digitaler Selbstverstümmelung, erzielt aber nicht mal den erwünschten Effekt.&lt;/p&gt;
&lt;p&gt;Zielführender sind da sicher Maßnahmen wie der kürzlich vorgestellte &lt;a href=&quot;https://blog.mozilla.org/firefox/facebook-container-extension/&quot;&gt;Mozilla Facebook Container&lt;/a&gt;. Er ermöglicht Teilhabe aber kontrolliert ein bisschen besser, was Facebook außerhalb des Netzwerks noch über einen sammeln kann. Viele weitere Maßnahmen wie ein Mehr-Browser-Konzept, sinnvoll ausgewählte Addons und reflektierte Handhabung des Netzwerks können es Facebook erschweren unerwünscht Daten zu sammeln.&lt;/p&gt;
&lt;p&gt;Keine dieser Maßnahmen hätte den Datenabfluss von Facebook an Dritte verhindern können. Es ist auch nicht die Aufgabe des Bürgers paranoid seine Aktivitäten gegenüber den IT-Giganten zu verschleiern, sondern die Politik muss die Daten der Bürger entschieden gegen Missbrauch schützen und Verstöße hart bestrafen. Dafür kann der Bürger an der Wahlurne stimmen. Einfach mal bei der Wahl den Digitalthemen mehr Priorität einräumen, anstatt in den Kommentarspalten gegen Facebook zu wettern. Die deutsche Regierung ist nämlich &lt;a href=&quot;https://www.golem.de/news/datenschutzreform-eu-kommission-lehnt-deutschen-sonderweg-ab-1704-127430.html&quot;&gt;keineswegs so rigoros&lt;/a&gt; im Datenschutz, wie sie sich jetzt medial gibt.&lt;/p&gt;</content:encoded>
	<dc:date>2018-04-08T13:05:19+00:00</dc:date>
	<dc:creator>Cruiz</dc:creator>
</item>
<item rdf:about="https://www.schiessle.org/articles/2009/02/01/an-awesome-event-is-over-kde-42-release-party-and-fellowship-meeting-in-stuttgart/">
	<title>Bjoern Schiessle (BeS): An awesome event is over: KDE 4.2 Release Party and Fellowship Meeting at Stuttgart</title>
	<link>https://www.schiessle.org/articles/2009/02/01/an-awesome-event-is-over-kde-42-release-party-and-fellowship-meeting-in-stuttgart/</link>
	<content:encoded>&lt;p&gt;At Friday, 30.Jan.09 we had a joint event between &lt;a href=&quot;http://www.kde.org&quot;&gt;KDE&lt;/a&gt; and the &lt;a href=&quot;http://fellowship.fsfe.org&quot;&gt;Fellowship&lt;/a&gt; of the &lt;a href=&quot;http://www.fsfeurope.org&quot;&gt;Free Software Foundation Europe (FSFE)&lt;/a&gt; and it was simply awesome! Beside a lot of KDE and FSFE people we had a lot of visitors and at the end we were about 40 people! All interested in KDE 4.2 and &lt;a href=&quot;http://www.fsfeurope.org/documents/freesoftware.en.html&quot;&gt;Free Software&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://wiki.fsfe.org/FellowshipGroup/Stuttgart/KDE_4_2_Release_Party?action=AttachFile&amp;amp;do=view&amp;amp;target=img_0025.jpg&quot;&gt;&lt;img class=&quot;article-image&quot; src=&quot;https://www.schiessle.org/img/articles/fsfe-meeting-stuttgart-2009-1.jpg&quot; style=&quot;float: left; width: 300px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the beginning Frederik started with an introduction and showed all the new and cool things in KDE 4.2. After that i gave a talk about the work of FSFE, especially in 2008, explained the role of the Fellowship for FSFE and highlighted some cool activities from our Fellows. My slides can be found &lt;a href=&quot;http://www.schiessle.org/data/2009-01-30-fellowsip/fsfe+fellowship.pdf&quot;&gt;here&lt;/a&gt; (German). I think i could attract some people and would be really happy to see some new faces at our next Fellowship meeting (probably somewhen in March). If you don’t want to miss it, subscribe to our &lt;a href=&quot;https://lists.fsfe.org/mailman/listinfo/sueddeutschland&quot;&gt;mailing list for South Germany&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://wiki.fsfe.org/FellowshipGroup/Stuttgart/KDE_4_2_Release_Party?action=AttachFile&amp;amp;do=view&amp;amp;target=img_0033.jpg&quot;&gt;&lt;img class=&quot;article-image&quot; src=&quot;https://www.schiessle.org/img/articles/fsfe-meeting-stuttgart-2009-2.jpg&quot; style=&quot;float: right; width: 300px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After my talk we made a small break and than Frank continued with a very interesting talk about the KDE community and how to get involved as a developer, writer, artist or user. Last but not least Sven talked about the new version of Amarok and what we can expect from the new release.&lt;/p&gt;

&lt;p&gt;This was the official part. Now the party started and we had a lot of fun and many interesting discussions between KDE developers and users, FSFE Fellows and all the other people who joined us at this evening. We also discussed some possible activities for the &lt;a href=&quot;https://wiki.fsfe.org/FellowshipGroup/Stuttgart/&quot;&gt;Fellowship Group Stuttgart&lt;/a&gt;. Some Fellows seems to be quite interested in the topic “Free Software in school and education”. I also think that this is a really important topic. Remember, the pupils from today are the decision makers from tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://wiki.fsfe.org/FellowshipGroup/Stuttgart/KDE_4_2_Release_Party?action=AttachFile&amp;amp;do=view&amp;amp;target=img_0035.jpg&quot;&gt;&lt;img class=&quot;article-image&quot; src=&quot;https://www.schiessle.org/img/articles/fsfe-meeting-stuttgart-2009-3.jpg&quot; style=&quot;float: left; width: 300px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As it becomes later a small group of people survived. One of them was Martin Konold, a KDE Developer from the very first days of KDE. He told us a lot of interesting and funny stories about the beginning of KDE and the development of the Free Software desktop.&lt;/p&gt;

&lt;p&gt;At 2:30 at night a great event was over. I really want to thank &lt;a href=&quot;http://www.kdedevelopers.org/blog/4326&quot;&gt;Frederik&lt;/a&gt; for his great help in organising this event and all the other KDE people who helped to make this event that awesome! It was a lot of fun and a great cooperation between KDE and FSFE people! Looking forward for the next opportunity to organise such a great event!&lt;/p&gt;

&lt;p&gt;More pictures can be found &lt;a href=&quot;https://wiki.fsfe.org/FellowshipGroup/Stuttgart/KDE_4_2_Release_Party&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2009-02-01T16:30:33+00:00</dc:date>
	<dc:creator>Björn Schießle</dc:creator>
</item>
<item rdf:about="http://marmaro.de/lue/txt/2018-07-05.txt">
	<title>(Meillo): 2018-07-05</title>
	<link>http://marmaro.de/lue/txt/2018-07-05.txt</link>
	<content:encoded>&lt;pre&gt;2018-07-05



A new ssh login attack wave after the previous one had ended ...




http://marmaro.de/lue/        markus schnalke &amp;lt;meillo@marmaro.de&amp;gt;
&lt;/pre&gt;</content:encoded>
	<dc:date>2018-07-04T22:00:00+00:00</dc:date>
</item>
<item rdf:about="https://malte-kiefer.de/blog/Threema-Lizenzen/">
	<title>Malte Kiefer (beLI3VeR): Threema Lizenzen zu verschenken</title>
	<link>https://malte-kiefer.de/blog/Threema-Lizenzen/</link>
	<content:encoded>&lt;p&gt;
	&lt;/p&gt;&lt;p&gt;Wie in den letzten Jahren werde ich auch dieses Jahr wieder Threema Android Lizenzen verschenken.
Dieses Jahr werde ich &lt;strong&gt;5&lt;/strong&gt; Lizenzen verschenken. Dazu erhalten die Gewinner oder Glücklichen von mir einen Lzenzschlüssel, mit dem sie auf der Webseite von &lt;a href=&quot;https://threema.ch&quot;&gt;Threema&lt;/a&gt; dann den Android Client nach Eingabe des Lizenzschlüssel herunterladen können.&lt;/p&gt;
&lt;p&gt;Es ist nicht möglich, damit Threema vom PlayStore sondern nur aus dem Threema Store herunterzuladen.&lt;/p&gt;
&lt;h3&gt;Teilnahme&lt;/h3&gt;
&lt;p&gt;Die Teilnahme ist ganz einfach.
Die ersten 5 Nutzer die mich via XMPP / Jabber anschreiben wird (pr3ach3r@trashserver.net) und die folgenden Fragen richtig beantworten kann:&lt;/p&gt;
&lt;p&gt;1.) Aus welchem Land kommt Threema?
2.) Was bedeuten die 3 grünen Punkte bei einem Threema Kontakt?
3.) Was ist der Threema Safe?&lt;/p&gt;
&lt;p&gt;Ich freue mich auf eure Einsendungen. Ich möchte festhalten ich stehe in keine Zusammenhang mit Threema. Ich kaufe die Lizenzen zum vollen Preis und dieses soll auch keine Werbaktion für mich oder Threema sein. Ich will nur einen kleinen Teil zu mehr Datenschutz und Sicherheit beitragen.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2019-12-07T00:00:00+00:00</dc:date>
	<dc:creator>Malte Kiefer</dc:creator>
</item>
<item rdf:about="http://marmaro.de/lue/txt/2018-03-08.txt">
	<title>(Meillo): 2018-03-08</title>
	<link>http://marmaro.de/lue/txt/2018-03-08.txt</link>
	<content:encoded>&lt;pre&gt;2018-03-08



If you want PCRE on the command line but your  grep(1)  does  not
offer  `-P'  (*not* offering it is what it *should* do!), you can
use this one:

     perlgrep() {
             perl -e 'my $re = shift; print grep { /$re/ } &amp;lt;&amp;gt;;' &quot;$@&quot;
     }

[0]



Discovered  some interesting facts about the GIF format.  [1] You
*are* able to use more than 256 colors, just not within one block
...  but  you can use multiple blocks for building True Color GIF
images!


[0]  https://debianforum.de/forum/viewtopic.php?f=34&amp;amp;t=168942#p1167421
[1]  https://debianforum.de/forum/viewtopic.php?f=29&amp;amp;t=168943&amp;amp;p=1167436#p1167436


http://marmaro.de/lue/        markus schnalke &amp;lt;meillo@marmaro.de&amp;gt;
&lt;/pre&gt;</content:encoded>
	<dc:date>2018-03-07T23:00:00+00:00</dc:date>
</item>
<item rdf:about="http://vinzv.de/?p=922102283">
	<title>Vinzenz Vietzke (vinz): Tor und Tor-Browser in Fedora 17/18 installieren</title>
	<link>https://vinzv.de/tor-und-tor-browser-in-fedora-1718-installieren/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://jamielinux.com&quot;&gt;Jamie Nguyen&lt;/a&gt; hat Tor und Tor-Browser für Fedora paketiert. Um diese Pakete über sein Repository zu bekommen, installiert ihr euch entweder das &lt;a href=&quot;https://jamielinux.com/files/jamielinux-tor-release.noarch.rpm&quot;&gt;Release-Package&lt;/a&gt; oder macht das von Hand:&lt;/p&gt;
&lt;pre&gt;&lt;small&gt;wget https://jamielinux.com/pub/jamielinux-tor-release.noarch.rpm
yum install ./jamielinux-tor-release.noarch.rpm&lt;/small&gt;&lt;/pre&gt;
&lt;p&gt;Danach installiert ihr alle nötigen Pakete, aktiviert und startet Tor. Alle Pakete sind &lt;a href=&quot;https://jamielinux.com/contact/&quot;&gt;GPG-signiert&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;small&gt;yum install tor tor-browser tor-browser-selinux
systemctl enable tor.service
systemctl start tor.service&lt;/small&gt;&lt;/pre&gt;
&lt;p&gt;Optional könnt ihr mit &lt;code&gt;&quot;tor-browser-selinux&quot;&lt;/code&gt; die Unterstützung für SELinux installieren.&lt;/p&gt;</content:encoded>
	<dc:date>2013-01-18T09:52:40+00:00</dc:date>
	<dc:creator>vinzv</dc:creator>
</item>
<item rdf:about="https://www.chrismoonlight.de/wordpress/?p=2601">
	<title>Christian Schmitt (slater): WTF</title>
	<link>https://www.chrismoonlight.de/wordpress/2017/07/25/wtf-2/</link>
	<content:encoded>&lt;p&gt;16 Grad C im Juli!???!&lt;/p&gt;</content:encoded>
	<dc:date>2017-07-25T09:02:38+00:00</dc:date>
	<dc:creator>Slater</dc:creator>
</item>
<item rdf:about="https://suntsu.ch/index.php?/archives/248-guid.html">
	<title>Manuel Kaderli (suntsu): Be careful using ThreadStatic in Visual Studio unit tests</title>
	<link>https://suntsu.ch/index.php?/archives/248-Be-careful-using-ThreadStatic-in-Visual-Studio-unit-tests.html</link>
	<content:encoded>&lt;p&gt;&lt;/p&gt;&lt;p&gt;Given is a ThreadStatic field which is set to empty in the static constructor, and set by a public instance method: &lt;/p&gt; &lt;pre class=&quot;brush: csharp;&quot;&gt;    public class TestClass
    {
        [ThreadStatic] 
        private static string threadStaticValue;
        static TestClass()
        {
            threadStaticValue = &quot;&quot;;
        }
        public void SetThreadStaticValue(string value)
        {
            threadStaticValue = value;
        }
        public string GetThreadStaticValue()
        {
            return threadStaticValue;
        }
    }
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Now two unit tests check whether the threadStaticValue is set correct.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: csharp;&quot;&gt;    [TestClass]
    public class ThreadStaticTest
    {
        [TestMethod]
        public void WithThreadStaticValueSetTest()
        {
            Debug.WriteLine(&quot;Thread id: {0}&quot;, System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            tc.SetThreadStaticValue(&quot;foo&quot;);
            Assert.AreSame(tc.GetThreadStaticValue(), &quot;foo&quot;);
        }
        [TestMethod]
        public void WithThreadStaticValueNotSetTest()
        {
            Debug.WriteLine(&quot;Thread id: {0}&quot;, System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            Assert.AreSame(tc.GetThreadStaticValue(), &quot;&quot;);
        }
    }
&lt;/pre&gt;
&lt;p&gt;Those tests will fail(good) or pass(bad) depending of whether the test engine will reuse the same thread. &lt;/p&gt;
&lt;p&gt;Executed a second time, the result could be different. &lt;/p&gt;
&lt;p&gt;Solution: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Don't use ThreadStatic at all 
&lt;/li&gt;&lt;li&gt;Make sure the ThreadStatic fields are initialized correctly before using them&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2014-03-24T11:28:23+00:00</dc:date>
	<dc:creator>suntsu</dc:creator>
</item>
<item rdf:about="https://www.chrismoonlight.de/wordpress/?p=2607">
	<title>Christian Schmitt (slater): Amazone Prime Video mit Linux Mint</title>
	<link>https://www.chrismoonlight.de/wordpress/2017/11/13/amazone-prime-video-mit-linux-mint/</link>
	<content:encoded>&lt;p&gt;Hej zusammen…&lt;/p&gt;
&lt;p&gt;Ich habe heute mit meiner frischen installation von Linux Mint gekämpft… Prime Vido wollte nicht so wie ich es wollte…&lt;/p&gt;
&lt;p&gt;Erst mal das was nicht geklappt hat:&lt;/p&gt;
&lt;p&gt;Die ganzen Tips mit installiere HAL Lib über verschiedene wege…&lt;br /&gt;
Silverlight mit Wine…&lt;br /&gt;
Diverse Einstellung (hatten auch alle mit hal-libery zu tun)&lt;/p&gt;
&lt;p&gt;Geholfen hat zum Schluss Mint selber!&lt;/p&gt;
&lt;p&gt;Über das Start-Menü habe ich den Menüpunkt Multimedia ausgewählt. Dort wurde angeboten das Mint alles was Multimedia zu tun hat von alleine installiert… Jetzt läuft das mit Amazone Prime Video. Leider weiß ich nicht was alles am System jetzt geändert wurde von alleine… Mehdienwiedergabe, Rythmbox und VLC Player sind als einziges über das Multimedia Menü zusätzlich sichtbar und vorerst die einzigen Änderung die durchgeführt wurden.&lt;/p&gt;
&lt;p&gt;Wenn ich noch was finde, was geädert wurde, werde ich es hier aktualisieren…&lt;/p&gt;</content:encoded>
	<dc:date>2017-11-13T19:00:00+00:00</dc:date>
	<dc:creator>Slater</dc:creator>
</item>
<item rdf:about="https://malte-kiefer.de/blog/Kommentare-mit-Github/">
	<title>Malte Kiefer (beLI3VeR): Kommentare mit Github</title>
	<link>https://malte-kiefer.de/blog/Kommentare-mit-Github/</link>
	<content:encoded>&lt;p&gt;
	&lt;/p&gt;&lt;p&gt;Ich bin ein großer Freund vom Datenschutz, leider unterstützt Hugo nur &lt;a href=&quot;https://disqus.com/&quot;&gt;disqus&lt;/a&gt;, was alles andere als freundlich zum Datenschutz ist. Also gab es die letzten Monate nie eine Kommentar Funktion, das hat sich jetzt geändert.&lt;/p&gt;
&lt;p&gt;Ich bin durch Zufall auf den &lt;a href=&quot;http://donw.io/post/github-comments/&quot;&gt;Artikel von Don Williamson&lt;/a&gt; gestoßen, der es mir erlaubt eine Kommentar Funktion für meine Artikel durch Github anzubieten.&lt;/p&gt;
&lt;h2&gt;Konfiguration&lt;/h2&gt;
&lt;p&gt;Als erstes legen wir eine Datei &lt;strong&gt;comments.html&lt;/strong&gt; im Ordner &lt;em&gt;&lt;strong&gt;themes/THEME_NAME/layouts/partials/&lt;/strong&gt;&lt;/em&gt; mit folgenden Inhalt an:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;div id=&quot;gh-comments&quot;&amp;gt;
          &amp;lt;h2&amp;gt;Kommentare&amp;lt;/h2&amp;gt;
              &amp;lt;div id=&quot;gh-comments-list&quot;&amp;gt;&amp;lt;/div&amp;gt;
                  &amp;lt;a href=&quot;javascript:void(0)&quot; id=&quot;gh-load-comments&quot; class=&quot;btn&quot; style=&quot;display:none&quot;&amp;gt;Load more comments&amp;lt;/a&amp;gt;
&amp;lt;/div&amp;gt;

   &amp;lt;script type=&quot;text/javascript&quot; data-ghid=&quot;{{ $.Params.ghcommentid }}&quot; src=&quot;{{ .Site.BaseURL }}js/github-comments.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Als nächstes brauchen wir jetzt noch die JS Datei, die für uns die ganze Arbeit macht &lt;em&gt;&lt;strong&gt;themes/THEME_NAME/static/js/github-comments.js&lt;/strong&gt;&lt;/em&gt; mit folgenden Inhalt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;// use of ajax vs getJSON for headers use to get markdown (body vs body_htmml)
// todo: pages, configure issue url, open in new window?
//

var this_js_script = $('script[src*=github-comments]');


var ghid = this_js_script.attr('data-ghid');   
if (typeof ghid === &quot;undefined&quot; ) {
   var ghid = '0';
}

DoGithubComments(ghid);

var CurrentPage = 0;

function ParseLinkHeader(link)
{
    var entries = link.split(&quot;,&quot;);
    var links = { };
    for (var i in entries)
    {
        var entry = entries[i];
        var link = { };
        link.name = entry.match(/rel=\&quot;([^\&quot;]*)/)[1];
        link.url = entry.match(/&amp;lt;([^&amp;gt;]*)/)[1];
        link.page = entry.match(/page=(\d+).*$/)[1];
        links[link.name] = link;
    }
    return links;
}

function DoGithubComments(comment_id, page_id)
{
    var repo_name = &quot;beli3ver/malte-kiefer.de&quot;;

    if (page_id === undefined)
        page_id = 1;

    var api_url = &quot;https://api.github.com/repos/&quot; + repo_name;
    var api_issue_url = api_url + &quot;/issues/&quot; + comment_id;
    var api_comments_url = api_url + &quot;/issues/&quot; + comment_id + &quot;/comments&quot; + &quot;?page=&quot; + page_id;

    var url = &quot;https://github.com/beli3ver/malte-kiefer.de/issues/&quot; + comment_id;

    $(document).ready(function ()
    {
        $.getJSON(api_issue_url, function(data) {
            NbComments = data.comments;
        });

        $.ajax(api_comments_url, {
            headers: {Accept: &quot;application/vnd.github.v3.html+json&quot;},
            dataType: &quot;json&quot;,
            success: function(comments, textStatus, jqXHR) {

                // Add post button to first page
                if (page_id == 1)
                    $(&quot;#gh-comments-list&quot;).append(&quot;&amp;lt;a href='&quot; + url + &quot;#new_comment_field' rel='nofollow' class='btn'&amp;gt;Füge eine Kommentar hinzu&amp;lt;/a&amp;gt;&quot;);

                // Individual comments
                $.each(comments, function(i, comment) {

                    var date = new Date(comment.created_at);

                    var t = &quot;&amp;lt;div id='gh-comment'&amp;gt;&quot;;
                    t += &quot;&amp;lt;img src='&quot; + comment.user.avatar_url + &quot;' width='24px'&amp;gt;&quot;;
                    t += &quot;&amp;lt;b&amp;gt;&amp;lt;a href='&quot; + comment.user.html_url + &quot;'&amp;gt;&quot; + comment.user.login + &quot;&amp;lt;/a&amp;gt;&amp;lt;/b&amp;gt;&quot;;
                    t += &quot; posted at &quot;;
                    t += &quot;&amp;lt;em&amp;gt;&quot; + date.toUTCString() + &quot;&amp;lt;/em&amp;gt;&quot;;
                    t += &quot;&amp;lt;div id='gh-comment-hr'&amp;gt;&amp;lt;/div&amp;gt;&quot;;
                    t += comment.body_html;
                    t += &quot;&amp;lt;/div&amp;gt;&quot;;
                    $(&quot;#gh-comments-list&quot;).append(t);
                });

                // Setup comments button if there are more pages to display
                var links = ParseLinkHeader(jqXHR.getResponseHeader(&quot;Link&quot;));
                if (&quot;next&quot; in links)
                {
                    $(&quot;#gh-load-comments&quot;).attr(&quot;onclick&quot;, &quot;DoGithubComments(&quot; + comment_id + &quot;,&quot; + (page_id + 1) + &quot;);&quot;);
                    $(&quot;#gh-load-comments&quot;).show();
                }
                else
                {
                    $(&quot;#gh-load-comments&quot;).hide();
                }
            },
            error: function() {
                $(&quot;#gh-comments-list&quot;).append(&quot;Kommentarfunktion für diesen Beitrag nicht aktiviert!&quot;);
            }
        });
    });
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jetzt müssen die Links in der Datei angepasst werden. Ihr müsst eine eigne Repo anlegen bei Github und hier in der Datei anpassen.
&lt;strong&gt;Achtung: Wir brauchen auch jQuery!&lt;/strong&gt;.
jQuery sollte umbedingt im &lt;code&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;/code&gt; geladen werden.&lt;/p&gt;
&lt;p&gt;Zum Schluss noch das Template für die Beitragsdatei anpassen &lt;em&gt;&lt;strong&gt;(themes/THEME_NAME/layouts/_default/single.html)&lt;/strong&gt;&lt;/em&gt; und den folgenden Teil for dem Aufruf des &lt;code&gt;&amp;lt;footer&amp;gt;&amp;lt;/footer&amp;gt;&lt;/code&gt; Tags einfügen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;{{ partial &quot;comments.html&quot; . }}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Um jetzt die Kommentarfunktion zu nutzen, ein entsprechendes &lt;strong&gt;issue&lt;/strong&gt; bei Github eröffnen, die ID merken. Wenn ihr dann einen neuen Beitrag erstellt, müsst ihr vor den &quot;---&quot; folgendes einfügen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;ghcommentid: ID
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Und das wars, nun habt ihr und ich eine Kommentarfunktion.&lt;/p&gt;
&lt;h2&gt;CSP&lt;/h2&gt;
&lt;p&gt;Damit ihr diese Funktion mit &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP&quot;&gt;CSP&lt;/a&gt; nutzen könnt, müssen folgende Einstellungen gesetzt sein:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;img-src 'self' https://*.githubusercontent.com;
connect-src 'self' https://*.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2018-05-08T00:00:00+00:00</dc:date>
	<dc:creator>Malte Kiefer</dc:creator>
</item>
<item rdf:about="https://www.globalcitizen.red/?p=11355">
	<title>Helmut Roewer (Dunkelangst): HKG✈KHH</title>
	<link>https://www.globalcitizen.red/2016/06/24/hkg-khh/</link>
	<content:encoded>&lt;h2&gt;Trip 35&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.globalcitizen.red/wp-content/uploads/DSC00311.jpg&quot;&gt;&lt;img alt=&quot;Flight KA 450 from HKG to KHH&quot; class=&quot;alignnone size-large wp-image-11356&quot; height=&quot;400&quot; src=&quot;https://www.globalcitizen.red/wp-content/uploads/DSC00311-600x400.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-11355&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flight 89: Hong Kong International Airport to Kaohsiung International Airport&lt;/li&gt;
&lt;li&gt;Airbus A 330-300 – Dragonair&lt;/li&gt;
&lt;li&gt;planed duration: 1h 25min&lt;/li&gt;
&lt;li&gt;See also the &lt;a href=&quot;https://www.globalcitizen.red/itinerary/&quot; title=&quot;itinerary&quot;&gt;itinerary&lt;/a&gt; to get an overview.&lt;/li&gt;
&lt;/ul&gt;
 &lt;img height=&quot;1&quot; src=&quot;https://www.globalcitizen.red/?feed-stats-post-id=11355&quot; style=&quot;display: none;&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2016-06-24T19:46:27+00:00</dc:date>
	<dc:creator>Helmut</dc:creator>
</item>
<item rdf:about="http://www.black-cat-online.net/wordpress/?p=447">
	<title>Jürgen Braun (jaybe): Android Tablet</title>
	<link>http://www.fz6fazer.net/wordpress/2010/08/18/android-tablet/</link>
	<content:encoded>&lt;p&gt;Auch wenn ich den Hype um das Apple iPad nicht nachvollziehen kann (es funktioniert gut und sieht schick aus, ist mir aber zu teuer und bevormundet einen bei der Nutzung), so finde ich das Konzept eines Tablets doch ganz reizvoll. Wichtig ist jedoch, dass man sich über den Einsatzzweck klar wird. Für mich soll es keinen Ersatz für PC/Notebook/Netbook darstellen, sondern ein Gerät sein, mit dem man gemütlich auf der Couch seine Mails checken, in Foren stöbern, Facebook Nachrichten lesen, … also hauptsächlich Daten im Internet konsumieren kann.&lt;br /&gt;
Für 179.-€ war nun ein Tablet mit Android 2.1 &lt;a href=&quot;http://www.mobiflip.de/2010/07/179-euro-android-2-1-tablet-surfer-beim-discounter/&quot;&gt;angekündigt&lt;/a&gt;. Die Beschaffung gestaltete sich ein wenig schwierig und dauerte etwas länger, da das Gerät nicht wie angekündigt bereits montags erhältlich war, sondern erst eine Woche später als verfügbar gelistet wurde und bestellt werden konnte. In der Zwischenzeit waren auch erste &lt;a href=&quot;http://www.android-hilfe.de/android-tablet-forum/37576-7-tablet-mit-android-2-1-fuer-179-bei-marktkauf-erhaeltlich.html&quot;&gt;Erfahrungsberichte&lt;/a&gt; von Benutzern aufgetaucht. Die Bandbreite war gewohnt groß und begann bei „der letzte Schrott“. Das folgende Fazit eines Benutzers ermutigte mich jedoch dazu, mir solch ein Gerät zu bestellen:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;..ich sags mal ganz unverblümt&lt;br /&gt;
Das Ding ist nichts für Leute die den Ipad Killer erwartet haben und davon ausgehen das alles „out of the box“ für €179.- funktioniert..&lt;/p&gt;
&lt;p&gt;Für alle anderen, die spaß an linux haben, lässt sich da sicher noch einiges machen bzw. fehlende funktionen nachrüsten.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Am Wochenende wurde das Gerät dann geliefert, die Inbetriebnahme musste jedoch bis Sonntag Abend warten.&lt;br /&gt;
Einloggen in das WLAN, Einrichten von &lt;a href=&quot;http://mail.google.com/&quot;&gt;Googlemail&lt;/a&gt;, Zugriff auf den eigenen Mailserver, Surfen im Web und die installierten Applikationen für &lt;a href=&quot;http://maps.google.de/&quot;&gt;Google Maps&lt;/a&gt; und &lt;a href=&quot;http://www.youtube.de&quot;&gt;YouTube&lt;/a&gt; funktionierten problemlos. Das Touch-Display lässt sich schwer bedienen, vor allem das Scrollen ist etwas umständlich, mit resistiver Technologie aber auch nur schwer umsetzbar, das funktioniert bei meinem Garmin-Navi aber auch nicht besonders.&lt;br /&gt;
&lt;strong&gt;Hardware&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Billig wirkendes Plastik, vier Buttons auf der Gehäuserückseite für Zurück, Home, Suchen und Menü fühlen sich nicht besonders an und man muss sich die Position merken, da man sie nicht sieht.&lt;br /&gt;
&lt;strong&gt; Software&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Browser: Eingabe über Touchscreen hakelig auch bei Verwendung des Eingabestiftes. Lädt und stellt die Webseiten recht flott dar.&lt;/li&gt;
&lt;li&gt;Mail: Konfiguration von mehreren Mailservern möglich, Zugriff per POP3 oder IMAP&lt;/li&gt;
&lt;li&gt;Google Maps: schnelle Darstellung der Karten, Layer für Satellitenbild und Wikipedia einblendbar. Bei Wikipedia werden „W“s eingeblendet, auf die man direkt klicken und Infos aus Wikipedia abrufen kann&lt;/li&gt;
&lt;li&gt;Google Mail: direkte Verknüpfung mit meinem Google Mail Account, funktioniert einfach.&lt;/li&gt;
&lt;li&gt;YouTube Player: direkte Verknüpfung mit meinem YouTube Account: Playlisten, Favoriten, … werden angezeigt. Suche ist möglich, Abspielen in voller Auflösung funktioniert sehr gut.&lt;/li&gt;
&lt;li&gt;Android Market: Zuerst nicht gestartet, dann zwar gestartet, man konnte suchen und „installieren“, der Download kommt aber nicht zum Ende und es wird nichts installiert. Ein bekanntes Problem, es liegt wohl keine offizielle Google-ID vor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bisheriges Fazit: Wenn man nicht tippen muss, sondern sich auf  Lesen/Sehen/Hören beschränkt, funktioniert das Tablet. Für die  eingeschränkte mitgelieferte Software hätte ich es wohl nicht gekauft,  ABER es gibt eine &lt;a href=&quot;http://www.ivhp.de/Smartbook_Surfer/info/index.php&quot; target=&quot;_blank&quot;&gt;Seite mit Howtos&lt;/a&gt;, da wird erklärt, wie man das Gerät  patchen, den Market aktivieren, auf alternative Markets umsteigen oder  direkt die APKs installieren kann. Und wenn das dann funktioniert, kann es ein  ganz brauchbares Gerät werden.&lt;/p&gt;
&lt;div class=&quot;wb_fb_comment&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2010-08-18T18:24:50+00:00</dc:date>
	<dc:creator>jaybe</dc:creator>
</item>
<item rdf:about="https://suntsu.ch/index.php?/archives/234-guid.html">
	<title>Manuel Kaderli (suntsu): Authenticate to smugmug with oAuth and c#</title>
	<link>https://suntsu.ch/index.php?/archives/234-Authenticate-to-smugmug-with-oAuth-and-c.html</link>
	<content:encoded>&lt;p&gt;Some weeks ago, i tried to create a windows phone 7 &lt;a href=&quot;http://www.smugmug.com/&quot;&gt;smugmug&lt;/a&gt; app(photo browser).
I had &lt;a href=&quot;http://www.dgrin.com/showthread.php?t=207148&amp;amp;highlight=oauth&quot;&gt;some problems&lt;/a&gt; with oAuth at the beginning, 
First, I tried the g&lt;a href=&quot;http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs&quot;&gt;oogle oAuth implementation in c#&lt;/a&gt; with the result that the first request(AcquireRequestToken) worked, but the second request(AcquireAccessToken) failed with an invalid signature. Then i tried to implement it myself with the same result. &lt;/p&gt;

&lt;p&gt;Even with the &lt;a href=&quot;http://wiki.smugmug.net/display/API/OAuth&quot;&gt;smugmug oAuth documentation&lt;/a&gt;, i found it quite hard to get it done. Some parts like the authorize parameters(public/full/read/modify) i had to figure out myself.&lt;/p&gt;

&lt;p&gt;After some time, i found an c# oAuth class written for twitter access for &lt;a href=&quot;http://cropperplugins.codeplex.com/&quot;&gt;cropperplugins.codeplex&lt;/a&gt;. With this code, i was at least able to get a proper AccessToken for smugmug. 
I've written a little demo application if someone else has the same problems.&lt;/p&gt;

&lt;p&gt;To get this sample working, you only have to set you apiKey and secret. This sample will do:
&lt;strong&gt;1. Get a request token and a request token secret
2. Authorize the request token
3. With the request token secret, acquire a access token
4. This access token and access token secret are used for all further authentication, and should not expire until the user revokes them.&lt;/strong&gt;
&lt;/p&gt;&lt;pre class=&quot;brush: csharp; ruler: false;&quot; name=&quot;code&quot;&gt;        private void AuthenticateSmugmug()
        {
            const string apiKey = &quot;YOUR&lt;em&gt;API&lt;/em&gt;KEY&quot;;//apikey from your smugmug account
            const string secret = &quot;YOUR_SECRET&quot;;//secret from your smugmug account&lt;p&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;        Console.WriteLine(&quot;Create new instance of OAuth Manager&quot;);
        Manager manager = new Manager(apiKey, secret);

        Console.WriteLine(&quot;Aquire a request token from smugmug&quot;);
        OAuthResponse requestToken = manager.AcquireRequestToken(&quot;http://api.smugmug.com/services/oauth/getRequestToken.mg&quot;, &quot;GET&quot;);

        string oauthToken = requestToken[&quot;oauth_token&quot;];
        Console.WriteLine(string.Format(&quot;oauthToken: {0}&quot;, oauthToken));
        string oauthTokenSecret = requestToken[&quot;oauth_token_secret&quot;];
        Console.WriteLine(string.Format(&quot;oauthTokenSecret: {0}&quot;, oauthTokenSecret));

        //Opens your default browser and authorize your request token
        //Parameters: Access=[Public|Full], Permissions=[Read|Add|Modify]
        System.Diagnostics.Process.Start(string.Format(&quot;http://api.smugmug.com/services/oauth/authorize.mg?oauth_token={0}&amp;amp;Access=Full&amp;amp;Permissions=Modify&quot;, oauthToken));

        Console.WriteLine(&quot;Please enter you credentials into the browser before continuing&quot;);
        Console.WriteLine(&quot;Press any key to continue...&quot;);
        Console.ReadLine();

        OAuthResponse accessToken = manager.AcquireAccessToken(&quot;http://api.smugmug.com/services/oauth/getAccessToken.mg&quot;, &quot;GET&quot;, oauthTokenSecret);

        Console.WriteLine(string.Format(&quot;accessToken: {0}&quot;, accessToken[&quot;oauth_token&quot;]));
        Console.WriteLine(string.Format(&quot;accessTokenSecret: {0}&quot;, accessToken[&quot;oauth_token_secret&quot;]));
        Console.WriteLine(&quot;Press any key to quit the application&quot;);
        Console.ReadLine();
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;This is the complete source code for the oAuth sample. It's c# written in Visual Studio 10:
To get this sample working, just enter your Api Key and Secret.
&lt;a href=&quot;https://suntsu.ch/serendipity/uploads/SmugmugOAuthSample.zip&quot; target=&quot;_blank&quot; title=&quot;SmugmugOAuthSample.zip&quot;&gt;SmugmugOAuthSample.zip&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2011-12-29T09:31:04+00:00</dc:date>
	<dc:creator>suntsu</dc:creator>
</item>

</rdf:RDF>
