Working Draft

Wöchentlicher News-Podcast für Webdesigner und -entwickler

Unterstützung

Wir optimieren unser Audio mit Auphonic, wo ihr uns Processing-Time kaufen könnt! Alternativ findet Ihr uns auch auf Patreon:

Become a Patron!

Werben bei Working Draft!

Mit zehnjähriger Geschichte und über 5000 Downloads pro Folge ist Working Draft der etablierteste Podcast für Webentwickler im deutschsprachigen Raum. Wenn ihr neue Entwicklerkollegen sucht oder ein Produkt für Webentwickler anbietet, schreibt uns unter sponsoring@workingdraft.de.

Revision 505: ES-Module und ein bisschen TypeScript 4.5

30. November 2021 | 1 Kommentar

Erneut trafen sich Stefan und Peter unter dem Vorwand einer neuen TypeScript-Version um ihrem Zorn über alle möglichen Gesamtsituationen Luft zu machen.

Schaunotizen

[00:01:55] State of the ECMAScript Module
TypeScript wollte besseren ESM-Support ausrollen und hat’s dann doch nicht getan. Warum? Weil aktuell JS-Module ein einziges Chaos sind! Wir gedenken den Ahnen (RequireJS- und CommonJS-Modulen sowie Browserify) und verfluchen sie für das, zu dem sie den ESM-Standard verleitet haben. Zwischen unserem Geschimpfe sprechen wir auch über modul-relevante Tools der nächsten (Rome, Vite, esbuild, swc, deno) und letzten Generation (Jest, Closure Compiler, Less, Sass), sowie ein wenig über React, die ScriptConf, Rust (und andere Sprachen) als die Zukunft von JS-Infrastruktur und LLVM.
[00:00:00] TypeScript 4.5
So sehr uns das Modul-Chaos ärgert, so gut finden wir dann doch Tail-Recursion Elimination für rekursive Typen (übrigens ein ES6-Feature, das bis heute fast in keiner JS-Engine funktioniert), lib-Upgrades und Use Cases wie den ResizeObserver, Neuerungen für Template String Types, Top-Level-Await, Private Field Presence Checks, Import Asertions, JSDOC, TSDOC und SOAP.

Revision 504: Analytics- & Tracking-Tools

23. November 2021 | 1 Kommentar

Aller guten Dinge sind drei, und so kam es dass wir Jon Uhlmann (@jonnitto) zum dritten Mal als Gast einladen konnten, um mit ihm über den Themenkomplex „Analytics & Tracking Tools“ zu sprechen. Unsere vorherigen Ausgaben mit ihm findet Ihr unter Revision 490: Alpine JS & Petit Vue mit Jon Uhlmann und Revision 496: Tooling rund ums Frontend Tooling.

Schaunotizen

[00:01:50] Analytics- & Tracking-Tools
Wir beginnen mit einer Aufzählung der verschiedenen Arten an Analytics- & Tracking-Tools: Angefangen hat alles Ende der Neunziger mit Perl-befeuerten Besucherzählern und dem Auswerten von Server Logs – z.B. mit AWStats, das auch wir hier vom Podcast noch heute benutzen, um unsere Downloadzahlen zu tracken. Mitte der Zweitausender kaufte Google die Firma Urchin inklusive Ihres gleichnamigen Analytics-Tools, welches im Anschluss in „Google Analytics“ umbenannt und zur kostenlosen Nutzung freigegeben wurde. Entsprechend explodierte danach der Einsatz dieses Tools. Noch etwas später wurden Werkzeuge populär, die Besuchersessions tracken Besucherverhalten in Heatmaps abbilden, wie z.B. Hotjar. Die neueste Errungenschaft sind sogenannte „Retargeting“-Pixel, mit denen Werbetreibende, aber auch Facebook erkennen, dass man sich für bestimmte Themen interessiert und die einem fortan mit immer wieder dieselbe Werbung schwer auf den Keks gehen können.

Die Vorteile dieser Tools liegen auf der Hand. Gleichzeitig ist Datensparsamkeit ein erstrebenswertes Ziel, weil Daten in falschen Händen auch gegen einen verwendet werden kann. Aus diesem Grund entwickeln sich immer mehr Betriebssysteme und Browser in Richtung Privacy, so dass man entweder ganz vor Tracking geschützt wird oder nur noch dann getrackt wird, wenn man selbst zustimmt (was in diesem Fall wohl nur noch 10% der Nutzer*innen tun):

Gleichzeitig entwickelt sich ein Markt für alternative, DSGVO-konformere Tools, wahlweise zum Selberhosten oder in der Cloud:

Insgesamt 60 Tools listet dieses Blogpost auf.

Wie erwähnen außerdem die Möglichkeiten, ganz ohne eigenes Tracking interessante Erkenntnisse aus der Google Search Console oder dem Chrome User Experience Report (CrUX) zu gewinnen.

Revision 503: CSS-, HTML-, und Accessibility-Kleinkram

16. November 2021 | 8 Kommentare

Vanessa und Peter tauschen sich in dieser Revision überraschend ausgiebig zu diversen CSS-, HTML- und Accessibility-Problemchen/Features aus.

Schaunotizen

[00:00:00] Kleinkram
Vanessa hat festgestellt, dass Viewport-relative Einheiten und vor allem vh nur bedingt existieren – zumindest in mobilen Browsern. Browser-Heuristiken und bestimmte Verhaltensweisen von (mobilen) Browsern treiben uns in Sachen horizontalem Scrolling, Accessible Dialog-Design und :focus-visible um. Wir quatschen kurz über Safari-Bugs und Selektor-Hacking, agitieren für die Verwendung von input[type=email] sowie die Nicht-Verwendung von autofocus. Über Peters Geheimtipp PostHTML (wie PostCSS, nur für HTML) kommen wir zur Frontend-Gretchenfrage, zur Digital Ocean App Platform, Mobilfunktarifen und G’schichten aus’m Zug. Themenrelevant geht es weiter mit unserer (erfolglosen) Suche nach Use Cases für fit-content und inline-flex (zu finden in Tailwind UI), CSS Debugging, noch mehr Scrolling/Overflow-Problemen Emoji-Bugs in Chrome, Can I Include, Inclusive Card Components und CSS Modules.

Revision 502: Unglücksrad

9. November 2021 | Keine Kommentare

Hans, Schepp und Peter ließen mehrfach das so genannte Workingdraft-Glücksrad rotieren, erhielten jedoch bei fast jeder Umdrehung einen kapitalen Wissens-Zonk.

[00:01:48] Glücksrad

Trusted Types API/isScript
Eine Anti-XSS-API, die in den Revisionen 447 und 486 (mit Gast Frederik Braun/@freddyb) schon mal Thema war.
Content Index API
Eine PWA-API für die Definition von Offline-Metadaten. Funktioniert sogar schon in Chrome auf Android!
WebRTC/RTCRtpSender
Mit WebRTC haben wir allesamt keine Erfahrung, Peter kann dafür über Frust mit der verwandten MediaRecorder-API berichten. Statt Browser-Inkompatibilitäten mit Dingen wie adapter auszugleichen würden wir vermutlich, ganz wie Clubhouse, WebRTC als SAAS einkaufen.
:invalid-Pseudoklasse
Der unserer Einschätzung nach mäßig nützliche Indikator für Formularfeld-Gültigkeit wird in Selectors Level&nbp;4 durch :user-invalid ergänzt..
overscroll-behavior-x
Einmal unbekannte, aber nützliche CSS-Features für 500 bitte!.
menuitem-Element
Ein extrem totes, Firefox-only-HTML-Element lässt uns über Contextmenüs und dazugehörige jQuery-Plugins nachdenken.
Keyboard API
Wir suchen mit mäßigem Erfolg nach Use Cases für die Keyboard API.
Cache API
Stellt sich raus: Der Cache kann immer noch nur GET-Requests speichern und funktioniert auch außerhalb vom Service Worker!

Revision 501: ein bisschen TypeScript 4.4 und ganz viel Anderes

2. November 2021 | Keine Kommentare

Im Rahmen der etablierten Traditionen nehmen Stefan und Peter das Release einer neuen TypeScript-Version zum Anlass, um über alles außer über TypeScript zu sprechen.

Schaunotizen

[00:01:48] TypeScript 4.4
Am Rande sprechen wir über die Features von TS 4.4, doch eigentlich geht es eher um CSS Grid, den typeof-Operator, Template Literal Types, TS-SQL, das commander-Package, Fastify (anstelle von Express), Symbols, Nodes process-Object, @@toStringTag und ES-Proxies. Auf etwas höherem Abstraktionslevel fragen wir uns, ob TypeScript demnächst mal fertig ist (Antwort: nö, es gibt in Sachen Builder Pattern/Fluent Interface noch theoretischen Aufholbedarf), sprechen über, Prototype-Patching, Conditional Types, Exclude<T>, Rust, Haskell, Dependent Types und Performance (mit besonderem Fokus auf Next-Generation Tools wie esbuild, Next.js, SWC, Rome und Deno) … und die Brücke zu Nero Burning ROM schlagen wir auch noch irgendwie. Kurz bevor Stefan aus seinem Konferenzraum geworfen wurde sprechen wie noch kurz über Typen für Try-Catch, any, unknown und unsafe, wundern uns über static blocks in classes, gedenken der Gefallenen (ECMAScript 4, E4X, SOAP, JXON) und blicken kurz auf das, was uns TypeScript 4.5 (z.Z. in der Beta-Phase) in Kürze bringen wird.

Revision 500: AMA!

27. Oktober 2021 | Keine Kommentare

Zu Folge 500 haben Schepp, Vanessa, Hans, Peter und Stefan Hörer:innen-Fragen eingesammelt und beantwortet!

Schaunotizen

AMA
Gefragt nach unseren Lieblings-Folgen von Working Draft finden die Revisionen 100 (mit Paul Irish), 446 (zu PHP) und 468 (CSS in JS Super Throwdown Challenge) Erwähnung, ebenso die Live-Events zum SmashingMagazine Meetup #3 und von der beyond tellerrand. In Unkenntnis darüber, wie wenig Zeit wir haben werden, nehmen wie die Frage „Tabs oder Spaces“ halbwegs ernst und schlagen den Bogen von HTML5Boilerplate und CoffeeScript hin zur Twilight-Filmserie (hört’s euch an, es ergibt alles Sinn). Danach geht es um Nazis, andere Krauts (aber gute Krauts) Probleme mit Google Maps Quereinsteiger, Schepps jugendliches Aussehen, Peters Gamer-Vergangenheit, Hans‘ Top 3 NoFX-Picks, Schepps Lieblings-IE-Bugs (doppelter Margin bei float:left) und IE-only-Features (in der Verlosung: Exclusions, HTC-Files, Expressions), die Verbannung des Box-Modells aus dem Standard (ebenfalls auf der Abschussliste: autofocus und Voice-Styling in CSS), das schnelle Verinnerlichen von Webtech-Specs/Techs (gibt’s nicht) Front-End Architektur mit Svelte/SvelteKit (das Workingdraft-Glücksrad ist in Svelte geschrieben!) CSS Cafe und andere Schepp-Meetups, Webtech-Buch-Schreiberei (siehe auch Revision 453), Sport, Lego, Telefonate, Kinder, Teilzeit, Engineering Management, Rust, Go, C++, AssemblyScript, Turbine, die Composition API von Vue, Schepps IMDB-Eintrag und Vergangenheit als 3D-Animator, unsere goldige Audio-Producerin und Präsenz-Podcasting. Im Laufe der Zeit mussten mehr und mehr von uns zu Meetings mit Kindern und/oder Kollegen abreisen, sodass am Ende nur Schepp und Peter verblieben, um etwas über die Zukunft von Working Draft zu philosophieren.

Revision 499: Laravel Livewire

20. Oktober 2021 | 2 Kommentare

Hans, Stefan und Vanessa hatten nach langer Zeit wieder das Vergnügen mit Backend-Entwickler Christoph Rumpel (@christophrumpel), Autor von Laravel Core Adventures und Mastering PhpStorm, ein Larastreamer und Host des Podcasts Call it a day, sprechen zu dürfen, diesmal über Laravel Livewire.

Schaunotizen

[00:00:59] Laravel Livewire
Laravel Livewire ist ein PHP/Laravel Package von Caleb Poruio, der ebenfalls der Autor von Alpine.js ist. Dieses Package eignet sich v.a. für Fullstack oder stark backend-lastige Developer Teams. Es ermöglichst dynamische Interface Funktionen, ohne tatsächliches JavaScript geschrieben werden muss. Die Grunfunktion basiert auf server-side gerendertem HTML Partials, ähnlich wir PJAX von jQuery. Doch alle Frontend Entwickler:innen wissen: Heutzutage bleibt es selten bei „einfach nur JavaScript“. Bei einem Framework wie Laravel Livewire fällt auch der Aufbau und die Wartung von Bundlern und ähnlichem Tooling weg. Die Idee kommt vom Framework Phoenix von Elixir. Ein ähnliches Framework für C#, um client-side Webapplikationen zu bauen, ist Blazor. Vergleichbar in der Welt von Ruby on Rails ist Hotwire. Als Beispiel nimmt Christoph uns mit in eine server-side geladene Applikation mit den üblichen Page Reloads. Nun landet man auf einer Seite mit einer Tabelle, für die es sich anbieten würde, wenn man diese Daten nun auch sortieren oder filtern könnte – und statt einem Page Reload lieber einen kurzen Loading Spinner anzeigen möchte. Darüberhinaus eignet es sich für Echtzeit-Validierung, Auto-Saving, Suchen, Auto-completes, dynamischen Dropdowns, Datei Uploads und vielem mehr. Auch das Schreiben von Tests mit mit Livewire kein Problem. Es hat sogar noch den Vorteil, dass dadurch, dass die Logik nicht in ein JavaScript Framework ausgelagert wurde, es keine zusätzlichen Integrations- oder Ende-zu-Ende-Test zwischen Frontend und Backend benötigt. Christoph bringt uns zwei Beispiele mit (siehe Links). Abschließend gibt es noch zu beachten, dass Entwickler:innen auf die Performance achten müssen, da ja jede Aktion einen Request erzeugen wird. Anm. der Redaktion: Performance ist aber auch mit einer Single-Page Applikation o.ä. auch nicht einfach, v.a. wenn erst einmal ein 4k Video geladen wird. Darüberhinaus gilt es auch den Überblick über sensitive Daten zu behalten, da durch Livewire eine offene Schnittstelle zum Client entsteht.

Links

ChannelTest1 + ChannelTest2
Zwei Livewire Tests von Christoph Rumpel.
Livewire Deep Dive
How Livewire works (a deep dive) von Autor Caleb Porzio
Inertia.js
Das Pendant zu Livewire – eine server-side Webapplikation
Larastreamers GitHub Repository
Die Codebase von Larastreamers
TALL Stack
Tailwind, Alpine.js, Laravel und Livewire
TEA Stack
Tailwind, Eleventy und Alpine.js

Verwandte Revisionen

Revision 490
Verwandte Revision über Alpine.js and Petite Vue.
Revision 127
Historische Revision über das INIT Boilerplatz und das Laravel PHP-Framework mit Christoph Rumpel aus 2013.
Revision 283
Vue.js und Chatbots mit Christoph Rumpel aus 2016.

Revision 498: CSS 2, Web 3.0 und Podcastempfehlungen

13. Oktober 2021 | 3 Kommentare

Vanessa, Hans und Schepp verwandeln in dieser Revision die Vorbesprechung in die eigentlich Sendung, in der es ausnahmsweise Mal nicht nur um knallharte Fakten und technische Themen geht.

[00:01:45] Schaunotizen

CSS Spec Terms
Tab Atkins-Bittners Glossar der CSS-Termini.
Windi CSS
Ein zu Tailwind CSS kompatibles Framework, das aber bestimmte Dinge besser meint zu lösen.
What Is Web 3.0 & Why It Matters
Ja was ist denn eigentlich dieses Web 3.0? Und war das nicht eigentlich schon HTML5? Und wie passt das zu Industrie 4.0?
Free Guy
Filmempfehlung: eine US-amerikanische Science-Fiction-Action-Komödie mit Ryan Reynolds in der Hauptrolle.
CSS for JavaScript Developers
Ein Lernkurs, der mit einer gänzlich anderen Perspektive an CSS herangeht. Darüberhinaus empfehlen wir die Kurse von Wes Bos.
Podcastempfehlungen

Revision 497: Glücksrad

6. Oktober 2021 | Keine Kommentare

Nach zehn Wochen war es mal wieder an der Zeit, an unserem Webtechnologie-Glücksrad zu drehen!

[00:01:15] Glücksrad

SVGAnimatedEnumeration
Ähm… hä?
Animated GIF, auf dem ein Typ mit Vokuhila-Frisur mit seinen Lippen die Buchstaben W, T und F formt.
Keine Ahnung, wozu das gut ist. Schnell weiter!
Die :root-Pseudoklasse
Stefan nutzt sie gerne, um an sie seine CSS Custom Properties zu hängen, aber sonst fristet die Pseudoklasse in unserem Alltag ein eher tristes Dasein.
Der <image>-Datentyp
In den <image>-Datentyp lassen sich allerlei Dinge stecken:

  • Bilder per url()-Funktion (natürlich)
  • Gradienten aller Art, also lineare, radiale und konische Gradienten, sowie deren repeating-Pendants.
  • ein responsives image-set()
  • die endgeile, aber nirgendwo supportete image()-Funktion
  • das nur in WebKit und Chromium unterstützte cross-fade()
  • sowie das mächtige, aber nur in Firefox implementierte element()
::-webkit-scrollbar und Konsorten
Wir reden über Scrollbar-Styling im alten IE und wie man darauf heutzutage in den verschiedenen Browsern einwirkt, nämlich neben der ::-webkit-scrollbar-Familie für WebKit und Chromium, mit dem per W3C abgesegnetem scrollbar-width und scrollbar-color im Firefox. In neueren IEs und dem davon abgeleiteten Edge ließ sich eine hässliche Scrollbar immerhin noch via -ms-overflow-style: -ms-autohiding-scrollbar; verstecken.
font-variant-east-asian
Eine CSS-Eigenschaft, um offenbar eine Art asiatischer Ligaturen zu steuern. Von asiatischer Sprache haben wir leider alle keine Ahnung, aber uns fällt dieser tolle Talk von Florian Rivoal zu dem Thema ein: Line breaking and related properties from CSS Text.
Die dir-Eigenschaft der Manifest-Datei
Die sagt, in welche Richtung die Schrift der darin hinterlegten Textbausteine läuft. Hammer! 😴💤
Das alignAttribut
So deprecated, dass sogar MDN sich weigert, es zu erklären. Früher haben wir es aber genutzt, um Inhalte im Netscape-Browser horizontal zu zentrieren, nachdem es dafür im IE ja das <center>-Element gab.
Zu guter Letzt: Programmiersprachen-Bashing Royal Rumble!
Aus irgendwelchen Gründen kommen wir vom rechten Pfad ab und driften über die historischen Eigenheiten von PHP hin zur Programmiersprache MUMPS. Und weil wir sowieso schonmal dabei sind, möchten wir Euch diesen Talk von einer vergangenen React Conf empfehlen: Let’s Program Like It’s 1999 von Lee Byron

Revision 496: Tooling rund ums Frontend Tooling

28. September 2021 | Keine Kommentare

Hans und Schepp hatten erneut Jon Uhlmann, aka @jonnitto, zu Gast, den Ihr vielleicht schon aus der Revision 490 über Alpine.js & Petite Vue kennt. Dieses Mal sprachen wir über…🥁

Schaunotizen

[00:01:07] Tooling rund ums Frontend Tooling
Die einen oder anderen erinnern sich, Jon ist als Core-Member stark in die (Weiter-)Entwicklung des Neos CMS involviert. Als klassisches „Headful“-CMS fühlt dieses sich auch für das Frontend zuständig. Und wo Frontend im Spiel ist, da geht es heutzutage nicht ohne das entsprechende Frontend-Tooling in Form von Transpilern, Pre- und Postprozessoren, Task-Runnern und Bundlern. Als da wären:

Hierunter das richtige Werkzeug zu finden und die damit zusammengesetzte Toolchain längerfristig auf Stand zu halten, fällt selbst reinen Frontend-Entwicklern oft schwer – für Allrounder oder Backend-Entwickler, wie sie ein Großteil der Klientel von Neos CMS darstellt, ist das mindestens unangenehm, wenn nicht sogar kaum zu stemmen.

Aus diesem Grund hat Jon sich im Laufe der letzten Jahre mit dem Schreiben von Neos-Tools befasst, die uns diese ganzen Probleme abnehmen, und die die Komplexitäten der vorhin genannten Werkzeuge in einer einfach einzubindenden Black Boxen kapseln. Auf die Art und Weise ist eine stattliche Tool-Sammlung entstanden:

Wir sprechen darüber, für welche Anforderungen Jon Lösungen finden musste und zu welchen Einsichten er im Laufe der Zeit gekommen ist. Und wir sprechen darüber, was diese Tools nicht sind und was Jon auch bewusst nicht in diese Tools verpacken möchte.