WEBVTT

00:00:00.071 --> 00:00:08.777
Ich drücke auf den Button und es passiert nichts. Und ich bin mir nicht sicher, passiert nichts, weil der Loading State fehlt und es passiert eigentlich schon was?

00:00:08.777 --> 00:00:11.981
Muss ich mal ins Network Tab schauen, ob da schon was passiert?

00:00:12.108 --> 00:00:18.670
Oder war der Button einfach nur noch nicht reaktiv und hat auf Dinge gehört, weil er schon gezeichnet war,

00:00:18.769 --> 00:00:23.137
aber die Hydration oder die Interaktion oder der Event Listener noch gefehlt hatte?

00:00:23.137 --> 00:00:28.377
Also ich habe nicht den Frontend-Masters-Kurs gemacht, sondern einfach die Quick-Doku so

00:00:28.377 --> 00:00:31.183
detailliert wie mir möglich war durchgemacht.

00:00:31.255 --> 00:00:35.937
Das Spannende ist aber, wenn ich das richtig verstanden habe, ist, dass dieses JavaScript-File

00:00:35.937 --> 00:00:40.777
oder diese Komponente ausschließlich am Server läuft.

00:00:41.040 --> 00:01:05.360
Music.

00:01:05.680 --> 00:01:08.030
Revision 576,

00:01:11.559 --> 00:01:21.668
Diese Revision wird von niemandem gesponsert. Stattdessen möchte ich euch gerne einladen, die Frontiers-Konferenz am 21. und 22. September in Utrecht zu besuchen.

00:01:22.883 --> 00:01:28.645
Die Konferenz ist ein Non-Profit-Projekt und wird von mir und meinen Mitschreitern aus dem niederländischen Frontiers-Verein organisiert.

00:01:29.662 --> 00:01:30.625
Und wir fahren dick auf.

00:01:31.670 --> 00:01:38.583
Es kommen Andy Bell, Lervi Roo, Zach Leatherman, Sarah Vieira, Laura Kalbach und viele mehr.

00:01:38.808 --> 00:01:40.258
Insgesamt 14 Sprecher.

00:01:41.779 --> 00:01:46.617
Und die Talks behandeln genau gar nicht irgendwelche aktuellen Frameworks, sondern betrachten jeweils

00:01:46.617 --> 00:01:50.403
bestimmte Aspekte der Web-Plattform oder des Web-Craftings.

00:01:51.177 --> 00:02:01.857
Es geht um neue Colorspaces, Web-Components, Performance, Accessibility, Privacy, 3D und Lütti

00:02:01.179 --> 00:02:05.509
Ein Ticket für die zwei Tage liegt bei 500 Euro zuzüglich niederländischer Mehrwertsteuer

00:02:05.509 --> 00:02:11.109
und inkludiert sind nicht nur zwei Tage voller toller Vorträge, sondern auch reichlich Essen,

00:02:11.613 --> 00:02:13.109
und Trinken für euer leibliches Wohl.

00:02:14.385 --> 00:02:18.256
Und Utrecht ist auch immer ein Besuch wert, mit seiner Altstadt und ihren Grachten, aber

00:02:18.629 --> 00:02:21.281
auch ihren spektakulären Neubauten rund um den Hauptbahnhof.

00:02:23.069 --> 00:02:27.189
Es gibt viele gemütliche Ecken und Restaurants und Utrecht ist die Stadt in den Niederlanden

00:02:27.189 --> 00:02:28.978
mit der besten Radinfrastruktur.

00:02:30.499 --> 00:02:36.414
Bekommen, dann schaut auf frontiersconf.org vorbei und dann sehen wir uns hoffentlich im Herbst in

00:02:36.576 --> 00:02:47.509
Utrecht. Wir sind heute zu dritt aus dem Team dabei, der Stefan. Hallo, servus. Und als Gast

00:02:47.883 --> 00:02:53.509
ist bei uns dabei der Bernhard Meyer. Du bist auf jeden Fall auch ein sehr gern gesehener Gast

00:02:53.509 --> 00:02:58.269
bei uns, aber dennoch, bitte stell dich doch noch einmal vor für die ganze Hörerschaft,

00:02:58.269 --> 00:03:00.549
die die anderen tollen Episoden noch nicht gehört haben.

00:03:00.765 --> 00:03:06.789
Ja, hallo. Ja, ich freue mich heute zum zweiten Mal dabei sein zu dürfen und dann stelle

00:03:06.789 --> 00:03:11.709
ich mich mal wirklich kurz vor. Also, ich studiere Psychologie, tue gerne Orientierungslaufen

00:03:11.709 --> 00:03:17.230
und Langlaufen und hin und wieder auch Programmieren. Ich glaube, ich lasse es jetzt so zusammenfassen.

00:03:17.563 --> 00:03:21.269
Hin und wieder mehr Programmieren, hin und wieder ein wenig weniger. Und um das noch

00:03:21.269 --> 00:03:24.509
ein bisschen zu ergänzen, also ich studiere auch noch Mobile Computing und habe mal Software

00:03:24.509 --> 00:03:29.909
Engineering studiert, damit man das irgendwie komplettieren kann.

00:03:29.059 --> 00:03:31.571
Und der Rest, vielleicht ergibt sich ja noch was währenddessen.

00:03:31.616 --> 00:03:36.489
Ich finde es schön, wie du dich anders hältst mit deinen drei Studienkursen und ich programmiere

00:03:36.489 --> 00:03:43.929
mal wieder so hin und wieder. Denn das Thema, über das wir heute sprechen werden, ist QUIC.

00:03:44.255 --> 00:03:49.881
Und die Idee hatte ich dazu, weil ich doch zugeben muss, dass ich so ein bisschen das.

00:03:51.009 --> 00:03:55.429
Thema doch so ein bisschen ignoriert hatte oder mich zumindest nicht stärker damit befasst hatte.

00:03:55.429 --> 00:03:59.929
Das hat er das letztes Jahr auch schon gesehen bei State of JavaScript Survey.

00:04:00.108 --> 00:04:03.358
Und ich hab das mal so kurz abgehakt, wie, okay, jetzt gibt's noch einen Quik.

00:04:04.049 --> 00:04:08.849
Ja, ich schieb das jetzt mal in diese Schublade von irgendwie Svelte, SolidJS, Quik,

00:04:08.909 --> 00:04:12.689
weil ich glaub, es macht Sachen noch mal besser als jetzt React und Vue,

00:04:12.749 --> 00:04:14.949
haben vielleicht wieder darauf aufgebaut.

00:04:15.009 --> 00:04:16.749
Aber vielleicht so was wie Astro.

00:04:16.809 --> 00:04:20.349
Und ich war ein bisschen überfordert in dieser Framework-Landschaft.

00:04:20.498 --> 00:04:25.589
Und wir hatten's dann auch in der Episode, Hätte ich auch noch mal in den Shownotes verlinke, ganz am Anfang des Jahres

00:04:25.692 --> 00:04:31.089
so der Ausblick Frontend Development 2023, da war noch der Joe Ray Gregory bei uns.

00:04:31.292 --> 00:04:35.037
Und da war es auch so, ja, und QUIC könnte groß werden, vielleicht nicht.

00:04:35.199 --> 00:04:41.032
Und dann ist jetzt aber passiert, dass ich mal wieder einen Monat lang bei Frontend Masters mich umgeschaut hatte.

00:04:41.464 --> 00:04:44.066
Und da war ein QUIC-Kurs, dachte ich mir, komm, da schaue ich mal rein.

00:04:44.210 --> 00:04:47.748
Ist zwar jetzt außer drei Stunden, wie dann die explizite Syntax und sowas aussieht.

00:04:48.531 --> 00:04:51.089
Interessiert mich vielleicht an der Stelle gar nicht so drängend.

00:04:51.304 --> 00:04:54.929
Aber die erste Stunde war, was das Framework eigentlich ausmacht.

00:04:54.929 --> 00:05:00.216
Und dann war ich doch schon sehr schnell sehr interessiert daran und hab in die Runde gefragt,

00:05:00.477 --> 00:05:04.289
kennen wir irgendjemanden, der sich mit Quik auskennt? Und Werner, da kamst du an den Start.

00:05:04.942 --> 00:05:07.289
Und

00:05:06.635 --> 00:05:18.248
Wie kamst du denn dazu, dich dafür zu interessieren? Ja, also ich war mit Stefan vor mittlerweile schon einigen Wochen auf der NGBI in Belgien.

00:05:18.392 --> 00:05:24.063
Und wir haben dort über TypeScript einen Workshop gemacht und der Stefan dann noch einen Vortrag.

00:05:24.285 --> 00:05:30.185
Und da auf einer Angular-Konferenz, beide als ganz große Angular-Entwickler,

00:05:30.302 --> 00:05:43.265
Und sind dann am zweiten Tag am Abend in Mischko Heveri über den Weg gelaufen und seitdem trage ich einen Quick-Sticker in meinen Geldtaschen obeinander.

00:05:43.319 --> 00:05:52.285
Jetzt schon bald zwei Monate. Und war dann auch so, dass ich mir einfach gedacht habe, möchte ich mir mal genauer anschauen, nachdem ihr dann geredet habt.

00:05:52.402 --> 00:05:56.965
Genau, und ich glaube, da habe ich auch jetzt schon von Stefan eine Geschichte, ein bisschen

00:05:56.965 --> 00:05:59.885
einen Teil davon vorweggenommen, wie er zugekommen ist.

00:05:59.991 --> 00:06:05.885
Ja, also das war es eigentlich. Es war die Stickerübergabe auf der Konferenz. Man muss

00:06:05.885 --> 00:06:10.885
ja dazu sagen, also der Mischko Heverdi ist ja vor allem bekannt durch Angular 1 und Angular

00:06:10.885 --> 00:06:15.645
2, also da irgendwie 2 Plus, dass eigentlich in Angular sein, dass ich bis zu dem Zeitpunkt

00:06:15.645 --> 00:06:20.045
war, was ich selbstständig gemacht habe. Und macht natürlich jetzt mit quasi seinem

00:06:20.045 --> 00:06:25.205
dritten Framework nun mal alles ganz, ganz richtig und komplett anders. Aber das ist für mich eigentlich,

00:06:25.205 --> 00:06:29.565
muss ich ganz ehrlich sagen, der einzige Zugang, den ich dazu habe. Also ich vertraue mir jetzt

00:06:29.565 --> 00:06:36.605
komplett auf die Learnings von der Vanessa aus Frontend Masters und von Bernhardt in den sehr

00:06:36.605 --> 00:06:42.965
spontanen zwei oder drei Wochen, wo ich gesagt habe, hey, jetzt Zeit, machen wir doch was, weil ich habe

00:06:42.965 --> 00:06:47.285
absolut keine Ahnung, was das Ding kann oder nicht. Also ich habe schon ein bisschen vorgefühlt in der

00:06:47.285 --> 00:06:52.325
Vorbesprechung. Da habe ich mir gedacht, da klingen einige Dinge sehr interessant und ich werde jetzt

00:06:52.325 --> 00:06:59.685
einfach mal durch meine gewohnte, konsistente, kritische Haltung durchvalidieren und darum bin

00:06:59.685 --> 00:07:02.071
Ich bin sehr, sehr aufgeregt, was da jetzt auf mich zukommt.

00:07:02.791 --> 00:07:08.121
Ja, ich kann, deswegen wollte ich auch wirklich, ich hab erst noch gesagt, ja, falls wir niemanden finden,

00:07:08.181 --> 00:07:13.999
vielleicht kann ich noch mal richtig tief einsteigen und dann diese Episode quasi ich als Gastsprecherin machen.

00:07:14.141 --> 00:07:18.081
Hab mich aber auch sehr schnell dann doch nicht mehr so ganz sicher gefühlt,

00:07:18.141 --> 00:07:20.281
was da wirklich under the hood passiert.

00:07:20.660 --> 00:07:24.581
Aber für mich gibt's jetzt quasi so die zwei Sachen, worüber wir sprechen können.

00:07:24.641 --> 00:07:29.915
Wir werden auf jeden Fall natürlich erst mal gleich sagen, was es generell macht im Groben und Ganzen.

00:07:30.428 --> 00:07:37.321
Dann könnte man natürlich drüber sprechen, tiefergehende, wie lösen sie eigentlich diese ganzen Prinzipien, die sie verfolgen wollen.

00:07:37.321 --> 00:07:44.643
Aber auf der anderen Seite finden wir die Richtung, in die sich das Web entwickelt, generell gut.

00:07:44.922 --> 00:07:46.515
Finden wir, es sollte sich dahin entwickeln.

00:07:46.848 --> 00:07:49.945
Finden wir, es ist vielleicht notwendig, der nächste Schritt in die richtige Richtung.

00:07:50.611 --> 00:07:54.995
Oder, das berühmte Halt, da sollten wir doch noch mal von ganz vorne anfangen, das Normale zu überdenken.

00:07:55.895 --> 00:08:00.577
Denn ich habe jetzt hier so Begriffe gehört wie Resumability anstelle von Hydration.

00:08:01.108 --> 00:08:05.821
Und das scheint ja wirklich so ein komplett neues Prinzip auch wieder zu sein.

00:08:05.821 --> 00:08:09.821
Denn ich erinnere mich, bei Svelte war es auch schon mal ganz kurzzeitig so,

00:08:09.821 --> 00:08:11.821
dass es auch wieder so was ganz Neues ist,

00:08:11.821 --> 00:08:18.821
in dem Sinne, dass der Code schon vorkompiliert ankommt und nicht zwangsweise das Svelte.js-Package

00:08:18.821 --> 00:08:22.821
auch mit an die Webseite ausgeliefert wird, wie es bei Vue und React einfach sein wird.

00:08:22.821 --> 00:08:27.821
Aber bei Frontend Masters, da ging's dann auch gleich los, war eben auch der Kurs von Misko,

00:08:27.821 --> 00:08:35.941
das quasi, ja, jetzt strafe ich schon drüber. Bernhard, magst du da mal einspringen,

00:08:35.941 --> 00:08:40.021
was dieser Groundbreaking der Unterschied ist, dass alles so viel schneller ist?

00:08:40.021 --> 00:08:43.781
Ja, ich kann es versuchen. Also ich habe nicht den Frontend-Masters-Kurs gemacht,

00:08:43.781 --> 00:08:50.461
sondern einfach die Quick-Doku so detailliert, wie mir möglich war, durchgemacht. Und tatsächlich

00:08:50.461 --> 00:08:53.701
kann ich aber da auch, also ist es mir ein bisschen wie dir gegangen, dass ich mir dann

00:08:53.701 --> 00:08:58.335
auch immer so laut schreiben, so, ah ja, jetzt habe ich es und dann immer der Punkt ist weiter

00:08:58.621 --> 00:09:02.581
zu erklären, dass dann gleich wieder ganz was anderes ist. Aber grundsätzlich, soweit

00:09:02.581 --> 00:09:07.261
ich jetzt einmal das verstanden habe und korrigiere mich bitte Vanessa oder Stefan genauso, dass

00:09:07.508 --> 00:09:13.461
der große Unterschied zwischen Resumability und Hydration jetzt ist, dass man quasi die

00:09:13.461 --> 00:09:24.661
Sachen am Server oder statisch hervorrendern und dann nur mehr den kleinen, also da sind

00:09:24.661 --> 00:09:27.169
muss schon wieder bei mir erklären.

00:09:29.393 --> 00:09:35.658
Ja, den kleinen Part an JavaScript, dass der, ähm, ja, okay.

00:09:35.757 --> 00:09:39.043
Mir geht's ganz genauso.

00:09:39.043 --> 00:09:44.483
Ich hab mir das angeschaut, statt jetzt durchzulesen, und während ich's angeschaut hab, dachte ich mir die ganze Zeit,

00:09:44.483 --> 00:09:48.523
ja, das klingt superlogisch. Aber ich hab gemerkt, jedes Mal, wenn ich's versuch, selber zu erklären,

00:09:48.523 --> 00:09:50.179
ist es irre schwer plötzlich.

00:09:50.269 --> 00:09:52.163
Vielleicht fang ich noch mal so an.

00:09:52.835 --> 00:09:59.843
Es wurde in dem Kurs auch vorgestellt, zu dem klar, erstmal typische Vergleiche, React, View, blablabla und wie toll dann ein Quickjar

00:09:59.843 --> 00:10:05.420
dann dementsprechend wäre, aber eben auch das mit der Entwicklung des Webs nochmal.

00:10:05.723 --> 00:10:09.803
Also fangen wir nochmal vorne an. Wir hatten früher mal einfach statische Webseiten,

00:10:09.803 --> 00:10:14.563
die haben super funktioniert. Dann wollten wir aber Interaktionen hinzufügen

00:10:14.563 --> 00:10:18.963
und Sachen auch asynchron laden und einfach mehr ermöglichen mit den Sachen,

00:10:18.963 --> 00:10:25.803
die die aktuellen, zu dem Zeitpunkt, modernen Browser unterstützt haben und dann haben wir jQuery angefangen zu benutzen,

00:10:25.803 --> 00:10:27.803
und Ajax, das war schon mal auch extrem gut,

00:10:28.043 --> 00:10:31.883
aber dann wollten wir mehr und mehr, nachdem da ja so viel plötzlich ermöglicht war,

00:10:32.652 --> 00:10:36.523
und es wurde schwieriger für uns in der Frontend-Entwicklung,

00:10:36.523 --> 00:10:44.805
das noch zu strukturieren, weil es kaum eine gute Architektur möglich war mit reinen HTML, reinen JavaScript und reinen CSS-Dateien.

00:10:45.795 --> 00:10:51.187
So, lange Geschichte etwas abgekürzt, dann gab's sowas wie React, Angular und Vue,

00:10:51.243 --> 00:10:54.883
und die benutzen eine Technik namens Hydration.

00:10:54.883 --> 00:11:01.612
Denn auch bei diesen Frameworks haben wir ja auch schon dieses statische Vorrendern am Server teilweise.

00:11:02.341 --> 00:11:06.303
Was da aber dann passiert, ist, es wird ausgeliefert an die Webseite,

00:11:06.303 --> 00:11:11.463
je nachdem, je nach Settings und et cetera, bereits am Server vorgerendert,

00:11:11.785 --> 00:11:16.183
aber dann fehlen ja noch das JavaScript auf dem bereits vorgerenderten Code,

00:11:16.183 --> 00:11:20.121
das heißt, die Event-Listener und State-Management und et cetera.

00:11:20.454 --> 00:11:25.983
Und dann läuft noch mal dieses ganze Processing im Frontend noch mal ab,

00:11:25.983 --> 00:11:29.683
obwohl es ja eigentlich schon da ist, um die Eventlisten da drauf zu sprinkeln,

00:11:29.683 --> 00:11:32.220
aber eben auch zu schauen, ob der ganze Status noch passt.

00:11:33.003 --> 00:11:40.183
Und hierbei kann es wohl durchaus passieren, dass obwohl man es versucht, so klug wie möglich zu machen,

00:11:40.183 --> 00:11:43.583
dass man wirklich nur das im DOM austauscht, was ausgetauscht gehört,

00:11:43.887 --> 00:11:47.578
es in der Realität meistens dann doch nicht ganz so gut funktioniert.

00:11:48.028 --> 00:11:52.383
Was vor allem auch wirklich dann passiert, wenn das HTML nicht valide ist.

00:11:52.383 --> 00:12:00.383
Also, wenn ich zum Beispiel ne UL habe, ne unordered list, mit Listelementen drin und da einfach die Diffs falsch verschachtelt.

00:12:00.559 --> 00:12:06.023
Weil man zum Beispiel in einer unordered list, muss als erstes dann kindimmer nen li kommen,

00:12:06.023 --> 00:12:09.303
aber der Browser lässt schon auch durchgehen, wenn man nen Diff schreibt.

00:12:09.303 --> 00:12:13.703
Kann aber sein, dass es im DOM generell dann anders strukturiert wird.

00:12:13.703 --> 00:12:16.223
Es schaut visuell richtig aus, aber es springt vielleicht.

00:12:16.223 --> 00:12:20.103
Und jedes Mal, wenn ich jetzt aber die Hydration wieder drüberlaufen lasse,

00:12:20.103 --> 00:12:23.263
dann wird der DOM ausgetauscht, obwohl sich vielleicht gar nichts verändert hätte,

00:12:23.506 --> 00:12:25.477
nur weil das HTML nicht mehr valide ist.

00:12:26.116 --> 00:12:30.023
Und dann ist es generell passiert.

00:12:29.771 --> 00:12:33.121
Beziehungsweise jetzt mach ich noch mal die Kurve, warum machen wir das eigentlich alles?

00:12:33.121 --> 00:12:37.621
Also es geht darum, dass die Webseite möglichst schnell zur Verfügung stehen soll

00:12:37.621 --> 00:12:39.125
und ich auf Sachen klicken kann.

00:12:39.476 --> 00:12:45.821
Und es hat sicherlich alle von uns schon mal erlebt, dass ich auf eine Webseite draufgehe, egal ob Mobile oder auch Desktop,

00:12:45.821 --> 00:12:52.321
egal wie gut die Internet-Connection war, ich drücke auf den Button und es passiert nichts.

00:12:52.321 --> 00:12:57.721
Und ich bin mir nicht sicher, passiert nichts, weil der Loading-State fehlt und es passiert eigentlich schon was,

00:12:57.721 --> 00:13:00.946
muss ich mal ins Network-Tab schauen, ob da schon was passiert.

00:13:01.063 --> 00:13:07.641
Oder war der Button einfach nur noch nicht reaktiv und hat auf Dinge gehört, weil er schon gezeichnet war,

00:13:07.689 --> 00:13:12.109
aber die Hydration oder die Interaktion oder der Event-Listener noch gefehlt hatte.

00:13:12.820 --> 00:13:17.087
Oder es sind dann noch Layout-Shifts, die passieren. Das sind ja so supernervige Sachen.

00:13:17.281 --> 00:13:23.506
Und dadurch, dass im Prinzip das mit der Hydration zwar sehr gut funktionieren würde, aber in der Realität

00:13:23.641 --> 00:13:25.063
dann doch nicht so ganz,

00:13:25.396 --> 00:13:31.821
haben wir jetzt das Problem, dass es teilweise, obwohl das initiale Zeichnen und Rendern des Browsers

00:13:32.004 --> 00:13:34.981
schneller stattfindet, das heißt, ich sehe die Sachen vielleicht früher,

00:13:34.981 --> 00:13:40.079
weil es auch am Server vorgerendert war, dass ich dann auf den Button klicken kann und interaktiv sein kann,

00:13:40.682 --> 00:13:45.101
kann teilweise mit unserem aktuellen modernen Framework sogar länger dauern,

00:13:45.237 --> 00:13:53.069
als mit dem guten alten, ich schreibe einfach HTML und ich lasse das einfach ohne dieses ganze Serverseitige, ohne Hydration.

00:13:53.880 --> 00:13:57.210
Das heißt, wir sind ja fast wieder auf einem Art Rückschritt,

00:13:57.264 --> 00:14:02.781
wenn's jetzt wieder länger dauert als vorher. Und dann kam Quick um die Ecke und hat versucht,

00:14:02.781 --> 00:14:08.101
diesem ganzen Problem zu entgehen, dass auch gleich dieser Button klickbar ist.

00:14:08.454 --> 00:14:15.981
Und wenn ich das Prinzip hoffentlich richtig verstehe, ist, dass Sie nicht nur am Anfang des HTML ausliefern,

00:14:15.981 --> 00:14:17.790
was die Seite jetzt braucht,

00:14:18.429 --> 00:14:27.841
nicht nur dann lazy loaden, was danach kommt, Sondern auch beim JavaScript, nur das JavaScript laden,

00:14:28.565 --> 00:14:36.041
und dem Browser transpilieren, nein, nicht transpilieren, aber, äh, ihr werdet es schon machen lassen.

00:14:36.041 --> 00:14:44.985
Ähm, das jetzt auch tatsächlich zu diesem Status des Users, auf deren, auf dessen Webseite tatsächlich auch benötigt wird.

00:14:45.823 --> 00:14:49.027
Weil wenn ich jetzt die ganze Vue-App ausliefe an den Browser,

00:14:49.180 --> 00:14:51.971
selbst, wenn's vorgerendert ist, selbst, wenn Sachen lazy-loaded sind,

00:14:52.349 --> 00:14:54.312
schicke ich vermutlich JavaScript mit,

00:14:54.906 --> 00:14:59.741
das die User an der Stelle gar nicht brauchen, was Vue aber zu der Stelle noch nicht weiß,

00:14:59.741 --> 00:15:04.592
weil es muss erst die Hydration machen, und dann weiß es, ah, okay, und jetzt brauche ich das JavaScript noch.

00:15:04.741 --> 00:15:11.541
Und Quik möchte da, auf anscheinend sehr kluge Weise, die wir alle ein bisschen Tuber haben, richtig zu erklären,

00:15:11.812 --> 00:15:16.232
nur auch das JavaScript ausliefern, was an dieser Stelle dann benötigt wird.

00:15:17.565 --> 00:15:24.135
Okay, das ist eine spannende Info und ich versuche jetzt einmal zu resümieren mit dem,

00:15:24.135 --> 00:15:29.095
was du gesagt hast und dem, was ich jetzt gerade in der Dokumentation an Code-Beispielen aufgesaugt habe.

00:15:29.421 --> 00:15:35.175
Um zu versuchen dem, als erstes möchte ich wissen, ob ich es verstanden habe und zweitens

00:15:35.175 --> 00:15:36.735
versuche ich dem Ganzen ein Bild zu geben.

00:15:36.735 --> 00:15:40.335
Also was ich jetzt gesehen habe, wenn ich so ein Hello World aufmache oder sonst irgendwas

00:15:40.335 --> 00:15:44.575
anderes, dann sehe ich einfach ein normales JavaScript-File oder TypeScript-File, das

00:15:44.575 --> 00:15:49.735
Anfang ein bisschen wirkt wie React, weil ich mit JSX-Komponenten schreibe. Also die JSX-Komponenten-Syntax

00:15:49.735 --> 00:15:54.615
habe ich drinnen und ich habe ein Export-Default mit so einer Komponenten-Closure. Das heißt,

00:15:54.615 --> 00:15:59.815
ich kann nicht einfach nur eine Funktion zurückgeben, sondern das rennt über irgendeine

00:15:59.815 --> 00:16:05.015
Konvention und irgendeine Funktion, die wird irgendwas machen. Das Spannende ist aber, wenn ich das

00:16:05.015 --> 00:16:10.543
richtig verstanden habe, ist, dass dieses JavaScript-File oder diese Komponente ausschließlich am,

00:16:11.135 --> 00:16:17.955
am Server läuft und nicht am Client. Sprich, wenn ich eine Raute anwähle oder irgendwo

00:16:17.955 --> 00:16:22.895
hingehe, dann wird dieses JavaScript am Server ausgeführt, schickt man das Ergebnis hin

00:16:23.020 --> 00:16:27.295
und was mitkommt, ist so eine kleine minimale JavaScript-Random, die auf Klicks reagieren

00:16:27.295 --> 00:16:33.895
kann und auf Basis von jedem Stück, das Interaktion haben soll, Requests wieder zurückschickt,

00:16:33.895 --> 00:16:41.061
um das nächste HTML zu bekommen, das an dieser Stelle erforderlich ist. Mit dem Zusatz.

00:16:42.276 --> 00:16:46.939
Dass auch das Javascript mitkommt, das ich hier an dieser Stelle nachher brauche.

00:16:47.128 --> 00:16:50.526
Also vielleicht um das irgendwie optimaler zu machen, zu cachen oder sonst irgendwas

00:16:50.526 --> 00:16:53.006
und nicht ständig Roundtrips zum Server zu haben.

00:16:53.178 --> 00:16:59.646
Also man lässt so viel am Server wie noch geht und schickt nachher genau dieses Javascript hin, das du brauchst,

00:16:59.646 --> 00:17:01.991
um für diese eine Interaktion zu überleben.

00:17:02.081 --> 00:17:07.194
Das ist aber ein doofer Name, aber ich glaube, das sollte es ungefähr beschreiben.

00:17:08.526 --> 00:17:14.423
Genau, jetzt schaue ich noch ganz kurz, wie das ausschaut. Ich hab da jetzt so ein Counter-Ding.

00:17:14.684 --> 00:17:18.486
Ja, und da hast du einfach On-Click-Handle. Die haben auch so eigene Syntax, auch mit so einem Dollarzeichen hinteran.

00:17:18.486 --> 00:17:22.486
Und ich glaube, das ist auch so der Indikator für den Compiler oder für das Framework so,

00:17:22.486 --> 00:17:27.431
hey, das Ding kommt jetzt eigentlich auch in den Client oder ist für den Client wichtig.

00:17:27.486 --> 00:17:34.471
Das wäre jetzt mal so mein Gut Feeling. Also von dem, was ich jetzt gehört habe, gesehen habe, glaube ich, dass das so funktioniert.

00:17:35.020 --> 00:17:39.278
Dann komme ich jetzt, nachdem ich mich wieder ein bisschen gefasst habe,

00:17:39.486 --> 00:17:45.926
Nur, man kann das komplett bestätigen. Also, das Ding, das da läuft, das kleine Stück

00:17:45.926 --> 00:17:49.886
JavaScript, das sich um die Interaktionen kümmert, ist der Quickloader, der genau die

00:17:49.886 --> 00:17:54.166
Aufgabe übernimmt, von diesen interaktiven Elementen dann die Events entgegenzunehmen.

00:17:54.438 --> 00:17:59.446
Und da wird es aber eben dann deswegen spannend, weil wir können jetzt sagen, die Sachen werden

00:17:59.446 --> 00:18:07.275
entweder am Server ausgeführt oder man kann das Ding dann auch statisch kompilieren. Jetzt

00:18:07.566 --> 00:18:12.726
ist das wieder am Server ausführen, das muss ich sagen, hat mich beim Lesen der Doku,

00:18:12.726 --> 00:18:15.526
ich weiß nicht, wie es mit dir gegangen ist, Vanessa, auch immer ein bisschen verwirrt,

00:18:15.526 --> 00:18:19.726
dass man dieses Server-Side-Rendering ja nicht unbedingt hat, sondern man kann es auch zuerst

00:18:19.726 --> 00:18:25.566
schon statisch generieren. Und dieses spezielle Syntax, dieses Dollarzeichen, das du da erwähnt

00:18:25.566 --> 00:18:31.366
hast, Stefan, das ist dann genau dazu da, dass man über so einen Optimizer, der in VIT drinnen

00:18:31.366 --> 00:18:36.646
hängt, dann dieses Codesplitting macht, was von dem ganzen Code Server-seitig laufen sollte.

00:18:37.604 --> 00:18:41.853
Und was gleichzeitig laufen sollte, beziehungsweise wann, ja.

00:18:42.166 --> 00:18:48.926
Das muss ich mir als Developer selber überlegen, was ich wo am Laufen haben wollen würde. Nein.

00:18:48.926 --> 00:18:58.086
Das ist, ja, total überzeugt. Das ist genau der Punkt, den ich sehr spannend und sehr

00:18:58.086 --> 00:19:04.766
schwierig zugleich finde, dass das Ding durch dieses Resumable alles, was es braucht oder

00:19:04.766 --> 00:19:12.646
was es kann, mal am Server rendert und dann am Client weitermacht und erst dann schaut,

00:19:12.646 --> 00:19:17.446
wie stellt es sich jetzt den Zustand wieder so her, dass es am Client das weitermachen kann,

00:19:17.446 --> 00:19:22.526
was es am Server begonnen hat. Das klingt nach totaler Magic und das ist, finde ich,

00:19:22.526 --> 00:19:25.235
ziemlich ein Magic, wenn man die anderen Frameworks gewohnt ist.

00:19:27.810 --> 00:19:33.360
Ich glaube, es ist auch Magic. Also, die Wörter, die ich übrigens grade nicht gefunden habe,

00:19:33.787 --> 00:19:38.200
damit meinte ich, parse and die Execution vom JavaScript,

00:19:38.260 --> 00:19:43.480
dass es ja mit der Hydration so ist, ich bekomme das statische HTML,

00:19:43.690 --> 00:19:46.192
aber dann muss ich alles JavaScript erst mal laden.

00:19:46.399 --> 00:19:52.107
Alles, was eben nicht lazy-loaded ist oder et cetera. Dann muss ich alles in JavaScript parsen und exekuten.

00:19:52.656 --> 00:19:56.360
Und dann weiß das JavaScript, ah, ich muss ja gar nicht so viel austauschen,

00:19:56.360 --> 00:19:59.360
eigentlich schon fertig, oder ich muss doch so ein bisschen näher noch austauschen,

00:19:59.360 --> 00:20:01.280
ein bisschen mehr Eventlisten da machen.

00:20:01.388 --> 00:20:05.360
Und bei Resumeability habe ich diesen Zwischenschritt von

00:20:05.360 --> 00:20:07.360
allem JavaScript runtergeladen und alles

00:20:07.360 --> 00:20:09.310
JavaScript pausen, exekuten nicht.

00:20:09.499 --> 00:20:13.360
Und ich erinnere mich dran, aber da wurde es mir dann auch wirklich, da war ich dann so,

00:20:13.360 --> 00:20:18.672
finden wir jemanden zum drübergeben, dass es Chases gibt, wo die,

00:20:19.360 --> 00:20:23.360
nicht aufgebaut werden oder wo keine Kette ist, sondern wirklich ein einfaches Chasen,

00:20:23.360 --> 00:20:29.360
wo auch ein Status oder ein Stage drinstehen kann, in dem sich die User drin befinden.

00:20:29.628 --> 00:20:35.057
Und der kann wohl relativ einfach gelesen werden. Also, wie gesagt, nur ein einfaches Chasen, keine Verkettung von Sachen,

00:20:35.360 --> 00:20:43.339
kein Nachvollziehen, um dann irgendwie schlau rauszufinden, was ist denn dieses JavaScript, was ich gerade brauche, und was brauche ich erst später?

00:20:44.482 --> 00:20:51.360
Was hast du da erst gesagt, dass es Chasens gibt? Es gibt Chasens mit einem Application Stage.

00:20:51.360 --> 00:20:57.490
Diese useSignal oder useStore-Geschichte jetzt in Quick, da ist jetzt um...

00:20:58.516 --> 00:21:04.860
Okay. useStore kenn ich nicht, aber ich hab gehört, dass der State eben in einem JSON ausgeliefert wird.

00:21:04.860 --> 00:21:08.600
Ich glaub, wir kennen das auch ewig ähnlich auch schon von...

00:21:08.600 --> 00:21:13.600
Ich kenn's jetzt zumindest nur von Vue, dass da, wenn ich einen State hab am Server bereits,

00:21:13.757 --> 00:21:18.360
dass ich den auch immer an das Window-Objekt hänge. Natürlich ich nicht selber, sondern das Framework erledigt das für mich.

00:21:18.447 --> 00:21:23.560
Und dann kann der Client aus diesem Window-Objekt-Store auch den State wieder herauslesen.

00:21:23.687 --> 00:21:26.400
Und irgendwie sowas Ähnliches scheint es hier schon auch zu geben,

00:21:26.400 --> 00:21:30.920
um schnell zu wissen, um das herauszufinden, was sind denn jetzt eigentlich die Bestandteile,

00:21:30.920 --> 00:21:37.973
die ich als Webseite noch abrufen muss als JavaScript? Ganz genau, das macht Quick auf Komponentenbasis für einen.

00:21:38.040 --> 00:21:41.920
Und das ist eben, ja, genau wie wir vorher schon geredet haben,

00:21:41.920 --> 00:21:46.320
das ist dieser Resumability-Part, wo man sich aber dann nicht selbst entscheiden muss,

00:21:46.320 --> 00:21:52.917
sondern er prerendert die Komponente quasi am Server und dann extrahiert er den State

00:21:53.268 --> 00:22:02.243
und die Event-Handling-Logik und die kann er dann für diese eine Komponente wirklich

00:22:02.361 --> 00:22:09.598
sehr schlau nachladen, nachdem das Ganze weggesplittert worden ist und so weit optimiert worden ist,

00:22:09.800 --> 00:22:15.680
dass man es wirklich jetzt pro Komponente hat, bzw. weil das noch nicht einfach genug

00:22:15.680 --> 00:22:22.040
ist, im Hintergrund macht er da dann noch ein schlaues Prefetching, was die Sachen sein

00:22:22.040 --> 00:22:25.901
würden, die man wahrscheinlich als nächstes klickt.

00:22:27.612 --> 00:22:33.770
Das klingt für mich, wie wenn wir in der gesamten Nachladesache, die es ja eh schon

00:22:34.102 --> 00:22:39.182
seit Ewigkeiten gibt, also Next.js macht das auch schon ewig, dass du einfach HTML renderst,

00:22:39.182 --> 00:22:44.342
dann kommt halt da die Hydration-Phase, aber dann werden auch einfach nur Seiten oder Routen nachgeladen.

00:22:44.342 --> 00:22:50.062
Ich glaube, dass das View oder beliebiges View-Framework des Tages das genauso macht.

00:22:50.253 --> 00:22:54.222
Und dass wir jetzt mit Quick die Granularitäten ändern, nicht nur auf Seite nehmen, sondern

00:22:54.222 --> 00:22:57.442
auf Komponent nehmen, das wäre das Erste, dass du sagen kannst, ja, ich kann nach dem

00:22:57.442 --> 00:23:03.000
wir dieses Komponentensystem haben, kann ich sagen, ich lade jetzt alles unter diesem Komponenten-Dollar-Ding

00:23:03.362 --> 00:23:10.162
nach, was ich gerade benötige und sogar auf Event-Ebene tatsächlich, weil ich auch bei einem On-Click

00:23:10.162 --> 00:23:15.282
oder bei einem anderen Event vom Nutzer oder der Nutzerin genau das gleiche mache. Also ich sage,

00:23:15.282 --> 00:23:20.162
okay, und da passiert jetzt wieder, sie ist in die Karte, da passiert jetzt Interaktion, da passiert

00:23:20.162 --> 00:23:26.282
jetzt etwas, dass ich nachladen muss und hole mir dort teilweise nur Änderungen, ein ganzes Changeset.

00:23:26.282 --> 00:23:29.782
Also, das ist jetzt in meiner Vorstellung so.

00:23:29.962 --> 00:23:33.782
Und ja, eben viel, viel granularer Wald als zuvor.

00:23:36.164 --> 00:23:41.980
Genau. Also, das ist auch die Ausgangssituation, die ich jetzt mal für mich als die wichtige Info hatte,

00:23:42.214 --> 00:23:45.185
ohne dann eben technisch alles komplett durchblickt zu haben.

00:23:45.725 --> 00:23:51.542
Es ist ... Ich hab das mal ... Ich stampel das jetzt mal sehr plump als Lazy-Loading Stufe zwei ein.

00:23:51.582 --> 00:23:57.229
Also, ein noch viel klügeres Lazy-Loading, dass ich tatsächlich nur das lade, auch an JavaScript,

00:23:57.608 --> 00:24:05.282
was ich jetzt in dieser Millisekunde auch tatsächlich brauche und nicht mehr, damit alles gerade, sichtbare,

00:24:05.422 --> 00:24:08.068
auch möglichst schnell da ist, möglichst schnell klickbar.

00:24:08.322 --> 00:24:12.993
Und nur, wenn ich dann vielleicht scrollen anfange oder hier was draufklicke, dann der Rest kommt.

00:24:13.442 --> 00:24:17.187
Was auch mit Lazy Loading schon ging, nur eben noch mal massiv viel besser.

00:24:17.402 --> 00:24:20.742
Jetzt war ich aber an dem Punkt, dass ich das auch versucht hab,

00:24:20.782 --> 00:24:27.082
jetzt wie grade eben so ein bisschen stolperig, Anderen Leuten zu erklären, die keine Frontend-Developer waren.

00:24:27.082 --> 00:24:31.582
Zwar immer noch Techies, also haben ungefähr eine Ahnung, was Lazy Loading und so weiter bedeutet.

00:24:31.582 --> 00:24:38.271
Und dann bin ich doch sehr auf runzelnde Stirnen und fragende Blicke gestoßen.

00:24:39.378 --> 00:24:45.988
Was wir hier so generell eigentlich tun, ob das denn eigentlich so sinnvoll ist.

00:24:46.202 --> 00:24:52.468
Wen interessiert in der Realität denn tatsächlich eigentlich dieser Lighthouse-Store?

00:24:52.791 --> 00:24:59.508
Ist Lazy Loading überhaupt sinnvoll? Das ist doch super nervig, wenn ich jedes Mal wieder auf was warten muss.

00:24:59.508 --> 00:25:04.512
Wäre das nicht cooler, am Anfang einfach mal 10 Sekunden zu warten, aber dann kann ich alles tun.

00:25:05.593 --> 00:25:08.842
Und ich glaube, der letzte Punkt, ich weiß, ihr wollt mir gleich ganz viel entgegenwerfen, deswegen...

00:25:10.013 --> 00:25:12.448
Ich hab 100.000 Ecken, von denen ich jetzt auf dich zukommen kann,

00:25:12.488 --> 00:25:18.408
und ich weiß nicht, welche ich als Erstes nehmen soll. Also, du gehst weiter. Ich mach das wie eine lange Folge.

00:25:19.618 --> 00:25:23.732
Also ... Und das Letzte noch, dieses Prefetching ist doch auch blöd.

00:25:23.988 --> 00:25:27.459
Woher wollen sie denn wissen, dass ich wirklich da draufklicken will?

00:25:27.688 --> 00:25:31.060
Und ich weiß, es gibt so was wie einen Data-Safe-Modus und et cetera,

00:25:31.388 --> 00:25:33.203
aber den muss ja auch nicht jeder anhaben.

00:25:33.716 --> 00:25:36.808
Und ich weiß es auch nicht, ob's wirklich eine gute Idee ist,

00:25:36.808 --> 00:25:40.588
zu denken, ja, ich habe jetzt gerade Bandbreite zur Verfügung, soll ich einfach schon mal

00:25:40.588 --> 00:25:44.508
die nächsten fünf Blogartikel vorladen, weil ich habe ja gerade Bandbreite zur Verfügung.

00:25:44.626 --> 00:25:56.348
So, Stefan, Stage is yours. Also, wenn ich dieses Konzept so höre, es gibt ja das Konzept schon öfter, also Quick

00:25:56.348 --> 00:25:58.588
ist ja nicht neu in dem.

00:25:58.588 --> 00:26:02.788
Es hat vor einigen Jahren zum Beispiel vom Rails-Framework dieses Hotwire-Konzept gegeben,

00:26:02.788 --> 00:26:04.948
HTML over the wire, wo es ja so ähnlich funktioniert.

00:26:04.948 --> 00:26:09.948
Ich bin jetzt hier meine ganzen Erklärungen jetzt verdämmt, weil das ist mir ein bisschen genauer

00:26:09.948 --> 00:26:15.708
angeschaut früher. Und weil da eine starke Integration hat zum Rails-Framework, das auch

00:26:15.708 --> 00:26:19.948
sehr serverseitig ist, wo du aber auch sagst, genau diese kleinen Teile kann ich jetzt über

00:26:19.948 --> 00:26:26.628
Rails auch übertransferieren. Das erste, was mir in den Kopf kommt, ist, wenn ich das höre,

00:26:26.628 --> 00:26:30.948
wie das funktioniert. Es gibt konstant eine Verbindung zum Server. Wahrscheinlich, keine

00:26:30.948 --> 00:26:34.348
Ahnung, ob das über Websockets gemacht wird oder über irgendeinen normalen HTTP-Raumtriebs oder

00:26:34.348 --> 00:26:36.155
oder was auch immer, aber...

00:26:37.524 --> 00:26:43.374
Das Framework erfordert von mir, dass ich einen Node.js-Server laufen habe, der konstant eine

00:26:43.374 --> 00:26:44.814
Verbindung zum Client macht.

00:26:44.814 --> 00:26:51.814
Und das ist gleich einmal das, wo ich als langjähriger Java- und Node-Entwickler, wo

00:26:51.814 --> 00:26:55.574
es mir die Ohren spitzt und die Nackenhaare aufstellt.

00:26:55.718 --> 00:27:01.054
Also Node.js ist eine fantastische Umgebung, JavaScript ist eine fantastische Sprache zum

00:27:01.054 --> 00:27:05.116
Server schreiben, aber Node.js ist halt einfach immer richtig, richtig gut im Warten.

00:27:05.814 --> 00:27:09.534
Es ist gut im Warten, dass du irgendwo von einer Datenbank eine Daten kriegst und nachher

00:27:09.534 --> 00:27:14.010
an einen Client schickst, in dem du noch ein paar Felder umänderst oder ein Chesen machst oder was auch immer.

00:27:14.334 --> 00:27:18.734
Node ist nicht so gut, wenn du irgendwie an ein Compute gehst oder konstante Verbindungen

00:27:18.734 --> 00:27:19.249
aufrechterhalten musst.

00:27:20.240 --> 00:27:24.854
Also eines der beliebsten Node-Tools ist Forever, das sagt einfach, oh, du selber sagst, und

00:27:24.854 --> 00:27:25.839
naja, ich starte noch halt wieder.

00:27:25.956 --> 00:27:34.654
Weil es eben ständig so passiert. Und das ist das erste, wo ich Fragezeichen im Kopf habe, heißt das überhaupt eine gescheite

00:27:35.021 --> 00:27:35.654
Idee.

00:27:35.654 --> 00:27:44.366
Da muss man aber auch bedenken, dass wir es ja hauptsächlich mit zwei Arten von Applikationen zu tun haben.

00:27:44.774 --> 00:27:51.494
Es gibt die eine Art von Applikationen oder Webseite, wo du halt Text hast, schönen Text und Bilder.

00:27:51.494 --> 00:28:01.294
Also hauptsächlich lesen, konsumieren, wenig interagieren. Der einzige Interaktionsgedanke, den du hast, ist eine Navigation auf eine andere Seite,

00:28:01.294 --> 00:28:04.504
wo du ja sowieso wieder einen Server-Request auf das gesamte Dokument hast.

00:28:04.873 --> 00:28:10.634
Das heißt, da ist der Server-Raumtrip relativ langfristig, das heißt, du lest zuerst, dann

00:28:10.634 --> 00:28:13.954
navigierst du, dann hast du wieder einen Raumtrip, dann lest du, dann navigierst du, dann hast

00:28:13.954 --> 00:28:14.954
du wieder einen Raumtrip.

00:28:14.954 --> 00:28:18.994
Das heißt, der Server ist relativ entspannt und du kannst die Seite durchnavigieren und

00:28:18.994 --> 00:28:22.940
durchkonsumieren, wie du möchtest. Da brauche ich keine...

00:28:23.814 --> 00:28:29.964
Feingrained Updates, weil ich ja sowieso immer das Gesamte brauche, also das Change-Set, das ich haben möchte.

00:28:30.961 --> 00:28:32.411
Ist ja die gesamte Seite.

00:28:33.131 --> 00:28:39.584
Warum mache ich das auf so kleine Stücke runter? Und warum brauche ich da einen Node.js-Server dazu, wenn ich einfach die HTML-Seiten irgendwie

00:28:39.584 --> 00:28:44.393
anders auch rauskriegen kann, sei es jetzt dynamisch oder statisch?

00:28:44.584 --> 00:28:50.624
Und die zweite Art von Applikationen, die ich habe, das sind die stark interaktiven Applikationen. Das sind die Applikationen, wo du

00:28:50.624 --> 00:28:57.504
Administrationsmasken hast, wo du vielleicht irgendwelche Grafen hast, wo du regelmäßig

00:28:57.504 --> 00:29:02.384
Daten vom Becken holst, damit du Charting betreibst oder Tabellen aktualisierst oder

00:29:02.384 --> 00:29:09.784
mein Gott, sei kreativ und habe ein Canvas-Element, wo du dich kreativ austoben kannst. Und genau

00:29:09.784 --> 00:29:14.264
diese Art von Applikationen sind sehr JavaScript-lustig. Warum sind die sehr JavaScript-lustig? Na ja,

00:29:14.264 --> 00:29:19.624
weil es viel um die Interaktion geht. Da ist das Change-Set auch per Default ziemlich,

00:29:19.624 --> 00:29:24.064
ziemlich groß. Was bringt es mir, wenn ich eine Form habe mit 30 Elementen und ich muss für jedes

00:29:24.064 --> 00:29:29.064
einzelne Input-Element, das ich bearbeite, nachher das Changeset an JavaScript oder die Updates vom

00:29:29.064 --> 00:29:33.824
Server holen. Also mir kommt das so vor und ich hoffe, dass ich es richtig verstanden habe,

00:29:33.977 --> 00:29:40.624
dass für diese beiden Welten, die man hat an Anwendungen, die eine Seite muss schnell sein

00:29:40.624 --> 00:29:45.464
und da navigierst du über das gesamte Dokument und die andere Administrationsmaske meist hinter

00:29:45.464 --> 00:29:50.541
am Login, wo du sowieso Time to First Byte oder First Interactive Thing ist sowieso die

00:29:50.659 --> 00:29:55.484
Anmeldemaske. Wer kümmert sich da drum, was als nächstes kommt? Dass genau für diese beiden.

00:29:55.744 --> 00:30:02.442
Welten Quick das schlechteste Tool der Wahl ist, weil es eben auf eine Granularität geht, die

00:30:02.664 --> 00:30:07.944
weder für das eine gut ist, nur für das andere gut ist. Und das ist halt, ja, darum frage ich mich.

00:30:08.276 --> 00:30:13.504
Für welche Seiten ist es jetzt gut? Oder welche Applikationen gibt es, die genau vor dem profilieren,

00:30:13.504 --> 00:30:19.304
Außer, ich bin der Misko, war 10 Jahre bei Googlen und Lighthouse Core ist wichtig.

00:30:21.545 --> 00:30:26.715
Applikation. Vanessa, magst du oder darf ich in Stefan kurz widersprechen bei einem Punkt?

00:30:26.715 --> 00:30:31.915
Bitte, sehr gerne. Das war tatsächlich bei mir, warum ich ein bisschen gezögert habe,

00:30:31.915 --> 00:30:36.835
mich da in Quick einzulesen und jetzt bei euch da zu sein, weil ich mir zuerst so gedacht habe,

00:30:37.803 --> 00:30:42.675
so genau den Kritikpunkt, den du mit Node selber angebracht hast. Also ich komme eher aus der

00:30:42.675 --> 00:31:03.675
.NET-Ecke und das für mich immer basteln. Und dann habe ich mir gedacht, was fange ich jetzt an mit einem Web-Framework, wo ich jetzt dann einen Node-Server laufen lassen muss, dass das Ding funktioniert.

00:31:03.847 --> 00:31:09.275
Weil ich arbeite nebenbei sonst mit Eleventy oder bin gerade dabei, mir Ameng Astro anzuschauen.

00:31:09.527 --> 00:31:16.075
Und dann war für mich das so ein riesen Blocker, dass ich meinte, also es geht nicht.

00:31:16.075 --> 00:31:19.475
Ich weiß auch, also ich tue mir so viel leichter was auf GitHub Pages zu hosten,

00:31:19.475 --> 00:31:23.075
wie jetzt irgendwie einen Node-Server zu hosten für eine Frontend-Web-Anwendung.

00:31:23.075 --> 00:31:30.195
Und dann kann man aber QUIC sehr wohl statisch bilden über so ein Plugin,

00:31:30.195 --> 00:31:34.835
add-on, sie haben einen eigenen Namen, wie das Ding heißt, und dann hat man das nicht,

00:31:34.835 --> 00:31:42.315
dass dieser Server ständig laufen muss, sondern das Ding macht zur Compile-Zeit so ein geschicktes

00:31:42.315 --> 00:31:48.595
Codesplitting, dass es die Module so sauber zerlegt, dass du die dann einfach wieder statisch

00:31:48.595 --> 00:31:57.395
hosten kannst und er die dann nachladen kann. Das heißt, das mit dem Node-Server, das ist nicht der

00:31:57.395 --> 00:32:06.435
Fall, weil ich mir gedacht habe, muss ich dann quasi, schreibe ich dann Rest oder was

00:32:06.435 --> 00:32:10.235
schreibe ich dann für Backend-Service oder wie mache ich die Sachen dann oder habe ich

00:32:10.235 --> 00:32:14.715
dann quasi da jetzt gedacht, ist das Backend von meinem Quick, ist das dann ein Backend

00:32:14.715 --> 00:32:19.515
von Frontend für irgendwas anderes oder so weiter, bis ich draufgekommen bin, dass man

00:32:19.515 --> 00:32:25.555
das schon sehr wohl einfach dann statisch bilden kann und dann hat man das nicht, dass

00:32:25.555 --> 00:32:28.882
man jetzt quasi immer diesen Node-Server laufen haben muss.

00:32:28.936 --> 00:32:37.272
Okay, das heißt auch die Deltas werden vorkompiliert und das Einzige, was passiert, ich hole mir.

00:32:38.395 --> 00:32:41.915
Das zurück, ist das in allen Fällen so?

00:32:42.251 --> 00:32:47.400
Weil mein Eindruck war jetzt schon auch, dass du servergenerierte oder dynamische Elemente hast.

00:32:48.035 --> 00:32:51.595
Das ist nicht in allen Fällen so, sondern so, wie es du möchtest.

00:32:53.360 --> 00:32:56.610
Und das ist der Punkt, wo wir auch vorher schon gesprochen haben,

00:32:56.753 --> 00:32:59.598
entscheidet man als Reserver, was am Server und was am Client läuft.

00:33:00.057 --> 00:33:03.810
Ich habe mir, wie ich mir das angeschaut habe, habe ich mir für mich eine Notiz aufgeschrieben,

00:33:03.810 --> 00:33:05.801
where does the code get executed?

00:33:05.900 --> 00:33:10.581
Weil du musst das Ding schon wirklich gut verstehen, dass du weißt, was wo läuft.

00:33:10.824 --> 00:33:15.610
Und Resumability klingt sehr nett und ich habe das Ding ausprobiert und es ist wirklich faszinierend geworden,

00:33:15.610 --> 00:33:18.782
die Komponente einfach am Server oder zur Compile-Zeit.

00:33:19.772 --> 00:33:27.410
Kompiliert wird und läuft, und dann zu einem Server oder zu einer Compile-Zeit kompiliert wird

00:33:27.410 --> 00:33:31.115
und dann wirklich nur dieses kleine Diff braucht.

00:33:31.898 --> 00:33:35.410
Aber ich frage mich eben auch genau die gleiche Frage, die Stefan gerade in den Raum

00:33:35.410 --> 00:33:37.201
geworfen hat, für wen ist es denn?

00:33:37.410 --> 00:33:41.410
Weil eigentlich, ich fände es eigentlich auch ganz nett, wenn wir einfach mal so ein

00:33:41.410 --> 00:33:47.410
oder zwei Frameworks hätten und die kann man dann einfach benutzen für zwei Use Cases, weil es ist

00:33:47.410 --> 00:33:51.330
wirklich schwierig, sich da im Wald der Frags noch zurechtzufinden.

00:33:51.532 --> 00:33:54.770
Grade wenn man jetzt mal, um mal tatsächlich ehrlich zu sein,

00:33:54.810 --> 00:33:56.673
so was wie React View ist schon ...

00:33:57.330 --> 00:34:01.730
Man hätte auch vielleicht nur eins davon gebraucht. Sie machen schon ziemlich ähnliche Sachen.

00:34:01.948 --> 00:34:03.010
Aber jetzt ist es ...

00:34:03.865 --> 00:34:08.210
Beziehungsweise will das so eine Art eierlegende Wollmichsau sein.

00:34:08.250 --> 00:34:12.650
Also, es funktioniert für statische Seiten, es funktioniert für dies oder für jenes.

00:34:12.690 --> 00:34:20.889
Oder ist es explizit ausgerichtet für die JavaScript-lastigen Applikationen,

00:34:21.168 --> 00:34:22.390
um die schneller zu machen.

00:34:22.390 --> 00:34:26.390
Also das mit diesen, ich hab sehr, sehr viele Interaktionen und sehr viel JavaScript,

00:34:26.614 --> 00:34:29.290
wo ich ja vorher initial die Frage in den Raum geworfen hatte,

00:34:29.290 --> 00:34:34.090
auf solchen Webseiten, ist es wirklich notwendig, dass alles immer sofort klickbar ist,

00:34:34.090 --> 00:34:37.090
sodass ein User nicht eh bereit, hier mal kurz zu warten?

00:34:37.435 --> 00:34:40.090
Mit dem Vergleich dazu, wie hoch sind eigentlich die Kosten,

00:34:40.090 --> 00:34:44.907
die wir haben, um das alles zu ermöglichen, dass das hier jetzt alles geladen wird.

00:34:47.310 --> 00:34:51.560
Ich weiß nicht, ob da, ähm, sie eine offizielle Aussage machen.

00:34:51.731 --> 00:34:55.440
Bisher seh ich halt immer nur, es ist so viel, es ist halt besser.

00:34:55.440 --> 00:35:02.040
Ich hab jetzt noch nicht gefunden den, den, den Hint für, benutze es genau hierfür.

00:35:02.040 --> 00:35:06.880
Denn was schon jetzt meiner Meinung nach wäre, wenn ich jetzt eine einfache HTML,

00:35:06.880 --> 00:35:10.720
einfache statische Seite haben möchte, die nicht so viel JavaScript hat,

00:35:10.896 --> 00:35:16.631
dann würde ich normalerweise, da würde ich argumentieren, dass es für die Developer Experience nicht grade gut ist,

00:35:17.027 --> 00:35:22.005
mir immer so ein Framework eines Beins verbinden, was Breaking Changes haben könnte, sich verändern könnte und ich in

00:35:22.347 --> 00:35:26.560
zwei Monaten vielleicht nicht mehr lesen kann, weil ich in der Zwischenzeit schon wieder was anderes gemacht hatte.

00:35:26.794 --> 00:35:29.441
Und da würde ich doch eigentlich die Sachen doch eher simpel halten.

00:35:33.087 --> 00:35:39.902
Also ein Gutfeeling, das ich habe, für was QUIC einsetzbar ist, ist tatsächlich Webseiten.

00:35:40.154 --> 00:35:48.211
Witzigerweise, weil die Firma, die hinter QUIC steht, einen visuellen Editor, ein visuelles Headless-CMS macht,

00:35:48.535 --> 00:35:53.720
wo QUIC als gedachter Head für dieses Headless-CMS funktionieren soll.

00:35:53.873 --> 00:36:00.360
Und Content-Management-Systeme sind vor allem eher auf content-lastigen Seiten notwendig.

00:36:00.360 --> 00:36:07.341
Hätte ich jetzt mal so gemeint. Und darum hätte ich gemeint, ja, ich glaube, die Idee ist, macht's Webseiten.

00:36:07.575 --> 00:36:09.951
Ich bin halt jetzt noch, also ich habe jetzt...

00:36:10.959 --> 00:36:15.209
In den letzten, glaube ich, sieben oder acht Jahren jedes Framework sehr intensiv genutzt,

00:36:15.209 --> 00:36:20.772
weil wir in der Firma alle drei Jahre einmal den gesamten Frontend-Unterbau austauschen.

00:36:23.139 --> 00:36:28.009
Also React sehr, sehr viel, Angular sehr, sehr viel, bevor wir jetzt tatsächlich gar nichts mehr machen.

00:36:28.009 --> 00:36:35.382
Ich bin einfach absolut der Meinung, dass es für normale Content-Webseiten, die du machst,

00:36:36.085 --> 00:36:41.207
es absolut keinen Grund gibt, irgendein überfrachtetes JavaScript-Framework zu nehmen.

00:36:41.432 --> 00:36:47.409
Selbst wenn du interaktive Elemente da drinnen hast, wie zum Beispiel ein interaktives Suchfeld mit einem Dropdown

00:36:47.409 --> 00:36:50.409
oder ein Kalenderwidget oder was auch immer, da gibt es wunderschöne Alternativen.

00:36:50.409 --> 00:36:55.754
Ja, MewPetit. Alpine oder Minifu. Heißt das Minifu? Genau.

00:36:56.209 --> 00:36:58.209
Also, ja, genau.

00:36:59.103 --> 00:37:03.609
Man merkt, dass ich die letzten drei Wochen mit Python verbracht habe,

00:37:03.609 --> 00:37:07.592
weil alles, was klein ist, ist wie der große Bruder Mini.

00:37:07.646 --> 00:37:13.849
Also statt Ginger habe ich Mini-Ginger und statt Anaconda habe ich Mini-Conda und fragts

00:37:13.849 --> 00:37:17.609
mich nicht, was Mini-Conda und Mini-Ginger tun, aber es gibt sie und sie sind mini.

00:37:17.609 --> 00:37:23.689
Also gerade mit solchen kleineren Bibliotheken, die ich einfach drauflegen kann, mit denen

00:37:23.689 --> 00:37:30.969
ich ein bisschen Interaktivität drangebe oder bereitstelle, da fahre ich doch im Endeffekt viel, viel besser.

00:37:30.969 --> 00:37:34.849
Und da habe ich genau die Ziele, die auch Quick verfolgt, nämlich einmal eine statische

00:37:34.849 --> 00:37:41.049
Seite laden und dann interaktiv machen durch Klicks, ja auch erledigt. Und die gab es so Dinge wie,

00:37:41.049 --> 00:37:46.129
hey, das JavaScript-Bundle asynchron und deferred zu laden, damit sie sich nachher einhängt und

00:37:46.129 --> 00:37:52.449
die paar Sachen interaktiv macht. Das macht man schon seit 10 Jahren. Also das ist im Grunde die

00:37:52.449 --> 00:37:58.600
hey, so funktioniert Checkquery-Variante. Und dass man visuell auch sicherstellen kann, dass, keine

00:37:58.889 --> 00:38:02.289
Klicks sofort stattfinden können.

00:38:03.569 --> 00:38:07.683
Und dann vielleicht erst später ausgeführt werden, wenn das Javascript bereit ist, dazu.

00:38:08.322 --> 00:38:12.219
Das ist auch was, was man lösen kann, da braucht man jetzt auch kein Quick-Framework dazu.

00:38:12.373 --> 00:38:15.979
Also, kann man wahrscheinlich sogar besser lösen, wenn man kein Framework nimmt,

00:38:15.979 --> 00:38:18.979
wenn man dann wieder Zugriff auf die Grundmittel hat.

00:38:18.979 --> 00:38:24.346
Und darum bin ich da sehr, sehr skeptisch. Für die Welt, in der ich das sehe.

00:38:24.994 --> 00:38:30.859
Kommt mir das eher so vor wie eine Bubble in der Next.js-Bubble,

00:38:30.859 --> 00:38:34.219
Wobei, ganz ehrlich sagen muss, Next.js ist mittlerweile schon ein ziemlicher Schiff.

00:38:34.366 --> 00:38:40.939
Ja, Bubble würde ich es nicht mehr nennen. Ja, ja, naja, wobei, da kann ich noch anders philosophieren.

00:38:40.939 --> 00:38:46.019
Du nennst es nicht Bubble, weil es ja in deiner JavaScript-Bubble so groß ist.

00:38:46.019 --> 00:38:53.899
Ja, ich habe gerade letztens gesehen, dass jetzt gestern der Boilerplate Next.js für

00:38:53.899 --> 00:38:57.979
Enterprises rauskam und da dachte ich mir, oh, Next.js Enterprise.

00:38:57.979 --> 00:39:01.439
Ich mein, es klingt spannender, als es im Endeffekt ist für uns.

00:39:01.499 --> 00:39:03.497
Das ist halt ein Boyerplate, wo alle ...

00:39:04.073 --> 00:39:10.039
Die ... also, einige Sachen vor uns, halt jetzt Storybook, irgendein Router, alles Mögliche,

00:39:10.099 --> 00:39:11.464
was man normalerweise so ...

00:39:11.699 --> 00:39:18.399
Aber jetzt, weil ich ihr grad rede, spring ich da kurz ein. Ich seh ja einen Nachteil bei Alpine JS und PetiteVue,

00:39:18.747 --> 00:39:24.939
und was es vielleicht noch geben möchte, was mich normalerweise davon abgehalten hat, es zu benutzen.

00:39:24.939 --> 00:39:33.019
Und der geht tatsächlich auch wieder in Richtung eher Developer Experience anstelle von User Experience, eigentlich rein auf Developer Experience.

00:39:33.019 --> 00:39:39.579
Und das ist, dass, wenn ich jetzt den Use Case hab, ich brauche hier nur so ein bisschen Interaktion,

00:39:39.579 --> 00:39:44.299
aber der Rest ist eigentlich eine statische Webseite, dann ist das natürlich super, keine Frage.

00:39:44.299 --> 00:39:48.939
In der Realität hab ich oft Sachen, da braucht diese eine Seite,

00:39:49.066 --> 00:39:52.139
bräuchte eigentlich nur ganz wenig Interaktion.

00:39:52.139 --> 00:39:59.459
Die andere Seite bräuchte voll viel Interaktion und PTView und Alpine JS reichen da nicht mehr aus.

00:39:59.519 --> 00:40:04.819
Ich glaube, mittlerweile sind die auch wiederum vielleicht gewachsen und können mehr, oder es gibt Extensions.

00:40:04.819 --> 00:40:07.819
Ich habe keine Ahnung?

00:40:06.423 --> 00:40:10.273
Aber für mich war's da, was ist, wenn ich dann doch mal mehr brauche?

00:40:11.383 --> 00:40:16.273
Und in der idealen Welt könnte ich sagen, dann verwende ich doch auf dieser Seite jetzt Vue.js.

00:40:16.273 --> 00:40:19.273
Ich verwende immer die richtige Technologie, die ich gerade brauche.

00:40:19.273 --> 00:40:22.273
Also hier verwende ich Vue.js, hier mache ich Alpine.js oder PT.Vue.

00:40:22.273 --> 00:40:25.273
Hier habe ich, keine Ahnung, Angular-Dingens.

00:40:25.534 --> 00:40:30.116
Aber dann habe ich ja auch drei Sachen zu maintainen, im Kopf zu halten, zu implementieren.

00:40:30.273 --> 00:40:36.157
Oder ich habe Teams, und das eine Team ist daraus spezialisiert und mich daraus spezialisiert, was dazu geführt hat,

00:40:36.607 --> 00:40:40.273
dass ich doch gesagt hab, dann lass es uns doch in Vue.js machen,

00:40:40.273 --> 00:40:46.273
auch diese Seite, obwohl es hier leider, leider wirklich sehr wenig Interaktion eigentlich bräuchte.

00:40:46.273 --> 00:40:49.220
Also sie ist sehr knapp an einer reinen statischen Webseite vorbei.

00:40:49.273 --> 00:40:54.273
Jetzt habe ich aber auch die Vue-Komponenten mit Vue halt schon alle voremplementiert

00:40:54.273 --> 00:40:55.980
und ich bräuchte halt diesen einen Selectbox hier.

00:40:56.273 --> 00:40:59.273
Und wir wissen alle, wir wollen keine Selectboxen schreiben.

00:40:59.273 --> 00:41:03.273
Entweder wir schreiben sie einmal und benutzen sie für alles Oder ich benutze das native Select.

00:41:03.273 --> 00:41:08.385
Aber wenn ich jetzt eben dieses tolle Select-Feld mit der ganz tollen UI auch auf dieser Seite brauche.

00:41:09.583 --> 00:41:13.633
Dann weiß ich nicht, vielleicht gibt es Adapter und ähnliches,

00:41:13.633 --> 00:41:16.833
dass ich jetzt meine View-Komponente dann doch auch hier wieder verwenden könnte.

00:41:16.833 --> 00:41:18.558
Aber es ist kompliziert.

00:41:19.008 --> 00:41:24.313
Und eigentlich möchte ich doch was shippen und was Schönes haben. Und zwar recht bald.

00:41:24.313 --> 00:41:28.313
Ja, und dann bist du genau bei dem Punkt, wo du sagst, dann hast du dein Meta-Framework rund um das,

00:41:28.313 --> 00:41:31.033
wie Next.js, Next.VidPress oder wie es nicht alle heißen,

00:41:31.033 --> 00:41:36.673
du sagst, ja da kommt eher als erstes einmal diese statische Seite und dann kommt das Framework

00:41:36.673 --> 00:41:40.273
und macht alle deine Sachen interaktiv und sei es nur ein Dropdown oder sei es nur eine

00:41:40.273 --> 00:41:45.153
Suche oder sei es nur ein Formularfeld, eine Selectbox und dann sind wir wieder an dem

00:41:45.153 --> 00:41:48.473
Punkt, wo man sich fragt, naja, aber muss man genau deswegen das gesamte Framework gleich

00:41:48.473 --> 00:41:51.193
shippen oder geht man nicht auf sowas hin, wie quick das macht, ja jetzt sind wir wieder

00:41:51.193 --> 00:41:52.866
da runtergekommen. Ah Mist, okay.

00:41:53.193 --> 00:41:57.353
Aber da kann ich euch jetzt beide noch eine große Freude bereiten, ich bin nämlich zufällig

00:41:57.353 --> 00:42:02.513
wie versucht habe, die Fehler in der CLI auf Windows zu debuggen von QUIC,

00:42:02.750 --> 00:42:09.393
auf das Projekt Mythosis gestoßen von Builder.io. Und das hat jetzt einen schönen Titel,

00:42:09.393 --> 00:42:12.593
Write Components Once Compiled to Every Framework.

00:42:13.508 --> 00:42:19.953
Okay, cool. Und das passt perfekt in die QUIC-Schiene ein. Das ist so die eierlegende Wollmilchsau,

00:42:19.953 --> 00:42:23.513
mit der man halt, einmal, ich weiß jetzt nicht, ob ich es am Anfang gesagt habe,

00:42:23.513 --> 00:42:27.113
dass ich euch da ein Geschenk mit einem großen Augenzwinkern machen kann.

00:42:28.172 --> 00:42:31.584
Das einfach, das löst genau die Probleme, das ihr jetzt angesprochen habt.

00:42:32.833 --> 00:42:35.275
Punkt. Na, Gott sei Dank.

00:42:37.713 --> 00:42:42.913
Und mir ist da ähnlich gegangen, wie jetzt bei dieser Quick-Diskussion.

00:42:42.913 --> 00:42:50.073
Es scheint alles zu können. Und das ist dann dieser Punkt, wo man es dann dafür einsetzt.

00:42:50.381 --> 00:42:53.833
Weil wenn man das verspricht, ich kann damit die statischen Seiten generieren und ich kann

00:42:53.833 --> 00:42:58.553
genauso serverseitig meine Sachen machen.

00:42:58.204 --> 00:43:03.289
Dann ist der Punkt halt wieder, ja, wofür soll ich es verwenden?

00:43:03.614 --> 00:43:08.769
Und so ein Exempel, das ich ausprobiert habe, ich habe eine Seite, die ist jetzt gerade in Eleventy geschrieben,

00:43:08.769 --> 00:43:13.009
und da wird ein JSON-File mitgeneriert mit der statischen Seite.

00:43:13.009 --> 00:43:20.249
Das ist quasi so die sehr simple API für native Apps, die aber dann halt feilschnell läuft.

00:43:20.249 --> 00:43:24.409
Und das hätte ich jetzt probiert einmal in QUIC. Und in QUIC, du kannst QUIC nicht beibringen,

00:43:24.409 --> 00:43:25.889
dass es in diesem statischen Prozess,

00:43:26.417 --> 00:43:29.909
einfach nur ein JSON-File generieren sollte, weil es nicht schafft, die Endung für den

00:43:29.909 --> 00:43:35.729
einen File zu können. Das heißt, ich habe bei diesen Mythoses mit write-components-once

00:43:35.729 --> 00:43:41.129
compiled to every framework genau die Angst, oder aus der Erfahrung heraus,

00:43:41.129 --> 00:43:46.009
dass es nicht oder was wir eh alle kennen, dass wenn das Ding alles kann, dass es natürlich

00:43:46.009 --> 00:43:51.649
dann genau an diese Ecken in genau die Sonderfälle, die man haben wird, und die lassen sich leider

00:43:51.649 --> 00:43:56.209
leider nicht vermeiden, dass man genau da dann in die Probleme reinläuft, warum wir

00:43:56.209 --> 00:44:01.009
uns dann eigentlich ganz glücklich sind, wenn man sagt, man nimmt a View, a React,

00:44:01.009 --> 00:44:04.082
a was man kennt und schreibt es darin.

00:44:06.409 --> 00:44:10.489
Die eierlegenden Wollmesauen und genau die passieren meistens dadurch, dass sie

00:44:10.489 --> 00:44:14.249
erst einen Use Case machen und den auch sehr gut, Leute ausspringen, dann, wir haben

00:44:14.249 --> 00:44:18.289
aber noch mehr Feature Requests und plötzlich wächst es, um alles zu adaptieren.

00:44:18.289 --> 00:44:22.929
Deswegen, ich meine, im Endeffekt ist Vue und React superähnlich geworden,

00:44:22.929 --> 00:44:26.876
gerade mit der Composition API, so ein bisschen wie React-Hooks, etc.

00:44:27.452 --> 00:44:30.329
Aber Sie können jetzt bestimmt beide, das Single-Page-Applications,

00:44:30.329 --> 00:44:35.629
Multiple-Page-Applications, Server-Side-Render, Client-Side-Render, das können Sie beide gut.

00:44:35.905 --> 00:44:39.229
Es kann schon sein, und ich kann es absolut noch nicht einschätzen,

00:44:39.533 --> 00:44:42.169
dass Quick vielleicht nicht die eierlegende Wollmilchsau ist,

00:44:42.169 --> 00:44:44.529
weil sie erst für den Fall gut funktioniert,

00:44:44.998 --> 00:44:48.769
aber dann später auch alle Add-ons und alles Mögliche für später noch hat,

00:44:48.769 --> 00:44:56.187
oder ob's einfach im Prinzip so sinnvoll ist, dass es für alle Use Cases gleich gut funktionieren könnte.

00:44:56.539 --> 00:45:00.089
Aber ich bin da, werde alt, bin da irgendwie so ein bisschen skeptisch.

00:45:00.089 --> 00:45:05.809
Und ich frag mich nur, weil der Ausgang davon war,

00:45:05.809 --> 00:45:12.529
und es wird immer so drauf gedrängt, dass dieser erste initiales Zeichen oder das erste initiale.

00:45:13.661 --> 00:45:19.811
Drücken von Sachen, so viel schneller geht. Frage ich mich, aber was hat das denn für Trade-offs?

00:45:19.962 --> 00:45:24.211
Ist es einfach nur, ich muss ein neues Framework lernen, vielleicht ist es ein bisschen komplizierter,

00:45:24.211 --> 00:45:29.511
vielleicht brauche ich einen Node.js-Server, vielleicht ist einfach nur das Setup ein bisschen komplexer,

00:45:29.775 --> 00:45:32.811
aber hat es auch Trade-off für die User Experience?

00:45:32.908 --> 00:45:39.011
Weil was bedeutet es denn im Endeffekt, wenn ich alles lazy-loade, alles lazy-parse und exekute?

00:45:39.254 --> 00:45:46.811
Heißt es dann, dass es zwar initial 0,3 Sekunden da ist, aber alles, was ich danach mache, braucht auch wieder 0,3 Sekunden.

00:45:46.811 --> 00:45:51.174
Es kann ja sein, dass das jetzt super smart ist und alles errät,

00:45:51.542 --> 00:45:54.811
was ich wahrscheinlich als Nächstes drücken möchte und das prefetche.

00:45:55.081 --> 00:46:01.211
Aber kann das funktionieren im großen Stil? Wenn ich jetzt eine Quick-App schreibe, eine kleine,

00:46:01.211 --> 00:46:07.611
die wird sicherlich bombastisch gut funktionieren. Aber was ist, wenn ich jetzt versuche, Amazon Rewe Digital,

00:46:07.611 --> 00:46:09.411
keine Ahnung, mit Quick zu implementieren?

00:46:10.195 --> 00:46:15.498
Wie glauben wir, dass die Performance wirklich alles… Stefan schüttelt den Kopf.

00:46:16.632 --> 00:46:20.411
Nein, also da sind wir genau bei diesem Punkt, den ich vorhin angesprochen habe.

00:46:20.411 --> 00:46:25.411
Wenn du eine JavaScript-lastige Applikation hast, dann macht es ja Sinn, dass du die Sachen zum Client bringst.

00:46:25.724 --> 00:46:28.920
Du willst dir jeden Roundtrip nachher noch vermeiden.

00:46:29.838 --> 00:46:36.411
Servertraffic funktioniert, soll man auch machen. Server können auch viel Traffic handeln.

00:46:36.689 --> 00:46:43.811
Genau wie du es sagst, muss ich für jeden Klick oder für jede Komponente das minimale Delta rüberschippen

00:46:43.990 --> 00:46:46.033
und einen Server-Roundtrip riskieren dadurch.

00:46:46.111 --> 00:46:49.823
Egal, ob das jetzt zum Node.js-Service oder zum CDN oder sonst irgendwo hin.

00:46:50.408 --> 00:46:56.111
Was ist, wenn du unterwegs bist und deine Verbindung ist schlecht, Klassiker, was machst du dann?

00:46:56.111 --> 00:47:00.111
Also es hat schon Sinn, dass du ein bisschen die Dinge auf einmal rüberschippst.

00:47:00.111 --> 00:47:06.111
Da kannst du relativ gut die HTTP-Kompression, die Speed zugutemachen,

00:47:06.111 --> 00:47:11.571
dass du halt auch die Dinge sauber rüberbekommst und dann dort ein Hosts, anstatt dass du wirklich

00:47:11.571 --> 00:47:16.791
für jeden kleinen Klick nur mal eine Extratour machst. Also ich bin da absolut deiner Meinung.

00:47:16.791 --> 00:47:23.351
Ich kann mir gut vorstellen, dass im Produktiveinsatz solche Dinge schnell sichtbar werden.

00:47:26.678 --> 00:47:30.249
Wobei, wer wäre dir eine Firma interessant, die wir in Belgien getroffen hätten, die

00:47:30.249 --> 00:47:34.771
nämlich gesagt haben, sie switchen gerade von Angular nämlich auf QUIC und sind super happy damit?

00:47:35.735 --> 00:47:40.809
Bin ich gespannt, wie es ihnen geht, ob das Ding schon läuft und schon draußen ist.

00:47:41.478 --> 00:47:45.649
Tatsächlich ist da, also laut der Doku, oder weil wir über die Einsatzzwecke schon gesprochen

00:47:45.727 --> 00:47:48.572
haben, haben sie in der Doku wortwörtlich so den Satz dann, Applications built with,

00:47:49.337 --> 00:47:52.551
QUIC are fast, regardless of the number of components or complexity.

00:47:53.100 --> 00:47:56.953
They are all of one constant time in terms of JS payload.

00:47:57.872 --> 00:48:04.809
Das ist ja ein sehr großes Versprechen. Und, weil ich da gerade in der Doku bin, ein zweites Zitat noch zu dem, was die Vanessa vorher gesagt hat,

00:48:04.809 --> 00:48:09.649
Richtung Prefetching, woher man weiß, was gebraucht wird.

00:48:09.649 --> 00:48:15.030
Da gibt es den schönen Satz, for example, the buy now button is more important than the add to cart button.

00:48:15.372 --> 00:48:19.027
So QUIC will prefetch the buy now button first and then the add to cart button.

00:48:19.711 --> 00:48:22.682
Aber warum denn? Warum ist jetzt der Buy Now-Button wichtiger?

00:48:22.826 --> 00:48:24.680
Das hab ich auch gelesen, aber woher weiß ...

00:48:24.887 --> 00:48:29.729
A, woher weiß es das? Gebe ich das als Developer an, gebe ich Priority 1, Priority 2 an?

00:48:29.729 --> 00:48:36.089
Ist es was Statistisches, das getrackt wird, was wird öfter geklickt? Und je nachdem, wie sich das ...

00:48:36.089 --> 00:48:40.866
Aber, ich mein, wenn für mich jetzt grade der Add to Cart-Button wichtiger ist,

00:48:41.154 --> 00:48:44.611
für mich als User jetzt grade, hab ich ...

00:48:44.929 --> 00:48:50.228
Buy Now ist nicht so. Falsch. Beinauswichtiger.

00:48:50.589 --> 00:48:52.529
Ja, genau. Schön, dass wir Sie genau das Gleiche gefragt haben.

00:48:52.529 --> 00:48:58.529
Also das war so ein Satz, wo ich mir auch so gedacht habe, ja, das klingt halt sehr nach Marketing.

00:48:58.529 --> 00:49:04.529
Und zu dem Punkt, den der Stefan gerade gesagt hat, mit dem, wann da die Connection dazwischen ausfällt,

00:49:04.529 --> 00:49:07.529
weil ich fahre sehr viel hin und her zwischen Innsbruck, Linz und Wien,

00:49:07.630 --> 00:49:12.529
und da ist das deutsche Eck halt nicht gerade jetzt von Internet gesegnet.

00:49:12.806 --> 00:49:19.225
Und da habe ich mir dann genau die Frage gestellt, Und auch beim Probieren fällt dann auf, manchmal geht es halt nicht.

00:49:19.329 --> 00:49:23.329
Und da habe ich das Gefühl, wenn ich jetzt irgendeine JavaScript-heavy-Anwendung verwende,

00:49:23.329 --> 00:49:27.929
wie in React, wie in Vue, ist es sehr oft, dass der Button dann disabled ist,

00:49:27.929 --> 00:49:29.929
dass ich einen Loading-Spinner bekomme, was auch immer.

00:49:30.496 --> 00:49:34.929
Durch dieses ganze, quasi als verkaufte Progressive Enhancement,

00:49:34.929 --> 00:49:41.830
minimale JavaScript bei Quick, klicke ich auf den Button drauf und nachdem man ja zu dem Zeitpunkt dann das JavaScript fetcht.

00:49:42.613 --> 00:49:46.061
Am Seriennet, ob er das fetcht oder nicht.

00:49:46.556 --> 00:49:53.154
Und dann passiert halt entweder was oder es passiert nix. Es ist aber irgendwie viel weniger predictable.

00:49:53.550 --> 00:49:57.916
Du kriegst ja keinen Dinosaurier, wenn du jetzt einen normalen Serverraumtrip machen würdest.

00:49:58.241 --> 00:50:03.408
Aber ich würde jetzt doch mal erwarten, dass der Button, was auch immer der machen würde,

00:50:04.164 --> 00:50:07.009
schon das JavaScript laden muss, wenn er einfach nur sichtbar ist.

00:50:07.009 --> 00:50:09.569
Ich kann doch nicht warten, bis ich auf den Button draufklicke,

00:50:09.569 --> 00:50:15.369
um dann das Javascript erst zu laden und zu parsen. Du hast das Click-Javascript, du hast das Javascript, das sagt,

00:50:15.369 --> 00:50:17.262
oh, an dieser Stelle passiert was dahinter.

00:50:17.449 --> 00:50:18.712
Aber das musst du dann trotzdem immer noch holen.

00:50:19.369 --> 00:50:21.689
Aber das hoffentlich wahrscheinlich, wenn es im Viewport schon ist.

00:50:21.935 --> 00:50:25.049
Na, je nachdem, wie es möchtest.

00:50:27.129 --> 00:50:32.934
Die erschütternde Stille der Realisation, das ist alles eigentlich ein totaler Stoffgewiss.

00:50:32.934 --> 00:50:40.934
Also ich habe ja in der Vorbesprechung so mal die Idee auch in den Raum geworfen, wie es eigentlich wäre,

00:50:40.934 --> 00:50:45.934
könnten wir nicht mal so eine Webseite anzeigen und so ähnlich jetzt wie bei Cookie Bunners,

00:50:45.934 --> 00:50:49.934
jetzt nicht, dass ich Cookie Bunners generell gut finde, aber dieses deutsche oder europäische,

00:50:49.934 --> 00:50:54.934
eher strengere TDPA, wo tatsächlich dabei steht, du musst jetzt hier akzeptieren,

00:50:54.934 --> 00:50:56.934
Ansonsten kommst du hier gar nicht erst drauf.

00:50:57.133 --> 00:51:03.714
Ähm, vielleicht könnten wir den Usern mal die Wahl geben. So, hey, möchtest du die Seite betreten?

00:51:04.236 --> 00:51:09.254
Dann lade jetzt sechs Megabyte runter. Passt das? Dann drücke ich, ja, das passt.

00:51:09.254 --> 00:51:13.414
Ich hock hier am WiFi, Glasfaser ist doch super. Und dann muss ich auf nichts mehr warten.

00:51:13.626 --> 00:51:20.214
Oder ich sag, boah, nee, ich bin grad mobil unterwegs. Ich geh einfach wieder, bevor jetzt mein Datenvolumen gleich weg ist.

00:51:20.214 --> 00:51:22.655
Und ich konnte nicht mal was dagegen tun, weil ich auf die Seite gehe.

00:51:23.276 --> 00:51:31.934
Aber es ist halt dieses, es muss alles schnell drückbar sein und es muss alles nachladen, um keine Daten zu viel zu verbrauchen.

00:51:32.053 --> 00:51:40.934
Ist doch schon eher der Anwendungsfall normalerweise bei mittelgroßen Applikationen, dass sie vor allem mobil was bringen würden,

00:51:40.934 --> 00:51:48.934
weil ich da die kleinere Memory auf dem Smartphone habe und vielleicht meine eigenen Daten und da wir hier in Deutschland und Österreich wohnen,

00:51:48.934 --> 00:51:51.255
dann wissen wir, wir haben davon nicht allzu viel.

00:51:51.474 --> 00:51:56.998
Sondern wir, unsere Telekom und Vodafone und O2 und wie's hier alle heißen, geben uns gar nicht mal so viel.

00:51:57.974 --> 00:52:02.774
Aber ist es eben ... Aber genau auf diesen Geräten hab ich ja dann auch diese Probleme,

00:52:02.814 --> 00:52:05.308
wie was ist, wenn die Mobile Connection kurz weg ist.

00:52:05.514 --> 00:52:11.654
Und ich bin doch schon auf der Seite, kann's jetzt ... Ich hab schon was geladen, ich hab schon drei Megabyte ausgegeben.

00:52:11.694 --> 00:52:15.614
Aber jetzt komm ich nicht weiter, weil ich's Job da nicht runterladen kann.

00:52:15.654 --> 00:52:24.174
Da hätt ich doch vielleicht doch lieber mal und bin jetzt ein bisschen im Offline-Modus und kann trotzdem aber noch die Sachen weiterklicken

00:52:24.174 --> 00:52:28.574
und vielleicht hat die Applikation noch ein paar kluge Queues implementiert,

00:52:28.574 --> 00:52:31.621
die meine Requests später noch losschickt, wenn ich wieder Internet habe.

00:52:33.206 --> 00:52:38.193
Da hättest du halt kein Dropdown brauchen dürfen, sondern ein Buy Now Button. Dann hättest du ein Prefetch gehabt.

00:52:38.496 --> 00:52:49.096
Ja, wir sind das alles so kompliziert.

00:52:49.096 --> 00:52:56.096
Voll guter Punkt. Also ich habe es jetzt gerade im Hintergrund nochmal ausprobiert und du kriegst dann die Network Requests, wenn du auf den Button drauf klickst.

00:52:56.096 --> 00:53:00.216
Wenn ich drauf klicke? Sorry, ich will nicht laden, wenn ich erst drauf klicke.

00:53:00.216 --> 00:53:03.922
Oder wenn du drüber hauerst, was natürlich am Mobile dann sehr schön ist.

00:53:04.216 --> 00:53:12.216
Und das Nette ist auch, das haben sie auch in der Doku und ich glaube, in der Console ist das drinnen,

00:53:12.216 --> 00:53:17.578
dass an unterschiedlichen Bildfahren quasi im Development für das Hot Module Reloading und so,

00:53:18.216 --> 00:53:26.216
und dann einen speziell optimierten Bild in Production, sodass du halt, also die Seiten sind im Dev-Mode

00:53:26.216 --> 00:53:32.096
extrem viel langsamer wie dann im Production-Mode, was ja eigentlich per se mal gut ist, was

00:53:32.096 --> 00:53:36.896
aber für mich total zur Verwunderung führt, warum ich im Dev-Mode so lange warten muss.

00:53:36.896 --> 00:53:38.656
Und ich wundere mich dauernd, warum ist das Ding so langsam?

00:53:39.544 --> 00:53:46.538
Und das liegt halt daran, dass er dieses ganze Splitting und Hot-Module-Reloading quasi live macht.

00:53:46.961 --> 00:53:51.336
Das wäre ja mal ganz was Neues, wenn der Localhost dann – nee, Localhost langsamer

00:53:51.336 --> 00:53:55.256
als – nee, stimmt, okay, ja, sorry, jetzt habe ich gerade den Gedankenträger drin.

00:53:55.361 --> 00:53:59.156
Aber dieses mit Development und Production Build unterschiedlich,

00:53:59.216 --> 00:54:00.996
das hab ich ja schon bei Webpack.

00:54:01.056 --> 00:54:05.956
Da brauch ich ja noch nicht mal Vite oder TurboPack oder Bun oder Dingsbums.

00:54:06.016 --> 00:54:11.596
Weil ich da genauso gut angeben kann, ey, mach hier mal später Chunks drauf, draus.

00:54:11.898 --> 00:54:16.356
Aber im DevMode, dann load die mal eager.

00:54:16.678 --> 00:54:20.981
Und auf Production, dann loadst du halt lazy. Also ... ja. Ja.

00:54:22.844 --> 00:54:26.595
Du bringst mich gerade auf einen irrsinnig guten Punkt. Machen wir ein neues Framework.

00:54:26.595 --> 00:54:34.595
Nein, nein, das nicht, aber tatsächlich ist ja genau dieses bewusste Auswählen von Komponenten oder Teilen,

00:54:34.595 --> 00:54:38.595
das haben wir als Entwicklerinnen und Entwickler eh total gut unter Kontrolle.

00:54:38.595 --> 00:54:46.340
Es gibt die Importdirektive nicht, oder die Importfunction. Mit der kannst du ein ECMAScript-Modul laden, da kann deine Komponente drinnen sein und fertig.

00:54:46.700 --> 00:54:50.595
Und dass du die erst bei Click loadst oder nicht, das kannst du glaube ich jetzt in einem

00:54:50.595 --> 00:54:53.035
React oder in einem Vue genauso so lösen.

00:54:53.035 --> 00:55:00.395
Ich glaube, da brauchst du jetzt nicht großartig einen Compiler dazu, der da das Ganze in einen

00:55:00.395 --> 00:55:04.595
Nodeserver schmeißt, weil das ist ja browserprimitiv.

00:55:04.595 --> 00:55:09.795
Also, was du als Chunk, also Chunk ist glaube ich das, was der Bundler rausmacht, was du

00:55:09.795 --> 00:55:15.129
da als Chunk bezeichnet hast, muss ja nicht unbedingt ein kompiliertes oder gebündelter Chunk sein.

00:55:15.235 --> 00:55:23.195
Kann ja tatsächlich auch nur ein ECMAScript-Modul sein. Meine Webseite ist kein Vergleich, weil es

00:55:23.195 --> 00:55:27.595
einfach mini ist und ein Blog und so, aber ich habe einfach damals gesagt, hey, ich arbeite jetzt

00:55:27.595 --> 00:55:34.556
nur mehr mit themenorientierten ECMAScript-Modulen und lade die dann dort, wenn ich sie brauche. Und.

00:55:34.755 --> 00:55:39.755
Das ist im Grund genau das, was du gesagt hast. Also genau das. Das sind Browsermittel, die haben

00:55:39.755 --> 00:55:46.075
und wir können genau die verwenden, um dieses Verhalten des Lazy-Loadings, wenn ich es benötige,

00:55:46.075 --> 00:55:51.635
zu machen. Und wenn der Bernhard sagt, dass wir bei QUIC sowieso selbst entscheiden müssen,

00:55:51.635 --> 00:55:57.355
was jetzt das Beste für unsere Applikation ist, warum gehe ich dann nicht so gleich den Level

00:55:57.355 --> 00:56:05.395
zur Browsertechnologie? Eben nicht. Also das Selbstentscheiden, das habe ich noch nicht 100

00:56:05.395 --> 00:56:09.235
Prozent eben durchschaut, weil eigentlich macht es das total schlau. Je weiter, dass

00:56:09.235 --> 00:56:18.035
man in der Doku lest, desto mehr kommt man aber drauf, dass man manchmal natürlich doch entscheiden muss. Also das war für mich das Faszinierendste am

00:56:18.035 --> 00:56:21.915
Anfang, das Ding auszuprobieren und zu sagen, hey, die Sachen laufen am Server und

00:56:21.915 --> 00:56:27.875
dann läuft das Ding am Client weiter. Und dann war aber halt irgendwie doch

00:56:27.875 --> 00:56:30.795
entscheidend, vor allem, wenn man dann, es gibt zum Beispiel eine React-Integration in

00:56:30.795 --> 00:56:36.075
und dort verhalten sich die Sachen aber dann natürlich wieder anders, weil er das Splitting

00:56:36.075 --> 00:56:43.118
dann anders macht, beziehungsweise kann quasi Quick aus einer Quick-Komponente, wo du mit

00:56:43.395 --> 00:56:49.715
diesem Dollarzeichen arbeitest, für diese WIT-Optimization, kann das Ding Server- und

00:56:49.715 --> 00:56:57.235
Client-Code separat extrahieren und das ist irgendwie einfach so, wo du sagst, wir haben

00:56:57.235 --> 00:56:58.224
Ist das E in der Hand?

00:56:59.466 --> 00:57:04.196
Aber das verkauft sich halt schlecht, glaube ich. Wenn du selber sagst, wir können das eh machen,

00:57:04.196 --> 00:57:06.560
und wenn du dann ein Framework machst, das das automatisch macht.

00:57:08.702 --> 00:57:11.718
Nein, das ist ja auch der Framework-Gedanke. Der nimmt ja die...

00:57:13.347 --> 00:57:16.795
Die manuelle Arbeit ab. Genau, die müßige manuelle Arbeit nimmt er dir ab.

00:57:16.996 --> 00:57:18.200
Also das ist...

00:57:18.785 --> 00:57:21.996
Ich befürchte aber auch so ein bisschen das Nachdenken dann dabei.

00:57:21.996 --> 00:57:26.476
Also ich habe das Problem schon immer bei Vue und React, ich weiß nicht, vielleicht bei Angular ganz genau,

00:57:26.476 --> 00:57:30.496
ich kenne mich da nur nicht so gut aus, dass ich schon so ein bisschen damit hadere.

00:57:31.253 --> 00:57:36.896
Dass, jetzt kommen wir wieder Richtung Basics, dass mir Features verkauft werden,

00:57:36.896 --> 00:57:41.896
und jetzt nicht unbedingt nur von dem Framework selber, sondern dass mir auch wirklich juniorige Developer entgegenkommen,

00:57:42.164 --> 00:57:44.196
hast du schon mal was von dem Nuxt-Link gehört?

00:57:44.196 --> 00:57:47.277
Und der macht ja so ein Prefetching und keine Ahnung.

00:57:47.322 --> 00:57:51.796
Ich so, das sind doch HTML-Attribute. Du kannst doch bei jedem Link, Anchor Tag,

00:57:51.796 --> 00:58:01.676
einen Prefetch angeben, Bei jedem JavaScript, also HTML Script Tag, kannst du angeben Prefetch, Lazy, alles Mögliche.

00:58:01.676 --> 00:58:09.796
Du hast es ja schon, konntest das ja alles vorher tun. Es ist, ich will nicht mal sagen, dass es kompliziert ist, nur man kriegt es weniger beigebracht.

00:58:09.796 --> 00:58:15.716
Und man muss es nicht können, um mal was zu liefern, sondern fragt sich, beschäftigt sich vielleicht am ersten mit dieser ganzen Problematik,

00:58:15.716 --> 00:58:19.001
sobald man sich denkt, ja, also irgendwie ist das langsam, was ist denn da los?

00:58:19.685 --> 00:58:24.516
Und dann gibt's super viel Wissen drüber, was aber vielleicht auch nicht leicht zugänglich ist,

00:58:24.516 --> 00:58:31.476
dass wie funktioniert das eigentlich mit Async und Defer und was ist die Reihenfolge?

00:58:31.577 --> 00:58:37.636
Und es gibt, glaub ich, noch mehr Preload und Prefetch, wie funktionieren die ganz genau?

00:58:37.636 --> 00:58:42.556
Und dann kommen die Browser-Settings dafür oder was passiert, wenn die User Battery-Safe-Modus anhaben

00:58:42.556 --> 00:58:44.056
und dann funktioniert's ja doch wieder anders.

00:58:44.297 --> 00:58:48.276
Außer das eine, weil das blockiert dann wirklich. Aber wir wollen alle die Bandbreite

00:58:48.276 --> 00:58:52.676
Und wenn du 50, 60, 80 Module hast, die lazy-loaded sein wollen.

00:58:53.776 --> 00:58:55.676
Was ist denn jetzt das Wichtigste?

00:58:55.874 --> 00:58:58.107
Und es scheint mir so, als versucht ...

00:58:58.503 --> 00:59:04.176
Also, ich weiß, hoffentlich unterstelle ich jetzt im Framework nichts Falsches, aber als würde es das abnehmen

00:59:04.216 --> 00:59:07.541
und das versuchen, möglichst klug zu machen.

00:59:09.035 --> 00:59:12.456
Aber ich weiß auch selber nicht, wie es möglichst klug dann wäre.

00:59:13.476 --> 00:59:16.922
Wenn alle drum streiten, jetzt möchte ich geladen werden, werden.

00:59:19.658 --> 00:59:25.508
Ja, in Wirklichkeit, wenn jeder sofort geladen werden will, wird keiner sofort geladen.

00:59:25.508 --> 00:59:29.508
Also da kannst du das gleich sparen.

00:59:29.508 --> 00:59:39.508
Du sprichst am wichtigen Punkt, nämlich der, dass durch Framework so viel Basiswissen obfuskiert wird.

00:59:39.508 --> 00:59:48.456
Wir alle haben den Punkt erreicht, dass wir auch wissen, dass die ganzen coolen Dinge,

00:59:49.188 --> 00:59:53.948
die da passieren, jetzt keine Rocket Science sind, sondern nur, unter Anführungszeichen,

00:59:53.948 --> 00:59:58.468
Leute, die bestehende Technologie in einer kreativen Weise verbocken und zugänglich

00:59:58.468 --> 01:00:05.388
machen. Das ist auch gut so. Das gehört ja her. Aber dafür brauche ich keine Frameworks.

01:00:05.570 --> 01:00:11.708
Und wo wir eben wieder bei diesem Punkt sind, wo setzt sich QUIC jetzt rein?

01:00:11.708 --> 01:00:17.528
Also wo holt QUIC jetzt Leute ab, wo man sagt, okay, diese USPs von QUIC sind tatsächlich

01:00:17.528 --> 01:00:21.628
auch Benefits für Nutzer und Entwicklerinnen und Entwickler?

01:00:22.098 --> 01:00:26.468
Und die Antwort kann ich mir nicht mehr, also die Frage kann ich nicht mehr antworten.

01:00:26.851 --> 01:00:31.628
Vielleicht ist es auch nur eine coole Tech-Thema.

01:00:34.665 --> 01:00:42.475
So wie Avatar. Ha ha ha! Ich find ja, ich find ja, ich find, das klingt ultraspannend.

01:00:42.515 --> 01:00:46.071
Und als ich das gesehen hab, hatte ich auch kurzzeitig diesen Gedanken,

01:00:46.116 --> 01:00:49.042
weißt du, dann können wir auch jetzt View und React und Angular,

01:00:49.395 --> 01:00:52.955
dann schmeißen wir sie doch einfach mal weg, dann machen wir alle Quick.

01:00:52.995 --> 01:00:57.995
Dann können wir alle das Gleiche lernen, müssen bei Jobs nicht schauen, was hab ich davor gelernt.

01:00:58.683 --> 01:01:02.355
Aber das Einzige, wo ich halt immer noch weiter drauf dränge,

01:01:03.418 --> 01:01:07.115
A, macht es Sinn, uns so viel Komplexität ans Bein zu pinden?

01:01:07.155 --> 01:01:13.775
Oder nimmt's vielleicht tatsächlich diese Komplexität weg? Weil, lass doch mal die Basic Basics sein,

01:01:13.815 --> 01:01:16.480
aber ich muss ja vielleicht auch nicht wissen, wie der DOM-Rendering ...

01:01:17.687 --> 01:01:20.355
Leider kann man jetzt auch wieder einen Riesenfuss aufmachen.

01:01:20.395 --> 01:01:23.815
Muss ich wissen, wie der Rendering-Pipeline funktioniert oder nicht.

01:01:23.855 --> 01:01:26.975
Aber viele wissen's wahrscheinlich da draußen dann doch nicht,

01:01:27.015 --> 01:01:28.012
aber es funktioniert.

01:01:28.195 --> 01:01:31.695
Ich kann HTML schreiben, JavaScript schreiben, irgendwas kommt da an.

01:01:31.695 --> 01:01:35.735
Diese ganzen Basics, diese ganzen Browse-APIs nicht mehr auswendig kennen, sondern kann

01:01:35.735 --> 01:01:41.335
mich einfach auf Framework drauf verlassen, dass es weiß, was oder raten kann, was die

01:01:41.335 --> 01:01:46.535
User jetzt als nächstes brauchen. Aber das, was ich immer noch nicht genau sehe, ist,

01:01:46.535 --> 01:01:50.775
Developer Experience hin oder her, macht es für die User wirklich Sinn, alles lazy-loading

01:01:50.775 --> 01:01:56.975
zu machen? Und in vielen Cases bestimmt ja. Aber was hat's denn ... Ich kann nur noch

01:01:56.975 --> 01:02:00.535
mal auf den Punkt darauf zurückkommen. Ich will doch nicht, dass ich auf einen Button

01:02:00.535 --> 01:02:03.375
drücke und dann noch mal extra lang warten muss, bis was passiert.

01:02:03.375 --> 01:02:06.455
Ich finde das eigentlich ganz nett, wenn ich am Anfang mal drei Sekunden warten

01:02:06.455 --> 01:02:09.415
muss, aber dann ist auch alles da und alles funktioniert schnell.

01:02:10.224 --> 01:02:11.556
Ich muss gerade heulen.

01:02:12.907 --> 01:02:20.775
Sorry, ich klicke gerade durch die Quick-Doku und habe mir den Network-Tab aufgemacht,

01:02:21.666 --> 01:02:23.655
und von Seite zu Seite gehen.

01:02:25.213 --> 01:02:34.895
Hat so im Schnitt 98 XHR-Requests. Jaja, aber ist das schlimm? Ist das gut? Macht das Sinn?

01:02:34.895 --> 01:02:38.775
Es ist schnell. Naja, also das Ding ist, da gibt es halt auch einen Server, der das bearbeiten muss.

01:02:38.941 --> 01:02:44.415
Am Client cool, aber es gibt einen Server, der das bearbeiten muss. Und ich meine,

01:02:44.415 --> 01:02:48.637
Ja, klar können die es selber auch bearbeiten, aber...

01:02:50.725 --> 01:02:55.992
Das kostet ja auch was. Also das ist ja nicht gratis. Du musst ja den Server betreiben können.

01:02:56.361 --> 01:02:59.080
Oder mehrere Server, wenn du gerade viel Traffic hast.

01:02:59.275 --> 01:03:04.094
Und wenn ich jetzt schaue, welche Deployments das gibt, dann sind die Deployments alle durch die Bank.

01:03:04.544 --> 01:03:10.206
Irgendwelche consumption-based Plattformen wie Cloudflare Workers,

01:03:10.458 --> 01:03:13.780
Netlify Edge, was in Wirklichkeit dennoch Deploy ist,

01:03:14.113 --> 01:03:16.375
weil es ist LEdge, was in Wirklichkeit Cloudflare Workers ist,

01:03:16.375 --> 01:03:21.175
oder Google Cloud Run, was in Wirklichkeit eine Kubernetes-Lösung mit Container ist,

01:03:21.252 --> 01:03:23.809
aber halt auch um Consumption ist.

01:03:24.106 --> 01:03:35.422
Es gibt keine Lösung, das Ganze einfach nur irgendwo auf einen statischen Host zu deployen,

01:03:36.277 --> 01:03:37.195
und Seiten zu liefern.

01:03:37.195 --> 01:03:42.705
Also die Integrationen sind alle katsching, ein bisschen Münzen einwerfen, da und dort.

01:03:43.253 --> 01:03:48.795
Du sprichst da was voll was Spannendes an, Stefan, Entschuldige, weil das hat mich ich auch gewundert.

01:03:50.195 --> 01:03:53.795
Wenn man die Doku dann weiter reinlässt, dann findet man die Punkte,

01:03:53.795 --> 01:03:58.195
aber natürlich unter Deployments beworben, seien jetzt mit Ausnahme von Denno,

01:03:58.999 --> 01:04:03.795
nur diese Consumption-Based Cloud Provider, wie du richtig gesagt hast.

01:04:04.409 --> 01:04:15.595
Und es gibt aber ein Standard Node Plugin. Es gibt dieses Denno-Plugin und man kann das Ding SSG prerendern, Server-Side generieren,

01:04:15.595 --> 01:04:18.515
aber interessanterweise ist es unter die Deployments nicht drinnen.

01:04:18.705 --> 01:04:28.555
Naja, ich schätze mal, Sie werden diese Deployments nennen, die auch für das Framework die beste

01:04:28.555 --> 01:04:33.115
Experience geben oder alle Features lösen. Das heißt, da wird sich nachher der Nächste fragen,

01:04:33.115 --> 01:04:40.955
aber jetzt habe ich es dort auf Cloudflare gegeben, also das etablierst du dir dann.

01:04:43.344 --> 01:04:49.435
Warum geht denn das nicht? Naja, weil eben ein statischer Host nicht alles kann, was zum Beispiel Athena kann und solche

01:04:49.435 --> 01:04:58.555
Sachen. Und ja, also vielleicht denke ich da in größeren Ordnungen, die mich ein bisschen unsicher

01:04:58.555 --> 01:05:06.735
machen, weil wir haben teilweise so, ja, also wir reden so bei uns für ein Teilprojekt zwischen

01:05:06.735 --> 01:05:13.455
10 und 20 Millionen Requests pro Arbeitstag. Und das traue ich dem Ding nicht zu.

01:05:15.572 --> 01:05:20.822
Also, ich frag mich halt auch jetzt noch mal, was bringt das alles, wenn ich halt keinen schnellen Server hab?

01:05:20.822 --> 01:05:25.195
Weil wir haben jetzt auch bei uns nicht alle Seiten optimiert.

01:05:26.149 --> 01:05:31.866
Im Sinne davon nicht unbedingt im Frontend, sondern wir haben eine Seite, da laden wir grad einfach zu viele Daten.

01:05:32.122 --> 01:05:37.522
Klar, könnte auch das Frontend irgendwie besser machen, dass es die richtige, keine Ahnung, eine kleinere Menge anfragt und lazyloadet.

01:05:37.522 --> 01:05:40.522
Aber wir unterstützen da im Frontend auch gar nicht so viele Sachen gerade,

01:05:40.522 --> 01:05:45.922
also muss Backend halt einfach mal, keine Ahnung, 200 Einträge von irgendwas nachschauen,

01:05:45.922 --> 01:05:50.322
aber jetzt nicht einfach nur gib mir alle von dem, sondern es ist irgendwie eine kompliziertere Query

01:05:50.322 --> 01:05:52.076
und es ist was mit Elasticsearch.

01:05:52.184 --> 01:05:57.022
Aber da würde mir jetzt jedes Quick der Welt nicht helfen, weil an der Stelle ist unser Server

01:05:57.022 --> 01:05:59.917
beziehungsweise unsere Datenbank so ein bisschen der Knackpunkt.

01:06:00.520 --> 01:06:05.291
Und das würde mir, wie gesagt, wenn ich jetzt als Frontend-Developer zum Beispiel,

01:06:06.038 --> 01:06:10.122
oder bei mir in die Firma im Frontend-Lead, hier, hab ich ja macht, kann ich ja sagen,

01:06:10.122 --> 01:06:14.402
komm, wir machen jetzt Quick, würde mir in dieser Instanz wahrscheinlich nix bringen,

01:06:14.462 --> 01:06:16.292
wenn der Server langsam ist stattdessen.

01:06:16.542 --> 01:06:21.762
Oder wie viel teurer wird der Server, wenn, weiß ich nicht, was du grad meintest, Stefan, mit Kaching,

01:06:21.822 --> 01:06:24.034
ist halt ein bisschen teurer. Hm.

01:06:24.982 --> 01:06:29.003
Ein bisschen. Ja. Also, ich glaube, man kann jetzt gar nicht so das ...

01:06:29.282 --> 01:06:32.862
Separat betrachten, was macht für uns im Frontend am meisten Sinn.

01:06:32.922 --> 01:06:38.222
Ist es Quick, ist es View, ist es Angular, ist es PTView, ist es Inertia, et cetera.

01:06:38.222 --> 01:06:44.550
Sondern das muss halt vielleicht schon wirklich das ganze Development Thema, das riesige Auswirkungen.

01:06:44.946 --> 01:06:49.622
Wahnsinn, das ist so ein wichtiger Punkt, weil das ist wieder dieses eierlegende Wollmilchsau-Thema.

01:06:49.622 --> 01:06:55.622
Es gibt andere Faktoren, nicht-funktionale Requirements, die man nicht außer Acht lassen kann.

01:06:56.766 --> 01:07:03.456
Darfst, weil wenn du jetzt sagst, hey, ich rechne mit sehr sehr viel Traffic und klar hat das eine O1

01:07:03.456 --> 01:07:09.296
Blabla Performance Komplexität, aber es resultiert halt auch in Requests auf dem Server. Kann ich diese

01:07:09.296 --> 01:07:13.856
handeln? Kann ich mit diesen umgehen? Oder kann ich das Geld aufstellen, dass ich mal mehrere Server besorge?

01:07:13.916 --> 01:07:18.856
Und wenn ich es nicht, wenn ich sage, es kostet was, meine ich ja nicht unbedingt nur Geld, sondern

01:07:18.856 --> 01:07:25.056
da ist halt auch Compute Zeit, die drauf geht und eine offene TCP Verbindung, die drauf geht und solche

01:07:25.056 --> 01:07:28.895
Sachen. Das sind Dinge, die übersehen wir gerne mal, weil es eh immer schon funktioniert hat,

01:07:28.940 --> 01:07:33.336
aber die sind halt auch je nach Größenordnung oder je nach Anforderungsprofil, das ich habe,

01:07:33.460 --> 01:07:39.576
sind das auch Parameter, die dort reinfließen müssen. Und da kann es durchaus für mich sein,

01:07:39.576 --> 01:07:44.576
dass ich sage, nein, das rennt halt für mich nicht. Es kann natürlich auch sein, dass ich sage,

01:07:44.576 --> 01:07:48.696
nein, ich arbeite jetzt schon seit 10 Jahren mit einem Express-Server und das haut super hin,

01:07:48.696 --> 01:07:54.416
der kommt damit zusammen, wird das auch können. Kann genau so sein. Also nur, weil ich da beim

01:07:54.416 --> 01:07:58.976
gerade ein bisschen Skepsis habe gegenüber Node.js-Servern, nach eben zehn Jahren Node.js-Server

01:07:58.976 --> 01:08:04.376
schreiben, heißt das nicht, dass das bei allen anderen auch so ist? Und darum, ja,

01:08:04.376 --> 01:08:11.496
Marius, du sagst so viele tolle, absolut richtige Sachen, Vanessa, mit was sind die Trade-offs,

01:08:11.496 --> 01:08:15.096
was sind die Trade-offs für die Nutzer und Nutzerinnen, was sind die Trade-offs für uns

01:08:15.096 --> 01:08:20.992
als Entwicklerinnen und Entwickler, das ganze Team-Care berücksichtigt, beziehungsweise auch.

01:08:21.336 --> 01:08:26.856
Die Anforderungen, die man hat. Also ich kaufe diesen, kann eh alles und ist eh für alles toll,

01:08:26.856 --> 01:08:33.016
Viewscales kaufe ich dem nicht ab. Ich habe zum Beispiel eine ganz große Anforderung in

01:08:33.016 --> 01:08:37.896
meinen Projekten, ich will nie wieder npm starten müssen. Geht das? Ich weiß nicht.

01:08:38.483 --> 01:08:43.896
Es gibt auch dennoch Integration, das klingt schon mal nicht so schlecht, aber….

01:08:45.315 --> 01:08:49.456
Ja, es sind auch Sachen in Rust und in was, weiß ich nicht, was war da immer geschrieben?

01:08:49.456 --> 01:08:55.456
Wirklich? Echt? Der Compiler ist in Rust. Der Compiler. Schön, dass wir alle so einen schönen Dialekt haben hier.

01:08:55.830 --> 01:09:02.456
Das ist super, wenn man den Compiler in Rust gemischt hat. Also um auf positive Sachen noch mal dagegenzuhalten.

01:09:02.456 --> 01:09:06.456
Ich glaube, das Framework macht generell schon sehr viel richtig mit diesem Ansatz von

01:09:06.456 --> 01:09:11.456
Sie wissen, es gibt schon bereits viele Frameworks da draußen, aber es ist migrierbar.

01:09:11.456 --> 01:09:18.456
Du kannst mit, Herr Bernhard, wie hieß das Dingsbums? Mitosis? Ja, genau. Mitosis.

01:09:18.456 --> 01:09:23.296
Um alles noch mal in alle Frameworks reinzubringen oder vielleicht auch andersrum.

01:09:23.296 --> 01:09:28.096
Ich glaube, da gab es noch ein paar Abas dazu, aber generell sind die ganzen Ansätze da.

01:09:28.096 --> 01:09:32.256
Du kannst sicherlich JSX, TSX, TypeScript, et cetera, hast du alles drinnen.

01:09:32.256 --> 01:09:39.136
Ich glaube, das ist vielleicht einfacher von Vue zu Quick, von React zu Quick, als irgendwie von Vue zu React oder andersrum.

01:09:39.599 --> 01:09:45.172
Also diese Ansätze haben Sie dabei für die erstmals hier Developer Experience einfach zum Starten.

01:09:46.513 --> 01:09:47.216
Aber...

01:09:48.646 --> 01:09:53.148
Ja, aber dann, was sind dann so die richtigen Knackpunkte, die kommen würden?

01:09:53.868 --> 01:09:57.217
Und dementsprechend nicht nur, wo wird's vielleicht mal schwierig,

01:09:57.424 --> 01:10:02.357
sondern sehen wir das Ganze vielleicht sonst eher als so einen Zwischenschritt,

01:10:02.528 --> 01:10:05.427
weil von dieser Ausgangssituation noch mal ...

01:10:06.228 --> 01:10:12.386
Um auf die Ausgangssituation noch mal zu kommen, ich hatte damals einen Request an Server

01:10:12.638 --> 01:10:14.717
für, gib mir mal HTML.

01:10:14.825 --> 01:10:16.085
HTML kam zurück.

01:10:16.301 --> 01:10:20.477
Okay, jetzt brauchen wir so ein bisschen JavaScript. Jetzt wird das alles nicht mehr so doll.

01:10:20.604 --> 01:10:22.477
Jetzt machen wir mal so was wie eine Hydration.

01:10:22.603 --> 01:10:26.636
Also, was machen wir? Survey, gib mir mal HTML. Alles klar, hier hast du HTML.

01:10:26.825 --> 01:10:30.957
Okay, jetzt kann ich aber noch auf nichts klicken. Und plötzlich muss ich fünf Sekunden warten,

01:10:30.957 --> 01:10:35.387
um JavaScript gesammelt runterzuladen, zu parsen, zu exekuten,

01:10:36.053 --> 01:10:39.217
DOM noch mal auszutauschen, obwohl er doch eigentlich schon da war.

01:10:39.217 --> 01:10:40.717
Ist ja irgendwie auch ein bisschen doof.

01:10:40.877 --> 01:10:44.717
So, jetzt kann ich klicken. So, jetzt kommt Quick mit der nächsten Instanz

01:10:44.717 --> 01:10:47.710
und sagt, ja, das war doch jetzt auch nicht mehr so klug,

01:10:47.773 --> 01:10:50.348
lass uns doch mal HTML laden.

01:10:51.257 --> 01:10:57.717
Minimalstes JavaScript laden, wenn überhaupt. Und jetzt die ganze Zeit so düng, düng, düng, düng, düng, düng.

01:10:57.757 --> 01:10:59.899
HTML, JavaScript, HTML, JavaScript, irgendwie so was.

01:11:00.497 --> 01:11:02.889
Aber was wäre denn unserer Meinung nach ...

01:11:04.377 --> 01:11:08.497
Der nächste Ansatz dann? Wollen wir ...

01:11:09.957 --> 01:11:14.417
Wollen wir in so einer Kettenverschachtelung alles die ganze Zeit so vor uns hinladen?

01:11:14.417 --> 01:11:19.577
Gibt's da nicht noch was Klügeres oder gibt's da nicht noch einen Endzustand,

01:11:19.577 --> 01:11:25.297
wo wir dahin kommen wollen? Dass wir nicht HTML und JavaScript die ganze Zeit,

01:11:25.297 --> 01:11:29.777
weiß ich nicht, abwechselnd runterladen. Oder keine Ahnung, vielleicht sollten,

01:11:29.777 --> 01:11:33.497
vielleicht sollten, pass auf, jetzt sage ich was ganz anderes, wo ich mit meinem Gedanken

01:11:33.497 --> 01:11:40.177
kommen möchte. Wollen wir bei HTML bleiben? Wollen wir bei einem DOM-Tree bleiben,

01:11:40.177 --> 01:11:41.697
wo man Sachen austauscht.

01:11:42.633 --> 01:11:46.677
Oder sollten wir mit... Wenn wir alle JSX, TSX und sowas schreiben,

01:11:46.677 --> 01:11:51.636
sollten vielleicht nicht Browser eher auch Komponenten und JSX verstehen können.

01:11:52.329 --> 01:11:57.073
Oder Views, wo ich dann den Content so austausche und nicht den ganzen Content im DOM-Tree habe.

01:11:59.377 --> 01:12:02.726
Gibt's da nicht auch schon APIs dazu, die das machen? Boah, echt? Keine Ahnung.

01:12:03.177 --> 01:12:05.177
Ich glaub, da hat's einmal ein paar...

01:12:05.177 --> 01:12:07.177
Ich weiß nicht, ob die schon gelandet sind, das wird der Chef wieder wissen.

01:12:07.177 --> 01:12:14.337
Wissen. Aber gerade was für diesen Austausch, dass du nicht mal einen gesamten Raumtrip machen musst,

01:12:14.483 --> 01:12:17.897
sondern dass du nur Teile holen kannst und austauschen kannst, für das gibt es, glaube ich,

01:12:17.897 --> 01:12:22.537
auch schon irgendeinen Standard dort. Muss ich mal schauen. MGN Portals, glaube ich,

01:12:22.537 --> 01:12:26.024
Häster. Portal Element, na das ist glaube ich was anderes.

01:12:28.851 --> 01:12:33.745
Ja, the portal HTML element enables the embedding of another HTML page into the current one

01:12:33.745 --> 01:12:36.980
for the purposes of allowing smoother navigation into new pages.

01:12:37.412 --> 01:12:38.069
Was?

01:12:38.763 --> 01:12:43.092
Nochmal. Das Portal-Element, vielleicht gibt es das auf Deutsch, nein, gibt es nicht.

01:12:43.505 --> 01:12:47.099
Es ist eine experimentelle Technologie und ich glaube, dass du genau weißt, was es soll.

01:12:47.225 --> 01:12:51.145
Das wäre ähnlich zu einem iframe, aber nur, dass du nicht ein iframe hast, wo du nur einen

01:12:51.145 --> 01:12:55.905
gesamten DOM lädst, sondern die HTML-Stücke werden in dein HTML integriert.

01:12:55.905 --> 01:13:01.425
Kannst du ein Portal auf dieses HTML und dann wird das integriert und es gibt eine JavaScript-Database

01:13:01.425 --> 01:13:05.465
dazu, mit der du diesen Content austauschen kannst. Das heißt, so hängst du andere HTML-Dateien,

01:13:05.465 --> 01:13:12.625
die woanders liegen, in deinen DOM bereits ein. Das schreit ja fast nach einem Framework.

01:13:14.006 --> 01:13:18.105
Nein, eben nicht, das ist ja schon eine Technologie. Ja, ja, da müssen wir einen Framework-Grund umbauen.

01:13:18.105 --> 01:13:22.945
Ja, ja, bitte machen wir das. Aber man muss ganz ehrlich sagen, es ist immer noch hinter einem

01:13:22.945 --> 01:13:27.945
Also, es ist einfach schon sehr lange nicht da, aber...

01:13:28.626 --> 01:13:32.025
Aber wäre das jetzt so ganz absurd, wenn ich das mal im Raum werfen würde,

01:13:32.025 --> 01:13:36.345
wenn man vielleicht tatsächlich nicht mehr einen Bildprozess hat und HTML shippt,

01:13:36.345 --> 01:13:43.905
sondern halt einfach JSX shippt und der Browser kann es selber, ohne Framework, ohne Bildprozess?

01:13:44.776 --> 01:13:48.185
Ich wäre ganz stark dafür. Ich mag eigentlich keine Bildprozesse mehr.

01:13:48.584 --> 01:13:58.025
Also ich denke, was wir gerne übersehen, und wir meine die Industrie, nicht unbedingt die Runde

01:13:58.025 --> 01:14:02.905
für mich, wir sind nämlich hier sehr viel, aber was wir als Industrie gerne übersehen, ist,

01:14:02.905 --> 01:14:07.625
dass ja sämtliche Browser-Technologien sich ja schon hinentwickeln darauf, dass die gesamten

01:14:07.625 --> 01:14:12.865
Build-Prozesse usw. obsolet werden. Also wenn ich jetzt sage, JSX klamme ich jetzt einmal aus,

01:14:12.865 --> 01:14:16.985
sage einfach, hey, ich habe HTML, ich habe Template-Strings in JavaScript, mit denen ich

01:14:16.985 --> 01:14:18.985
was ähnliches machen kann.

01:14:19.219 --> 01:14:30.585
Dann kann ich mit den aktuellen Standards, die existieren, kann ich dynamisch Module laden

01:14:30.585 --> 01:14:33.109
über das Import Statement oder die Import-Funktion.

01:14:33.361 --> 01:14:40.585
Dynamisch. Wenn der Standard mit den TypeScript-Typen als Kommentaren durchgeht, dann kann ich sogar

01:14:40.585 --> 01:14:44.085
TypeScript schreiben und kann das shippen und ausführen. Es wird zwar nicht type-gecheckt,

01:14:44.085 --> 01:14:46.085
aber ich kann es ausführen.

01:14:46.085 --> 01:14:53.248
Wenn ich das Portalelement habe und die Navigations-APIs dazu, kann ich einfach...

01:14:54.192 --> 01:14:57.119
Teile auf meiner Seite austauschen, und sie werden aktualisiert.

01:14:57.542 --> 01:15:06.162
Und wenn ich Dinge wie die Transition-Styles habe, kann ich auch Animationen zwischen HTML-Seiten machen,

01:15:06.162 --> 01:15:08.162
ohne dass ich irgendein Framework dazu brauche.

01:15:08.254 --> 01:15:12.642
Das heißt, wir sind eigentlich eh wieder an diesem Punkt, wo wir eigentlich in den ganzen letzten 15 Jahren sind.

01:15:12.642 --> 01:15:15.962
Es gibt coole Sachen, die machen Leute irgendwie mit JavaScript,

01:15:16.401 --> 01:15:20.533
und wir schauen, dass wir das irgendwie in die Browser bekommen.

01:15:21.353 --> 01:15:26.682
Leute, ich mache seit zweieinhalb Jahren kein Frontend mehr aktiv, aber sogar diese Browser-Technologien

01:15:26.682 --> 01:15:29.922
sind bei mir gelandet und ich habe mitbekommen, dass sie existieren.

01:15:29.922 --> 01:15:33.682
Also die dürften wirklich sehr populär sein und nicht nur einfach in den Hirn gespenst.

01:15:33.749 --> 01:15:41.607
Und da denke ich mir halt auch, wenn das kommt, wäre es doch eigentlich clever, wenn wir.

01:15:42.442 --> 01:15:48.762
Sagen, wir versuchen nicht zu viel framework-spezifische Dinge zu gestalten, wie das zum Beispiel jetzt

01:15:48.762 --> 01:15:54.882
Welt, soweit ich weiß, macht und Quick teilweise macht, sondern das Framework, das eigentlich

01:15:54.882 --> 01:15:58.642
sagt, hey, wir patchen jetzt schon mal Browser-Technologien, die mal kommen werden, ist mir eigentlich

01:15:58.642 --> 01:16:01.602
am sympathischsten, weil da weiß ich, hey, das kommt irgendwann einmal weg und das Framework

01:16:01.602 --> 01:16:05.085
kann sich dadurch ein bisschen reduzieren und ich kann vielleicht das austauschen durch andere Dinge auch.

01:16:05.362 --> 01:16:12.402
Und da fällt mir witzigerweise auf, ja, Eleventy, das Bernhard gerade in die Kamera zeigt, wäre

01:16:12.402 --> 01:16:15.762
so ein Ding, aber tatsächlich witzigerweise auch ein bisschen langsamer und ein bisschen

01:16:15.762 --> 01:16:20.562
mit Verzug. Angular macht das ähnlich. Also Angular hat auch das gesamte Lazy-Loading,

01:16:20.562 --> 01:16:25.368
das sie mal entwickelt gehabt haben, schnell umgestellt durch das Import-Statement, weil

01:16:25.642 --> 01:16:28.185
sie eben gesagt haben, naja, jetzt haben wir ja eine Browser-Technologie dafür, warum

01:16:28.522 --> 01:16:33.322
nicht gleich das nutzen? Also das finde ich sehr spannend. Vielleicht sollte man wieder Entschuldigung.

01:16:36.242 --> 01:16:38.972
Ja, ich habe jetzt Eleventy deswegen gerade in die Kamera gehalten, weil ich war letzten

01:16:38.972 --> 01:16:44.332
Ende der Woche auf der GS Heroes in Rumänien und habe da glaube ich drei Stunden mit dem

01:16:44.332 --> 01:16:48.492
Sack Glider meinen von Eleventy geredet und da haben wir auch ähnliche Themen gesprochen,

01:16:48.492 --> 01:16:56.532
wo es halt um die Standards geht, dass man die verwendet und ja, da habe ich dann ein

01:16:56.532 --> 01:17:02.292
bisschen, wo ich meinen Schritt weg aus der IT hin zum Psychologiestudium hin und wieder

01:17:02.556 --> 01:17:07.972
ein wenig mache, weil Frameworks verkaufen sich halt einfach besser oder lassen sich

01:17:07.972 --> 01:17:12.572
das Produkt bewerben. Wer hypt denn einen Standard, bzw. wer hat denn was davon,

01:17:12.572 --> 01:17:18.852
wenn man einen Standard hypt? Also ich habe das Gefühl, dass es da um ganz, ganz viel größere

01:17:18.852 --> 01:17:22.932
Themen geht und ich glaube, wenn man eben länger in der Industrie ist, dann fängt man irgendwann

01:17:22.932 --> 01:17:27.492
an zu schätzen, dass Sachen standardisiert sind und die Aussage, die du gerade getroffen hast,

01:17:27.492 --> 01:17:29.536
Stefan, die finde ich unglaublich schön, dass man sagt,

01:17:29.692 --> 01:17:36.738
alles, was nachher wegkommt, ist eigentlich sehr schön, wenn man es jetzt schreiben kann, weil dann weiß man, es wird weniger.

01:17:38.232 --> 01:17:45.392
Ich glaube schon, dass man auf Browser APIs und Standards hypen könnte oder Leute darauf hypen würden,

01:17:45.983 --> 01:17:53.392
wenn mal jemand anfangen würde zu, wie heißt das, Developer Relations Advocates, dafür Marketing zu machen.

01:17:53.815 --> 01:18:00.392
Denn da weisen natürlich jetzt Next und Next und Remix, keine Ahnung, wer noch, alle sehr groß.

01:18:00.392 --> 01:18:06.392
Die haben ja Personen dafür, die sich drum kümmern, das beizubringen, zu zeigen, die Vorteile zu zeigen.

01:18:06.392 --> 01:18:16.592
Cypress hat Ambassadors, Storyblock hat Ambassadors. Ich habe jetzt selten was von einem Browser-API-Standard-Ambassador gehört.

01:18:16.861 --> 01:18:19.592
Da gibt es einige Firmen aus der Google-Ecke, die halt im Chrome-Team sind,

01:18:19.592 --> 01:18:24.297
aber die haben ein bisschen den Zug verpasst, glaube ich.

01:18:24.882 --> 01:18:25.746
Die Sahne-Milch-Stadt.

01:18:28.914 --> 01:18:33.164
Kooperativ zu sein, sehr schnell in so eine Verteidigungshaltung gegangen.

01:18:33.164 --> 01:18:35.432
Also es gibt da eine Person, die...

01:18:36.062 --> 01:18:37.989
Oh, ich habe den Namen vergessen.

01:18:39.114 --> 01:18:44.404
Alex Russell. Alex Russell, der lange im Chrome-Team war und dann die Web Components Standards gearbeitet hat

01:18:44.404 --> 01:18:49.204
und jetzt bei Edge arbeitet und weiter am Browser-Standards werkt und so weiter,

01:18:49.340 --> 01:18:53.067
war ein ganz starker Advokat für Browsertechnologien schon von Anfang an.

01:18:53.392 --> 01:18:54.769
Aber halt auch ein bisschen ein Arsch.

01:18:55.300 --> 01:19:01.305
Also, pardon my French, er geht sehr gerne auf Konfrontation,

01:19:02.484 --> 01:19:07.507
was jetzt für ein Developer Relations Mensch nicht das Richtige ist.

01:19:07.777 --> 01:19:16.864
Da wäre es fast besser, wenn die Leute direkt offen auf die Frameworks zugehen und sagen,

01:19:16.864 --> 01:19:20.864
hey, wir würden gerne mit euch eure Roadmaps bearbeiten und sagen, was wir vorhaben als Browser Standards,

01:19:20.864 --> 01:19:23.864
können wir irgendwie einen Weg dort hinfinden, dass das funktioniert.

01:19:23.864 --> 01:19:26.704
Ich weiß nicht, ob das passiert. Also, das ist auch wieder so eine Schöpffrage.

01:19:26.925 --> 01:19:29.176
Also, ich glaube, der wüsste das ganz, ganz klar.

01:19:33.984 --> 01:19:38.704
Vielleicht sollte man da eben mal im größeren Big Picture drüber nachdenken.

01:19:38.704 --> 01:19:49.104
Es gibt verschiedene Browser, die zu verschiedenen Zeitpunkten verschiedene Sachen liefern und daran arbeiten

01:19:49.104 --> 01:19:50.565
und überhaupt auch der Roadmap haben.

01:19:51.339 --> 01:19:58.901
Dann bin ich mir genau bei diesem Austausch zwischen Browser und Frameworks unsicher.

01:19:59.108 --> 01:20:03.004
Wie viel passiert da wirklich? Oder versuchen die Frameworks eben anhand mit allem,

01:20:03.004 --> 01:20:07.157
was ihnen zur Verfügung gestellt wird, irgendwie das Beste draus zu machen?

01:20:07.696 --> 01:20:17.804
Und dann in der letzten Instanz gibt's uns Developer, die Frameworks benutzen, um eine möglichst gute Developer-Experience zu haben

01:20:17.804 --> 01:20:26.164
und auch die möglichst beste User-Experience herzustellen, um dann das Ganze wieder in den Browser reinzumatschen.

01:20:27.574 --> 01:20:31.823
Und das scheint mir irgendwie ein etwas komplizierter Weg zu sein.

01:20:31.883 --> 01:20:33.783
Und diese ... Irgendwie scheint so ...

01:20:34.091 --> 01:20:37.183
Wir versuchen halt für die Browser dann alles gerecht zu machen.

01:20:37.243 --> 01:20:41.671
Aber vielleicht wär's eher mal an der Zeit, die Browser versuchen ... quasi ...

01:20:42.157 --> 01:20:47.172
Also eher andersherum. Dass die Browser sich vielleicht mal ein bisschen weiterentwickeln müssten.

01:20:47.583 --> 01:20:53.923
Vielleicht gibt's ja ganz viele Gegenargumentationen wie rückwärtskompatibilität und muss überall funktionieren.

01:20:53.983 --> 01:20:55.373
Und es ist halt nicht so einfach.

01:20:55.783 --> 01:21:02.548
Klar, aber das, was wir aktuell im JavaScript die letzten zehn Jahre so mitverfolgen können mit diesen Frameworks hin und her,

01:21:02.890 --> 01:21:08.480
das ist jetzt auch nicht gerade einfach. Es ist, alle Leute werden oder alle Developer werden nur noch so ein bisschen verwirrter.

01:21:09.632 --> 01:21:12.663
Klar kann man dann auch in der Jobstelle einfach mehr Geld verlangen,

01:21:12.663 --> 01:21:16.183
weil man sagt, ja, frontend ist ja sehr kompliziert geworden, ich brauche mal 5K mehr.

01:21:16.183 --> 01:21:21.443
Aber ich weiß nicht so, ob wir uns gerade in so eine gute Richtung entwickeln.

01:21:22.794 --> 01:21:29.543
Ich glaube, da ist der Stefan mit seinem Ausstieg von vor zweieinhalb Jahren ein gutes Beispiel dafür.

01:21:29.543 --> 01:21:37.543
Nachdem ich ja auch in vielen Technologien unterwegs bin, kann ich da bei allen Sachen extrem nur zustimmen, Vanessa.

01:21:38.016 --> 01:21:45.326
Also, wenn man was anderes anonymer entwickelt, irgendwie im Web aktuell zu bleiben, ist ja schon ein Vollzeitjob.

01:21:46.937 --> 01:21:51.288
Aber das kennen wir eh. Ja, definitiv, aber dann fällt's mir eben auf,

01:21:51.328 --> 01:21:55.448
wenn ich anderen Software-Developern von ganz anderen Sprachen,

01:21:55.488 --> 01:22:03.948
und ich würd jetzt nicht mal so was wie Rust nehmen, sondern wirklich in Richtung SwiftUI, Objective-C, Kotlin, Java,

01:22:04.420 --> 01:22:07.288
so was, wenn ich dann erkläre, was wir machen.

01:22:07.454 --> 01:22:08.399
Python.

01:22:08.651 --> 01:22:10.919
2.7, nehm ich mal an, nicht 3.

01:22:11.838 --> 01:22:16.808
Ähm ... Anaconda, Miniconda. Peep. Keine Ahnung.

01:22:16.951 --> 01:22:25.107
Dann muss ich halt oft von Problemen erzählen, die es in diesen Sprachen oder Bereichen gar nicht erst gibt.

01:22:25.287 --> 01:22:28.308
Ich sag's noch mal, du kannst eine App nicht teilweise ...

01:22:28.609 --> 01:22:34.508
Ja, es gibt ganz viele Abas. Aber du kannst an sich eine iOS-App nicht teilweise herunterladen.

01:22:34.568 --> 01:22:36.891
Es gibt dann auch Webviews und alles Mögliche.

01:22:37.494 --> 01:22:40.708
Aber du musst halt einfach mal initial sechs Megabyte ausgeben,

01:22:40.834 --> 01:22:43.525
oder was weiß ich jetzt, und dann hast du die App geladen.

01:22:44.066 --> 01:22:47.883
Es ist einfach ein Ansatz, der sehr viel für die Entwicklung halt auch ändert.

01:22:48.324 --> 01:22:51.948
Und da gibt's keinen DOM, da gibt's kein HTML, das endlos ist,

01:22:52.276 --> 01:22:58.019
sondern es gibt Views, und die sind nur so, die sind nur im Viewport auch da.

01:22:58.163 --> 01:23:01.323
Und ansonsten müssen die Daten halt klug ausgetauscht werden.

01:23:03.880 --> 01:23:07.428
Aber ich, ja, da, ich bin halt leider auch, was heißt leider,

01:23:07.428 --> 01:23:13.048
aber da bin ich in meiner standardtäglichen Arbeit, bin ich fokussiert aufs Frontend und mach da die Dinge

01:23:13.048 --> 01:23:15.708
und dann versucht, die so gut wie möglich zu machen,

01:23:15.768 --> 01:23:18.908
dass ich dieses große Picture da nicht weiter durchdacht hab.

01:23:18.968 --> 01:23:25.048
Aber es war so der Moment, als ich gelesen hab, wo ich mir dachte, also, ich weiß jetzt auch nicht,

01:23:25.108 --> 01:23:28.108
vielleicht müssen wir noch mal drüber nachdenken.

01:23:28.168 --> 01:23:32.308
Und das machen ja die Framework-Hersteller, Herstellerinnen,

01:23:32.368 --> 01:23:35.622
machen ja genau diese Dinge, das noch mal zu überdenken.

01:23:35.708 --> 01:23:40.208
Ähm, da hat sich jetzt in meinem Kopf so ein großes Ding eröffnet,

01:23:40.208 --> 01:23:42.808
Ich hatte ja jetzt einige Fragen eigentlich.

01:23:46.712 --> 01:23:52.782
Vielleicht, wenn ihr hier auf den Konferenzen rumspringt und immer die großen, wichtigen Personen da habt,

01:23:52.782 --> 01:23:56.142
vielleicht wissen wir die, vielleicht sprechen sie kein Deutsch,

01:23:56.246 --> 01:24:00.450
aber doch mal hier auch ran schaffen, um mal so eine große Diskussionsrunde,

01:24:01.000 --> 01:24:02.702
ein großes Panel zu beginnen.

01:24:04.348 --> 01:24:11.102
Ich kann mir auch vorstellen, dass viele von diesen Framework-Autorinnen und Autoren

01:24:11.102 --> 01:24:15.102
das schon versuchen bestmöglich zu machen für das, was eben möglich ist.

01:24:15.102 --> 01:24:18.862
Aber vielleicht haben die ja auch im Kopf und schon viel, viel weiter als ich,

01:24:18.862 --> 01:24:24.362
weil sie sich viel mehr damit beschäftigen als ich, dass es eigentlich, sollte man es vielleicht doch auch ganz anders machen.

01:24:24.362 --> 01:24:26.862
Aber es gibt halt tausend Gründe, dass es jetzt nicht einfach so geht.

01:24:26.862 --> 01:24:31.602
Also ich fände es jetzt natürlich selber auch unmöglich, mal kurz HTML abzuschaffen. Schon klar.

01:24:31.769 --> 01:24:36.102
Aber mich würde ja schon sehr interessieren, was sie denken würden.

01:24:36.102 --> 01:24:40.510
Wie würde man das Web heutzutage aufbauen, wenn man heute loslegen würde?

01:24:41.303 --> 01:24:44.862
Und einfach mal so was zum neuen Browser rausbringen könnte.

01:24:44.862 --> 01:24:48.822
Erinnert mich daran, dass ja Google tatsächlich vor zehn Jahren vorgehabt hat,

01:24:48.822 --> 01:24:53.222
Javascript abzulösen durch Dart. Das war ja tatsächlich so ein Drang.

01:24:53.222 --> 01:25:01.622
Gutes Beispiel, ja. Und sind auf sehr viel Widerstand gestoßen. Ich bin gespannt, wenn sie heute so eine Aktion

01:25:01.622 --> 01:25:06.302
machen würden, wo quasi 99 Prozent aller Browser irgendwie Chromium basiert sind,

01:25:07.085 --> 01:25:08.219
Das war's schon wieder, oder?

01:25:09.227 --> 01:25:16.098
Ähm ... Das ist genau bei TypeScript, nur diesen Ding. Nee, wir finden das doch eher ein Feature von JavaScript,

01:25:16.158 --> 01:25:19.438
dass es eine Number sein kann, aber dann plötzlich ein String.

01:25:19.498 --> 01:25:21.362
Das ist doch vielleicht gar nicht schlecht.

01:25:21.983 --> 01:25:26.298
Ja, gut. Ich weiß nicht, wie es in aktuellen Umfragen aussehen würde.

01:25:26.358 --> 01:25:30.838
Aber in meiner Erfahrung sind schon viele, viele, viele jetzt auf TypeScript.

01:25:31.130 --> 01:25:33.078
Aber jetzt ist mir halt wieder auffällig.

01:25:33.560 --> 01:25:36.878
Ich brauch so ein ESLint, das dann unfassbar langsam plötzlich wird.

01:25:37.080 --> 01:25:43.758
Dann brauch ich ein Buildstep. irgendwie umwandeln. Dann hab ich aber immer noch keine Runtime-Texte drin,

01:25:43.758 --> 01:25:46.137
sondern eigentlich ja doch nur die Bildchecks.

01:25:46.830 --> 01:25:53.458
Und dann hab ich plötzlich wieder sowas wie Superstruct oder andere Hilfstools, die dann auch noch bei Runtime

01:25:53.458 --> 01:25:58.498
noch auf die Typen checken können, um dann an Sentry oder was auch immer zu schicken, oh, hier ist aber ein falscher Typ unterwegs.

01:25:58.596 --> 01:26:05.758
Also brauch ich diesen ganzen Clutteradage und könnte ich das nicht einfach lieber ohne diesen ganzen Bildstep an den Browser liefern?

01:26:05.758 --> 01:26:07.998
Vielleicht brauchen wir ein neues Wort für Browser dann.

01:26:08.363 --> 01:26:13.998
Und das Ding ist klug genug, um sich drum zu kümmern. Und ich muss nicht erst TypeScript übersetzen und transfilieren.

01:26:14.665 --> 01:26:22.758
Siehst du, Vanessa, aber du hast jetzt mit dem gerade... Auch wenn ich mit meinem stark typisierten Hirn mir denke,

01:26:22.758 --> 01:26:25.238
manchmal ist was ein Number, manchmal ist was anders.

01:26:25.238 --> 01:26:30.638
Das ist nicht mein Vorteil, den ich sehe. Aber einfach, so wie du das gerade erwähnt hast,

01:26:30.638 --> 01:26:37.638
vielleicht müssen wir uns auch einfach darüber nachdenken, ob nicht das, was wir jetzt verwenden, eigentlich eh gar nicht so schlecht ist.

01:26:38.179 --> 01:26:43.038
Weil vielleicht kann man dann eh zufrieden sein damit. Ich finde es zum Beispiel total beruhigend,

01:26:43.038 --> 01:26:49.118
auch einfach mit, in meinem Fall war es jetzt einmal Eleventy oder Preact oder was auch immer,

01:26:49.118 --> 01:26:54.398
einfach das zu schreiben und am Ende des Tages, wenn man sich bemüht, kommt es eh sauber an.

01:26:54.398 --> 01:26:59.118
Und das liegt wahrscheinlich in 98 Prozent der Fälle nicht an dem Tool an sich, sondern,

01:26:59.118 --> 01:27:06.638
dass man das misused aufgrund von 47 Millionen anderen Sachen, von Zeit, von Finanzen und so

01:27:06.638 --> 01:27:10.638
so weiter, dass man sich denkt, hey, ähm...

01:27:09.750 --> 01:27:15.100
Verwenden wir mal das, was wir eh haben. Das ist jetzt der sehr konservative Ansatz.

01:27:15.100 --> 01:27:16.942
Aber manchmal ist der total beruhigend.

01:27:18.491 --> 01:27:24.100
Man denkt so, es läuft eigentlich eh gut, wenn man es richtig macht. Ja klar, es stimmt.

01:27:24.100 --> 01:27:27.100
Es ist auch ein guter Punkt. Und ich finde es ja auch faszinierend,

01:27:27.709 --> 01:27:30.329
was Browser alles im Endeffekt dann doch wieder.

01:27:32.139 --> 01:27:40.100
Herstellen können aus vielleicht eben nicht validen HTML, aus Schemantics und alles mal ignoriert,

01:27:40.100 --> 01:27:42.100
Accessibility ignoriert.

01:27:42.100 --> 01:27:49.513
Aber du kannst ja wirklich Code schreiben und er wird in den meisten Fällen.

01:27:50.100 --> 01:27:52.100
Verbessert und optimiert.

01:27:52.100 --> 01:27:58.100
Und ich kann die Sachen klicken und sehen und scrollen, obwohl da eigentlich

01:27:58.100 --> 01:28:02.100
ein paar Fehlerchen drin sind oder wo ich nicht alles optimieren musste.

01:28:02.251 --> 01:28:09.240
Oder wenn ich jetzt eben drüber nachdenke Ich denke an ein Stack, also, ich weiß theoretisch,

01:28:09.489 --> 01:28:17.040
dass Event-Listener und Promise und Set-Timeouts, wann die jeweils irgendwo landen und wann die ausgeführt werden.

01:28:17.100 --> 01:28:19.840
Aber ich muss mich auch überhaupt nicht drum kümmern.

01:28:19.900 --> 01:28:25.500
Ich muss mich nicht wie in anderen Programmiersprachen um Threads kümmern, um Multithreading generell mal.

01:28:25.560 --> 01:28:28.763
Ich kann zwar Serviceworker nutzen, aber ich muss es auch nicht ...

01:28:29.100 --> 01:28:39.240
Es stimmt schon, es ist halt eben nicht kompliziert, zu shippen. Ich nehme jetzt zwei richtig böse Wörter im Mund, an die mich Quick am Anfang

01:28:39.240 --> 01:28:48.280
erinnert hat. Zum ersten war das JSF, also die Java Server Faces, und zum zweiten war das Oracle

01:28:48.280 --> 01:29:03.760
Apex. Hat mal von euch wer mit dem gearbeitet? Ich habe keine Worte mehr.

01:29:04.304 --> 01:29:08.440
Ja, vor allem, die letzten werde ich jetzt auch noch nehmen. Ich habe eigentlich beide Sachen

01:29:08.440 --> 01:29:13.280
ganz lässig gefunden. Das Apex, das ist, da hat man direkt aus seiner Datenbank,

01:29:13.280 --> 01:29:19.536
außer in so Oracle-Datenmärken vor, wenn ich jetzt nachdenke, das war bei mir auch vor 14 Jahren, 13 Jahre,

01:29:19.824 --> 01:29:25.054
hat man seine Cloud-Maske außergenerieren können. Und das Ding hat das JavaScript erzeugt, das es gebraucht hat

01:29:25.108 --> 01:29:31.160
und den Rest, was es halt gebraucht hat, ob es damals schon ein JavaScript oder ob das ein Roundtrip war,

01:29:31.160 --> 01:29:35.080
aber das Ding hat genauso funktioniert. Und bei GSF hat man dann auch schon die Komponenten gehabt,

01:29:35.080 --> 01:29:38.720
die genau das JavaScript mitgeschickt haben, das gebraucht haben für den Punkt.

01:29:38.899 --> 01:29:40.943
Und das fühlt sich irgendwie so an, so ein...

01:29:42.194 --> 01:29:46.534
Nicht jetzt der Server-Roundtrip, sondern ein Dekaden-Roundtrip. Ja, ja.

01:29:47.019 --> 01:29:50.960
Das war der Friedrich Otte.

01:29:52.808 --> 01:30:00.958
Ich seh hier bei Oracle Apex, erstellen Sie Unternehmens-Apps 20-mal so schnell mit 100-fach geringem Kodierungsaufwand.

01:30:01.153 --> 01:30:05.558
Mir fehlt hier jetzt noch so das Sternchen im Vergleich zu herkömmlichen Shampoos.

01:30:05.558 --> 01:30:10.047
20-mal schneller als was mit 100-fach geringem was.

01:30:10.398 --> 01:30:16.158
Von was ausgehend. Ja, vielleicht, es ist für mich so ein bisschen an der Zeit,

01:30:16.158 --> 01:30:20.787
dass man nicht nur einfach Frameworks bewirbt mit, sie sind das und das schneller und dadada und dadada,

01:30:21.561 --> 01:30:24.618
sondern vielleicht schafft man es tatsächlich auch mal in die Richtung zu gehen.

01:30:24.874 --> 01:30:30.578
Was brauchst du? Dieses Framework war für dich das Beste. Was brauchst du? Also, vielleicht gibt's schon ...

01:30:30.578 --> 01:30:34.538
Irgendjemand hat doch bestimmt schon mal so ein Klick-Tool implementiert,

01:30:34.596 --> 01:30:40.178
wo ich sagen kann, ich möchte das, das und das, und dann lande ich irgendwie bei, keine Ahnung, Angular oder Eleventy.

01:30:40.178 --> 01:30:40.790
Das ist das Decision Tree.

01:30:43.658 --> 01:30:47.550
Ja, weil es wird kompliziert. Es ist schon lang kompliziert.

01:30:48.361 --> 01:30:51.698
Stell dir mal vor, du wirst heutzutage damit anfangen, WebDev zu werden.

01:30:51.698 --> 01:30:55.256
Unmöglich, unmöglich. Ich bewundere jeden und jede, der das tut.

01:30:58.867 --> 01:31:03.698
Ich hab damals halt Seite speichern untergemacht und kopiert. Und dann gemerkt, oh, es gibt verschiedene

01:31:03.698 --> 01:31:07.698
Bildschirmkursen, funktioniert ja so gar nicht. Aber wird man jetzt überhaupt noch WebDev oder wird man jetzt

01:31:07.698 --> 01:31:11.415
ReactDev oder wird man jetzt QuickDev oder wird man jetzt,

01:31:12.298 --> 01:31:15.698
VueDev? Ich glaub, so speziell geht's noch nicht.

01:31:15.698 --> 01:31:22.560
Weil dann kannst du ja dann, weiß ich nicht, so ein bisschen, ich glaub so in Richtung,

01:31:24.418 --> 01:31:25.938
Gruppierungen, Kategorien.

01:31:26.350 --> 01:31:29.159
So diese Art Framework oder diese Art Framework?

01:31:32.319 --> 01:31:38.169
So eher so PTV und Alpine oder so Vue und React oder so Rust?

01:31:38.341 --> 01:31:43.169
Gut, der Stefan hat wirklich keine Worte mehr.

01:31:43.169 --> 01:31:48.169
Der schaut immer noch ein bisschen schockiert in die Kamera.

01:31:48.169 --> 01:31:52.169
Nein, ich versuche eigentlich jetzt gedanklich schon ein bisschen einen positiven Spin zu finden,

01:31:52.169 --> 01:31:54.169
nachdem ich so viel geshootet und mich beschwert habe.

01:31:54.169 --> 01:32:00.169
Tatsächlich ist ja das spannend, was da gerade passiert. Also auch wenn das jetzt so in der Richtung schon mal existiert hat

01:32:00.169 --> 01:32:07.158
und wenn ich nicht zu 100% überzeugt bin davon, dass die aktuellen Bewegungen irgendwie den.

01:32:09.049 --> 01:32:16.969
Richtigen Use-Case haben. Weil wie gesagt, in den Use-Cases, die ich denke, ist entweder sehr viel

01:32:16.969 --> 01:32:24.649
Javascript oder gar kein Javascript drinnen. Oder wenig. Ich glaube doch, eben wie du gesagt hast,

01:32:24.649 --> 01:32:29.289
dass die Entwicklung einfach auch passieren muss, dass das spannend ist, was sie sich für Gedanken

01:32:29.289 --> 01:32:34.649
machen und ich würde auch gerne mal so ein bisschen aufrufen, vielleicht von den Hörerinnen und Hörern,

01:32:34.649 --> 01:32:39.289
falls es da irgendwelche Quick-EnthusiastInnen gibt, bitte mal mir auf die Finger klopfen und

01:32:39.289 --> 01:32:42.529
sagen, Baumgartner, du hast absolut nicht recht, ich erkläre dir das jetzt mal und ich sage dir jetzt,

01:32:42.529 --> 01:32:46.579
warum das super ist und dann sage ich, ja cool, das ist wirklich super, geht das ohne Notschäß auch.

01:32:46.687 --> 01:32:55.329
Und dann schauen wir, was rauskommt. Aber ich muss eh ganz ehrlich sagen, also wie gesagt,

01:32:55.329 --> 01:33:01.449
die letzten zweieinhalb Jahre Rust, die letzten drei Wochen Python, das Gras ist auf den anderen

01:33:01.449 --> 01:33:04.592
Seiten auch nicht grüner.

01:33:05.753 --> 01:33:08.247
Ich bin prinzipiell jetzt verwirrt von Software.

01:33:11.551 --> 01:33:14.403
Ja, ich kann dir einen zweiten Karriereweg empfehlen, Stefan.

01:33:15.403 --> 01:33:17.384
Das mache ich, wenn das Haus abbezahlt ist.

01:33:18.888 --> 01:33:20.403
Dann gehe ich wieder studieren.

01:33:23.403 --> 01:33:24.911
War das jetzt ein positives Bin?

01:33:27.017 --> 01:33:28.403
Ja, vielleicht. Versteckt.

01:33:31.403 --> 01:33:35.551
Positiver wird es ja nicht. Muss ich nicht, für mich jetzt hier nicht.

01:33:35.683 --> 01:33:40.243
Nein, also ich hab ja heute auch viel gebrabbelt, wo ich mir auch schon denke,

01:33:40.283 --> 01:33:42.654
da könnte vielleicht auch etwas Widerstand ankommen.

01:33:43.023 --> 01:33:52.475
Ich will, ich wollt's auch bewusst mal hart hinterfragen, was wir hier machen, bevor ich auf den nächsten Halbzug aufspringe.

01:33:52.998 --> 01:33:59.083
Ähm, die Entwicklung find ich superinteressant. Und dass es vielleicht hinterfragt wird.

01:33:59.335 --> 01:34:04.403
Ich frag mich nur, wie lange das so weitergeht. Vielleicht geht's auch einfach immer so weiter.

01:34:04.463 --> 01:34:09.923
Vielleicht bin ich nur an dem Punkt in meinem Leben, wo ich verstanden hab, es wird immer weiter optimiert.

01:34:09.983 --> 01:34:14.603
Es kommen immer neue Anforderungen dazu, weil als Nächstes müssen wir Chips in unseren ...

01:34:14.663 --> 01:34:16.683
Ihr wisst schon, auf lange Sicht gesehen,

01:34:16.863 --> 01:34:20.623
und es wird sich halt nicht ändern, und es ist auch schon seit 30 Jahren so,

01:34:20.683 --> 01:34:23.943
nur mir fällt's plötzlich einfach mal wie Schuppen von den Augen,

01:34:24.003 --> 01:34:26.283
was andere Leute schon seit 30 Jahren wissen.

01:34:26.343 --> 01:34:29.195
Und dann wieder Stefan sagen können, ja, das gab's doch alle schon mal.

01:34:29.963 --> 01:34:33.163
Ja, also von daher, ich lass mich auch super gerne umstimmen,

01:34:33.203 --> 01:34:35.503
dass Quick vielleicht das nächste Ding ist.

01:34:35.614 --> 01:34:38.036
Bin jetzt einfach nur ... auch ein bisschen ...

01:34:38.261 --> 01:34:41.543
Ich würd einfach nur gerne wissen, wo sind da dann die Probleme?

01:34:41.583 --> 01:34:44.043
Weil es wird sie irgendwo wieder geben, die ...

01:34:44.914 --> 01:34:51.583
Die halt einfach ganz standardmäßig auch da sind, wenn ich eine große Webseite habe und keine Ahnung, eine Codebase von was weiß ich,

01:34:51.623 --> 01:34:58.923
wie vielen Personen pro Tag, die da rumhampeln und Daten haben wollen und Videos und mit der AI sprechen und allem Möglichen.

01:34:58.923 --> 01:34:59.903
Tja...

01:35:02.477 --> 01:35:13.327
AI. Also jetzt hören wir auf zu sprechen. Ich bin ja ein ganz großer AI-Freund.

01:35:13.327 --> 01:35:17.327
Ich wollte jetzt nur nicht damit anfangen, weil wir sind jetzt bei einer Stunde irgendwas

01:35:17.501 --> 01:35:19.032
und sonst kommen wir bei fünf Stunden.

01:35:19.969 --> 01:35:25.189
Sechs, acht. Sonst kommt der Peter noch dazu und der Hans und dann geht es erst richtig los.

01:35:26.306 --> 01:35:29.327
Du hast das sehr schön zusammengefasst. Ich wollte dir das eher sagen, Vanessa,

01:35:29.327 --> 01:35:38.927
vielleicht ist es auch nur so, der Zeit erkennt, es ergibt sich vieles wieder und es kommt einmal der Punkt, wo man das erkennt.

01:35:39.044 --> 01:35:42.847
Das wollte ich gerade noch sagen. Das ist, glaube ich, auch für mich jetzt eine sehr schöne

01:35:42.847 --> 01:35:48.247
Erkenntnis des Ganzen, die das Ganze besser einordnen lässt. Damit, glaube ich, gebe ich

01:35:48.247 --> 01:35:56.927
zurück ins Studio nach Freising. Dann machen wir an dieser Stelle den Deckel drauf. Ich bedanke

01:35:56.927 --> 01:36:03.427
mich ganz toll bei euch beiden. Es hat mir sehr viel Spaß gemacht. Ich freue mich wahnsinnig auf

01:36:03.427 --> 01:36:10.427
jedes Feedback aus der Community, entweder bei uns im Slack Working Draft, Community Draft,

01:36:10.427 --> 01:36:15.587
Slack Channel oder über Social Media Plattformen. Wir freuen uns auch über Sternchen, damit wir

01:36:15.587 --> 01:36:21.027
gefunden werden. Wir bedanken uns alle, die jetzt gerade immer noch zuhören. Das finden wir spitze.

01:36:21.027 --> 01:36:27.987
Schreibt uns auch gerne, falls ihr da mitreden möchtet und nicht einfach nur eine E-Mail schreiben

01:36:27.987 --> 01:36:30.967
wollt, sondern auch wirklich mitdiskutieren wollt, damit ihr uns mal erzählt, wie es

01:36:30.967 --> 01:36:35.367
denn tatsächlich wirklich funktioniert. Kommt doch gerne als richtige Experten-Expertin vorbei.

01:36:35.367 --> 01:36:43.032
Und dann freuen wir uns aufs nächste Mal und bis bald. Tschüss. Dankeschön.

01:36:44.080 --> 01:37:07.120
Music.

