WEBVTT

00:00:00.000 --> 00:00:03.300
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, Episode 38.

00:00:04.320 --> 00:00:06.300
Dieses Mal wollen wir etwas über HTMX sprechen.

00:00:06.940 --> 00:00:08.360
Hier ist der Dominik, bei mir ist wieder der Jochen.

00:00:08.820 --> 00:00:10.340
Ja, hallihallo, willkommen Dominik.

00:00:10.460 --> 00:00:12.600
Und wir haben heute einen neuen Gast, und zwar den Thomas. Hi Thomas.

00:00:13.280 --> 00:00:14.220
Hallo, grüß dich.

00:00:14.240 --> 00:00:14.820
Jo, hallihallo.

00:00:14.920 --> 00:00:15.660
Schön, dass du da bist.

00:00:16.660 --> 00:00:19.260
Ja, fangen wir wie immer an mit ein bisschen News aus der Szene.

00:00:19.360 --> 00:00:23.080
Ja, oder vielleicht kann sich Thomas kurz vorstellen, so ganz...

00:00:23.080 --> 00:00:24.780
Das wollte ich dann bei HTMX machen, aber weißt du was, du hast recht.

00:00:25.480 --> 00:00:28.420
Eigentlich müssten wir das am Anfang stellen und sagen, Leute, hallo, und man weiß gar nicht, wer das ist.

00:00:28.540 --> 00:00:29.920
Deswegen sag doch mal, Thomas, was machst du denn?

00:00:30.000 --> 00:00:56.380
Ja, ich mache Softwareentwicklung. Das schon eine ganze Menge Jahre. Habe vor 20 Jahren mal Informatik studiert und vorher schon auch als Kind daran Spaß gehabt. Und ja, mache hauptsächlich eben Webentwicklung mit Python und Django, PostgreSQL und eben seit neuestem auch mit HTMLX. Und ja, hier, Jochen hat mich mal angesprochen, wollen wir nicht einen Podcast machen? Dachte ich, ja, schön, bin ich dabei. Und ja, jetzt bin ich hier.

00:00:56.380 --> 00:00:57.640
Ja, sehr schön. Ja, sehr cool.

00:00:59.160 --> 00:01:00.400
Ja, okay. Dann gehen wir noch

00:01:00.400 --> 00:01:01.860
zu den News über. Erstmal ein bisschen News, ja.

00:01:04.280 --> 00:01:06.440
Ich glaube, ich habe auch fast gar nichts

00:01:06.440 --> 00:01:08.600
aufgeschrieben. Oh doch, Python 3.6

00:01:08.600 --> 00:01:10.580
ist draußen, end of life.

00:01:10.660 --> 00:01:11.340
Ich glaube, es war am 23.

00:01:14.960 --> 00:01:15.740
Dezember oder so.

00:01:17.020 --> 00:01:17.620
Also Weihnachten.

00:01:17.900 --> 00:01:19.480
Weihnachtsgeschenk, eure Version ist duplicated.

00:01:20.540 --> 00:01:21.440
Ja, das heißt

00:01:21.440 --> 00:01:22.420
quasi die erste

00:01:22.420 --> 00:01:25.480
Version Python 3, wo

00:01:25.480 --> 00:01:27.580
viele Leute irgendwie das Gefühl

00:01:27.580 --> 00:01:28.840
hatten, das ist jetzt besser als Python 2.

00:01:29.880 --> 00:01:31.160
Ist jetzt auch End of Life.

00:01:31.340 --> 00:01:32.560
Das heißt, ja, also

00:01:32.560 --> 00:01:35.040
krass. Als ich das gesehen habe, dachte ich so, wow,

00:01:35.160 --> 00:01:36.420
das ist schon wieder so lange her.

00:01:36.760 --> 00:01:38.220
Bei 3.6 habe ich, glaube ich, angefangen.

00:01:38.380 --> 00:01:39.740
Das ist schon gar nicht so lange her.

00:01:40.460 --> 00:01:43.220
3.7 kam dann relativ fix und jetzt, ja, ging es schnell.

00:01:44.340 --> 00:01:45.080
Also meine News,

00:01:45.160 --> 00:01:46.660
ich habe noch gelesen, dass Python Programmiersprache

00:01:46.660 --> 00:01:47.940
des Jahres 21 geworden ist.

00:01:49.180 --> 00:01:51.300
Wir werden famous und beruhigt.

00:01:52.240 --> 00:01:53.080
Ganz wichtige News.

00:01:53.160 --> 00:01:55.080
Ja, es gab jetzt auch wieder eine neue Version

00:01:55.080 --> 00:01:56.160
von diesem TOB

00:01:56.160 --> 00:01:59.040
Index, wo Python

00:01:59.040 --> 00:01:59.800
auf Platz 1 ist.

00:02:01.400 --> 00:02:03.020
Allerdings muss man dazu sagen,

00:02:03.160 --> 00:02:05.040
vielleicht, dass das irgendwie, also

00:02:05.040 --> 00:02:06.860
so wahnsinnig viel kann man da nicht draus lesen.

00:02:06.980 --> 00:02:07.960
Ja, ist doch eigentlich relativ wurscht.

00:02:08.300 --> 00:02:10.700
Ja, ich habe letztens, wo habe ich das gehört?

00:02:10.840 --> 00:02:12.540
Ein programmierbarer Podcast war es, glaube ich.

00:02:13.240 --> 00:02:14.680
Dass da jemand meinte so, ja, das ist irgendeine

00:02:14.680 --> 00:02:16.680
niederländische Firma und das, was die machen, ist,

00:02:17.320 --> 00:02:19.280
sie machen irgendwie

00:02:19.280 --> 00:02:20.620
neben den Namen der Programmiersprache,

00:02:20.880 --> 00:02:23.200
machen Programming dahinter und

00:02:23.200 --> 00:02:25.060
googeln dann danach und dann zählen sie die

00:02:25.060 --> 00:02:27.160
Anzahl der Suchergebnisse. Das ist mehr oder weniger, was

00:02:27.160 --> 00:02:29.160
sie tun. Und das ist

00:02:29.160 --> 00:02:31.000
natürlich irgendwie, ja, gut, ob das jetzt so

00:02:31.000 --> 00:02:32.480
einem wahnsinnig viel sagt, ist halt

00:02:32.480 --> 00:02:33.800
unklar.

00:02:35.560 --> 00:02:36.800
Das habe ich von dir noch nicht gehört.

00:02:38.000 --> 00:02:39.060
Ja, ich höre

00:02:39.060 --> 00:02:40.960
immer so, was es an anderen Podcasts auch so gibt.

00:02:40.980 --> 00:02:42.900
Ja, deswegen, vielleicht ist das auch mal interessant, dass man

00:02:42.900 --> 00:02:44.940
mal kurz darüber erzählt. Ja, also

00:02:44.940 --> 00:02:47.280
da geht es meistens so um Frontend-Themen.

00:02:47.440 --> 00:02:49.000
Also es gibt erstaunlich, das ist auch so was,

00:02:49.080 --> 00:02:50.660
das finde ich immer ein bisschen komisch,

00:02:51.040 --> 00:02:52.420
dass es, es gibt einige

00:02:52.420 --> 00:02:55.520
Podcasts, die sich mit dem Thema Programmierung

00:02:55.520 --> 00:02:57.080
und so beschäftigen, aber

00:02:57.080 --> 00:02:59.040
fast alle eher so Frontend.

00:02:59.560 --> 00:03:00.880
Also es gibt zum Beispiel Webwork,

00:03:01.060 --> 00:03:03.080
nee, nicht Webwork, das ist ein Meetup hier in Düsseldorf.

00:03:04.740 --> 00:03:05.440
Working Draft

00:03:05.440 --> 00:03:07.340
heißt einer, auch einer

00:03:07.340 --> 00:03:08.420
der vielleicht der älteste

00:03:08.420 --> 00:03:11.080
Webentwicklungspodcast und

00:03:11.080 --> 00:03:12.560
sicherlich einer der bekanntesten,

00:03:13.200 --> 00:03:14.980
auch mit Leuten hier aus Düsseldorf

00:03:14.980 --> 00:03:17.040
und ja,

00:03:17.040 --> 00:03:18.980
das ist aber auch sehr Frontend-lastig

00:03:18.980 --> 00:03:20.820
und

00:03:20.820 --> 00:03:22.760
genau, programmierbar,

00:03:23.140 --> 00:03:25.120
ist relativ neu, ist halt auch

00:03:25.120 --> 00:03:26.960
sehr frontendlastig. Folge 116,

00:03:27.140 --> 00:03:29.060
die machen häufig Dinge,

00:03:29.260 --> 00:03:31.220
ja, aber, achso, vielleicht auch nicht so neu.

00:03:31.440 --> 00:03:33.000
Ja, aber gut, Moment, wenn ich hier gerade sehe,

00:03:33.080 --> 00:03:35.260
3. November, 2. November, 10. November, 12. November,

00:03:35.440 --> 00:03:36.760
17. November, 24. November,

00:03:37.260 --> 00:03:39.440
also ja, die Page ist relativ häufig.

00:03:39.780 --> 00:03:41.340
Ja, Working Draft

00:03:41.340 --> 00:03:43.140
hat irgendwie über 500, 531

00:03:43.140 --> 00:03:44.680
sind es jetzt irgendwie oder so, weil

00:03:44.680 --> 00:03:46.660
wir machen einmal die Woche.

00:03:47.520 --> 00:03:49.300
Das ist schon, ja. Ja, da brauchen

00:03:49.300 --> 00:03:49.700
wir noch ein bisschen.

00:03:50.820 --> 00:03:53.040
ja. Wie sagt jemand mit dem

00:03:53.040 --> 00:03:55.260
Gameboy, kann man jetzt in 50.000 Jahren

00:03:55.260 --> 00:03:55.980
einen Bitcoin meinen?

00:03:57.060 --> 00:03:59.020
Ah ja, okay. Irgendwie so,

00:03:59.400 --> 00:04:00.700
die Zahl ist jetzt auch noch rein aus der Luft.

00:04:01.640 --> 00:04:03.220
Ja, und dann gibt's, also

00:04:03.220 --> 00:04:05.100
was ich auch manchmal noch höre, ist sowas, also

00:04:05.100 --> 00:04:07.180
wenn es deutschsprachige Geschichten sind, Englischsprache

00:04:07.180 --> 00:04:08.980
gibt's natürlich endlos jede Menge, aber

00:04:08.980 --> 00:04:11.260
gibt's noch sowas wie Software-Architektur

00:04:11.260 --> 00:04:11.900
im Stream.

00:04:13.260 --> 00:04:14.060
Höre ich manchmal.

00:04:16.880 --> 00:04:17.280
Und

00:04:17.280 --> 00:04:19.380
InnoQ hat ein paar Podcasts,

00:04:19.380 --> 00:04:21.260
ist eine Firma und die hat auch was mit dem, also

00:04:21.260 --> 00:04:22.360
der Mensch, der

00:04:22.360 --> 00:04:25.040
Software-Architektur im Stream macht, der

00:04:25.040 --> 00:04:26.020
arbeitet da auch.

00:04:27.240 --> 00:04:29.300
Und da

00:04:29.300 --> 00:04:30.520
arbeitet auch jemand, also der

00:04:30.520 --> 00:04:33.100
Stefan Tilkoff arbeitet da auch und

00:04:33.100 --> 00:04:34.780
der ist auch viel

00:04:34.780 --> 00:04:37.160
in anderen Podcasts unterwegs, da habe ich auch

00:04:37.160 --> 00:04:38.140
einen Working Graph zum Beispiel.

00:04:40.240 --> 00:04:41.180
Mal ein sehr schöner,

00:04:41.280 --> 00:04:42.940
auch passend zum Thema, was wir gleich,

00:04:43.460 --> 00:04:44.760
worüber wir gleich reden wollen,

00:04:45.280 --> 00:04:46.800
da gibt es eine Episode zum Thema

00:04:46.800 --> 00:04:49.160
Single-Page-Apps und

00:04:49.160 --> 00:04:51.060
irgendwie, was ist eigentlich REST und so und die ist

00:04:51.060 --> 00:04:53.340
sehr empfehlenswert. Oh ja, was eigentlich

00:04:53.340 --> 00:04:55.020
REST ist, darüber wollen wir auch gleich sprechen. Ja,

00:04:55.340 --> 00:04:57.000
genau, darüber haben wir auch schon mal

00:04:57.000 --> 00:04:58.320
eine Episode gemacht.

00:04:59.540 --> 00:05:01.080
Ja, aber also so in dem,

00:05:01.540 --> 00:05:03.240
also so ganz kurz muss man es ja gleich wieder erwähnen, weil

00:05:03.240 --> 00:05:05.060
das ja so ein bisschen heute auch darum geht. Ja,

00:05:05.140 --> 00:05:07.300
stimmt. Dann gibt es noch

00:05:07.300 --> 00:05:09.000
Wo wir sind ist vorne.

00:05:09.500 --> 00:05:11.020
Das ist eigentlich ein sehr super, super

00:05:11.020 --> 00:05:12.900
produziertes Ding. Der Titel ist toll.

00:05:13.380 --> 00:05:15.200
Ja, der Titel ist toll und die Grafiken

00:05:15.200 --> 00:05:17.160
sind toll und das sieht alles toll aus und die Webseite

00:05:17.160 --> 00:05:19.540
das toll. Aber ja, es ist halt auch ein sehr frontendlastiger

00:05:19.540 --> 00:05:21.120
Ding. Die machen halt auch

00:05:21.120 --> 00:05:22.320
Streams und ja.

00:05:23.640 --> 00:05:24.980
Genau. Und ich

00:05:24.980 --> 00:05:27.260
meine, das sind so fast, dann gibt es noch so ein paar

00:05:27.260 --> 00:05:29.060
KI-Geschichten,

00:05:29.580 --> 00:05:31.140
die ich höre, da habe ich die Namen jetzt nicht und die

00:05:31.140 --> 00:05:33.040
höre ich auch sehr unregelmäßig, weil meistens gefällt mir das

00:05:33.040 --> 00:05:34.920
gar nicht so gut. Oh, aber das mit den BVC sind vorne

00:05:34.920 --> 00:05:37.160
sieht so gut aus. KI in der Industrie, glaube ich, ist eine.

00:05:37.220 --> 00:05:38.660
Das gefällt mir eigentlich ganz gut, da bin ich gespannt.

00:05:39.040 --> 00:05:41.080
Ja. Ansonsten mehr fällt mir jetzt ehrlich

00:05:41.080 --> 00:05:43.040
gesagt nicht ein, was es da auf Deutsch gibt.

00:05:45.700 --> 00:05:47.000
Ja. Fällt dir noch was ein,

00:05:47.040 --> 00:05:47.480
Thomas, dazu?

00:05:49.340 --> 00:05:51.220
Nö, meine Überlegung gerade war bloß,

00:05:51.340 --> 00:05:52.740
ob es im DevOps-Bereich

00:05:52.740 --> 00:05:54.860
über Kubernetes oder irgend sowas, also

00:05:54.860 --> 00:05:57.060
im deutschsprachigen Raum noch was gibt.

00:05:58.280 --> 00:05:58.520
Naja,

00:05:58.940 --> 00:06:01.000
keine Ahnung. Vielleicht gibt es das,

00:06:01.080 --> 00:06:03.020
aber das ist auch etwas, wo ich gar nicht nachgucken würde

00:06:03.020 --> 00:06:04.940
oder weil es mich gar nicht

00:06:04.940 --> 00:06:05.720
so sehr interessiert.

00:06:06.720 --> 00:06:08.400
Glaube ich, würde ich das auch gar nicht mitbekommen.

00:06:08.600 --> 00:06:10.080
Niko hatte, glaube ich, so ein, zwei Sachen da

00:06:10.080 --> 00:06:12.640
in den Techniken gemacht, aber der hat auch

00:06:12.640 --> 00:06:14.660
glaube ich schon ein halbes Jahr nicht mehr neue

00:06:14.660 --> 00:06:16.580
Folgen released. Also weiß ich nicht, ob es die noch gibt.

00:06:16.740 --> 00:06:17.640
von dem habe ich letztens gehört,

00:06:17.740 --> 00:06:21.340
da macht er irgendwie so ein Live-Webinar-Ding,

00:06:21.420 --> 00:06:23.060
Stream, auch eher so Richtung Stream geht das.

00:06:23.400 --> 00:06:23.820
Okay, okay.

00:06:24.800 --> 00:06:26.600
Aber ja, stimmt, der macht natürlich,

00:06:26.720 --> 00:06:28.300
also Tech-Tiefen, vorher hieß das irgendwie anders.

00:06:29.820 --> 00:06:31.780
Ja, der macht auch nicht nur Frontend-Themen,

00:06:32.100 --> 00:06:32.800
sondern alles Mögliche.

00:06:32.880 --> 00:06:35.680
Auch so ein bisschen mit Schwerpunkt auf Data Science, aber...

00:06:35.680 --> 00:06:36.880
Mhm, cool, ja.

00:06:37.200 --> 00:06:37.580
Ja, ja.

00:06:38.640 --> 00:06:39.540
Ja, ansonsten weiß ich nicht.

00:06:39.540 --> 00:06:41.540
Gab es in der Python-Welt irgendwelche Neuigkeiten,

00:06:42.320 --> 00:06:43.160
irgendwelche interessanten Dinge?

00:06:44.420 --> 00:06:45.540
Hm, sonst...

00:06:46.460 --> 00:06:49.360
War ja so eine Jahrespause, ne?

00:06:49.800 --> 00:06:51.900
Ja, der Jahreswechsel ist immer ein bisschen ruhiger.

00:06:53.400 --> 00:06:55.960
Ja, nö, ansonsten weiß ich da auch nichts mehr.

00:06:57.600 --> 00:07:01.760
Dann sind wir dieses Mal mit dem Erstaunlichen früh durch.

00:07:02.060 --> 00:07:05.600
Jo, und wie wir ja schon angekündigt hatten, angedroht,

00:07:05.800 --> 00:07:07.480
gibt es nur noch ein bisschen Werbung.

00:07:08.460 --> 00:07:11.500
Der Sponsor für diese Episode ist NordVPN.

00:07:12.340 --> 00:07:13.680
Das ist ein VPN-Anbieter.

00:07:13.680 --> 00:07:15.760
und da könnt ihr etwa auf notbpn.com

00:07:15.760 --> 00:07:17.220
slash pythonpodcast gehen

00:07:17.220 --> 00:07:19.500
und bekommt da 73% Rabatt

00:07:19.500 --> 00:07:20.760
auf ein Zwei-Jahres-Paket

00:07:20.760 --> 00:07:23.300
und noch einen Gratis-Monat extra.

00:07:23.820 --> 00:07:25.640
Und genau, wenn euch

00:07:25.640 --> 00:07:27.700
das nicht zusagen sollte, könnt ihr das auch

00:07:27.700 --> 00:07:29.580
innerhalb von 30 Tagen kündigen,

00:07:29.740 --> 00:07:31.080
ohne dass euch da Zusatzkosten entstehen.

00:07:32.260 --> 00:07:33.660
Und ja, könnt euch immer angucken.

00:07:33.780 --> 00:07:35.520
Ist vielleicht ganz nett. Manchmal braucht man das ja schon.

00:07:35.700 --> 00:07:37.240
Also ich war zum Beispiel letztens

00:07:37.240 --> 00:07:38.560
im Urlaub und

00:07:38.560 --> 00:07:41.640
wollte da die Dinge weitergucken, die ich normalerweise so gucke

00:07:41.640 --> 00:07:42.820
und musste dann feststellen,

00:07:43.580 --> 00:07:45.960
Nee, das geht nicht, weil Streaming-Dienstleister

00:07:45.960 --> 00:07:47.600
hat festgestellt, man ist woanders, als man normalerweise ist

00:07:47.600 --> 00:07:49.140
und dann geht das halt nicht mehr.

00:07:50.220 --> 00:07:51.700
Und da möchte man dann vielleicht doch

00:07:51.700 --> 00:07:52.960
eher nur so auf irgendwo

00:07:52.960 --> 00:07:55.520
V4N aktivieren, klicken und dann geht das halt

00:07:55.520 --> 00:07:57.240
einfach weiter und

00:07:57.240 --> 00:07:59.320
hatte ich nicht, muss ich mir überlegen,

00:07:59.600 --> 00:08:01.540
ob ich das nicht vielleicht mal haben möchte

00:08:01.540 --> 00:08:02.160
für den Fall.

00:08:03.820 --> 00:08:05.340
Ja, auch wenn ihr

00:08:05.340 --> 00:08:08.000
einen lokalen Internet-Service-Provider

00:08:08.000 --> 00:08:09.680
habt, der vielleicht nicht so auf der Höhe

00:08:09.680 --> 00:08:11.500
ist, was seine Peerings angeht, dann könnt ihr

00:08:11.500 --> 00:08:13.320
da euch zu einem besseren Internet-Erlebnis

00:08:13.320 --> 00:08:15.840
verhelfen, indem ihr einen VPN benutzt.

00:08:17.820 --> 00:08:18.240
Ja, genau.

00:08:18.420 --> 00:08:20.140
Und wenn ihr das mal ausprobieren möchtet, einfach auf

00:08:20.140 --> 00:08:22.240
nordvpn.com slash pythonpodcast gehen

00:08:22.240 --> 00:08:24.260
und ausprobieren.

00:08:25.060 --> 00:08:26.040
Vielen Dank an NordVPN

00:08:26.040 --> 00:08:26.960
für die Unterstützung.

00:08:27.960 --> 00:08:29.200
Und dann geht es direkt in das Thema rein.

00:08:30.400 --> 00:08:30.800
HTMX.

00:08:31.580 --> 00:08:32.500
Was ist denn das?

00:08:34.820 --> 00:08:36.140
Oh, das weiß ich auch nicht so genau.

00:08:36.140 --> 00:08:37.940
Das sind die High-Power-Tools für

00:08:37.940 --> 00:08:40.140
HTML, so hat es denn der Mensch

00:08:40.140 --> 00:08:41.360
genannt, der das erfunden hat,

00:08:41.820 --> 00:08:46.020
um einfach HTML so zu erweitern,

00:08:46.120 --> 00:08:47.760
wie es der Standard bis jetzt nicht zugelassen hat.

00:08:48.740 --> 00:08:50.820
Also, dass man keinen JavaScript mehr braucht,

00:08:50.940 --> 00:08:53.640
um coole, responsivee Sachen im Web zu bauen.

00:08:53.940 --> 00:08:55.200
Doch, JavaScript brauchst du schon.

00:08:55.520 --> 00:08:58.640
Ja, aber du musst es nicht mehr schreiben, so wirklich.

00:09:00.220 --> 00:09:00.440
Ja.

00:09:01.040 --> 00:09:02.720
Ja, es wird dann so deklarativ.

00:09:02.720 --> 00:09:05.260
Das ist eigentlich schon nicht schlecht.

00:09:05.380 --> 00:09:06.400
Es entwickelt sich ja alles,

00:09:06.540 --> 00:09:07.880
so ein bisschen in die Richtung spricht.

00:09:08.880 --> 00:09:11.740
Ja, vielleicht noch mal ganz kurz, was das so ist.

00:09:11.820 --> 00:09:13.940
also, worum es da geht, also

00:09:13.940 --> 00:09:16.280
wie machen wir denn normalerweise jetzt Frontend

00:09:16.280 --> 00:09:18.300
und Backend? Trennen wir das? Wie war das denn

00:09:18.300 --> 00:09:19.920
früher? Und

00:09:19.920 --> 00:09:21.900
ja, warum dann

00:09:21.900 --> 00:09:23.680
HTMX? Also was ist das so die Idee dahinter? Also ich glaube,

00:09:24.080 --> 00:09:26.100
früher war es einfach nur so, du hast

00:09:26.100 --> 00:09:28.220
den Server gefragt und der hat dir dann die Webseite fertig

00:09:28.220 --> 00:09:28.580
geschickt.

00:09:30.720 --> 00:09:32.020
Nein, weil ganz früher,

00:09:32.640 --> 00:09:33.940
ganz, ganz früher. Also das ist die Frage,

00:09:34.040 --> 00:09:35.880
wie früh hättest du es denn gehabt?

00:09:35.900 --> 00:09:38.120
Anfang der 90er oder so. Also ich würde

00:09:38.120 --> 00:09:40.040
ja sagen, also das Web ist ja im Grunde

00:09:40.040 --> 00:09:41.380
ein sehr neues Modell.

00:09:42.060 --> 00:09:43.380
Also insofern, das ist das Gute.

00:09:44.280 --> 00:09:46.140
Fangen wir gerade mit dem harten theoretischen Kram

00:09:46.140 --> 00:09:48.020
an. Ich frage, ob das so ein guter Einstieg ist, aber

00:09:48.020 --> 00:09:48.460
Ich weiß nicht.

00:09:50.080 --> 00:09:51.940
Naja, also Web ist ja

00:09:51.940 --> 00:09:53.620
eigentlich revolutionär in vielen

00:09:53.620 --> 00:09:55.920
Eigenschaften, die es so hat

00:09:55.920 --> 00:09:57.960
und halt ganz anders als irgendwie

00:09:57.960 --> 00:10:00.040
die Dinge, die man vorher gemacht hat. Was man vorher gemacht hat,

00:10:00.080 --> 00:10:01.920
ist halt so Client-Server zum Beispiel.

00:10:03.060 --> 00:10:04.740
Oder Remote-Procedure-Calls

00:10:04.740 --> 00:10:06.240
oder sowas. Solche Dinge.

00:10:06.940 --> 00:10:08.540
Das ist halt alles deutlich älter als das Web.

00:10:08.900 --> 00:10:10.720
Und Web ist halt eigentlich was anderes.

00:10:10.880 --> 00:10:12.320
Aber ich glaube, die Geschichte erzählen wir gleich.

00:10:12.780 --> 00:10:14.300
Und dann, was ist denn Web?

00:10:14.460 --> 00:10:16.080
Dann erzähl doch erstmal, was denn Web ist.

00:10:16.080 --> 00:10:24.280
Ja, naja, also Web ist halt sozusagen da, ja, wie definiert man das?

00:10:24.640 --> 00:10:26.800
Es gibt halt diese, das hatten wir, wie gesagt, in der Restepisode,

00:10:27.060 --> 00:10:30.020
diese Dissertation von Roy Fielding, der halt auch an dem Startenarzt

00:10:30.020 --> 00:10:33.420
da maßgeblich mitgearbeitet hat mit Tim Berners-Lee.

00:10:33.680 --> 00:10:35.960
Und der hat da seine Dissertation irgendwann drüber geschrieben.

00:10:36.740 --> 00:10:41.100
Und da definiert er, was er quasi meint, was das ist,

00:10:41.180 --> 00:10:46.520
so als REST, also Representational State Transfer oder so.

00:10:47.740 --> 00:10:49.740
Aber es ist halt die Frage, ob das so interessant ist.

00:10:50.060 --> 00:10:51.360
Ja, ich glaube, das hatten wir ja schon in der REST-Episode.

00:10:51.560 --> 00:10:52.420
Ich glaube, da müssen wir es gar nicht sagen.

00:10:52.420 --> 00:10:54.920
Ja, im Grunde so ganz, ganz, ganz grob ist es halt irgendwie,

00:10:54.980 --> 00:10:58.680
es geht darum, dass der Client im Grunde nicht mehr viel wissen muss.

00:10:58.680 --> 00:11:01.740
Dass man halt alles, was an Informationen man braucht,

00:11:01.820 --> 00:11:05.000
um halt irgendwie einen Client betreiben zu können,

00:11:05.140 --> 00:11:06.540
ja, sozusagen, dass das halt alles mitkommt.

00:11:06.740 --> 00:11:23.760
Also sozusagen, dass man halt auch mit einem alten Browser halt zum Beispiel Dinge machen kann, dass man jetzt nicht immer den neuesten Browser haben muss. Bei Client-Server war das Problem früher immer, wenn man da irgendwie was geändert hat, dann muss man immer dafür sorgen, dass auch die aktuellste Version vom Client irgendwie geschippt wird, weil ansonsten funktioniert das halt nicht mehr.

00:11:24.500 --> 00:11:25.060
Genau, genau.

00:11:25.060 --> 00:11:31.920
Und das ist mit Web, also mit REST und Web ist es eigentlich dann insofern besser, als es halt auch mit alten Browsern noch funktioniert.

00:11:32.040 --> 00:11:35.380
Man muss sich nicht darum kümmern, dass die Leute halt immer den aktuellsten Browser haben.

00:11:35.800 --> 00:11:38.440
Und es sollte eigentlich mit jedem Browser funktionieren und so.

00:11:38.860 --> 00:11:41.660
Und der Browser muss nicht wissen, was da kommt.

00:11:42.120 --> 00:11:48.720
Also wenn ich jetzt zum Beispiel, das ist halt genau eine von diesen Geschichten, die halt jetzt bei diesen ganz modernen Geschichten in Anführungsstrichen,

00:11:48.820 --> 00:11:53.540
also dieses Single-Page-App-mäßigen Teilen, halt wieder so ist wie ganz, ganz früher.

00:11:53.820 --> 00:11:56.120
Jetzt hast du wieder was gesagt, das Single-Page-App-Teil.

00:11:56.240 --> 00:11:58.280
Und ich glaube, das müsste so ein bisschen strukturierter sein.

00:11:58.360 --> 00:12:00.600
Ich glaube, wir sind ja gerade schon wieder sehr in der Historie drin.

00:12:01.080 --> 00:12:01.840
Ja, du hast danach gefragt.

00:12:02.000 --> 00:12:05.080
Ja, ja, ich habe ja gesagt, wir müssen das auf jeden Fall später auch noch mal erzählen.

00:12:05.440 --> 00:12:06.520
Gerade was Kleinserver und so ist.

00:12:06.600 --> 00:12:09.380
Aber der, glaube ich, der entscheidende Unterschied, was hat MX, das halt macht,

00:12:09.880 --> 00:12:13.260
diesen modernen Trend, dass man halt eine Single-Page-Application braucht,

00:12:13.360 --> 00:12:16.140
um Frontend schön darzustellen, ersetzen kann.

00:12:16.200 --> 00:12:18.880
Und zwar mit Auslieferung vom Backend, also so Server-Seiten.

00:12:19.140 --> 00:12:22.820
Aber vielleicht will ja Thomas das gerade genau da jetzt noch mal einsteigen.

00:12:23.820 --> 00:12:46.540
Also bei HTMLX, das ist sicherlich auf JavaScript basiert, anders kommt man ja in den Browser nicht wirklich rein, um dort irgendwas zu programmieren im Browser, aber Ziel der Übung ist eigentlich, dass der Endanwender, also der Entwickler dann kein JavaScript mehr schreibt oder wenig JavaScript und da wird HTML erweitert um neue Attribute,

00:12:47.520 --> 00:13:12.220
Sodass man es HTML klassisch verwenden kann, also wie es eben vor 20 Jahren gemacht wurde, sprich vom Server zum Client kommt HTML, gegebenenfalls auch HTML-Schnipsel oder so ähnliches und man braucht das jetzt nicht in ein JSON-Format erstmal konvertieren und dann am Client wieder aus dem JSON dann irgendwie HTML machen oder DOM-Objekte machen.

00:13:12.620 --> 00:13:33.140
Das ist eben so recht revolutionär eigentlich. Revolutionär so hingegen, weil es halt wie das Wort revolutionär ist, am Ende rückwälzend, wird zurückgewälzt auf den Status, wo wir eben vom Server zum Client HTML geschickt haben und geht dann da sozusagen einen anderen Weg.

00:13:34.200 --> 00:14:01.080
Und mir persönlich hat es sehr gut gefallen, dass man dann sagt, man hat eben eine übliche HTML-Seite und kann dann kleine Schnipselchen eben interaktiver und ähnliches gestalten und muss sich das nicht so komplizierte Frameworks ranziehen wie React oder Vue. Das kann man mit einfachen Mitteln eine ganze Menge erreichen und das fand ich ganz cool, hab's mal ausprobiert in einem kleinen Projekt. Ja, und da bin ich jetzt hier, um ein bisschen davon zu erzählen.

00:14:03.780 --> 00:14:26.440
Ja, ich finde es auch super spannend. Ich habe ja schon seit einiger Zeit davon und genau, also wenn man sich anguckt, was sind die meistgesehenen Talks eben auf sowas wie, das ist auch der Grund, warum wir auf dich Thomas gekommen sind, irgendwie bei DjangoCon EU oder DjangoCon US, das ist halt HTMX, das ist halt ganz heiß irgendwie und ja, ich kann es auch sehr gut verstehen.

00:14:26.440 --> 00:14:47.180
Also ich habe irgendwann mal angefangen, mich auch mit diesen Frontend-Frameworks so ein bisschen zu beschäftigen und für mich war damals der Grund, warum ich das gemacht habe, dass ich gerne so ein UI-Anmutung gerne hätte wie bei einer nativen Applikation sozusagen.

00:14:47.180 --> 00:15:08.680
Also das hat man ja halt so früher eigentlich bei Webseiten nicht so wirklich gehabt, weil, naja, da hat man immer Request-Response-Cycle irgendwie und das dauert dann halt einfach und man sieht das auf jeden Fall, dass da was passiert und es ist halt nicht so schnell, als wenn man jetzt halt irgendwie eine, irgendwie in Anführungsstrichen klassische App hat, die halt irgendwie lokal auf dem Rechner läuft.

00:15:11.340 --> 00:15:24.060
Und für mich war das halt so, das Versprechen dieser quasi Frameworks, dass man das halt auch im Browser so hinkriegen kann, dass man da keine Latenz mehr hat und dass das halt alles super schnell ist und dass sich das anfühlt wie was Natives.

00:15:24.520 --> 00:15:40.720
Und das hatte mich interessiert und da dachte ich, okay, naja gut, wenn man das halt so machen muss, dann geht das halt nicht anders und dann muss ich halt dieses komische JavaScript-Zeugs da mitmachen. Okay, aber wenn ich dafür diese UI-Geschichte kriege, dann ist es das ja vielleicht wert.

00:15:41.340 --> 00:15:54.640
Weil das ist ja tatsächlich so ein bisschen so eine nervige Geschichte. Und ja, ich dachte eigentlich immer, der Grund, warum das bei normalen Web-Anwendungen oder Webseiten so ein Problem ist, lag an diesem Request-Response.

00:15:54.640 --> 00:15:56.560
weil es dauert halt irgendwie, je nachdem, wo ein Server

00:15:56.560 --> 00:15:58.540
steht, hat man allein Latenz

00:15:58.540 --> 00:16:00.220
bei einem Request von, weiß ich nicht,

00:16:00.400 --> 00:16:02.120
mindestens mal so 50 Millisekunden oder sowas

00:16:02.120 --> 00:16:04.400
und ich dachte, das liegt dann halt, das

00:16:04.400 --> 00:16:06.080
führt dann schon dazu, dass man das irgendwie dann,

00:16:06.460 --> 00:16:07.960
dass sich das dann langsam anfühlt und

00:16:07.960 --> 00:16:10.080
hab dann sogar solche Sachen eingebaut

00:16:10.080 --> 00:16:12.420
in meine ersten Versuche mit so

00:16:12.420 --> 00:16:14.580
diesen, also ich glaube, das erste

00:16:14.580 --> 00:16:16.560
hab ich tatsächlich React irgendwie am Anfang

00:16:16.560 --> 00:16:18.140
verwendet und

00:16:18.140 --> 00:16:20.300
hab dann immer irgendwie

00:16:20.300 --> 00:16:21.240
die Daten für,

00:16:22.040 --> 00:16:23.300
ich hatte so eine Liste

00:16:23.300 --> 00:16:25.220
von Dingen, wo ich Pagination hatte

00:16:25.220 --> 00:16:27.120
und dann habe ich die Daten für die nächsten,

00:16:27.320 --> 00:16:28.740
immer für die paar Seiten außen rum,

00:16:29.200 --> 00:16:31.320
immer schon gleich mitgefetcht, damit ich die nicht holen

00:16:31.320 --> 00:16:32.660
muss, weil ich dachte, wenn ich da auf einen

00:16:32.660 --> 00:16:35.140
sozusagen Link

00:16:35.140 --> 00:16:37.180
in Anführungsstrichen klicke und dann müssen Daten

00:16:37.180 --> 00:16:39.180
geholt werden, dann dauert das ja wieder lange und das will ich ja

00:16:39.180 --> 00:16:40.800
gar nicht, sondern ich will, dass das sofort da ist.

00:16:41.520 --> 00:16:42.740
Genau. Ja, und

00:16:42.740 --> 00:16:43.680
tatsächlich

00:16:43.680 --> 00:16:46.920
das habe ich jetzt auch, ich habe jetzt auch mit

00:16:46.920 --> 00:16:48.860
HTMLX so ein bisschen rumgespielt oder so und dann habe ich gemerkt,

00:16:48.980 --> 00:16:50.860
oh, das ist gar nicht der Punkt, das ist halt schnell genug.

00:16:51.400 --> 00:16:53.040
Also wenn das 50 Millisekunden dauert,

00:16:53.120 --> 00:16:54.160
dann reicht das vollkommen aus,

00:16:54.220 --> 00:16:55.540
dass sich das halt schnell anfühlt.

00:16:56.900 --> 00:16:57.280
Und...

00:16:57.280 --> 00:16:58.820
Also vielleicht hast du zu viele Daten

00:16:58.820 --> 00:16:59.740
dann sonst am Kleinen drin,

00:16:59.800 --> 00:17:00.860
die der dann handeln muss, oder?

00:17:01.780 --> 00:17:02.140
Nö, nö.

00:17:02.280 --> 00:17:03.160
Das ist einfach...

00:17:03.160 --> 00:17:04.060
Also meine Vorstellung,

00:17:04.460 --> 00:17:05.520
dass das halt daran liegt,

00:17:05.600 --> 00:17:07.700
dass die Langsamkeit von dem Netzwerk festkommt,

00:17:07.780 --> 00:17:08.860
war so nicht ganz korrekt.

00:17:09.060 --> 00:17:09.260
Okay.

00:17:09.820 --> 00:17:11.440
Sondern das liegt eigentlich...

00:17:11.440 --> 00:17:13.100
An der Interaktivität, oder?

00:17:13.240 --> 00:17:13.980
Das liegt daran,

00:17:14.140 --> 00:17:15.380
dass das komplette Browserfenster

00:17:15.380 --> 00:17:16.080
immer ausgetauscht wird.

00:17:16.360 --> 00:17:17.320
Das ist halt der Punkt.

00:17:17.420 --> 00:17:18.880
Und dass der Browser teilweise

00:17:18.880 --> 00:17:20.440
auch bei komplizierteren Seiten

00:17:20.440 --> 00:17:21.660
halt einfach lange braucht,

00:17:22.040 --> 00:17:23.640
um das wieder komplett neu zu rendern, was er ja tut.

00:17:23.640 --> 00:17:24.900
Ja, aber das Ganze rendern so lange dauert.

00:17:25.340 --> 00:17:27.640
Was ich ganz interessant fand von dem, was der Thomas gerade gesagt hat,

00:17:27.680 --> 00:17:29.720
war, dass er sagte, man muss das

00:17:29.720 --> 00:17:31.780
erst in JSON umwandeln von dem

00:17:31.780 --> 00:17:33.980
alten Zustand, damit man es wieder zurückdrehen

00:17:33.980 --> 00:17:36.180
kann. Das heißt, so der Urzustand

00:17:36.180 --> 00:17:37.880
ist halt ein anderer dann gewesen

00:17:37.880 --> 00:17:39.720
als JSON. Was ich jetzt, muss ich sagen, weil ich bin

00:17:39.720 --> 00:17:40.840
auch nicht so lange dabei wie ihr,

00:17:41.320 --> 00:17:43.840
gar nicht so unnatürlich finde, weil ich zum Beispiel

00:17:43.840 --> 00:17:45.920
jetzt aus Django Models immer direkt in JSON reinrendere

00:17:45.920 --> 00:17:47.760
oder so und halt diesen Umweg über die

00:17:47.760 --> 00:17:49.780
Templates gar nicht so häufig gehen musste.

00:17:50.880 --> 00:17:51.200
Deswegen

00:17:51.200 --> 00:17:53.520
ist das für mich so ein bisschen Umgewöhnung. Also ich finde

00:17:53.520 --> 00:17:55.780
das Django-Template-System sehr angenehm,

00:17:55.920 --> 00:17:57.680
weil es halt die ganzen Features von Django

00:17:57.680 --> 00:17:59.720
zurückholt, die man sonst verliert, wenn man

00:17:59.720 --> 00:18:01.780
halt Js macht. Aber ansonsten

00:18:01.780 --> 00:18:03.540
hat es für mich auch so einen Sinn, wenn man halt

00:18:03.540 --> 00:18:05.840
diese serialisierten Objekte durch die Gegend schicken kann.

00:18:07.440 --> 00:18:07.740
Und deswegen,

00:18:07.880 --> 00:18:09.520
also was meintest du denn, wenn du sagst, dass wir

00:18:09.520 --> 00:18:11.260
zurückdrehen? Also was wäre für dich denn so die...

00:18:11.260 --> 00:18:13.120
Also zurückdrehen, das war eher so

00:18:13.120 --> 00:18:15.380
zeitlich gemeint. Also dass man eben

00:18:15.380 --> 00:18:17.200
es so ähnlich

00:18:17.200 --> 00:18:19.180
macht, wie man es vor 10 Jahren

00:18:19.180 --> 00:18:20.020
oder so gemacht hat.

00:18:21.020 --> 00:18:23.180
Und das ist witzig, wenn man sich mit Leuten unterhält,

00:18:23.280 --> 00:18:24.140
die eben jetzt vor

00:18:24.140 --> 00:18:27.040
rund sieben, acht Jahren

00:18:27.040 --> 00:18:28.820
oder irgendwas Web-Anwendungen geschrieben haben,

00:18:28.880 --> 00:18:30.060
hatten die meistens alle

00:18:30.060 --> 00:18:32.900
eine kleine Hilfsbibliothek, die auf

00:18:32.900 --> 00:18:34.300
jQuery aufbaut.

00:18:34.940 --> 00:18:37.300
Und mit der hatten sie damals so HTML-Schnipsel

00:18:37.300 --> 00:18:39.120
irgendwie in bestimmten

00:18:39.120 --> 00:18:40.280
ja,

00:18:40.980 --> 00:18:42.080
ab und zu hin und her geschickt.

00:18:43.720 --> 00:18:45.200
Und alle dachten, oh, das ist

00:18:45.200 --> 00:18:47.060
dirty irgendwie und das ist nicht schön.

00:18:47.880 --> 00:18:58.160
Als das Angiola dann aufkam, dann dachte man, ah, das ist sauber, weil Jason geht da über die Leitung und deshalb ist das einfach besser, weil es schön ist und sauber ist.

00:18:59.540 --> 00:19:06.400
Aber diese Gleichung hat bei mir ein bisschen gebraucht, um dir aus dem Kopf rauszustreichen, dass das eigentlich Käse ist.

00:19:06.560 --> 00:19:11.080
Also warum soll das Jason jetzt besser sein oder schöner sein oder irgendwas?

00:19:12.220 --> 00:19:18.740
Also es ist viel pragmatischer, HTML-Schnipsel über die Leitung zu schicken.

00:19:20.240 --> 00:19:28.000
Ja, und das habe ich bei so einem kleinen oder zwei kleinen Projekten ausprobiert und funktioniert prima.

00:19:29.460 --> 00:19:34.260
Und ja, ich kann bloß sagen, dass es auch eine ganze Menge anderer Leute eben sozusagen auch sehen,

00:19:34.680 --> 00:19:38.400
die ihr gerade halt Leute, die aus dem eher Backend-Sprachen kommen,

00:19:38.400 --> 00:19:42.440
die eben Python oder Ruby oder irgendwas anderes programmieren,

00:19:42.520 --> 00:19:45.140
die haben in dem Bereich eben Spaß dran,

00:19:45.280 --> 00:19:48.700
weil sie dann in ihrer gewohnten Programmierumgebung bleiben können

00:19:48.700 --> 00:19:54.980
und brauchen jetzt nicht da sich diesen großen JavaScript-Stack anzutun.

00:19:55.320 --> 00:19:57.740
Sicherlich, das HTMLX selber ist auch in JavaScript geschrieben,

00:19:57.960 --> 00:20:02.980
aber das heißt jetzt ja nicht bloß, dass man dann mit JavaScript schreiben muss.

00:20:03.060 --> 00:20:05.980
Man kann es einfach, weil es rein deklarativ ist und das finde ich halt sehr schön.

00:20:06.340 --> 00:20:31.100
Da gibt es ein paar Attribute, mit denen man das HTML erweitern kann und dann kann man eben auch einzelne Bereiche auf so einer Seite austauschen. Man hat also eine große Seite und dann kann man eben drei, vier Bereiche haben und dann kann man in diesen Bereichen Interaktivität schaffen, indem man dort einen Button hat und dann tut sich aber halt auch bloß nur dieser kleine Bereich austauschen. Und das macht halt die Seite irgendwie, ja, sehr interaktiv.

00:20:31.100 --> 00:20:59.580
Ja, ja, das, was ich jetzt, ich habe gestern, vorgestern mal so ein bisschen damit rumgespielt und was ich, ich habe mein altes, meinen alten Use Case mir nochmal quasi versucht damit umzusetzen und das ist halt gar nicht so einen kleinen Teil austauschen, sondern quasi so den Hauptcontent auf einer Seite, also man hat quasi eine Liste von Dingen und zum Beispiel wie bei einem Podcast so die Episoden oder bei einem Blog die Artikel und jetzt paginated man da so durch.

00:21:00.240 --> 00:21:13.400
Und das hat, für mich war der Grund früher mal, warum ich gedacht habe, okay, ich muss mir das mal angucken mit den JavaScript-Frameworks, dass das halt dann schneller geht, wenn man das halt irgendwie schon, wenn man da nicht jedes Mal die Seite neu laden muss.

00:21:13.720 --> 00:21:32.220
Und das habe ich jetzt mit HTMLX gemacht und auch selbst, wenn man den kompletten Content der Seite austauscht, ist es immer noch sauschnell und man spürt da keinen Unterschied oder man hat nicht das Gefühl, dass man den kompletten Content ausgetauscht hat, sondern erst, wenn man tatsächlich die komplette Seite austauscht, dann wird es langsam.

00:21:32.220 --> 00:21:34.420
Ja, also Latenz ab so 100 Millisekunden merkst du halt dann

00:21:34.420 --> 00:21:36.400
und vorher ein bisschen drunter, also unter 50 oder

00:21:36.400 --> 00:21:38.300
ist auch super. Da merkt man das eigentlich nicht und das

00:21:38.300 --> 00:21:40.440
kann man durchaus schaffen, da drunter zu bleiben und das ist

00:21:40.440 --> 00:21:42.380
natürlich dann, und da dachte ich so, als ich das gemerkt

00:21:42.380 --> 00:21:44.140
habe, so okay, dass dieser Use-Kit geht auch damit,

00:21:44.220 --> 00:21:46.200
dachte ich so, wow, okay, dann

00:21:46.200 --> 00:21:48.380
entfällt für mich eigentlich der

00:21:48.380 --> 00:21:50.440
Grund für diese JavaScript-Dinger

00:21:50.440 --> 00:21:52.400
und dann. Also was mich halt noch interessieren würde,

00:21:52.440 --> 00:21:54.240
was ich jetzt noch nicht genau gesehen habe, aber es liegt wahrscheinlich

00:21:54.240 --> 00:21:56.300
daran, dass ich das nicht so eingebaut habe, kann ich das

00:21:56.300 --> 00:21:58.240
trotzdem so in Komponenten strukturieren, wie

00:21:58.240 --> 00:22:00.260
ich mir das vorstelle aus dem Vue.js raus

00:22:00.260 --> 00:22:01.700
und wie läuft das mit den ganzen

00:22:01.700 --> 00:22:05.480
netten Animation-Plugins

00:22:05.480 --> 00:22:07.320
und sowas ganzes irgendwie, muss ich

00:22:07.320 --> 00:22:09.220
das dann kleinteilig einbauen vom Server, hängt das dann

00:22:09.220 --> 00:22:11.200
drüber und wie werden die Sachen da wieder

00:22:11.200 --> 00:22:13.260
reingerendert, das habe ich immer noch nicht so ganz begriffen, weil

00:22:13.260 --> 00:22:15.220
also Vue.js rendert das ja auch irgendwie

00:22:15.220 --> 00:22:17.120
im Hintergrund einmal durch

00:22:17.120 --> 00:22:18.960
und tauscht dann die Teile aus

00:22:18.960 --> 00:22:20.100
im DOM

00:22:20.100 --> 00:22:22.960
und auf welcher Ebene muss ich das denn machen?

00:22:24.020 --> 00:22:24.900
Ja, man hat ja

00:22:24.900 --> 00:22:27.440
die ganz normalen HTML-Tags,

00:22:27.560 --> 00:22:29.140
also wenn du eine Seite hast

00:22:29.140 --> 00:22:31.020
und da sind irgendein

00:22:31.020 --> 00:22:33.020
drei interaktive Bereiche

00:22:33.020 --> 00:22:35.120
drin, dann wäre es

00:22:35.120 --> 00:22:36.980
eigentlich sinnvoll, du machst eine große Seite

00:22:36.980 --> 00:22:39.200
und dann da dreimal

00:22:39.200 --> 00:22:40.620
ein Form-Tag zum Beispiel

00:22:40.620 --> 00:22:43.020
und wenn du ein Submit

00:22:43.020 --> 00:22:45.020
für dieses Form macht, also für eins dieser

00:22:45.020 --> 00:22:47.120
Forms, dann werden

00:22:47.120 --> 00:22:48.800
die Daten dieses einzelnen,

00:22:48.840 --> 00:22:50.700
dieses einen Forms zum Server geschickt

00:22:50.700 --> 00:22:52.380
und kriegst die Antwort wieder zurück.

00:22:52.580 --> 00:22:55.340
Also dann, die Komponenten

00:22:55.340 --> 00:22:57.080
sind sozusagen HTML-Tags.

00:22:58.820 --> 00:22:59.620
Ja, also

00:22:59.620 --> 00:23:29.120
Also wenn du meinst, dass du sowas hast, also eben Vue und React, die machen das, da ist ja genau das, das ist ja ein ganz anderes Modell und wahlweise je nachdem aus welcher Geschichte man kommt, selber kommt es ein moderneres oder älteres, also eigentlich würde ich sagen, ist es halt ein ganz altes Modell, das ist halt eigentlich Client-Server und das ist eigentlich eher so Remote-Procedure-Call und der Client, der State bei den sozusagen in Anführungsstrichen modernen, aber eigentlich architekturmäßig alten,

00:23:29.620 --> 00:23:31.780
Anwendungen, die halt so ein bisschen

00:23:31.780 --> 00:23:33.760
wie die Client Server, der State der Applikation

00:23:33.760 --> 00:23:35.720
liegt halt in JavaScript, deswegen

00:23:35.720 --> 00:23:37.720
musst du auch, musst View das rendern, deswegen gibt es

00:23:37.720 --> 00:23:39.860
die Tablet-Sprache in, also JSX

00:23:39.860 --> 00:23:41.840
in React und so. Aber genau

00:23:41.840 --> 00:23:43.780
an der Stelle müssen wir jetzt vielleicht nochmal in die Historie

00:23:43.780 --> 00:23:45.740
gehen, weil ich glaube, jetzt haben wir so ein bisschen die kleine Einleitung gemacht,

00:23:46.140 --> 00:23:47.800
aber das wäre jetzt genau nochmal interessant zu wissen,

00:23:48.220 --> 00:23:49.660
was ist denn jetzt genau der Unterschied

00:23:49.660 --> 00:23:51.600
zwischen RPC

00:23:51.600 --> 00:23:53.000
und Client Server und

00:23:53.000 --> 00:23:55.660
Naja, also auch der Unterschied

00:23:55.660 --> 00:23:57.780
sozusagen zwischen JSON und HTML,

00:23:58.340 --> 00:24:01.360
ich muss auch sagen, ich finde

00:24:01.360 --> 00:24:03.420
JSON, ehrlich gesagt, so als

00:24:03.420 --> 00:24:05.340
Entwickler viel angenehmer,

00:24:05.480 --> 00:24:07.160
um damit zu arbeiten, als jetzt sowas wie

00:24:07.160 --> 00:24:08.840
XML oder HTML oder sowas.

00:24:09.720 --> 00:24:11.580
Oder überhaupt Markup Languages.

00:24:11.780 --> 00:24:13.440
Einfach deswegen, weil JSON

00:24:13.440 --> 00:24:14.980
halt viel einfacher ist.

00:24:15.360 --> 00:24:17.100
Zum Beispiel, also einer der wesentlichen Unterschiede,

00:24:17.220 --> 00:24:19.360
ein bisschen subtil, aber tatsächlich ist es halt das,

00:24:19.460 --> 00:24:21.260
was einem dann so extrem

00:24:21.260 --> 00:24:22.980
auf die Füße fallen kann oder

00:24:22.980 --> 00:24:24.920
was halt sehr viel Aufwand erzeugt, ist halt

00:24:24.920 --> 00:24:27.060
XML oder

00:24:27.060 --> 00:24:29.000
oder HTML, das ist halt ein Dokumentformat.

00:24:29.540 --> 00:24:31.040
Das ist halt nicht so, dass das einfach

00:24:31.040 --> 00:24:31.700
nur Daten sind.

00:24:32.860 --> 00:24:34.880
Das Gute ist natürlich auch, als Backend-Entwickler kann man natürlich sagen,

00:24:34.960 --> 00:24:37.020
wenn man sich mit dem Pixel-Schubser beschäftigt, sichert sich Frontend

00:24:37.020 --> 00:24:39.100
damit, man gibt denen einfach die Daten und dann ist gut,

00:24:39.180 --> 00:24:40.740
dann hat man damit nichts mehr zu tun. Das heißt, es gibt ja auch

00:24:40.740 --> 00:24:42.100
diese zwei Karton von Entwicklern.

00:24:42.540 --> 00:24:44.720
Das führt halt auch dazu, dass es nicht so

00:24:44.720 --> 00:24:46.740
mächtig ist,

00:24:46.860 --> 00:24:48.620
in gewisser Weise. Also der Hauptunterschied zwischen

00:24:48.620 --> 00:24:50.760
Dokument und Daten ist halt

00:24:50.760 --> 00:24:52.660
zum Beispiel die Reihenfolge.

00:24:53.220 --> 00:24:55.240
Du hast halt in einem Dokument eine Reihenfolge

00:24:55.240 --> 00:24:57.120
von Dingen. Da spielt es eine Rolle,

00:24:57.220 --> 00:24:58.260
ob Sachen vorne stehen oder hinten.

00:24:58.620 --> 00:25:01.080
Wenn ich in JSON irgendwie ein Objekt habe,

00:25:01.180 --> 00:25:03.040
dann ist das egal, ob das vorne

00:25:03.040 --> 00:25:05.020
steht oder hinten. Das sind immer die gleichen Daten.

00:25:05.940 --> 00:25:06.260
Und

00:25:06.260 --> 00:25:09.300
das macht es sehr schwer zu handeln,

00:25:09.400 --> 00:25:11.160
weil ich dann beim Parsen halt aufpassen muss

00:25:11.160 --> 00:25:13.100
und so. Aber auf der anderen Seite

00:25:13.100 --> 00:25:14.780
macht es halt auch sehr mächtig. Ich kann halt auch

00:25:14.780 --> 00:25:16.800
ja, also

00:25:16.800 --> 00:25:19.100
die Dinge quasi, die ich

00:25:19.100 --> 00:25:21.100
da anzeigen möchte, direkt drin beschreiben. Das kann ich

00:25:21.100 --> 00:25:23.020
so in JSON ja nicht machen. Aber in HTML

00:25:23.020 --> 00:25:23.540
kann ich das.

00:25:24.780 --> 00:25:26.640
Also in HTML kann ich halt ein Formular hinschreiben,

00:25:26.800 --> 00:25:27.580
das halt irgendwie

00:25:27.580 --> 00:25:30.760
einen Kontakt zum Beispiel anzeigt oder halt

00:25:30.760 --> 00:25:32.460
mir anzeigt, wie ich den ändern kann,

00:25:33.040 --> 00:25:34.640
ohne dass ich dazu sonst irgendwas

00:25:34.640 --> 00:25:36.540
wissen muss. Ja, genau, also du kannst ja tatsächlich auch den ganzen

00:25:36.540 --> 00:25:38.520
Datentyp verändern. Du musst ja jetzt nicht nur irgendwie

00:25:38.520 --> 00:25:40.080
ein JSON-Objekt durch ein anderes austauschen,

00:25:40.420 --> 00:25:42.620
sondern du kannst ja was ganz anderes dahin stellen auf einmal.

00:25:42.800 --> 00:25:44.240
Das heißt so magisch irgendwie.

00:25:45.640 --> 00:25:46.580
Ja, genau. Und bei JSON

00:25:46.580 --> 00:25:48.420
geht das halt nicht. Bei JSON musst du halt wissen,

00:25:48.540 --> 00:25:50.640
was das ist. Ansonsten funktioniert es nicht.

00:25:51.480 --> 00:25:52.700
Was mir bei JSON

00:25:52.700 --> 00:25:54.100
jetzt nicht so gefällt, dass halt

00:25:54.100 --> 00:26:01.340
Datentypen sind recht eingeschränkt. Also ordentliches Timedelta oder irgendwas.

00:26:01.340 --> 00:26:01.900
Ja.

00:26:01.900 --> 00:26:07.840
Da bin ich persönlich halt großer Freund von Postgres. Das ist enorm,

00:26:07.840 --> 00:26:14.140
was es da alles gibt in der relationalen Datenbank. Und da sind meine Daten eben

00:26:14.140 --> 00:26:20.480
gespeichert. Da kommen die her. Und dann will ich aus der SQL-Datenbank,

00:26:20.480 --> 00:26:23.620
irgendwie das beim Client anzeigen

00:26:23.620 --> 00:26:25.420
und da ist es

00:26:25.420 --> 00:26:27.500
relativ klar, wenn ich sage, ich mache

00:26:27.500 --> 00:26:29.540
aus dem SQL, mache ich

00:26:29.540 --> 00:26:31.260
HTML und das schicke ich zum Browser.

00:26:31.980 --> 00:26:33.520
Das ist relativ einfach.

00:26:33.900 --> 00:26:35.500
Also wenn ich da erstmal aus dem

00:26:35.500 --> 00:26:37.300
SQL JSON mache

00:26:37.300 --> 00:26:39.020
und dann mache ich aus dem JSON HTML,

00:26:40.020 --> 00:26:41.060
ist es einfach ein Schritt mehr.

00:26:42.140 --> 00:26:43.140
Und da frage ich mich, warum?

00:26:43.980 --> 00:26:44.440
Ja und

00:26:44.440 --> 00:26:47.540
es ist halt auch so, dass man dann

00:26:47.540 --> 00:26:49.500
die ganzen Probleme aus der alten Welt

00:26:49.500 --> 00:26:51.420
wiederbekommt, nämlich zum Beispiel, was ist

00:26:51.420 --> 00:26:53.180
wie, also deine

00:26:53.180 --> 00:26:55.360
Applikation muss jetzt natürlich das

00:26:55.360 --> 00:26:57.380
JSON verstehen und hat

00:26:57.380 --> 00:26:59.380
jetzt auch Versionen zum Beispiel. Also was ist denn,

00:26:59.700 --> 00:27:01.260
wenn jetzt kommt das JSON

00:27:01.260 --> 00:27:03.320
von heute sozusagen,

00:27:03.420 --> 00:27:05.140
aus irgendeinem Backend, aus irgendeiner Datenbank

00:27:05.140 --> 00:27:07.460
und die Applikation ist

00:27:07.460 --> 00:27:09.560
aber ein Jahr alt, weil ich halt jetzt, weiß ich nicht, keine Ahnung,

00:27:10.060 --> 00:27:11.480
ein Browserfenster irgendwie,

00:27:11.880 --> 00:27:13.140
ich habe einen Rechner irgendwie in die Ecke gelegt,

00:27:13.140 --> 00:27:15.100
der dann ein Jahr lang gelingen hat, jetzt klippe ich den wieder auf

00:27:15.100 --> 00:27:17.080
und jetzt, was macht die Applikation denn jetzt

00:27:17.080 --> 00:27:17.520
mit den Daten?

00:27:19.200 --> 00:27:20.660
Das wird wahrscheinlich nicht funktionieren.

00:27:21.180 --> 00:27:23.580
Das haut nicht hin und das hat man

00:27:23.580 --> 00:27:24.860
ja auch eigentlich in allen

00:27:24.860 --> 00:27:27.520
von diesen frontendlastigen

00:27:27.520 --> 00:27:29.320
Anwendungen, dass dann ab und zu

00:27:29.320 --> 00:27:31.500
so ein Pop-up kommt, bitte Seite neu

00:27:31.500 --> 00:27:33.060
laden, weil

00:27:33.060 --> 00:27:35.600
neue Software-Update oder irgendwas

00:27:35.600 --> 00:27:37.640
anders, so ein Browser-Reload dann sozusagen

00:27:37.640 --> 00:27:38.880
wie so ein Software-Update.

00:27:40.000 --> 00:27:41.020
Genau, das hat man in dem

00:27:41.020 --> 00:27:42.460
HTMX-Fall eigentlich

00:27:42.460 --> 00:27:45.900
Ja, das hat man in dem Rest-Web

00:27:45.900 --> 00:27:47.380
irgendwie sozusagen Fall.

00:27:47.480 --> 00:27:49.740
In dieser Architektur hat man das nicht, weil da gibt es das einfach nicht.

00:27:50.840 --> 00:27:51.700
Man kann prinzipiell

00:27:51.700 --> 00:27:53.640
auch auseinanderlaufen. Also wenn ich jetzt ein Formular

00:27:53.640 --> 00:27:55.340
einmal erstmal mir lade,

00:27:55.440 --> 00:27:56.280
ein HTML-Formular,

00:27:57.540 --> 00:27:59.180
und dann vergeht wirklich eine Menge,

00:27:59.580 --> 00:28:01.840
vergeht eben Zeit und es gibt ein Software-Update

00:28:01.840 --> 00:28:03.680
und dann mache ich bei mir einen Post

00:28:03.680 --> 00:28:05.680
von meinen Formulardaten, kann das prinzipiell

00:28:05.680 --> 00:28:07.740
ja auch gegen den Baum gehen, weil es dann nicht mehr hinhaut

00:28:07.740 --> 00:28:08.400
auf Server-Seite.

00:28:08.420 --> 00:28:11.620
Wenn sich tatsächlich an der Datenschema

00:28:11.620 --> 00:28:12.660
oder so irgendwas geändert hat.

00:28:14.140 --> 00:28:15.000
Okay, ja.

00:28:16.900 --> 00:28:20.660
Aber tatsächlich, ja, ja gut, okay, insofern.

00:28:20.980 --> 00:28:22.040
Ja, wir gehen einfach mal davon aus,

00:28:22.080 --> 00:28:24.120
dass man, wenn man Dinge irgendwie jahrelang da liegen lässt,

00:28:24.180 --> 00:28:25.060
man nicht davon ausgehen sollte,

00:28:25.140 --> 00:28:26.880
dass die einwandfrei so funktionieren wie am ersten Tag.

00:28:27.440 --> 00:28:31.080
Ja, ja, okay, aber du kriegst das Problem auch deutlich schneller.

00:28:31.520 --> 00:28:33.060
Also du hast halt dieses Problem plötzlich wieder.

00:28:33.420 --> 00:28:34.280
Du hast das Problem wieder,

00:28:34.400 --> 00:28:36.020
dass du deine Clients aktuell halten musst.

00:28:37.020 --> 00:28:39.920
Das war eigentlich sozusagen eine der großen Versprechungen

00:28:39.920 --> 00:28:41.820
von Webgeschichten, dass man sagt, das musst du nicht mehr machen.

00:28:41.880 --> 00:28:42.660
Also um nochmal zu drücken,

00:28:42.760 --> 00:28:44.980
also die alte Client-Server-Architektur bedeutet,

00:28:44.980 --> 00:28:57.500
Ich habe eine Hauptanwendung, einen Server, auf dem die ganzen Daten, die ganze Datenbank liegt und die Clients, die selbstgeschriebene Anwendungen sind, die auf anderen Rechnern laufen, die dann halt mit dem Server kommunizieren, die halt eine bestimmte Version haben.

00:28:57.580 --> 00:29:05.300
Und wenn ich jetzt irgendwas Neues veröffentliche, dann muss ich dafür sorgen, dass der jeweilige Client sich ein Update herunterlädt, seine Applikation aktualisiert, um wieder mit dem Server reden zu dürfen.

00:29:05.300 --> 00:29:11.640
Der Kern der Applikation ist eben nicht auf dem Server, sondern der Kern der Applikation ist halt auf dem Client. Und vom Server kommen nur Daten.

00:29:12.120 --> 00:29:16.140
Okay, also der Kern der Applikation bedeutet tatsächlich, ja, okay.

00:29:16.400 --> 00:29:17.980
Der State der Applikation, die Logik.

00:29:18.000 --> 00:29:19.620
Jetzt hast du schon wieder State gesagt.

00:29:19.720 --> 00:29:22.540
Ich glaube, das haben wir auch noch nicht so richtig beschrieben.

00:29:22.680 --> 00:29:24.360
Was ist denn ein State überhaupt?

00:29:24.680 --> 00:29:30.800
Also die Wahrheit vielleicht über das, was gerade ist.

00:29:31.400 --> 00:29:34.860
Ja, also sozusagen die Information, wenn du jetzt eine Liste von Kontakten hast,

00:29:34.860 --> 00:29:39.620
zum Beispiel irgendwie in einer Applikation, wo liegt diese Liste?

00:29:39.860 --> 00:29:42.640
wie hast du die sortiert, welche hast du wieder rausgeschmissen

00:29:42.640 --> 00:29:44.280
und wer kennt das? Kennt das

00:29:44.280 --> 00:29:46.400
der Client selber oder kennt

00:29:46.400 --> 00:29:47.720
das auch oder nur der Server?

00:29:48.880 --> 00:29:50.380
Und das ist der Unterschied. Ja, quasi bei

00:29:50.380 --> 00:29:52.520
Client-Server liegt es halt beim Client.

00:29:52.840 --> 00:29:54.320
Ja, oder es könnte auch vom Server liegen. Also der große

00:29:54.320 --> 00:29:55.980
Unterschied zu Web ist jetzt sozusagen,

00:29:56.340 --> 00:29:58.180
okay, jetzt rede ich über Dinge, von denen ich keine Ahnung habe,

00:29:58.280 --> 00:30:00.260
aber der große Unterschied ist halt, das liegt

00:30:00.260 --> 00:30:01.260
halt in dem

00:30:01.260 --> 00:30:03.060
HTML selber.

00:30:03.960 --> 00:30:06.360
Das ist halt der große Unterschied

00:30:06.360 --> 00:30:08.080
zu allem, was früher war. Das ist halt sozusagen dieser

00:30:08.080 --> 00:30:10.060
revolutionäre Schritt. Das

00:30:10.060 --> 00:30:11.820
hat man vorher, soweit ich weiß,

00:30:12.000 --> 00:30:12.760
noch nie gemacht.

00:30:14.060 --> 00:30:15.880
Und das ist neu in HTML.

00:30:16.480 --> 00:30:17.780
Und mit REST, sozusagen.

00:30:19.060 --> 00:30:19.960
Na gut, ich kenne

00:30:19.960 --> 00:30:22.080
auch die Frage, was

00:30:22.080 --> 00:30:23.980
man will. Also, ob man jetzt so

00:30:23.980 --> 00:30:26.080
eine Seite will,

00:30:26.320 --> 00:30:28.100
eine Seite, die sich eben super

00:30:28.100 --> 00:30:30.220
schnell lädt, weil der Nutzer

00:30:30.220 --> 00:30:31.940
bei Google was danach gesucht hat und

00:30:31.940 --> 00:30:34.260
dann folgt er dem Link, der ihm angezeigt

00:30:34.260 --> 00:30:36.020
wird und dann, zack, will er die Seite da haben

00:30:36.020 --> 00:30:38.140
und will die Seite geöffnet haben und sehen.

00:30:38.280 --> 00:30:39.040
Und da ist halt ganz wichtig,

00:30:40.360 --> 00:30:41.680
dass, ja,

00:30:42.140 --> 00:30:44.060
was jetzt Google mit den Web-Visals oder

00:30:44.060 --> 00:30:45.880
irgendwas so abprüft, dass zack,

00:30:46.000 --> 00:30:48.220
diese First-Time-User-Experience gut ist,

00:30:48.340 --> 00:30:49.580
zack, die Seite soll sich schnell laden.

00:30:50.720 --> 00:30:52.140
Und witzigerweise gibt es

00:30:52.140 --> 00:30:53.820
ein Produkt von dem gleichen

00:30:53.820 --> 00:30:55.860
Großkonzern, Google,

00:30:56.320 --> 00:30:57.180
zum Beispiel Gmail.

00:30:58.040 --> 00:31:00.020
Und wenn ich Gmail starte, sehe ich erstmal

00:31:00.020 --> 00:31:01.000
einen Wartebalken.

00:31:01.720 --> 00:31:03.040
Das geht mir natürlich als Nutzer eigentlich

00:31:03.040 --> 00:31:03.560
Eier auf den Keks.

00:31:05.260 --> 00:31:06.820
Sehe ich erstmal, wie sich die ganze

00:31:06.820 --> 00:31:08.960
Anwendung lädt und das will ich

00:31:08.960 --> 00:31:10.820
nicht. Also ich will im Endeffekt, will ich auch

00:31:10.820 --> 00:31:13.080
gar nicht so eine Native GUI

00:31:13.080 --> 00:31:14.920
im Web haben eigentlich.

00:31:15.020 --> 00:31:16.320
Ich will zack, dass die Seite da ist.

00:31:17.960 --> 00:31:18.320
Und

00:31:18.320 --> 00:31:20.940
drum ist die Frage eigentlich,

00:31:21.340 --> 00:31:23.080
was man will. Sicherlich gibt es Anwendungen,

00:31:23.520 --> 00:31:24.680
gibt es Anwendungen, die tut man

00:31:24.680 --> 00:31:26.580
als Anwender eben morgens starten

00:31:26.580 --> 00:31:28.860
und die tut man abends dann wieder schließen

00:31:28.860 --> 00:31:29.300
oder so.

00:31:30.300 --> 00:31:32.160
Dann ist es okay.

00:31:32.440 --> 00:31:35.800
Was ich will, ist ein Nutzererlebnis.

00:31:36.200 --> 00:31:37.940
Also ja, das ist natürlich schon, dass es schnell da ist.

00:31:38.020 --> 00:31:39.260
Es muss schnell irgendwas passieren.

00:31:39.600 --> 00:31:41.580
Aber ich brauche nicht direkt sofort den ganzen Content,

00:31:41.740 --> 00:31:43.560
sondern ich will da so reingeführt werden,

00:31:43.760 --> 00:31:46.180
dass ich willkommen bin, dass ich eingestimmt werde,

00:31:46.260 --> 00:31:47.020
auf was da funktioniert.

00:31:47.780 --> 00:31:50.040
Na gut, aber das liegt halt im Use Case.

00:31:50.200 --> 00:31:52.600
Da denke ich drauf an, was das für eine Applikation ist,

00:31:53.680 --> 00:31:54.960
die man da, oder was der Use Case ist.

00:31:55.480 --> 00:31:58.760
Und für die allermeisten Web-Use Cases ist es halt wichtiger,

00:31:58.760 --> 00:32:00.640
dass man quasi von, dass man

00:32:00.640 --> 00:32:02.660
das auch, dass man zum Beispiel auf Links klicken kann

00:32:02.660 --> 00:32:04.800
und dann halt auf eine andere Seite kommt und da irgendwas macht.

00:32:05.300 --> 00:32:06.680
Ja, genau, dass man halt einfach was

00:32:06.680 --> 00:32:07.800
Und das geht ja auch mit

00:32:07.800 --> 00:32:10.460
diesem Modell, dass dein

00:32:10.460 --> 00:32:11.820
Client halt irgendwie

00:32:11.820 --> 00:32:14.700
eine richtige Applikation ist, funktioniert das

00:32:14.700 --> 00:32:16.660
halt nicht mehr. Das bricht halt

00:32:16.660 --> 00:32:18.340
die Links im Web im Grunde, weil

00:32:18.340 --> 00:32:20.720
wenn du jetzt hinter jedem

00:32:20.720 --> 00:32:22.260
Link erstmal irgendwie ein paar Megabyte

00:32:22.260 --> 00:32:24.680
großes JavaScript-Wandel liegt, was du laden

00:32:24.680 --> 00:32:26.500
musst und dann erstmal ein Ladebalken eingezeigt wird

00:32:26.500 --> 00:32:28.640
und dann ich initialisiere die Applikation,

00:32:28.760 --> 00:32:31.280
dann macht es keinen Spaß mehr, auf Links zu klicken.

00:32:31.700 --> 00:32:34.540
Also das mit den Links und dass man von einer Seite auf die andere kommt,

00:32:34.600 --> 00:32:40.000
das funktioniert nur, wenn da nicht jedes Mal megabyteweise Zeugs rüberkommt

00:32:40.000 --> 00:32:46.700
und initialisiert werden muss und nicht irgendwie ein komplexes User-Interface hochgefahren wird,

00:32:46.740 --> 00:32:47.960
sondern wenn es halt was Einfaches ist.

00:32:48.440 --> 00:32:51.680
Auf der anderen Seite ist natürlich diese Vernetzung auch total interessant und cool.

00:32:52.680 --> 00:32:54.900
Ja, ich meine, die großen

00:32:54.900 --> 00:32:56.580
Web-Frameworks, die

00:32:56.580 --> 00:32:58.940
wie React und Vue, die haben das ja auch erkannt

00:32:58.940 --> 00:32:59.840
und jetzt versuchen die

00:32:59.840 --> 00:33:02.180
serverseitig zu rendern.

00:33:02.900 --> 00:33:04.860
Dann gibt es dieses mit Hydration und

00:33:04.860 --> 00:33:06.140
Dehydration oder

00:33:06.140 --> 00:33:08.440
Serverseit-Rendering und den ganzen Späßen.

00:33:08.480 --> 00:33:10.600
Moment, was ist Hydration, was ist Dehydration,

00:33:10.720 --> 00:33:12.780
was ist Serverseit-Rendering in dem Fall?

00:33:13.500 --> 00:33:13.940
Gemeint?

00:33:15.100 --> 00:33:16.760
Naja, also du benutzt im Grunde

00:33:16.760 --> 00:33:18.600
Node.js auf dem Server, um halt

00:33:18.600 --> 00:33:20.800
dein, also du hast ja

00:33:20.800 --> 00:33:22.560
meistens dann auch so eine Template-Sprache, so ähnlich wie

00:33:22.560 --> 00:33:24.600
Django-Templates bloß halt in JavaScript, also

00:33:24.600 --> 00:33:26.360
JSX oder weiß nicht, wie das bei Vue heißt,

00:33:26.500 --> 00:33:28.660
keine Ahnung. Und du kannst

00:33:28.660 --> 00:33:30.320
das ja jetzt, du kannst es im Browser rendern,

00:33:30.700 --> 00:33:32.520
ja, da läuft JavaScript, was seine

00:33:32.520 --> 00:33:34.080
Templates nimmt und dann halt

00:33:34.080 --> 00:33:36.660
quasi mit den Daten, die es über JSON oder sonst irgendwie bekommt,

00:33:37.100 --> 00:33:38.620
halt dann HTML rausrendert.

00:33:39.020 --> 00:33:40.540
Du kannst das aber auch auf dem Server rendern. Du kannst

00:33:40.540 --> 00:33:42.460
ja da ja Node.js laufen lassen, dann kannst du auch Templates nehmen

00:33:42.460 --> 00:33:44.420
und dann halt auch HTML rausrendern.

00:33:44.780 --> 00:33:46.580
Und das HTML, was du da rausrenderst, kannst du

00:33:46.580 --> 00:33:48.240
auch einfach so an den Kleinen schicken.

00:33:48.940 --> 00:33:50.500
Sodass das Rendering halt nicht bei dir im Browser

00:33:50.500 --> 00:33:52.440
passiert, sondern auf dem Server. Deswegen Server

00:33:52.440 --> 00:33:54.040
Side Rendering. Das ist halt dann für kürzere

00:33:54.040 --> 00:33:56.340
Antwortzeiten. Ja, ja, also

00:33:56.340 --> 00:33:58.320
dann fühlt es sich für deinen Browser, ist es dann so wie

00:33:58.320 --> 00:34:00.320
eine klassische, wie so

00:34:00.320 --> 00:34:02.260
eine Django-Webseite oder so und

00:34:02.260 --> 00:34:04.360
dann aber schiebt der Server

00:34:04.360 --> 00:34:06.400
dir ja doch dann doch irgendwie so ein JavaScript-Bundle

00:34:06.400 --> 00:34:08.260
dahin und dann wird das ersetzt und

00:34:08.260 --> 00:34:10.240
ich weiß nicht, ehrlich gesagt, ich weiß jetzt auch nicht genau, wie das

00:34:10.240 --> 00:34:12.240
funktioniert mit dem Hydration oder so. Genau, aber

00:34:12.240 --> 00:34:14.260
was ist jetzt das Hydration? Ich nehme mal an,

00:34:14.340 --> 00:34:15.360
dass das ist irgendwie so

00:34:15.360 --> 00:34:18.060
sozusagen, dass

00:34:18.060 --> 00:34:20.260
dieser reine, das hat ja mal etwas gekriegt,

00:34:20.320 --> 00:34:22.180
das ist quasi in Anführungszeichen irgendwie trocken

00:34:22.180 --> 00:34:24.700
und weil es halt so statisch ist

00:34:24.700 --> 00:34:26.580
und ich nehme mal an, dass sie mit Hydration meinen,

00:34:27.080 --> 00:34:28.520
du schickst halt den Bundle dahin

00:34:28.520 --> 00:34:30.700
und wenn das Bundle da ist, dann sagst du, okay, jetzt gib mir die Daten

00:34:30.700 --> 00:34:32.600
per JSON und dann rendert es das halt auf den

00:34:32.600 --> 00:34:34.560
Client selber. Das ist das, was zum Beispiel

00:34:34.560 --> 00:34:36.300
bei Vue.js in so Komponenten passiert, wenn da

00:34:36.300 --> 00:34:38.420
bestimmte Teile im DOM

00:34:38.420 --> 00:34:40.360
getauscht werden, so HTML-Schnipsel von

00:34:40.360 --> 00:34:41.880
Antworten vom Server dann auch.

00:34:42.700 --> 00:34:44.660
Nee, nee, das muss man bloß, das ist bloß

00:34:44.660 --> 00:34:45.780
on top sozusagen, also

00:34:45.780 --> 00:34:48.300
das ist bloß, wenn du es optimieren willst, also

00:34:48.300 --> 00:34:50.440
das ist bloß für den

00:34:50.440 --> 00:34:52.660
Fall, wenn du feststellst, eine Vue-Anwendung,

00:34:53.360 --> 00:34:54.820
die ist eben jetzt nicht so schnell

00:34:54.820 --> 00:34:56.120
für den First-Time-User,

00:34:56.720 --> 00:34:58.840
dann kannst du dieses Hydration-Dehydration

00:34:58.840 --> 00:35:00.140
einsetzen, um

00:35:00.140 --> 00:35:02.640
diesen ersten Seitenaufruf zu

00:35:02.640 --> 00:35:04.740
beschleunigen. Ja, und sozusagen als Browser,

00:35:04.840 --> 00:35:05.900
wenn du auf so eine Seite,

00:35:06.220 --> 00:35:08.220
wenn du jetzt zum Beispiel Nuxt nimmst bei Vue

00:35:08.220 --> 00:35:10.560
und machst da Server-Site-Rendering,

00:35:11.100 --> 00:35:12.800
dann dein Browser kriegt einfach nur

00:35:12.800 --> 00:35:14.860
HTML und zeigt das an, wie bei jeder anderen Seite

00:35:14.860 --> 00:35:15.140
auch.

00:35:16.480 --> 00:35:18.400
Für den, der führt kein

00:35:18.400 --> 00:35:20.060
JavaScript erstmal aus.

00:35:21.860 --> 00:35:22.920
Nur dann später.

00:35:23.120 --> 00:35:24.760
Also die Frage ist, wo es gerendert wird.

00:35:24.900 --> 00:35:26.640
Bei Server-Side-Rendering wird es auf dem Server gerendert

00:35:26.640 --> 00:35:28.760
und bei irgendwann später,

00:35:28.760 --> 00:35:30.460
wenn das Bundle da ist, was halt aber

00:35:30.460 --> 00:35:32.620
megabyteweise Zeug sein kann, ja das dauert halt,

00:35:32.700 --> 00:35:34.680
bis das da ist, dann wird wieder

00:35:34.680 --> 00:35:36.660
auf dem Client gerendert und dann werden nur die Daten

00:35:36.660 --> 00:35:38.480
per JSON geholt und das ist,

00:35:38.860 --> 00:35:40.800
denke ich, das, was mit Hydration gemeint ist.

00:35:41.560 --> 00:35:42.640
Und die Sache ist,

00:35:42.660 --> 00:35:44.320
es ist ja schön, dass man das alles machen kann.

00:35:45.140 --> 00:35:46.700
Und die Frage ist aber, ob man

00:35:46.700 --> 00:35:48.900
will. Und da

00:35:48.900 --> 00:35:50.680
bin ich eben vielleicht auch

00:35:50.680 --> 00:35:52.680
zu alt oder zu steif.

00:35:52.800 --> 00:35:54.420
Ich verwende seit Jahren

00:35:54.420 --> 00:35:56.620
Python und bin mit der Sprache sehr zufrieden.

00:35:57.880 --> 00:35:58.560
Und dass ich jetzt

00:35:58.560 --> 00:36:00.180
JavaScript, die Sprache, die mir

00:36:00.180 --> 00:36:02.280
eh nicht so 100% sympathisch ist,

00:36:02.360 --> 00:36:04.300
jetzt auch noch auf dem Server einsetze

00:36:04.300 --> 00:36:06.160
oder irgendwas, habe ich eben

00:36:06.160 --> 00:36:07.560
persönlich keinen Bock drauf.

00:36:08.960 --> 00:36:10.380
Und darum habe ich

00:36:10.380 --> 00:36:12.340
das Schöne ist ja, ich habe da angefangen

00:36:12.340 --> 00:36:13.560
im privaten Kontext auch

00:36:13.560 --> 00:36:16.240
für jemanden eine Seite machen

00:36:16.240 --> 00:36:17.940
wollen und

00:36:17.940 --> 00:36:19.500
so ein Bestellsystem

00:36:19.500 --> 00:36:22.340
und das Schöne, da hatte ich einfach Zeit

00:36:22.340 --> 00:36:24.280
und es war auch kein Druck

00:36:24.280 --> 00:36:26.360
irgendwie da und auch keiner, der gesagt

00:36:26.360 --> 00:36:28.020
hat, Thomas, nimm die oder jene Tools.

00:36:28.460 --> 00:36:30.560
Wenn man da Zeit hat, kann man wirklich mal nochmal recherchieren

00:36:30.560 --> 00:36:32.480
und auch sagen, nee, so möchte

00:36:32.480 --> 00:36:34.320
ich es jetzt nicht machen, ich will es jetzt so

00:36:34.320 --> 00:36:36.280
machen und dann habe ich erstmal ewig

00:36:36.280 --> 00:36:38.240
gesucht, bis ich überhaupt was gefunden habe

00:36:38.240 --> 00:36:39.740
und durch Zufall bin ich eben auf das

00:36:39.740 --> 00:36:42.180
HTMX dann gestoßen. Inzwischen ist es

00:36:42.180 --> 00:36:43.360
auch populärer, inzwischen wird man

00:36:43.360 --> 00:36:45.240
steuert man selbstständig

00:36:45.240 --> 00:36:47.260
drüber. Vor mehr als einem Jahr war das

00:36:47.260 --> 00:36:48.140
eben noch recht unbekannt.

00:36:49.220 --> 00:36:50.860
Gut, und da war es halt eine coole

00:36:50.860 --> 00:36:53.240
Sache und gerade wenn man

00:36:53.240 --> 00:36:53.540
halt

00:36:53.540 --> 00:36:56.900
sagt, man selber ist in

00:36:56.900 --> 00:36:58.420
Backendsprache

00:36:58.420 --> 00:36:59.800
damit vertraut,

00:37:01.120 --> 00:37:03.340
dann macht das eigentlich großen Sinn,

00:37:03.460 --> 00:37:05.060
weil dann kann man das auch sehr

00:37:05.060 --> 00:37:06.860
leicht verwalten, diesen Stack.

00:37:07.360 --> 00:37:08.720
Ansonsten, ja,

00:37:09.060 --> 00:37:11.100
sicherlich kann man das machen. Ich glaube auch, dass das

00:37:11.100 --> 00:37:12.980
prima funktioniert mit dem Vue und React

00:37:12.980 --> 00:37:14.960
und so alles. Aber wenn

00:37:14.960 --> 00:37:16.900
man das selber alles in der Kontrolle haben

00:37:16.900 --> 00:37:18.960
will, also ich kenne es selber jetzt beruflich

00:37:18.960 --> 00:37:20.160
zum Beispiel, nutzen wir auch

00:37:20.160 --> 00:37:22.640
VGS und

00:37:22.640 --> 00:37:24.000
das ist dann manchmal so,

00:37:24.680 --> 00:37:26.720
dann ist der Frontend-Entwickler

00:37:26.720 --> 00:37:28.840
sozusagen oder dass da einer mal krank

00:37:28.840 --> 00:37:30.940
oder im Urlaub oder irgendwas und dann klemmt es

00:37:30.940 --> 00:37:32.880
Frontend-seitig, obwohl Backend-Kapazität

00:37:32.880 --> 00:37:34.740
dabei und dann ist es vielleicht mal andersrum oder

00:37:34.740 --> 00:37:36.720
irgendwas. Das ist doch eigentlich

00:37:36.720 --> 00:37:38.660
schöner, wenn man da sagt, okay, ich mache wirklich

00:37:38.660 --> 00:37:40.780
eben Fullstack vom HTML

00:37:40.780 --> 00:37:42.780
bis zur Datenbank, habe ich

00:37:42.780 --> 00:37:44.700
alles unter Kontrolle und da finde ich

00:37:44.700 --> 00:37:46.720
diese Trennung zwischen Frontend-Entwickler

00:37:46.720 --> 00:37:48.300
und Backend-Entwickler, das ist so wie

00:37:48.300 --> 00:37:51.120
so eine komische Diskriminierung,

00:37:51.340 --> 00:37:52.200
wie, ja,

00:37:53.100 --> 00:37:54.800
muss eigentlich nicht sein, also ja.

00:37:56.060 --> 00:37:56.260
Ja.

00:37:57.500 --> 00:37:58.820
Ja, ja, ich würde auch

00:37:58.820 --> 00:38:00.540
sagen, also normalerweise ist diese Unterscheidung

00:38:00.540 --> 00:38:02.760
von der Backend eigentlich halt hauptsächlich irgendwie, es gibt halt

00:38:02.760 --> 00:38:03.320
Leute, die

00:38:03.320 --> 00:38:06.700
JavaScript mögen und es gibt andere Leute, die

00:38:06.700 --> 00:38:08.140
JavaScript fullback finden und

00:38:08.140 --> 00:38:10.440
das ist halt so schon mal, also

00:38:10.440 --> 00:38:12.280
ja.

00:38:12.500 --> 00:38:14.920
Alle Leute, die liebe JavaScript-Liebe haben,

00:38:14.980 --> 00:38:15.840
die bitte einmal aufzeigen.

00:38:16.860 --> 00:38:18.020
Ja, na ja, gut.

00:38:19.160 --> 00:38:20.960
Das ist übrigens auch so ein Ding.

00:38:21.160 --> 00:38:22.800
Also ich meine, im Grunde die Entwicklung

00:38:22.800 --> 00:38:24.580
wird da getrieben von, also weil in der

00:38:24.580 --> 00:38:26.560
JavaScript-Welt, und ich höre da ja auch

00:38:26.560 --> 00:38:28.520
ab und zu Dinge, da

00:38:28.520 --> 00:38:30.680
geht man jetzt sozusagen schon in die Richtung zu

00:38:30.680 --> 00:38:32.620
sagen, ah ja, also wir sind jetzt eigentlich

00:38:32.620 --> 00:38:34.640
weit genug, warum machen wir nicht JavaScript

00:38:34.640 --> 00:38:36.740
also komplett, also auch im Server vor allen Dingen.

00:38:36.740 --> 00:38:38.320
Es gibt ja eigentlich keinen Grund mehr, das nicht zu verwenden.

00:38:38.980 --> 00:38:40.680
Ich würde sagen, schon, doch gibt es Gründe, das nicht

00:38:40.680 --> 00:38:42.240
zu verwenden. Aber

00:38:42.240 --> 00:38:44.640
diesen Druck, den gibt es

00:38:44.640 --> 00:38:45.400
schon sehr stark.

00:38:46.680 --> 00:38:47.800
Aber nochmal vielleicht ganz kurz, ich würde

00:38:47.800 --> 00:38:49.360
ganz kurz nochmal

00:38:49.360 --> 00:38:52.080
da ansetzen, wo wir eben waren,

00:38:52.460 --> 00:38:54.480
weil man kann

00:38:54.480 --> 00:38:56.360
jetzt mit diesen Frameworks natürlich auch Server-Side-Rendering machen,

00:38:56.540 --> 00:38:58.600
nur das löst die Probleme nicht.

00:38:59.160 --> 00:39:00.080
Also wenn

00:39:00.080 --> 00:39:01.680
alle Webseiten

00:39:01.680 --> 00:39:03.500
irgendwie fette

00:39:03.500 --> 00:39:06.560
Dinger wären mit Server-Side-Rendering,

00:39:07.060 --> 00:39:08.600
würde das Web so nicht mehr funktionieren.

00:39:08.600 --> 00:39:09.740
Das würde kaputt gehen.

00:39:10.580 --> 00:39:12.560
Und das ist halt irgendwie, weil du musst

00:39:12.560 --> 00:39:14.580
diese Megabyte-Daten ja immer noch durch die Gegend

00:39:14.580 --> 00:39:16.420
schieben. Auch wenn das dir jetzt nicht mehr so

00:39:16.420 --> 00:39:17.180
auffällt, aber

00:39:17.180 --> 00:39:20.060
werden halt dauernd die gleichen

00:39:20.060 --> 00:39:22.420
minifizierten JavaScript-Dinger

00:39:22.420 --> 00:39:24.520
durch die Gegend geschoben. Wenn du von einer Seite auf die

00:39:24.520 --> 00:39:26.720
andere gehst, immer das gleiche Zeug, Megabyte-weise.

00:39:26.960 --> 00:39:28.540
Das ist einfach total verrückt.

00:39:28.560 --> 00:39:30.480
Weil ich nicht die einzelnen Teile

00:39:30.480 --> 00:39:31.420
vom Dom nur tausche?

00:39:32.480 --> 00:39:34.920
Ja, weil du musst halt die komplette Applikation

00:39:34.920 --> 00:39:36.220
schickst du halt in der Gegend rum.

00:39:36.220 --> 00:39:36.460
Ja?

00:39:37.660 --> 00:39:40.100
Und die Applikation ist ja in weiten Teilen

00:39:40.100 --> 00:39:41.580
immer die gleiche.

00:39:41.860 --> 00:39:43.960
Aber so viel ist es ja nicht. Ich meine, es wird ja dann

00:39:43.960 --> 00:39:45.940
gecached und ich kann mir vorstellen,

00:39:46.120 --> 00:39:47.200
dass die ersten drei Bilder

00:39:47.200 --> 00:39:50.040
jeder Webseite dann größer sind

00:39:50.040 --> 00:39:52.020
als das ganze JavaScript-Spaß.

00:39:52.320 --> 00:39:53.800
Also ich hätte jetzt auch tatsächlich irgendwie

00:39:53.800 --> 00:39:56.020
intuitiv gedacht, dass man das halt auch mit VJS zum Beispiel

00:39:56.020 --> 00:39:57.360
so löst, dass man dann eben nur

00:39:57.360 --> 00:39:59.820
den einzelnen kleinen Bestandteil

00:39:59.820 --> 00:40:01.580
dann innerhalb dieser Komponente

00:40:01.580 --> 00:40:02.740
neu rendert.

00:40:02.740 --> 00:40:04.500
Nee, du musst immer, also ich weiß nicht genau,

00:40:04.580 --> 00:40:06.300
es gibt noch so Geschichten,

00:40:06.440 --> 00:40:08.320
da bin ich jetzt aber auch nicht vertraut mit, dass du

00:40:08.320 --> 00:40:10.600
so dieses Hot-Module, du kannst halt

00:40:10.600 --> 00:40:12.560
teilweise mit, es gibt so

00:40:12.560 --> 00:40:14.440
Exima-Skript jetzt Module irgendwie auch

00:40:14.440 --> 00:40:16.500
und manchmal kannst du halt, musst du

00:40:16.500 --> 00:40:18.500
für manche Seiten, kannst du Module nachladen und so,

00:40:18.580 --> 00:40:20.600
aber bisher der klassische Weg

00:40:20.600 --> 00:40:22.460
war halt, du baust deine komplette

00:40:22.460 --> 00:40:24.580
Applikation in einen JavaScript-File und das

00:40:24.580 --> 00:40:25.140
lieferst du aus.

00:40:26.420 --> 00:40:28.040
Und solange du das nicht hast, geht gar nichts.

00:40:30.460 --> 00:40:32.640
Und ja, also wenn deine

00:40:32.640 --> 00:40:34.300
Applikation, also ich meine gut,

00:40:34.300 --> 00:40:35.980
sie muss nicht über Megabyte groß sein, aber

00:40:35.980 --> 00:40:38.280
ja, wenn, also

00:40:38.280 --> 00:40:39.560
ist schon groß und

00:40:39.560 --> 00:40:42.180
oft ist View

00:40:42.180 --> 00:40:43.940
drin oder React und dann halt die

00:40:43.940 --> 00:40:46.200
Bibliotheken, die alle verwenden. Und das Zeug wird halt

00:40:46.200 --> 00:40:48.040
bei jedem, wenn du auf eine andere Seite gehst,

00:40:48.100 --> 00:40:50.160
wird das halt immer mit übermittelt. Und das ist ja

00:40:50.160 --> 00:40:51.700
eigentlich vollkommen verrückt ineffizient.

00:40:52.080 --> 00:40:52.880
Also das ist ja eigentlich,

00:40:54.080 --> 00:40:55.800
tut einem ja weh, wenn man sich das so überlegt.

00:40:56.440 --> 00:40:57.100
Das ist das, was das bedeutet.

00:40:58.100 --> 00:41:00.260
Eigentlich wollten wir ja über HDMIX reden und nicht über

00:41:00.260 --> 00:41:01.820
nicht über Renderfix. Genau, richtig.

00:41:01.940 --> 00:41:02.900
Nicht was anderes irgendwie.

00:41:02.900 --> 00:41:03.700
Ja, okay.

00:41:04.460 --> 00:41:04.940
Genau.

00:41:07.880 --> 00:41:13.220
Ja, wie funktioniert das denn bei HTMX?

00:41:15.080 --> 00:41:17.140
Ja, wollen wir mal so ein Beispiel besprechen?

00:41:18.020 --> 00:41:20.940
Ja, also wir können mal ein Beispiel besprechen.

00:41:21.940 --> 00:41:27.520
Am besten, man gibt dann selber mal HTMX einfach in seine bevorzugte Suchmaschine ein

00:41:27.520 --> 00:41:30.580
und dann kommt man auf die Seite und da gibt es auch ein paar Beispiele.

00:41:30.820 --> 00:41:33.560
Oben in der Kopfleiste ist es zu sehen, ein paar Examples.

00:41:34.140 --> 00:41:57.760
Und ein Beispiel ist zum Beispiel Click2Edit. Das ist glaube ich mit das erste. Da hat man erstmal so eine ganz normale HTML-Seite und da unten ist so ein kleiner Block und da steht irgendwie Click2Edit und in diesem Block sieht man irgendwie Name, sage ich mal Peter oder irgendwas oder irgendein Name, Vorname, sogar ein ganz einfaches Nutzerdaten.

00:41:57.760 --> 00:42:05.620
Irgendwann kann man hinklicken und wenn man hinklickt, dann tut sich dieser kleine Bereich aktualisieren und man hat ein HTML-Formular.

00:42:06.480 --> 00:42:11.400
Dann kann man dieses HTML-Formular eben befüllen und sagen speichern.

00:42:12.240 --> 00:42:20.080
Und mit dem Speichern, schwupp, ändert sich wieder dieser kleine Block und der ist sozusagen wieder Read-Only, wie er am Anfang war, bloß mit den aktualisierten Daten.

00:42:22.020 --> 00:42:31.420
Und das Ganze funktioniert natürlich so, dass kein, der gesamte Browser immer auf dieser Seite bleibt, also nicht die gesamte Seite wird neu geladen.

00:42:31.420 --> 00:42:38.540
Also sprich, würde man irgendwo hingescrollt haben oder irgendwas und es dann unten auf einer Seite machen, würde die Scrollposition oder irgend sowas alles gleich bleiben.

00:42:39.080 --> 00:42:40.400
Und da ist die Frage, wie das funktioniert.

00:42:40.700 --> 00:43:03.100
Mit dem Klick to edit wird dann der Server kontaktiert und der Server schickt dann ein kleines HTML-Schnipselchen an den Client und entsprechend der Angabe in dem HTML und das HTMLx erweitert im Endeffekt das HTML bloß um ganz einfache neue Attribute.

00:43:04.300 --> 00:43:09.640
Anhand dieser Attribute stellt eben diese Library fest, aha, das soll hier eingefügt werden.

00:43:10.180 --> 00:43:20.580
Es gibt verschiedene Swap-Methoden, da kann man sagen, innerHTML soll ausgetauscht werden, also das in dem Tag oder outerHTML, sprich das Tag selber soll auch mit ersetzt werden.

00:43:20.580 --> 00:43:33.500
Na gut, und dann kriegt man eben dieses HTML-Schnipselchen vom Server und das wird dann durch HTMX dort eingebaut und dann hat man das Formular, kann es befüllen und am Endeffekt passiert der gleiche Spaß wieder.

00:43:33.640 --> 00:43:36.500
Ich kann das als Nutzer dann ausfüllen.

00:43:37.140 --> 00:43:45.340
Und wenn ich auf Speichern klicke, dann wird eben auch nur dieser kleine Bereich zum Server hingeschickt

00:43:45.340 --> 00:43:50.080
und man erhält wieder einen HTML-Schnipselchen, der dort an dieser Stelle eingebaut wird.

00:43:50.960 --> 00:43:54.380
Und das Schöne für den Anwender ist, dass es halt super simpel ist.

00:43:54.380 --> 00:44:01.080
Man muss dann bloß mit ganz wenigen Attributen sagen, hier, tausche mir bitte dieses oder jenes aus

00:44:01.080 --> 00:44:03.440
und dann hat man das Ganze schon, also man muss sich da

00:44:03.440 --> 00:44:05.220
nicht mit JavaScript beschäftigen oder so

00:44:05.220 --> 00:44:07.620
und ja, das ist

00:44:07.620 --> 00:44:08.440
sozusagen diese

00:44:08.440 --> 00:44:11.720
Grundidee der Bibliothek, dass man

00:44:11.720 --> 00:44:13.820
HTML-Schnipsel

00:44:13.820 --> 00:44:15.240
über die Leitung schickt

00:44:15.240 --> 00:44:17.740
und das deklarativ im HTML

00:44:17.740 --> 00:44:18.520
verfügbar macht.

00:44:19.820 --> 00:44:21.440
Ja, sehr spannend, das macht auch solche

00:44:21.440 --> 00:44:22.680
Sachen wie möglich, dass man dann,

00:44:23.500 --> 00:44:25.540
also das ist auch ein weiteres Beispiel, zum Beispiel

00:44:25.540 --> 00:44:27.440
auf der Seite, dass man Infidelscroll machen kann,

00:44:27.440 --> 00:44:29.300
dass er dann in diesem HXWeb-Attribut

00:44:29.300 --> 00:44:30.960
einfach After End sagt und dann wird das einfach

00:44:30.960 --> 00:44:32.980
angehängt, dann das, was man

00:44:32.980 --> 00:44:34.220
bekommt und so.

00:44:36.260 --> 00:44:37.280
Also da kriegt man eigentlich

00:44:37.280 --> 00:44:39.400
den besten Eindruck, wenn man einfach mal diese Beispiele

00:44:39.400 --> 00:44:40.940
durchgeht. Genau, das ist

00:44:40.940 --> 00:44:41.840
schon super.

00:44:43.760 --> 00:44:45.020
Ja, also ich meine, im Grunde, also

00:44:45.020 --> 00:44:47.100
eigentlich ist die Idee, also mich wundert, dass

00:44:47.100 --> 00:44:49.300
das nicht schon viel früher passiert

00:44:49.300 --> 00:44:51.220
ist, ehrlich gesagt. Mir ging es genauso, ich dachte

00:44:51.220 --> 00:44:53.240
man, das ist ja genau, von dem ich eigentlich

00:44:53.240 --> 00:44:55.280
geträumt habe, gerade vor Jahren, als ich

00:44:55.280 --> 00:44:57.200
mit Jake Ferry da so, sag mal, dass du selber

00:44:57.200 --> 00:44:58.500
irgendwie was gelöst, irgendwie

00:44:58.500 --> 00:45:00.340
und das ist eigentlich die Idee

00:45:00.340 --> 00:45:02.520
dieses Deklarativen auch, also das ist eben

00:45:02.520 --> 00:45:04.440
das HTML ist da

00:45:04.440 --> 00:45:06.460
sehr schön, diese Beschreibungssprache

00:45:06.460 --> 00:45:08.840
sicherlich ist es keine Programmiersprache, eine Beschreibungssprache

00:45:08.840 --> 00:45:10.260
aber im Endeffekt

00:45:10.260 --> 00:45:12.600
geht ja vieles hin in das Deklarative

00:45:12.600 --> 00:45:14.000
also man will ja einfach bloß sagen

00:45:14.000 --> 00:45:15.860
das soll so und so sein und

00:45:15.860 --> 00:45:18.300
dann kümmert sich irgendein anderer Prozess

00:45:18.300 --> 00:45:20.360
dann darum, dass das dann

00:45:20.360 --> 00:45:22.440
auch umgesetzt wird und so und das macht es im Endeffekt

00:45:22.440 --> 00:45:23.080
dann einfacher

00:45:23.080 --> 00:45:25.880
Ja und im Grunde behandelt das

00:45:25.880 --> 00:45:28.040
eigentlich macht es genau das gleiche, was man

00:45:28.040 --> 00:45:29.940
im Browser auf einer Webseite tut, nur

00:45:29.940 --> 00:45:32.000
halt nicht jetzt, dass man zum Beispiel

00:45:32.000 --> 00:45:33.920
wenn man im Browser halt auf einer Webseite ist, kann man ja

00:45:33.920 --> 00:45:35.620
immer nur das komplette HTML

00:45:35.620 --> 00:45:37.980
Element ersetzen. Und jetzt hat man sozusagen

00:45:37.980 --> 00:45:39.880
per JavaScript in HTMLX

00:45:39.880 --> 00:45:41.860
halt die Dinge, die man nur auf dem

00:45:41.860 --> 00:45:43.900
einen großen Ding machen kann, kann man jetzt auf allen

00:45:43.900 --> 00:45:45.980
kleinen Elementen halt auch machen. Man kann das halt

00:45:45.980 --> 00:45:47.660
irgendwie durch was anderes ersetzen.

00:45:48.240 --> 00:45:49.820
Man kann, also es ist

00:45:49.820 --> 00:45:51.560
normalerweise im Browser lösen halt nur zwei

00:45:51.560 --> 00:45:54.020
Events, lösen

00:45:54.020 --> 00:45:56.040
halt irgendwie in Requests aus. Das eine ist halt

00:45:56.040 --> 00:45:57.920
Anchor-Tag und das andere

00:45:57.920 --> 00:45:59.920
ist halt irgendwie Submit, also

00:45:59.920 --> 00:46:02.160
Form. Und

00:46:02.160 --> 00:46:03.920
es gibt nur Get und Post,

00:46:04.580 --> 00:46:05.580
aber es gibt ja noch viel mehr

00:46:05.580 --> 00:46:08.280
HTTP-Werben. Es gibt ja noch die Lead-Put-Patch

00:46:08.280 --> 00:46:10.000
und das habe ich

00:46:10.000 --> 00:46:11.900
mich auch früher gefragt. Also es gab es auch

00:46:11.900 --> 00:46:13.760
so bei Jungle-Rest-Framework ja irgendwie bei dieser

00:46:13.760 --> 00:46:16.020
Browsable-API und dann wollte ich halt mal

00:46:16.020 --> 00:46:17.940
so, da drinnen kann man ja auch

00:46:17.940 --> 00:46:19.900
Dinge hinzufügen und so. Ich so, okay, und jetzt

00:46:19.900 --> 00:46:22.000
muss ich noch Put testen und so, hm, komisch.

00:46:22.080 --> 00:46:23.540
Put geht irgendwie nicht. Wieso geht denn Put nicht?

00:46:24.020 --> 00:46:25.920
Und das war mir auch gar nicht klar, dass halt Browser

00:46:25.920 --> 00:46:27.900
können halt keinen Put irgendwie

00:46:27.900 --> 00:46:30.120
an Zauber schicken, sondern das muss man halt mit JavaScript machen,

00:46:30.220 --> 00:46:31.020
weil es geht einfach nicht.

00:46:31.680 --> 00:46:34.000
Und es gibt ja eigentlich gar keinen Grund, warum das jetzt

00:46:34.000 --> 00:46:36.060
nicht weiter standardisiert wurde. Und HTMX

00:46:36.060 --> 00:46:38.080
ersetzt sozusagen das, was da noch fehlt,

00:46:38.480 --> 00:46:39.560
durch JavaScript.

00:46:40.060 --> 00:46:41.620
Und das ist eigentlich eine sau, sau coole Idee.

00:46:42.740 --> 00:46:44.200
Also, bei mir

00:46:44.200 --> 00:46:45.960
hat es auch relativ schnell Klick gemacht, nachdem ich

00:46:45.960 --> 00:46:48.060
die ersten Beispiele dann mir angeschaut habe.

00:46:49.120 --> 00:46:50.020
Und es ist

00:46:50.020 --> 00:46:52.080
enorm, wie da auch das

00:46:52.080 --> 00:46:54.180
Interesse daran wächst. Also zum Beispiel

00:46:54.180 --> 00:46:56.000
im Django, was ich jetzt hier eben

00:46:56.000 --> 00:46:57.900
einsetze für die Serverseite,

00:46:58.580 --> 00:47:00.820
kann man ja auch auf einer HTML-Seite

00:47:00.820 --> 00:47:02.380
mehrere Formulare

00:47:02.380 --> 00:47:04.220
dann reintun und mit Präfixen das

00:47:04.220 --> 00:47:05.580
dann auswerten und so weiter.

00:47:06.380 --> 00:47:08.240
Und das war auch, wenn ich mich da

00:47:08.240 --> 00:47:10.200
zurückerinnere, rechter Krampf irgendwie immer.

00:47:11.260 --> 00:47:12.360
Und hier ist es

00:47:12.360 --> 00:47:14.400
einfach entkoppelt.

00:47:14.480 --> 00:47:16.280
Ich kann ja auch auf einer Seite drei Formulare

00:47:16.280 --> 00:47:17.900
haben und die submitten sich eben

00:47:17.900 --> 00:47:20.300
einzeln individuell. Da brauche

00:47:20.300 --> 00:47:22.140
ich da nicht ein großes

00:47:22.140 --> 00:47:24.020
Formular machen mit drei

00:47:24.020 --> 00:47:26.280
Unterbereichen oder so. Das macht's

00:47:26.280 --> 00:47:28.100
auch serverseitig deutlich

00:47:28.100 --> 00:47:29.260
einfacher, das zu handeln.

00:47:30.640 --> 00:47:30.760
Ja.

00:47:31.760 --> 00:47:33.580
Naja, und es ist ja jetzt

00:47:33.580 --> 00:47:36.000
tatsächlich auch nicht nur, also

00:47:36.000 --> 00:47:37.960
hat demnächst vielleicht zu der Geschichte, dass

00:47:37.960 --> 00:47:40.240
der Autor hatte vorher

00:47:40.240 --> 00:47:42.180
eine Bibliothek geschrieben als jQuery

00:47:42.180 --> 00:47:44.340
Plugin. Das nennt sich

00:47:44.340 --> 00:47:45.260
irgendwie intercooler.js.

00:47:46.520 --> 00:47:48.020
Daher, das hat auch mit

00:47:48.020 --> 00:47:49.360
jQuery relativ viel zu tun.

00:47:50.300 --> 00:47:52.280
Ähm, äh, und das war halt dann

00:47:52.280 --> 00:47:54.320
quasi auch halt, äh, HTMLX ist jetzt

00:47:54.320 --> 00:47:56.220
sogar der Nachfolger davon, der dann halt ohne JQuery

00:47:56.220 --> 00:47:57.660
auskommt und diesen ganzen Kram nicht mehr macht.

00:47:58.720 --> 00:48:00.280
Ähm, und

00:48:00.280 --> 00:48:01.960
äh, was ich auch, äh,

00:48:02.260 --> 00:48:04.280
wo ich auch denke, das ist, äh, halt

00:48:04.280 --> 00:48:06.240
ein sehr, äh, also

00:48:06.240 --> 00:48:08.140
ein breiter Trend, das macht es auch so

00:48:08.140 --> 00:48:10.120
interessant, weil es ist halt nicht nur diese eine Geschichte,

00:48:10.240 --> 00:48:12.140
es ist nicht nur HTMLX, sondern, äh,

00:48:12.240 --> 00:48:14.200
diesen Ansatz verfolgen ganz viele

00:48:14.200 --> 00:48:16.160
Projekte in ganz vielen unterschiedlichen Sprachen, ne?

00:48:16.460 --> 00:48:17.880
Und, ähm, ich weiß nicht, in

00:48:17.880 --> 00:48:20.120
welchem Talk das war, ob das der

00:48:20.120 --> 00:48:22.400
von der Jungle Queen US war

00:48:22.400 --> 00:48:24.320
oder nee, es war auch, glaube ich, mit TalkPython

00:48:24.320 --> 00:48:25.640
to me, Interview

00:48:25.640 --> 00:48:28.000
mit dem Entwickler von

00:48:28.000 --> 00:48:29.180
HTMX,

00:48:29.740 --> 00:48:32.220
sagte er einen Satz, den ich von

00:48:32.220 --> 00:48:34.360
unterschiedlichen Leuten aus unterschiedlichen Communities

00:48:34.360 --> 00:48:35.620
schon ganz oft gehört habe.

00:48:36.480 --> 00:48:38.260
Den habe ich auch schon gehört von Chris

00:48:38.260 --> 00:48:40.060
McCord von Phoenix Live View

00:48:40.060 --> 00:48:42.340
in der Elexia und ich habe den auch

00:48:42.340 --> 00:48:43.820
nochmal woanders gehört und zwar der Satz ist

00:48:43.820 --> 00:48:46.320
ja, also ehrlich gesagt, dafür

00:48:46.320 --> 00:48:48.240
dass ich kein JavaScript schreiben wollte, habe ich jetzt

00:48:48.240 --> 00:48:49.620
ganz schön viel JavaScript geschrieben.

00:48:50.120 --> 00:49:01.980
Und das sagen, also das ist halt dieses Thema, so ganz viele Backend-Leute, die eigentlich nie JavaScript schreiben wollten, haben jetzt dann doch viel JavaScript geschrieben, um das loszuwerden.

00:49:02.520 --> 00:49:14.520
Und wenn das viele Leute machen und quasi zu einem ähnlichen Ergebnis kommen und das tatsächlich funktioniert, dann wird das wahrscheinlich auch so bleiben und das sieht danach aus, als hätte man da was gefunden, was tatsächlich gut funktioniert und das macht es dann natürlich auch interessant.

00:49:14.520 --> 00:49:39.080
Also wenn das jetzt nur eine Geschichte wäre, aber ich weiß nicht, ob mir jetzt die ganzen Namen einfallen, aber in der Ruby on Rails Welt, also wobei HTMX wird ja auch viel mit Ruby on Rails zusammenverwendet, gibt es halt noch Hotwire, also ist auch Akronym für HTML over the wire und Turbolinks, wo halt dann quasi schon die Seite hinter dem Link gefetcht wird, sodass wenn man auf den Link draufklickt, das halt dann direkt da ist.

00:49:39.740 --> 00:49:55.440
Dann gibt es eben bei Elixier, in der Elixier-Welt Phoenix gibt es Liveview, wo auch HTML-Snippets halt über einen Websocket geschickt werden. Dann gibt es das in PHP, da heißt das irgendwie Livewire in Laravel.

00:49:58.600 --> 00:50:10.560
Und ja, ich weiß es gar nicht, da gibt es, also auf jeden Fall in vielen unterschiedlichen Communities machen Leute jetzt gerade sowas und ja, das scheint irgendwie ein sehr, sehr breiter Trend zu sein.

00:50:11.560 --> 00:50:25.300
Der Schöne an dem HTMX ist halt, dass es sich da vollkommen raushält. Also das kann man mit jedem Backend-Framework nutzen, wie man möchte. Und die anderen, die sind halt oft Backend-spezifisch.

00:50:25.300 --> 00:50:46.880
Also bei Ruby on Rails, das ist Hotwire und drum war das, ja, ich habe es mir angeschaut und hätte eigentlich da Interesse gehabt, aber das war dann irgendwie schon wieder irgendwie kompliziert und nicht so einfach. Das HTMX hat es, glaube ich, der Carson Cross hat es da sehr, sehr schön nochmal reduziert von der Komplexität und das ist ja auch im Endeffekt sein Ziel.

00:50:46.880 --> 00:50:49.260
sein Ziel ist es, die Komplexität

00:50:49.260 --> 00:50:51.040
zu reduzieren, dass es

00:50:51.040 --> 00:50:52.260
schön einfach ist.

00:50:52.960 --> 00:50:54.600
Und das hat er aus meiner Sicht sehr

00:50:54.600 --> 00:50:56.780
gut geschafft. Das sind eine Handvoll

00:50:56.780 --> 00:50:58.860
Attribute, die hat man schnell

00:50:58.860 --> 00:51:00.740
verstanden oder auch noch nachgeschlagen

00:51:00.740 --> 00:51:02.520
und dann kann man da ganz

00:51:02.520 --> 00:51:04.580
gut eine Menge Dinge machen.

00:51:05.080 --> 00:51:06.660
Man muss natürlich erstmal umdenken, um überhaupt

00:51:06.660 --> 00:51:08.600
erstmal reinzukommen, aber

00:51:08.600 --> 00:51:10.840
das macht Spaß.

00:51:11.080 --> 00:51:12.900
Also das kann ich nur empfehlen.

00:51:13.920 --> 00:51:14.080
Ja.

00:51:15.320 --> 00:51:16.800
Es gibt auch

00:51:16.800 --> 00:51:18.720
eine jetzt von Adam Johnson,

00:51:19.000 --> 00:51:20.500
der hat irgendwie ein Ding geschrieben,

00:51:21.840 --> 00:51:23.020
Django HTMX,

00:51:23.520 --> 00:51:24.820
das ist eben

00:51:24.820 --> 00:51:26.740
als Integration jetzt auch in Django als Framework,

00:51:26.840 --> 00:51:28.940
aber das macht auch fast nichts, das macht ganz wenig,

00:51:29.460 --> 00:51:30.200
das macht nur

00:51:30.200 --> 00:51:32.780
sozusagen, es ist eine Middleware dabei,

00:51:33.200 --> 00:51:34.880
die an den Requests halt ein Attribut

00:51:34.880 --> 00:51:36.680
dran wappt,

00:51:36.760 --> 00:51:38.680
ich weiß nicht, ist HTMX oder sowas, wo man dann einfach

00:51:38.680 --> 00:51:40.620
nachgucken kann, weil man muss auf der Serverseite

00:51:40.620 --> 00:51:42.460
halt unterscheiden können, war das jetzt ein

00:51:42.460 --> 00:51:44.740
Request, der von HTMX gekommen ist oder nicht, und dann

00:51:44.740 --> 00:51:46.600
je nachdem, erinnert man

00:51:46.600 --> 00:51:48.540
die komplette, das ist auch sowas, wenn

00:51:48.540 --> 00:51:50.720
ein Browser kein JavaScript kann, das ist gar kein

00:51:50.720 --> 00:51:52.300
Problem, das funktioniert einfach so weiter,

00:51:53.020 --> 00:51:54.660
weil auf der Serverseite

00:51:54.660 --> 00:51:56.540
rendert man halt, wenn man sieht,

00:51:56.660 --> 00:51:58.580
okay, es war kein HTMLX-Request, dann rendert man

00:51:58.580 --> 00:52:00.220
einfach die komplette Seite raus, ist gar kein Problem.

00:52:00.700 --> 00:52:02.660
Und wenn es ein HTMLX-Request war, gut, dann

00:52:02.660 --> 00:52:04.540
rendert man halt nur das Fragment raus, das

00:52:04.540 --> 00:52:06.500
halt ersetzt werden muss. Und

00:52:06.500 --> 00:52:08.120
das heißt, es funktioniert in beiden Fällen und

00:52:08.120 --> 00:52:10.400
irgendwie, man hat halt diese Windelware dann, um

00:52:10.400 --> 00:52:12.600
halt da quasi sich nicht selber überlegen zu müssen,

00:52:12.600 --> 00:52:14.580
wie man jetzt erkennt, ob das jetzt ein HTMLX-Request war

00:52:14.580 --> 00:52:22.620
oder nicht und dann hat das ding auch noch so teile drin für damit diese fehler views halt

00:52:22.620 --> 00:52:26.280
ordentlich funktionieren also wenn halt ein fragment nicht ordentlich gerendert wird dann

00:52:26.280 --> 00:52:31.440
ist wenn man sonst nichts macht ignoriert also wenn dann wenn er zum beispiel 400 zurückkommt

00:52:31.440 --> 00:52:40.960
dann sieht man nichts weil hat im extra ist einfach die antworten weg und vielleicht die standard junk

00:52:40.970 --> 00:52:43.390
Fehlermeldung aber haben mit einem Stacktrace oder so.

00:52:44.350 --> 00:52:45.250
Und genau, dafür ist halt

00:52:45.250 --> 00:52:47.210
auch noch so ein bisschen, das ist glaube ich

00:52:47.210 --> 00:52:49.170
eine HTMLX-Extension in JavaScript,

00:52:49.850 --> 00:52:51.390
die in Django HTMLX drin ist,

00:52:51.810 --> 00:52:53.130
die dann halt dafür sorgt, dass man

00:52:53.130 --> 00:52:55.550
eben die normale Django-Fehler-

00:52:55.550 --> 00:52:57.030
Seite sieht, wenn man, auch wenn

00:52:57.030 --> 00:52:59.210
HTMLX-Requests halt außerhalb der Seite schiefgegangen ist.

00:52:59.950 --> 00:53:01.030
Genau, also ich habe es mir auch

00:53:01.030 --> 00:53:02.910
angeschaut, die Bibliothek,

00:53:02.910 --> 00:53:04.970
habe das gleiche festgestellt wie du, es ist relativ

00:53:04.970 --> 00:53:06.890
wenig eigentlich drin und

00:53:06.890 --> 00:53:08.290
es ist auch wenig notwendig

00:53:08.290 --> 00:53:10.710
und darum nutze ich es ja auch gar nicht,

00:53:10.790 --> 00:53:13.330
weil ich habe mir für mich dann nochmal überlegt,

00:53:13.410 --> 00:53:15.070
wie willst du deine Anwendung gestalten?

00:53:15.210 --> 00:53:20.050
Also zum einen unterstütze ich nicht JavaScript-lose Browser.

00:53:20.330 --> 00:53:22.950
Also JavaScript ist für meine Seite jetzt notwendig.

00:53:22.950 --> 00:53:25.910
Also da ist es schon im 21. Jahrhundert.

00:53:27.150 --> 00:53:31.830
Aber das ist dann so, dass ich die URLs trenne.

00:53:31.990 --> 00:53:33.990
Also es gibt den ersten Seitenaufruf

00:53:33.990 --> 00:53:38.190
und der erste Seitenaufruf bringt eben eine ganz normale HTML-Seite

00:53:38.190 --> 00:53:40.510
mit einem HTML-Tag, Head-Tag, Body-Tag

00:53:40.510 --> 00:53:41.650
und HTML wieder zu

00:53:41.650 --> 00:53:44.390
und ab dann werden eigentlich

00:53:44.390 --> 00:53:46.530
meistens Schnipsel

00:53:46.530 --> 00:53:47.730
ausgetauscht und

00:53:47.730 --> 00:53:50.330
die URLs, wo ich

00:53:50.330 --> 00:53:52.170
eben ein Schnipsel bekommen will,

00:53:52.810 --> 00:53:54.430
die liefern immer ein Schnipsel

00:53:54.430 --> 00:53:56.350
zurück und die werden immer über HTMLX aufgerufen,

00:53:56.870 --> 00:53:58.150
sodass ich diese Fallunterscheidung

00:53:58.150 --> 00:53:59.670
serverseitig gar nicht habe, von wegen

00:53:59.670 --> 00:54:02.530
ist das jetzt ein HTMLX-Request

00:54:02.530 --> 00:54:03.990
oder nicht. Es gibt glaube ich auch

00:54:03.990 --> 00:54:06.450
von Django Forms, Django Forms Dynamic

00:54:06.450 --> 00:54:08.190
oder sowas, dass man da quasi Dango Forms

00:54:08.190 --> 00:54:10.070
nutzen kann, direkt als HTML Mix Forms.

00:54:10.450 --> 00:54:11.890
Ah, okay. Das kannte ich noch gar nicht.

00:54:11.910 --> 00:54:13.070
Das haben wir auch ganz cool dazu.

00:54:14.230 --> 00:54:14.770
Cool, ja.

00:54:16.210 --> 00:54:17.910
Das heißt, also Dango Forms kennt ihr vielleicht,

00:54:17.990 --> 00:54:19.110
da kann man das direkt so einbauen.

00:54:19.930 --> 00:54:20.790
Das ist immer ganz hilfreich.

00:54:21.830 --> 00:54:23.930
Ja, ich habe letztens auch das irgendwo gesehen, aber ich habe es

00:54:23.930 --> 00:54:24.670
mir noch nicht angeguckt.

00:54:26.130 --> 00:54:26.450
Interessant.

00:54:28.710 --> 00:54:28.930
Ja.

00:54:31.630 --> 00:54:31.950
Ja,

00:54:32.050 --> 00:54:33.870
wir haben so ein bisschen jetzt, glaube ich, über

00:54:33.870 --> 00:54:35.710
die Syntax gesprochen,

00:54:35.810 --> 00:54:37.750
das Beispiel und das, was da alles Schönes gibt.

00:54:38.290 --> 00:54:39.570
Also man macht meistens halt mit diesem

00:54:39.570 --> 00:54:41.670
Swap-Target oder sowas, ja, also

00:54:41.670 --> 00:54:43.410
Moment, es gibt Swap und Target, glaube ich, ja.

00:54:43.890 --> 00:54:45.710
Also das heißt, wir haben, wir sagen quasi, was

00:54:45.710 --> 00:54:47.070
getauscht werden soll, wohin

00:54:47.070 --> 00:54:49.230
das getauscht werden soll und

00:54:49.230 --> 00:54:50.950
wann es getauscht werden soll.

00:54:51.870 --> 00:54:53.750
Genau, richtig, das mit dem Trigger geht sozusagen

00:54:53.750 --> 00:54:55.790
los, also bei einem Form muss

00:54:55.790 --> 00:54:57.870
man den Trigger jetzt gar nicht angeben, weil bei einem Form

00:54:57.870 --> 00:54:59.450
ist es das Drücken auf den

00:54:59.450 --> 00:55:00.830
Submit-Button.

00:55:01.710 --> 00:55:03.930
Aber es gibt eben andere Trigger, wie du

00:55:03.930 --> 00:55:05.970
vorhin Dominik angesprochen hast,

00:55:06.330 --> 00:55:07.850
den Revealed-Trigger zum Beispiel.

00:55:08.010 --> 00:55:09.290
Also ich kann so einen Infinite-Scroll

00:55:09.290 --> 00:55:11.870
implementieren, indem ich ganz unten

00:55:11.870 --> 00:55:14.290
eben einen HTML-Schnipsel

00:55:14.290 --> 00:55:16.070
habe, mit dem

00:55:16.070 --> 00:55:17.990
Trigger Revealed und der

00:55:17.990 --> 00:55:19.970
feuert dann, sobald dieses

00:55:19.970 --> 00:55:21.930
Schnipselchen in den sichtbaren Bereich

00:55:21.930 --> 00:55:22.990
kommt im Browser.

00:55:23.730 --> 00:55:25.450
Und das ist natürlich dann relativ cool.

00:55:25.610 --> 00:55:27.990
Dann kriege ich das Event, dann hole ich mir

00:55:27.990 --> 00:55:30.110
neue Daten, dann kann ich 5, 6, 7

00:55:30.110 --> 00:55:31.990
neue Einträge unten

00:55:31.990 --> 00:55:33.950
machen. Und wenn der Nutzer nach unten

00:55:33.950 --> 00:55:35.910
scrollt, kommt er wieder nach

00:55:35.910 --> 00:55:37.670
unten, kommt wieder das Revealed-Event

00:55:37.670 --> 00:55:39.810
und er holt sich den nächsten Eintrag. Und dann kann man

00:55:39.810 --> 00:55:41.570
ohne eine Zeile

00:55:41.570 --> 00:55:43.770
JavaScript zu schreiben, so ein Endless

00:55:43.770 --> 00:55:45.510
Scrolling implementieren.

00:55:45.670 --> 00:55:47.790
Und das ist ja eine feine

00:55:47.790 --> 00:55:48.050
Sache.

00:55:49.730 --> 00:55:50.550
Wir haben Swap.

00:55:51.670 --> 00:55:53.450
Swap-Message in der HTML tauschen,

00:55:53.510 --> 00:55:55.670
Auto-HTML, Target

00:55:55.670 --> 00:55:57.810
und Out-of-Band gibt es auch noch.

00:55:57.970 --> 00:55:58.670
Also wenn man zum Beispiel,

00:55:59.550 --> 00:56:01.830
ich hatte bei mir so eine Art Warenkorb

00:56:01.830 --> 00:56:22.090
Und wenn ich jetzt bei dem Warenkorb sage, ich kaufe irgendwas ein und sage, ich möchte davon jetzt mehr haben, mache ich sozusagen einen Plus. Dann habe ich erstmal diesen Bereich aktualisiert, wo der Nutzer geklickt hat, weil ich dort will ich statt einer 1 eine 2 anzeigen. Aber jetzt gibt es vielleicht rechts oben noch irgendwie ein Symbol mit Summe aller Waren im Warenkorb oder so.

00:56:23.450 --> 00:56:25.690
mache ich mit dem ersten, also mit dem

00:56:25.690 --> 00:56:28.050
eigentlichen Event, tue ich diese eine Zeile austauschen

00:56:28.050 --> 00:56:29.990
und out of band kommt dann noch

00:56:29.990 --> 00:56:31.690
dazu, bitte tausche

00:56:31.690 --> 00:56:34.010
außerdem hier das Element

00:56:34.010 --> 00:56:35.730
mit der und der ID aus und dann

00:56:35.730 --> 00:56:37.530
kommt dann dort die neue Zahl

00:56:37.530 --> 00:56:38.890
für die gesamte Summe.

00:56:39.990 --> 00:56:41.930
Das gibt es auch noch, das out of band

00:56:41.930 --> 00:56:43.890
Aktualisierung von Daten

00:56:43.890 --> 00:56:45.910
angekommen ist. Also man kann eben zusätzlich

00:56:45.910 --> 00:56:49.690
out of band, also wenn der Server

00:56:49.690 --> 00:56:51.730
weiß, hier ich möchte noch was aktualisieren,

00:56:52.410 --> 00:57:03.230
Was aber jetzt nicht in dem aktuellen Schnipsel mit aktualisiert wird, kann der Server out of band noch ein zusätzliches Schnipsel mitschicken, was dann eben am Client aktualisiert wird.

00:57:03.230 --> 00:57:11.210
Der Anwendungsfall war eben so eine Art Warenkorb. Man klickt unten bei dem einen Artikel plus, dann weiß ich, jetzt habe ich jetzt zweimal diesen einen Artikel.

00:57:12.030 --> 00:57:19.090
Aber oben, rechts oben als Beispiel, ist so ein Einkaufswagensymbol und da will ich die Summe aller Waren anzeigen.

00:57:19.190 --> 00:57:21.210
kann ich damit eben das auch aktualisieren.

00:57:21.330 --> 00:57:22.690
Also an zwei Stellen. Einmal diese

00:57:22.690 --> 00:57:25.090
unten bei der eigentlichen Ware

00:57:25.090 --> 00:57:26.150
und oben im Warenkorb.

00:57:27.170 --> 00:57:28.910
Das ist auch nur so ein ganz nettes Feature

00:57:28.910 --> 00:57:30.250
von dem HTMX.

00:57:31.730 --> 00:57:33.150
Ja, was gibt's

00:57:33.150 --> 00:57:34.010
sonst noch zu sagen?

00:57:35.530 --> 00:57:36.910
Ja, auch solche Sachen, dass man

00:57:36.910 --> 00:57:39.070
da fand ich auch nett

00:57:39.070 --> 00:57:41.110
sagen kann, okay,

00:57:41.750 --> 00:57:43.190
lad mal dieses Element

00:57:43.190 --> 00:57:45.190
alle zwei Sekunden nach. Das ist halt auch so ein

00:57:45.970 --> 00:57:47.350
Anwendungsfall

00:57:47.350 --> 00:57:49.270
für Outer-HTML, da könnte man sich auch fragen, wozu braucht man eigentlich

00:57:49.270 --> 00:57:51.050
Outer und Inner? Weil

00:57:51.050 --> 00:57:53.170
wenn man das komplette Element ersetzt,

00:57:53.310 --> 00:57:54.870
dann werden halt auch die

00:57:54.870 --> 00:57:56.990
HTMLX-Attribute mit ersetzt. Und man kann zum Beispiel

00:57:56.990 --> 00:57:59.310
dann von der Server-Seite her

00:57:59.310 --> 00:58:01.390
steuern, wie lange

00:58:01.390 --> 00:58:02.950
irgendwas dann, also man könnte zum Beispiel

00:58:02.950 --> 00:58:04.530
machen halt irgendwie einen Newsticker oder sowas

00:58:04.530 --> 00:58:06.150
und sagt halt, alle zwei Sekunden

00:58:06.150 --> 00:58:08.650
werden da neue Daten geladen.

00:58:09.030 --> 00:58:10.950
Und dann kann man von der Server-Seite aber sagen, wenn man das

00:58:10.950 --> 00:58:12.770
komplette Element austauscht, okay, man nimmt diesen

00:58:12.770 --> 00:58:14.730
Trigger raus, irgendwann

00:58:14.730 --> 00:58:16.870
nach zehn Minuten oder so, und dann

00:58:16.870 --> 00:58:19.090
halt keine neuen, wird halt

00:58:19.090 --> 00:58:20.150
nicht mehr gepollt quasi.

00:58:21.210 --> 00:58:22.910
Und dafür muss man dann das komplette Element

00:58:22.910 --> 00:58:24.470
ersetzen, dann braucht man halt Auto-HTML.

00:58:25.030 --> 00:58:26.850
Ja, also genau, solche Sachen kann man auch

00:58:26.850 --> 00:58:27.630
sehr einfach machen.

00:58:30.230 --> 00:58:32.990
Was gibt's noch?

00:58:35.970 --> 00:58:36.790
Ja, genau,

00:58:36.890 --> 00:58:38.890
überhaupt diese Geschichten, wenn vom Server

00:58:38.890 --> 00:58:40.930
Sachen kommen, da weiß ich auch noch

00:58:40.930 --> 00:58:42.510
nicht so genau, wie das dann, gibt's

00:58:42.510 --> 00:58:45.010
Support für Websockets oder solche Sachen?

00:58:45.970 --> 00:58:47.470
Ja, ja, WebSocket-Support

00:58:47.470 --> 00:58:49.250
gibt's, habe ich aber selber jetzt noch

00:58:49.250 --> 00:58:51.310
nicht ausprobiert. Und es wird

00:58:51.310 --> 00:58:53.410
aktuell eben die Bibliothek

00:58:53.410 --> 00:58:55.270
aktualisiert, dass WebSockets zu einem

00:58:55.270 --> 00:58:56.510
externen Paket wird.

00:58:57.110 --> 00:58:59.090
Dass man also das gar nicht mehr per Default

00:58:59.090 --> 00:59:00.270
drin hat, sondern

00:59:00.270 --> 00:59:02.770
dann sich selber nachladen muss.

00:59:03.650 --> 00:59:05.190
Ich persönlich finde es gut, das hält die

00:59:05.190 --> 00:59:07.290
Bibliothek klein. Ja, die meisten Leute brauchen

00:59:07.290 --> 00:59:09.250
das halt nicht, denke ich mal. Genau, und dann kann man es auch

00:59:09.250 --> 00:59:09.910
auslagern.

00:59:10.730 --> 00:59:11.790
Ja, ich glaube,

00:59:12.890 --> 00:59:14.270
Server-Send-Events

00:59:14.270 --> 00:59:16.990
Support dafür ist auch irgendwie drin.

00:59:18.010 --> 00:59:18.670
Da dachte ich auch so,

00:59:18.810 --> 00:59:21.030
habe ich irgendwann letztens nochmal

00:59:21.030 --> 00:59:22.810
geguckt, was das denn wirklich ist, weil das habe ich nie so,

00:59:23.130 --> 00:59:25.010
das ist zwar schon uralt und gibt es total lang, aber

00:59:25.010 --> 00:59:26.790
ich wusste nie so richtig, was das ist.

00:59:27.350 --> 00:59:28.950
Aber ja, es ist halt auch eigentlich nichts Besonderes.

00:59:29.250 --> 00:59:30.870
Und vor allen Dingen, es belegt halt auf dem Server auch,

00:59:30.990 --> 00:59:32.470
man muss halt eine Verbindung offen halten, nur

00:59:32.470 --> 00:59:35.110
dass man halt vom Client

00:59:35.110 --> 00:59:37.030
aus nichts zurückschicken kann, sondern es ist halt eine

00:59:37.030 --> 00:59:39.130
Verbindung, die immer offen bleibt, wo man

00:59:39.130 --> 00:59:40.890
vom Server halt irgendwie Daten

00:59:40.890 --> 00:59:41.670
an den Client schicken kann.

00:59:43.390 --> 00:59:47.010
Aber ja, also mit Django geht das nicht gut.

00:59:47.950 --> 00:59:49.810
Aber man muss halt dafür Django Channels halt verwenden.

00:59:50.430 --> 00:59:50.950
Ja, genau.

00:59:53.510 --> 00:59:55.270
Eine Sache fällt mir noch ein,

00:59:55.410 --> 00:59:57.570
mehr so eine allgemeine Sache.

00:59:58.830 --> 01:00:00.950
Viele sind ja Freunde dieser JSON-APIs,

01:00:01.670 --> 01:00:02.410
weil sie sich dann denken,

01:00:02.510 --> 01:00:04.970
ah, super, dann habe ich ja eine API

01:00:04.970 --> 01:00:08.410
und damit kann ich zum einen ein Webfrontend machen

01:00:08.410 --> 01:00:10.950
und zum anderen kann ich da eine API anbieten

01:00:11.710 --> 01:00:13.450
für eine Maschine, Maschinenkommunikation.

01:00:14.510 --> 01:00:17.790
Und das ist aus meiner Sicht Blödsinn.

01:00:19.290 --> 01:00:24.010
Weil man da zwei ganz verschiedene Anwendungsfälle zusammenwürfelt.

01:00:24.290 --> 01:00:28.370
Also bei einer GUI, da will ich super agil sein,

01:00:28.510 --> 01:00:30.270
die will ich täglich aktualisieren können,

01:00:30.390 --> 01:00:31.970
da will ich täglich deployen können

01:00:31.970 --> 01:00:35.330
und da sollen sich auch täglich kleine Änderungen ergeben können.

01:00:36.130 --> 01:00:38.910
Weil das den Nutzer in der Regel nicht stört,

01:00:38.990 --> 01:00:40.530
wenn das so ein kleines bisschen irgendwie anders ist,

01:00:40.530 --> 01:00:42.230
nur ein kleines bisschen verbessert wird

01:00:42.230 --> 01:00:43.330
kontinuierlich.

01:00:44.270 --> 01:00:46.430
Wenn ich aber eine Maschine zur Maschinenkommunikation

01:00:46.430 --> 01:00:48.230
haben, ist sowas wie

01:00:48.230 --> 01:00:50.210
A-B-Testing vollkommener Schwachsinn.

01:00:50.350 --> 01:00:51.690
Natürlich, ich werde ja nicht

01:00:51.690 --> 01:00:54.350
einer Maschine sagen,

01:00:54.350 --> 01:00:55.790
du kriegst die API und

01:00:55.790 --> 01:00:58.250
der andere Client kriegt

01:00:58.250 --> 01:01:00.450
diese APIs und diese Daten.

01:01:00.630 --> 01:01:02.250
Das ist ja vollkommen konträre, ganz

01:01:02.250 --> 01:01:03.610
verschiedene Anwendungsfälle.

01:01:04.810 --> 01:01:06.210
Und drum, das war bei mir

01:01:06.210 --> 01:01:08.330
anfangs bei Angular, wo ich dachte, oh cool,

01:01:08.450 --> 01:01:10.330
eine API und da kann ich dann

01:01:10.330 --> 01:01:12.230
GUI entwickeln und außerdem

01:01:12.230 --> 01:01:14.130
eben da einen maschinellen

01:01:14.130 --> 01:01:16.390
Zugriff auf dieser Seite haben. Aber es sind eben

01:01:16.390 --> 01:01:18.530
zwei ganz getrennte Dinge, die auch

01:01:18.530 --> 01:01:20.530
ganz

01:01:20.530 --> 01:01:21.970
getrennt behandelt werden sollten.

01:01:22.850 --> 01:01:23.110
Und da

01:01:23.110 --> 01:01:26.130
könnte man ja dann auch dann sagen, na gut, wenn ich

01:01:26.130 --> 01:01:27.770
Maschine-Maschine-Kommunikation machen will,

01:01:28.450 --> 01:01:30.290
könnte man ja sowas wie gRPC

01:01:30.290 --> 01:01:32.370
einsetzen, was dann im Endeffekt

01:01:32.370 --> 01:01:34.130
auch mehr Datentypen unterstützt

01:01:34.130 --> 01:01:35.750
und insgesamt optimaler ist.

01:01:35.750 --> 01:01:37.450
Jetzt sind wir wieder, wir haben noch nicht genau

01:01:37.450 --> 01:01:39.750
RPC erklärt und jetzt kommst du gleich mit gRPC an.

01:01:39.870 --> 01:01:41.530
Ich muss erklären, was das ist.

01:01:42.170 --> 01:01:43.950
Das gRPC ist

01:01:43.950 --> 01:01:45.770
eine Technologie von Google

01:01:45.770 --> 01:01:47.870
und das ist ein binäres

01:01:47.870 --> 01:01:50.190
RPC, also Remote Procedure Call

01:01:50.190 --> 01:01:52.030
Methode

01:01:52.030 --> 01:01:53.870
und das ist

01:01:53.870 --> 01:01:55.470
sehr effizient und schnell.

01:01:57.310 --> 01:01:58.170
Es ist auch

01:01:58.170 --> 01:02:00.230
Arschima-basiert, also du musst

01:02:00.230 --> 01:02:01.970
klar, der Server

01:02:01.970 --> 01:02:04.310
sagt klar, was für Daten er austauscht

01:02:04.310 --> 01:02:05.570
und das wird

01:02:05.570 --> 01:02:08.630
im Kubernetes-Bereich

01:02:08.630 --> 01:02:09.190
oder so ähnlich

01:02:09.190 --> 01:02:10.990
dann auch stark verwendet.

01:02:11.910 --> 01:02:13.310
Aber halt bei den Web-Entwicklern ist

01:02:13.310 --> 01:02:15.550
gRPC noch nicht angekommen und

01:02:15.550 --> 01:02:17.350
das wird wahrscheinlich auch noch ein bisschen dauern,

01:02:17.470 --> 01:02:19.710
bis das da bekannt

01:02:19.710 --> 01:02:21.450
und verstanden wird, um was es da eigentlich geht.

01:02:24.210 --> 01:02:24.650
Ja.

01:02:26.250 --> 01:02:27.430
Naja, da ist JSON

01:02:27.430 --> 01:02:29.290
schon so das Ding, was man...

01:02:29.290 --> 01:02:30.950
Also ich meine, es gibt ja im Grunde keinen

01:02:30.950 --> 01:02:33.770
wirklichen Grund, warum man jetzt irgendwie...

01:02:33.770 --> 01:02:35.510
Außer, dass man halt das JSON irgendwie nahe

01:02:35.510 --> 01:02:37.030
liegt, wenn man jetzt

01:02:37.030 --> 01:02:39.370
JavaScript macht, aber ansonsten

01:02:39.370 --> 01:02:41.270
gibt es ja gar keinen Grund dafür,

01:02:41.390 --> 01:02:42.270
dass man könnte halt auch irgendwie

01:02:42.270 --> 01:02:43.310
andere

01:02:43.310 --> 01:02:46.470
Datenformate halt benutzen.

01:02:46.710 --> 01:02:49.190
Bei Jungle REST Framework war das ja auch mal so, da konnte man halt auch

01:02:49.190 --> 01:02:51.170
ich glaube, ich weiß nicht, ob das heutzutage noch

01:02:51.170 --> 01:02:52.830
jemand macht, aber früher war das halt durchaus

01:02:52.830 --> 01:02:55.330
üblich da zu sagen, okay, ich rendere

01:02:55.330 --> 01:02:57.190
meinen Kram nicht nach JSON, sondern nach XML.

01:02:59.490 --> 01:03:01.010
Oder wie heißt dieses, es gibt auch

01:03:01.010 --> 01:03:01.850
ein Binär-JSON.

01:03:03.050 --> 01:03:03.570
B-JSON?

01:03:05.210 --> 01:03:06.210
JSON-B gibt es.

01:03:06.610 --> 01:03:25.410
Ja, nee, das ist, ach, ich hab's wieder vergessen, aber ja, es gibt irgendwie auch eine binäre Variante davon, die man auch mit Jungle Wrestling ganz gut verwenden konnte, da wurde es halt ein bisschen kleiner, aber ja, tatsächlich benutzen aber doch irgendwie alle JSON letztlich.

01:03:25.530 --> 01:03:46.950
Ja, aktuell. Ich bin da ehrlich gesagt ganz tiefenentspannt. Also um 2001 habe ich meine Diplomarbeit geschrieben und klar, was war das Thema? XML. Also damals ging alles um XML und auch das HTML sollte XML werden und so weiter. Dann bin ich ja so froh, dass dann dort irgendwie die Vernunft gesiegt hat und das XHTML sich nicht durchgesetzt hat.

01:03:46.950 --> 01:03:48.870
und eben, weil das ist

01:03:48.870 --> 01:03:50.810
am Endeffekt dann auch nur Krampf, wenn man

01:03:50.810 --> 01:03:52.930
das zu sehr in die Richtung treibt

01:03:52.930 --> 01:03:54.870
und wie gesagt, damals war

01:03:54.870 --> 01:03:56.870
alles mit XML, aktuell

01:03:56.870 --> 01:03:58.270
ist alles mit JSON und

01:03:58.270 --> 01:04:00.910
da bin ich auch ganz tiefenentspannt, dass da dann

01:04:00.910 --> 01:04:02.610
irgendwie auch nochmal was Neues kommt.

01:04:02.950 --> 01:04:04.170
So ist auf jeden Fall

01:04:04.170 --> 01:04:05.930
die Entwicklung aus meiner Sicht.

01:04:07.070 --> 01:04:08.770
Ja, naja, da ist

01:04:08.770 --> 01:04:09.170
noch nicht

01:04:09.170 --> 01:04:11.870
aller Tage Abend, was diese

01:04:11.870 --> 01:04:14.750
jetzt alle auf JSON geeinigt hätten,

01:04:14.830 --> 01:04:15.390
das sehe ich auch nicht so.

01:04:16.110 --> 01:04:17.850
Ich meine, ehrlich gesagt, ich finde es

01:04:17.850 --> 01:04:19.830
persönlich angenehmer als XML. XML war doch mal

01:04:19.830 --> 01:04:20.910
ein Stück schrecklicher.

01:04:23.990 --> 01:04:26.010
Das ist so ein Grund, wo ich sage, den Computer

01:04:26.010 --> 01:04:26.770
will ich nicht anfassen.

01:04:27.890 --> 01:04:29.130
Das ist komisch, ganz komisch.

01:04:30.350 --> 01:04:30.710
Wirklich.

01:04:31.790 --> 01:04:33.850
Ja, klar, da gab es die größten

01:04:33.850 --> 01:04:35.870
komischen Sachen wie XSLT

01:04:35.870 --> 01:04:37.850
und sowas, aber das ist lange her.

01:04:38.490 --> 01:04:40.010
Viel schlimmer als Assembly oder sowas.

01:04:43.890 --> 01:04:46.030
Tja, ja. Aber wir haben doch einige Sachen nicht erklärt.

01:04:46.110 --> 01:04:47.610
Und zwar, wie hieß der nochmal?

01:04:47.710 --> 01:04:50.750
Carsten Gross, glaube ich,

01:04:50.850 --> 01:04:52.390
weil er möchte wahrscheinlich vermeiden,

01:04:52.510 --> 01:04:54.310
dass man ihn tauern muss.

01:04:55.290 --> 01:04:55.690
Sorry.

01:04:57.710 --> 01:05:00.090
Jedenfalls hat er so einen Talk gehalten

01:05:00.090 --> 01:05:02.690
und da hat er auch viel über Haters gesprochen.

01:05:02.950 --> 01:05:04.010
Also Hater, ich habe einen noch.

01:05:04.430 --> 01:05:04.870
Entschuldigung.

01:05:05.870 --> 01:05:07.450
Das Akronym ist auch ein bisschen unglücklich.

01:05:07.610 --> 01:05:09.170
Ja, sehr gut.

01:05:09.790 --> 01:05:11.510
Was ist denn das und worum geht es denn da?

01:05:12.050 --> 01:05:13.730
Da hatten wir eigentlich schon drüber gesprochen.

01:05:14.090 --> 01:05:15.950
Ja, weil da gibt es ja schon Beispiele auch

01:05:15.950 --> 01:05:16.930
auf der Seite von htmx.

01:05:17.550 --> 01:05:19.770
Ich persönlich kann dazu halt nur sagen,

01:05:19.850 --> 01:05:21.550
dass ich es nicht weiß und mich interessiert es auch nicht.

01:05:22.030 --> 01:05:23.610
Das ist sein Steckenpferd

01:05:23.610 --> 01:05:25.390
und er zählt viel und redet viel.

01:05:26.050 --> 01:05:27.510
Aber mir ist es zu abstrakt.

01:05:28.130 --> 01:05:29.810
Ich halte mich aus den Diskussionen

01:05:29.810 --> 01:05:31.770
da auch raus, was das heißt, was das Hato ist

01:05:31.770 --> 01:05:32.210
oder irgendwas.

01:05:33.730 --> 01:05:35.550
Für mich ist HTTP greifbar,

01:05:35.710 --> 01:05:37.510
HTML ist für mich greifbar und so weiter.

01:05:38.370 --> 01:05:39.450
Aber das ist mir dann

01:05:39.450 --> 01:05:41.310
zu abstrakt und

01:05:41.310 --> 01:05:42.930
da kann ich nicht viel zu sagen.

01:05:44.710 --> 01:05:45.330
Wahrscheinlich haben wir

01:05:45.330 --> 01:05:47.390
tatsächlich darüber geredet, wenn das halt, also die Übersetzung

01:05:47.390 --> 01:05:49.350
von Haters ist

01:05:49.350 --> 01:05:51.470
Hypermedia at the Engine of Application State.

01:05:51.610 --> 01:05:53.290
Also da geht es so ein bisschen darum, dass halt

01:05:53.290 --> 01:05:55.070
tatsächlich die

01:05:55.070 --> 01:05:56.350
Quelle der Wahrheit dann

01:05:56.350 --> 01:05:59.090
an der richtigen Stelle steht, und zwar

01:05:59.090 --> 01:06:01.270
im HTML, und ich weiß auch nicht mehr,

01:06:01.350 --> 01:06:03.210
was er mit Hypermedia meint.

01:06:03.210 --> 01:06:04.250
Hypermedia ist im

01:06:04.250 --> 01:06:06.050
Webkontext HTML.

01:06:08.210 --> 01:06:09.130
Obwohl, die Quelle

01:06:09.130 --> 01:06:11.070
der Wahrheit ist für mich einfach Postgres.

01:06:13.470 --> 01:06:15.070
Das sind die Daten, da kann man den Strom

01:06:15.070 --> 01:06:16.850
ausschalten, dann kann man den Strom wieder

01:06:16.850 --> 01:06:18.870
anschalten, dann weiß ich, wo meine

01:06:18.870 --> 01:06:20.750
Daten sind, die sind im Postgres drin.

01:06:21.930 --> 01:06:22.970
Und ja, das ist

01:06:22.970 --> 01:06:24.310
dort, das ist eben

01:06:24.310 --> 01:06:25.830
meine Perspektive.

01:06:28.830 --> 01:06:30.830
Ja, aber genau, gut, das sind dann halt

01:06:30.830 --> 01:06:32.890
deine Datenhaltung, aber

01:06:32.890 --> 01:06:35.130
der Application State

01:06:35.130 --> 01:06:36.670
ist ja jetzt nicht unbedingt in der,

01:06:37.670 --> 01:06:38.950
da hast du ja auch noch andere Sachen, da hast du ja auch noch

01:06:38.950 --> 01:06:39.770
solche Sachen wie

01:06:39.770 --> 01:06:42.810
dein Cache oder du hast halt vielleicht

01:06:42.810 --> 01:06:44.850
irgendwelche Queues und

01:06:44.850 --> 01:06:46.350
du hast halt auch noch irgendwie eine Session

01:06:46.350 --> 01:06:48.650
und ganz viel Zeugs.

01:06:51.710 --> 01:06:52.810
Aber klar, natürlich,

01:06:53.410 --> 01:06:54.570
also, ja, die Frage ist halt,

01:06:55.010 --> 01:06:56.750
ja, also bei alles, was sozusagen im Browser

01:06:56.750 --> 01:06:58.830
passiert, ist halt in dem HTML halt irgendwie drin.

01:06:59.310 --> 01:07:00.650
Das ist halt so ein Ding, diese HATI

01:07:00.650 --> 01:07:02.830
ist Geschichte, aber ja, ich finde das auch

01:07:02.830 --> 01:07:04.990
ziemlich kompliziert und theoretisch

01:07:04.990 --> 01:07:06.750
und das ist sehr schwer, das zu erklären.

01:07:08.150 --> 01:07:08.930
Ich finde das ähnlich wie

01:07:08.930 --> 01:07:10.810
Dependency Injection, da kann man sich

01:07:10.810 --> 01:07:12.770
das hundertmal erklären lassen und dann

01:07:12.770 --> 01:07:15.070
sage ich immer, für mich ist es wie Konfigurierung.

01:07:16.170 --> 01:07:17.070
Aber keine Ahnung,

01:07:17.210 --> 01:07:18.870
das ist mir zu abstrakt dann einfach.

01:07:21.850 --> 01:07:22.950
Ja, weil man

01:07:22.950 --> 01:07:25.010
den Talk schaut und erklärt das halt so ein bisschen,

01:07:25.130 --> 01:07:27.130
das ist vielleicht ganz gut, wenn man das vielleicht so ein bisschen versteht.

01:07:27.510 --> 01:07:28.750
Aber den Talk müssen wir natürlich auch verlinken,

01:07:28.910 --> 01:07:30.110
der ist ja natürlich sehr bahnrecht.

01:07:30.950 --> 01:07:33.770
Ja, okay.

01:07:34.870 --> 01:07:36.730
Ja, aber da am besten hört man sich genau

01:07:36.730 --> 01:07:38.730
den Talk dann an und nicht uns, wie wir

01:07:38.730 --> 01:07:39.250
darüber reden.

01:07:39.970 --> 01:07:41.390
Ja, das ist wahrscheinlich so.

01:07:41.390 --> 01:07:42.990
Ich kann da nicht mitreden.

01:07:45.530 --> 01:07:48.790
Dann habe ich noch eine Frage irgendwo.

01:07:48.990 --> 01:07:52.030
Ich sehe da, wo sind die Grenzen?

01:07:52.470 --> 01:07:55.310
Wann sollte man tatsächlich auf React oder Vue umsteigen?

01:07:55.830 --> 01:07:57.770
Da kam vorher mal so eine Frage.

01:07:58.930 --> 01:08:01.250
Da sehe ich aktuell eigentlich keinerlei Grenzen.

01:08:02.950 --> 01:08:06.550
Es erinnert mich so, wie ich vor 20 Jahren mit Python angefangen habe.

01:08:06.770 --> 01:08:09.590
Und da war eben so eine Sache in der Firma.

01:08:09.770 --> 01:08:24.770
Wollen wir das nicht lieber mit Python machen, anstatt aus einer Mischung aus C, C++ und Shell-Skripten? Und dann hieß es, naja, da konnte ich ja bloß herausboxen, dass wir für den Prototypen Python nehmen. Aber danach muss es sozusagen dann mal richtig gemacht werden.

01:08:24.770 --> 01:08:27.310
Richtig, richtig, C++ und so.

01:08:28.190 --> 01:08:33.210
Ja, und das war ich sehr froh, dass ich diesen Kompromiss rausboxen konnte.

01:08:33.710 --> 01:08:37.530
Und im Endeffekt hat nie jemand dann nochmal nachgefragt,

01:08:37.650 --> 01:08:41.370
wir sollten das ja in C oder C++ machen, weil einfach die Kunden zufrieden waren.

01:08:42.190 --> 01:08:44.230
Das hat schnell funktioniert, war alles prima.

01:08:44.430 --> 01:08:47.090
Und da kamen reihenweise neue Wünsche von den Kunden,

01:08:48.090 --> 01:08:53.450
sodass dann das eben nie wirklich richtig gemacht werden musste,

01:08:53.450 --> 01:08:55.290
wo ich auch sehr froh

01:08:55.290 --> 01:08:57.310
drüber bin und so und ähnliches

01:08:57.310 --> 01:08:59.210
ist es jetzt auch hier. Jetzt könnte man sagen,

01:08:59.330 --> 01:09:01.410
ja dann, wenn man es richtig macht, dann müsste man es doch

01:09:01.410 --> 01:09:02.710
in Vue oder React machen, aber

01:09:02.710 --> 01:09:05.390
keine Ahnung, ich sehe da jetzt keinerlei

01:09:05.390 --> 01:09:05.770
Grenzen.

01:09:07.230 --> 01:09:07.590
Ja.

01:09:09.050 --> 01:09:10.450
Ich würde auch sagen,

01:09:10.610 --> 01:09:13.270
man kann damit wahrscheinlich

01:09:13.270 --> 01:09:15.030
für die allermeisten Sachen

01:09:15.030 --> 01:09:17.390
ausreichend viel machen. Ja, das einzige Problem ist wahrscheinlich,

01:09:17.450 --> 01:09:19.090
dass man wieder wie immer von vorne anfangen muss, dass

01:09:19.090 --> 01:09:21.330
einmal alles wieder schön mit der

01:09:21.330 --> 01:09:22.870
anderen Technologie bauen muss oder so, dass

01:09:22.870 --> 01:09:25.110
Change immer das Pain ist. Das war

01:09:25.110 --> 01:09:27.130
wahrscheinlich auch der Grund, warum die Leute und die

01:09:27.130 --> 01:09:29.130
Menschen bei dir dachten, mit C++ schreibt man bessere

01:09:29.130 --> 01:09:29.930
Web-Anwendungen oder so?

01:09:30.990 --> 01:09:32.650
Wenn es eine Web-Anwendung war, das war das natürlich nicht.

01:09:32.710 --> 01:09:35.010
Ja, das war damals auch

01:09:35.010 --> 01:09:37.010
im Web passiert, aber auch viel

01:09:37.010 --> 01:09:38.910
Backend, aber das war halt einfach

01:09:38.910 --> 01:09:41.150
so üblich. Das war unüblich

01:09:41.150 --> 01:09:43.170
und das Unübliche

01:09:43.170 --> 01:09:44.950
wird natürlich erstmal in Frage gestellt und

01:09:44.950 --> 01:09:46.790
da ist klar, ist erstmal kein Vertrauen da.

01:09:46.890 --> 01:09:49.010
Es ist ja immer so, wenn irgendwas neu ist, ist erstmal kein Vertrauen

01:09:49.010 --> 01:09:50.430
da und wenn

01:09:50.430 --> 01:09:52.910
je schneller etwas hypt, umso schneller

01:09:52.910 --> 01:09:54.910
ist auch die Wahrscheinlichkeit, dass es dann eben in zwei Jahren

01:09:54.910 --> 01:09:56.750
doch wieder weg ist. Naja, aber so haben wir jetzt immer schon

01:09:56.750 --> 01:09:58.430
gemacht, dass er Teil des Problems ist, der Lösung.

01:09:59.090 --> 01:10:00.790
Ja, aber ich würde auch sagen,

01:10:00.850 --> 01:10:02.830
dass es halt sehr, sehr mächtig, also ich würde

01:10:02.830 --> 01:10:04.730
auch sagen, dass es halt vielleicht

01:10:04.730 --> 01:10:07.070
einer der Gründe,

01:10:07.370 --> 01:10:09.090
warum halt so viel

01:10:09.090 --> 01:10:12.730
Frameworks,

01:10:12.930 --> 01:10:14.810
ja, Frameworks sind ja auch schon

01:10:14.810 --> 01:10:16.810
so Dinge, wo ich jetzt als Entwickler

01:10:16.810 --> 01:10:18.850
ehrlich gesagt sagen würde, das will

01:10:18.850 --> 01:10:19.870
ich gar nicht haben.

01:10:21.210 --> 01:10:22.610
Frameworks sind nicht meine Freunde.

01:10:23.130 --> 01:10:24.370
Und das ist mir durchaus klar.

01:10:24.750 --> 01:10:26.790
Ich will eigentlich möglichst wenig mit Frameworks

01:10:26.790 --> 01:10:28.310
zu tun haben. Also eins, das du kannst.

01:10:28.790 --> 01:10:29.910
Bitte? Eins, das du kannst.

01:10:30.290 --> 01:10:32.470
Ich will eigentlich keine Frameworks verwenden.

01:10:33.130 --> 01:10:34.930
Weil das Problem bei Frameworks

01:10:34.930 --> 01:10:36.750
ist natürlich, dass ich da halt eine richtig fiese,

01:10:36.750 --> 01:10:37.450
harte Kopplung,

01:10:38.090 --> 01:10:40.690
enge Kopplung dran habe und dass

01:10:40.690 --> 01:10:42.550
ich davon nicht mehr wegkomme. Und deswegen

01:10:42.550 --> 01:10:44.730
finde ich als Entwickler das natürlich

01:10:44.730 --> 01:10:45.410
gar nicht so angenehm.

01:10:46.650 --> 01:10:48.510
Auf der anderen Seite gibt es halt einen großen Druck,

01:10:48.650 --> 01:10:50.750
die zu verwenden. Aber der kommt ja meistens

01:10:50.750 --> 01:10:52.650
nicht von den Entwicklern, sondern der kommt ja meistens

01:10:52.650 --> 01:10:54.530
dann halt, und ich würde denken,

01:10:54.610 --> 01:10:56.050
dass bei den JavaScript-Frameworks ist das halt so.

01:10:57.150 --> 01:10:58.810
Das sind halt irgendwie

01:10:58.810 --> 01:11:00.870
Firmen,

01:11:01.030 --> 01:11:02.650
die halt vorher eine Applikation

01:11:02.650 --> 01:11:04.750
haben. Das habe ich jetzt auch aus der Nähe

01:11:04.750 --> 01:11:06.570
in letzter Zeit irgendwie oft

01:11:06.570 --> 01:11:08.310
bestaunen dürfen. Jetzt gerade was

01:11:08.310 --> 01:11:10.650
irgendwie in dieser Pandemie-Zeit

01:11:10.650 --> 01:11:12.610
halt irgendwie, die haben halt Applikationen

01:11:12.610 --> 01:11:14.310
so irgendwie halt tatsächlich in C++ geschrieben

01:11:14.310 --> 01:11:15.670
oder Java oder sowas,

01:11:16.910 --> 01:11:17.590
die auf

01:11:17.590 --> 01:11:19.090
Clients laufen,

01:11:19.550 --> 01:11:21.610
die auf dem Desktop laufen und

01:11:21.610 --> 01:11:23.710
die dann halt irgendwie mit einem Server reden

01:11:23.710 --> 01:11:26.030
oder halt irgendwas, was auch immer die dann tun.

01:11:26.630 --> 01:11:28.130
Und das funktioniert aber nicht so gut,

01:11:28.550 --> 01:11:30.070
weil irgendwie, wenn die Leute jetzt

01:11:30.070 --> 01:11:31.870
zu Hause sitzen, dann den kannst du dann zum Beispiel

01:11:31.870 --> 01:11:34.110
einfach nicht mehr so gut, also deren Rechner

01:11:34.110 --> 01:11:35.170
hast du nicht so richtig unter Kontrolle,

01:11:35.810 --> 01:11:38.130
dann irgendwie Netzwerk

01:11:38.130 --> 01:11:39.870
ist oft schlecht, irgendwie

01:11:39.870 --> 01:11:41.690
das funktioniert alles nicht so super.

01:11:42.070 --> 01:11:43.550
Dann hilft bloß halt so ein Citrix oder

01:11:43.550 --> 01:11:46.110
eine Desktop-Sache oder irgendwas.

01:11:46.530 --> 01:11:48.410
Genau, das ist dann eine Lösung, aber das ist halt auch

01:11:48.410 --> 01:11:49.870
schrecklich und

01:11:49.870 --> 01:11:52.230
im Zuge

01:11:52.230 --> 01:11:54.470
dieses Erkenntnisprozesses, dass dann

01:11:54.470 --> 01:11:56.510
viele sagen, oh, das ist ja alles ganz furchtbar, das funktioniert ja gar nicht,

01:11:57.190 --> 01:11:58.470
stellen jetzt ganz viele

01:11:58.470 --> 01:12:00.370
um auf webbasierte Geschichten, weil

01:12:00.370 --> 01:12:01.810
mit webbasierten Geschichten geht das halt.

01:12:02.410 --> 01:12:02.570
Klar.

01:12:03.430 --> 01:12:06.410
Und naja, wenn ich jetzt

01:12:06.410 --> 01:12:07.930
sozusagen irgendwie eine große

01:12:07.930 --> 01:12:09.910
grafische

01:12:09.910 --> 01:12:12.470
GUI-Anwendung umstelle

01:12:12.470 --> 01:12:14.310
halt auf irgendwas webbasiertes, naja,

01:12:14.610 --> 01:12:16.190
dann ist halt sehr naheliegend zu sagen,

01:12:16.350 --> 01:12:17.730
okay, ich habe hier mein Team mit irgendwie

01:12:17.730 --> 01:12:19.410
50, 100 Leuten, keine Ahnung, irgendwie

01:12:19.410 --> 01:12:21.970
ein paar Teams aufgeteilt und die haben halt

01:12:21.970 --> 01:12:24.310
ihren Build-Prozess und keine Ahnung,

01:12:24.410 --> 01:12:25.950
ihre Tools und die Architektur-Patterns, die sie halt

01:12:25.950 --> 01:12:27.850
irgendwie verwenden. Gibt es da nicht vielleicht

01:12:27.850 --> 01:12:30.030
irgendein Enterprise-Web-Framework,

01:12:30.090 --> 01:12:32.050
das ich verwenden kann, wo ich das dann quasi genauso

01:12:32.050 --> 01:12:34.090
machen kann? Und dann greifen wir

01:12:34.090 --> 01:12:34.770
halt vielleicht zu Angular

01:12:34.770 --> 01:12:37.550
irgendwie oder so, weil das halt so ähnlich ist.

01:12:37.690 --> 01:12:39.690
Und halt auch dieses ganze Framework

01:12:39.690 --> 01:12:41.390
irgendwie Sprech und

01:12:41.390 --> 01:12:43.390
Enterprise-Sprech halt da mit drin ist.

01:12:44.690 --> 01:12:45.830
Und das Problem

01:12:45.830 --> 01:12:47.890
dabei ist aber natürlich, dass man das eben nicht machen

01:12:47.890 --> 01:12:49.670
kann. Du kannst nicht einfach irgendwie eine große

01:12:49.670 --> 01:12:51.490
Applikation nehmen, du kannst halt irgendwie dann

01:12:51.490 --> 01:12:53.790
das quasi genauso, wie du es

01:12:53.790 --> 01:12:55.830
vorher gemacht hast, halt mit JavaScript machen und dann ist es halt

01:12:55.830 --> 01:12:57.570
eine Web-Anwendung. Das funktioniert halt nicht, sondern du musst

01:12:57.570 --> 01:12:59.770
eigentlich dir überlegen, okay, die

01:12:59.770 --> 01:13:01.930
muss dann halt anders funktionieren, weil Web-Anwendungen

01:13:01.930 --> 01:13:03.910
halt nun mal einfach anders funktionieren als diese

01:13:03.910 --> 01:13:05.150
klassischen

01:13:05.150 --> 01:13:07.710
Desktop-UI-Ideen. Ja, dann müsste jemand auf jeden Fall

01:13:07.710 --> 01:13:09.230
erstmal den Unterschied verstehen, was

01:13:09.230 --> 01:13:11.690
vielleicht schon eine Herausforderung ist. Und dann

01:13:11.690 --> 01:13:13.690
muss ja jemand, der den Unterschied verstanden hat, den Leuten, die das

01:13:13.690 --> 01:13:15.630
entscheiden, auch erklären, dass das auch die richtige

01:13:15.630 --> 01:13:17.510
Idee ist, das zu tun. Aber das Problem ist jetzt,

01:13:17.690 --> 01:13:19.750
stell dir vor, du bist derjenige, der zuständig ist für diese Entwickler

01:13:19.750 --> 01:13:21.570
und du weißt, die kennen jetzt aber ihr

01:13:21.570 --> 01:13:23.590
sonst was Framework halt und

01:13:23.590 --> 01:13:25.650
wie kriegst du die beschäftigt mit

01:13:25.650 --> 01:13:27.450
der Umstellung auf

01:13:27.450 --> 01:13:28.590
irgendwas Web-basiertes?

01:13:29.890 --> 01:13:31.610
Ohne, dass du die ein Jahr lang schulen

01:13:31.610 --> 01:13:33.370
musst oder keine Ahnung, wie der

01:13:33.370 --> 01:13:35.390
Produktivität so beeinträchtigt. Ich würde fürchten, das geht nicht so einfach.

01:13:35.750 --> 01:13:37.690
Ja, aber wenn du halt dann ganz verzweifelt

01:13:37.690 --> 01:13:39.090
genug bist, denkst du dir, vielleicht geht es mit Angular.

01:13:39.870 --> 01:13:41.510
Und dann sagst du... Ich würde sagen, ohne

01:13:41.510 --> 01:13:43.150
diese Schulung geht das nicht so einfach.

01:13:43.490 --> 01:13:45.490
Ja. Also es ist einfach eine schwierige Situation

01:13:45.490 --> 01:13:45.970
auch. Genau.

01:13:47.090 --> 01:13:49.350
Also wenn du die Sprache wechseln musst, ist das natürlich

01:13:49.350 --> 01:13:51.210
schon mal schwierig. Das heißt,

01:13:51.330 --> 01:13:53.310
vielleicht ist es gut tatsächlich, wenn man irgendwie vor

01:13:53.310 --> 01:13:54.870
Desktop-GUI-Anwendung

01:13:54.870 --> 01:13:56.050
in Python geschrieben hat.

01:13:56.890 --> 01:13:59.030
Dann kann man vielleicht auch Web-Anwendung in Python schreiben,

01:13:59.150 --> 01:14:01.310
obwohl ich auch schon finde, dass jetzt Django schon sehr anders ist

01:14:01.310 --> 01:14:03.110
als GUI-Sachen in Python schreiben,

01:14:03.170 --> 01:14:04.530
was man ja bestimmt unbedingt machen will.

01:14:06.610 --> 01:14:06.970
Naja.

01:14:08.510 --> 01:14:08.890
Also ich glaube,

01:14:09.110 --> 01:14:11.330
diesen Plattformwechsel, den kriegst du nicht so

01:14:11.330 --> 01:14:13.130
einfach hin. Also ich wüsste jetzt auch nicht so genau,

01:14:13.250 --> 01:14:14.870
wie ich jetzt eine Android-Anwendung

01:14:14.870 --> 01:14:16.170
entwickeln will in gut.

01:14:18.070 --> 01:14:19.170
Ja, klar, das ist

01:14:19.170 --> 01:14:19.870
nicht einfach, aber

01:14:19.870 --> 01:14:22.250
das ist eine

01:14:22.250 --> 01:14:23.250
Aufgabe.

01:14:25.050 --> 01:14:27.090
Aber langsam, oder sicher geht

01:14:27.090 --> 01:14:28.930
alles Richtung Web. Also für mich ist

01:14:28.930 --> 01:14:30.890
der Chromium mein neuer Desktop.

01:14:31.150 --> 01:14:32.990
Also ich schalte zwischen

01:14:32.990 --> 01:14:35.330
Tabs hin und her, die im Chromium

01:14:35.330 --> 01:14:36.850
drin sind. Und

01:14:36.850 --> 01:14:38.830
Native GUI habe ich nur noch den

01:14:38.830 --> 01:14:41.030
PyCharm und ansonsten

01:14:41.030 --> 01:14:41.510
eigentlich nichts.

01:14:41.610 --> 01:14:43.690
Du bist auch einer von diesen PyCharm-Nutzern, okay, verstehe.

01:14:43.950 --> 01:14:44.070
Ja.

01:14:44.710 --> 01:14:45.730
Ach, finde ich, kann man schon machen.

01:14:45.810 --> 01:14:47.930
Du hast ja auch in letzter Zeit viel PyCharm benutzt,

01:14:48.010 --> 01:14:49.010
ja, ja, ich habe das auch schon gemerkt.

01:14:49.590 --> 01:14:51.710
Ja, wobei, also ich meine, ich weiß nicht, wie dir das geht,

01:14:51.790 --> 01:14:53.210
also tatsächlich mich benervt bei PyCharm,

01:14:53.290 --> 01:14:54.810
dass es halt relativ langsam reagiert.

01:14:55.270 --> 01:14:57.210
Ja, das letzte, habe ich letztens irgendwo gelesen,

01:14:57.850 --> 01:14:59.370
hat jemand, David Beasley hat das, glaube ich,

01:14:59.430 --> 01:15:03.830
irgendwie in einem seiner Readmes zu irgendeinem anderen Softwareprojekt,

01:15:03.830 --> 01:15:06.150
hat er da sehr, sehr, sehr bösartige Dinge über Java gesagt.

01:15:06.710 --> 01:15:10.230
Und zwar meinte er so, ja, Java, ach, der spricht nicht von Java,

01:15:10.350 --> 01:15:12.010
sondern er sagte, es gibt ja so diese

01:15:12.010 --> 01:15:13.970
Programmiersprache, ihr wisst schon, sie reimt sich auf

01:15:13.970 --> 01:15:15.890
Lava und

01:15:15.890 --> 01:15:18.130
da ist es immer so, die erkennt man

01:15:18.130 --> 01:15:18.810
immer daran, dass

01:15:18.810 --> 01:15:22.070
also an diesem Moment

01:15:22.070 --> 01:15:23.730
peinlicher Stille,

01:15:24.150 --> 01:15:25.530
bevor die Lüfter dann losheulen,

01:15:25.670 --> 01:15:28.590
das ist halt...

01:15:28.590 --> 01:15:29.670
Obwohl, das

01:15:29.670 --> 01:15:32.070
Weitscham ist flüssig zu bedienen, also da kann man

01:15:32.070 --> 01:15:32.790
echt, findest du?

01:15:33.850 --> 01:15:35.910
Braucht man halt den aktuellen

01:15:35.910 --> 01:15:37.850
SSD, so und

01:15:37.850 --> 01:15:38.990
also doch, läuft eigentlich schon.

01:15:39.810 --> 01:16:02.230
Nee, also ich meine vor allen Dingen bei Pyjamas solche Sachen, wie man drückt auf irgendeinen Button oder man macht halt eine Tastenkombination. Also man macht zum Beispiel sowas wie irgendwie, bei mir ist es Command 0 oder Command 1 für irgendwie den Verzeichnisbaum aufmachen oder halt Git-Dings aufmachen, zumachen. Und ich habe immer das Gefühl, wenn ich das draufdrücke, da sind so 100 Millisekunden Verzögerung oder so, bevor da irgendwas passiert. Und das nervt fürchterlich, weil das halt, ja.

01:16:03.450 --> 01:16:05.110
Ich habe übrigens angefangen,

01:16:05.190 --> 01:16:06.930
Jochen, dieses Jahr, und das habe ich mir auch

01:16:06.930 --> 01:16:09.250
fest vorgenommen, mein VI einzurichten

01:16:09.250 --> 01:16:10.910
und mal zu gucken, ob ich den

01:16:10.910 --> 01:16:12.090
vernünftig zu laufen kriege.

01:16:13.570 --> 01:16:14.910
Ja, muss man machen.

01:16:15.250 --> 01:16:16.010
Ja, es nervt ein bisschen.

01:16:18.030 --> 01:16:19.050
Ansonsten, PyCharm finde ich

01:16:19.050 --> 01:16:21.030
eigentlich tatsächlich, nachdem ich das jetzt eine ganze Zeit lang benutzt

01:16:21.030 --> 01:16:22.670
habe, ziemlich, also von den Features

01:16:22.670 --> 01:16:24.970
und so, finde ich das total super. Da ist das echt gut.

01:16:26.670 --> 01:16:27.070
Es ist

01:16:27.070 --> 01:16:28.330
ziemlich complete und

01:16:28.330 --> 01:16:30.630
ja, ist alles durchdacht, aber

01:16:30.630 --> 01:16:32.790
irgendwie, dass es halt so ein bisschen, sich so ein bisschen

01:16:32.790 --> 01:16:34.950
äh, ja.

01:16:34.950 --> 01:16:36.850
Ich find's hässlich. Langsam anfühlt, ja gut,

01:16:36.890 --> 01:16:38.510
das ist halt eine andere, ja.

01:16:40.210 --> 01:16:40.930
Persönliches Empfinden, aber

01:16:40.930 --> 01:16:42.770
vielleicht kann ich auch so stylen, wie ich meine anderen Sachen style

01:16:42.770 --> 01:16:44.410
und dann macht das auch gar keinen Unterschied mehr.

01:16:45.010 --> 01:16:46.710
Ja, aber tatsächlich,

01:16:46.810 --> 01:16:48.850
das mit Chromium ist halt neu, deshalb ich meine da auch

01:16:48.850 --> 01:16:50.750
da irgendwie VS Code, ich weiß nicht, ob du

01:16:50.750 --> 01:16:52.770
schon mal VS Code ausprobiert hast?

01:16:53.630 --> 01:16:55.050
Ich hab's mal ausprobiert,

01:16:55.190 --> 01:16:55.330
aber

01:16:55.330 --> 01:16:58.410
ja, mehr kann ich nicht dazu sagen.

01:16:58.670 --> 01:17:00.990
Ja, ich hab meistens auch, eigentlich gar keine Ahnung,

01:17:00.990 --> 01:17:02.350
ich muss das auch mal, es steht auch auf der Liste,

01:17:02.790 --> 01:17:03.730
aber kommt nach wie ein dran.

01:17:05.670 --> 01:17:06.710
Ja, weil da ist

01:17:06.710 --> 01:17:08.730
es ja auch irgendwie ein Krumm drunter und das

01:17:08.730 --> 01:17:10.350
funktioniert eigentlich tatsächlich auch ziemlich

01:17:10.350 --> 01:17:12.390
gut. Ich würde sagen, tatsächlich,

01:17:12.390 --> 01:17:14.690
es ist nicht so komplett

01:17:14.690 --> 01:17:16.730
wie PyCharm, es ist auch nicht so durchdacht

01:17:16.730 --> 01:17:18.950
und so, aber es ist

01:17:18.950 --> 01:17:20.310
tatsächlich, wenn man da irgendwie

01:17:20.310 --> 01:17:22.530
Command-B oder das ist schneller als

01:17:22.530 --> 01:17:23.290
bei PyCharm.

01:17:23.930 --> 01:17:26.350
Ja, kann schon sein, aber

01:17:26.350 --> 01:17:28.510
beim Laptop und auch selbst auf meinem

01:17:28.510 --> 01:17:30.490
Vorgänger ging es eigentlich gut. Er hatte

01:17:30.490 --> 01:17:32.550
mal irgendwie Probleme, also irgendein Verzeichnis

01:17:32.550 --> 01:17:34.690
indiziert hat, wo er eigentlich

01:17:34.690 --> 01:17:35.810
rein indizieren sollte.

01:17:36.170 --> 01:17:37.770
Da hat er ganz schön zu tun gehabt.

01:17:38.770 --> 01:17:40.670
Aber das kann man dann auch exkluden, dass er da

01:17:40.670 --> 01:17:42.450
nicht reingucken soll, weil da eben

01:17:42.450 --> 01:17:44.330
zigtausend Dateien drin sind und dann

01:17:44.330 --> 01:17:45.730
hat er auch auf dem Wettbewerb.

01:17:46.870 --> 01:17:47.950
Kann ich erstmal nicht glauben.

01:17:47.950 --> 01:17:49.830
Vielleicht habe ich auch irgendwas falsch konfiguriert, das kann natürlich auch sein.

01:17:50.170 --> 01:17:52.730
Was ich auch mal hatte, da hat es mir immer den Akku leer gesaugt.

01:17:52.850 --> 01:17:53.970
Da habe ich die

01:17:53.970 --> 01:17:56.310
JVM für Intel

01:17:56.310 --> 01:17:57.550
auf meinem

01:17:57.550 --> 01:18:00.590
ARM

01:18:00.590 --> 01:18:02.490
Mac verwendet.

01:18:02.550 --> 01:18:04.890
das lief dann in der Emulation und das war

01:18:04.890 --> 01:18:06.490
irgendwie auch ganz schrecklich, das hatte, da dachte ich mir so,

01:18:06.550 --> 01:18:08.530
hä, warum zieht denn das so viel Akku, das ist ja irgendwie

01:18:08.530 --> 01:18:10.730
und dann musste ich eine andere JVM

01:18:10.730 --> 01:18:12.510
nehmen und dann war es gut und dann

01:18:12.510 --> 01:18:14.810
funktioniert das auch, aber ja.

01:18:15.510 --> 01:18:16.710
Ja, aber ein, was

01:18:16.710 --> 01:18:18.470
fiel mir noch ein zu

01:18:18.470 --> 01:18:20.610
JavaScript und den ganzen

01:18:20.610 --> 01:18:22.770
Spaßsachen, was ich ja

01:18:22.770 --> 01:18:24.770
schön finde, dass das HTML sich immer

01:18:24.770 --> 01:18:25.750
noch weiterentwickelt

01:18:25.750 --> 01:18:28.410
und vorangetrieben wird,

01:18:29.070 --> 01:18:30.350
sodass man im Endeffekt dann

01:18:30.350 --> 01:18:31.930
weniger schreiben muss.

01:18:33.390 --> 01:18:35.030
Zum Beispiel ein Date-Picker

01:18:35.030 --> 01:18:36.690
oder irgendwas. Wenn man danach sucht, da gibt es

01:18:36.690 --> 01:18:38.730
tausend Implementierungen

01:18:38.730 --> 01:18:39.770
von Date-Pickern.

01:18:40.730 --> 01:18:42.830
Aber ich als Web-Anwender will

01:18:42.830 --> 01:18:44.290
einfach dann nur fertig werden und da

01:18:44.290 --> 01:18:46.310
ist es einfach schön, wenn ich sagen kann,

01:18:46.410 --> 01:18:48.470
Input-Type ist gleich Date zum Beispiel

01:18:48.470 --> 01:18:50.590
oder eben Input

01:18:50.590 --> 01:18:52.310
Date-Time-Local, um eben

01:18:52.310 --> 01:18:54.570
Date und Zeite zu picken

01:18:54.570 --> 01:18:56.770
und das finde ich

01:18:56.770 --> 01:18:58.610
spannend, dass sich da halt das immer noch alles entwickelt

01:18:58.610 --> 01:19:01.450
und die Spezifikation

01:19:01.460 --> 01:19:02.360
gibst. Und sicherlich

01:19:02.360 --> 01:19:05.300
ist es leider noch so,

01:19:05.440 --> 01:19:06.960
dass eben unter iOS

01:19:06.960 --> 01:19:09.260
kein richtiger Chrome

01:19:09.260 --> 01:19:11.180
verfügbar ist. Das ist ein bisschen schade.

01:19:11.360 --> 01:19:13.180
Dieses Apple

01:19:13.180 --> 01:19:14.060
Browser Ban.

01:19:14.940 --> 01:19:17.080
Aber kann durchaus sein,

01:19:17.240 --> 01:19:18.320
dass da die EU

01:19:18.320 --> 01:19:21.220
dem bald einen Riegel vorschiebt

01:19:21.220 --> 01:19:22.580
mit dem Digital Market Act.

01:19:23.820 --> 01:19:25.040
Es wäre sehr schön,

01:19:25.260 --> 01:19:27.300
weil da kannst du

01:19:27.300 --> 01:19:29.520
als einzelner Webentwickler ja auch von nieder springen

01:19:29.520 --> 01:19:31.400
und vielleicht kommt auch

01:19:31.400 --> 01:19:33.100
doch mal von der Legislative da irgendwas,

01:19:33.340 --> 01:19:34.660
weil es ist einfach ein Markt,

01:19:34.660 --> 01:19:36.400
der Apple Play Store und

01:19:36.400 --> 01:19:38.500
es ist ein globaler Markt und

01:19:38.500 --> 01:19:40.720
das dann dort zu diskriminieren

01:19:40.720 --> 01:19:42.040
gegenüber anderen Browsern

01:19:42.040 --> 01:19:44.680
ist einfach nicht in Ordnung.

01:19:45.000 --> 01:19:46.640
Also hoffen wir mal,

01:19:46.800 --> 01:19:48.260
dass dort das vorwärts geht,

01:19:48.900 --> 01:19:50.320
weil dann ist nochmal mehr Druck da,

01:19:50.840 --> 01:19:52.520
dass die Safari

01:19:52.520 --> 01:19:54.400
Engine mal vorwärts macht und dass die

01:19:54.400 --> 01:19:56.840
da nicht das absichtlich

01:19:56.840 --> 01:19:58.780
blockieren können. Es wird ja absichtlich blockiert,

01:19:59.460 --> 01:20:00.680
damit sie weiterhin schön Geld

01:20:00.680 --> 01:20:02.680
verdienen innerhalb ihres App-Stores

01:20:02.680 --> 01:20:04.780
und darum hat Apple überhaupt keinen Bock

01:20:04.780 --> 01:20:06.380
drauf auf Progressive Web Apps.

01:20:07.320 --> 01:20:08.760
Das ist halt vielen Leuten nicht bekannt.

01:20:09.620 --> 01:20:10.560
Wenn man mit Leuten

01:20:10.560 --> 01:20:12.620
darüber spricht, die jetzt nicht aus dem

01:20:12.620 --> 01:20:14.660
Software-Bereich kommen, die verstehen das erstmal gar nicht,

01:20:14.720 --> 01:20:15.480
von was man da spricht.

01:20:16.700 --> 01:20:18.520
Und naja, hoffen wir mal, dass da

01:20:18.520 --> 01:20:20.200
irgendwie das in der Richtung auch

01:20:20.200 --> 01:20:22.480
weitergeht, weil

01:20:22.480 --> 01:20:24.320
dann geht es eben Richtung

01:20:24.320 --> 01:20:26.540
Progressive Web Apps. Gut, okay,

01:20:26.620 --> 01:20:27.740
das ist natürlich wieder eine Sache.

01:20:28.880 --> 01:20:30.140
Aufhänger HTMX, also

01:20:30.140 --> 01:20:32.000
HDMI-XS ist sozusagen

01:20:32.000 --> 01:20:33.720
auf keinen Fall

01:20:33.720 --> 01:20:35.980
Offline-First oder irgendwas, was man braucht,

01:20:36.100 --> 01:20:37.080
die Verbindung zum Server,

01:20:37.980 --> 01:20:39.140
das ist sozusagen, ja,

01:20:40.120 --> 01:20:41.460
sind ganz zentrale Sachen

01:20:41.460 --> 01:20:42.900
an dieser Stelle.

01:20:43.880 --> 01:20:45.600
Wenn man dann richtografisch Web-App

01:20:45.600 --> 01:20:47.360
schaut, dass man sagt, okay, man hat eine

01:20:47.360 --> 01:20:48.220
Offline-Fähige

01:20:48.220 --> 01:20:51.500
Web-Anwendung, klar, dann ist es

01:20:51.500 --> 01:20:52.660
mit JavaScript natürlich besser.

01:20:54.160 --> 01:20:54.300
Aber

01:20:54.300 --> 01:20:57.580
99% der Fälle

01:20:57.580 --> 01:20:58.880
braucht man das eigentlich auch gar nicht.

01:20:59.280 --> 01:21:00.920
Offline-First war auch mal eine ganze Zeit lang.

01:21:01.640 --> 01:21:02.960
Das kam irgendwie so aus dieser ganzen

01:21:02.960 --> 01:21:04.380
Couch-DB-Ecke und

01:21:04.380 --> 01:21:06.800
eigentlich finde ich den Ansatz ja auch ganz

01:21:06.800 --> 01:21:08.000
interessant irgendwie.

01:21:09.440 --> 01:21:10.800
Halt quasi auch

01:21:10.800 --> 01:21:12.680
eine Datenbank einfach auf der kleinen Seite zu haben

01:21:12.680 --> 01:21:14.760
und da gibt es ja auch diverse Geschichten in den Browsern.

01:21:14.920 --> 01:21:16.780
Also gibt es ja auch irgendwie, weiß ich nicht mehr,

01:21:17.140 --> 01:21:18.820
quasi so ein SQL-Lite

01:21:18.820 --> 01:21:20.840
haben die meisten irgendwie drin, was man verwenden kann

01:21:20.840 --> 01:21:22.660
und dann synchronisiert man das halt

01:21:22.660 --> 01:21:24.900
wieder zurück irgendwie und so. Das ist eigentlich auch alles ganz nett.

01:21:25.780 --> 01:21:26.160
Aber

01:21:26.160 --> 01:21:28.820
ja, tatsächlich

01:21:28.820 --> 01:21:31.980
genau, war das dann aber doch nie so

01:21:31.980 --> 01:21:33.920
nötig, weil inzwischen ist ja doch fast überall Netz

01:21:33.920 --> 01:21:35.040
und es funktioniert eigentlich auch ganz gut.

01:21:38.020 --> 01:21:38.460
Verzehnfacht

01:21:38.460 --> 01:21:40.080
einfach die Komplexität

01:21:40.080 --> 01:21:40.740
und den Aufwand.

01:21:41.820 --> 01:21:44.080
Und drum geht eigentlich alles Richtung

01:21:44.080 --> 01:21:45.780
ständige Verbindung

01:21:45.780 --> 01:21:47.960
zum Internet. Also es gibt ja ganz

01:21:47.960 --> 01:21:49.920
wenige Sachen, wo es eigentlich wirklich braucht, wenn ich

01:21:49.920 --> 01:21:52.060
will. Ich will, wenn ich in der Bahn bin und habe keine Netz

01:21:52.060 --> 01:21:54.300
Anbindung, will ich eine WhatsApp-Nachricht

01:21:54.300 --> 01:21:56.040
schreiben können oder ich will eine E-Mail schreiben und

01:21:56.040 --> 01:21:58.140
lesen können. Aber für alle möglichen

01:21:58.140 --> 01:21:59.960
anderen Sachen brauchst du einfach auch den Server,

01:22:00.060 --> 01:22:01.520
weil der hat ja die aktuellen Informationen

01:22:01.520 --> 01:22:03.460
und du kannst ja nicht aus den Fingern saugen

01:22:03.460 --> 01:22:04.780
und brauchst halt eben

01:22:04.780 --> 01:22:06.480
die Zwergverbindung.

01:22:07.360 --> 01:22:09.660
Und drum klappt das erstmal so

01:22:09.660 --> 01:22:11.520
eigentlich ganz gut,

01:22:11.800 --> 01:22:13.580
auch kann man ganz gut viel abdecken.

01:22:14.440 --> 01:22:15.780
Eine Frage habe ich mir noch aufgeschrieben,

01:22:16.720 --> 01:22:17.800
ganz zentral ist eigentlich gut,

01:22:17.880 --> 01:22:19.260
also wir erstellen jetzt HTML

01:22:19.260 --> 01:22:21.620
serverseitig und irgendwie bin ich

01:22:21.620 --> 01:22:23.080
persönlich da jetzt auch noch gar nicht glücklich,

01:22:24.200 --> 01:22:25.180
mit der Methode

01:22:25.180 --> 01:22:27.100
HTML serverseitig zu erstellen,

01:22:27.380 --> 01:22:34.140
Also ich habe da jetzt, aktuell verwende ich von Django zum Beispiel das Format unterstrich HTML.

01:22:34.780 --> 01:22:39.820
Das finde ich ganz praktisch, weil da eben dieses Save-String ausgewertet wird.

01:22:39.820 --> 01:22:48.560
Also da wird alles, was gequotet werden soll, wird automatisch gequotet, außer es ist eben ein Save-String, wo explizit klar ist, dass der soll nicht gequotet werden.

01:22:49.820 --> 01:22:51.380
Und das ist für mich erstmal ganz schön.

01:22:52.120 --> 01:22:55.300
Aber was ich auch schön finde, sind diese F-Strings in Python.

01:22:56.800 --> 01:23:21.740
Und da fehlt mir aktuell noch so eine Mischung, ich hätte gerne so eine Mischung, dass ich sage, also im Python will ich HTML erstellen, also ich will das jetzt nicht auslagern, ich will da nicht immer zwischen zwei Dateien hin und her wechseln, einmal in mein Template-File und dann mein Python-File, also ich würde gerne das HTML im Python erstellen und das würde ich am liebsten mit F-Strings machen, haut aber halt nicht hin, weil das F-Strings hat ja keine Ahnung, was es quoten soll oder nicht.

01:23:21.740 --> 01:23:24.340
und da habe ich bis jetzt

01:23:24.340 --> 01:23:26.360
auch noch nicht so richtig die optimale Lösung

01:23:26.360 --> 01:23:26.740
gefunden.

01:23:28.140 --> 01:23:30.380
Ja, ne, habe ich auch noch nicht, weiß nicht genau,

01:23:30.520 --> 01:23:31.740
ob das mit F-Strings,

01:23:32.260 --> 01:23:34.280
also tatsächlich in JavaScript geht das

01:23:34.280 --> 01:23:36.500
wahrscheinlich, da gibt es ja diese Template Literal

01:23:36.500 --> 01:23:37.280
Strings, ne,

01:23:38.080 --> 01:23:39.720
damit könnte man das wahrscheinlich machen.

01:23:40.600 --> 01:23:42.020
Ja, wäre schön, wenn es sowas

01:23:42.020 --> 01:23:43.100
gibt. Aber so einen Teil gibt es das nicht.

01:23:44.320 --> 01:23:44.560
Ja.

01:23:45.860 --> 01:23:47.300
Ja, ja, ja, ja, ne.

01:23:48.800 --> 01:23:49.720
Ne, weiß ich auch nicht.

01:23:50.160 --> 01:23:51.260
Aber ja, das stimmt.

01:23:51.580 --> 01:23:53.240
Ich meine, ja, das ist die Frage, ob das

01:23:53.240 --> 01:23:55.480
ist es, alle machen das jetzt halt

01:23:55.480 --> 01:23:56.480
über diese Tablet-Geschichten,

01:23:57.000 --> 01:23:58.840
aber ob das jetzt

01:23:58.840 --> 01:24:01.480
der beste Weg ist, weiß ich

01:24:01.480 --> 01:24:01.740
auch nicht.

01:24:02.600 --> 01:24:05.480
Also im Kontext von HTMX ist es

01:24:05.480 --> 01:24:07.380
bei mir so, ich erstelle kleine Methoden,

01:24:07.480 --> 01:24:08.980
die kleine Schnipsel zurückgeben.

01:24:09.340 --> 01:24:10.060
Ja, warum brauchen die einen extra Pfeil?

01:24:10.060 --> 01:24:13.460
Und dann sind das eben 6-7 Zeilen und für diese 6-7 Zeilen

01:24:13.460 --> 01:24:15.580
dann nochmal eine extra Datei

01:24:15.580 --> 01:24:17.520
öffnen, das tut dann den Fluss

01:24:17.520 --> 01:24:19.360
beim Softwareentwicklung,

01:24:19.580 --> 01:24:21.480
bei der Softwareentwicklung irgendwie behindern.

01:24:21.800 --> 01:24:24.060
Aber kannst du nicht auch einfach ein Django-Template

01:24:24.060 --> 01:24:25.700
quasi in den String reinschreiben und

01:24:25.700 --> 01:24:27.540
den dann rendern? Weil du musst es ja nicht in den

01:24:27.540 --> 01:24:29.300
File reintun. Könnte ich auch, ja.

01:24:29.740 --> 01:24:31.560
Klar, könnte ich machen, aber dann muss ich

01:24:31.560 --> 01:24:33.480
dem halt auch wieder einen Kontext geben und dann muss ich

01:24:33.480 --> 01:24:34.300
immer wieder schreiben,

01:24:35.260 --> 01:24:37.400
Name ist gleich Name und

01:24:37.400 --> 01:24:39.760
Login ist gleich Login und

01:24:39.760 --> 01:24:41.480
ähnlichen Spaß muss ich dem

01:24:41.480 --> 01:24:42.640
Kontext reingeben.

01:24:43.420 --> 01:24:44.760
Kann man machen, funktioniert auch.

01:24:46.320 --> 01:24:47.300
Aber irgendwie muss der

01:24:47.300 --> 01:24:49.580
seine Variablen bekommen.

01:24:49.680 --> 01:24:51.440
Man könnte da vielleicht einfach Globals übergeben.

01:24:52.480 --> 01:24:53.380
Ja, aber dann

01:24:53.380 --> 01:24:55.740
weiß die IDE nicht mehr, dass diese Variable

01:24:55.740 --> 01:24:56.540
eigentlich verwendet wurde.

01:24:57.240 --> 01:24:59.920
Und tut die hellgrau anzeigen,

01:25:00.000 --> 01:25:01.780
so nach dem Motto, hey, die kannst du doch eigentlich wegwerfen,

01:25:01.840 --> 01:25:02.580
die Variable hier.

01:25:03.760 --> 01:25:04.840
Ja, auch nicht ideal.

01:25:06.580 --> 01:25:07.640
Gibt es noch

01:25:07.640 --> 01:25:09.000
Entwicklungsmöglichkeiten an der Stelle?

01:25:12.000 --> 01:25:13.740
Ja, aber

01:25:13.740 --> 01:25:15.200
genau das hat mich gerade

01:25:15.200 --> 01:25:17.680
diese Offline-Geschichte

01:25:17.680 --> 01:25:19.660
drauf gebracht. Ich weiß gar nicht, ob das Leute machen, aber

01:25:19.660 --> 01:25:21.660
ehrlich gesagt würde ich das auch gerne mal ausprobieren.

01:25:21.760 --> 01:25:22.880
Im Grunde kann man ja auch,

01:25:23.560 --> 01:25:24.620
man kann ja auch,

01:25:25.840 --> 01:25:27.620
das ist wieder dann das Problem mit der Paketierung.

01:25:27.760 --> 01:25:29.380
Man kann in Python nicht einfach ein Binary bauen,

01:25:29.700 --> 01:25:31.560
aber wenn ich mir jetzt so überlege,

01:25:31.720 --> 01:25:33.460
SQLite ist ja, also klar,

01:25:33.460 --> 01:25:35.300
kann man nicht so concurrent

01:25:35.300 --> 01:25:36.220
draufschreiben, aber

01:25:36.220 --> 01:25:39.040
ist auch sehr mächtig und

01:25:39.040 --> 01:25:41.140
kann wahrscheinlich irgendwie das meiste, was man so

01:25:41.140 --> 01:25:43.400
braucht, wenn man jetzt irgendwie eine Datenbank

01:25:43.400 --> 01:25:44.520
für eine Webgeschichte hat,

01:25:45.200 --> 01:25:46.960
kann man nicht einfach die komplette Web-Applikation

01:25:46.960 --> 01:25:48.740
shippen mit einer SQLite und den Daten

01:25:48.740 --> 01:25:50.880
drin und dann sagen

01:25:50.880 --> 01:25:52.820
so, hier startet das Ding und dann

01:25:52.820 --> 01:25:54.760
geht das halt auf Localhost, hat man

01:25:54.760 --> 01:25:56.020
halt eigentlich sozusagen die eigene

01:25:56.020 --> 01:25:58.800
Seite und dann, wenn irgendwas geschrieben wird,

01:25:58.880 --> 01:26:00.760
kann man es ja einmal in SQLite schreiben, aber halt auch nochmal

01:26:00.760 --> 01:26:02.840
irgendwie übers Netz oder so oder man synchronisiert die Daten

01:26:02.840 --> 01:26:03.320
irgendwie.

01:26:03.920 --> 01:26:06.740
Das ist natürlich viel möglich, weil prinzipiell kannst du das

01:26:06.740 --> 01:26:08.840
also, weil da wird sich auch noch viel entwickeln

01:26:08.840 --> 01:26:10.700
nach WebAssembly alles kompilieren und kannst

01:26:10.700 --> 01:26:13.160
prinzipiell auch wahrscheinlich Python nach WebAssembly

01:26:13.160 --> 01:26:14.740
kompilieren. Ja, das haben ja auch schon Leute gemacht.

01:26:14.840 --> 01:26:16.560
Wuppdiwupps, alles paketieren und dann

01:26:16.560 --> 01:26:18.320
haust du schon noch ein Postgres hinterher und

01:26:18.320 --> 01:26:20.800
dann

01:26:20.800 --> 01:26:22.780
lädt der Kunde erstmal hier

01:26:22.780 --> 01:26:24.340
50 Megabyte runter.

01:26:25.400 --> 01:26:26.600
Und ich meine, obwohl 50 Megabyte

01:26:26.600 --> 01:26:27.720
sind auch schnell runtergeladen.

01:26:28.940 --> 01:26:30.660
Und dann hast du dort

01:26:30.660 --> 01:26:32.900
alles drinnen im WebAssembly

01:26:32.900 --> 01:26:34.720
aus. Ich bin

01:26:34.720 --> 01:26:35.820
gespannt, was sich da entwickelt.

01:26:37.100 --> 01:26:37.580
Ja.

01:26:38.480 --> 01:26:38.780
Naja.

01:26:40.660 --> 01:26:41.340
Tja, tja.

01:26:42.220 --> 01:26:44.580
Kann man auf jeden Fall sich auch noch eine Menge interessante

01:26:44.580 --> 01:26:46.180
Dinge überlegen, was man damit alles machen kann.

01:26:47.500 --> 01:26:48.500
Ja, ich glaube, im Platinum X

01:26:48.500 --> 01:26:49.800
sind wir so ein bisschen fast ruhig.

01:26:50.280 --> 01:26:51.920
Ja. Ich hatte aber beim

01:26:51.920 --> 01:26:54.540
Thomas noch auf seinem Repo noch so ein paar

01:26:54.540 --> 01:26:56.160
Sachen entdeckt, wie sein Working Out Loud

01:26:56.160 --> 01:26:58.320
Repo, wo er so ein bisschen dann

01:26:58.320 --> 01:27:00.520
Sachen verlinkt und dann auch die Pausen-Tipps entdeckt

01:27:00.520 --> 01:27:02.400
und so, wo mich einige Sachen an Jochen's

01:27:02.400 --> 01:27:04.520
Philosophie erinnerten. Und was

01:27:04.520 --> 01:27:06.040
ich entdeckt habe, war, du, den

01:27:06.040 --> 01:27:08.560
PDM, den kannte

01:27:08.560 --> 01:27:10.000
ich tatsächlich noch nicht. Was ist denn das?

01:27:11.500 --> 01:27:12.640
Nochmal, jetzt habe ich dich schlecht verstanden.

01:27:12.720 --> 01:27:15.020
den PDM, das ist ein Python-Distro-Manager

01:27:15.020 --> 01:27:15.580
oder sowas.

01:27:16.800 --> 01:27:18.100
Oder was macht der eigentlich? Ich muss mal gucken.

01:27:19.020 --> 01:27:20.680
PDM. PDM, ja. Also ein

01:27:20.680 --> 01:27:22.760
Paketmanager, den du entdeckt hast. Als Alternative

01:27:22.760 --> 01:27:24.400
zu Poetry hast du den beworben.

01:27:25.800 --> 01:27:26.720
Beworben habe ich den, glaube ich, nicht.

01:27:26.780 --> 01:27:28.480
Ich habe das mal aufgelistet. Also ja, genau.

01:27:29.100 --> 01:27:30.240
Genau. Nee, ich war einfach da

01:27:30.240 --> 01:27:32.480
unsicher. Genau.

01:27:32.700 --> 01:27:34.600
Bei mir ist es öfter so, oder geht ja

01:27:34.600 --> 01:27:36.560
wahrscheinlich vielen so, man steht da, nehme ich

01:27:36.560 --> 01:27:38.120
jetzt Tool A, nehme ich Tool B, nehme ich

01:27:38.120 --> 01:27:39.900
0C und da ist

01:27:39.900 --> 01:27:42.140
seit einer Weile mache ich das so, dann

01:27:42.140 --> 01:27:45.760
gehe ich zu GitHub, zu meinem Account, erstelle da ein Repository,

01:27:46.560 --> 01:27:49.580
was im Endeffekt aus einer Readme besteht und dann schreibe ich da auf,

01:27:50.240 --> 01:27:54.180
was für Möglichkeiten überhaupt existieren. Das hilft mir,

01:27:54.340 --> 01:27:58.120
um meine Gedanken zu strukturieren. Im Endeffekt ist es erstmal eigentlich fast

01:27:58.120 --> 01:28:01.760
ein Zettel für mich, das ich dann da habe und wenn ich die Web-Recherche

01:28:01.760 --> 01:28:06.500
zwei Tage oder drei Tage später weitermache, habe ich da erstmal einen Leitfaden, wo ich stehen geblieben bin.

01:28:07.660 --> 01:28:09.960
Aber es ist immer ganz nett, das ein bisschen stehen zu lassen, weil

01:28:09.960 --> 01:28:12.060
ein Jahr später braucht man es vielleicht dann wieder oder so.

01:28:12.140 --> 01:28:12.640
Und dann weiß ich es.

01:28:13.540 --> 01:28:16.020
Würde ich es bei mir auf dem Zettel schreiben, würde ich es am Schreibtisch oder so

01:28:16.020 --> 01:28:16.400
nicht finden.

01:28:17.380 --> 01:28:19.340
Also Version Control ist für sowas schon genau das Richtige.

01:28:19.620 --> 01:28:21.820
Aber jedenfalls bin ich da, weil wir schon ein paar Mal auch über

01:28:21.820 --> 01:28:24.000
so Paketierungssachen gesprochen haben, über das PDM.

01:28:24.140 --> 01:28:26.180
Also das heißt Python Development

01:28:26.180 --> 01:28:28.040
Habe ich auch noch

01:28:28.040 --> 01:28:28.640
nicht gehört, Karl.

01:28:29.700 --> 01:28:30.740
Jetzt ist das M wieder weg.

01:28:32.740 --> 01:28:34.220
Das hast du

01:28:34.220 --> 01:28:35.400
bei den Python-Tipps gefunden.

01:28:35.600 --> 01:28:36.700
Ja, PDM.

01:28:39.140 --> 01:28:39.500
Moment.

01:28:39.960 --> 01:28:42.280
Python Development Master

01:28:42.280 --> 01:28:42.760
heißt es.

01:28:44.100 --> 01:28:45.580
Als Alternative für

01:28:45.580 --> 01:28:47.800
Poetry. Ich habe noch nicht genau verstanden, wovor das ist.

01:28:47.860 --> 01:28:49.560
Deswegen war ich neugierig, weil

01:28:49.560 --> 01:28:52.020
wir ja mit Poetry in letzter Zeit so ein paar

01:28:52.020 --> 01:28:52.620
Probleme hatten.

01:28:54.480 --> 01:28:55.980
Und ob das vernünftig

01:28:55.980 --> 01:28:58.060
funktioniert. Aber wenn es

01:28:58.060 --> 01:29:00.040
dir nicht sofort einfällt, dann hast du es wahrscheinlich auch gar nicht.

01:29:00.220 --> 01:29:02.180
Nee, ich habe damals recherchiert

01:29:02.180 --> 01:29:03.700
an einem Abend, das mal so aufgeschrieben.

01:29:04.160 --> 01:29:06.120
Aber ich kann da jetzt keine Details dazu

01:29:06.120 --> 01:29:08.080
sagen. Und genau, mir geht es genauso.

01:29:08.200 --> 01:29:10.360
Ich tu nämlich den Artikel jetzt hier mal kurz aktualisieren

01:29:10.360 --> 01:29:11.000
mit dem Poetry.

01:29:12.200 --> 01:29:14.320
Ich bin aktuell einfach bei

01:29:14.320 --> 01:29:16.220
PIP und das klappt auch

01:29:16.220 --> 01:29:18.320
soweit eigentlich ganz gut. Also das Poetry

01:29:18.320 --> 01:29:19.940
konnte ich nicht

01:29:19.940 --> 01:29:21.560
so richtig da...

01:29:21.560 --> 01:29:24.160
Also ich verwende es nach wie vor. Ich finde nur, man muss halt

01:29:24.160 --> 01:29:26.240
die blöden Bugs fixen, die uns allen auf die Nerven gehen.

01:29:27.420 --> 01:29:27.820
Ja.

01:29:28.480 --> 01:29:30.160
Also ich bin, wie gesagt, mit den PIP-Tools

01:29:30.160 --> 01:29:30.920
quasi auch nicht warm.

01:29:31.960 --> 01:29:34.260
Also ich finde, vom User-Interface her ist Poetry

01:29:34.260 --> 01:29:35.960
schon deutlich schöner. Das Problem ist nur halt,

01:29:36.060 --> 01:29:36.700
es funktioniert nicht.

01:29:38.200 --> 01:29:39.980
Ja, aber man muss ja nicht immer alles

01:29:39.980 --> 01:29:41.300
auf der Dreck wegschmeißen, wenn sie kaputt ist.

01:29:41.380 --> 01:29:43.200
Manchmal kann man sich auch ein bisschen reparieren.

01:29:44.580 --> 01:29:45.380
Aber hörst du mal,

01:29:45.840 --> 01:29:47.640
ich meine, ich habe

01:29:47.640 --> 01:29:49.640
letztens auch wieder, war ich auf dem

01:29:49.640 --> 01:29:51.720
Repository bei Poetry,

01:29:51.840 --> 01:29:53.880
weil ich irgendwie bestätigen wollte

01:29:53.880 --> 01:29:55.540
nach irgendwie, ich weiß nicht wie vielen Leuten, dass das

01:29:55.540 --> 01:29:56.460
auch bei mir nicht funktioniert.

01:29:57.420 --> 01:29:59.180
Und da habe ich dann, also wenn man da,

01:29:59.340 --> 01:30:01.520
ich weiß nicht wie viele offene Issues da sind gerade.

01:30:03.880 --> 01:30:05.180
Irgendwie tausend oder sowas.

01:30:05.180 --> 01:30:06.440
Und das ist ja nur ein einzelner.

01:30:06.460 --> 01:30:08.640
Monat einlegen und alle gemeinsam an Poetrys

01:30:08.640 --> 01:30:10.560
Verbesserung arbeiten und dann ist das Problem

01:30:10.560 --> 01:30:12.140
endlich allemal aus der Welt geschafft.

01:30:12.660 --> 01:30:14.320
Tja, tja. Ja, genau.

01:30:14.440 --> 01:30:16.560
Offene Issues über tausend, also das ist halt schon, ja.

01:30:17.040 --> 01:30:18.520
Und es ist halt nur ein einzelner Typ, der das in seiner

01:30:18.520 --> 01:30:20.520
Freizeit macht, ne? Also. Ja, klar, kann man

01:30:20.520 --> 01:30:22.240
ihm ja auch keinen Vorwurf machen. Nee, eigentlich nicht.

01:30:22.340 --> 01:30:23.920
Überhaupt nicht. Das ist alles prima, ne?

01:30:24.520 --> 01:30:26.320
Ja, ja, also ich meine, aber es ist halt so beliebt,

01:30:26.420 --> 01:30:27.760
dass halt so Sachen so finden, ne? Und dann

01:30:27.760 --> 01:30:29.480
braucht er eigentlich halt Hilfe, ne?

01:30:30.120 --> 01:30:32.020
Ja. Ich hab hier

01:30:32.020 --> 01:30:34.380
Pip und dann für Sachen

01:30:34.380 --> 01:30:35.960
kann man auch Pip-Tools oben drauf nehmen.

01:30:36.460 --> 01:30:38.280
reicht erst mal voll aus.

01:30:39.860 --> 01:30:40.180
Ja,

01:30:40.340 --> 01:30:41.820
PIP-Tools habe ich jetzt auch letztens,

01:30:42.100 --> 01:30:44.200
fand ich eigentlich, also das hat auch ganz gut funktioniert,

01:30:44.280 --> 01:30:45.620
es ist halt so ein bisschen hakliger zu benutzen,

01:30:45.720 --> 01:30:48.260
aber weil man dann halt lange

01:30:48.260 --> 01:30:50.060
Kommandozeilen, mit denen man da irgendwie

01:30:50.060 --> 01:30:51.100
den Kram dann,

01:30:52.060 --> 01:30:54.040
aber ja, aber es funktioniert tatsächlich

01:30:54.040 --> 01:30:56.160
ziemlich gut, muss ich auch sagen. Und es hat halt die ganzen

01:30:56.160 --> 01:30:58.040
Paketfunktionen,

01:30:58.080 --> 01:30:59.940
die Portree hat halt nicht, aber ehrlich gesagt,

01:30:59.980 --> 01:31:01.600
die brauche ich auch nicht. Ja, also

01:31:01.600 --> 01:31:03.840
was ich halt eigentlich nur brauche, sind eigentlich

01:31:03.840 --> 01:31:05.900
zwei Sachen, PortreeAdd, PortreeRemove,

01:31:06.000 --> 01:31:08.380
Pultree Update und Pultree

01:31:08.380 --> 01:31:10.420
Install. Ja gut, aber dann bist du ja auch

01:31:10.420 --> 01:31:12.240
ungefähr bei dem, was PIP-Tools können, nur

01:31:12.240 --> 01:31:14.220
dass PIP-Tools das halt sehr unkomfortabel machen.

01:31:14.560 --> 01:31:15.780
Ja, genau.

01:31:17.840 --> 01:31:18.440
Naja, gut.

01:31:19.500 --> 01:31:20.320
Aber irgendwie ist das

01:31:20.320 --> 01:31:22.200
noch nicht aller Tage Abend, was das

01:31:22.200 --> 01:31:22.800
angeht, tatsächlich.

01:31:23.940 --> 01:31:25.640
Ja, ich weiß nicht, habt ihr noch was?

01:31:25.640 --> 01:31:26.700
Habt ihr noch was auf eurer Liste stehen?

01:31:27.820 --> 01:31:28.960
Nö, ich bin durch.

01:31:29.400 --> 01:31:31.140
Nö, also wir könnten ja noch Pics machen.

01:31:31.220 --> 01:31:33.380
Dann kommen die Pics der Woche, des Monats,

01:31:33.440 --> 01:31:34.520
der Folge jedenfalls dann.

01:31:36.000 --> 01:31:38.280
was habt ihr denn da ausgesucht? Also ich fange

01:31:38.280 --> 01:31:40.100
vielleicht einfach an. Ich weiß nicht, ob ich schon mal gesagt habe,

01:31:40.120 --> 01:31:42.060
das vergesse ich wie gesagt immer. Ich muss das jetzt mal aufschreiben.

01:31:42.360 --> 01:31:43.640
Die Python DevTools, kennt ihr die?

01:31:45.140 --> 01:31:45.820
Das ist so

01:31:45.820 --> 01:31:48.160
Python DevTools, da kann man sich einloggen.

01:31:48.300 --> 01:31:49.680
Das sind ganz einfache Sachen, wie statt Print

01:31:49.680 --> 01:31:52.100
ein Debug-Statement in Python, was dann PrettyPrint

01:31:52.100 --> 01:31:53.780
macht und so, so einfach so ein paar Kleinigkeiten.

01:31:54.680 --> 01:31:55.680
Nö, nutze ich noch nicht.

01:31:55.680 --> 01:31:57.740
Nö, kenne ich noch nicht. Wofür nennt man das?

01:31:57.860 --> 01:31:59.160
Oder was ist das? Einfach Python.

01:31:59.460 --> 01:32:00.260
Ach ja, ich glaube, ich habe es.

01:32:02.020 --> 01:32:03.680
Was macht das? Ich glaube, das ist

01:32:03.680 --> 01:32:04.960
ein anderes. Guck mal kurz, ist das

01:32:04.960 --> 01:32:07.340
Kannst du kurz auf die

01:32:07.340 --> 01:32:09.240
doc-help-manual.io irgendwie

01:32:09.240 --> 01:32:11.620
Python-DevTools einworten?

01:32:11.620 --> 01:32:13.180
Achso. Nee, ist das eine andere?

01:32:13.960 --> 01:32:15.800
Minus DevTools

01:32:15.800 --> 01:32:17.120
.help-manual.io

01:32:17.120 --> 01:32:19.860
Nee, okay, krieg ich nicht hin.

01:32:20.260 --> 01:32:21.680
Ja, egal. Auf jeden Fall, das sind nicht

01:32:21.680 --> 01:32:23.300
viele Funktionen, aber irgendwie fand ich es ganz nett und das

01:32:23.300 --> 01:32:25.620
sah ganz niedlich aus. Und ich mag ja so

01:32:25.620 --> 01:32:27.080
moderne Terminal-Sachen sehr gerne.

01:32:27.860 --> 01:32:29.480
Ah, noch ein Pick der Woche. Ich hab meine

01:32:29.480 --> 01:32:31.020
.files mal ein bisschen aktualisiert.

01:32:32.200 --> 01:32:33.660
Die sind ja vor allen Dingen auch für

01:32:33.660 --> 01:32:35.700
viele Windows-Nutzer ganz gut geeignet, weil ich muss das

01:32:35.700 --> 01:32:37.520
ja auch auf der Arbeit nutzen und so. Und

01:32:37.520 --> 01:32:39.600
da kann man sich jetzt, wenn man das vernünftig

01:32:39.600 --> 01:32:41.400
installiert, unter einer PowerShell

01:32:41.400 --> 01:32:43.720
die ganzen Modern Unix-Commands ziehen

01:32:43.720 --> 01:32:45.880
und die alle reinpacken. Ist jetzt nicht so Python-spezifisch.

01:32:46.480 --> 01:32:47.560
Aber auch Virtual Entwrapper

01:32:47.560 --> 01:32:49.500
habe ich eingebaut, jetzt nur die Funktion, die ich nutze,

01:32:49.580 --> 01:32:50.160
dass es nicht viele sind.

01:32:52.040 --> 01:32:53.480
Damit es ein bisschen kompatibler ist, weil

01:32:53.480 --> 01:32:55.700
Virtual Entwrapper PowerShell irgendwie nicht so richtig funktioniert hat.

01:32:55.740 --> 01:32:57.660
Ja, da habe ich jetzt doch eine sehr gute Überleitung.

01:32:58.280 --> 01:32:59.480
Was benutzt du denn zum Managen

01:32:59.480 --> 01:33:00.120
deiner Dot-Files?

01:33:02.040 --> 01:33:02.760
Tatsächlich Git.

01:33:03.660 --> 01:33:07.980
Ja, aber was meinst du mit Managen meiner .files?

01:33:08.040 --> 01:33:08.840
Naja, wenn du jetzt auf einer,

01:33:09.120 --> 01:33:10.940
du hast einen neuen Account irgendwie auf einer anderen Maschine,

01:33:11.120 --> 01:33:11.700
loggst dich da ein,

01:33:12.000 --> 01:33:14.260
setzt du gerne deine .files da so wie überall sonst auch.

01:33:14.320 --> 01:33:16.860
Genau, ich habe in meinem .files-Repo für die jeweiligen Systeme,

01:33:16.920 --> 01:33:19.160
also im Moment ist es halt POSIX und Windows

01:33:19.160 --> 01:33:22.080
und Phoenix ist auch was, aber das funktioniert nicht richtig,

01:33:22.380 --> 01:33:23.060
das ist halt nicht public,

01:33:24.400 --> 01:33:25.140
Install-Skripte,

01:33:25.800 --> 01:33:28.280
das heißt, ich mache halt eine Admin-Shell auf

01:33:28.280 --> 01:33:29.760
und starte das Install-Skript,

01:33:30.400 --> 01:33:33.080
dann klont er mir die eigentlich an die richtige Stelle,

01:33:33.080 --> 01:33:35.000
die meistens einfach home.dot

01:33:35.000 --> 01:33:35.440
files ist.

01:33:37.040 --> 01:33:38.820
Dann im Insights-Skript

01:33:38.820 --> 01:33:40.860
führt er dann das Simulink-Skript aus, das heißt

01:33:40.860 --> 01:33:42.100
der linkt quasi von meinen

01:33:42.100 --> 01:33:44.940
Config-Files komplett auf die

01:33:44.940 --> 01:33:46.840
Configs von dem Programm, die ich natürlich installieren muss

01:33:46.840 --> 01:33:48.680
auch in dem Insights-Skript. Das heißt, er installiert alle

01:33:48.680 --> 01:33:49.940
Programme mit Simulink-T und fertig.

01:33:52.060 --> 01:33:52.480
Okay, aber

01:33:52.480 --> 01:33:54.800
welches Skript ist das dann? Hast du

01:33:54.800 --> 01:33:56.680
es selber geschrieben? Ja. Ah, okay.

01:33:57.960 --> 01:33:58.900
Ja, weil da gibt es ja dann schon

01:33:58.900 --> 01:34:00.720
einige Sachen. Also ich habe bisher

01:34:00.720 --> 01:34:02.420
immer .bot verwendet dafür.

01:34:03.380 --> 01:34:06.320
Aber das ist mir letztens irgendwie,

01:34:06.500 --> 01:34:08.740
als ich, ich weiß gar nicht,

01:34:08.900 --> 01:34:10.880
was der Anlass war, wo es mir dann kaputt gegangen ist,

01:34:11.140 --> 01:34:11.740
und ich mir dachte so,

01:34:11.840 --> 01:34:13.640
also das habe ich mir jetzt auch schon so lange nicht mehr angeguckt.

01:34:14.360 --> 01:34:16.440
Irgendwie muss ich da mal schauen, ob es da was Besseres gibt.

01:34:16.580 --> 01:34:18.260
Vielleicht möchte ich auch sowas benutzen, weiß ich nicht.

01:34:18.800 --> 01:34:20.380
Ich habe es alles noch ganz einfach selber geschrieben,

01:34:20.460 --> 01:34:21.300
mal so viel ich das halt nicht ist.

01:34:21.800 --> 01:34:22.440
Ja, ja, gut.

01:34:22.520 --> 01:34:23.860
20 Sim-Links oder was der da setzt

01:34:23.860 --> 01:34:27.580
und dann einmal Software mit dem jeweiligen System-Paket-Manager installieren,

01:34:27.680 --> 01:34:29.760
den du ja auch auf Windows installieren kannst.

01:34:29.760 --> 01:34:31.640
Dann musst du halt nur zuerst den Paket-Manager installieren

01:34:31.640 --> 01:34:33.800
und dann ist ja alles eh open source,

01:34:33.920 --> 01:34:34.760
dann macht er alles drauf.

01:34:35.880 --> 01:34:38.300
Und dann hast du immer auf jeden Fall die gleiche Shell, was ich immer sehr super finde.

01:34:38.640 --> 01:34:40.220
Was sogar einigermaßen

01:34:40.220 --> 01:34:41.800
mittlerweile für die PowerShell geht.

01:34:42.200 --> 01:34:44.040
Und das ist auch was ganz Tolles, das ist auch in der DotFile

01:34:44.040 --> 01:34:45.520
schon drin, es gibt seit November

01:34:45.520 --> 01:34:47.720
für die PowerShell einen Autocompletion,

01:34:47.800 --> 01:34:49.540
das so ein bisschen funktioniert wie das von Fisch und das ist,

01:34:49.800 --> 01:34:51.760
ja, das brauche ich natürlich immer, weil ich

01:34:51.760 --> 01:34:53.420
normalerweise mit der Fischshell da sehr dran gewöhnt bin,

01:34:54.060 --> 01:34:55.200
weil man sehr viel Zeit sparen kann.

01:34:56.800 --> 01:34:58.020
Ja, genau,

01:34:58.020 --> 01:34:59.840
und das Ergebnis

01:34:59.840 --> 01:35:01.620
das war dann mein

01:35:01.620 --> 01:35:03.680
Pick, was ich jetzt versuche zu

01:35:03.680 --> 01:35:05.780
verwenden. Also ich bin gerade dabei, das auszuprobieren

01:35:05.780 --> 01:35:07.420
und zu gucken, wie ich das so hin

01:35:07.420 --> 01:35:09.140
biegen kann, dass es das tut, was ich

01:35:09.140 --> 01:35:11.280
gerne davon hätte. Und zwar das Tool heißt

01:35:11.280 --> 01:35:12.300
ChessMoi.

01:35:13.620 --> 01:35:14.940
ChessMoi. Ja.

01:35:15.520 --> 01:35:16.240
ChessMoi, genau.

01:35:19.240 --> 01:35:19.600
Und

01:35:19.600 --> 01:35:20.280
das

01:35:20.280 --> 01:35:23.720
ist so ein Go geschrieben.

01:35:24.180 --> 01:35:25.600
Das ist halt so wie so ein, auch eines

01:35:25.600 --> 01:35:27.620
von den, wir haben ja momentan ganz

01:35:27.620 --> 01:35:29.260
viele System-Tools

01:35:29.260 --> 01:35:31.960
macht tatsächlich keine

01:35:31.960 --> 01:35:34.120
SimLink-Geschichte, oder macht halt auch unter Umständen

01:35:34.120 --> 01:35:35.880
SimLinks, ich glaube aber eigentlich nicht.

01:35:37.760 --> 01:35:38.160
Das

01:35:38.160 --> 01:35:40.300
guckt sich an, wie der Zustand

01:35:40.300 --> 01:35:42.280
deiner aktuellen Verhaltens ist, wie es

01:35:42.280 --> 01:35:44.000
sein sollte, sozusagen auch aus dem

01:35:44.000 --> 01:35:45.860
Git-Repo und passt es dann halt an.

01:35:46.640 --> 01:35:47.920
Und das kann halt jetzt noch so ein paar

01:35:47.920 --> 01:35:50.000
Sachen mehr. Also einmal das Schöne ist halt, dass es halt

01:35:50.000 --> 01:35:51.100
das Go ist, halt

01:35:51.100 --> 01:35:54.000
so ein statisches Binary, was keine

01:35:54.000 --> 01:35:56.040
Abhängigkeiten hat, relativ leicht auf jede

01:35:56.040 --> 01:35:57.800
Maschine. Und

01:35:57.800 --> 01:36:01.760
das hat halt auch noch so eine Templating Language

01:36:01.760 --> 01:36:03.840
mit drin, womit

01:36:03.840 --> 01:36:05.820
man dann halt sozusagen je nachdem, was auf der

01:36:05.820 --> 01:36:07.740
Maschine irgendwie gesetzt ist, halt Dinge anders machen

01:36:07.740 --> 01:36:09.800
kann. Also wenn halt das Umfeldsein anders ist, dann

01:36:09.800 --> 01:36:11.740
müssen manche Dinge ja anders sein

01:36:11.740 --> 01:36:13.680
oder wenn der User anders heißt. Das sieht sehr schön aus.

01:36:13.960 --> 01:36:15.780
Das ist ziemlich cool und das hat halt auch Anbindung

01:36:15.780 --> 01:36:17.860
an alle möglichen anderen Geschichten, wie zum Beispiel

01:36:17.860 --> 01:36:19.500
an irgendwie Passwortmanager und so,

01:36:19.820 --> 01:36:21.580
sodass du halt auch deine SSH-Keys irgendwie

01:36:21.580 --> 01:36:23.920
rüberziehen kannst und solche Sachen. Das ist ja geil.

01:36:24.280 --> 01:36:25.520
Oh, ich hab ein neues, neues

01:36:25.520 --> 01:36:28.340
Ja, und das

01:36:28.340 --> 01:36:30.640
ist ziemlich cool und es gibt

01:36:30.640 --> 01:36:32.560
How-To's da für alle möglichen Anwendungsfälle,

01:36:32.680 --> 01:36:33.100
wo man sich das,

01:36:34.280 --> 01:36:35.960
die man sich da angucken kann. Also ich

01:36:35.960 --> 01:36:38.580
verwende es jetzt, oder ich probiere damit

01:36:38.580 --> 01:36:40.560
seit ein paar Tagen irgendwie Dinge mitzumachen

01:36:40.560 --> 01:36:42.680
und ich bin eigentlich sehr angetan. Also ich glaube,

01:36:42.760 --> 01:36:44.140
das wird wahrscheinlich demnächst meine

01:36:44.140 --> 01:36:46.660
neue Lösung zum Managen meiner

01:36:46.660 --> 01:36:48.560
Dot-Files. Das klingt sehr, sehr gut.

01:36:49.180 --> 01:36:50.620
Ich hatte da noch eine andere Frage

01:36:50.620 --> 01:36:52.580
an der Stelle. Ich weiß nicht, ob das jetzt hier hinpasst, aber

01:36:52.580 --> 01:36:54.740
wo ich gerade

01:36:54.740 --> 01:36:56.780
versuche umzustellen, ist die ganzen Keys, weil du gerade

01:36:56.780 --> 01:36:58.580
vorhin geredet hast mit Key-Repos und so,

01:36:58.980 --> 01:37:00.400
mit YubiKeys zu schützen,

01:37:01.260 --> 01:37:02.960
also eine Zwei-Faktor-Identifizierung da reinzubauen.

01:37:04.280 --> 01:37:04.940
Geht das auch

01:37:04.940 --> 01:37:06.580
einfach so? Weil ganz ruhig, bei mir

01:37:06.580 --> 01:37:08.020
funktioniert es auch so mittelgut.

01:37:08.640 --> 01:37:10.420
Also ich habe jetzt meine wichtigsten Applikationen da mit drin,

01:37:10.580 --> 01:37:11.340
aber das könnte,

01:37:12.680 --> 01:37:14.640
das wäre natürlich noch richtig klasse, wenn ich dann einfach irgendwie an die

01:37:14.640 --> 01:37:15.900
richtigen Ställe den richtigen Stick

01:37:15.900 --> 01:37:18.220
stecke oder sowas. Ja, ja, das müsste eigentlich

01:37:18.220 --> 01:37:19.220
funktionieren. Also

01:37:19.220 --> 01:37:21.940
YubiKey ist halt die Frage, wie man das

01:37:21.940 --> 01:37:23.600
wie, ja,

01:37:24.380 --> 01:37:26.040
ich meine,

01:37:26.280 --> 01:37:28.200
ich würde sowieso, ich meine, ich verwende ja

01:37:28.200 --> 01:37:29.900
One Password, auch wenn ich das

01:37:29.900 --> 01:37:31.880
natürlich irgendwie auch

01:37:31.880 --> 01:37:34.360
ein bisschen unangenehm ist, dass er so teuer ist

01:37:34.360 --> 01:37:36.420
und dass es so ein substrativistisches Modell hat, aber

01:37:36.420 --> 01:37:38.380
das ist halt das einzige Ding, was ich gefunden

01:37:38.380 --> 01:37:40.200
habe, was halt zuverlässig auf allen Geräten funktioniert

01:37:40.200 --> 01:37:41.400
und halt auch irgendwie

01:37:41.400 --> 01:37:43.740
eine durchdachte UI hat.

01:37:45.500 --> 01:37:46.100
Und das

01:37:46.100 --> 01:37:47.100
funktioniert auch mit Chesmois.

01:37:48.120 --> 01:37:50.120
Chesmois, meine Güte, französisch.

01:37:50.200 --> 01:37:51.180
Franz-Rosen, ja.

01:37:51.940 --> 01:37:56.220
How to...

01:37:56.220 --> 01:37:57.380
Ich weiß jetzt nicht genau.

01:37:57.600 --> 01:37:58.680
Ja, ich muss mir das einfach mal durchlesen.

01:37:58.760 --> 01:38:00.700
Das sieht auf jeden Fall sehr, sehr toll aus, weil genau das ist halt

01:38:00.700 --> 01:38:02.280
diese ganze Skripte, dass ich mich alles nicht mehr machen muss,

01:38:02.320 --> 01:38:03.360
weil es alles schon automatisch weiß.

01:38:03.420 --> 01:38:05.420
Dann muss ich mich an der Struktur halten von meinen .files,

01:38:05.600 --> 01:38:06.940
dann irgendwie standardisiert oder so.

01:38:08.140 --> 01:38:08.640
Wahrscheinlich, ne?

01:38:09.420 --> 01:38:10.540
Ja, mal gucken, vielleicht mag ich das.

01:38:10.580 --> 01:38:12.040
Das sieht auf jeden Fall sehr toll aus, dass man einfach sagt,

01:38:12.120 --> 01:38:14.680
Chemois und dann die gleiche Line mit install dein Username

01:38:14.680 --> 01:38:16.600
und dann einfach nur Chemois update, das ist schon cool.

01:38:18.140 --> 01:38:18.700
Ja, ja.

01:38:19.800 --> 01:38:20.120
Ja.

01:38:21.600 --> 01:38:22.180
Und du?

01:38:24.500 --> 01:38:24.980
Ich?

01:38:25.100 --> 01:38:25.340
Ja.

01:38:26.520 --> 01:38:28.780
Ich nutze da kein Tool.

01:38:28.940 --> 01:38:30.820
Also ich hatte da früher mal das wenigstens noch

01:38:30.820 --> 01:38:32.500
irgendwie weggesichert oder irgendwie so.

01:38:33.640 --> 01:38:34.760
Also speziell noch mal extra

01:38:34.760 --> 01:38:37.120
zu einem normalen Backup. Aber ansonsten

01:38:37.120 --> 01:38:38.980
habe ich da jetzt eigentlich nichts Spezielles,

01:38:39.060 --> 01:38:40.820
weil ich da auch nicht viel anpasse eigentlich.

01:38:40.820 --> 01:38:41.120
Also

01:38:41.120 --> 01:38:44.000
ja,

01:38:44.600 --> 01:38:46.760
ich nutze ja nicht den VI oder so,

01:38:46.820 --> 01:38:48.680
wo es so viele... Ja, ja, den muss man halt

01:38:48.680 --> 01:38:50.040
irgendwie ausgiebig konfigurieren.

01:38:51.280 --> 01:38:53.320
Vom Emacs mal weggewechselt.

01:38:53.660 --> 01:38:54.980
Da war das auch noch beim Emacs.

01:38:55.140 --> 01:38:56.880
Musste man da eine ganze Menge machen.

01:38:57.700 --> 01:38:58.720
Aber jetzt habe ich eigentlich

01:38:58.720 --> 01:39:01.140
nichts, was ich da

01:39:01.140 --> 01:39:03.300
groß verwalten sollte.

01:39:03.440 --> 01:39:05.120
Da musst du jetzt mit deinem Pick

01:39:05.120 --> 01:39:07.280
der Folge noch...

01:39:07.280 --> 01:39:07.840
Hast du einen?

01:39:13.020 --> 01:39:13.420
Nö,

01:39:13.540 --> 01:39:14.040
habe ich nicht.

01:39:15.660 --> 01:39:17.280
Kein Pies, wo du drüber gestolpert hast,

01:39:17.340 --> 01:39:18.560
wo du sagst, das muss die ganze Welt kennen.

01:39:21.040 --> 01:39:22.820
Ganz kurz, zum Beispiel

01:39:22.820 --> 01:39:24.940
eine Sache, die ich gerade gesehen habe,

01:39:25.020 --> 01:39:26.660
wo du sagst, Sachen installieren, wenn man

01:39:26.660 --> 01:39:28.440
das macht, also ich habe

01:39:28.440 --> 01:39:30.880
das ist eine der Geschichten, die ich gestern, glaube ich, gemacht habe,

01:39:31.380 --> 01:39:32.400
schon mal, ist, wenn dann

01:39:32.400 --> 01:39:34.520
wenn das, man kann

01:39:34.520 --> 01:39:36.820
Dinge, Skripte definieren, die ausgeführt werden

01:39:36.820 --> 01:39:38.960
sollen, wenn sich was geändert hat.

01:39:39.520 --> 01:39:40.980
Und wenn, ich habe dann zum Beispiel

01:39:40.980 --> 01:39:45.000
man kann

01:39:45.000 --> 01:39:46.800
bei Mac gibt es ja Homebrew,

01:39:46.880 --> 01:39:48.620
nicht Chocolaty, ist es bei Windows,

01:39:48.780 --> 01:39:49.820
bei Mac ist es Homebrew,

01:39:50.520 --> 01:39:52.400
da kann man ein brew-File haben, wo die ganzen Pakete,

01:39:52.440 --> 01:39:54.220
die man so installieren möchte, drinstehen. Und wenn man das ändert,

01:39:54.500 --> 01:39:56.080
dann sagt man auf einer anderen Maschine

01:39:56.080 --> 01:39:57.740
irgendwie...

01:39:57.740 --> 01:40:00.460
Update, genau. Dann wird

01:40:00.460 --> 01:40:02.360
dieses Skript ausgeführt, zieht sich das

01:40:02.360 --> 01:40:04.400
File rein und wenn sich das geändert hat,

01:40:04.520 --> 01:40:06.520
dann installiert es das halt direkt.

01:40:06.540 --> 01:40:08.000
Das ist ja cool, ja. Und das ist halt schon

01:40:08.000 --> 01:40:10.540
sehr nett. Ja, sowas muss ich halt alles noch manuell machen.

01:40:10.640 --> 01:40:11.960
Ich habe halt meine Listen, die dann

01:40:11.960 --> 01:40:14.320
unterschiedliche paketierte

01:40:14.320 --> 01:40:16.020
Paket-Packages quasi

01:40:16.020 --> 01:40:18.280
installieren, wenn ich das dann will.

01:40:19.500 --> 01:40:20.360
Aber ja, ich finde das ganz

01:40:20.360 --> 01:40:22.400
interessant, weil ich finde, man will vielleicht auf verschiedenen Maschinen auch nicht

01:40:22.400 --> 01:40:24.340
immer alle Pakete gleichzeitig, aber egal,

01:40:24.440 --> 01:40:26.420
dass das so ein bisschen, ich muss mir das auf jeden Fall mal angucken,

01:40:26.500 --> 01:40:28.440
wie so der Use Case davon ist. Mir ist noch was eingefallen,

01:40:28.580 --> 01:40:30.500
ich habe das Tool

01:40:30.500 --> 01:40:32.280
CopyQ verwendet, also

01:40:32.280 --> 01:40:33.860
wie Copy und dann in Q

01:40:33.860 --> 01:40:36.720
und das ist ein Keyboard-Manager und das finde ich ganz praktisch,

01:40:37.080 --> 01:40:38.420
weil der eben eine History hat

01:40:38.420 --> 01:40:40.380
von den Sachen, die ich eben in der letzten Zeit

01:40:40.380 --> 01:40:41.980
mit Copy und Paste hin und her genommen habe

01:40:41.980 --> 01:40:44.480
und dann kann ich mit STRG ALT

01:40:44.480 --> 01:40:46.380
V eben gucken, was ist

01:40:46.380 --> 01:40:48.340
in der Liste drin und da hat er ja sogar auch Bilder

01:40:48.340 --> 01:40:49.960
drin und mit Formatierung und so weiter.

01:40:50.360 --> 01:40:53.340
Das ist, finde ich,

01:40:53.420 --> 01:40:55.620
super praktisch und dann kann man halt natürlich auch in der Liste

01:40:55.620 --> 01:40:57.820
super schnell suchen, indem ich mit Autocomplete

01:40:57.820 --> 01:40:59.540
halt eben hier die ersten

01:40:59.540 --> 01:41:01.480
Zeichen von der gesuchten Zeichenkette

01:41:01.480 --> 01:41:03.320
eingeben kann. Und das finde ich

01:41:03.320 --> 01:41:05.660
sehr praktisch, dass man so eine Art

01:41:05.660 --> 01:41:07.620
Rucksack mit dabei hat, da kann man gut alles reingeben.

01:41:07.640 --> 01:41:09.500
Also so ein Copy, also Buffer

01:41:09.500 --> 01:41:11.360
mit mehreren Buffern halt, das ist schon sehr schön.

01:41:11.540 --> 01:41:13.380
Genau, das gibt es im

01:41:13.380 --> 01:41:15.500
Emacs, gibt es im PyCharm, aber im Endeffekt ist es ja

01:41:15.500 --> 01:41:17.520
cooler, wenn man es auf dem Desktop hat, über alle

01:41:17.520 --> 01:41:19.080
Anwendungen hin. Ja genau, gibt es halt auch irgendwie

01:41:19.080 --> 01:41:21.140
ist gut. Sogar auf Windows. Ich habe auch das mal gesucht

01:41:21.140 --> 01:41:22.780
für so eine Alternative für Windows und das

01:41:22.780 --> 01:41:24.480
funktioniert alles einigermaßen cool.

01:41:25.160 --> 01:41:27.340
Ah, schön. Ja, genau. Das ist ganz praktisch.

01:41:28.260 --> 01:41:29.040
Ja, sehr gut.

01:41:29.460 --> 01:41:30.800
Ah, ich habe auch noch einen zweiten.

01:41:31.240 --> 01:41:33.100
Da gab es jetzt letztens ein neues

01:41:33.100 --> 01:41:35.080
Buch von Adam Johnson. Ein sehr schönes

01:41:35.080 --> 01:41:36.980
schon geschrieben. Nennt sich

01:41:36.980 --> 01:41:39.120
Speed Up Your Django Tests. Da haben wir bestimmt auch schon

01:41:39.120 --> 01:41:40.520
mal drüber geredet. Das ist irgendwie ganz toll.

01:41:40.860 --> 01:41:42.940
Wir haben über Tests von HTMX noch gar nicht gesprochen. Das ist mir

01:41:42.940 --> 01:41:44.920
eingefallen. Ach, äh...

01:41:44.920 --> 01:41:47.300
Ja. Wieso? Oder was muss man da...

01:41:47.300 --> 01:41:48.840
Das ist nicht so schlimm. Also ich glaube, es gibt noch nicht so richtig gute

01:41:48.840 --> 01:41:50.900
Möglichkeiten, das zu testen, aber... Klar, natürlich.

01:41:51.100 --> 01:41:52.580
Ja? Ja, du testest das

01:41:52.580 --> 01:41:54.740
wie in jedem anderen Video auch. Ach so.

01:41:55.080 --> 01:41:57.160
Da musst du gar nichts machen. Das ist ja das Tolle, du musst gar nichts machen.

01:41:57.280 --> 01:41:58.760
Ah, okay. Dann hab ich's gesagt.

01:41:59.740 --> 01:42:00.560
Ja, das ist

01:42:00.560 --> 01:42:02.920
tatsächlich sehr nett. Also dieses Problem wird man auch

01:42:02.920 --> 01:42:04.640
los. Dann wollte ich dich nicht weiter bei deinem

01:42:04.640 --> 01:42:07.020
Buch picken. Ja, ja, Moment, aber ich würde gerne abschweifen

01:42:07.020 --> 01:42:08.660
und nochmal über JavaScript herziehen,

01:42:08.780 --> 01:42:10.780
weil das noch nicht genau passiert ist. Also ich hab ja

01:42:10.780 --> 01:42:11.840
jetzt in letzter Zeit auch so ein bisschen

01:42:11.840 --> 01:42:14.280
Vue, so Vue ist halt das Framework, was ich

01:42:14.280 --> 01:42:15.580
vielleicht am interessantesten finde,

01:42:16.400 --> 01:42:18.560
und Websockets und so gemacht und so

01:42:18.560 --> 01:42:20.640
und da halt auch dann Tests geschrieben.

01:42:21.480 --> 01:42:22.720
Und ja, also

01:42:22.720 --> 01:42:24.660
dann habe ich

01:42:24.660 --> 01:42:26.940
mit Jest ganz viel Tests gemacht

01:42:26.940 --> 01:42:28.480
und das ist echt, also das ist,

01:42:28.960 --> 01:42:30.700
das hat wirklich keinen Spaß gemacht.

01:42:30.760 --> 01:42:33.300
Ist das dem Wohl von Jest nicht, diese Clowns-Gaukler-Mütze

01:42:33.300 --> 01:42:33.820
auf dem Kopf?

01:42:34.780 --> 01:42:35.720
Ich weiß es nicht genau.

01:42:36.140 --> 01:42:38.080
Ich weiß nicht, guck mal kurz bitte nach.

01:42:38.280 --> 01:42:40.620
Kann sein. Ja, ich musste auch Tests

01:42:40.620 --> 01:42:41.120
mit ihr schreiben.

01:42:42.200 --> 01:42:45.060
Ja, auf jeden Fall, das war halt echt

01:42:45.060 --> 01:42:46.620
oh, also

01:42:46.620 --> 01:43:09.740
Also das ist ja jetzt auch quasi gar nicht mehr so neu und so und dann, ich bin mehrfach in Sachen eingelaufen, wo ich dachte, das geht nicht oder oh, das kann ich jetzt so nicht machen, okay, wie macht man das dann richtig und dann landet man halt auch irgendwie so in so Wüsten-GitHub-Issues, wo seit Jahren Leute sagen, das ist aber nicht so schön hier, was ist denn da los, geht das nicht und dann geht es tatsächlich nicht und zwar immer noch nicht.

01:43:10.460 --> 01:43:12.520
Und es ist halt auch, und dann die

01:43:12.520 --> 01:43:13.780
Integration mit Vite

01:43:13.780 --> 01:43:16.100
ist dann halt schwierig und

01:43:16.100 --> 01:43:17.320
also

01:43:17.320 --> 01:43:20.400
die Developer-Experience

01:43:20.400 --> 01:43:22.740
war eher so mittelmäßig

01:43:22.740 --> 01:43:24.640
und genau, ich würde allen Leuten,

01:43:24.800 --> 01:43:26.480
die glauben, dass JavaScript-Entwicklung

01:43:26.480 --> 01:43:28.460
voll gut ist und dass das noch die Zukunft ist

01:43:28.460 --> 01:43:30.000
und dass man das unbedingt auf dem Server machen

01:43:30.000 --> 01:43:32.300
möchte, dann die würde ich fragen, also

01:43:32.300 --> 01:43:34.220
ihr kennt schon so ordentliche

01:43:34.220 --> 01:43:36.400
Web-Frameworks auf dem Server, habt ihr schon mal

01:43:36.400 --> 01:43:38.480
verwendet, ja? Habt ihr euch das mal angeguckt,

01:43:38.480 --> 01:43:39.080
wie das da so geht?

01:43:40.460 --> 01:43:42.180
Wenn nein, guckt es euch mal an.

01:43:43.580 --> 01:43:44.680
Aber auch, das wird ja besser.

01:43:44.780 --> 01:43:46.120
Du hast ja letztens auch noch eine Sache gelinkt,

01:43:46.300 --> 01:43:48.300
Pinja als Ersatz für VX, das ist ja schon

01:43:48.300 --> 01:43:50.040
eine Verbesserung. Für den VX-Store, genau.

01:43:50.040 --> 01:43:52.020
Mit DevTools-Support und so, das ist ja auch, ja.

01:43:52.600 --> 01:43:54.040
Aber das braucht man halt nicht, wenn man das

01:43:54.040 --> 01:43:54.700
bei uns übermacht.

01:43:55.060 --> 01:43:58.380
Ja, naja,

01:43:58.480 --> 01:44:00.080
jedenfalls, genau, da wollte ich noch mal kurz,

01:44:00.480 --> 01:44:00.600
genau,

01:44:02.040 --> 01:44:04.120
genau, Adam Johnson, der hat

01:44:04.120 --> 01:44:05.680
ein neues Buch geschrieben,

01:44:07.600 --> 01:44:08.140
Boost Your

01:44:08.140 --> 01:44:11.040
Developer

01:44:11.040 --> 01:44:13.660
Experience und

01:44:13.660 --> 01:44:15.860
genau, ich habe es noch nicht gelesen, weil es ist so frisch.

01:44:16.040 --> 01:44:17.820
Es kam jetzt am Montag raus, dass ich es noch nicht dazu

01:44:17.820 --> 01:44:19.900
gekommen bin, aber kann man sich

01:44:19.900 --> 01:44:21.280
mal angucken. Es ist auf jeden Fall

01:44:21.280 --> 01:44:23.880
wahrscheinlich eine Menge tolle Sachen drin. Also es geht halt

01:44:23.880 --> 01:44:25.740
um viel, auch jetzt eben solche Dinge

01:44:25.740 --> 01:44:27.200
wie halt

01:44:27.200 --> 01:44:29.280
Pricometux oder halt

01:44:29.280 --> 01:44:31.200
PyUpgrade

01:44:31.200 --> 01:44:33.480
und ja,

01:44:33.780 --> 01:44:35.840
auch viel Nicht-Django-Zeugs ist da halt auch

01:44:35.840 --> 01:44:38.020
drin. Ja, ich kann es auch empfehlen.

01:44:38.080 --> 01:44:39.420
habe ich schon gelesen. Ach so, das ist ja gut.

01:44:40.360 --> 01:44:41.900
Ja, ich habe es zufälligerweise zugeschickt

01:44:41.900 --> 01:44:42.700
bekommen vom Autor,

01:44:42.880 --> 01:44:44.540
zum Probelesen.

01:44:47.600 --> 01:44:47.760
Und

01:44:47.760 --> 01:44:49.900
es ist okay, genau.

01:44:50.080 --> 01:44:51.580
Also ich finde es auch schön, also auch das

01:44:51.580 --> 01:44:53.200
vorhergehende Buch von ihm,

01:44:53.900 --> 01:44:55.660
Speed-Up-Python-Tests.

01:44:56.440 --> 01:44:57.720
Ich finde es schön, wie er schreibt,

01:44:57.840 --> 01:44:59.780
ganz pragmatisch, also ohne großes

01:44:59.780 --> 01:45:00.620
Blablabla, schön.

01:45:00.620 --> 01:45:02.420
Ja, lohnt sich.

01:45:04.260 --> 01:45:04.880
Ja, ja, ja.

01:45:05.640 --> 01:45:06.460
Na gut, dann

01:45:06.460 --> 01:45:08.520
noch mit diesen Worten als

01:45:08.520 --> 01:45:10.420
Schlusssatz. Bleibt uns doch gewogen und

01:45:10.420 --> 01:45:11.660
schaltet wieder rein, das nächste Mal.

01:45:12.480 --> 01:45:14.020
Ja, klar. Und ja,

01:45:14.460 --> 01:45:15.520
hört uns gerne immer, wenn ihr mögt.

01:45:16.220 --> 01:45:18.600
Wünschen euch noch einen schönen Tag, Abend, Nacht, wo auch immer ihr seid.

01:45:19.560 --> 01:45:20.500
Und bis dann. Tschüss.

01:45:20.880 --> 01:45:21.840
Ciao, ciao. Danke, Thomas.
