<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>s3lph made</title><link>https://s3lph.me/</link><description/><atom:link href="https://s3lph.me/feeds/rss.xml" rel="self"/><lastBuildDate>Fri, 19 Jun 2026 23:00:00 +0200</lastBuildDate><item><title>Building AUR Packages with Forgejo Actions and Renovate</title><link>https://s3lph.me/building-aur-packages-with-forgejo-actions-and-renovate.html</link><description>&lt;p&gt;The &lt;a href="https://aur.archlinux.org/"&gt;Arch User Repository&lt;/a&gt; (AUR) is a collection of user-contributed source packages for &lt;a href="https://archlinux.org/"&gt;Arch Linux&lt;/a&gt;.
These packages, which may be submitted by anyone without review, simply consist of package metadata, and instructions for downloading and building software from source.
This also means that special care must be taken when using …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 19 Jun 2026 23:00:00 +0200</pubDate><guid>tag:s3lph.me,2026-06-19:/building-aur-packages-with-forgejo-actions-and-renovate.html</guid><category>hacks</category><category>Arch Linux</category><category>AUR</category><category>Forgejo</category><category>Software Packaging</category><category>Continuous Delivery</category></item><item><title>Unified Kernel Images and Secure Boot using Arch Linux</title><link>https://s3lph.me/unified-kernel-images-and-secure-boot-using-arch-linux.html</link><description>&lt;p&gt;I recently got a new laptop computer and decided to give &lt;a href="https://wiki.archlinux.org/title/Unified_kernel_image"&gt;Unified Kernel Images&lt;/a&gt; and &lt;a href="https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot"&gt;Secure Boot&lt;/a&gt; with my own keys another try.
When I last looked into these topics almost a decade ago, they were extremely cumbersome to set up and maintain, and required lots of manual steps.
A …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 17 Sep 2025 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2025-09-17:/unified-kernel-images-and-secure-boot-using-arch-linux.html</guid><category>hacks</category><category>Linux</category><category>Secure Boot</category><category>Boot</category><category>Automation</category></item><item><title>Migration of Etherpad Lite from MariaDB to PostgreSQL</title><link>https://s3lph.me/migration-of-etherpad-lite-from-mariadb-to-postgresql.html</link><description>&lt;p&gt;I recently migrated an installation of &lt;a href="https://docs.etherpad.org/"&gt;Etherpad Lite&lt;/a&gt; from
an old setup based on a git checkout to a newer container-based setup.
The old setup used MariaDB as its backing database.&lt;/p&gt;
&lt;p&gt;In the new container setup, I wanted to expose the database's UNIX
domain socket to the container.  Unfortunately, the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 30 Aug 2025 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2025-08-30:/migration-of-etherpad-lite-from-mariadb-to-postgresql.html</guid><category>hacks</category><category>Migration</category><category>Etherpad</category><category>Database</category><category>PostgreSQL</category></item><item><title>Libvirt to Proxmox VE Migration</title><link>https://s3lph.me/libvirt-to-proxmox-ve-migration.html</link><description>&lt;p&gt;In our hackerspace, we were running a single-node hypervisor for some
virtual machines on hardware that was roughly 15 years old.  As this
system was not only old, but also loud and power-hungry, we wanted to
replace it with a more modern one that we had recently obtained.&lt;/p&gt;
&lt;p&gt;We also …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 20 Jun 2025 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2025-06-20:/libvirt-to-proxmox-ve-migration.html</guid><category>hacks</category><category>Migration</category><category>Virtualization</category><category>Proxmox VE</category></item><item><title>Talk: «IPv6-only in the Home Network»</title><link>https://s3lph.me/vortrag-ipv6-only-im-heimnetz.html</link><description>&lt;p&gt;I held a talk at CoSin 2025 titled «IPv6-only in the Home Network».&lt;/p&gt;
&lt;p&gt;The slides (in German) are available in the conference archive: &lt;a href="https://fahrplan.cosin.ch/fahrplan/2025/events/1ff89037-2ba8-5c13-9da4-e2e0c74ea5e2/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here's the recording of the talk (also in German):&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 30 May 2025 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2025-05-30:/vortrag-ipv6-only-im-heimnetz.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>IPv6</category></item><item><title>Vortrag: «IPv6-only im Heimnetz»</title><link>https://s3lph.me/vortrag-ipv6-only-im-heimnetz-de.html</link><description>&lt;p&gt;Ich habe auf der CoSin 2025 einen Vortrag mit dem Titel «IPv6-only im Heimnetz» gehalten.&lt;/p&gt;
&lt;p&gt;Die Folien sind im Konferenzarchiv verfügbar: &lt;a href="https://fahrplan.cosin.ch/fahrplan/2025/events/1ff89037-2ba8-5c13-9da4-e2e0c74ea5e2/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hier ist die Aufzeichnung des Vortrags:&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 30 May 2025 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2025-05-30:/vortrag-ipv6-only-im-heimnetz-de.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>IPv6</category></item><item><title>Manually Replacing Matrix Rooms</title><link>https://s3lph.me/manually-replacing-matrix-rooms.html</link><description>&lt;p&gt;In our hackerspace community, we recently ran into some issues with
end-to-end encrypted Matrix rooms: In a previously unencrypted public
room with around 100 users across lots of different home servers, a
room admin had enabled end-to-end encryption by accident.&lt;/p&gt;
&lt;p&gt;Unfortunately, end-to-end encryption in Matrix can still be unreliable
at …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 26 Apr 2025 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2025-04-26:/manually-replacing-matrix-rooms.html</guid><category>hacks</category><category>Matrix</category><category>E2EE</category></item><item><title>Configuration of Honeywell Barcode Scanners</title><link>https://s3lph.me/configuration-of-honeywell-barcode-scanners.html</link><description>&lt;p&gt;I had recently obtained an used USB barcode scanner: A Honeywell Hyperion 1300G.
These scanners can be configured to use one of multiple USB operation modes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;USB Keyboard mode: The scanner emulates a keyboard and "types" the digits of scanned barcodes.&lt;/li&gt;
&lt;li&gt;USB Serial mode: The scanner emulates a serial console …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Mon, 02 Dec 2024 00:00:00 +0100</pubDate><guid>tag:s3lph.me,2024-12-02:/configuration-of-honeywell-barcode-scanners.html</guid><category>hacks</category><category>Hardware</category><category>USB</category><category>Reverse Engineering</category></item><item><title>Talk: «Propagation of OpenPGP Keys using WKD, WKS and DANE»</title><link>https://s3lph.me/vortrag-verbreitung-von-openpgp-keys.html</link><description>&lt;p&gt;I held a talk at CoSin 2024 titled «Propagation of OpenPGP Keys using WKD, WKS and DANE».&lt;/p&gt;
&lt;p&gt;The slides (in German) are available in the conference archive: &lt;a href="https://fahrplan.cosin.ch/fahrplan/2024/events/fdc0738b-d56d-50b6-9138-c9d88c19c35f/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here's the recording of the talk (also in German):&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 29 Jun 2024 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2024-06-29:/vortrag-verbreitung-von-openpgp-keys.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>OpenPGP</category><category>WKD</category><category>WKS</category><category>DANE</category><category>DNSSEC</category><category>E2EE</category></item><item><title>Vortrag: «Verbreitung von OpenPGP-Keys mit WKD, WKS und DANE»</title><link>https://s3lph.me/vortrag-verbreitung-von-openpgp-keys-de.html</link><description>&lt;p&gt;Ich habe auf der CoSin 2024 einen Vortrag mit dem Titel «Verbreitung von OpenPGP-Keys mit WKD, WKS und DANE» gehalten.&lt;/p&gt;
&lt;p&gt;Die Folien sind im Konferenzarchiv verfügbar: &lt;a href="https://fahrplan.cosin.ch/fahrplan/2024/events/fdc0738b-d56d-50b6-9138-c9d88c19c35f/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hier ist die Aufzeichnung des Vortrags:&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 29 Jun 2024 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2024-06-29:/vortrag-verbreitung-von-openpgp-keys-de.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>OpenPGP</category><category>WKD</category><category>WKS</category><category>DANE</category><category>DNSSEC</category><category>E2EE</category></item><item><title>Issue Let's Encrypt Certificates with TSIG Zone Updates against Knot</title><link>https://s3lph.me/issue-lets-encrypt-certificates-with-tsig-zone-updates-against-knot.html</link><description>&lt;p&gt;To issue wildcard certificates, Let's Encrypt requires the use of the DNS validation method (see &lt;a href="https://letsencrypt.org/documents/isrg-cp-cps-v5.3/#3.2.2-authentication-of-organization-and-domain-identity"&gt;Certificate Policy §3.2.2&lt;/a&gt;).
I'm running my own DNS nameserver using &lt;a href="https://www.knot-dns.cz/docs/latest/html/index.html"&gt;Knot DNS&lt;/a&gt;, which does not have e.g. a REST API for updating zones.
However, Knot supports &lt;a href="https://datatracker.ietf.org/doc/html/rfc2136"&gt;RFC 2136 zone updates&lt;/a&gt;, where a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Mon, 13 May 2024 21:49:00 +0200</pubDate><guid>tag:s3lph.me,2024-05-13:/issue-lets-encrypt-certificates-with-tsig-zone-updates-against-knot.html</guid><category>hacks</category><category>Knot</category><category>TSIG</category><category>Let's Encrypt</category></item><item><title>Persisting Keycloak Sessions Across Restarts</title><link>https://s3lph.me/persisting-keycloak-sessions-across-restarts.html</link><description>&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Update (2024-06-10)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.keycloak.org/2024/06/keycloak-2500-released.html"&gt;Starting with version 25&lt;/a&gt;, Keycloak comes with a new &lt;code&gt;persistent-user-session&lt;/code&gt; feature that stores session data in the database in addition to in memory.  I recommend enabling that feature using &lt;code&gt;features=persistent-user-session&lt;/code&gt; in &lt;code&gt;keycloak.conf&lt;/code&gt; rather than using persistent Infinispan caches.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;In my hackerspace we're running a &lt;a href="https://www.keycloak.org/"&gt;Keycloak SSO …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sun, 14 Apr 2024 15:38:00 +0200</pubDate><guid>tag:s3lph.me,2024-04-14:/persisting-keycloak-sessions-across-restarts.html</guid><category>hacks</category><category>Keycloak</category><category>OIDC</category></item><item><title>Talk: «Sending APRS using an Arduino»</title><link>https://s3lph.me/vortrag-aprs-arduino.html</link><description>&lt;p&gt;I held a talk at CoSin 2023 titled «Sending APRS using an Arduino».&lt;/p&gt;
&lt;p&gt;The talk was not recorded, but the slides (in German) are available in the conference archive:
&lt;a href="https://fahrplan.cosin.ch/fahrplan/2023/events/f2411dff-803b-5f63-a630-d40396228eb0/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 17 Jun 2023 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2023-06-17:/vortrag-aprs-arduino.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>Arduino</category><category>APRS</category><category>Amateurfunk</category><category>Amateur Radio</category></item><item><title>Talk: «Automating DNSSEC using Knot &amp; Child DS»</title><link>https://s3lph.me/vortrag-dnssec-automatisieren.html</link><description>&lt;p&gt;I held a talk at CoSin 2023 titled «Automating DNSSEC using Knot &amp;amp; Child DS».&lt;/p&gt;
&lt;p&gt;The talk was not recorded, but the slides (in German) are available in the conference archive:
&lt;a href="https://fahrplan.cosin.ch/fahrplan/2023/events/076486a0-e083-5ecf-92ca-d309e905eedb/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 17 Jun 2023 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2023-06-17:/vortrag-dnssec-automatisieren.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>DNS</category><category>DNSSEC</category><category>Knot</category></item><item><title>Vortrag: «APRS senden mit dem Arduino»</title><link>https://s3lph.me/vortrag-aprs-arduino-de.html</link><description>&lt;p&gt;Ich habe auf der CoSin 2023 einen Vortrag mit dem Titel «APRS senden mit dem Arduino» gehalten.&lt;/p&gt;
&lt;p&gt;Der Vortrag wurde nicht aufgezeichnet, aber die Folien sind im Konferenzarchiv verfügbar:
&lt;a href="https://fahrplan.cosin.ch/fahrplan/2023/events/f2411dff-803b-5f63-a630-d40396228eb0/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 17 Jun 2023 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2023-06-17:/vortrag-aprs-arduino-de.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>Arduino</category><category>APRS</category><category>Amateurfunk</category><category>Amateur Radio</category></item><item><title>Vortrag: «DNSSEC automatisieren mit Knot &amp; Child DS»</title><link>https://s3lph.me/vortrag-dnssec-automatisieren-de.html</link><description>&lt;p&gt;Ich habe auf der CoSin 2023 einen Vortrag mit dem Titel «DNSSEC
automatisieren mit Knot &amp;amp; Child DS» gehalten.&lt;/p&gt;
&lt;p&gt;Der Vortrag wurde nicht aufgezeichnet, aber die Folien sind im Konferenzarchiv verfügbar:
&lt;a href="https://fahrplan.cosin.ch/fahrplan/2023/events/076486a0-e083-5ecf-92ca-d309e905eedb/attachments/resource_0.pdf"&gt;Slides&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 17 Jun 2023 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2023-06-17:/vortrag-dnssec-automatisieren-de.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>DNS</category><category>DNSSEC</category><category>Knot</category></item><item><title>Mein Einbürgerungverfahren in Basel - Teil 7: Fazit</title><link>https://s3lph.me/einbuergerungsverfahren-in-basel-teil-7-fazit-de.html</link><description>&lt;p&gt;&lt;strong&gt;Achtung&lt;/strong&gt;: Die Informationen in diesem Artikel beziehen sich auf das
Verfahren im Kanton Basel-Stadt, die Verfahren in anderen Kantonen
weichen z.T. stark ab.&lt;/p&gt;
&lt;h2 id="personliche-eindrucke"&gt;Persönliche Eindrücke&lt;/h2&gt;
&lt;p&gt;Im Grossen und Ganzen habe ich das Einbürgerungsverfahren als deutlich
«harmloser» empfunden, als ich es erwartet hatte.  Insbesondere beim
Gespräch mit der Einbürgerungskommission hatte …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 31 Mar 2023 01:30:00 +0200</pubDate><guid>tag:s3lph.me,2023-03-31:/einbuergerungsverfahren-in-basel-teil-7-fazit-de.html</guid><category>life</category><category>Einbürgerung</category><category>Schweiz</category><category>Basel</category></item><item><title>Mein Einbürgerungverfahren in Basel - Teil 6: Abschluss des Verfahrens</title><link>https://s3lph.me/einbuergerungsverfahren-in-basel-teil-6-abschluss-des-verfahrens-de.html</link><description>&lt;p&gt;Gegen Ende Februar habe ich vom Migrationsamt des Kantons Basel-Stadt
einen doch eher unzeremoniellen Brief bekommen, der mich darüber
informierte, dass mir am 31. Januar 2023 das Bürgerrecht der Stadt
Basel, des Kantons Basel-Stadt und der Schweiz verliehen wurde.&lt;/p&gt;
&lt;p&gt;Damit ist das Einbürgerungsverfahren an sich nun abgeschlossen; als
«frischgebackener» Schweizerbürger …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 31 Mar 2023 00:30:00 +0200</pubDate><guid>tag:s3lph.me,2023-03-31:/einbuergerungsverfahren-in-basel-teil-6-abschluss-des-verfahrens-de.html</guid><category>life</category><category>Einbürgerung</category><category>Schweiz</category><category>Basel</category></item><item><title>Migration from LDAP to OIDC: Matrix</title><link>https://s3lph.me/ldap-to-oidc-migration-3-matrix.html</link><description>&lt;p&gt;In my hackerspace we operate various services for our members.  Up
until this month, most of these services used to do user
authentication against a LDAP server.  For a multitude of reasons, we
replaced the LDAP server with an &lt;a href="https://openid.net/connect/"&gt;OpenID Connect&lt;/a&gt; &lt;abbr
title="Single Sign-On"&gt;SSO&lt;/abbr&gt; using a &lt;a href="https://www.keycloak.org/"&gt;Keycloak&lt;/a&gt; server
as the OIDC Identity …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 27 Jan 2023 01:25:00 +0100</pubDate><guid>tag:s3lph.me,2023-01-27:/ldap-to-oidc-migration-3-matrix.html</guid><category>hacks</category><category>Migration</category><category>OIDC</category><category>Matrix</category><category>Synapse</category></item><item><title>Migration from LDAP to OIDC: Nextcloud</title><link>https://s3lph.me/ldap-to-oidc-migration-2-nextcloud.html</link><description>&lt;p&gt;In my hackerspace we operate various services for our members.  Up
until this month, most of these services used to do user
authentication against a LDAP server.  For a multitude of reasons, we
replaced the LDAP server with an &lt;a href="https://openid.net/connect/"&gt;OpenID Connect&lt;/a&gt; &lt;abbr
title="Single Sign-On"&gt;SSO&lt;/abbr&gt; using a &lt;a href="https://www.keycloak.org/"&gt;Keycloak&lt;/a&gt; server
as the OIDC Identity …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Thu, 26 Jan 2023 22:00:00 +0100</pubDate><guid>tag:s3lph.me,2023-01-26:/ldap-to-oidc-migration-2-nextcloud.html</guid><category>hacks</category><category>Migration</category><category>OIDC</category><category>Nextcloud</category></item><item><title>Migration from LDAP to OIDC: Forgejo</title><link>https://s3lph.me/ldap-to-oidc-migration-1-forgejo.html</link><description>&lt;p&gt;In my hackerspace we operate various services for our members.  Up
until this month, most of these services used to do user
authentication against a LDAP server.  For a multitude of reasons, we
replaced the LDAP server with an &lt;a href="https://openid.net/connect/"&gt;OpenID Connect&lt;/a&gt; &lt;abbr
title="Single Sign-On"&gt;SSO&lt;/abbr&gt; using a &lt;a href="https://www.keycloak.org/"&gt;Keycloak&lt;/a&gt; server
as the OIDC Identity …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Thu, 26 Jan 2023 10:18:00 +0100</pubDate><guid>tag:s3lph.me,2023-01-26:/ldap-to-oidc-migration-1-forgejo.html</guid><category>hacks</category><category>Migration</category><category>OIDC</category><category>Forgejo</category><category>Gitea</category></item><item><title>How much ActivityPub can a Static Site Generator implement?</title><link>https://s3lph.me/activitypub-static-site.html</link><description>&lt;p&gt;There already are multiple blogging solutions which are part of the
&lt;a href="https://en.wikipedia.org/wiki/Fediverse"&gt;Fediverse&lt;/a&gt;.  Among them are dedicated Fediverse blogs such
as &lt;a href="https://joinplu.me/"&gt;Plume&lt;/a&gt; or &lt;a href="https://writefreely.org/"&gt;WriteFreely&lt;/a&gt;, but there also are
plugins which retrofit existing CMS, e.g. &lt;a href="https://wordpress.org/plugins/activitypub/"&gt;for Wordpress&lt;/a&gt; or
&lt;a href="https://www.drupal.org/project/activitypub"&gt;Drupal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://activitypub.rocks/"&gt;ActivityPub&lt;/a&gt;, the network protocol behind the Fediverse can only
be fully implemented …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 18 Nov 2022 01:00:00 +0100</pubDate><guid>tag:s3lph.me,2022-11-18:/activitypub-static-site.html</guid><category>hacks</category><category>ActivityPub</category><category>Pelican</category></item><item><title>Wie viel ActivityPub kann ein Static Site Generator?</title><link>https://s3lph.me/activitypub-static-site-de.html</link><description>&lt;p&gt;Es gibt bereits verschiedene Blog-Lösungen, die Teil des
&lt;a href="https://en.wikipedia.org/wiki/Fediverse"&gt;Fediverse&lt;/a&gt; sind: Darunter sind sowohl dedizierte
Fediverse-Blogs wie &lt;a href="https://joinplu.me/"&gt;Plume&lt;/a&gt; und &lt;a href="https://writefreely.org/"&gt;WriteFreely&lt;/a&gt;,
aber es gibt auch Plugins, die bestehende CMS nachrüsten,
z.B. &lt;a href="https://wordpress.org/plugins/activitypub/"&gt;für Wordpress&lt;/a&gt; oder &lt;a href="https://www.drupal.org/project/activitypub"&gt;für Drupal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://activitypub.rocks/"&gt;ActivityPub&lt;/a&gt;, das Netzwerk-Protokoll hinter dem Fediverse, lässt
sich nur mit einer aktiven Serverkomponente vollständig umsetzen …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 18 Nov 2022 01:00:00 +0100</pubDate><guid>tag:s3lph.me,2022-11-18:/activitypub-static-site-de.html</guid><category>hacks</category><category>ActivityPub</category><category>Pelican</category></item><item><title>Automated Generation of POI Maps from Open Data</title><link>https://s3lph.me/automated-generation-poi-maps-open-data.html</link><description>&lt;p&gt;&lt;a href="https://www.ccc.de/regional"&gt;The website of the Chaos Computer Club features a map&lt;/a&gt; of
Germany and its surrounding countries, where hackerspaces who consider
themselves as part of the CCC are marked.&lt;/p&gt;
&lt;p&gt;Up until now, this map (shown in &lt;a href="#figure1"&gt;Figure 1&lt;/a&gt;) had been created
and updated manually in a time consuming process.  Not only …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Thu, 27 Oct 2022 02:00:00 +0200</pubDate><guid>tag:s3lph.me,2022-10-27:/automated-generation-poi-maps-open-data.html</guid><category>hacks</category><category>Open Data</category><category>Wikidata</category><category>OpenStreetMap</category></item><item><title>Automatische Erzeugung von POI-Karten aus Offenen Daten</title><link>https://s3lph.me/automated-generation-poi-maps-open-data-de.html</link><description>&lt;p&gt;&lt;a href="https://www.ccc.de/regional"&gt;Die Website des Chaos Computer Clubs enthält eine Karte&lt;/a&gt; von
Deutschland und den umliegenden Ländern, auf der Hackerspaces
verzeichnet sind, die sich als Teil des CCC betrachten.&lt;/p&gt;
&lt;p&gt;Bisher wurde diese Karte (siehe &lt;a href="#figure1"&gt;Abbildung 1&lt;/a&gt;) händisch
erzeugt und aktualisiert, was jeweils sehr zeitaufwändig war.  Das hat
nicht nur dazu geführt, dass …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Thu, 27 Oct 2022 02:00:00 +0200</pubDate><guid>tag:s3lph.me,2022-10-27:/automated-generation-poi-maps-open-data-de.html</guid><category>hacks</category><category>Open Data</category><category>Wikidata</category><category>OpenStreetMap</category></item><item><title>Talk: «DNSSEC (in the year 2022)»</title><link>https://s3lph.me/vortrag-dnssec-im-jahr-2022.html</link><description>&lt;p&gt;I held a talk at CCC Basel titled «DNSSEC (in the year 2022) - An introduction to DNSSEC and its development in the recent years».&lt;/p&gt;
&lt;p&gt;Here's the recording of the talk (in German):&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 10 Sep 2022 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2022-09-10:/vortrag-dnssec-im-jahr-2022.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>DNS</category><category>DNSSEC</category></item><item><title>Vortrag: «DNSSEC (im Jahr 2022)»</title><link>https://s3lph.me/vortrag-dnssec-im-jahr-2022-de.html</link><description>&lt;p&gt;Ich habe im CCC Basel einen Vortrag mit dem Titel «DNSSEC (im Jahr 2022) - Eine Einführung in DNSSEC und dessen Entwicklung in den letzten Jahren» gehalten.&lt;/p&gt;
&lt;p&gt;Hier ist die Aufzeichnung des Vortrags:&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 10 Sep 2022 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2022-09-10:/vortrag-dnssec-im-jahr-2022-de.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category><category>DNS</category><category>DNSSEC</category></item><item><title>Mein Einbürgerungverfahren in Basel - Teil 5: Das Einbürgerungsgespräch</title><link>https://s3lph.me/einbuergerungsverfahren-in-basel-teil-5-einbuergerungsgespraech-de.html</link><description>&lt;p&gt;Gestern früh hatte ich das Gespräch mit der Einbürgerungskommission
der Bürgergemeinde Basel.  Das Gespräch dauert gemäss Einladung ca. 20
Minuten, war bei mir aber schon nach ca. 15 Minuten vorbei.&lt;/p&gt;
&lt;h2 id="das-gesprach"&gt;Das Gespräch&lt;/h2&gt;
&lt;figure&gt;
  &lt;a href="https://s3lph.me/images/2022-08-26-einbuergerung-05-buergerratssaal-basler-stadthaus.jpg"&gt;
    &lt;img src="https://s3lph.me/images/2022-08-26-einbuergerung-05-buergerratssaal-basler-stadthaus.jpg"
         title="Der Bürgerratssaal im Basler Stadthaus, in dem das Einbürgerungsgesprach stattfindet."
         alt="Ein kleines Zimmer.  Im Vordergrund ein Holztisch mit mehreren Stühlen. Die Wände im Hintergrund sind vollständig mit Gemälden verkleidet."&gt;
  &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;a id="figure1" class="figureid"&gt;Abbildung 1:&lt;/a&gt;
      Der Bürgerratssaal im Basler Stadthaus, in dem das Einbürgerungsgesprach stattfindet.

      Quelle: Bürgergemeinde der Stadt Basel, &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"&gt;CC-BY-SA-4 …&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 26 Aug 2022 17:00:00 +0200</pubDate><guid>tag:s3lph.me,2022-08-26:/einbuergerungsverfahren-in-basel-teil-5-einbuergerungsgespraech-de.html</guid><category>life</category><category>Einbürgerung</category><category>Schweiz</category><category>Basel</category></item><item><title>Mein Einbürgerungverfahren in Basel - Teil 4: «Einbürgerungskurs»</title><link>https://s3lph.me/einbuergerungsverfahren-in-basel-teil-4-einbuergerungskurs-de.html</link><description>&lt;p&gt;&lt;strong&gt;Achtung&lt;/strong&gt;: Die Informationen in diesem Artikel beziehen sich auf das
Verfahren im Kanton Basel-Stadt, die Verfahren in anderen Kantonen
weichen z.T. stark ab.&lt;/p&gt;
&lt;p&gt;Im Rahmen des Einbürgerungsverfahrens muss man einen
«Einbürgerungstest» absolvieren, in dem Kenntnisse über die
politischen, historischen und geografischen Gegebenheiten der Schweiz
geprüft werden.  Wie ich bereits …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 18 Jun 2022 03:42:00 +0200</pubDate><guid>tag:s3lph.me,2022-06-18:/einbuergerungsverfahren-in-basel-teil-4-einbuergerungskurs-de.html</guid><category>life</category><category>Einbürgerung</category><category>Schweiz</category><category>Basel</category></item><item><title>Talk: «Post Mortem»</title><link>https://s3lph.me/vortrag-post-mortem.html</link><description>&lt;p&gt;I held a talk at CCC Basel titled «Post Mortem: Lessons Learned from the Death of a Sysadmin».&lt;/p&gt;
&lt;p&gt;Here's the recording of the talk (in German):&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 14 May 2022 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2022-05-14:/vortrag-post-mortem.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category></item><item><title>Vortrag: «Post Mortem»</title><link>https://s3lph.me/vortrag-post-mortem-de.html</link><description>&lt;p&gt;Ich habe im CCC Basel einen Vortrag namens «Post Mortem: Lessons Learned aus dem Todesfall eines Serveradmins» gehalten.&lt;/p&gt;
&lt;p&gt;Hier ist die Aufzeichnung des Vortrags:&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 14 May 2022 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2022-05-14:/vortrag-post-mortem-de.html</guid><category>talks</category><category>Talks</category><category>Vorträge</category></item><item><title>Mein Einbürgerungverfahren in Basel - Teil 3: Telefonisches Erhebungsgespräch</title><link>https://s3lph.me/einbuergerungsverfahren-in-basel-teil-3-erhebungsgespraech-de.html</link><description>&lt;p&gt;&lt;strong&gt;Achtung&lt;/strong&gt;: Die Informationen in diesem Artikel beziehen sich auf das
Verfahren im Kanton Basel-Stadt, die Verfahren in anderen Kantonen
weichen z.T. stark ab.&lt;/p&gt;
&lt;p&gt;Letzte Woche hatte ich von Migrationsamt Basel-Stadt einen Brief
erhalten, mit der Bitte, mich telefonisch beim Migrationsamt zu
melden, da noch ein paar offene Fragen bestünden …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 02 Mar 2022 03:42:00 +0100</pubDate><guid>tag:s3lph.me,2022-03-02:/einbuergerungsverfahren-in-basel-teil-3-erhebungsgespraech-de.html</guid><category>life</category><category>Einbürgerung</category><category>Schweiz</category><category>Basel</category></item><item><title>Restoring a Commodore CBM 3016</title><link>https://s3lph.me/restoring-a-commodore-cbm-3016.html</link><description>&lt;p&gt;We recently got our hands on a &lt;a href="https://www.c64-wiki.com/wiki/PET_2001"&gt;Commodore CBM 3016&lt;/a&gt;, built
between 1978 and 1980.  Unfortunately, as we attempted to power it up, we were
greeted with a screen full of random characters:&lt;/p&gt;
&lt;figure&gt;
  &lt;a href="https://s3lph.me/images/2022-02-09-commodore-cbm-scrambled-screen.jpg"&gt;
    &lt;img src="https://s3lph.me/images/2022-02-09-commodore-cbm-scrambled-screen.jpg"
         title="CBM 3016 screen filled with random characters."
         alt="CBM 3016 screen filled with random characters."&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;
    &lt;a id="figure1" class="figureid"&gt;Figure 1:&lt;/a&gt;
    CBM 3016 screen filled with random characters.
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;A short web search told us that a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 09 Feb 2022 00:00:00 +0100</pubDate><guid>tag:s3lph.me,2022-02-09:/restoring-a-commodore-cbm-3016.html</guid><category>hacks</category><category>Hardware</category><category>Repair</category><category>CBM 3016</category></item><item><title>Layer 2 TFTP Relay for TFTP Recovery with IP Conflicts</title><link>https://s3lph.me/layer-2-tftp-relay-with-ip-conflicts.html</link><description>&lt;p&gt;Today I had to deal with an embedded device which refused to boot up
due to a misconfiguration.  Normally, this device, a Mitel DECT RFP 32
IP, obtains a DHCP lease on boot and fetches the firmware to run via
TFTP.  The firmware is downloaded at every reboot, since the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sun, 09 Jan 2022 00:00:00 +0100</pubDate><guid>tag:s3lph.me,2022-01-09:/layer-2-tftp-relay-with-ip-conflicts.html</guid><category>hacks</category><category>Boot</category><category>TFTP</category><category>Network</category><category>Hardware</category></item><item><title>Chainload GRUB 2 from GRUB 2</title><link>https://s3lph.me/chainload-grub2-from-grub2.html</link><description>&lt;p&gt;I recently needed to set up a PC to dual boot Windows and Linux.
Legacy BIOS, no UEFI.  Unfortunately Windows likes to do Windows
things and override the first-stage GRUB bootloader in the MBR with
its own, and thereafter booting Windows only.&lt;/p&gt;
&lt;p&gt;As this PC needs to be used by …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 27 Nov 2021 00:00:00 +0100</pubDate><guid>tag:s3lph.me,2021-11-27:/chainload-grub2-from-grub2.html</guid><category>hacks</category><category>GRUB</category><category>Boot</category><category>PXE</category></item><item><title>DNSSEC Automation with Knot - Automated KSK Rollover</title><link>https://s3lph.me/automated-dnssec-ksk-rollover.html</link><description>&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Due to how KSK algorithm rollovers work,
&lt;a href="https://gitlab.nic.cz/knot/knot-dns/-/issues/804"&gt;&lt;code&gt;cds-cdnskey-publish: double-ds&lt;/code&gt; should not be used&lt;/a&gt;.  The
configuration example below has been updated to use
&lt;code&gt;cds-cdnskey-publish: always&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;In the previous post I've shown how to bootstrap DNSSEC in a fully
automated fashion using the &lt;a href="https://www.knot-dns.cz/"&gt;Knot DNS server&lt;/a&gt; and a
&lt;a href="https://datatracker.ietf.org/doc/html/rfc8078"&gt;CDS&lt;/a&gt;-enabled …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Tue, 16 Nov 2021 00:00:00 +0100</pubDate><guid>tag:s3lph.me,2021-11-16:/automated-dnssec-ksk-rollover.html</guid><category>hacks</category><category>DNS</category><category>DNSSEC</category><category>Automation</category><category>Knot</category></item><item><title>DNSSEC Automation with Knot - Automated Bootstrapping</title><link>https://s3lph.me/automated-dnssec-bootstrapping.html</link><description>&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Due to how KSK algorithm rollovers work,
&lt;a href="https://gitlab.nic.cz/knot/knot-dns/-/issues/804"&gt;&lt;code&gt;cds-cdnskey-publish: double-ds&lt;/code&gt; should not be used&lt;/a&gt;.  The
configuration example below has been updated to use
&lt;code&gt;cds-cdnskey-publish: always&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.knot-dns.cz/"&gt;Knot DNS&lt;/a&gt; is an authoritative DNS name server developed by
CZ.NIC.  One of the features that sets it apart from BIND and other …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sun, 14 Nov 2021 00:00:00 +0100</pubDate><guid>tag:s3lph.me,2021-11-14:/automated-dnssec-bootstrapping.html</guid><category>hacks</category><category>DNS</category><category>DNSSEC</category><category>Automation</category><category>Knot</category></item><item><title>Mein Einbürgerungverfahren in Basel - Teil 2: Vorbereitung und Gesuchsstellung</title><link>https://s3lph.me/einbuergerungsverfahren-in-basel-teil-2-vorbereitung-gesuchsstellung-de.html</link><description>&lt;p&gt;&lt;strong&gt;Achtung&lt;/strong&gt;: Die Informationen in diesem Artikel beziehen sich auf das
Verfahren im Kanton Basel-Stadt, die Verfahren in anderen Kantonen
weichen z.T. stark ab.&lt;/p&gt;
&lt;p&gt;Normalerweise muss man sich vor der Einreichung des
Einbürgerungsgesuchs vom Migrationsamt beraten lassen.
Pandemiebedingt ist die Beratung momentan aber nur telefonisch oder
via E-Mail möglich.&lt;/p&gt;
&lt;h2 id="beratung-via-e-mail"&gt;Beratung …&lt;/h2&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Mon, 20 Sep 2021 23:16:00 +0200</pubDate><guid>tag:s3lph.me,2021-09-20:/einbuergerungsverfahren-in-basel-teil-2-vorbereitung-gesuchsstellung-de.html</guid><category>life</category><category>Einbürgerung</category><category>Schweiz</category><category>Basel</category></item><item><title>Mein Einbürgerungverfahren in Basel - Teil 1: Intro</title><link>https://s3lph.me/einbuergerungsverfahren-in-basel-teil-1-intro-de.html</link><description>&lt;p&gt;Letzte Woche habe ich mein Einbürgerungsgesuch beim Migrationsamt in
Basel eingereicht.  Damit beginnt für mich das langwierige (1.5-2
Jahre) Einbürgerungsverfahen, über das ich hier im Blog berichten
werde, da ich bisher kaum ausführliche Erfahrungsberichte im Internet
finden konnte, und quasi gar keine aus Basel.&lt;/p&gt;
&lt;h2 id="hintergrund"&gt;Hintergrund&lt;/h2&gt;
&lt;p&gt;Ich lebe seit 10 …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Mon, 20 Sep 2021 13:15:00 +0200</pubDate><guid>tag:s3lph.me,2021-09-20:/einbuergerungsverfahren-in-basel-teil-1-intro-de.html</guid><category>life</category><category>Einbürgerung</category><category>Schweiz</category><category>Basel</category></item><item><title>Extracting 3D Models From CesiumJS - Part 2: Terrain Map Parsing</title><link>https://s3lph.me/extracting-3dmodels-from-cesium-part-2-terrain-map-parsing.html</link><description>&lt;p&gt;&lt;a href="https://github.com/CesiumGS/cesium"&gt;CesiumJS&lt;/a&gt; is a open source JavaScript framework for
rendering 2D and 3D maps - everything from a local area to whole
planets - in a web browser using WebGL.  In the past few weeks I've
been working on obtaining 3D model data in a situation where the only
easily available way of …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sun, 09 May 2021 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2021-05-09:/extracting-3dmodels-from-cesium-part-2-terrain-map-parsing.html</guid><category>hacks</category><category>CesiumJS</category><category>3D Models</category><category>Parsing</category></item><item><title>Mailinglist Archive URL Redirection from Pipermail to Hyperkitty</title><link>https://s3lph.me/mailinglist-archive-url-redirection-from-pipermail-to-hyperkitty.html</link><description>&lt;p&gt;I recently migrated a mailing list setup running on Mailman 2 to a new
&lt;a href="http://www.list.org/"&gt;Mailman 3&lt;/a&gt;-based setup on a new server.  The migration itself is
pretty straight forward, especially thanks to the &lt;a href="https://docs.mailman3.org/en/latest/migration.html"&gt;official upgrade
guide&lt;/a&gt;.  The migration from Pipermail (the default archiver used
in Mailman 2) to Hyperkitty (Mailman …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 17 Mar 2021 01:00:00 +0100</pubDate><guid>tag:s3lph.me,2021-03-17:/mailinglist-archive-url-redirection-from-pipermail-to-hyperkitty.html</guid><category>hacks</category><category>Mailinglists</category><category>Migration</category><category>Pipermail</category><category>Hyperkitty</category><category>PHP</category><category>Apache 2</category><category>mod_rewrite</category></item><item><title>Migration of IRC Services from Hybserv2 to Anope</title><link>https://s3lph.me/migration-of-irc-services-from-hybserv2-to-anope.html</link><description>&lt;p&gt;I recently inherited a small IRC network, consisting of a single
server and a rather small but still active community.  The software on
this server was quite outdated, running a version of
&lt;a href="https://github.com/ircd-hybrid/ircd-hybrid/"&gt;ircd-hybrid&lt;/a&gt; from 8 years ago, and for IRC services a
comparably old version of the now-unmaintained &lt;a href="https://github.com/dkorunic/hybserv2/"&gt;hybserv2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 23 Dec 2020 23:00:00 +0100</pubDate><guid>tag:s3lph.me,2020-12-23:/migration-of-irc-services-from-hybserv2-to-anope.html</guid><category>hacks</category><category>IRC</category><category>IRC Services</category><category>Anope</category><category>Hybserv</category><category>Migration</category></item><item><title>Reminders with VoIP Phones, Asterisk &amp; Crontab</title><link>https://s3lph.me/reminders-with-voip-phones-asterisk-crontab.html</link><description>&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Update (2020-10-30)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As it turns out, this solution causes people to get used to the ringing phone,
causing not only the reminder to be ignored, but actual incoming calls as well.
We have thus stopped using this solution.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;It is considered best practice to regularly and often ventilate closed
rooms …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Fri, 11 Sep 2020 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2020-09-11:/reminders-with-voip-phones-asterisk-crontab.html</guid><category>hacks</category><category>Telephone</category><category>Asterisk</category><category>VoIP</category></item><item><title>Cisco 7900 series IP Phone Logo Converter</title><link>https://s3lph.me/cisco-7900-series-ip-phone-logo-converter.html</link><description>&lt;p&gt;Last week we discovered a box full of old Cisco 7900 series IP phones
hidden deep in a pile of boxes in our hackerspace.  Of course we tried
to get them up and running and figure out how to configure them.&lt;/p&gt;
&lt;p&gt;After a bit of research and reading manuals, we …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Tue, 14 Jul 2020 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2020-07-14:/cisco-7900-series-ip-phone-logo-converter.html</guid><category>hacks</category><category>Telephone</category><category>Reverse Engineering</category><category>File Formats</category></item><item><title>Scaling and Slicing PDF Documents with pdfjam and mutool</title><link>https://s3lph.me/scaling-and-slicing-pdf-documents-with-pdfjam-and-mutool.html</link><description>&lt;p&gt;I recently encountered the following challenge: I had a PDF document
consisting of multiple A4 pages, each of which I needed to print
scaled up to A2.  However, I only had an A4 printer available, and the
printer driver was not able to perform the scaling and/or slicing on …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Mon, 22 Jun 2020 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2020-06-22:/scaling-and-slicing-pdf-documents-with-pdfjam-and-mutool.html</guid><category>hacks</category><category>PDF</category><category>pdfjam</category><category>mutool</category></item><item><title>Automated Debian package building with Gitlab CI and Reprepro</title><link>https://s3lph.me/automated-debian-package-building-with-gitlab-ci-and-reprepro.html</link><description>&lt;p&gt;I previously deployed some ad-hoc services using ugly and difficult to
maintain solutions, such as binaries manually extracted from container
images and copied into &lt;code&gt;/usr/local/bin&lt;/code&gt;.  Of course, this is a lot of
manual work for each upgrade of the service, and if you upgrade often,
a lot of …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sun, 21 Jun 2020 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2020-06-21:/automated-debian-package-building-with-gitlab-ci-and-reprepro.html</guid><category>hacks</category><category>Software Packaging</category><category>Continuous Delivery</category><category>Reprepro</category></item><item><title>Recording IPTV Using ffmpeg</title><link>https://s3lph.me/recording-iptv-using-ffmpeg.html</link><description>&lt;p&gt;I don't usually watch TV.  But from time to time there is something
interesting on the programme, such as debates on local politics.
Unfortunately, those usually run at a time of day where I'm not able
(or more likely not willing) to tune in an pay attention to an hour …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 20 May 2020 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2020-05-20:/recording-iptv-using-ffmpeg.html</guid><category>hacks</category><category>IPTV</category><category>ffmpeg</category><category>TV</category></item><item><title>Extracting 3D Models From CesiumJS - Part 1: Terrain Map Scraping</title><link>https://s3lph.me/extracting-3dmodels-from-cesium-part-1-terrain-map-scraping.html</link><description>&lt;p&gt;&lt;a href="https://github.com/CesiumGS/cesium"&gt;CesiumJS&lt;/a&gt; is a open source JavaScript framework for
rendering 2D and 3D maps - everything from a local area to whole
planets - in a web browser using WebGL.  In the past few weeks I've
been working on obtaining 3D model data in a situation where the only
easily available way of …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 09 May 2020 00:00:00 +0200</pubDate><guid>tag:s3lph.me,2020-05-09:/extracting-3dmodels-from-cesium-part-1-terrain-map-scraping.html</guid><category>hacks</category><category>CesiumJS</category><category>3D Models</category><category>Web Scraping</category></item><item><title>Mounting a 2.5" Drive Inside an APU2</title><link>https://s3lph.me/apu2-ssd-mount.html</link><description>&lt;p&gt;At home, I'm using a PC Engines APU2 as a firewall and WiFi access
point.  Since this is the only device in my home constantly running
and constantly connected to the internet, I decided to use it as an
additional backup site for my servers.&lt;/p&gt;
&lt;p&gt;However, for this to become …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Sat, 07 Mar 2020 15:15:00 +0100</pubDate><guid>tag:s3lph.me,2020-03-07:/apu2-ssd-mount.html</guid><category>hacks</category><category>3D Printing</category><category>3D Models</category><category>APU2</category><category>Hardware</category><category>Hard Disk</category><category>SSD</category></item><item><title>Binary Calculator Implementation in Apache mod_rewrite</title><link>https://s3lph.me/binary-calculator-implementation-in-apache-mod_rewrite.html</link><description>&lt;p&gt;Many text replacement dialects utilizing regular expressions become
&lt;a href="https://en.wikipedia.org/wiki/Turing_completeness"&gt;turing complete&lt;/a&gt; when combined with conditional loops or
recursion. Apache's &lt;a href="https://httpd.apache.org/docs/current/mod/mod_rewrite.html"&gt;mod_rewrite&lt;/a&gt; is no exception here; you
can write turing-complete programs using &lt;code&gt;RewriteRule&lt;/code&gt;s only.  A few
weeks ago I decided to try my hand at this and wrote a binary
calculator (well …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Thu, 13 Feb 2020 02:00:00 +0100</pubDate><guid>tag:s3lph.me,2020-02-13:/binary-calculator-implementation-in-apache-mod_rewrite.html</guid><category>hacks</category><category>Apache 2</category><category>mod_rewrite</category><category>Turing completeness</category><category>Calculator</category><category>Regular Expressions</category></item><item><title>Showing Webcal Calendar Events in Grafana</title><link>https://s3lph.me/showing-webcal-calendar-events-in-grafana.html</link><description>&lt;p&gt;I'm running a Grafana at home, with a dashboard giving me an overview
over my day.  It contains information like &lt;a href="https://s3lph.me/bringing-swiss-public-transport-departures-to-grafana.html"&gt;public transport
departures&lt;/a&gt; or the &lt;a href="https://s3lph.me/automatically-rotating-guest-wifi-passwords-with-hostapd.html"&gt;guest WiFi's password&lt;/a&gt;.  But the most
important part is a list of my upcoming appointments.  Now, iCalendar
files served via HTTP is not something Grafana …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 12 Feb 2020 02:00:00 +0100</pubDate><guid>tag:s3lph.me,2020-02-12:/showing-webcal-calendar-events-in-grafana.html</guid><category>hacks</category><category>iCalendar</category><category>Webcal</category><category>Calendar</category><category>Grafana</category><category>Prometheus</category><category>Python</category></item><item><title>Automatically Rotating Guest WiFi Passwords With hostapd</title><link>https://s3lph.me/automatically-rotating-guest-wifi-passwords-with-hostapd.html</link><description>&lt;p&gt;I like to have control over who gets on my networks and who doesn't.&lt;/p&gt;
&lt;p&gt;To obtain this level of control in my home network, I'm running a
separate WiFi for guests, which among other things separates guest
devices from my private infrastructure.&lt;/p&gt;
&lt;h2 id="authorization-in-hostapd"&gt;Authorization in hostapd&lt;/h2&gt;
&lt;p&gt;The most simple way of …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Thu, 06 Feb 2020 02:28:00 +0100</pubDate><guid>tag:s3lph.me,2020-02-06:/automatically-rotating-guest-wifi-passwords-with-hostapd.html</guid><category>hacks</category><category>WiFi</category><category>hostapd</category><category>Grafana</category></item><item><title>Bringing Swiss Public Transport Departures to Grafana</title><link>https://s3lph.me/bringing-swiss-public-transport-departures-to-grafana.html</link><description>&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Update (2020-11-27)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The API endpoint used here has been deprecated, and a &lt;a href="https://opentransportdata.swiss/en/cookbook/ojp-stopeventservice/"&gt;new endpoint&lt;/a&gt; is available.
The updated script can be found on &lt;a href="https://gitlab.com/-/snippets/2043551"&gt;Gitlab&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The Swiss Railways (SBB) provide a collection of static data sets and
dynamic APIs at &lt;a href="https://opentransportdata.swiss/en/"&gt;opentransportdata.swiss&lt;/a&gt;.  One endpoint
provides a list of departures or arrivals …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 05 Feb 2020 02:26:00 +0100</pubDate><guid>tag:s3lph.me,2020-02-05:/bringing-swiss-public-transport-departures-to-grafana.html</guid><category>hacks</category><category>SBB</category><category>Public Transport</category><category>Open Data</category><category>Grafana</category><category>Prometheus</category></item><item><title>SBB-Abfahrtszeiten in Grafana anzeigen</title><link>https://s3lph.me/bringing-swiss-public-transport-departures-to-grafana-de.html</link><description>&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Update (2020-11-27)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Der hier verwendete API-Endpunkt ist veraltet und wurde durch einen &lt;a href="https://opentransportdata.swiss/de/cookbook/ojpstopeventrequest/"&gt;neuen Endpunkt&lt;/a&gt; ersetzt.
Das aktualisierte Skript liegt auf &lt;a href="https://gitlab.com/-/snippets/2043551"&gt;Gitlab&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Die SBB bieten unter &lt;a href="https://opentransportdata.swiss/de/"&gt;opentransportdata.swiss&lt;/a&gt; eine Sammlung an
statischen Datensätzen und dynamischen APIs an.  Ein Endpunkt bietet
eine Liste an Zug-, Bus- oder Tramabfahrten oder -Ankünften für
gewisse …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 05 Feb 2020 02:26:00 +0100</pubDate><guid>tag:s3lph.me,2020-02-05:/bringing-swiss-public-transport-departures-to-grafana-de.html</guid><category>hacks</category><category>SBB</category><category>Public Transport</category><category>Open Data</category><category>Grafana</category><category>Prometheus</category></item><item><title>Monitoring Freifunk Nodes With Prometheus</title><link>https://s3lph.me/monitoring-freifunk-nodes-with-prometheus.html</link><description>&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Update (2020-03-07)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We now collect the number of connected clients as well as whether the node is online.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;We recently installed a Freifunk node from &lt;a href="https://freifunk-3laendereck.net/"&gt;Freifunk Dreiländereck
(FF3L)&lt;/a&gt; in our hackerspace.  While changing network
configuration during the testing phase, the node went offline without
us noticing.  Since we're using &lt;a href="https://prometheus.io/"&gt;Prometheus …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 05 Feb 2020 01:36:00 +0100</pubDate><guid>tag:s3lph.me,2020-02-05:/monitoring-freifunk-nodes-with-prometheus.html</guid><category>hacks</category><category>Freifunk</category><category>Monitoring</category><category>Prometheus</category></item><item><title>Freifunkknoten mit Prometheus überwachen</title><link>https://s3lph.me/monitoring-freifunk-nodes-with-prometheus-de.html</link><description>&lt;p&gt;&lt;strong&gt;Aktualisiert&lt;/strong&gt; 2020-03-07: Wir erfassen inzwischen, zusätzlich zur
Verfügbarkeit der Node, wieviele aktuell verbunden sind.&lt;/p&gt;
&lt;p&gt;Wir haben in unserem Hackerspace neulich einen Freifunk-Knoten von
&lt;a href="https://freifunk-3laendereck.net/"&gt;Freifunk Dreiländereck (FF3L)&lt;/a&gt; in Betrieb genommen.  Dieser ist
uns in der Probephase mehrfach bei Änderungen der
Netzwerkkonfiguration offline gegangen, ohne das wir es gemerkt
hatten.  Da wir …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">s3lph</dc:creator><pubDate>Wed, 05 Feb 2020 01:36:00 +0100</pubDate><guid>tag:s3lph.me,2020-02-05:/monitoring-freifunk-nodes-with-prometheus-de.html</guid><category>hacks</category><category>Freifunk</category><category>Monitoring</category><category>Prometheus</category></item></channel></rss>