

Working Draft
Vanessa Otto, Peter Kröner, Hans Christian Reinl, Stefan Baumgartner, Christian »Schepp« Schaefer
Working Draft ist der deutschsprachige Podcast für Frontend-Entwicklung, Webdesign und UI Engineering.
Bei uns geht’s um HTML, CSS, JavaScript, Frameworks wie React, Vue und Angular, Responsive Webdesign, User-Interfaces, moderne UI-Patterns, Barrierefreiheit, Tooling, Design-Systeme, Webstandards und mehr.
Unser Team besteht aus erfahrenen Frontend-Entwickler:innen aus Deutschland und Österreich – mit Gästen aus der Praxis, die regelmäßig Einblicke in aktuelle Tech-Themen geben. Ob neue CSS-Features, die Zukunft von JavaScript, KI im Frontend-Workflow oder einfach gute UI-Erfahrungen: Wir reden drüber – jede Woche neu.
Bei uns geht’s um HTML, CSS, JavaScript, Frameworks wie React, Vue und Angular, Responsive Webdesign, User-Interfaces, moderne UI-Patterns, Barrierefreiheit, Tooling, Design-Systeme, Webstandards und mehr.
Unser Team besteht aus erfahrenen Frontend-Entwickler:innen aus Deutschland und Österreich – mit Gästen aus der Praxis, die regelmäßig Einblicke in aktuelle Tech-Themen geben. Ob neue CSS-Features, die Zukunft von JavaScript, KI im Frontend-Workflow oder einfach gute UI-Erfahrungen: Wir reden drüber – jede Woche neu.
Episodes
Mentioned books

Sep 2, 2025 • 1h 39min
Revision 677: Local AI
Local AI, also KI-Modelle, die direkt auf dem Gerät laufen, statt in der Cloud, gewinnen aktuell enorm an Bedeutung. Einen neue Ansatz dafür bieten die neuen Chrome Built-in AI APIs, mit denen Entwickler:innen direkt im Browser auf mächtige KI-Funktionalitäten zugreifen können – ganz ohne eigene Modelle zu laden oder Cloud-Anfragen ausführen zu müssen. Diese lokal ausgeführten Modelle schützen die Privatsphäre, ermöglichen Offline-Nutzung und sparen Ressourcen – was für Nutzer:innen und Firmen gleichermaßen attraktiv sein kann.
Unser Sponsor
Die KI-Revolution ist da – bist du bereit, sie aktiv zu gestalten?
Workshops.DE macht dich fit für die Praxis: In intensiven Schulungen lernst du, Künstliche Intelligenz nicht nur zu verstehen, sondern gezielt in Projekten einzusetzen. Ob vor Ort, remote oder als individuelle Firmenschulung – bring dein Team auf das nächste Level!Informier dich jetzt über die aktuellen Kurse und sichere dir deinen Platz auf workshops.de/ki.
Mit dem Rabatt-Code WORKINGDRAFT sparst du außerdem 10 % auf alle Schulungen!
Für diese Folge haben wir Thomas Steiner (Web / Mastodon / Bluesky), eingeladen, der nicht nur Google Developer Relations Engineer ist, sondern auch tief im Thema steckt. Gemeinsam mit Vanessa und Schepp spricht Thomas darüber, wie die Chrome APIs funktionieren, welche Features sie bieten und welche Herausforderungen es aktuell noch gibt. Außerdem beleuchten wir die Perspektiven anderer Browser-Hersteller und die Zukunft der Local AI im Web.
Schaunotizen
[00:01:37] Local AI
Warum ist Local AI wichtig? Thomas erklärt, dass lokale Ausführung vor allem Datensicherheit bedeutet – Daten werden nicht an einen Server geschickt. Obendrein sind entsprechende Anwendungen auch offline nutzbar und für Firmen günstiger, weil keine Cloud-Anfragen nötig sind. Der Browser stellt dabei ein generisches KI-Modell bereit, etwa Gemini Nano, das mit nur 4,29 GB auf der Festplatte auch auf Durchschnittsgeräten läuft.Die APIs sind einfach per wenigen Zeilen JavaScript nutzbar und bieten mächtige Funktionen, z.B. Übersetzung (Translation API), Schreiben (Writer API), Korrektur (Proofreader API) und generelle Eingabe per Prompt API. Multimediale Eingaben wie Bilder oder Audio werden unterstützt, was spannende Usecases erlaubt: zum Beispiel Audio transkribieren, bestimmte Audioinhalte filtern, Bilder für assistive Technologien beschreiben oder Personalausweise clientseitig auf Plausibilität prüfen.Ein Grund für mehrere dedizierte APIs statt nur einer Prompt API liegt darin, dass Gemini Nano ein vergleichsweise kleines, aber leistungsfähiges LLM ist. Das erlaubt die Nutzung auf Geräten mit begrenzter Hardware – aktuell läuft die KI auf GPU, aber es wird daran gearbeitet, dass sie auch auf CPU-only Geräten läuft, z.B. günstigen Android-Geräten. Techniken wie „early exit“ helfen, auf mobilen Geräten Energie zu sparen, indem man Antworten frühzeitig abschließt.
Derzeit werden entsprechend nur MacOS, Windows und Linux unterstützt, Chrome OS fehlt neben Android ebenfalls noch. iPad und iOS sind durch WebKit noch eingeschränkt, hier fehlen derzeit viele Freiheiten.
Wir diskutieren auch den Gegenwind von anderen Browserherstellern: Bedenken gibt es wegen möglichem Fingerprinting, obwohl die Modelle statisch sind und nicht lernen. Ein weiteres Thema ist die Testbarkeit nicht-deterministischer KI-Features, hier experimentiert man mit Quizfragen, um die Qualität zu prüfen. Außerdem sind die lokal verfügbaren Modelle derzeit auf Englisch beschränkt, was der globalen Web-Community nicht gerecht wird.
Zum Schluss wagen wir einen Ausblick: Wenn man den Anwendungsfall klar entkoppelt, z.B. reine Übersetzung, steigt die Chance, dass auch andere Browser wie Apple Safari eigene KI-APIs nachziehen. Die Entwicklung ist dynamisch, und mit Initiativen wie dem W3C Web Machine Learning Group und Firebase AI entstehen Standards für die Zukunft.
Links
Working Draft Folge 399
Frühere Episode mit Thomas Steiner zu Project Fugu.
Working Draft Folge 563
Follow-up-Folge zu Project Fugu.
Chrome AI Übersicht
Grundlegende Infos zu den Chrome Built-in AI APIs.
Chrome Built-in AI APIs
Dokumentation zu den einzelnen API-Methoden wie Writer, Translator, Prompt API u.a.
Gemini Nano
Infos zum kleinen, effizienten KI-Modell, das lokal läuft.
Writer API
API für Textgenerierung und -verbesserung im Browser.
Prompt API
Flexible Schnittstelle für KI-Anfragen via Prompts.
Translator API
API zur Übersetzung mit lokalen (KI-)Modellen.
Chrome Roadmap
Überblick zu kommenden Features und API-Entwicklungen.
Chromium Bug Tracker
Offene Tickets und Diskussionen rund um die KI-Integration in Chromium.
Chrome Early Preview Program
Wie man frühzeitig Zugriff auf neue AI-Funktionalitäten im Browser bekommt.
Firebase AI
Google Cloud-basierte KI-Dienste, die das Ökosystem ergänzen.
W3C Web Machine Learning Group
Arbeitsgruppe zur Standardisierung von KI-Funktionalitäten im Web.

Aug 26, 2025 • 1h 54min
Revision 676: Local First
Elf Jahre (und 501 Revisionen) nach seinem letzten Besuch in Revision 175 war Jan Lehnardt (LinkedIn / Mastodon / Bluesky) wieder bei uns zu Gast. Mit Schepp und Vanessa spricht er über die Idee hinter „Local First“.
Schaunotizen
[00:01:09] Local First
Was heißt eigentlich „Local First“? Wir starten mit einer Rückblende auf das Jahr 2013: Damals war „Offline First“ das neue heiße Ding – erdacht von Jan höchstselbst und in Worte gegossen von Jans Mitstreiter Alex Feyerke im A List Apart Essay. Aus seiner Arbeit an CouchDB und PouchDB heraus entstand der Gedanke, dass Applikationen auch ohne Verbindung zum Internet sinnvoll funktionieren sollten. Dabei nutzt man ein System verteilter Datenbanken, sei es im Internet, im Intranet oder auf dem Anwendergerät selbst zwischen denen Daten in Form von Dokumenten synchronisiert werden. Ähnlich wie es mit Git möglich ist. Anders als bei Git, treten Merge-Konflikte allerdings schon dann auf, wenn gleichzeitig dasselbe Dokument verändert wurde. Diese Konflikte gilt es dann manuel zu lösen.
Wir sprechen über spannende Anwendungsfälle, die der „Offline First“-Ansatz überhaupt erst möglich gemacht hat – von Ebola-Krisenhilfe über die COVID-Impf-Infrastruktur in Bayern bis hin zur Koordination und Planung humanitärer Konvois in Krisengebieten.
„Local First“ setzt im Grunde auf ähnliche Prinzipien wie einige Jahre zuvor „Offline First“, wie es auch die sieben Prinzipien von „Local First“ dokumentieren. Technisch ist „Local First“ allerdings etwas anspruchsvoller, weil es stärker darauf ausgerichtet ist, dass Nutzende an ein und demselben Dokument gleichzeitig arbeiten können. Realisiert wird das über Conflict-free Replicated Data Types (CRDT).
y.js, JSON CRDTs, Operational Transforms (wie einst bei Google Wave) und Automerge sind Werkzeuge, die einem hier feingranulare Synchronisation und Konfliktlösungen ermöglichen. Jan erklärt, dass auch CouchDB mittlerweile gelernt hat, Konflikte automatisch zu lösen und es damit auch besser für gleichzeitige Arbeiten am selben Dokument gerüstet ist.
Links
Jans letzter Besuch (Revision 175)
2014 sprachen wir mit Jan über CouchDB, Hoodie und das Web der Zukunft.
Offline First Essay bei A List Apart
Alex‘ und Jans Ursprungsidee aus 2013 für resilientere Apps – und der Startpunkt für Local First.
Das Local-First Essay
Das Manifest von Ink & Switch, das die Prinzipien für Local First formuliert hat.
How to Sync Anything
Ein tiefgehender Artikel über Synchronisationsstrategien und verteilte Datenmodelle.
Jans Talk bei der Local First Conf
Einblicke in die Herausforderungen und Fortschritte im Bereich Local First – Stand 2025.
Cozy Cloud
Ein Beispiel für eine Local-First Cloud-Infrastruktur.
Linear
Ein Tool, das auf lokale Performance setzt – und damit auch UX-Gold gewinnt.
The UX of Local First (Eileen Wagner)
Wie sich UX für Local First anfühlen kann – Vortrag von der Local First Conf.
Heise: Corona-Testdaten öffentlich
Beispiel für schlechte Sicherheitspraktiken während der Pandemie – was man besser machen muss.
Martin Kleppmann: Local-First Software (PDF)
Wissenschaftliche Grundlage hinter dem Local-First-Gedanken.
Yjs
Yjs stellt Shared Types zur Verfügung, die wie jeder andere Datentyp manipuliert werden können, sich aber automatisch synchronisieren können.
Automerge
Ein Framework für CRDT-basierte Synchronisation ohne zentrale Server.
CouchDB Konfliktlösung wie Git
Blogpost von Neighbourhoodie über moderne Konfliktlösungsansätze in CouchDB.
Tiptap & y.js
Tiptap-Editor mit y.js für Echtzeit-Kollaboration – ein Praxisbeispiel für Local First Tools.
LORA Netzwerk
Low Range Wide Area Network – effizient, energiearm und offlinefähig.
Sync Conf (Discord)
Austausch über Synchronisationsstrategien, Technik und Patterns für verteilte Systeme.
Local First Software (Discord)
Die Community zum Thema Local First – inkl. Jobbörse und Projektvorstellungen.
Offline First Slack
Slack-Community mit über 11.000 Mitgliedern zum Thema Offline- und Local-First-Software.

Aug 19, 2025 • 1h 18min
Revision 675: Green Web
Was macht eigentlich ein Webprojekt klimafreundlich(er)? In dieser Revision sprechen wir mit Björn Ganslandt über nachhaltige Webentwicklung – von Hosting über Frontend-Optimierung bis zur Frage, was eigentlich AI in puncto Energieverbrauch bedeutet. Björn ist Entwickler, Berater und Community-Mensch und bringt viele praktische Erfahrungen aus seiner Arbeit rund um Green IT mit.
Unser Sponsor
Maximale Performance für all deine Projekte? Bei mittwald brauchst du dir nie wieder Sorgen um Performance-Einbrüche machen. Der Traffic kann ruhig durch die Decke gehen, deine Seite bleibt immer rasend schnell.
mittwald hat Hosting neu gedacht und alles auf die besonderen Anforderungen und Workloads von Agenturen und Freelancern optimiert – inklusive Infrastruktur, benutzerfreundlicher Oberfläche und flexiblen Tarifen. Egal, ob du deinen Server selbst konfigurieren möchtest oder das mittwald-Team sich um die optimalen Specs kümmern soll. Der persönliche Kundenservice unterstützt dich 24/7 bei allen Fragen rundum WordPress, TYPO3, Shopware oder was auch immer dich gerade beschäftigt. Im firmeneigenen und TÜV-zertifizierten Rechenzentrum sind deine Daten in sicheren Händen. Und das Beste? Wer seine Projekte bei mittwald hostet bekommt nicht nur die besten Server, sondern auch 100% CO2-neutrales Hosting. Also, worauf wartest du? Geh jetzt auf mittwald.de/workingdraft und buch dein erstes Projekt!
Schaunotizen
[00:08:28] Wie wähle ich einen grünen Hoster aus?
Wir besprechen, worauf man achten kann: Nutzt der Hoster wirklich erneuerbare Energie – oder kompensiert er nur nachträglich? Wie transparent sind diese Angaben? Hilfreich ist hier das Verzeichnis der Green Web Foundation, das grüne Hoster listet und deren Energiequellen einordnet.
[00:12:54] Was heißt es überhaupt, wenn ein Hoster mit erneuerbarer Energie betrieben wird?
Grün ist nicht gleich grün: Viele Hoster betreiben ihre Server zwar mit Ökostrom, dieser kommt aber womöglich aus dem allgemeinen Netzmix. Rechenzentren in Windkraftanlagen – wie bei WindCores und WindCloud – oder Abwärmenutzung bei Leafcloud zeigen Alternativen auf.
[00:21:11] Wo entstehen Emissionen, wenn Daten über das Netzwerk gehen?
Datenübertragung ist ein oft übersehener Faktor: Die Emissionen entstehen im gesamten Übertragungsweg – vom Rechenzentrum über Backbone und Knotenpunkte bis hin zum Endgerät. Tools wie Electricity Maps oder das Realtime Carbon Dashboard der Green Web Foundation helfen, die Herkunft des Stroms zeit- und ortsgenau zu verstehen und Übertragungsvolumina anzupassen.
[00:33:51] Was kann ich im Frontend tun, um Emissionen zu verringern?
Weniger ist mehr: Kleinere Bildformate (z. B. AVIF statt PNG) und weniger JavaScript helfen. Doch welches Bildformat ist nun wirklich besser? Studien wie von Greenspector oder Fershad Iranis Firefox-Profiling liefern Zahlen dazu.
[00:41:20] „Grid Awareness“
Neben Tools wie co2.js oder dem Carbon Aware SDK, die einem sagen wie CO²-intensiv die Stromerzeugung beim Besucher gerade ist, geht es bei der „Grid Awareness“ auch um das richtige Timing: Updates, Deployments und schwere Rechenaufgaben sollten möglichst in Phasen mit grünem Strom erfolgen. Auch Microsofts Xbox-Team macht das inzwischen so.
[00:55:47] Was weiß man über die Energienutzung von AI – und was nicht?
Vieles ist noch spekulativ: Training von Modellen verbraucht massiv Energie, das weiß man. Aber was ist mit der Nutzung? Wie messen wir das? Und wie viel Energie spart AI möglicherweise auch ein – etwa durch effizientere Prozesse oder optimierte Codegenerierung? Hier fehlt oft die Vergleichsbasis, aber einige erste Studien und Diskussionen gibt es bereits.
Links
A-Tag Wien
Barrierefreiheitskonferenz mit wachsendem Fokus auf Nachhaltigkeit in der Webentwicklung.
CSS in Vienna
Regelmäßiges Treffen der CSS-Community in Wien.
ClimateAction.tech
Slack-Community mit über 11.000 Techies, die sich für nachhaltige Digitalisierung einsetzen.
Permacomputing (Meetup(s))
Meetup über digitale Langlebigkeit, Low-Tech und resiliente Softwareansätze.
Green Web Foundation
Hoster-Verzeichnis und Tools zur Bewertung von Infrastruktur nach Klima-Kriterien.
Web Almanac 2024 – Sustainability
Umfassende Datenanalyse zum Status quo nachhaltiger Webentwicklung weltweit.
Das üble Geschäft mit Carbon-Offsets
Schlechtes Gewissen, weil fettes Auto gekauft? Mit Carbon-Offsets kann man sich freikaufen – so einfach ist es aber nicht.
Primaklima e. V.
Anbieter für CO₂-Kompensation durch Waldprojekte – mit glaubwürdigem Ansatz.
Electricity Maps
Zeigt live den CO₂-Ausstoß von Strommixen weltweit – hilfreich für „grünes Timing“.
Agora Energiewende Agorameter
Forschung und Visualisierung zur deutschen Energiewende und Stromherkunft.
Realtime Cloud Carbon Dashboard
Zeigt PUE-Werte (Power Usage Effectiveness) und Energiequellen von Cloud-Anbietern.
WindCores
Betreibt Server direkt in Windkraftanlagen – ohne Umweg übers Netz.
WindCloud
Norddeutscher Anbieter mit grüner Energie und Nutzung der Serverabwärme.
Leafcloud
Betreibt Server unter anderem in Schwimmbädern – Serverabwärme heizt das Wasser.
Carbon Aware SDK
Open-Source-SDK, mit dem sich CO₂-sensitive Workflows in Software integrieren lassen.
co2.js
Bibliothek zur CO₂-Schätzung im Code – funktioniert auch mit Cloudflare Worker.
Fershad Irani: AVIF vs WebP im Firefox Profiler
Vergleich der Bildformate aus Sicht der Energieeffizienz im echten Rendering-Kontext.
Greenspector: Which image format choose to reduce energy consumption and environmental impact?
Vergleicht Bildformate hinsichtlich ihrer tatsächlichen Energie- und CO₂-Kosten.
Branch Magazine
Online-Magazin zu digitaler Nachhaltigkeit – kuratiert von der Green Web Foundation und Co.
COP Website Fail
Berüchtigtes Beispiel: Die offizielle Konferenzseite der Klimakonferenz war alles andere als klimafreundlich.
RUMVision: Device Memory als Proxy
Der Artikel zeigt, wie sich Geräteeigenschaften wie Arbeitsspeicher auf die Ladezeit von Websites auswirken.
Device Memory API
Die Device Memory API erlaubt es Websites, die ungefähre RAM-Größe eines Geräts auszulesen, um Inhalte entsprechend anzupassen.
Cost of a pixel color (Android Dev Summit ’18)
Google zeigte hier, wie viel Energie dunkle Interfaces im Android-System einsparen können und dass die Farbe Blau mehr Strom frisst als die Farbe Rot.
BBC-Testreihe zur Bildschirmhelligkeit bei Dark Mode
Die BBC untersuchte, ob und wie stark sich durch Dark Mode der Energieverbrauch senken lässt – mit gemischtem Ergebnis.
Wagtail CMS Blogpost zu Dark Mode
Erfahrungsbericht und technische Hintergründe zur Implementierung eines Dark Modes im beliebten Python-CMS.
W3C Web Sustainability Guidelines
Die Nachhaltigkeitsrichtlinien fürs Web betonen: Barrierefreiheit ist auch eine Frage der Langlebigkeit und Effizienz.
Mistral legt erschreckende Umweltbilanz für KI-Modelle vor
Training und Ausführung von Abfragen tragen 85,5 Prozent der CO2-Emissionen und 91 Prozent des Wasserverbrauchs. Millionen von Abfragen summieren sich zu messbaren Umweltfolgen.
Python CodeCarbon für GPU
CodeCarbon misst den Energieverbrauch von Python-Skripten – auch für GPU-lastige AI-Workloads wie Llama.
EcoLogits Calculator (Huggingface)
Ein Verbrauchsrechner für AI-Modelle bei Huggingface – aktuell noch experimentell, aber in Entwicklung.
AI Summit: „Within Boundaries“-Statement
Diskussionspapier zur Frage, wie weit AI gehen darf – auch mit Blick auf ökologische Grenzen.
Huggingface AI Energy Score
Eine grobe Klassifikation von Modellen nach Energiebedarf – mit dem Ziel, Transparenz zu schaffen.
Rebound Effekte
Effizienz allein reicht nicht: Der Rebound-Effekt beschreibt, wie Einsparungen durch Mehrnutzung wieder aufgefressen werden.
Green Software Meetup Düsseldorf
Lokales Meetup für alle, die Software nachhaltiger machen wollen – von Öko-Strom bis Bildformat.
Green.io Conference
Konferenz mit Fokus auf grüne Softwareentwicklung – spannender Austausch zwischen Tech und Umweltaktivismus.
Bits & Bäume
CCC-nahe Konferenz zu Digitalisierung und Nachhaltigkeit – mit vielen zivilgesellschaftlichen Perspektiven.

Aug 12, 2025 • 58min
Revision 674: Security Awareness ohne Moralkeule
Heute ist Katharina Hoffmann (ein paar Blogposts gibts hier) zu Gast, um das Thema Security mal richtig zu beleuchten. Und dabei geht es kaum drum, wie man seinen Node.js Service baut, damit keine Script-Injections in die Datenbank kommen, sondern um viel mehr.
[00:01:08] Schaunotizen
Security Awareness ohne Moralkeule – wie man Menschen wirklich erreicht
Irgendwie muss man sich dem Thema Security doch in jedem Kontext annehmen. Aber als Hoster, wie Mittwald es ist, sollte man die ganze Sache schon etwas geordneter annehmen. Das tun sie auch – also Katharina tut es. Und darüber spricht sie mit uns: Wie baut man eigentlich die richtige Security Kompetenz über Teamgrenzen hinweg auf, beispielsweise warum man die Reinigungskräfte nicht vergessen sollte? Und wie schafft man es, dass auch alle Leute Lust darauf bekommen, das Thema ernster zu nehmen. Welche Guidelines braucht es eigentlich? Und wie finden heutzutage die Angriffe auf Firmen so statt? Stichwort Social Engineering.
Aber hört selbst…

Aug 5, 2025 • 1h 30min
Revision 673: VoidZero
Vanessa und Stefan haben Alexander Lichter zu Gast, seines Zeichens Vue.js Community Größe und Dev Rel bei void(o).Um das von Vue.js und Vite Erfinder Evan You gegründete Startup für „Next Generation Tooling“ geht es auch in der heutigen Revision.
Schaunotizen
[00:01:00] VoidZero
Wir erfahren welche Projekte void(0) unterstützt, betreut, oder sogar ganz verantwortet. Wir reden über Open Source Governance, den meme-tauglichen „Rewrite in Rust“ und hinterfragen dabei unter anderem kritisch welchen Einfluss ein VC gefördertes Startup auf kritischen JavaScript Infrastruktur haben darf. Vergleiche mit einem bekannten Serverless Hosting Unternehmen aus San Francisco und deren berühmt-berüchtigte Unterwanderung der React.js Szene bleiben da natürlich nicht aus, der Vollständigkeit halber sei aber erwähnt, dass wir die Folge vor dem nicht weniger überraschenden Kauf von NuxtLabs aufgezeichnet haben.
Links
oxc. Ein JavaScript Transpiler und Minifier, in Rust geschrieben.
Rolldown. Modulbundling in Rust.
Vitest. Ein schnelles Testframework aus der Vue.js und Vite Ecke
Vite. Ein ganz beliebter Development Server.
Nuxt. Das Meta-Framework von Vue.js
swc. Der Speedy Web Compiler macht auch viel in Rust und ist schnell.

Jul 29, 2025 • 1h 28min
Revision 672: New Stuff coming to CSS
It’s not every day we get to talk to someone who actually helps shape the CSS of tomorrow – which is why we were thrilled to welcome back Adam Argyle (LinkedIn / Bluesky / Mastodon), creative tinkerer, punk engineer and a big fan of CSS, JS and great UX!
Together with Schepp and Vanessa, Adam takes us on a tour of what’s new and what’s next in CSS. From cutting-edge selectors and scroll state features to color functions, motion preferences, and even the future of form controls – this episode is packed with practical insights and exciting perspectives.
Show Notes
[00:01:03] contrast-color() & CSS color tooling
We kick things off by talking about the new contrast-color() function and why it’s a big deal for authoring accessible themes. Adam explains how tools like his Observable playground help explore the complexities of calculating good contrast. We also touch on the prefers-contrast media query and how it relates to other preference queries like prefers-reduced-data or forced-colors.
[00:37:40] control-value()
Adam introduces the control-value() function that allows you to style components based on their value – like coloring inputs depending on current value – and we talk about a future where CSS can directly react to user interaction or state without JavaScript. This ties into upcoming functions like sibling-index() and sibling-count(), with a great demo on nerdy.dev.
[00:43:07] Scroll Experience
What if you could style elements differently based if they are overflowing, or if they are snapped or stuck? That’s what scroll-state() unlocks. Adam walks us through why it matters for carousels and nested scroll containers. We also touch on related concepts like scroll-snap, the scrollsnapchanging, scrollsnapchange and scrollend events, ::scroll-marker and ::scroll-button() pseudo elements. Links include a full CSS-only Nintendo-style home screen on nerdy.dev and Chrome’s carousel demo.
[01:17:29] Mixins, Functions & if-Statements
Mixins and functions are finally coming to CSS to make code and mechanics reusable! So are if-statements. Una did a short video on those.
[01:20:10] @starting-style, transition-behavior & 3D view transitions
We discuss how @starting-style and transition-behavior: allow-discrete open new possibilities for complex animations. Adam references his CSS Day slides and what he calls “pleasant to use” transitions, including view transitions and split-text effects. We talk about the challenges of layering interactivity and animation, and where tools like GSAP might still help.
[01:21:36] Custom form controls
The customizable <select> element finally becomes a reality! We dive into how Chrome is exposing a lot of its UI internals via new pseudo-elements. More info on the Chrome Dev Blog.
[01:23:26] The future: CSS 4? CSS 5?
Do we still believe in the CSS Level model? Adam shares his views on what CSS 4 or 5 might mean today and what „groupings“ of features could look like. We also touch on Apple’s contributions to modern CSS and the coordination between browser vendors. For more on the terminology mess: listen to our episode 640 (German).
Links
contrast-color()
Automatically computes a legible foreground color based on a background.
contrast-color playground
Adam’s interactive tool to visualize color contrast behavior.
sibling-index()
A future CSS function to style elements based on their position within siblings.
Nintendo Switch home screen demo
Fully CSS-driven demo showcasing advanced scroll and interaction techniques.
Chrome CSS Carousel Demo
Google’s showcase of scroll snapping and scroll-triggered UI using pure CSS.
CSS Day 2025 slides
Adam’s slide deck with plenty of demos and visuals from his CSS Day presentation.
A customizable <select>
Chrome exposes pseudo-elements for fully styling native dropdowns.
„Oh Snap!“ talk by Adam Argyle
Adam’s in-depth talk about scroll, snapping and modern interaction affordances in CSS.

Jul 22, 2025 • 1h 3min
Revision 671: Angular v20 und der NgRx SignalStore
Wir sprechen mit Rainer Hahnekamp (Web / LinkedIn / Bluesky), über den neuen SignalStore – eine Spielart von NgRx, die Angular Signals nutzt und derzeit für frischen Wind im State-Management sorgt. Als aktiver Contributor bei NgRx kennt Rainer nicht nur die technische Seite, sondern auch die Prozesse hinter den Kulissen des Angular Frameworks.
Schaunotizen
[00:001:11] NgRx SignalStore
Wir klären, wie sich der SignalStore von bisherigen NgRx-Ansätzen unterscheidet, wie viel Redux noch drinsteckt und wie sich das Ganze im Vergleich zu RxJS verhält. Besonders spannend: Auch wenn Signals vieles vereinfachen, sind Observables damit längst nicht überholt.
Ein weiteres Thema sind Angular Zones – und wie man mit oder auch bewusst ohne sie performant Anwendungen bauen kann. Außerdem werfen wir einen Blick auf das neue „Resources“-Feature in Angular, das – ähnlich wie Signals – den Framework-Kern modernisieren soll.
Zum Schluss geht’s noch um Open Source: Wie wird man eigentlich Contributor bei Projekten wie NGRX? Was braucht es, damit ein neues Feature wie der Signal Store überhaupt entstehen kann?
Links
ng News
Ein wöchentlicher Video-Newsletter mit den wichtigsten Angular-Neuigkeiten, abgehandelt in 100 Sekunden
Angular: The Documentary | An origin story
Die Angular-Dokumentation im Videoformat – verständlich und unterhaltsam aufbereitet von Cult.Repo (formerly Honeypot).
Angular Architects
Schulungen, Workshops und Blogposts zum Thema Angular
Minko Gechev | Converging Web Frameworks
Vortrag von Minko Gechev über den konvergierenden Trend bei modernen Webframeworks.

Jul 15, 2025 • 1h 29min
Revision 670: Neuerungen in WebKit
In dieser Folge widmen wir uns erneut ganz WebKit – und dem, was sich dort aktuell alles tut und in den letzten Monaten getan hat. Schepp und Peter diskutieren neue Features, (alte) Probleme sowie APIs, die bereits in Safari gelandet sind oder bald landen werden.
Schaunotizen
[00:01:09] Google I/O 2025 & CSS-only Carousels
Zum Einstieg beklagen wir wie themenarm die Google I/O dieses Jahr für uns Frontend-Menschen war. Das einzig wirklich spannende Ding waren die Vorstellung der CSS-Primitiven für den Bau von Karussells. Allerdings steckt in dem Thema noch sehr viel Arbeit an der Barrierefreiheitsfront, wie Sara Soueidan dargelegt hat. Der Rest bestand aus eilig herbei-geprototypeten Demos.
[00:19:34] Multipage View Transitions
Mit nur zwei Zeilen Code aus dem WebKit-Blogpost lassen sich flüssige Seitenübergänge realisieren. Wir berichten von unseren eigenen Versuchen mit View Transitions und verweisen auf die Library ramjet, die ähnliche Effekte wie die View Transitions schon seit zehn Jahren ermöglicht.
[00:25:46] (Root) Line-Height Units: lh/rlh
WebKit führt neue Einheiten für die Zeilenhöhe ein, die konsistentere Text-Layouts erlauben. Wir schweifen an dieser Stelle kurz ab und sprechen darüber, wie das CSS Typed OM funktioniert.
[00:29:24] margin-trim
Mit margin-trim lassen sich über den Rand ragende Margins von Kind-Elementen abschneiden, was bestimmte Layouts gegenüber der :first-child/:last-child-Technik deutlich robuster umsetzbar werden lässt.
[00:33:52] text-wrap: pretty
Das neue Umbruch-Verhalten text-wrap: pretty sorgt für elegantere Zeilenumbrüche und optimierte Worttrennung. Die WebKit-Menschen haben es aber nicht dabei belassen, mit Chrome nachzuziehen, sondern haben noch kräftig „Gold-Plating“ betrieben ‐ mit sehenswertem Ergebnis! Wem das nicht reicht, der kann in Zukunft vielleicht auf Machine-Learning zurückgreifen, um Text nach seinen Vorstellungen zu formatieren, wie es jemand in diesem Video namens „Badness 0“ demonstriert.
[00:35:20] WebKit-Bug bei Ligaturen
So stark WebKit allerdings bei Typografie sonst ist, bei einer Sache verkackt er hart: Bei der Berechnung der Laufweite von Ligaturen. Ligaturen sind eine fantastische Sache und ermöglichen es, Fonts regelrecht zu programmieren. Schrift-Entwicklerin Ulrike Rausch bildet hier die Speerspitze mit ihren „Liebe“-Fonts und dem Font „Liebe Heide“ im Speziellen. Ein wenig in das Thema eingetaucht ist Schepp neulich auch, als er mit Hilfe eines SVG und OpenType.js (master Branch) eine Ligatur in eine Schrift eingebaut hat, welche alle Vorkommen eines bestimmten Wortes im Text-Rendering automatisch durch die SVG-Grafik ersetzt. Diese Grafik läuft allerdings weiter als der damit ersetzte Text. Chrome und Firefox bemerken das und passen den Textfluss entsprechend an. Nur WebKit leider nicht, wo nachfolgender Text rechts in die Grafik ragt oder ohne Abstand an der Grafik klebt. Text Rendering Hates You!
[00:56:35] Neue Farb-Features
Safari kennt nun die (neue) contrast-color()-Funktion, welche automatisch eine kontrastreiche Schriftfarbe basierend auf einer Input-Farbe zurückgibt. Dabei beschränkt sie sich derzeit noch auf die Rückgabe von Weiß oder Schwarz. Wir sprechen über die bewegte Vergangenheit dieser Funktion, die eigentlich mal als color-contrast()-Funktion das Licht der Welt erblicken sollte, und was die Web Accessibility Initiative (WAI) und die Farbkontraste-Berechnung nach APCA mit den aktuellen Limitationen zu tun haben. Das Kontraste-Thema führt uns auch zu Lighthouse und seinen Barrierefreiheits-Checks, die viele Problemfälle nicht erkennen (können). Aus dieser Tatsache hat Manuel Matuzović sogar ein ganzes Projekt gemacht: Building the most inaccessible site possible with a perfect Lighthouse score (hier als Video).
Ebenfalls neu ist ein Upgrade des Color-Inputs, welcher jetzt die HTML-Attribute colorspace sowie das boolsche alpha versteht. Wir finden das gut, allerdings sind wir der Meinung, dass insbesondere die neuen Farbräume mit Bedacht eingesetzt werden sollten, weil eine ganze Kette von Erfordernissen für einen erfolgreichen Einsatz erfüllt sein muss. Hier stößt man aber auf das Problem, dass HTML selbst keine Möglichkeit zum Feature-Testen und des Alternativ-Pfads kennt, anders als JavaScript oder CSS. Das Problem hat man genauso bei dem relativ neuen switch-Attribut bei Checkbox-Inputs. Schepp hat das Problem in der Praxis darüber hinaus auch bei Hauptmenüs, die auf Desktop-Geräten einfache <nav>-Elemente sein sollten, auf Mobile aber <dialog>-Elemente, wenn sie sich UI-mäßig in Offcanvas-Menüs umwandeln. Peter berichtet, wie er Menüs unkompliziert (aber semantisch grenzwertig) mit dem <details>-Element auf- und zuklappen lässt. Für solch einen Ansatz spielt einem auch das neue ::details-content-Pseudo-Element in die Karten.
[01:15:42] Declarative WebPush
Mit der Declarative Web Push API lassen sich Push-Nachrichten in Zukunft ganz ohne (schwer zu handhabende) Service Worker konfigurieren. Juhuuu! Wer dennoch lieber Service Worker verwenden möchte, dem empfehlen wir zumindest den Einsatz der Library Workbox, um es erträglich zu machen.
[01:18:51] SVGs d-Property in CSS
WebKit erlaubt nun endlich als letzter Browser im Bunde, das d-Attribut von SVG-Pfaden direkt via CSS zu verändern. Auf diesen Tag hat Peter sehr lange hingefiebert ‐ und sich anderweitig beholfen! Schepp bringt das auf die Idee, ob die Custom Highlight API nicht auch ein guter Kandidat für Peters Problem hätte sein können.

Jul 10, 2025 • 22min
On Tour @ #headinthecloud – Web Sustainability mit Thorsten Jonas & Marvin Hötger
Dieses Interview ist der letzte von 3 Teilen unserer Serie On Tour @ #headinthecloud. Head in the Cloud ist eine Konferenz von Mittwald, die am 13. Juni 2025 in Espelkamp stattfand.
Web Sustainability
Mit Thorsten Jonas & Marvin Hötger.
Eigentlich muss man sich vielmehr Gedanken machen, welchen Einfluss unsere Webseiten auf die Umwelt haben. Durch Chatbots, Bilder und vieles mehr kann man als Entwickler großen Einfluss auf den CO₂-Fußabdruck einer Webseite haben. Thorsten erklärt, warum das der Fall ist und welche Maßnahmen man noch so ergreifen kann. Marvin gibt einige Beispiele aus der Praxis.
Das Video zum Talk wird zeitnah auf dem YouTube Kanal von Mittwald verfügbar sein. Den Sustainable UX Podcast wiederum findet ihr hier.

Jul 8, 2025 • 55min
Revision 669: Chat-Applikationen mit gängigen LLM-APIs
In dieser Revision sprechen Vanessa und Schepp mit Jannik Lehmann (LinkedIn), Senior Frontend Developer bei GitLab, darüber, wie man Chat-Applikationen mit gängigen LLM-APIs erstellt. Dabei geht er auf verschiedenste Stolpersteine ein, spricht über Streaming und warum der Kontext so wichtig ist.
Unser Sponsor
Maximale Performance für all deine Projekte? Bei mittwald brauchst du dir nie wieder Sorgen um Performance-Einbrüche machen. Der Traffic kann ruhig durch die Decke gehen, deine Seite bleibt immer rasend schnell.
mittwald hat Hosting neu gedacht und alles auf die besonderen Anforderungen und Workloads von Agenturen und Freelancern optimiert – inklusive Infrastruktur, benutzerfreundlicher Oberfläche und flexiblen Tarifen. Egal, ob du deinen Server selbst konfigurieren möchtest oder das mittwald-Team sich um die optimalen Specs kümmern soll. Der persönliche Kundenservice unterstützt dich 24/7 bei allen Fragen rundum WordPress, TYPO3, Shopware oder was auch immer dich gerade beschäftigt. Im firmeneigenen und TÜV-zertifizierten Rechenzentrum sind deine Daten in sicheren Händen. Und das Beste? Wer seine Projekte bei mittwald hostet bekommt nicht nur die besten Server, sondern auch 100% CO2-neutrales Hosting. Also, worauf wartest du? Geh jetzt auf mittwald.de/workingdraft und buch dein erstes Projekt!
Schaunotizen
[00:01:42] Chat-Applikationen mit gängigen LLM-APIs
LLM-APIs unterscheiden sich in zwei zentralen Punkten von klassischen APIs: Erstens sind die Antworten nicht deterministisch – das bedeutet, dass ein identischer Prompt bei jedem Request ein anderes Ergebnis liefern kann. Zweitens kommen die Antworten gestreamt an – oft in Form von Text-Chunks, die schrittweise per Server Sent Events (SSE) an den Client geliefert werden.
Ein typischer Request beginnt mit einem einfachen Prompt als Plaintext. Die Antwort wird dann dynamisch in Markdown-Form gestreamt. Doch genau dieses gestreamte Markdown bringt etliche Stolperfallen mit: Von XSS- und Prompt-Injection-Risiken über unvollständige Mermaid-Diagramme bis hin zu halbfertigen Flowcharts und weiteren seltsamen Markdown-Konstrukten, die ein LLM ausgeben kann.
Hier lohnt ein Exkurs in das Thema streambare vs. nicht streambare Dateiformate: HTML ist beispielsweise streambar, da der Browser Bit für Bit lesen und direkt rendern kann. Deshalb gibt es auch Metriken wie „First Meaningful Paint“ und Gründe dafür, warum ein Script-Tag lieber am Ende statt am Anfang einer HTML-Datei stehen sollte. Markdown hingegen ist nicht streambar – es braucht oft Kontext über mehrere Zeilen hinweg, bevor eine Darstellung sinnvoll möglich ist. Genau deshalb ist Markdown als Streaming-Format nicht ganz trivial zu handhaben.
Ein weiteres zentrales Thema ist der Kontext – oder vielmehr: wie wir mit ihm umgehen. Denn LLMs sind per se stateless. Das bedeutet: Jeder einzelne Request muss alles enthalten, was das Modell wissen soll – den Prompt, die bisherige Konversation, den System Prompt und ggf. auch hochgeladene Dateien. Aus Erfahrung wissen wir: Alle nutzen am Ende dieselben Modelle, aber wie der Kontext behandelt wird, entscheidet darüber, ob der AI-Assistent genial oder nutzlos wirkt.
Apropos Kontext: LLMs haben ein beschränktes Kontextfenster – je nach Modell unterschiedlich groß, aber immer begrenzt. Was tun, wenn dieses Limit erreicht ist? Strategien wie Sliding Windows (ältere Nachrichten rauswerfen), automatische Zusammenfassungen oder manuelle Priorisierung helfen weiter. Wichtig ist: Mehr Kontext kostet nicht nur mehr Tokens, sondern macht die Anwendung auch langsamer und teurer.
Unser Fazit: Die Komplexität solcher Systeme ist hoch – aber genau deshalb ist es so wichtig, mit kleinsten Prototypen zu starten. Sie helfen, zentrale Probleme frühzeitig sichtbar zu machen. Wer Lust bekommen hat, sich einmal ein wenig inspirieren zu lassen, dem sei der GitLab Duo Chat ans Herz gelegt. Es befindet sich als Open-Source-Projekt im GitLab Repository – man freut sich über jeden Merge Request.
Links
Server-sent Events auf MDN
Eine Einführung in Server-sent Events für die Einweg-Kommunikation vom Server zum Client.
HTMLPurifier
Ein Filter zur sicheren Bereinigung von HTML – ideal bei Benutzereingaben.
Chrome Platform Status: Sanitizer API
Die Sanitizer API erlaubt sicheres Einfügen von HTML-Inhalten direkt im Browser – ohne eigenes Parsen.
Tailwind CSS Typography
Tailwinds Lösung für schöne Standard-Typografie mit dem `@tailwindcss/typography` Plugin.
Content Security Policy auf MDN
Leitfaden zu CSP zur Vermeidung von XSS und zur Härtung von Webanwendungen.
LangChain
Ein Framework, das beim Bau komplexer Anwendungen mit Sprachmodellen hilft.
GitLab
Der Quellcode der beliebten DevOps-Plattform GitLab – vollständig open source.
Contributor Success Team bei GitLab
Das Team hinter GitLabs Bemühungen, externe Beiträge erfolgreich zu integrieren.