[{"content":"Ich wollte eine einzige Kleinigkeit am Theme dieses Blogs ändern. Ein paar Wochenenden später hatte ich ein komplett neues geschrieben, ihm einen Namen, eine MIT-Lizenz und ein generiertes Changelog verpasst und es beim Hugo-Theme-Verzeichnis eingereicht. Einen Blogbeitrag habe ich in der Zeit nicht geschrieben. Das ist ein bekanntes Muster, und ich bin sehenden Auges hineingelaufen.\nEs heißt Vellum, dieser Blog läuft darauf, und aktuell steht es bei 0.2.2. Während ich diesen Beitrag geschrieben habe, sind zwei Patch-Versionen dazugekommen — was ungefähr zusammenfasst, wie die Wochenenden liefen.\nDie Ausgangslage Blog-Themes sehen alle ungefähr gleich aus: eine schmale zentrierte Spalte, eine graue Zeile unter dem Titel und viel Weißraum, der Arbeit macht, die eine einzige Linie besser erledigen würde. Für Essays ist das in Ordnung. Für das, was ich tatsächlich veröffentliche — Kommandos und Terminal-Ausgaben — ist es falsch.\nAlso habe ich mir die Vorlage woanders geholt: beim technischen Zeichenblatt. Ein gezeichneter Rahmen um die Seite. Millimeterpapier darin und sonst nirgends. Und statt der grauen Zeile ein linierter Title Block — der Kasten, den eine echte Zeichnung in der Ecke trägt, um zu sagen, was das Blatt ist, wer es gezeichnet hat und wann.\nDie einzige Regel, die ich mir gesetzt habe: Die Metapher muss tragen. Sieht ein Element nur aus wie Zeichnungsinventar, ist es Dekoration und fliegt raus. Diese Regel ist strenger, als sie klingt, und sie hat einige Ideen gekillt, die auf Screenshots hervorragend aussahen.\nGebaut mit Claude Code und impeccable Und jetzt der Teil, den ich offen sagen sollte: Von Hand geschrieben habe ich das meiste davon nicht. Gebaut habe ich es mit Claude Code, und dafür, dass am Ende ein zusammenhängendes Theme herauskam und nicht ein großer Haufen plausibel aussehendes CSS, war ein Skill namens impeccable verantwortlich.\nDer Trick von impeccable: Es lässt ein Design nicht nur im Code existieren. Es führt zwei Dokumente neben dem Repo mit:\nPRODUCT.md — wofür das Theme da ist, für wen, und welche seiner Eigenschaften verbindliche Zusagen sind und welche nur zufällig gerade stimmen. URL-Stabilität und 4,5:1 Kontrast sind verbindlich. Dass es ohne JavaScript funktioniert, ist es nicht — das ist gerade so, und ich darf es später eintauschen, ohne dass es ein Bug wäre. DESIGN.md — die visuelle Welt so, wie sie gebaut ist, nicht wie sie gemeint war. Gleich im Kopf steht der Satz, dass bei Widersprüchen das Stylesheet recht hat und das Dokument veraltet ist. Und dann prüft es den Code bei jeder Änderung gegen diese Dokumente und macht Screenshots, um zu sehen, ob das, was es gerade beschrieben hat, auch das ist, was auf dem Bildschirm steht.\nFür ein Blog-Theme ist das zugegebenermaßen absurder Aufwand. Es ist aber auch der Grund, warum am Ende ein echtes dreistufiges Liniensystem herauskam statt drei Tokens, die alle klammheimlich auf 1px hinauslaufen — genau das war nämlich zwischenzeitlich der Fall. Zwei davon hatten dieselbe Breite, elf Deklarationen waren zwischen ihnen hin- und hergerutscht, und das Ergebnis war pixelgleich. Durch Hinsehen hätte das nie jemand gefunden. Das Dokument hat es gefunden.\nDieser Beitrag ist genauso entstanden, und das Theme sagt es inzwischen von selbst — daher der Stempel im Title Block ganz oben.\nDie Zone Rail, oder: der Teil, auf den ich unangemessen stolz bin Auf einer echten Zeichnung ist der Rand in Zonen eingeteilt — Buchstaben an der einen Kante, Zahlen an der anderen — damit zwei Leute am Telefon sich einig werden können, wovon sie reden. „Die Halterung in C4.“ Ein Koordinatensystem für ein Gespräch.\nVellum behält die Buchstaben und gibt ihnen eine Aufgabe: eine Zone pro Hauptüberschrift, jede ein Link, jede auf der gemessenen Höhe genau dieser Überschrift im Blatt, und die gerade gelesene leuchtet amberfarben. Das ist ein Inhaltsverzeichnis, das null vertikalen Platz kostet, weil es im Rahmenrand sitzt — der vorher nur Linie war.\nDer Title Block nennt echte Felder und lässt die weg, für die es keinen Wert gibt — auf einer Zeichnung bedeuten ein leeres und ein fehlendes Feld nicht dasselbe. Hat eine Seite weniger als zwei Überschriften, wird die Rail gar nicht erst gezeichnet; der Rahmen schließt die Spalte einfach. Einen leeren Rand zu beschriften wäre exakt die Dekoration gewesen, die ich mir vorher verboten hatte.\nGebaut für Code, nicht für Fließtext Die Lesespalte ist 92 Zeichen breit. Das liegt deutlich über den 65 bis 75, die in Typografiebüchern stehen, und zwar mit Absicht: Ein 80-Zeichen-Paste aus dem Terminal muss ohne Umbruch hineinpassen. Abgezählt habe ich das an einer gerenderten Zeile statt es zu schätzen — meine Schätzungen lagen zuverlässig daneben.\nNichts wirft einen Schatten. Tiefe entsteht ausschließlich über Strichstärke — zwei Breiten, gekreuzt mit drei Tonwerten — und es gibt genau eine Akzentfarbe, ein Amber, das nie mehr als eine Aufgabe gleichzeitig auf dem Bildschirm hat. Der Rotstift des Zeichenbüros.\nDark Mode, Zone B leuchtet auf der Rail. Die Syntaxfarben stammen aus derselben Familie wie der Rest der Seite — Code und Blatt streiten nicht miteinander. Die Übersichtsseiten bekommen dieselbe Behandlung: Beiträge durch Linien getrennt statt in Karten gepackt, weil eine Zeichnung eine Tabelle mit Linien unterteilt.\nDas Indexblatt der Demo-Seite. Der Stempel rechts zählt die abgelegten Blätter. Was in 0.2 steckt 0.2.0 war größtenteils Infrastruktur — Releases laufen jetzt über ein Skript, und CHANGELOG.md wird aus der Commit-Historie erzeugt, statt von Hand geschrieben und sofort vergessen zu werden. Dazu zwei sichtbare Fixes: Die Zone Rail taucht auf schmalen Bildschirmen nicht mehr als kleiner Stapel Marken in der Rahmenecke auf, und der Text einer _index.md hängt jetzt am Seitenkopf statt direkt an der ersten Beitragskarte, wo er wie deren Bildunterschrift wirkte.\n0.2.1 hat die AI-Kennzeichnung gebracht, die du bei diesem Beitrag siehst: ein Stempel im Title Block, dieselbe Marke in der Beitragsübersicht — damit man es sieht, bevor man etwas öffnet — und ein Shortcode, um einzelne Passagen statt eines ganzen Beitrags zu markieren. Da ich das Theme mit einer KI gebaut habe und auch damit schreibe, schien es mir besser, das Theme sage das in seiner eigenen Sprache, als es in eine Fußzeile zu schreiben.\n0.2.2 hat diese Marken dann leiser gedreht. Sie waren so schwer gezeichnet wie eine Überschrift, obwohl sie Fließtext annotieren — und wirkten damit wichtiger als der Satz, an dem sie hingen. Genau das soll eine Kennzeichnung nicht tun.\nAusprobieren [module] [[module.imports]] path = \u0026#34;github.com/cebor/vellum\u0026#34; Danach hugo mod get -u. Eine Demo läuft unter pages.stkn.org/felix/vellum , Quellcode, README und Changelog liegen auf github.com/cebor/vellum . Vorausgesetzt wird Hugo extended ab 0.158.\nHinweis\nAuf themes.gohugo.io ist es noch nicht gelistet — die Einreichung läuft, aber upstream nimmt derzeit keine neuen Themes auf. Die Warteschlange ist das Problem, nicht das Theme.\nGebaut ist es zuerst für diesen Blog: Wo mein Bedarf und der eines möglichen Nutzers kollidieren, gewinnt mein Blog. Vollständig dokumentiert ist es trotzdem, und die Demo ist echt. Wenn deine Beiträge auch überwiegend aus Code bestehen, könnte es zu dir passen.","date":"16. August 2026","extent":"6 Min. Lesezeit","permalink":"/de/posts/vellum-hugo-theme/","summary":"Ich wollte eine Kleinigkeit am Theme dieses Blogs ändern. Ein paar Wochenenden später hatte ich ein eigenes geschrieben, benannt, lizenziert und beim Hugo-Theme-Verzeichnis eingereicht.","title":"Vellum: ein Hugo-Theme, das jede Seite wie ein technisches Zeichenblatt setzt"},{"content":"Angaben nach § 5 DDG.\nDiensteanbieter Felix Itzenplitz — verantwortlich für den Inhalt nach § 18 Abs. 2 MStV.\nKontakt E-Mail: admin+pub@stkn.org Diese Adresse ist der schnellste Weg für alles, was diesen Blog betrifft: Fragen zu einem Beitrag, Fehler, die ich übersehen habe, oder ein Link, der ins Leere führt.\nZu diesem Angebot Dies ist ein privater Blog ohne kommerziellen Zweck: keine Werbung, keine Affiliate-Links, keine gesponserten Beiträge. Die Beiträge geben meine persönliche Sicht wieder, nicht die Position meines Arbeitgebers oder eines Kunden.\nExterne Links Verlinkte Seiten liegen außerhalb meines Einflussbereichs; für deren Inhalte sind die jeweiligen Betreiber verantwortlich. Zum Zeitpunkt der Verlinkung war dort nichts Rechtswidriges erkennbar. Fällt dir ein Link auf, bei dem sich das geändert hat, schreib mir — ich nehme ihn raus.\nInhalte Texte, Bilder und Codebeispiele stammen von mir, sofern nicht anders angegeben. Zitate und übernommene Ausschnitte sind gekennzeichnet; die Rechte daran bleiben bei den jeweiligen Rechteinhabern.\nKolophon Statisch gebaut mit Hugo und meinem Theme Vellum , das jede Seite wie ein technisches Zeichenblatt anlegt: mit Rahmen, Zonenteilung und Schriftfeld. Ausgeliefert wird reines HTML — keine Datenbank, keine Kommentarfunktion.","date":"","extent":"","permalink":"/de/imprint/","summary":"Angaben nach § 5 DDG.\nDiensteanbieter Felix Itzenplitz — verantwortlich für den Inhalt nach § 18 Abs. 2 MStV.\nKontakt E-Mail: admin+pub@stkn.org Diese Adresse ist der schnellste Weg für alles, was diesen Blog betrifft: Fragen zu einem Beitrag, Fehler, die ich übersehen habe, oder ein Link, der ins Leere führt.","title":"Impressum"},{"content":"Seit Anfang Dezember stehe ich vor einem Rätsel: Der SIP-Login meiner Telefonanlage über Vodafone funktioniert nicht mehr wie gewohnt. Als Nutzer eines privaten Modems, das für die Nutzung von VoIP bei Vodafone erforderlich ist, stellte dies ein unerwartetes Hindernis dar. Nach umfangreichen Recherchen im Internet und insbesondere im Vodafone-Forum stieß ich auf eine interessante Entdeckung: Die SIP-URL wird von öffentlichen DNS-Servern wie Google und Cloudflare nicht korrekt aufgelöst, was zu einem 403-Forbidden-Fehler führt. Erst der offizielle Vodafone-DNS-Server löst die URL korrekt auf.\nBeispiel mit dig # dig mit cloudflare dns dig @1.1.1.1 sip.kabelfon.vodafone.de ... ;; ANSWER SECTION: sip.kabelfon.vodafone.de. 82826\tIN\tA\t88.134.209.241 ... # dig mit vodafone dns dig @88.134.229.100 sip.kabelfon.vodafone.de ... ;; ANSWER SECTION: sip.kabelfon.vodafone.de. 0\tIN\tA\t178.13.18.134 ... Versteht Vodafone DNS nicht? Diese Entdeckung wirft einige Fragen auf: Warum scheint Vodafone seine eigene DNS-Konfiguration nicht zu verstehen? Warum ist es notwendig, auf den spezifischen DNS-Server des Unternehmens zurückzugreifen, um das SIP-Protokoll erfolgreich nutzen zu können?\nFür viele Nutzer, die auf öffentliche DNS-Server zurückgreifen, um eine schnellere oder zuverlässigere Auflösung von Domänennamen zu erhalten, stellt dies ein Hindernis dar. Die Einschränkung, die SIP-URL nur über den Vodafone-DNS-Server auflösen zu können, wirft Fragen hinsichtlich der Flexibilität und der offenen Zugänglichkeit für verschiedene DNS-Systeme auf.\nLösung, Vodafone DNS nutzen Wie lässt sich dieses Problem lösen? Ein möglicher Lösungsansatz wäre, den offiziellen Vodafone-DNS-Server explizit für die Auflösung der SIP-URL in der Router-Konfiguration oder, falls möglich, direkt in der Telefonanlage festzulegen. Das kann zwar eine vorübergehende Lösung sein, aber es bleibt anzumerken, dass dies möglicherweise nicht für jeden Nutzer die ideale Lösung darstellt, da es die Flexibilität bei der Wahl des DNS-Servers einschränkt.\nVodafone DNS Server:\n88.134.229.100 88.134.229.36 Lösung für Nutzer von AdGuard Home oder Pi-hole Für Nutzer die einen AdGuard Home DNS betreiben hilft folgender Eintrag in den Upstream DNS Servern abhilfe, dann wird nur für sip.kabelfon.vodafone.de der Vodafone DNS genutzt:\n[/sip.kabelfon.vodafone.de/]88.134.229.100 88.134.229.36 Dies sollte für Pi-hole ähnlich funktioneren.\nKunden mit eigener FRITZ!Box Kunden mit eigener FRITZ!Box, die öffentliche DNS Server nutzen, sollten nicht betroffen sein. Hier ist nur sicherzustellen, dass in den VoIP Einstellungen die Option \u0026ldquo;Anmeldung immer über eine Internetverbindung\u0026rdquo; abgewählt ist.\nWie das überprüft und eingestellt wird, kann in der FRITZ!Box Wissensdatenbank unter Punkt 4 nachgelsen werden.\nWas kann Vodafone tun? Eine langfristige Lösung seitens Vodafone könnte darin bestehen, ihre DNS-Konfiguration zu überprüfen und anzupassen, um eine reibungslose Auflösung der SIP-URL über eine breitere Palette von DNS-Servern zu ermöglichen. Dadurch würden Nutzer nicht auf den offiziellen Vodafone-DNS-Server angewiesen sein, um die VoIP-Funktion uneingeschränkt nutzen zu können.\nIn der Zwischenzeit bleibt es für viele Nutzer ratsam, den offiziellen Vodafone-DNS-Server zu verwenden, um die SIP-URL korrekt aufzulösen und den VoIP-Dienst ohne Unterbrechungen nutzen zu können.\nEs bleibt zu hoffen, dass Vodafone dieses Problem baldigst angeht und eine Lösung findet und den Nutzern eine größere Flexibilität und eine problemlose Nutzung ihres VoIP-Dienstes ermöglicht, unabhängig vom verwendeten DNS-Server. Bis dahin werden Nutzer wie ich vorläufig weiterhin den offiziellen Vodafone-DNS-Server nutzen müssen, um ihre Telefonanlage reibungslos betreiben zu können.\nUpdate: 02.07.2024 Vodafone scheint das Problem mittlerweile behoben zu haben. Die korrekten DNS Einträge werden nun auch an externe DNS Server durchgereicht.","date":"14. Dezember 2023","extent":"3 Min. Lesezeit","permalink":"/de/posts/vodafone-kabel-sip-403-error/","summary":"Seit Anfang Dezember stehe ich vor einem Rätsel: Der SIP-Login meiner Telefonanlage über Vodafone funktioniert nicht mehr wie gewohnt. Als Nutzer eines privaten Modems, das für die Nutzung von VoIP bei Vodafone erforderlich ist, stellte dies ein unerwartetes Hindernis dar. Nach umfangreichen Recherchen im Internet und insbesondere im Vodafone-Forum stieß ich auf eine interessante Entdeckung: Die SIP-URL wird von öffentlichen DNS-Servern wie Google und Cloudflare nicht korrekt aufgelöst, was zu einem 403-Forbidden-Fehler führt. Erst der offizielle Vodafone-DNS-Server löst die URL korrekt auf.","title":"Vodafone Kabel SIP 403 Forbidden Error"},{"content":"Seit Ubuntu 22.04 ist es möglich, systemd auf WSL-Installationen im experimentellen Modus zu verwenden. In dieser Anleitung zeigen wir dir, wie du systemd in nur wenigen Schritten einrichtest.\nSchritt-für-Schritt Anleitung Paket wsl-setup installieren Falls noch nicht vorhanden, installiere es mit:\nsudo apt install wsl-setup WSL-Konfigurationsdatei erstellen Lege eine Datei /etc/wsl.conf an. Die offizielle Dokumentation findest du hier .\nFür WSL, das mit Windows 10/11 kommt:\n[boot] command=\u0026#34;/usr/libexec/wsl-systemd\u0026#34; Für WSL Preview aus dem Microsoft Store unter Windows 11:\n[boot] systemd=true Benutzerverzeichnis anlegen und Rechte setzen Optional, aber notwendig für snapd:\nsudo mkdir -p /run/users/1000 sudo chown $USER:$GROUP /run/users/1000 WSL neu starten Starte WSL von Windows aus mit folgendem Befehl oder setze ihn als Startoption in deinem Terminal:\nwsl -e /usr/libexec/nslogin /bin/bash Nützliche Links Offizieller Ubuntu Bug Report Installations-Snippet ","date":"24. Juni 2022","extent":"1 Min. Lesezeit","permalink":"/de/posts/wsl-enabling-systemd-ubuntu22.04/","summary":"Seit Ubuntu 22.04 ist es möglich, systemd auf WSL-Installationen im experimentellen Modus zu verwenden. In dieser Anleitung zeigen wir dir, wie du systemd in nur wenigen Schritten einrichtest.\nSchritt-für-Schritt Anleitung Paket wsl-setup installieren Falls noch nicht vorhanden, installiere es mit:\nsudo apt install wsl-setup WSL-Konfigurationsdatei erstellen Lege eine Datei /etc/wsl.conf an. Die offizielle Dokumentation findest du hier .","title":"WSL2: systemd in Ubuntu 22.04 aktivieren"}]