WEBVTT

00:00:00.000 --> 00:00:05.820
Hallo liebe Hörerinnen und Hörer, willkommen zum Python-Podcast, heute in der Episode 2 to the Power of 5, Episode 32.

00:00:06.580 --> 00:00:10.600
Heute geht es vor allen Dingen um DjangoCon und so ein paar Sachen drumherum.

00:00:10.820 --> 00:00:12.480
Jochen hat einen kleinen Stream aufgemacht und sowas.

00:00:13.660 --> 00:00:15.700
Heute ist wieder Johannes dabei. Hi Johannes.

00:00:16.020 --> 00:00:16.200
Hallo.

00:00:16.960 --> 00:00:17.380
Hi Jochen.

00:00:17.940 --> 00:00:18.280
Hallo.

00:00:18.420 --> 00:00:18.880
Ich bin der Dominik.

00:00:18.900 --> 00:00:19.640
Ich bin der Dominik, hallo.

00:00:19.640 --> 00:00:19.860
Genau.

00:00:20.260 --> 00:00:20.580
Jao.

00:00:22.440 --> 00:00:25.920
Wollen wir direkt mit der DjangoCon starten oder haben wir noch andere News, die da irgendwie reingehören?

00:00:26.600 --> 00:00:28.540
Ja, DjangoCon sind die wichtigsten News.

00:00:29.200 --> 00:00:29.600
Okay.

00:00:30.000 --> 00:00:37.520
Also die paar News, die ich habe, die kann ich auch sagen, weil ich habe nicht so viel verfolgt, weil es passieren die ganze Zeit irgendwelche Dinge und ich habe keine Zeit mehr irgendwas zu machen.

00:00:37.520 --> 00:00:45.680
Ja, Entschuldigung übrigens auch an der Stelle, dass wir euch so lange haben warten lassen, diese neue Episode, aber das war gerade absolut drunter und drüber im Privatleben, da mussten wir mal kurz ein bisschen warten.

00:00:46.820 --> 00:00:48.760
Ja, das habe ich aber nicht vergessen. Wir machen auch weiter.

00:00:49.560 --> 00:00:52.860
Genau, genau. Ja, dann können wir eigentlich direkt einsteigen.

00:00:53.300 --> 00:00:53.420
Ja, genau.

00:00:53.420 --> 00:00:55.080
Waren wir alle auf der Django-Kon?

00:00:55.260 --> 00:00:55.900
Nein, ich nicht.

00:00:55.900 --> 00:00:56.340
Du nicht?

00:00:57.320 --> 00:00:57.560
Hm.

00:00:57.560 --> 00:01:00.660
Ach, dann können wir dir ja davon erzählen

00:01:00.660 --> 00:01:02.200
Genau, ich wollte gerade sagen, war mir zu virtuell

00:01:02.200 --> 00:01:04.540
und ich bin gespannt, was da losgeht. Ich habe gehört, es ging los

00:01:04.540 --> 00:01:05.940
mit Programming for Pleasure

00:01:05.940 --> 00:01:08.220
oder wollt ihr erstmal generell was sagen?

00:01:08.220 --> 00:01:10.440
Das ist auch gleich das erste große Highlight, würde ich sagen

00:01:10.440 --> 00:01:10.820
Ja

00:01:10.820 --> 00:01:14.560
Ja, ja, das war auch so ein Ding, was mich total überrascht

00:01:14.560 --> 00:01:16.360
hat, also hätte ich jetzt

00:01:16.360 --> 00:01:18.040
mit so einem Talk hätte ich gar nicht

00:01:18.040 --> 00:01:20.140
gerechnet. Vielleicht mal kurz am Anfang

00:01:20.140 --> 00:01:21.920
worum es ging, jemand hat erzählt

00:01:21.920 --> 00:01:24.440
die meisten Menschen programmieren aus Spaß

00:01:24.440 --> 00:01:26.700
weil es irgendwie cool ist, aber das ist gar nicht so toll

00:01:26.700 --> 00:01:51.680
Ja, das ist so ein bisschen die Hypothese davon, genau. Also Daniela Prosida hat diesen Talk gehalten, der erste Talk in der ganzen Konferenz und war direkt großartig. Ich hatte Daniela Prosida 2018 in Heidelberg schon mal gesehen und auch da hat er einen großartigen Talk gehalten, auch völlig untechnisch, aber sehr relevant.

00:01:51.680 --> 00:01:56.800
und die Hypothese, die er da aufstellt, ist halt, dass Programmierer Spaß an ihrem Job haben

00:01:56.800 --> 00:02:01.100
und dass das gut für die Programmierer ist, aber schlecht für alle anderen,

00:02:01.680 --> 00:02:04.620
weil dann machen wir das nämlich zum Spaß und nicht für das Ergebnis.

00:02:06.620 --> 00:02:10.560
Das heißt, für uns als Softwareentwickler ist es viel wichtiger,

00:02:10.760 --> 00:02:14.440
dass wir möglichst viel und möglichst lange programmieren können

00:02:14.440 --> 00:02:19.600
und was dann dabei rauskommt, ist gar nicht so wichtig, weil das ist nicht das, woran wir Interesse haben.

00:02:19.600 --> 00:02:24.180
Für mich als Chef ist das jetzt totaler Mist, das heißt, ich muss jetzt irgendwie versuchen, euch anders zu erziehen.

00:02:26.300 --> 00:02:32.680
Also tatsächlich, ich fühlte mich, als ich den Vortrag gehört habe, und ich dachte so, wir gingen ja auch schon so los,

00:02:32.880 --> 00:02:36.580
irgendwie so, ja, programmieren, voll gut, irgendwie total bessere...

00:02:36.580 --> 00:02:38.340
Jeder macht das ja auch selber zu Hause.

00:02:38.480 --> 00:02:42.400
Zu Hause noch, und ja, dachte ich so, ja, ja, voll gut.

00:02:42.400 --> 00:02:47.460
Und dann kam irgendwann der Punkt, wo das dann umschlug und ich so, ja, kann es nicht auch sein, dass das vielleicht total schlecht ist?

00:02:47.460 --> 00:02:51.000
und da fühlte ich mich schon ziemlich ertappt, weil ich fürchte, auf mich trifft das ziemlich genau zu.

00:02:51.240 --> 00:02:52.000
Er wischt, oh ja.

00:02:52.000 --> 00:02:55.600
Und es ist auch leider tatsächlich so, dass ich das Gefühl habe manchmal so, ja,

00:02:55.860 --> 00:02:58.660
aber das ist halt auch, manchmal sind halt auch die Projekte, die man macht,

00:02:59.000 --> 00:03:03.000
so vom Ergebnis her, da ist man gar nicht so sehr am Ergebnis interessiert, weil...

00:03:03.880 --> 00:03:04.800
Aber das ist schlecht, Jochen.

00:03:05.040 --> 00:03:06.000
Das ist schlecht, ich weiß.

00:03:07.100 --> 00:03:08.960
Das hat mir jetzt jemand letztens in einem Jungle-Con-Talk erzählt.

00:03:08.960 --> 00:03:10.460
Wo ist dein Perfect Driven Commitment?

00:03:11.160 --> 00:03:14.280
Ja, das ist auch manchmal, aber das ist auch wirklich schwierig, finde ich, bei manchen Projekten.

00:03:14.280 --> 00:03:16.180
also, naja

00:03:16.180 --> 00:03:18.360
aber das Programmieren selber macht ja Spaß

00:03:18.360 --> 00:03:19.760
und da kann man sich auch drüber motivieren, aber

00:03:19.760 --> 00:03:21.580
stimmt, dann hat man halt mit dem Ergebnis

00:03:21.580 --> 00:03:23.960
wenn es dann nicht so richtig passt, dann denkt man sich so

00:03:23.960 --> 00:03:26.180
naja Gott, also mir hat es schon Spaß gemacht

00:03:26.180 --> 00:03:28.460
Ja genau

00:03:28.460 --> 00:03:30.040
deshalb gibt es so viel schlechte Software

00:03:30.040 --> 00:03:32.340
und das Schlimmste ist ja, selbst wenn es schlecht ist

00:03:32.340 --> 00:03:33.940
dann bedeutet es ja nur, dass wir noch mehr

00:03:33.940 --> 00:03:34.700
programmieren müssen

00:03:34.700 --> 00:03:38.300
Was ich noch nicht verstanden habe ist, warum wird die Software

00:03:38.300 --> 00:03:39.720
denn schlechter, wenn man Spaß dabei hat?

00:03:41.280 --> 00:03:42.280
Die wird nicht automatisch

00:03:42.280 --> 00:03:43.180
schlechter, aber

00:03:43.180 --> 00:03:45.440
sie wird auch nicht automatisch besser.

00:03:46.760 --> 00:03:47.780
Und das ist so das Problem.

00:03:48.020 --> 00:03:49.640
Was heißt denn besser? Da sind wir ja wieder

00:03:49.640 --> 00:03:51.160
vielleicht bei so einem Quantifizierungsbeispiel.

00:03:51.540 --> 00:03:52.760
Was das denn überhaupt ist? Ja, das spielt keine Rolle.

00:03:53.220 --> 00:03:55.420
Weniger Fehler wäre vielleicht auch was, was Spaß macht.

00:03:55.880 --> 00:03:57.820
Das spielt gar keine Rolle, wie du es quantifizierst,

00:03:57.920 --> 00:03:59.800
weil das ist nicht das Ziel der Sache. Du orientierst

00:03:59.800 --> 00:04:01.620
dich nicht daran, wie kann ich die Software besser machen,

00:04:02.280 --> 00:04:03.640
sondern du orientierst dich

00:04:03.640 --> 00:04:05.780
erstmal und unterbewusst daran,

00:04:06.200 --> 00:04:07.500
wie kann ich mehr Software machen.

00:04:10.140 --> 00:04:11.760
Das ist halt normalerweise

00:04:11.760 --> 00:04:13.760
nicht das Ziel, mehr Software zu produzieren.

00:04:16.040 --> 00:04:16.480
Beziehungsweise

00:04:16.480 --> 00:04:17.360
da hat niemand was davon.

00:04:18.260 --> 00:04:18.740
Da ist doch einer.

00:04:20.000 --> 00:04:21.080
Ja, genau.

00:04:21.540 --> 00:04:23.020
Derjenige, der ist hinterher nicht bezahlt.

00:04:24.120 --> 00:04:24.260
Ja.

00:04:25.860 --> 00:04:26.300
Okay.

00:04:27.060 --> 00:04:29.640
Ich meine natürlich, also besonders schlimm

00:04:29.640 --> 00:04:31.560
und das ist natürlich auch so etwas, das wird ja auch immer

00:04:31.560 --> 00:04:33.640
gesagt und ich erlebe das auch in Projekten so,

00:04:33.980 --> 00:04:35.480
dass es halt besonders dann

00:04:35.480 --> 00:04:37.540
schwierig ist, wenn man halt wenig

00:04:37.540 --> 00:04:39.740
Kontakt zu den tatsächlichen

00:04:39.740 --> 00:04:40.860
Benutzern und zum Endkunden hat.

00:04:40.860 --> 00:04:44.060
und das kann natürlich auch nochmal sein, dass das da so eine Rolle spielt, weil

00:04:44.060 --> 00:04:46.840
wenn einem sozusagen der Endnutzer tatsächlich

00:04:46.840 --> 00:04:49.960
mehr oder weniger häufiger auf dem Schoß sitzt und sagt, was ihn

00:04:49.960 --> 00:04:52.620
quält, dann kann man ja da vielleicht so eine gewisse

00:04:52.620 --> 00:04:55.460
Empathietransferleistung erbringen und sagen, na gut, okay,

00:04:55.720 --> 00:04:58.100
wenn der so drunter leidet, dann kann ich da vielleicht auch mal was machen.

00:04:58.240 --> 00:05:00.820
Das ist was anderes als ein Quengel der Manager, der wird dann gerne mal...

00:05:00.820 --> 00:05:02.960
Ja, aber auch wenn man die Kunden nie sieht.

00:05:02.960 --> 00:05:03.700
Quengel der Manager hat jeder.

00:05:04.900 --> 00:05:06.560
Ja, deswegen, das ist nicht so effektiv.

00:05:06.560 --> 00:05:10.920
oder Jira-Tickets.

00:05:11.100 --> 00:05:12.420
Jira-Tickets machen jetzt nicht unbedingt

00:05:12.420 --> 00:05:14.440
so eine empathische Reaktion.

00:05:15.540 --> 00:05:16.460
Ehrlich gesagt nicht.

00:05:18.980 --> 00:05:19.900
Ja, also

00:05:19.900 --> 00:05:22.560
Vor allem die Art und Weise, wie man

00:05:22.560 --> 00:05:24.240
diese Tickets dann irgendwie schätzt, wie lange das dauert,

00:05:24.300 --> 00:05:26.160
ist halt auch so eine subjektive Sache und man kann

00:05:26.160 --> 00:05:27.800
sich auch mal mehr Zeit lassen, mal weniger und so.

00:05:28.640 --> 00:05:30.220
Mehr Zeit verbringen mit der

00:05:30.220 --> 00:05:32.620
schönen ästhetischen Herangehensweise,

00:05:32.760 --> 00:05:33.820
diese Aufgabe zu

00:05:33.820 --> 00:05:36.340
lösen. Das ist für mich aber auch

00:05:36.340 --> 00:05:38.100
ein bisschen die Gegenhypothese. Also auch

00:05:38.100 --> 00:05:40.400
Software, die keinen Spaß macht zu schreiben, ist auch nicht gut.

00:05:40.460 --> 00:05:42.100
Auch Kobol-Programme sind meistens nicht

00:05:42.100 --> 00:05:42.840
super.

00:05:44.280 --> 00:05:46.260
Da möchte ich niemandem vorwerfen, dass er

00:05:46.260 --> 00:05:47.360
Spaß dran hatte, die zu schreiben.

00:05:47.440 --> 00:05:49.680
Ist das nicht die 13. Kolonie in Battlestar Galactica?

00:05:53.060 --> 00:05:53.840
Ja, das ist wahr.

00:05:54.480 --> 00:05:56.100
Letztes Jahr hat man ja gesagt, das Schlimmste an

00:05:56.100 --> 00:05:58.380
Covid-19 ist, dass es auch ein Jira-Ticket sein könnte.

00:06:01.240 --> 00:06:01.600
Ja.

00:06:02.660 --> 00:06:03.020
Ja.

00:06:04.300 --> 00:06:05.960
Wir müssen ein Projekt intern umbenennen, weil

00:06:05.960 --> 00:06:07.400
weil irgendjemand das Delta genannt hatte.

00:06:11.160 --> 00:06:11.640
Ja.

00:06:12.640 --> 00:06:14.880
Aber ja, man fühlt sich auf jeden Fall

00:06:14.880 --> 00:06:16.540
ertappt, weil ich meine,

00:06:16.660 --> 00:06:18.340
jeder von uns hat schon mal Sachen so

00:06:18.340 --> 00:06:20.400
vor sich hingedudelt und

00:06:20.400 --> 00:06:22.100
die dann auf GitHub hochgeladen

00:06:22.100 --> 00:06:24.880
und irgendjemand anderes muss jetzt drunter leiden.

00:06:25.740 --> 00:06:25.880
Ja.

00:06:26.200 --> 00:06:27.840
Also es ist auf jeden Fall schon so.

00:06:27.920 --> 00:06:29.340
Und es ist auch genau wie

00:06:29.340 --> 00:06:31.720
Daniel Puschida da sagt,

00:06:32.380 --> 00:06:35.300
nicht gängig in anderen

00:06:35.960 --> 00:06:38.480
Berufsgruppen, dass die ihre Arbeit mit nach Hause

00:06:38.480 --> 00:06:40.220
nehmen. Also das Beispiel, was er da bringt, ist, dass

00:06:40.220 --> 00:06:42.300
der Zahnarzt in seiner Freizeit normalerweise

00:06:42.300 --> 00:06:43.320
keine Zähne richtet.

00:06:44.860 --> 00:06:46.040
Sondern das macht er halt nur

00:06:46.040 --> 00:06:48.180
Beruf. Ich stelle mir gerade so einen Zahnarzt vor,

00:06:48.220 --> 00:06:50.100
der eine Sammlung von Gebissen in seinem Garten

00:06:50.100 --> 00:06:52.360
legt. Ja, und dann

00:06:52.360 --> 00:06:53.980
vielleicht auch mal ein bisschen drin rumbohrt und sagt,

00:06:54.100 --> 00:06:56.400
hier ist aber ein Wurzelkanal, den wir

00:06:56.400 --> 00:06:58.040
mal ganz dringend rausbohren müssen.

00:06:58.900 --> 00:07:00.460
Ich glaube, zu so einem Zahnarzt würde

00:07:00.460 --> 00:07:02.320
ich nicht gehen wollen. Ja, das Einzige, was mich

00:07:02.320 --> 00:07:04.340
tatsächlich nervt am Weiterprogrammieren ist, dass ich

00:07:04.340 --> 00:07:34.320
und Jochen unterhalten sich über die Programmiersprache Python

00:07:34.340 --> 00:08:04.320
und das ist ja auch so ein bisschen

00:08:04.340 --> 00:08:09.460
und so etwas Ähnliches, nur dass die Rahmenbedingungen nicht so schrecklich sind, wenn man einen Schrein hat.

00:08:10.400 --> 00:08:11.680
Ja, und dass es auch egal ist.

00:08:11.840 --> 00:08:15.900
Es ist kein Manager, der hinter einem steht und sagt, mach mal das hier, sondern es geht wirklich nur darum.

00:08:17.500 --> 00:08:20.040
Aber auch da geht es ja auch tatsächlich mehr um das Ergebnis.

00:08:20.120 --> 00:08:21.360
Da ist auch das Ergebnis sichtbarer.

00:08:21.460 --> 00:08:23.400
Du kannst hinterher sagen, der Schrank ist gerade oder nicht.

00:08:25.080 --> 00:08:31.040
Genau, wäre dann nicht ein möglicher Ausweg, ganz naiv, wenn man sein eigener Kunde wird,

00:08:31.600 --> 00:08:33.080
wo man dann quasi...

00:08:33.080 --> 00:08:33.740
Dogfooding.

00:08:33.740 --> 00:08:40.120
Ja, dass man sagt, okay, ich bin halt dann derjenige, der am Ergebnis auch interessiert ist, weil es ist halt auch mein Produkt.

00:08:40.580 --> 00:08:50.880
Genau, also das würde ich halt auch sagen, ganz wichtig, halt dieses Purpose Driven, dass du halt wichtig dafür brennst, dass du das machst, so wie du dir das vorstellst, weil du halt diese User Story quasi selber in dir drin trägst, ja, zum Benutzen.

00:08:50.940 --> 00:08:52.060
Aber will ich ja meistens gar nicht.

00:08:52.060 --> 00:08:53.920
Ja, genau, aber wenn das halt so ist

00:08:53.920 --> 00:08:55.720
und halt irgendwie ein Management das halt nicht hinkriegt,

00:08:55.800 --> 00:08:57.620
das verkackt, dass du halt so eine

00:08:57.620 --> 00:08:59.540
Informationsasymmetrie bekommst zwischen

00:08:59.540 --> 00:09:01.380
User-Story oder Management,

00:09:01.600 --> 00:09:04.000
weiß, was richtig ist und du weißt, was du machen willst,

00:09:04.580 --> 00:09:05.820
das wird halt schwierig zu managen.

00:09:05.960 --> 00:09:07.420
Also das ist eigentlich unmöglich zu managen, weil du kannst,

00:09:07.560 --> 00:09:09.400
die meisten Manager sind ja technisch jetzt nicht so affin,

00:09:09.860 --> 00:09:11.780
kannst du irgendwas vom Pferd erzählen und das machen dann auch

00:09:11.780 --> 00:09:13.740
irgendwann viele Leute, die halt keine Lust haben auf

00:09:13.740 --> 00:09:15.820
irgendwas, erzählen halt auch noch von ganz, ganz

00:09:15.820 --> 00:09:17.860
komplizierten Funktionen, die da geschrieben werden

00:09:17.860 --> 00:09:19.820
müssen und so und dann dauert das

00:09:19.820 --> 00:09:21.240
halt gefühlt ein bisschen länger,

00:09:21.240 --> 00:09:23.520
bis nach zwei Zeilen fertig

00:09:23.520 --> 00:09:25.280
und hast wieder Teil für die schönen Dinge oder so.

00:09:26.900 --> 00:09:27.440
Du meinst,

00:09:27.480 --> 00:09:28.740
dann kannst du noch ein paar Unit-Tests schreiben?

00:09:29.140 --> 00:09:29.720
Ja, zum Beispiel.

00:09:32.240 --> 00:09:33.400
So nutzt man doch dann

00:09:33.400 --> 00:09:35.160
die Zeit, oder? Man schreibt Tests und

00:09:35.160 --> 00:09:36.320
Dokumentation.

00:09:36.860 --> 00:09:39.240
Ja, das fällt ja auch dann meistens immer runter, weil die Leute

00:09:39.240 --> 00:09:40.800
sagen, ja, das ist alles total unwichtig.

00:09:41.740 --> 00:09:43.080
Oder so Refactoring oder sowas.

00:09:43.260 --> 00:09:45.480
Für einen selber als Programmierer

00:09:45.480 --> 00:09:46.200
ist das nicht ganz so wichtig.

00:09:49.200 --> 00:09:50.920
Ja, für alle Leute, die mitarbeiten, vielleicht.

00:09:51.240 --> 00:09:54.100
Das war auf jeden Fall ein großer Paukenschlag

00:09:54.100 --> 00:09:56.100
so direkt zur Eröffnung der Konferenz

00:09:56.100 --> 00:09:58.300
hat auch, ist super gut

00:09:58.300 --> 00:09:59.040
angekommen und

00:09:59.040 --> 00:10:01.320
Programming for pleasure, Daniel Fruchti

00:10:01.320 --> 00:10:03.960
Der macht auch sonst gute Talks, der hat auch schon welche über Dokumentation

00:10:03.960 --> 00:10:05.300
gemacht, die ich auch sehr gut fand

00:10:05.300 --> 00:10:07.080
Sind die eigentlich schon online, die Talks?

00:10:07.240 --> 00:10:08.160
Ich glaube nicht, ne?

00:10:08.160 --> 00:10:12.220
Ich glaube 30 Tage

00:10:12.220 --> 00:10:14.020
habe ich irgendwo gehört, aber ich weiß es nicht

00:10:14.020 --> 00:10:15.380
Wann war die nochmal genau?

00:10:16.520 --> 00:10:17.960
Am 2. Juni

00:10:17.960 --> 00:10:20.080
2. bis 6. Juni

00:10:20.080 --> 00:10:21.900
Dann ist er jetzt in 10 Tagen

00:10:21.900 --> 00:10:23.620
Müsste demnächst soweit sein

00:10:23.620 --> 00:10:24.740
Also ich weiß nicht, wie sie es machen

00:10:24.740 --> 00:10:28.020
Aber cool

00:10:28.020 --> 00:10:29.560
Was hat euch denn noch super gut gefallen?

00:10:29.980 --> 00:10:31.320
Das habt ihr vielleicht noch gar nicht gesagt

00:10:31.320 --> 00:10:33.080
Die beiden hatten auch einen Talk

00:10:33.080 --> 00:10:37.200
Ja, der nächste Talk, der mir sehr gut gefallen hat

00:10:37.200 --> 00:10:38.580
war der von Jochen Wersdorfer

00:10:38.580 --> 00:10:40.000
Fand ich sehr, sehr gut

00:10:40.000 --> 00:10:44.860
Jochen, hast du den auch geguckt?

00:10:44.960 --> 00:10:46.620
Ja, ich habe gerade das erste Mal

00:10:46.620 --> 00:10:47.860
deinen vollen Namen gesagt in diesem Podcast

00:10:47.860 --> 00:10:48.480
Oh je

00:10:48.480 --> 00:10:51.560
Ich glaube auf der Webseite war der auch schon irgendwie drauf

00:10:51.560 --> 00:10:52.440
Hab ich dich gedockt

00:10:52.440 --> 00:10:55.100
Ja

00:10:55.100 --> 00:10:57.620
Nö, das, genau

00:10:57.620 --> 00:10:58.920
Also ich hab den auch ein paar mal

00:10:58.920 --> 00:11:01.620
Ich hab den tatsächlich so ein bisschen dann geübt und so

00:11:01.620 --> 00:11:02.760
Und dachte

00:11:02.760 --> 00:11:04.600
Oh, vielleicht kann ich den auch live halten

00:11:04.600 --> 00:11:06.140
Das hat dann irgendwie nicht geklappt, weil

00:11:06.140 --> 00:11:07.480
mein Video, mein

00:11:07.480 --> 00:11:11.060
vielleicht ein wenig zu elaboriertes Video-Setup

00:11:11.060 --> 00:11:13.280
das nicht zugelassen hat, weil wenn man das als Webcam

00:11:13.280 --> 00:11:15.180
bei Zoom registriert, dann

00:11:15.180 --> 00:11:17.560
wird die Schrift so unscharf, dass man es nicht mehr lesen kann

00:11:17.560 --> 00:11:19.560
und... Also um mal kurz euch vorzustellen, wie Jochen das macht.

00:11:19.620 --> 00:11:21.580
Jochen schmeißt tatsächlich ein megakrasses

00:11:21.580 --> 00:11:23.420
Technik-Setup, wie er schon mal gesagt hat. So, oh, Content

00:11:23.420 --> 00:11:25.100
interessiert dich gar nicht so. Technik ist das, was wichtig ist.

00:11:26.780 --> 00:11:27.640
Schmeißt er dann alles

00:11:27.640 --> 00:11:29.320
halt irgendwie in OBS rein mit einer ziemlich

00:11:29.320 --> 00:11:31.500
krassen Webcam und ziemlich coolem

00:11:31.500 --> 00:11:33.740
Setup da auch mit seinem großen...

00:11:33.740 --> 00:11:35.000
Was ist das für ein...

00:11:35.000 --> 00:11:37.180
Fernsehstudio-Kontrollpult.

00:11:37.340 --> 00:11:39.600
So ein Atem-Mini von Blackmagic.

00:11:39.880 --> 00:11:41.580
Und tatsächlich braucht man dann keinen OBS mehr.

00:11:41.760 --> 00:11:43.380
Das Ding streamt selber. Ah ja, okay.

00:11:43.500 --> 00:11:45.100
Also siehst du noch nicht mal OBS, du hast einfach selbst

00:11:45.100 --> 00:11:47.100
konfiguriert und dann...

00:11:47.100 --> 00:11:48.600
Ja, das sah auch schon ziemlich cool aus, muss ich sagen.

00:11:49.460 --> 00:11:51.680
Aber wir wollten das gar nicht annehmen,

00:11:51.760 --> 00:11:53.220
hast du gerade gesagt. Ja, zurück zum Content.

00:11:53.380 --> 00:11:55.320
Genau, das hat halt dann nicht funktioniert live.

00:11:55.580 --> 00:11:56.540
Sonst hätte ich das auch live gemacht.

00:11:56.960 --> 00:11:59.240
Ach, wegen Zoom? Genau, und dann musste halt die Aufnahme

00:11:59.240 --> 00:12:01.340
verwendet werden, die überraschend früh

00:12:01.340 --> 00:12:03.000
eingereicht werden musste. Das hatte mich auch so ein bisschen

00:12:03.000 --> 00:12:04.060
Schweiß gekostet. Oh ja.

00:12:05.780 --> 00:12:07.120
Und ja,

00:12:07.680 --> 00:12:09.360
so, weil ich hatte doch gar keine Slides fertig

00:12:09.360 --> 00:12:09.680
und so.

00:12:10.820 --> 00:12:12.820
Ja, die Story habe ich ja noch im Ohr.

00:12:13.080 --> 00:12:15.160
Aber jetzt haben wir schon darüber gesprochen,

00:12:15.160 --> 00:12:17.060
was oder wie du getrugt hast.

00:12:17.100 --> 00:12:17.720
über was denn?

00:12:19.040 --> 00:12:21.100
Das ist ein Thema, mit dem ich seit einiger

00:12:21.100 --> 00:12:23.140
Zeit irgendwie so ein bisschen hadere oder wo ich

00:12:23.140 --> 00:12:25.020
dann rum

00:12:25.020 --> 00:12:26.680
feile und zwar

00:12:26.680 --> 00:12:29.180
was ich irgendwie ein bisschen

00:12:29.180 --> 00:12:31.120
doof finde, ist, wenn man so

00:12:31.120 --> 00:12:33.400
mit Files zu tun hat, also tatsächlich Dateien

00:12:33.400 --> 00:12:35.040
irgendwie größere vor allen Dingen, also Bilder

00:12:35.040 --> 00:12:36.940
können auch schon größer werden oder Videos

00:12:36.940 --> 00:12:39.220
oder Audiodateien und Audiodateien hat man natürlich

00:12:39.220 --> 00:12:41.700
irgendwie beim Podcasten

00:12:41.700 --> 00:12:43.340
hat man das schon zu tun und

00:12:43.340 --> 00:12:45.160
irgendwie die Seite für

00:12:45.160 --> 00:12:47.140
diesen Podcast hier, den habe ich ja auch mal irgendwann gebaut

00:12:47.140 --> 00:12:49.340
und da

00:12:49.340 --> 00:12:51.180
ist es so, da verwende ich so ein CDN, um

00:12:51.180 --> 00:12:53.320
die Audio-Files auszuliefern und

00:12:53.320 --> 00:12:55.200
auch wenn ich das bei, jetzt in irgendwelchen

00:12:55.200 --> 00:12:57.000
Kundenprojekten sehe oder so, wenn Leute mit Files umgehen,

00:12:57.600 --> 00:12:59.380
dann hinterlässt das meistens

00:12:59.380 --> 00:13:01.020
so ein, das ist irgendwie

00:13:01.020 --> 00:13:03.240
noch nicht so richtig optimal Ding

00:13:03.240 --> 00:13:05.240
bei mir, weil oft

00:13:05.240 --> 00:13:07.080
hat man dann so Anforderungen wie, das habe ich

00:13:07.080 --> 00:13:08.080
jetzt beim Podcast nicht, aber

00:13:08.080 --> 00:13:09.840
so in

00:13:09.840 --> 00:13:12.720
quasi, ja, wo man so

00:13:12.720 --> 00:13:15.140
Auftragsarbeiten, dann hat man halt oft

00:13:15.140 --> 00:13:17.140
Leute, die irgendwie Authentifizierung

00:13:17.140 --> 00:13:18.520
und Autorisierung haben wollen

00:13:18.520 --> 00:13:21.160
für die Dateien, weil das Sachen sind,

00:13:21.240 --> 00:13:22.160
die nicht unbedingt öffentlich sind.

00:13:23.200 --> 00:13:24.800
Und dann wird es schon schwierig.

00:13:24.980 --> 00:13:27.200
Und das, was halt alle machen eigentlich, oder die meisten

00:13:27.200 --> 00:13:28.800
jedenfalls, wo ich das bisher gesehen habe, ist,

00:13:29.480 --> 00:13:29.900
dass sie

00:13:29.900 --> 00:13:32.940
einfach irgendwie als Dateiname

00:13:32.940 --> 00:13:34.500
den Hash des

00:13:34.500 --> 00:13:36.520
Files nehmen oder so

00:13:36.520 --> 00:13:39.000
und das irgendwo auf den öffentlichen Webserver packen

00:13:39.000 --> 00:13:40.880
und dann sagen, naja, also

00:13:40.880 --> 00:13:41.680
wird schon keiner finden.

00:13:41.680 --> 00:13:42.640
Wird schon keiner erraten.

00:13:42.640 --> 00:13:43.080
Ja, genau.

00:13:43.920 --> 00:13:46.460
Ja, das ist wirklich so, das wird schon keiner erraten.

00:13:46.460 --> 00:13:48.660
Nee, das ist richtig, aber das Problem ist, es kann halt

00:13:48.660 --> 00:13:50.520
irgendwie aus anderen Kanälen halt auch rausliegen,

00:13:50.620 --> 00:13:52.480
wie zum Beispiel irgendwelchen Logfiles oder

00:13:52.480 --> 00:13:54.440
auf der kleinen Seite, dass halt irgendjemand

00:13:54.440 --> 00:13:55.540
die links verschickt.

00:13:56.360 --> 00:13:57.760
Oder das verschickt oder so.

00:13:58.800 --> 00:13:59.540
Und dann hat man halt...

00:13:59.540 --> 00:14:02.360
Du kannst es auch nie wieder zurücknehmen, wenn das einmal jemandem gezeigt hat,

00:14:02.420 --> 00:14:02.940
der hat es für immer.

00:14:03.460 --> 00:14:06.480
Genau. Und das ist halt so ein bisschen

00:14:06.480 --> 00:14:07.860
vielleicht nicht unbedingt das, was man will.

00:14:07.920 --> 00:14:10.460
Und wenn man dann sagt so, oh, das ist aber eigentlich vielleicht nicht so ganz so optimal,

00:14:10.580 --> 00:14:11.360
dann kommt halt häufig so,

00:14:11.360 --> 00:14:41.340
und Jochen unterhalten sich über die Programmiersprache Python

00:14:41.360 --> 00:14:43.300
eigentlich nicht so richtig, dass man das haben möchte.

00:14:43.740 --> 00:14:45.060
Und das hat mich schon immer so ein bisschen geärgert.

00:14:45.560 --> 00:14:47.520
Also ich habe auch schon gesehen, dass Leute das richtig machen,

00:14:47.720 --> 00:14:48.960
aber das ist halt eher so die Ausnahme.

00:14:50.320 --> 00:14:51.360
Was wäre denn richtig?

00:14:51.820 --> 00:14:53.220
Was gibt es denn für Alternativen?

00:14:53.420 --> 00:14:55.420
Genau, also das, was man tun kann,

00:14:56.160 --> 00:14:57.640
wäre halt, wenn man

00:14:57.640 --> 00:14:59.820
jetzt quasi

00:14:59.820 --> 00:15:01.480
das komplett alles selber hosten möchte,

00:15:01.860 --> 00:15:03.500
vielleicht so ein Nginx davor

00:15:03.500 --> 00:15:05.540
zu nehmen, davor zu haben.

00:15:05.600 --> 00:15:06.960
Man hat ja sowieso immer irgendeine Art

00:15:06.960 --> 00:15:09.240
Reverse-Proxy vom Applikationsserver

00:15:09.240 --> 00:15:10.280
bei Django.

00:15:10.280 --> 00:15:12.540
und da kann man ja jetzt,

00:15:13.020 --> 00:15:14.760
also auch

00:15:14.760 --> 00:15:16.140
diesen Lösungsansatz,

00:15:16.400 --> 00:15:18.800
den habe ich ja von dir, Johannes.

00:15:20.960 --> 00:15:22.940
Gibt es da was, was man mit Nginx

00:15:22.940 --> 00:15:23.320
machen kann?

00:15:25.520 --> 00:15:26.080
Genau.

00:15:27.180 --> 00:15:28.840
Dann geht der Request

00:15:28.840 --> 00:15:30.420
vom Browser aus, geht halt

00:15:30.420 --> 00:15:32.700
direkt zum Applikationsserver, aber der

00:15:32.700 --> 00:15:34.240
Applikationsserver schickt halt nicht

00:15:34.240 --> 00:15:36.700
das File zurück, sondern

00:15:36.700 --> 00:15:38.440
der schickt halt eine leere Response zurück,

00:15:38.440 --> 00:15:40.520
der nur in Header gesetzt ist

00:15:40.520 --> 00:15:42.620
also Xen-File oder

00:15:42.620 --> 00:15:44.540
X-Excel heißt der glaube ich bei

00:15:44.540 --> 00:15:46.560
Nginx, wo dann drin steht

00:15:46.560 --> 00:15:48.580
ja, das ist schon okay und dann ersetzt der

00:15:48.580 --> 00:15:50.500
Nginx die

00:15:50.500 --> 00:15:52.520
leere File-Response durch die echte File-Response

00:15:52.520 --> 00:15:54.440
und dann hat man

00:15:54.440 --> 00:15:56.520
Wo kriegt der die her? Ja, der braucht dann halt

00:15:56.520 --> 00:15:58.360
Zugriff auf, wie auch immer

00:15:58.360 --> 00:16:00.200
das Verzeichnis oder was auch immer

00:16:00.200 --> 00:16:02.600
Also halt aus einer Datei, oder?

00:16:03.040 --> 00:16:04.120
Ja, genau

00:16:04.120 --> 00:16:06.560
Okay, aber das ist ja schon mal ziemlich cool, oder?

00:16:06.560 --> 00:16:11.000
dann kann ich ja sagen, diese Datei darfst du nur ausliefern, wenn folgende Vorbedingungen gelten.

00:16:11.120 --> 00:16:15.320
Also ich kann die Vorbedingungen in meinem App-Server prüfen und das Ausliefern macht dann aber Nginx.

00:16:15.600 --> 00:16:16.440
Also das ist ja schon mal ziemlich gut.

00:16:16.460 --> 00:16:18.580
Und damit ist eigentlich ziemlich super, also das funktioniert tatsächlich.

00:16:18.960 --> 00:16:22.940
Das einzige Problem, wo ich sagen würde, naja, das ist halt so ein bisschen hässlich an der Lösung,

00:16:23.140 --> 00:16:28.960
ist, dass man jetzt plötzlich zwei Systeme hat, die Zugriff auf alle Daten haben müssen.

00:16:29.940 --> 00:16:31.380
Also zumindest auf alle Dateien haben müssen.

00:16:31.380 --> 00:16:35.280
Ja, okay, klar. Und es muss halt auch so verbunden sein, dass die das beide korrekt finden.

00:16:35.280 --> 00:16:38.380
Genau, und du kannst es halt nicht mehr gut testen, ob jetzt deine

00:16:38.380 --> 00:16:44.580
Applikation alle Sicherheitsanforderungen noch erfüllt, kannst du in Django-Tests

00:16:44.580 --> 00:16:48.780
allein nicht mehr machen, weil dein Applikationsserver kann ja sagen,

00:16:49.240 --> 00:16:52.640
nee, da darf jemand nicht drauf zugreifen, dein Test überprüft das und sagt so, super, hier ist

00:16:52.640 --> 00:16:56.500
alles richtig und dein Nginx kann aber die Datei trotzdem ausliefern, weil der irgendwie falsch

00:16:56.500 --> 00:16:59.460
konfiguriert ist oder keine Ahnung, weil da sonst irgendwie was schiefgegangen ist

00:16:59.460 --> 00:17:04.260
und das heißt, du merkst unter Umständen nicht, wenn dein System kaputt geht, weil du jetzt

00:17:04.260 --> 00:17:06.020
weil du den einen Teil nicht mehr so wirklich

00:17:06.020 --> 00:17:07.600
mittesten kannst, weil es halt auch schwierig ist

00:17:07.600 --> 00:17:09.920
das komplette System dann halt immer beim entwickeln

00:17:09.920 --> 00:17:12.220
hochzufahren mit Nginx und dem ganzen Kram

00:17:12.220 --> 00:17:14.280
also eigentlich müsstest du es ja dann mittesten

00:17:14.280 --> 00:17:15.840
aber das ist halt

00:17:15.840 --> 00:17:18.380
man verschiebt quasi so ein bisschen

00:17:18.380 --> 00:17:19.980
was von dieser Testlast in den

00:17:19.980 --> 00:17:21.420
operativen Bereich

00:17:21.420 --> 00:17:24.280
im Endeffekt musst du ja dann das operative System

00:17:24.280 --> 00:17:25.720
testen und überprüfen

00:17:25.720 --> 00:17:28.020
und du müsstest ja eigentlich sogar

00:17:28.020 --> 00:17:30.240
einen negativen Test machen, du musst ja nachweisen

00:17:30.240 --> 00:17:32.020
dass Nginx diese Datei unter

00:17:32.020 --> 00:17:33.920
keinen Umständen ausliefert, außer wenn

00:17:33.920 --> 00:17:38.440
und das ist natürlich sehr, sehr schwierig.

00:17:39.360 --> 00:17:40.880
Aber gibt es denn da

00:17:40.880 --> 00:17:43.360
Echtweltbeispiele? Das passiert doch in der Echten Welt nicht, oder?

00:17:43.420 --> 00:17:44.900
Dass irgendwas offen konfiguriert ist?

00:17:46.740 --> 00:17:47.540
Passiert so gut wie die.

00:17:48.160 --> 00:17:50.780
Also auch diese Leaks, die dann immer gibt.

00:17:52.600 --> 00:17:53.520
Das passiert ja nicht.

00:17:53.640 --> 00:17:55.940
Also ich meine, das ist auch eine der häufigsten Sachen, die man so sieht,

00:17:55.940 --> 00:17:57.920
dass dann irgendwo jemand sich mal

00:17:57.920 --> 00:17:59.440
irgendwelche Sachen angeguckt hat und dann

00:17:59.440 --> 00:18:01.680
oh, was ist denn da? Hier sehe ich meine Dateien.

00:18:01.780 --> 00:18:03.060
Was ist denn da? Gibt es da vielleicht noch mehr?

00:18:03.920 --> 00:18:05.940
oder dass irgendwelche Backup-Server offen sind

00:18:05.940 --> 00:18:07.540
oder dass irgendwelche Log-Server offen sind

00:18:07.540 --> 00:18:08.700
oder dass irgendwelche...

00:18:08.700 --> 00:18:11.720
Ja, und dann sind halt plötzlich alle Daten von allen Leuten

00:18:11.720 --> 00:18:13.520
irgendwie öffentlich und das ist halt furchtbar eigentlich.

00:18:14.620 --> 00:18:14.820
Genau.

00:18:16.440 --> 00:18:17.340
Also so kann man das halt machen,

00:18:17.520 --> 00:18:19.300
aber dafür muss man jetzt, also ich würde sagen,

00:18:19.360 --> 00:18:21.020
das ist auf jeden Fall schon somit die beste Lösung,

00:18:21.100 --> 00:18:21.740
die ich so gesehen habe,

00:18:23.200 --> 00:18:24.600
wie man das richtig machen kann.

00:18:26.280 --> 00:18:27.680
Man kann das auch noch machen,

00:18:27.800 --> 00:18:29.620
also wenn man jetzt die eigene Infrastruktur

00:18:29.620 --> 00:18:31.300
komplett unter Kontrolle hat, wenn man das nicht hat...

00:18:31.300 --> 00:18:33.840
Ja, das hört sich halt auch so ein bisschen an, als wäre es ein bisschen komplexer,

00:18:33.920 --> 00:18:35.920
zu dem NGINX zu erzählen, dass er

00:18:35.920 --> 00:18:38.300
dieselben Sachen versteht für Authentifizierung

00:18:38.300 --> 00:18:39.940
und Autorisierung, wie zum Beispiel die Applikations-Server

00:18:39.940 --> 00:18:41.460
mit dem Django dahinter oder so.

00:18:42.720 --> 00:18:43.700
Nee, das muss er ja gar nicht.

00:18:44.080 --> 00:18:45.900
Das muss er nicht. Der Request geht ja durch

00:18:45.900 --> 00:18:48.100
eine Applikations-Server. Das heißt, der Applikations-Server

00:18:48.100 --> 00:18:49.080
entscheidet. Der NGINX

00:18:49.080 --> 00:18:51.620
sieht nur den Header und macht dann

00:18:51.620 --> 00:18:53.860
oder macht eben nicht. Das heißt, das Einzige, was man quasi machen muss,

00:18:53.880 --> 00:18:55.400
die richtigen Header setzen und dann läuft.

00:18:55.400 --> 00:18:56.620
Vom Applikations-Server aus, ja genau.

00:18:57.280 --> 00:18:59.240
Das ist auch sowas. Da gab es dann in der Reaktion

00:18:59.240 --> 00:19:01.500
auf den Talk, glaube ich, in Slack

00:19:01.500 --> 00:19:03.520
oder so, hat dann jemand gesagt, da gibt es doch in der NGINX

00:19:03.520 --> 00:19:33.500
und Jochen unterhalten sich über die Programmiersprache Python

00:19:33.520 --> 00:19:35.760
und das Einzige, was daran so ein bisschen blöd ist,

00:19:35.880 --> 00:19:37.680
ist halt, es funktioniert nur, wenn man,

00:19:38.020 --> 00:19:39.740
also es macht die Infrastruktur komplizierter

00:19:39.740 --> 00:19:41.700
und es funktioniert nur, wenn man die komplette Kontrolle drüber hat.

00:19:41.760 --> 00:19:43.040
Wenn man jetzt ein CDN verwendet oder so,

00:19:43.520 --> 00:19:44.560
geht das halt nicht mehr so richtig.

00:19:44.720 --> 00:19:47.140
Ja, was könnte ich denn machen, wenn ich meine Dateien auf S3 habe?

00:19:47.220 --> 00:19:49.200
Die könnte ich ja auch auf Private schalten

00:19:49.200 --> 00:19:51.200
oder Public. Gibt es denn da auch eine Möglichkeit,

00:19:51.340 --> 00:19:53.660
Jochen, erzähl mal. Genau, ja, also was man da tun kann,

00:19:53.740 --> 00:19:55.560
ist, man benutzt entweder

00:19:55.560 --> 00:19:57.120
signed cookies oder halt

00:19:57.120 --> 00:19:58.220
signierte URLs

00:19:58.220 --> 00:19:59.700
und

00:19:59.700 --> 00:20:03.360
über den Applikationsserver aus. Also das bedeutet,

00:20:03.360 --> 00:20:33.340
und Jochen unterhalten sich über die Programmiersprache Python

00:20:33.360 --> 00:20:34.940
oder sowas, einen Aufruf oder sowas?

00:20:35.360 --> 00:20:37.020
Ja, weiß ich nicht, ob man das da einstellen kann.

00:20:37.240 --> 00:20:39.100
Also IP-Adressen und Zeit weiß ich,

00:20:39.160 --> 00:20:40.580
dass es bei Amazon geht auf jeden Fall.

00:20:41.480 --> 00:20:43.440
Und das kann man halt entweder in die URL packen

00:20:43.440 --> 00:20:45.100
oder man kann es halt sozusagen

00:20:45.100 --> 00:20:46.620
vom Server aus als Cookie setzen.

00:20:47.380 --> 00:20:49.280
Und wenn das dann quasi,

00:20:49.400 --> 00:20:51.160
wenn dieser Request, der kommt

00:20:51.160 --> 00:20:53.020
dann darauf an, wie die Domains aussehen

00:20:53.020 --> 00:20:55.080
und wenn das eine andere Domain ist, ist es manchmal vielleicht schwierig.

00:20:56.320 --> 00:20:57.120
Also ob man jetzt

00:20:57.120 --> 00:20:58.900
als Applikationsserver einen Cookie setzen kann

00:20:58.900 --> 00:21:00.880
für die Domain, unter der dann tatsächlich

00:21:00.880 --> 00:21:02.860
die Files liegen. Aber wenn das kann,

00:21:02.860 --> 00:21:04.760
kann man das halt auch einfach so als Cookie setzen.

00:21:06.020 --> 00:21:06.040
Und

00:21:06.040 --> 00:21:08.020
ja, das

00:21:08.020 --> 00:21:10.720
funktioniert halt auch.

00:21:11.780 --> 00:21:12.820
Das ist auch

00:21:12.820 --> 00:21:14.920
richtig, eigentlich sozusagen

00:21:14.920 --> 00:21:16.640
in Anführungsstrichen ordentlich, aber

00:21:16.640 --> 00:21:18.540
man hat halt immer noch das gleiche Problem,

00:21:18.840 --> 00:21:20.620
dass, oder eigentlich ist es ein bisschen

00:21:20.620 --> 00:21:22.720
schlechter als die Lösung mit

00:21:22.720 --> 00:21:24.740
dem Nginx, weil man halt nicht wirklich

00:21:24.740 --> 00:21:26.620
von dem CDN aus überprüfen kann,

00:21:26.700 --> 00:21:28.120
ob die Autorisierung noch da ist oder nicht.

00:21:28.540 --> 00:21:29.900
Also wenn man jetzt im Django-Admin sagt,

00:21:30.220 --> 00:21:32.100
diese Files dieser User darf ich nicht mehr sehen,

00:21:32.860 --> 00:21:34.940
dann kann das halt nicht sofort

00:21:34.940 --> 00:21:37.040
funktionieren, sondern wenn man halt eine gültige URL hat,

00:21:37.520 --> 00:21:37.600
dann

00:21:37.600 --> 00:21:40.880
funktioniert die erstmal weiter,

00:21:41.020 --> 00:21:42.860
zumindest 30 Minuten lang oder so. Gut,

00:21:42.940 --> 00:21:44.780
ist dann halt nicht mehr so schlimm, als wäre die für immer gültig,

00:21:44.960 --> 00:21:45.260
aber

00:21:45.260 --> 00:21:48.620
auch da reicht es ja unter Umständen schon,

00:21:49.160 --> 00:21:51.060
um irgendwie die Daten

00:21:51.060 --> 00:21:51.760
rauszukriegen.

00:21:52.840 --> 00:21:54.960
Es ist halt so ein bisschen, also es ist besser als nichts

00:21:54.960 --> 00:21:56.620
zu machen, aber es ist halt immer noch so ein bisschen so,

00:21:56.620 --> 00:21:58.320
so richtig schön ist es eigentlich nicht.

00:21:59.500 --> 00:22:00.800
ja, und

00:22:00.800 --> 00:22:01.780
genau.

00:22:02.860 --> 00:22:06.260
Ja, also das sind halt so die beiden Ansätze, wie man das ordentlich macht eigentlich.

00:22:06.460 --> 00:22:10.680
Aber was ist denn jetzt die richtige Lösung? Was kann man denn heutzutage noch besser machen?

00:22:11.380 --> 00:22:21.880
Genau, meine Idee an der Stelle war, okay, naja, es muss im Grunde über den Applikationsserver gehen, weil der der Einzige ist, der weiß, ob jetzt ein User irgendwas sehen darf oder nicht.

00:22:22.540 --> 00:22:27.480
Das kann man auch nicht irgendwie großartig anders machen, ohne Probleme zu bekommen.

00:22:27.480 --> 00:22:29.680
wie wäre es denn, wenn der einfach selber

00:22:29.680 --> 00:22:31.200
die Files ausliefert?

00:22:33.300 --> 00:22:35.940
Aber davon wird ja erstmal abgeraten,

00:22:36.080 --> 00:22:37.880
oder? Weil dann sind die Worker beschäftigt

00:22:37.880 --> 00:22:39.840
und dann hast du nur so und so viele

00:22:39.840 --> 00:22:41.580
App-Server und dann

00:22:41.580 --> 00:22:43.700
sind die langsam und brauchen viel

00:22:43.700 --> 00:22:45.520
Speicher und so. Genau, also

00:22:45.520 --> 00:22:47.400
in allen Tutorials und so steht immer drin so,

00:22:47.480 --> 00:22:49.720
ne, macht das nicht, also wenn ihr irgendwie Files ausliefern wollt,

00:22:49.800 --> 00:22:51.060
macht das über einen getrennten

00:22:51.060 --> 00:22:53.540
App-Server, der da statische Files direkt ausliefern kann, oder

00:22:53.540 --> 00:22:55.700
macht das mit White Noise und CDN oder so,

00:22:55.700 --> 00:22:57.820
aber macht das nicht über den Applikations-

00:22:57.820 --> 00:22:59.520
Server, weil das Problem beim Applikations-

00:22:59.520 --> 00:23:01.680
Server ist halt, dass es normalerweise standardmäßig

00:23:01.680 --> 00:23:03.660
ein Pre-Forked

00:23:03.660 --> 00:23:04.960
also sozusagen es gibt

00:23:04.960 --> 00:23:07.400
mehrere Prozesse, die halt Requests

00:23:07.400 --> 00:23:09.460
beantworten, davon gibt es halt so ein paar, eine Handvoll

00:23:09.460 --> 00:23:11.680
vielleicht oder sagen wir mal so im Allgemeinen

00:23:11.680 --> 00:23:13.220
vielleicht zweimal Anzahl der

00:23:13.220 --> 00:23:15.600
Koas plus eins oder so, was halt

00:23:15.600 --> 00:23:16.600
halbwegs optimal ist

00:23:16.600 --> 00:23:18.460
und

00:23:18.460 --> 00:23:21.280
solange die irgendwas ausliefern,

00:23:21.580 --> 00:23:23.320
sind die halt belegt und wenn ich jetzt ein File

00:23:23.320 --> 00:23:25.140
ausliefer, das groß ist oder

00:23:25.140 --> 00:23:45.942
und Jochen unterhalten sich die Programmiersprache Python und wenn alle Workerprozesse belegt sind dann kann niemand mehr anrufen Ah ich wei worauf das hinausl Und genau Ja daher sollte man das nicht machen weil wenn und das kann schnell passieren

00:23:46.022 --> 00:23:47.842
wenn man eine Webseite hat, da sind ja viele Bilder drauf.

00:23:48.842 --> 00:23:49.722
Auch die Browser, die

00:23:49.722 --> 00:23:51.502
fragen ja inzwischen concurrent ab

00:23:51.502 --> 00:23:53.762
und so, dann ist halt relativ schnell

00:23:53.762 --> 00:23:55.022
vorbei mit den Workern.

00:23:55.702 --> 00:23:57.442
Und ja, dann

00:23:57.442 --> 00:23:59.542
müssen halt andere Clients

00:23:59.542 --> 00:24:01.682
warten und das ist natürlich schlecht, weil das

00:24:01.682 --> 00:24:03.182
hat halt direkten Einfluss auf die

00:24:03.182 --> 00:24:05.602
User Experience, weil entweder dauert es länger oder

00:24:05.602 --> 00:24:07.502
noch schlimmer, es gibt halt eine Fehlermeldung, weil

00:24:07.502 --> 00:24:09.582
irgendwas timeoutet. Das heißt, man müsste

00:24:09.582 --> 00:24:11.422
die auch concurrent bedienen. Genau.

00:24:11.542 --> 00:24:13.762
Und das kann dieses Preforged Worker

00:24:13.762 --> 00:24:15.702
Modell synchron Sachen ausliefern

00:24:15.702 --> 00:24:16.722
eigentlich nicht leisten.

00:24:17.522 --> 00:24:18.842
Deswegen wird immer davon abgeraten.

00:24:20.602 --> 00:24:21.742
Aber wir haben

00:24:21.742 --> 00:24:23.142
ja jetzt Async Await

00:24:23.142 --> 00:24:25.402
in Python seit einiger Zeit.

00:24:26.842 --> 00:24:27.562
In Django

00:24:27.562 --> 00:24:29.522
noch nicht so lange, weil da konnte es halt lange

00:24:29.522 --> 00:24:31.222
nicht so richtig verwendet werden, weil

00:24:31.222 --> 00:24:34.082
die Standard-Schnittstelle zwischen Applikationsserver

00:24:34.082 --> 00:24:35.642
und Web-Framework

00:24:35.642 --> 00:24:37.142
ist halt WSGI

00:24:37.142 --> 00:24:39.722
und WSGI kann das halt einfach nicht.

00:24:40.602 --> 00:24:41.582
Das sind halt

00:24:41.582 --> 00:24:43.642
synchrone Funktionsaufrufe, da kannst du auch nichts machen.

00:24:45.002 --> 00:24:45.142
Und

00:24:45.142 --> 00:24:47.082
ASGI, also der

00:24:47.082 --> 00:24:49.462
Nachfolger, der halt dann auch

00:24:49.462 --> 00:24:51.382
sozusagen asynchrone

00:24:51.382 --> 00:24:52.242
Dinge

00:24:52.242 --> 00:24:55.542
kann, der ist halt noch nicht so alt,

00:24:55.642 --> 00:24:57.242
ist auch quasi im Kontext von

00:24:57.242 --> 00:24:59.482
im

00:24:59.482 --> 00:25:00.622
Django-Kontext irgendwie entstanden.

00:25:01.022 --> 00:25:03.382
Der ist, glaube ich, von Andrew Godwin geschrieben worden.

00:25:03.922 --> 00:25:05.262
Ja, das ist, glaube ich, ein Janals-Projekt.

00:25:05.542 --> 00:25:05.702
Ja.

00:25:07.802 --> 00:25:09.522
Genau, und damit geht das

00:25:09.522 --> 00:25:11.462
dann, aber Unterstützung

00:25:11.462 --> 00:25:13.522
für die Syntax war auch lange nicht möglich, weil

00:25:15.182 --> 00:25:16.382
weil halt

00:25:16.382 --> 00:25:19.502
Django lange Zeit noch Python 2 zum Beispiel

00:25:19.502 --> 00:25:21.342
unterstützt hat, bis Dezember 2019,

00:25:21.442 --> 00:25:22.682
also bis Django 3 rausgekommen ist.

00:25:23.722 --> 00:25:25.482
Und mit Python 2 geht es gar nicht,

00:25:26.002 --> 00:25:27.542
weil da gibt es einfach nicht die Syntax für,

00:25:27.542 --> 00:25:29.562
so Async-Awaid-Syntax

00:25:29.562 --> 00:25:30.442
geht damit nicht

00:25:30.442 --> 00:25:32.642
und auch mit

00:25:32.642 --> 00:25:35.322
Python 3.5 ging das nicht gut

00:25:35.322 --> 00:25:37.302
ich weiß ehrlich gesagt nicht genau, woran das liegt

00:25:37.302 --> 00:25:39.482
also die Syntax kam eigentlich mit 3.5

00:25:39.482 --> 00:25:41.382
aber alle Bibliotheken, die das irgendwie

00:25:41.382 --> 00:25:43.402
die Async-Awaid unterstützen, die sagen alle immer

00:25:43.402 --> 00:25:45.262
ja, erst ab Python 3.6, da ist wohl irgendwas

00:25:45.262 --> 00:25:47.462
Wichtiges noch passiert, aber ich habe nie so richtig rausgefunden

00:25:47.462 --> 00:25:49.322
was, vielleicht sind es auch einfach nur

00:25:49.322 --> 00:25:50.762
die F-Strings und alle sagen so

00:25:50.762 --> 00:25:53.322
wenn wir jetzt schon was Modernes haben, wollen wir auch F-Strings haben

00:25:53.322 --> 00:25:55.362
und dann geht das halt erst ab 3.6

00:25:55.362 --> 00:25:56.042
ich habe keine Ahnung

00:25:56.042 --> 00:25:57.882
und

00:25:57.882 --> 00:26:00.102
Ja, aber ich meine 3.5 und 3.6

00:26:00.102 --> 00:26:01.842
macht jetzt für uns nicht so den Riesenunterschied, oder?

00:26:01.982 --> 00:26:02.782
Wir sind ja alle modern.

00:26:03.522 --> 00:26:05.502
Debian ist inzwischen auf 3.8 und

00:26:05.502 --> 00:26:06.942
Oh wow, okay.

00:26:08.402 --> 00:26:09.962
Genau, jedenfalls also

00:26:09.962 --> 00:26:12.142
die Syntax kann man

00:26:12.142 --> 00:26:13.342
also dass es überhaupt geht

00:26:13.342 --> 00:26:16.082
ist halt ab Django 3.0 so

00:26:16.082 --> 00:26:18.402
Support für Python 2

00:26:18.402 --> 00:26:20.222
und für Python 3.5

00:26:20.222 --> 00:26:22.302
gedroppt und seitdem

00:26:22.302 --> 00:26:24.142
gibt es auch Unterstützung für SGI

00:26:24.142 --> 00:26:26.522
und halt auch prinzipiell die Möglichkeit

00:26:26.522 --> 00:26:28.562
Async-IO-Syntax zu verwenden

00:26:28.562 --> 00:26:30.362
in Django. Aber es gab noch keine

00:26:30.362 --> 00:26:31.862
Async-Views. Das heißt, man

00:26:31.862 --> 00:26:34.482
konnte keine Async-File-Response

00:26:34.482 --> 00:26:35.382
schreiben, weil

00:26:35.382 --> 00:26:37.522
Async-Views gab es halt einfach nicht.

00:26:38.042 --> 00:26:39.542
Und das kam erst dazu im

00:26:39.542 --> 00:26:42.082
August letzten Jahres, August 2020.

00:26:42.462 --> 00:26:43.782
Das heißt, es geht noch gar nicht so lange.

00:26:44.602 --> 00:26:45.842
Also 2019 meinst du?

00:26:46.122 --> 00:26:46.642
Nee, 2020.

00:26:47.962 --> 00:26:48.922
Django 3.2.

00:26:48.922 --> 00:26:49.982
Ja, war doch 2019.

00:26:50.762 --> 00:26:51.062
Ach ja.

00:26:53.322 --> 00:26:53.982
Ach ja.

00:26:54.142 --> 00:26:58.462
Ja, okay, auf jeden Fall gibt es das erst seit ungefähr einem Jahr

00:26:58.462 --> 00:27:00.702
Genau, und damals hatte ich ja auch schon

00:27:00.702 --> 00:27:01.302
Warum ist das cool?

00:27:01.662 --> 00:27:03.842
Ja, das ist eigentlich, genau, das ist halt total cool, weil

00:27:03.842 --> 00:27:06.942
das bedeutet eigentlich, dass man jetzt so richtig

00:27:06.942 --> 00:27:08.862
Async-Sachen mit Django tun kann

00:27:08.862 --> 00:27:10.922
was man auch nicht tun kann, was auch

00:27:10.922 --> 00:27:13.022
total cool wäre, aber das wird halt noch ein bisschen dauern, ist halt

00:27:13.022 --> 00:27:13.862
tatsächlich

00:27:13.862 --> 00:27:16.642
Async die Datenbank fragen

00:27:16.642 --> 00:27:19.122
oder so, aber man hat zumindest schon mal Async-Views

00:27:19.122 --> 00:27:20.242
und das ist halt

00:27:20.242 --> 00:27:22.722
hilfreich, ich hatte dann

00:27:22.722 --> 00:27:24.762
Ich hatte damals einen Artikel auch drüber geschrieben

00:27:24.762 --> 00:27:26.162
mit Dominik zusammen.

00:27:27.482 --> 00:27:28.722
Genau, der ist sogar in der Zeitung erschienen,

00:27:28.822 --> 00:27:29.962
auch bei euch dann und auf deinem Blog.

00:27:30.682 --> 00:27:31.402
Echt? Cool.

00:27:32.262 --> 00:27:33.602
Darf man das sagen, Entwickler?

00:27:34.122 --> 00:27:36.222
Ja, schick das Magazin.

00:27:37.462 --> 00:27:37.702
Und

00:27:37.702 --> 00:27:40.722
genau, da haben wir

00:27:40.722 --> 00:27:42.622
überlegt, okay, was für Anwendungsfälle gibt es denn

00:27:42.622 --> 00:27:44.482
jetzt eigentlich, wenn man schon Async-Kram machen kann?

00:27:45.702 --> 00:27:46.082
Und

00:27:46.082 --> 00:27:48.502
der Anwendungsfall, den wir dann

00:27:48.502 --> 00:27:50.802
da benutzt haben, war, du machst halt

00:27:50.802 --> 00:27:52.542
in der Django-Applikation

00:27:52.542 --> 00:27:54.722
vielleicht ganz viele API-Zugriffe irgendwo nach außen hin

00:27:54.722 --> 00:27:56.622
und möchtest halt nicht, dass

00:27:56.622 --> 00:27:58.502
sich die Latenzen, die du dann beim

00:27:58.502 --> 00:28:00.162
Abfragen dieser Requests hast, halt

00:28:00.162 --> 00:28:01.922
aufsummieren, sondern dass halt

00:28:01.922 --> 00:28:04.562
die Latenz nur

00:28:04.562 --> 00:28:06.362
so lang ist wie der längste Request, den du machst.

00:28:06.442 --> 00:28:08.262
Und dann schickst du einfach all die Requests, die du zu

00:28:08.262 --> 00:28:09.862
irgendwelchen APIs machst, gleichzeitig los

00:28:09.862 --> 00:28:12.782
und die Antworten

00:28:12.782 --> 00:28:14.502
kommen halt sozusagen dann auch concurrent zurück

00:28:14.502 --> 00:28:15.962
und nur

00:28:15.962 --> 00:28:18.342
die Latenz wird bestimmt durch die

00:28:18.342 --> 00:28:20.342
langsamste API, aber nicht mehr

00:28:20.342 --> 00:28:22.682
durch die Summe aller Requests.

00:28:23.282 --> 00:28:24.542
Und das macht es dann halt schon deutlich

00:28:24.542 --> 00:28:26.362
schneller. Also wenn du da viele APIs fragst,

00:28:26.442 --> 00:28:28.562
dann kann es sein, dass du da halt in Größenordnungen

00:28:28.562 --> 00:28:30.222
schneller bist oder so.

00:28:30.902 --> 00:28:32.702
Und das ist dann ja schon praktisch.

00:28:33.802 --> 00:28:34.982
Und das war so der Anwendungsfall.

00:28:35.002 --> 00:28:36.702
Haben wir da nicht auch drüber gesprochen

00:28:36.702 --> 00:28:37.902
in der Async-Episode?

00:28:38.042 --> 00:28:38.602
Ja, ja, bestimmt.

00:28:39.702 --> 00:28:42.662
Da haben wir ja auch schon mal zwei Episoden dazu gemacht.

00:28:42.662 --> 00:28:44.162
Ja, das ist halt...

00:28:44.162 --> 00:28:45.022
Wir brauchen noch mehr.

00:28:45.722 --> 00:28:47.122
Da kann man immer noch mal drüber sprechen.

00:28:48.302 --> 00:28:49.942
Wenn man ein Thema einmal drin hat,

00:28:49.942 --> 00:28:51.062
Da muss man das auch ein bisschen ausschlafen.

00:28:51.062 --> 00:28:51.862
Ja, genau.

00:28:53.122 --> 00:28:55.042
Aber jetzt ist mir dann halt irgendwann,

00:28:55.082 --> 00:28:55.942
das war so Anfang des Jahres,

00:28:56.082 --> 00:28:58.722
dann dachte ich so, ach, wenn man jetzt schon so async await hat,

00:28:58.982 --> 00:29:00.742
vielleicht ist ja tatsächlich Files-Serve

00:29:00.742 --> 00:29:02.762
ein guter Anwendungsfall,

00:29:03.242 --> 00:29:05.142
weil es ist ja immer so ein bisschen hässlich,

00:29:05.582 --> 00:29:06.582
so richtig toll ist es nie

00:29:06.582 --> 00:29:08.702
und eigentlich könnte man ja jetzt

00:29:08.702 --> 00:29:10.282
eine async-file-response schreiben,

00:29:10.922 --> 00:29:12.542
die die Daten sozusagen

00:29:12.542 --> 00:29:14.762
da so asynchron rausstreamt,

00:29:14.922 --> 00:29:16.342
ohne zu blockieren

00:29:16.342 --> 00:29:18.242
und dann müsste das ja eigentlich,

00:29:18.242 --> 00:29:19.702
müsste ich ja quasi beliebig viele

00:29:19.702 --> 00:29:21.482
Clients

00:29:21.482 --> 00:29:23.162
den Files ausliefern können.

00:29:24.222 --> 00:29:26.182
Und dann habe ich dann halt so ein bisschen rumprobiert

00:29:26.182 --> 00:29:28.042
und ja, hat so ein bisschen gedauert

00:29:28.042 --> 00:29:28.962
und irgendwann aber

00:29:28.962 --> 00:29:31.502
okay, das funktioniert tatsächlich und

00:29:31.502 --> 00:29:33.322
ja, dann habe ich daraus halt

00:29:33.322 --> 00:29:35.982
dann hat der Johannes

00:29:35.982 --> 00:29:37.702
erzählt, dass er dann irgendwas bei der

00:29:37.702 --> 00:29:39.982
Django EU eingereicht hat und da dachte ich so

00:29:39.982 --> 00:29:41.002
das muss ich dann auch machen.

00:29:41.882 --> 00:29:42.942
Den Talk eingereicht haben.

00:29:42.942 --> 00:29:43.802
Der soziale Druck.

00:29:44.382 --> 00:29:47.022
Ja und

00:29:47.022 --> 00:29:51.922
und genau, das war dann auch Thema des Talks im Grunde und es funktioniert auch tatsächlich.

00:29:52.702 --> 00:30:00.722
Ich habe unterwegs auch Methoden gefunden, wie man das Gleiche hinkriegt und auch schon vorher hinkriegen konnte, ohne sich so zu verrenken.

00:30:01.702 --> 00:30:04.302
Insofern war es vielleicht alles nicht so richtig notwendig.

00:30:05.742 --> 00:30:07.842
Ja, aber das ist ja schon sauberer, was du da geschrieben hast.

00:30:07.962 --> 00:30:13.602
Wir haben ja die Tests gesehen und in einigen Tagen kann vielleicht jeder auch sich diesen Talk selber angucken.

00:30:13.602 --> 00:30:14.582
Ja, ich packe das.

00:30:14.582 --> 00:30:16.962
Ist ja schon deutlich sauberer und deutlich einfacher.

00:30:17.562 --> 00:30:18.882
Wirst du das auch

00:30:18.882 --> 00:30:19.602
an Django schicken?

00:30:20.662 --> 00:30:21.982
Ich mache dann einfach ein

00:30:21.982 --> 00:30:24.242
Party-Package draus.

00:30:25.662 --> 00:30:26.762
Das wäre ja prinzipiell was, was

00:30:26.762 --> 00:30:28.762
vielleicht auch für Django an sich ein Gegenstand ist.

00:30:29.362 --> 00:30:30.442
Ja, das Problem ist,

00:30:31.182 --> 00:30:32.782
leider funktioniert es nicht so

00:30:32.782 --> 00:30:34.842
richtig, kann man es nicht einfach in Django,

00:30:34.922 --> 00:30:36.862
könnte man es nicht in Django reinbauen

00:30:36.862 --> 00:30:38.442
oder könnte man schon, aber dazu müsste man

00:30:38.442 --> 00:30:40.122
den SGI-Händler,

00:30:40.302 --> 00:30:42.022
das Ding, was halt mit

00:30:42.022 --> 00:30:44.562
die Applikation ist, quasi die

00:30:44.562 --> 00:30:46.382
SGI-Applikationen, das ist halt der

00:30:46.382 --> 00:30:48.122
SGI-Händler in Django.

00:30:49.022 --> 00:30:50.462
Ach, den hast du einfach mal gemunkeypatcht, oder?

00:30:50.602 --> 00:30:51.682
Naja, den müsste man

00:30:51.682 --> 00:30:53.862
anpassen und das ist natürlich nicht so schön.

00:30:54.102 --> 00:30:56.242
Aber das ist in NPR auch prinzipiell möglich.

00:30:57.262 --> 00:30:58.302
Oder dass man Subklassen

00:30:58.302 --> 00:30:59.162
anbietet oder sowas.

00:30:59.242 --> 00:31:02.102
Ja, muss man vielleicht mal

00:31:02.102 --> 00:31:03.182
mit jemandem drüber sprechen.

00:31:03.182 --> 00:31:04.822
Ja genau, dann machst du halt den ASCII mit

00:31:04.822 --> 00:31:06.842
Async-File-Response-Händler.

00:31:07.782 --> 00:31:09.142
Genau, aber den habe ich jetzt einfach

00:31:09.142 --> 00:31:10.622
erstmal in einem anderen Paket drin und wenn man

00:31:10.622 --> 00:31:12.282
das verwenden möchte, dann muss man halt

00:31:12.282 --> 00:31:13.742
muss man halt entweder get

00:31:13.742 --> 00:31:16.742
async-file-response-handler

00:31:16.742 --> 00:31:17.742
oder so eine Application

00:31:17.742 --> 00:31:20.402
irgendwie importieren oder halt den Händler direkt

00:31:20.402 --> 00:31:22.282
und dann die Applikation selber instanziieren

00:31:22.282 --> 00:31:24.442
und dann geht das, aber das ist halt schon

00:31:24.442 --> 00:31:26.342
ein Umbau an Django. Das Problem ist, ich weiß halt nicht, was das

00:31:26.342 --> 00:31:27.182
alles kaputt machen würde.

00:31:27.442 --> 00:31:30.082
Da kann es schon sein, dass einige Dinge nicht mehr

00:31:30.082 --> 00:31:30.742
auf der Händler sind.

00:31:30.822 --> 00:31:35.742
Ja, klingt auf jeden Fall ziemlich cool.

00:31:35.862 --> 00:31:38.282
Das heißt, man kann jetzt einfach mit dem Django-Applikations-Server

00:31:38.282 --> 00:31:39.822
seine Files direkt ausliefern.

00:31:40.302 --> 00:31:41.642
Man muss sie nicht mehr irgendwie außen

00:31:41.642 --> 00:31:43.642
vom Web-Server quasi routen lassen.

00:31:43.762 --> 00:31:46.122
Man kann direkt sagen, Django, hey, nimm die doch mal direkt aus.

00:31:46.202 --> 00:31:47.962
Weiß nicht, was nutzt man dafür? Django Storage ist raus

00:31:47.962 --> 00:31:49.662
oder so und liefert die mal mit.

00:31:49.882 --> 00:31:52.122
Ja, und das war damals,

00:31:52.162 --> 00:31:54.082
als ich den, damals, vor zwei Wochen,

00:31:54.562 --> 00:31:57.282
war das noch nicht so klar.

00:31:57.462 --> 00:31:58.002
Also man kann auch

00:31:58.002 --> 00:31:59.162
irgendwie ein selbst gehostetes

00:31:59.162 --> 00:32:01.802
S3 oder so benutzen, weil das ist ja eigentlich,

00:32:01.802 --> 00:32:03.602
das war auch mein Ziel. Ich habe es mit dem

00:32:03.602 --> 00:32:06.102
File-System gezeigt, aber File-System ist ja eigentlich so ein bisschen langweilig,

00:32:06.202 --> 00:32:07.842
weil... Wie hostet man S3 selber?

00:32:08.122 --> 00:32:09.522
Minio? Minio, genau.

00:32:09.522 --> 00:32:12.762
weil man möchte eigentlich nicht, dass

00:32:12.762 --> 00:32:14.042
User

00:32:14.042 --> 00:32:16.122
selbst so Content

00:32:16.122 --> 00:32:18.782
Files, wo sie Content kontrollieren, in das gleiche Filesystem

00:32:18.782 --> 00:32:20.862
nehmen kann, in dem die Applikation läuft

00:32:20.862 --> 00:32:22.102
das ist halt auch so ein bisschen gefährlich

00:32:22.102 --> 00:32:24.482
und man hat dann das Synchronisationsproblem

00:32:24.482 --> 00:32:25.822
kann man natürlich irgendwie so ein

00:32:25.822 --> 00:32:28.142
Samba-Share nehmen oder NFS oder was weiß ich

00:32:28.142 --> 00:32:30.782
geht alles

00:32:30.782 --> 00:32:31.962
aber ist halt auch so ein bisschen

00:32:31.962 --> 00:32:35.302
Ancient Relay

00:32:35.302 --> 00:32:36.382
ja

00:32:36.382 --> 00:32:38.322
also die Standard

00:32:38.322 --> 00:32:40.222
Standard

00:32:40.222 --> 00:32:42.582
Geschichte, wie man das selber hostet momentan,

00:32:42.702 --> 00:32:44.502
also so ein Object Store wie S3

00:32:44.502 --> 00:32:46.582
oder so, ist halt

00:32:46.582 --> 00:32:47.382
wohl momentan Minio.

00:32:48.462 --> 00:32:50.322
Da müssen wir ja quasi direkt so einen kleinen Exkurs machen,

00:32:50.422 --> 00:32:52.602
weil an der Stelle, das hast du alles gezeigt

00:32:52.602 --> 00:32:54.462
auf deinem neuen Twitch-Stream.

00:32:55.742 --> 00:32:56.582
Genau, genau, genau.

00:32:56.742 --> 00:32:58.262
Das und die Entwicklung daran,

00:32:58.342 --> 00:32:59.902
die habe ich jetzt gerade mal gestreamt, weil ich dachte so,

00:33:00.142 --> 00:33:02.322
jetzt konnte ich dieses Atem-Mini-Dings da gar nicht

00:33:02.322 --> 00:33:04.282
auf den Talk einsetzen, da muss ich es

00:33:04.282 --> 00:33:05.242
auf irgendwas anderes benutzen.

00:33:05.462 --> 00:33:08.082
Also Jochen hat tatsächlich in der letzten Woche oder in den letzten

00:33:08.082 --> 00:33:10.162
zwei Wochen ein bisschen mehr auf Twitch gestreamt und auf YouTube

00:33:10.162 --> 00:33:12.002
gleichzeitig und da seine Sachen hochgeladen,

00:33:12.062 --> 00:33:13.862
da könnt ihr ein bisschen beim Live-Programmieren mal gucken,

00:33:14.022 --> 00:33:15.742
das ist vielleicht ein bisschen was anderes, als nur so zu

00:33:15.742 --> 00:33:17.342
theorisieren,

00:33:17.802 --> 00:33:19.962
sondern halt auch mal tatsächlich live zu sehen, wie Jochen

00:33:19.962 --> 00:33:22.182
das denn so macht. Wie ich da vorsitze und keine Ahnung, was ich da eigentlich

00:33:22.182 --> 00:33:24.022
tue. Genau, Jochen ist auch noch Mensch und macht die ganze Zeit

00:33:24.022 --> 00:33:25.602
Fehler und so und mir fällt es, wenn ich da vorsitze,

00:33:25.702 --> 00:33:27.982
ich möchte die ganze Zeit hier so einen Stock nehmen.

00:33:28.542 --> 00:33:29.202
Ja, bitte?

00:33:29.822 --> 00:33:31.582
Kann man sich wünschen, was du programmierst?

00:33:32.022 --> 00:33:33.822
Du programmierst nur, was dir Freude macht.

00:33:35.522 --> 00:33:35.882
Ja,

00:33:36.562 --> 00:33:38.022
prinzipiell kein

00:33:38.022 --> 00:33:38.822
Problem, ja klar.

00:33:40.402 --> 00:33:41.762
Vielleicht gegen eine kleine Spende

00:33:41.762 --> 00:33:42.402
kannst du vielleicht

00:33:42.402 --> 00:33:44.662
Requests annehmen.

00:33:45.082 --> 00:33:45.442
Ja, genau.

00:33:47.202 --> 00:33:49.402
Mir sind auch immer wieder aufgefallen, schöne Sachen da bei dir,

00:33:49.922 --> 00:33:51.182
die du schön gemacht hast.

00:33:52.442 --> 00:33:53.622
Ich packe den Link mal rein, mal gucken,

00:33:53.742 --> 00:33:55.042
ob da...

00:33:55.042 --> 00:33:57.682
Das hätte ich doch ganz anders gemacht, fällt Jochen dann eine halbe Stunde

00:33:57.682 --> 00:33:59.002
später auf, oh, das kann man ja auch anders machen.

00:33:59.462 --> 00:34:01.422
Ja, aber ich meine, so ist das halt.

00:34:01.422 --> 00:34:03.402
Mir sind da auch schon tatsächlich live Dinge

00:34:03.402 --> 00:34:04.802
passiert, wie...

00:34:04.802 --> 00:34:07.482
Ich habe da live einen Bug in irgendeinem

00:34:07.482 --> 00:34:09.422
in einer Library gefunden sozusagen

00:34:09.422 --> 00:34:11.202
und dann sitzt er da. Also ich hatte

00:34:11.202 --> 00:34:13.042
bisher immer so den Impuls dann zu sagen so, okay,

00:34:13.602 --> 00:34:15.343
das muss ich dann mal irgendwann debuggen, wenn ich Zeit

00:34:15.343 --> 00:34:16.742
habe, weil das ist zu langweilig.

00:34:18.002 --> 00:34:18.582
Immer wieder.

00:34:19.183 --> 00:34:20.982
Aber das ging, glaube ich. Also ich meine,

00:34:21.062 --> 00:34:22.343
aber es ist ja vielleicht auch ganz gut mal zu sehen,

00:34:22.442 --> 00:34:23.843
wie man das rumsucht.

00:34:24.163 --> 00:34:26.522
Also Jochen benutzt dafür übrigens NBDEV.

00:34:27.363 --> 00:34:29.062
Da hatten wir auch schon mal ein bisschen eingeleitet.

00:34:29.382 --> 00:34:31.042
Genau, das mache ich eigentlich nur, weil

00:34:31.042 --> 00:34:33.183
ich das Projekt ganz cool fand.

00:34:33.262 --> 00:34:34.982
Das mache ich jetzt nicht unbedingt mit allen Sachen so, aber

00:34:34.982 --> 00:34:36.643
für das Ding dachte ich...

00:34:36.643 --> 00:34:37.922
Ja, du musst das nämlich dann nochmal anders machen.

00:34:38.143 --> 00:34:40.062
Also nochmal in VI

00:34:40.062 --> 00:34:42.222
und einmal in VS Code oder so, da kann man schauen.

00:34:42.442 --> 00:34:44.262
Vielleicht sogar in PyCharm, dass man so ein bisschen einmal zeigt,

00:34:44.323 --> 00:34:45.163
wie das denn überall so geht.

00:34:45.702 --> 00:34:48.222
Genau, das habe ich auf jeden Fall auch vor.

00:34:50.082 --> 00:34:50.882
Ja, genau.

00:34:51.343 --> 00:34:52.542
Ja, vielleicht kriegen wir das ja auch mit dem Podcast

00:34:52.542 --> 00:34:53.722
nochmal so ein bisschen

00:34:53.722 --> 00:34:56.363
ja, den

00:34:56.363 --> 00:34:58.222
vielleicht so ein bisschen Video

00:34:58.222 --> 00:35:00.082
live schalten.

00:35:01.042 --> 00:35:02.382
Ja, also jetzt mal gucken, ob wir dafür

00:35:02.382 --> 00:35:04.222
Zuschauer bekommen, begeistern können.

00:35:05.582 --> 00:35:06.022
Ja, cool.

00:35:06.022 --> 00:35:07.422
Genau, so, das war das

00:35:07.422 --> 00:35:09.882
Ja, ich glaube, noch jemand hat halt tatsächlich einen Workshop bei der

00:35:09.882 --> 00:35:11.042
Dank bekommen. Was, noch jemand?

00:35:11.702 --> 00:35:14.082
Ja, ich bin ja quasi schuld dran,

00:35:14.123 --> 00:35:15.902
dass Jochen den Talk

00:35:15.902 --> 00:35:18.022
überhaupt eingereicht hat, weil ich habe das nämlich auch gemacht

00:35:18.022 --> 00:35:19.262
und das war bei mir auch so ein bisschen

00:35:19.262 --> 00:35:21.582
so halb spontan

00:35:21.582 --> 00:35:23.102
Also danke, klar

00:35:23.102 --> 00:35:25.683
Nee, eigentlich überhaupt nicht, weil

00:35:25.683 --> 00:35:27.542
die Botschaft auf der Webseite

00:35:27.542 --> 00:35:29.982
die die Organisierer, die übrigens

00:35:29.982 --> 00:35:31.042
großartig sind

00:35:31.042 --> 00:35:33.302
so verbreiten, ist ja

00:35:33.302 --> 00:35:35.942
ja, selbst wenn du dir nicht sicher bist, probier es halt

00:35:35.942 --> 00:35:40.022
mal. Komm, reich was ein, im schlimmsten Fall machst du keinen Talk. Im schlimmsten Fall musst du einen Talk machen.

00:35:41.862 --> 00:35:43.702
Und so war es dann auch so ein bisschen. Ich habe mir überlegt, was

00:35:43.702 --> 00:35:48.102
andere Menschen interessieren könnte und was ich Interessantes sagen könnte

00:35:48.102 --> 00:35:52.143
und habe es einfach mal so ein kleines bisschen reingeschrieben. Die Talk-Beschreibung

00:35:52.143 --> 00:35:56.062
hat sich dann auch im Laufe der Zeit noch mehrmals geändert. Es ist auch nicht

00:35:56.062 --> 00:35:59.542
genau das gewesen, was ich mir anfänglich gedacht hätte. Aber ja, ich habe einen

00:35:59.542 --> 00:36:02.842
Talk eingereicht, der dann als Workshop akzeptiert wurde.

00:36:02.842 --> 00:36:08.442
und es ging so ein bisschen darum, wie ich Django-Projekte mache.

00:36:08.922 --> 00:36:11.663
Also so ein bisschen das, was du auch von dir in unseren Podcast-Folgen erzählt hast wahrscheinlich.

00:36:11.663 --> 00:36:17.742
Genau, so ein bisschen Best Practices oder Programmierer-Erfahrung.

00:36:17.902 --> 00:36:19.462
Ich programmiere jetzt schon sehr lange in Django.

00:36:20.402 --> 00:36:23.422
Ich habe mal nachgeguckt, welches die erste Version war, die ich benutzt habe.

00:36:23.602 --> 00:36:24.822
Das war die 0.96.

00:36:27.942 --> 00:36:30.962
Ist schon eine ganze Weile her, das war 2005.

00:36:30.962 --> 00:37:00.962
Also ich habe jetzt tatsächlich 15 Jahre Django-Erfahrung 15? Das sind ja noch 2020 Ja, wieso? Ich habe das eben nicht verstanden Wir müssen das jetzt einfach so lange wiederholen, bis wirklich jeder glaubt Ich habe also über 15 Jahre Django-Erfahrung und da sammeln sich einfach so Dinge an, die man sich angewöhnt, an die man tut und die dann auch sinnvoll sind

00:37:00.962 --> 00:37:14.742
Best Practices dazu zu sagen, ist ein bisschen zu hoch geflogen, weil Best Practices heißt ja, dass das jeder so macht oder jeder so machen sollte und so weit will ich gar nicht gehen. Ich will eigentlich nur sagen, hier folgende Dinge haben sich für mich bewährt und hier ist auch die Begründung.

00:37:14.742 --> 00:37:17.102
und ja, das habe ich dann so ein bisschen da reingepackt.

00:37:17.322 --> 00:37:19.102
Also ich hatte vier Bereiche

00:37:19.102 --> 00:37:20.602
mir aufgeschrieben.

00:37:21.222 --> 00:37:22.502
Während des Live-Talks

00:37:22.502 --> 00:37:24.902
sind es dann leider nur drei Bereiche geworden,

00:37:25.143 --> 00:37:27.042
aber es gibt ja genau

00:37:27.042 --> 00:37:28.683
wie beim Jochen auch eine sehr frühzeitig

00:37:28.683 --> 00:37:30.082
eingereichte Aufnahme,

00:37:30.982 --> 00:37:32.902
die auch auf meiner

00:37:32.902 --> 00:37:35.062
Webseite zur Verfügung steht. Können wir nachher gerne

00:37:35.062 --> 00:37:36.862
verlinken. War glaube ich auch ein bisschen mehr

00:37:36.862 --> 00:37:38.822
für Einsteiger geeignet, glaube ich, den Talk, den du gemacht hast,

00:37:38.822 --> 00:37:40.722
als das, was Jochen jetzt... Ja, es

00:37:40.722 --> 00:37:42.822
war so ein bisschen gedacht, dass ich vier verschiedene

00:37:42.822 --> 00:37:44.822
Bereiche habe und manche sind für Einsteiger

00:37:44.822 --> 00:37:46.163
gut und manche sind eher für

00:37:46.163 --> 00:37:47.722
Fortgeschrittenere gut.

00:37:49.782 --> 00:37:50.882
Was dann halt am Ende

00:37:50.882 --> 00:37:52.702
so ein kleines bisschen rausgefallen ist.

00:37:52.802 --> 00:37:54.382
Diese Einsteiger-Sachen, wobei auch

00:37:54.382 --> 00:37:55.663
erfahrene Leute,

00:37:56.002 --> 00:37:58.282
ich wechsle da immer so hin und her,

00:37:58.522 --> 00:38:00.702
der Bereich, der mich da

00:38:00.702 --> 00:38:02.282
hauptsächlich beschäftigt war, ist Projektstruktur.

00:38:03.082 --> 00:38:04.382
Wo kommt Code hin?

00:38:04.562 --> 00:38:06.683
Wie heißen die Dateien? Wie sorge ich

00:38:06.683 --> 00:38:08.202
dafür, dass ich die Sachen alle wiederfinde?

00:38:09.022 --> 00:38:10.602
Wie sorge ich dafür, dass ich auch

00:38:10.602 --> 00:38:12.102
in einem großen Projekt den Überblick bewahre?

00:38:12.102 --> 00:38:13.522
und sowas halt.

00:38:13.982 --> 00:38:16.282
Ich wechsle da immer so hin und her. Es gibt ja Leute,

00:38:16.442 --> 00:38:18.342
die sind da ganz krass drauf. Die haben dann ihre

00:38:18.342 --> 00:38:20.822
extrem angepassten Cookie-Cutter-Vorlagen,

00:38:21.302 --> 00:38:22.762
wo alles anders ist,

00:38:22.822 --> 00:38:23.683
wo alles Custom ist.

00:38:25.502 --> 00:38:26.782
Und es gibt Leute, die benutzen

00:38:26.782 --> 00:38:27.683
Django Start Project.

00:38:27.962 --> 00:38:30.542
Ich wechsle da immer so ein bisschen hin und her.

00:38:30.862 --> 00:38:32.402
Ich sehe die Vorteile von beidem.

00:38:32.582 --> 00:38:34.902
In den letzten Jahren bin ich mehr so in Richtung

00:38:34.902 --> 00:38:36.282
Django Start Project gegangen,

00:38:36.542 --> 00:38:38.742
weil das schon eine gute Basis ist

00:38:38.742 --> 00:38:39.782
und weil das jeder machen kann.

00:38:39.782 --> 00:38:41.183
und

00:38:41.183 --> 00:38:43.202
weil das jeder auch versteht.

00:38:43.602 --> 00:38:45.802
Aber das hat so ein paar Dinge, die mir

00:38:45.802 --> 00:38:47.822
da nicht so gut gefallen. Zum Beispiel das Appsfolder.

00:38:48.462 --> 00:38:49.602
Zum Beispiel der Appsfolder, ja.

00:38:49.702 --> 00:38:51.643
Ich finde, alle Apps, die man

00:38:51.643 --> 00:38:53.762
selbst in seinem Code hat, die gehören in ein eigenes

00:38:53.762 --> 00:38:56.002
Verzeichnis. Die gehören nicht in das Projektverzeichnis

00:38:56.002 --> 00:38:57.782
rein. Bei dem Projektverzeichnis sind ganz viele

00:38:57.782 --> 00:38:59.282
andere Sachen drin. Config zum Beispiel.

00:38:59.742 --> 00:39:01.602
Und dass das Configverzeichnis nicht Config heißt,

00:39:01.702 --> 00:39:02.342
ist auch sowas.

00:39:03.542 --> 00:39:05.322
Passe ich in jedem meiner Projekte an, ja.

00:39:05.802 --> 00:39:07.482
Und das einfach mal sozusagen

00:39:07.482 --> 00:39:09.562
zusammenzuholen und zusammenzufassen und ein bisschen

00:39:09.562 --> 00:39:10.862
drüber zu sprechen, auch was

00:39:10.862 --> 00:39:13.702
da für Schritte drin sind.

00:39:14.102 --> 00:39:14.882
War super hilfreich.

00:39:15.322 --> 00:39:17.722
Inzwischen habe ich das Ganze auch in ein Template verpasst.

00:39:17.902 --> 00:39:18.882
Django hat tatsächlich

00:39:18.882 --> 00:39:21.482
einen Template-Mechanismus für Startproject und

00:39:21.482 --> 00:39:23.842
für Startapp. Den kannte ich auch noch nicht.

00:39:24.002 --> 00:39:25.242
Das fand ich auch sehr interessant.

00:39:25.362 --> 00:39:27.062
Das wusste ich nicht und das ist voll nützliche Information.

00:39:27.502 --> 00:39:28.082
Echt sehr gut.

00:39:28.882 --> 00:39:30.082
Ich habe da jetzt auch inzwischen

00:39:30.082 --> 00:39:33.163
das so eben zusammengefasst, dass man also mit

00:39:33.163 --> 00:39:34.102
Startproject

00:39:34.102 --> 00:39:37.522
Template dir geht tatsächlich

00:39:37.522 --> 00:39:38.562
sogar von GitHub direkt.

00:39:38.562 --> 00:39:41.542
dass man da meine

00:39:41.542 --> 00:39:43.942
Konventionen reinnehmen kann, die fast

00:39:43.942 --> 00:39:45.202
genauso sind wie die von Django

00:39:45.202 --> 00:39:47.942
und eben da mehr Struktur

00:39:47.942 --> 00:39:49.962
reinbringen. Oh, das finde ich

00:39:49.962 --> 00:39:51.982
auch nochmal interessant, wie man das nochmal aufsetzt und das editiert

00:39:51.982 --> 00:39:53.822
dass man sein eigenes Skeleton

00:39:53.822 --> 00:39:55.402
Start Template über das Django

00:39:55.402 --> 00:39:58.082
Start Project Kommando reinbekommt, das fände ich auch nochmal

00:39:58.082 --> 00:40:00.082
spannend. Ja, können wir gerne mal

00:40:00.082 --> 00:40:01.822
besprechen oder vielleicht machen wir da einfach

00:40:01.822 --> 00:40:03.882
eine Bibliothek dafür, Dominik. Wollte ich sowieso

00:40:03.882 --> 00:40:05.342
nochmal, können wir mal

00:40:05.342 --> 00:40:07.882
zusammenprogrammieren. Ja, machen wir. Genau, also es war einfach

00:40:07.882 --> 00:40:13.742
so ein bisschen, wie entwickle ich und was hat sich für mich bewährt und dann eben

00:40:13.742 --> 00:40:18.942
genau so ein bisschen im Dialog so ein bisschen drüber sprechen, was bei den anderen so ist.

00:40:19.022 --> 00:40:19.922
Und das hat super gut funktioniert.

00:40:20.082 --> 00:40:21.322
Das ist auch, glaube ich, ganz gut angekommen.

00:40:23.562 --> 00:40:24.183
Klingt spannend.

00:40:25.702 --> 00:40:27.502
Müsst ihr euch auch hinterher mal einbuchen, kommt auch in zehn Tagen.

00:40:27.623 --> 00:40:28.042
Ja, genau.

00:40:28.202 --> 00:40:28.982
Wir verlinken das.

00:40:29.183 --> 00:40:30.082
Und auf deiner Seite hast du das.

00:40:30.082 --> 00:40:30.242
Genau.

00:40:30.342 --> 00:40:32.422
Oder eben meine Aufnahme ist schon auf der Seite.

00:40:33.922 --> 00:40:36.242
Das war so die sechste oder siebte Aufnahme, die ich gemacht habe.

00:40:36.362 --> 00:40:37.042
Also die ist ganz okay.

00:40:37.422 --> 00:40:37.602
Okay.

00:40:37.882 --> 00:40:44.042
Ja, das hatte ich auch ehrlich gesagt, damit hätte ich nicht gerechnet, wie oft man dann ein paar Mal aufgenommen und dann passiert irgendein Scheiß.

00:40:46.042 --> 00:40:47.683
Fällt einem die Kaffeekante aus der Hand.

00:40:47.683 --> 00:40:58.422
Bei der letzten Aufnahme, die ich nehmen wollte, das war dann auch schon am Tag der Abgabe, habe ich drei verschiedene Aufnahmen gemacht, Audioaufnahme und Kameraaufnahme und Screencast.

00:40:59.042 --> 00:41:01.542
Und da wollte ich zusammenschneiden und dann war der Screencast kaputt.

00:41:01.542 --> 00:41:31.522
und Jochen unterhalten sich über die Programmiersprache Python

00:41:31.542 --> 00:41:33.663
gut waren und dann gab es alle die ganz okay.

00:41:33.722 --> 00:41:35.362
Also ihr merkt, dass es noch relativ viel technische

00:41:35.362 --> 00:41:37.862
Detailarbeit hängt. Ja, aber tatsächlich

00:41:37.862 --> 00:41:39.722
erstaunlich viel mehr Vorbereitung

00:41:39.722 --> 00:41:41.703
als ich gedacht hätte.

00:41:41.862 --> 00:41:42.942
Genau, aber

00:41:42.942 --> 00:41:45.222
was ich sagen muss, also das war

00:41:45.222 --> 00:41:47.462
dann, da war Johannes' Vertrag auch

00:41:47.462 --> 00:41:48.522
echt einer der

00:41:48.522 --> 00:41:51.522
positiv herausstechendsten,

00:41:51.643 --> 00:41:53.722
also sowohl Video-Audio-Qualität war gut,

00:41:54.542 --> 00:41:55.762
während

00:41:55.762 --> 00:41:56.623
das aber...

00:41:56.623 --> 00:41:58.062
Ja, ja.

00:41:59.042 --> 00:42:00.502
Weil tatsächlich muss man leider sagen,

00:42:00.502 --> 00:42:02.882
Also ich fand, oft war das nicht so gut.

00:42:03.002 --> 00:42:03.302
Ich hatte dann

00:42:03.302 --> 00:42:06.802
während der Konferenz gar nicht so richtig Zeit, das live zu verfolgen,

00:42:06.922 --> 00:42:07.042
weil

00:42:07.042 --> 00:42:10.203
Dinge passieren.

00:42:11.862 --> 00:42:12.542
Aber ich habe

00:42:12.542 --> 00:42:14.342
die dann alle versucht nachzuhören,

00:42:14.482 --> 00:42:15.962
hinterher, und habe die dann halt

00:42:15.962 --> 00:42:17.922
auf dem Telefon

00:42:17.922 --> 00:42:19.902
laufen lassen, weil

00:42:19.902 --> 00:42:22.102
ja, auch ich komme nicht von Rechner sitzen, muss halt

00:42:22.102 --> 00:42:22.982
Dinge passieren.

00:42:24.902 --> 00:42:26.562
Und das ging auch ganz gut,

00:42:26.742 --> 00:42:28.562
aber was mich halt dann schon

00:42:28.562 --> 00:42:30.462
so nach dem dritten, vierten Talk, den ich gehört habe,

00:42:30.502 --> 00:42:32.683
angenervt hat, ist halt, dass die Audioqualität

00:42:32.683 --> 00:42:34.623
oft nicht gut ist. Weil was

00:42:34.623 --> 00:42:36.542
viele Leute dann machen ist, sie

00:42:36.542 --> 00:42:38.522
nehmen halt ihr Laptop oder sonst irgendwas

00:42:38.522 --> 00:42:40.602
und stellen sich dann halt ein paar Meter dahinter, damit sie

00:42:40.602 --> 00:42:42.522
halt irgendwie zu sehen sind und dann

00:42:42.522 --> 00:42:44.502
sind sie halt weit vom Mikrofon weg und das

00:42:44.502 --> 00:42:46.542
Mikrofon ist schon schlecht und dann

00:42:46.542 --> 00:42:48.022
wird das nochmal kaputt komprimiert.

00:42:48.042 --> 00:42:48.882
Dann geht der Laptop-Lüfter an.

00:42:50.062 --> 00:42:51.982
Und dann ist es

00:42:51.982 --> 00:42:54.623
schwer zu verstehen. Also ich hatte tatsächlich

00:42:54.623 --> 00:42:56.663
bei einigen Talks das Problem, dass ich sie kaum

00:42:56.663 --> 00:42:58.582
verstanden habe. Ich habe die Lautstärke

00:42:58.582 --> 00:43:00.442
auf dem Telefon komplett aufgedreht und trotzdem

00:43:00.442 --> 00:43:02.062
Schwierigkeiten gehabt, das richtig zu verstehen.

00:43:02.462 --> 00:43:04.602
Und es ist vor allen Dingen auch anstrengend,

00:43:04.663 --> 00:43:05.643
selbst wenn man es verstehen kann,

00:43:06.242 --> 00:43:08.302
Audio zu hören, wo man immer

00:43:08.302 --> 00:43:10.022
so schlecht ist, dass man

00:43:10.022 --> 00:43:12.643
sich wirklich anstrengen muss, um es zu hören zu können.

00:43:13.522 --> 00:43:14.623
Und da denke ich

00:43:14.623 --> 00:43:15.382
vielleicht auch manchmal,

00:43:15.922 --> 00:43:17.982
da gab es ja auch so einen Talk,

00:43:18.062 --> 00:43:20.102
ich glaube es diesmal nicht, aber glaube ich bei der letzten

00:43:20.102 --> 00:43:21.542
DjangoCon EU,

00:43:22.123 --> 00:43:23.842
How to get on the stage.

00:43:25.842 --> 00:43:26.462
Der war verlinkt

00:43:26.462 --> 00:43:28.382
für die Sprecher, damit die wissen,

00:43:28.382 --> 00:43:29.102
was auf sie zukommt.

00:43:29.102 --> 00:43:30.322
Ja, und

00:43:30.322 --> 00:43:32.882
vielleicht kann man auch irgendwie so, wie kriegt man eigentlich

00:43:32.882 --> 00:43:34.782
zumindest verständliches Audio und

00:43:34.782 --> 00:43:37.042
nicht so, beim Video ist ja fast egal,

00:43:37.382 --> 00:43:38.922
das ist ja gar nicht so furchtbar wichtig, aber ich finde

00:43:38.922 --> 00:43:40.982
das Audio ist halt schon so das halt, was

00:43:40.982 --> 00:43:42.962
man verstehen können sollte, wenn man

00:43:42.962 --> 00:43:44.462
den Inhalt mitbekommen möchte

00:43:44.462 --> 00:43:46.902
und wie kriegt man das so hin, dass man das verstehen kann

00:43:46.902 --> 00:43:48.123
und dass das nicht total schrecklich ist

00:43:48.123 --> 00:43:51.143
und ja, weil das war durchgängig

00:43:51.143 --> 00:43:53.002
fand ich bei den, bei vielen

00:43:53.002 --> 00:43:54.962
nicht gut. Es gab ein paar Ausnahmen,

00:43:55.123 --> 00:43:56.183
eben Johannes eine

00:43:56.183 --> 00:43:59.962
eine löbliche Ausnahme, aber bei vielen war das nicht so richtig toll.

00:43:59.982 --> 00:44:00.522
Man tut, was man kann.

00:44:02.722 --> 00:44:06.663
Ja, das ist schade, dass es dann oft an so technischen Sachen auch hängt,

00:44:06.822 --> 00:44:11.422
aber das ist halt wirklich bei so einer Remote-Konferenz eine sehr inhomogene Mischung

00:44:11.422 --> 00:44:17.242
von Technik und Menschen und Ideen und Anforderungen und Zeit auch.

00:44:18.302 --> 00:44:21.982
Ja, das liegt mir jetzt auch völlig klar, dass ich hier damit sprechen möchte.

00:44:21.982 --> 00:44:51.962
und Jochen unterhalten sich über die Programmiersprache Python

00:44:51.982 --> 00:45:04.922
Was mir so ein bisschen negativ aufgefallen ist, war, dass diese Zoom-Meetings oft qualitativ nicht so cool waren. Also ich habe jetzt auch nicht die beste Kamera aufgestellt gehabt, aber ich sah halt auf dem Bild echt krümelig aus auch.

00:45:04.922 --> 00:45:13.683
und danach, nach den Talks, waren immer noch Jitsi, hatten sie immer noch einen Jitsi-Raum für den jeweiligen Talk, auch super, ja, großartige Idee,

00:45:14.502 --> 00:45:19.942
dass man sozusagen noch so dieses Gefühl hat, ich gehe jetzt vor zu dem Sprecher, ich gehe zur Bühne und spreche noch fünf Minuten mit dem,

00:45:20.643 --> 00:45:25.762
haben sie super hingekriegt und da war die Bildqualität bei den Sprechern dann oft wesentlich besser als vorher in diesem Zoom-Meeting.

00:45:27.222 --> 00:45:28.942
Das ist natürlich schon irgendwie schade.

00:45:29.982 --> 00:45:30.902
Das ist schon irgendwie schade.

00:45:30.902 --> 00:45:33.882
Aber vielleicht noch eine ganze Technikkritik

00:45:33.882 --> 00:45:34.842
jetzt hier an den Bildern.

00:45:35.342 --> 00:45:37.262
Was hat euch denn inhaltlich noch super gefallen?

00:45:38.042 --> 00:45:40.203
Aber das ist halt das Einzige, was man kritisieren kann.

00:45:40.683 --> 00:45:41.762
Das alles andere war halt super.

00:45:41.982 --> 00:45:43.302
Die Vorträge waren super

00:45:43.302 --> 00:45:45.322
und die Community war super.

00:45:46.782 --> 00:45:47.882
Die hatten ein Tool, das heißt

00:45:47.882 --> 00:45:48.582
Gather Town.

00:45:49.262 --> 00:45:50.602
Oh ja, Gather Town ist großartig.

00:45:51.262 --> 00:45:53.203
Da kann man nicht rumlaufen mit einem kleinen Avatar

00:45:53.203 --> 00:45:56.002
und sich dann quasi live auf dem Konferenzgelände treffen

00:45:56.002 --> 00:45:57.123
mit so einem Pixel-Avatar.

00:45:57.502 --> 00:45:59.982
Und da kann man sich auch dann sehen, weil wenn man sich da live begegnet,

00:45:59.982 --> 00:46:01.962
und dann geht nämlich die Kamera an und man kann den Ton hören

00:46:01.962 --> 00:46:03.802
und dann kann man sich irgendwie auf dem Dorfplatz versammeln

00:46:03.802 --> 00:46:05.722
oder ich weiß jetzt nicht genau, ich war gar nicht bei der Dankokon

00:46:05.722 --> 00:46:06.582
live im Gettertau.

00:46:07.262 --> 00:46:09.183
Es hat einfach eine Räumlichkeit.

00:46:10.462 --> 00:46:11.703
Wenn du in einem Jitsi bist oder

00:46:11.703 --> 00:46:13.703
in einem Slack oder so, dann bist du ja immer mit allen Leuten

00:46:13.703 --> 00:46:15.302
gleichzeitig am Sprechen.

00:46:16.203 --> 00:46:17.722
Und das ist zwar schön, weil du mit

00:46:17.722 --> 00:46:19.822
allen Leuten gleichzeitig sprechen kannst, aber es ist auch so ein bisschen

00:46:19.822 --> 00:46:21.382
erschreckend, weil dir alle Leute immer

00:46:21.382 --> 00:46:23.282
zuhören, weil alles public ist.

00:46:23.482 --> 00:46:25.582
Und außerdem meinten sich die Leute vielleicht dann gar nicht, weil

00:46:25.582 --> 00:46:27.762
irgendwer immer redet. Ja genau, weil man sich nicht traut.

00:46:27.762 --> 00:46:30.382
und den Gersatron

00:46:30.382 --> 00:46:32.002
habe ich in der Ecke gestellt und warte, bis jemand vorbeikommt.

00:46:32.602 --> 00:46:34.683
Ja, genau. Oder man kann an den Stand gehen von den Sponsoren

00:46:34.683 --> 00:46:36.362
und kann sich da was zeigen lassen.

00:46:36.482 --> 00:46:38.602
Oder man kann sich an den Tisch setzen, wo schon vier Leute

00:46:38.602 --> 00:46:40.562
sitzen und dann weißt du, es sind genau vier Leute da

00:46:40.562 --> 00:46:41.222
und nicht 80.

00:46:42.562 --> 00:46:44.683
Und das macht einfach ein ganz hartes Gefühl.

00:46:44.802 --> 00:46:46.562
Also man kann eigentlich gar nicht so richtig

00:46:46.562 --> 00:46:48.462
viel kritisieren, außer eben die Bildqualität.

00:46:51.442 --> 00:46:52.482
Und ja.

00:46:53.582 --> 00:46:54.442
Jochen, was war denn der...

00:46:54.442 --> 00:46:55.602
Du hast alle Talks angeguckt, oder?

00:46:55.602 --> 00:46:58.262
Was war denn der Talk, der dich am meisten überrascht hat?

00:46:59.342 --> 00:47:02.742
Tatsächlich der erste, würde ich sagen, insofern ist das ein bisschen langweilig immer.

00:47:04.442 --> 00:47:05.442
Dann sprechen wir da nicht nochmal drüber.

00:47:06.742 --> 00:47:12.542
Ansonsten fand ich die, also man muss auch unterhalten, es gibt halt mehrere Dimensionen

00:47:12.542 --> 00:47:23.025
sozusagen es gab halt Talks die mich halt inhaltlich haben so wie der erste und die ich auch gut fand Oder es gab welche die ich technisch gut fand Oder es gab welche

00:47:23.385 --> 00:47:25.565
wo ich den Inhalt fachlich super fand.

00:47:26.385 --> 00:47:27.385
Aber das muss alles nicht

00:47:27.385 --> 00:47:28.765
unbedingt gleichzeitig passiert sein,

00:47:28.885 --> 00:47:30.985
sondern das war teilweise...

00:47:30.985 --> 00:47:32.785
Hast du vielleicht noch eine Empfehlung von einem Talk,

00:47:32.825 --> 00:47:34.425
den man unbedingt gucken sollte, wenn du jetzt beitraust bist?

00:47:34.825 --> 00:47:37.225
Also einer meiner Lieblingstalks

00:47:37.225 --> 00:47:38.965
war auf jeden Fall der von Carlton Gibson.

00:47:40.965 --> 00:47:42.425
Carlton ist auch generell großartig.

00:47:42.805 --> 00:47:44.545
Static Sites mit Sphinx,

00:47:44.845 --> 00:47:46.905
weil ich hatte auch selber da schon mal so Dinge

00:47:46.905 --> 00:47:48.805
gemacht. Ich habe auch überlegt, ob ich da nicht

00:47:48.805 --> 00:47:49.325
irgendwie

00:47:49.325 --> 00:47:52.125
ViewPress oder WhitePress,

00:47:52.545 --> 00:47:54.145
ich habe da schon auch Dinge mitgemacht,

00:47:54.645 --> 00:47:56.645
für Dokumentation von Software verwenden soll

00:47:56.645 --> 00:47:58.685
und dann

00:47:58.685 --> 00:48:00.745
dieses, diese

00:48:00.745 --> 00:48:03.465
Read the Docs

00:48:03.465 --> 00:48:04.905
Geschichte, wie heißt das noch da?

00:48:05.405 --> 00:48:06.905
Restructured Text, das ist ja eigentlich auch

00:48:06.905 --> 00:48:08.965
ganz nett, da kann man auch viele schöne Sachen, aber es ist meistens

00:48:08.965 --> 00:48:10.785
nicht so vielleicht unbedingt

00:48:10.785 --> 00:48:12.865
eben auch vor Nachteile

00:48:12.865 --> 00:48:14.905
und das, was er da vorgestellt hat,

00:48:14.925 --> 00:48:16.885
das fand ich schon großartig, dass man halt sozusagen

00:48:16.885 --> 00:48:18.785
auf der einen Seite diese

00:48:18.785 --> 00:48:21.305
etablierte Dokumentations-

00:48:21.305 --> 00:48:23.205
Erstellungsgeschichte benutzen kann,

00:48:23.305 --> 00:48:25.065
aber auf der anderen Seite dann halt, das war mir auch

00:48:25.065 --> 00:48:27.345
völlig überhaupt gar nicht klar, dass die Django-Dokumentation

00:48:27.345 --> 00:48:28.805
das so macht, dass da nicht

00:48:28.805 --> 00:48:30.945
ein fertig gerendertes statisches HTML

00:48:30.945 --> 00:48:33.105
ist, sondern dass das dynamische Elemente hat

00:48:33.105 --> 00:48:34.505
und dass das halt, dass sozusagen

00:48:34.505 --> 00:48:37.345
die Art, wie der Dokumentations-

00:48:37.345 --> 00:48:38.825
Content in die Django-Dokumentations-

00:48:38.825 --> 00:48:40.765
reinkommt, ist halt über Jason.

00:48:41.905 --> 00:48:42.725
Das war mir

00:48:42.725 --> 00:48:44.605
überhaupt nicht klar und das ist eigentlich aber

00:48:44.605 --> 00:48:45.245
voll gut.

00:48:47.245 --> 00:48:48.665
Und deswegen, also

00:48:48.665 --> 00:48:50.625
den Talk fand ich auch technisch gut,

00:48:50.785 --> 00:48:51.805
also das Audio war super.

00:48:52.425 --> 00:48:54.605
Carlton macht das auch total gut, der ist total entspannt

00:48:54.605 --> 00:48:56.565
und ein bisschen flapsig und kurz

00:48:56.565 --> 00:48:58.105
und echt cool.

00:48:58.645 --> 00:49:00.345
Carlton Gibson, Static Pages.

00:49:00.945 --> 00:49:02.605
Genau. Carlton Gibson ist generell

00:49:02.605 --> 00:49:04.305
so einer, der in der Community ganz viel

00:49:04.305 --> 00:49:06.405
macht. Er ist einer von den Django Fellows.

00:49:07.545 --> 00:49:08.105
Der macht die ganze

00:49:08.105 --> 00:49:10.045
und er macht die ganze Drecksarbeit. Er bezeichnet sich

00:49:10.045 --> 00:49:10.925
selbst als Janitor.

00:49:12.205 --> 00:49:13.845
Django ist Janitor und

00:49:13.845 --> 00:49:15.925
der ist schon

00:49:15.925 --> 00:49:17.905
jahrelang in der Community

00:49:17.905 --> 00:49:19.865
drin und der ist großartig. Also das kann ich jedem

00:49:19.865 --> 00:49:21.965
empfehlen. Oh, er macht ja auch einen Podcast

00:49:21.965 --> 00:49:23.625
mit Will Vincent zusammen,

00:49:23.885 --> 00:49:25.525
Django Chat. Ach, das ist auch gut.

00:49:25.945 --> 00:49:28.065
Hatte ich kürzlich im Auto die Zeit, acht Episoden

00:49:28.065 --> 00:49:28.685
anzuhören.

00:49:31.725 --> 00:49:34.105
Also auch das, da muss man die Konkurrenz

00:49:34.105 --> 00:49:35.945
einmal hier hervorheben. Du hast ja demnächst

00:49:35.945 --> 00:49:37.945
öfter mal Zeit wieder für die Podcasts

00:49:37.945 --> 00:49:40.205
im Auto, habe ich gehört. Ja, es kann passieren,

00:49:40.325 --> 00:49:41.625
dass ich demnächst mehr Auto fahren muss.

00:49:42.585 --> 00:49:44.045
Der Talk, der mich am meisten

00:49:44.045 --> 00:49:46.085
überrascht hat, wusste ich aber

00:49:46.085 --> 00:49:48.105
vorher schon, weil ich kenne die Person auch

00:49:48.105 --> 00:49:50.225
von anderen

00:49:50.225 --> 00:49:51.445
Django-Kons, wo ich schon war, ist

00:49:51.445 --> 00:49:53.665
Rewriting Django from Scratch in 2021

00:49:53.665 --> 00:49:55.125
von Emma Deliscore,

00:49:55.945 --> 00:49:57.925
die sich die Frage gestellt hat, wenn wir

00:49:57.925 --> 00:49:58.705
kein Django hätten

00:49:58.705 --> 00:50:01.925
und es aus

00:50:01.925 --> 00:50:03.785
Bibliotheken zusammensetzen müssten, wie

00:50:03.785 --> 00:50:04.785
schwierig wäre das denn?

00:50:06.045 --> 00:50:07.805
Und die Antwort ist, erstaunlich wenig.

00:50:07.945 --> 00:50:09.085
Ja, wäre gar nicht so schwer.

00:50:09.805 --> 00:50:11.965
Ja genau, man findet quasi für alle Bauteile

00:50:11.965 --> 00:50:13.325
was und sie hat dann eben wenige

00:50:13.325 --> 00:50:15.925
wenige hundert Zeilen Glue-Code geschrieben,

00:50:16.145 --> 00:50:17.845
die das Ganze zu einem Django machen und

00:50:17.845 --> 00:50:20.105
das so als Denkanstoß für Django 4,

00:50:20.225 --> 00:50:22.005
weil das steht ja demnächst

00:50:22.005 --> 00:50:24.125
an, wo wohl

00:50:24.125 --> 00:50:25.885
auch einige technische Änderungen drin sein sollen.

00:50:26.925 --> 00:50:27.685
Fand ich super spannend.

00:50:28.425 --> 00:50:29.765
Ja, ja, aber ich meine,

00:50:30.205 --> 00:50:31.965
also in gewisser Weise wäre das,

00:50:32.065 --> 00:50:33.725
aber das kann auch sein, dass ich das nicht so

00:50:33.725 --> 00:50:35.945
richtig verstanden habe, weil ich dachte so

00:50:35.945 --> 00:50:39.445
Er ist so, ja, interessant, die ganzen Dinge, die sie dann nennt, aber warum sollte man das so machen?

00:50:39.665 --> 00:50:45.665
Weil für mich ist ja eigentlich der Vorteil von Django jetzt gegenüber zum Beispiel sowas wie Flask oder so,

00:50:46.025 --> 00:50:50.985
oder könnte man auch gleich nochmal kurz was zu sagen, dass man das eben nicht machen muss,

00:50:51.045 --> 00:50:55.525
dass man auch nicht sich darum kümmern muss, dass die ganzen Sachen immer noch gemaintained sind

00:50:55.525 --> 00:50:58.945
und wenn sie das nicht mehr sind, das austauscht, sondern Django kriegst du sozusagen das Komplettpaket,

00:50:58.945 --> 00:51:00.685
wo andere Leute sich drum gekümmert haben

00:51:00.685 --> 00:51:02.965
vielleicht nicht alle Funktionen

00:51:02.965 --> 00:51:03.605
und nicht so

00:51:03.605 --> 00:51:08.885
im Detail ausgefeilt, aber dafür

00:51:08.885 --> 00:51:10.265
halt irgendwie stimmig.

00:51:10.285 --> 00:51:10.685
Integriert.

00:51:12.125 --> 00:51:14.885
Ja, aber was wäre denn, wenn Django

00:51:14.885 --> 00:51:16.685
nicht ein Paket wäre, sondern wenn Django

00:51:16.685 --> 00:51:17.945
ein Metapaket wäre, was

00:51:17.945 --> 00:51:20.205
zwölf andere Pakete reinzieht

00:51:20.205 --> 00:51:22.925
wo wenn du Django installierst, kriegst du es immer noch

00:51:22.925 --> 00:51:24.205
integriert und immer noch stimmig

00:51:24.205 --> 00:51:26.685
aber hast dann trotzdem die Möglichkeit

00:51:26.685 --> 00:51:28.705
einen Baukasten zu haben. Hast trotzdem die

00:51:28.705 --> 00:51:30.765
Möglichkeit zu sagen, ah, Moment mal, ich möchte

00:51:30.765 --> 00:51:32.445
eigentlich lieber Templates haben, die

00:51:32.445 --> 00:51:34.045
X machen oder Templates Y haben.

00:51:34.525 --> 00:51:36.805
Oder auch eben so Contrib-Pakete.

00:51:37.065 --> 00:51:38.645
Was ist denn, wenn ich mal den Admin nicht brauche?

00:51:40.325 --> 00:51:40.905
Was ist denn,

00:51:40.985 --> 00:51:42.725
wenn ich mal eine Seite habe, die den Admin nicht braucht?

00:51:43.185 --> 00:51:44.545
Im Moment kann ich ja nicht viel machen.

00:51:44.685 --> 00:51:46.825
Ich kann die App deaktivieren

00:51:46.825 --> 00:51:48.225
und ich kann die URLs deaktivieren.

00:51:48.885 --> 00:51:50.225
Aber der Code ist auf jeden Fall drin, ja.

00:51:50.465 --> 00:51:51.305
Aber der Code ist immer noch da.

00:51:52.645 --> 00:51:54.765
Und sich diese Frage zu stellen,

00:51:54.845 --> 00:51:56.765
was wäre denn, wenn Django modular wäre?

00:51:57.245 --> 00:51:58.285
Es ist ja modular, ja.

00:51:58.285 --> 00:52:28.265
und Python.

00:52:28.285 --> 00:52:29.445
dass ich über SendGrid

00:52:29.445 --> 00:52:30.705
verschicke.

00:52:31.485 --> 00:52:33.765
Ich muss nur pip install django sendgrid machen

00:52:33.765 --> 00:52:35.465
und dann ist das komplett nach.

00:52:35.725 --> 00:52:37.265
Diese Frage ist

00:52:37.265 --> 00:52:38.925
eine großartige, gute Frage.

00:52:39.265 --> 00:52:41.245
Okay, ja, gut. Also so gesehen doch.

00:52:41.845 --> 00:52:43.605
Weil im Grunde ist Django ja schon,

00:52:43.705 --> 00:52:45.405
viele Teile sind ja schon pluggable.

00:52:45.565 --> 00:52:46.705
Eben Storage oder halt

00:52:46.705 --> 00:52:47.985
Authentication.

00:52:48.485 --> 00:52:51.605
Ich installiere dann halt ein anderes

00:52:51.605 --> 00:52:53.125
Paket, sondern auf der Ebene von

00:52:53.125 --> 00:52:54.665
in den Settings sage ich halt,

00:52:55.085 --> 00:52:57.365
du bist jetzt für mehrere Pakete

00:52:57.365 --> 00:52:59.465
und dann stelle ich sie in den Settings ein, welche sie benutzen werden.

00:52:59.465 --> 00:53:01.605
Genau. Aber stimmt.

00:53:01.905 --> 00:53:03.485
Also, dass man den Code

00:53:03.485 --> 00:53:05.485
gar nicht mit drin haben muss, das ist natürlich schon so ein Punkt.

00:53:06.745 --> 00:53:07.245
Ah, das

00:53:07.245 --> 00:53:09.785
ist aber auch noch ein interessanter...

00:53:09.785 --> 00:53:11.625
Genau, jetzt fällt mir doch noch was ein,

00:53:11.745 --> 00:53:13.365
zu welcher Talk hat mich am meisten überrascht.

00:53:13.705 --> 00:53:15.005
Und zwar, ich weiß nicht, ob ihr den, oder

00:53:15.005 --> 00:53:17.105
Johannes, ob du den auch gehört hast,

00:53:18.145 --> 00:53:19.485
von Jannis Leidl, der

00:53:19.485 --> 00:53:20.685
Jazzband

00:53:20.685 --> 00:53:22.625
Talk. Ja, habe ich gehört.

00:53:22.845 --> 00:53:25.445
Er ist auch live während des Talks

00:53:25.445 --> 00:53:27.245
Jazzband beigetreten. Ah, okay.

00:53:27.365 --> 00:53:32.705
Genau, ich habe es mir nicht getan, aber ich habe stark daran gedacht, das zu tun.

00:53:34.745 --> 00:53:36.765
Und genau, ich hatte das immer nur gesehen,

00:53:36.865 --> 00:53:37.805
Was ist denn JS-Fan, Jochen? Erklär mal.

00:53:37.805 --> 00:53:42.505
Ja, ich hatte das immer nur gesehen bisher als, das ist irgendwie eine Organisation,

00:53:42.945 --> 00:53:48.925
in der viele der im Django-Kosmos befindlichen Pakete halt so auch mit drin sind

00:53:48.925 --> 00:53:53.385
und was da gemainted wird, irgendwie so Django-Filter und weiß ich nicht, ganz, ganz viel Zeug.

00:53:53.705 --> 00:53:55.605
Storages und viele Anwendungen.

00:53:55.625 --> 00:53:56.265
Ja, und Commands.

00:53:56.385 --> 00:53:56.745
All of.

00:53:56.745 --> 00:53:58.985
Ja, also ganz viel

00:53:58.985 --> 00:54:00.005
und dann dachte ich immer so, ja

00:54:00.005 --> 00:54:02.825
und dann wusste ich auch irgendwie so, ja das ist halt irgendwie so, wenn man keine Lust mehr hat

00:54:02.825 --> 00:54:04.345
das selber zu maintainen, dann kann man das vielleicht dahin

00:54:04.345 --> 00:54:07.925
das loswerden

00:54:07.925 --> 00:54:09.645
irgendwie

00:54:09.645 --> 00:54:12.485
weiß ich nicht, irgendwie ein Schleifchen dran binden

00:54:12.485 --> 00:54:14.885
und das dann da aussetzen, wie an der Autobahnraststätte

00:54:14.885 --> 00:54:16.605
Die Apache Foundation

00:54:16.605 --> 00:54:17.325
der Django-Welt

00:54:17.325 --> 00:54:20.565
Ja, aber

00:54:20.565 --> 00:54:21.505
genau

00:54:21.505 --> 00:54:24.865
Die sind ja tatsächlich sehr aktiv, habe ich jetzt gehört

00:54:24.865 --> 00:54:25.325
in dem Talk

00:54:25.325 --> 00:54:27.225
Ja, aber

00:54:27.225 --> 00:54:29.285
dann, was mich in dem Talk dann halt

00:54:29.285 --> 00:54:30.485
überrascht hat und was ich nicht wusste, ist,

00:54:31.845 --> 00:54:33.545
dass das tatsächlich etwas ist, wo man

00:54:33.545 --> 00:54:35.565
selber sehr leicht

00:54:35.565 --> 00:54:36.545
beitreten kann und

00:54:36.545 --> 00:54:39.285
man hat so ein bisschen die Anforderungen

00:54:39.285 --> 00:54:41.485
an ein Projekt, aber sie sind auch relativ leicht zu erfüllen

00:54:41.485 --> 00:54:43.405
und dann kann man

00:54:43.405 --> 00:54:45.345
quasi Projekte davon

00:54:45.345 --> 00:54:47.385
maintainen lassen und also der entscheidende Punkt

00:54:47.385 --> 00:54:49.145
und der war mir überhaupt nicht klar, ist

00:54:49.145 --> 00:54:51.385
bei diesen Projekten ist es so,

00:54:51.505 --> 00:54:53.405
dass man das so ein bisschen umkehrt, weil normalerweise

00:54:53.405 --> 00:54:55.105
hast du halt immer in vielen Projekten

00:54:55.105 --> 00:54:57.265
irgendwie so Core-Entwickler oder Leute, die

00:54:57.265 --> 00:54:58.825
halt da reinkommitten dürfen.

00:54:59.245 --> 00:55:01.305
Dieses Privileg

00:55:01.305 --> 00:55:03.065
bekommt man halt normalerweise, weiß ich nicht, nach ein paar

00:55:03.065 --> 00:55:05.205
erfolgreichen Pull-Requests oder so oft bei vielen

00:55:05.205 --> 00:55:05.605
Projekten.

00:55:07.165 --> 00:55:09.285
Und vielleicht bei noch größeren ist es

00:55:09.285 --> 00:55:11.345
so, dass es dann Leute gibt, die überwiegend

00:55:11.345 --> 00:55:15.005
sich um den Issue-Tracker kümmern

00:55:15.005 --> 00:55:17.265
oder sowas. Und es gibt halt einen Unterschied

00:55:17.265 --> 00:55:18.825
zwischen diesen sozusagen offiziell

00:55:18.825 --> 00:55:21.405
Beteiligten und den ganzen

00:55:21.405 --> 00:55:23.365
Leuten, die halt tatsächlich die

00:55:23.365 --> 00:55:25.725
Pull-Requests erstellen

00:55:25.725 --> 00:55:27.065
und

00:55:27.065 --> 00:55:29.845
dieses Jazzband dreht das halt um

00:55:29.845 --> 00:55:31.345
und sagt, also du kannst halt einfach da

00:55:31.345 --> 00:55:33.625
reinkommitten, kannst halt einfach dann

00:55:33.625 --> 00:55:35.605
es funktioniert halt und dann

00:55:35.605 --> 00:55:37.465
es gibt halt nur weniger Release.

00:55:37.465 --> 00:55:39.825
Jeder kann beitreten. Ja, kann beitreten und erst beim Release

00:55:39.825 --> 00:55:43.845
wird dann halt geguckt, okay, macht das denn irgendwie Sinn

00:55:43.845 --> 00:55:44.845
oder ist das irgendwie Quatsch?

00:55:45.425 --> 00:55:47.905
Und das passiert halt deutlich seltener, sodass du halt

00:55:47.905 --> 00:55:49.325
diese Hürde, dass du halt

00:55:49.325 --> 00:55:51.925
das ist tatsächlich eine Hürde, das habe ich mir auch schon oft gedacht

00:55:51.925 --> 00:55:54.225
muss ich das jetzt wirklich

00:55:54.225 --> 00:55:56.905
Ja und ein Pull-Request stellen

00:55:56.905 --> 00:55:58.805
und dann hörst du acht Wochen lang nichts

00:55:58.805 --> 00:56:00.805
und dann sagst du, ja hier ist was und dann

00:56:00.805 --> 00:56:03.045
weißt du schon alles gar nicht mehr oder geht ganz unter

00:56:03.045 --> 00:56:04.725
Ja und was ich dann oft mache ist

00:56:04.725 --> 00:56:06.785
dann fork ich es doch mal schnell selber

00:56:06.785 --> 00:56:08.645
fix das da und dann

00:56:08.645 --> 00:56:10.805
dann vielleicht

00:56:10.805 --> 00:56:12.545
mache ich doch tatsächlich nochmal ein Pull-Request, aber

00:56:12.545 --> 00:56:14.585
eigentlich auch egal und

00:56:14.585 --> 00:56:16.705
tatsächlich habe ich das auch bei Projekten gemacht, die in

00:56:16.705 --> 00:56:18.825
Jasmine drin sind und dann hätte ich dann so

00:56:18.825 --> 00:56:20.885
okay, eigentlich hätte ich die

00:56:20.885 --> 00:56:21.725
direkt fixen können.

00:56:22.825 --> 00:56:26.485
Und dann hätte man

00:56:26.485 --> 00:56:26.905
diese ganzen

00:56:26.905 --> 00:56:29.065
Tons um GitHub-Pull-Requests-Issue

00:56:29.065 --> 00:56:30.605
gar nicht machen müssen, sondern ich hätte es einfach gefixt,

00:56:30.685 --> 00:56:32.045
committet und fertig.

00:56:32.465 --> 00:56:33.305
Was heißt bei Django Field?

00:56:33.305 --> 00:56:34.225
Django Field ist all out.

00:56:35.465 --> 00:56:37.425
Ja, ganz viele von diesen Sachen,

00:56:37.525 --> 00:56:39.045
die man kennt, ich glaube auch Django Extensions

00:56:39.045 --> 00:56:41.105
und Debug-Toolbar sind inzwischen Jazzband-Projekte.

00:56:43.005 --> 00:56:43.525
Wo, apropos

00:56:43.525 --> 00:56:45.025
Debug-Toolbar, da gibt es ja auch was für.

00:56:45.325 --> 00:56:47.245
Der Jazzband, weil

00:56:47.245 --> 00:56:49.085
das irgendwie sozusagen

00:56:49.085 --> 00:56:57.185
und ja, Django ist ja auch vom Namen her, wird das drückerführt auf Django Reinhardt und daher kommt das.

00:56:58.025 --> 00:56:58.485
Ein Band.

00:56:58.825 --> 00:56:59.685
Cooler Name, finde ich.

00:57:00.825 --> 00:57:04.285
Ja, also Django Extensions, hast du noch irgendwas Schönes geteilt, Johannes?

00:57:04.445 --> 00:57:10.865
Und zwar hast du da was entdeckt, das heißt die Kolo-App, was auch für Debug für Django relativ lustig sein soll.

00:57:12.605 --> 00:57:15.185
Da musst du mir auf die Sprünge helfen, Dominik, weiß gar nicht, was du meinst gerade.

00:57:15.185 --> 00:57:20.085
Du hast das schon schon link geteilt, am Kolo-App, das ist eine Django-Applikation zum Debuggen.

00:57:20.485 --> 00:57:24.025
Vor allem auch in VS Code, du kannst halt so den Toast-Tweet anschauen.

00:57:24.285 --> 00:57:31.225
Ja, genau, das hat mir gar nicht so richtig geholfen, weil ich VS Code nicht benutze.

00:57:32.665 --> 00:57:38.525
Aber die haben eben einen Django-Debugger in VS Code integriert und zwar so richtig tief, also der zeigt einem direkt alle Innereien.

00:57:40.085 --> 00:57:42.325
Genau, Best Response, die Queries und so.

00:57:42.325 --> 00:57:45.505
und auch mit Profiling drin und wenn Fehler auftreten,

00:57:45.645 --> 00:57:46.485
kommst du gleich an eine richtige Stelle.

00:57:46.485 --> 00:57:49.065
Man kann sogar den Executed-Code-Pass visualisieren.

00:57:50.525 --> 00:57:53.085
Es ist ein richtig, richtig ausgefeilter Debugger,

00:57:53.205 --> 00:57:54.865
geht allerdings nur in Visual Studio Code.

00:57:55.365 --> 00:57:56.605
Das ist ein Salary-Task, kann man damit machen.

00:57:58.045 --> 00:57:59.545
Also der zeigt dann wirklich alles an

00:57:59.545 --> 00:58:00.985
und das ist sehr beeindruckend.

00:58:02.145 --> 00:58:04.385
Ja, ich habe es leider nicht weiter benutzt,

00:58:04.385 --> 00:58:06.805
weil ich bin ja, ich komme ja aus einer anderen Richtung.

00:58:06.805 --> 00:58:07.165
Charming.

00:58:08.225 --> 00:58:09.545
Ich bin sehr charming, ja.

00:58:09.925 --> 00:58:10.385
Hi, charming.

00:58:10.385 --> 00:58:11.985
Ja

00:58:11.985 --> 00:58:13.785
Auch was, was ich da gesehen habe

00:58:13.785 --> 00:58:16.165
Okay, ich habe noch eine andere Sache, die mich überrascht hat

00:58:16.165 --> 00:58:17.885
bei der DjangoCon

00:58:17.885 --> 00:58:19.725
und das war HTMLX

00:58:19.725 --> 00:58:22.545
Du hattest das schon mal erwähnt, Jochen

00:58:22.545 --> 00:58:23.185
Ja

00:58:23.185 --> 00:58:25.365
Du hattest HTMLX schon mal gesagt

00:58:25.365 --> 00:58:28.465
HTMLX ist eine JavaScript-Bibliothek

00:58:28.465 --> 00:58:29.725
ohne JavaScript

00:58:29.725 --> 00:58:32.385
Das heißt, anstatt

00:58:32.385 --> 00:58:33.945
dass ich selber JavaScript schreibe

00:58:33.945 --> 00:58:36.225
schreibe ich nur spezifische Tags

00:58:36.225 --> 00:58:37.265
an meinen HTML dran

00:58:37.265 --> 00:58:40.045
die dann irgendwelches dynamisches Verhalten auslösen

00:58:40.045 --> 00:58:41.885
zum Beispiel kann ich einem Button sagen, dass er das

00:58:41.885 --> 00:58:43.925
Formular submitten soll. Oder

00:58:43.925 --> 00:58:45.685
ich kann sagen, wenn

00:58:45.685 --> 00:58:46.685
ein Item

00:58:46.685 --> 00:58:50.125
in den Bildschirmbereich gescrollt wird, dann

00:58:50.125 --> 00:58:51.925
refresht sich das mit einem

00:58:51.925 --> 00:58:54.065
dann macht das ein AJAX-Request und holt

00:58:54.065 --> 00:58:55.945
neue Listen-Einträge

00:58:55.945 --> 00:58:57.285
und kann ich Infinite Scrolling machen.

00:58:57.685 --> 00:58:59.985
Oder ich kann sagen, ich möchte Formvalidierung haben

00:58:59.985 --> 00:59:01.865
oder ich kann sagen, ich möchte Animationen haben oder so.

00:59:02.205 --> 00:59:04.365
Und das Ganze nur über HTML-Tags

00:59:04.365 --> 00:59:05.625
ohne selbst

00:59:05.625 --> 00:59:07.425
JavaScript schreiben zu müssen.

00:59:08.725 --> 00:59:09.165
Und

00:59:09.165 --> 00:59:11.625
das kam in drei oder vier

00:59:11.625 --> 00:59:13.525
Talks hintereinander, haben sie alle

00:59:13.525 --> 00:59:14.445
auf HTMLX verwiesen

00:59:14.445 --> 00:59:17.525
und offensichtlich auch nicht

00:59:17.525 --> 00:59:18.245
abgestimmt, weil

00:59:18.245 --> 00:59:21.545
die Sprecher dann auch gesagt haben, ja, es ist

00:59:21.545 --> 00:59:23.425
jetzt schon wieder, ich weiß, es kam jetzt eben schon in den

00:59:23.425 --> 00:59:24.405
anderen Talks, aber jetzt ist es schon wieder.

00:59:25.105 --> 00:59:27.505
Auch im Slack kam das

00:59:27.505 --> 00:59:27.945
dann auf,

00:59:29.105 --> 00:59:31.045
dass da jetzt schon wieder HTMLX vorkommt

00:59:31.045 --> 00:59:33.485
und ich glaube, das ist was, was ich

00:59:33.485 --> 00:59:35.425
mir, also ich wusste, dass es das gibt,

00:59:36.625 --> 00:59:37.445
aber mir war gar nicht

00:59:37.445 --> 00:59:39.465
so klar gewesen, wie sinnvoll das ist und wie

00:59:39.465 --> 00:59:41.525
nützlich das ist. Und dass man ja

00:59:41.525 --> 00:59:43.485
tatsächlich sehr viel Dynamik in seiner

00:59:43.485 --> 00:59:45.165
Seite mit diesen einfachen Mitteln

00:59:45.165 --> 00:59:47.265
hinkriegen kann. Also das, wo

00:59:47.265 --> 00:59:49.265
man früher jQuery verwendet hat,

00:59:49.585 --> 00:59:51.085
Button.click

00:59:51.085 --> 00:59:53.525
und dann

00:59:53.525 --> 00:59:55.385
$ajax machen, ist

00:59:55.385 --> 00:59:57.365
jetzt einfach in dieses

00:59:57.365 --> 00:59:58.605
htmx-Attribut reingewandert.

00:59:59.725 --> 01:00:01.425
Und ich glaube, ich muss mir das

01:00:01.425 --> 01:00:02.845
mal noch genauer angucken,

01:00:03.985 --> 01:00:05.385
wie weit man da gehen

01:00:05.385 --> 01:00:07.345
kann. Also ich meine, einen

01:00:07.345 --> 01:00:09.285
Talk gab es damit, der hat es quasi zu Ende

01:00:09.285 --> 01:00:11.325
gedacht. Was ist denn, wenn wir diese Sachen alle

01:00:11.325 --> 01:00:12.785
aus dem Django Form,

01:00:13.345 --> 01:00:15.325
aus der Formklasse generieren und aus dem Django

01:00:15.325 --> 01:00:16.865
Modell generieren? Auch

01:00:16.865 --> 01:00:18.065
großartige Idee.

01:00:19.465 --> 01:00:21.505
Data Binding automatisch erzeugen

01:00:21.505 --> 01:00:23.265
über Django

01:00:23.265 --> 01:00:25.205
Template Syntax. Geht vielleicht

01:00:25.205 --> 01:00:26.065
einen Schritt zu weit.

01:00:27.685 --> 01:00:29.345
Möchte ich schon noch die Kontrolle drüber haben.

01:00:30.025 --> 01:00:30.205
Aber

01:00:30.205 --> 01:00:33.445
ja, dass man quasi JavaScript schreibt

01:00:33.445 --> 01:00:34.905
ohne JavaScript schreiben zu müssen.

01:00:36.365 --> 01:00:37.085
Großartige Idee.

01:00:37.085 --> 01:00:38.245
noch genauer anschauen.

01:00:38.345 --> 01:00:40.865
Ja, genau, würde ich auch sagen.

01:00:41.385 --> 01:00:43.565
Das war auf jeden Fall auch eines der großen Themenfelder,

01:00:43.665 --> 01:00:45.245
die es auf der DjangoCon gab, nämlich

01:00:45.245 --> 01:00:47.265
wie macht man eigentlich sozusagen

01:00:47.265 --> 01:00:50.645
etwas interaktivere

01:00:50.645 --> 01:00:53.065
oder so modernere, so

01:00:53.065 --> 01:00:55.385
Single-Page-App

01:00:55.385 --> 01:00:56.725
mäßige

01:00:56.725 --> 01:00:59.145
Applikationen mit Django, weil wohl auch

01:00:59.145 --> 01:01:01.105
der Druck größer wird von da außen.

01:01:02.125 --> 01:01:03.185
Und vielleicht kann man aber,

01:01:03.185 --> 01:01:04.565
muss man dafür nicht jetzt irgendwie,

01:01:04.565 --> 01:01:07.925
Es gibt einen Weg, den halt auch viele Leute beschreiben,

01:01:09.125 --> 01:01:11.305
der ist halt, naja, du machst halt Django REST-Framework

01:01:11.305 --> 01:01:13.285
oder halt, weiß ich nicht, GraphQL irgendwie.

01:01:13.645 --> 01:01:14.565
Gab's auch einen Talk dazu.

01:01:14.965 --> 01:01:18.245
Ja, und machst halt deine Applikationen im Frontend

01:01:18.245 --> 01:01:21.845
halt quasi als, weiß ich nicht, ReactView, Angular.

01:01:22.145 --> 01:01:22.365
Django Headless.

01:01:22.745 --> 01:01:23.685
Und Headless, genau.

01:01:24.125 --> 01:01:26.985
Und dein Backend ist sozusagen, dein Django ist halt nur noch das Backend

01:01:26.985 --> 01:01:29.305
und rennt halt nur noch JSON raus und sonst nix.

01:01:30.165 --> 01:01:31.625
Das ist eine Möglichkeit.

01:01:31.625 --> 01:01:33.025
Das ist aber eigentlich irgendwie traurig, oder?

01:01:33.165 --> 01:01:33.885
Das ist irgendwie traurig.

01:01:33.885 --> 01:01:34.025
Genau.

01:01:34.025 --> 01:01:35.905
weil man die ganzen guten Teile

01:01:35.905 --> 01:01:37.645
hat. Ja, es gibt halt

01:01:37.645 --> 01:01:38.765
schöne Teile von

01:01:38.765 --> 01:01:42.005
Formulare, Formvalidation

01:01:42.005 --> 01:01:43.365
oder so, das kann man halt alles nicht mehr nutzen.

01:01:43.605 --> 01:01:45.665
Template, da gibt es sehr schöne Geschichten für.

01:01:46.465 --> 01:01:48.025
Authentifizierung auch, alles mögliche.

01:01:48.505 --> 01:01:49.965
Genau, man verliert halt

01:01:49.965 --> 01:01:51.545
viele Dinge, die halt

01:01:51.545 --> 01:01:53.345
Django eigentlich total nützlich machen

01:01:53.345 --> 01:01:55.605
und die muss man dann selber machen und dann,

01:01:55.745 --> 01:01:57.665
wenn man das dann macht in JavaScript, stellt man

01:01:57.665 --> 01:01:58.085
auch fest,

01:01:58.745 --> 01:02:02.005
Ja, man schreibt

01:02:02.005 --> 01:02:05.785
Die langweiligen Teile von Django schreibt man sich dann in JavaScript nochmal nach.

01:02:05.885 --> 01:02:06.025
Genau.

01:02:07.085 --> 01:02:10.625
Und man hat dann immer noch eine andere Programmiersprache,

01:02:10.725 --> 01:02:12.385
mit der man auch kämpfen muss.

01:02:13.905 --> 01:02:15.505
Aber mit JavaScript muss man doch.

01:02:15.885 --> 01:02:17.645
Das findet man ja teils in der Programmiersprache.

01:02:17.945 --> 01:02:20.045
Ja, also es ist besser geworden, sagen wir mal so.

01:02:20.545 --> 01:02:24.745
Aber ehrlich gesagt, mir ist Python immer noch lieber.

01:02:25.265 --> 01:02:25.765
Auch angenehmer.

01:02:26.145 --> 01:02:26.965
Ja, ja, durchaus.

01:02:27.785 --> 01:02:31.325
Und eben, was kann man denn jetzt eigentlich noch tun?

01:02:31.325 --> 01:02:32.905
da gibt es ja dann mehrere Gegenbewegungen

01:02:32.905 --> 01:02:35.785
aber wir hatten das ja auch schon ein paar Mal

01:02:35.785 --> 01:02:37.585
sowas wie dieses ganze

01:02:37.585 --> 01:02:38.465
Hotwire

01:02:38.465 --> 01:02:41.505
Zeugs, irgendwie Ruby on Rails macht das ja auch

01:02:41.505 --> 01:02:43.485
dass man halt sozusagen, oder Elixir

01:02:43.485 --> 01:02:44.865
Felix

01:02:44.865 --> 01:02:47.425
man rendert halt HTML

01:02:47.425 --> 01:02:49.405
auf der Serverseite und

01:02:49.405 --> 01:02:51.465
hat nur noch wenig JavaScript auf der kleinen

01:02:51.465 --> 01:02:52.805
Seite, was halt dann irgendwie

01:02:52.805 --> 01:02:55.185
die Seite updatet und

01:02:55.185 --> 01:02:57.565
tatsächlich fällt für mich HTMLX halt auch in diese

01:02:57.565 --> 01:02:59.445
Klasse von Dingen rein

01:02:59.445 --> 01:03:01.085
oder sagen wir mal so

01:03:01.085 --> 01:03:31.065
und

01:03:31.085 --> 01:03:33.145
von HTMX.

01:03:33.945 --> 01:03:34.325
Und

01:03:34.325 --> 01:03:37.025
der beschrieb so ein bisschen, was er damit vorhatte

01:03:37.025 --> 01:03:39.185
und das fand ich auch sehr interessant, weil das hat mich tatsächlich an die

01:03:39.185 --> 01:03:41.005
Episode, wo wir das

01:03:41.005 --> 01:03:43.205
letzte Mal zusammengesetzt haben, REST erinnert.

01:03:44.265 --> 01:03:44.805
Und da

01:03:44.805 --> 01:03:47.165
haben wir auch das erste Mal

01:03:47.165 --> 01:03:48.145
HTMX erwähnt.

01:03:49.705 --> 01:03:49.945
Und

01:03:49.945 --> 01:03:52.505
dass er das Ding HTMX nennt, heißt,

01:03:52.505 --> 01:03:53.825
das ist kein Zufall.

01:03:55.125 --> 01:03:56.965
Er hat

01:03:56.965 --> 01:03:58.085
aber mit jQuery angefangen

01:03:58.085 --> 01:04:00.465
und dann hat er sich überlegt, okay, eigentlich ist das ja blöd.

01:04:01.085 --> 01:04:03.085
und hat

01:04:03.085 --> 01:04:05.005
dann versucht, die Funktionalität

01:04:05.005 --> 01:04:06.845
da hat er irgendwie das Gefühl,

01:04:07.125 --> 01:04:09.265
das müsste ja eigentlich in HTML oder so drin sein

01:04:09.265 --> 01:04:11.265
und das bricht ja auch mit diesem ganzen REST-Ding

01:04:11.265 --> 01:04:13.145
und er hat wohl auch die Dissertation

01:04:13.145 --> 01:04:14.545
von Roy Feeley da gelesen

01:04:14.545 --> 01:04:17.045
und er hat so, was wäre denn, wenn ich eine Bibliothek

01:04:17.045 --> 01:04:19.065
schreiben würde, die es

01:04:19.065 --> 01:04:20.985
erlaubt, dass das irgendwie so ist,

01:04:21.065 --> 01:04:22.305
wie das eigentlich sein sollte,

01:04:23.025 --> 01:04:24.545
aber man selber das

01:04:24.545 --> 01:04:26.625
JavaScript dafür nicht schreiben muss. Also ich

01:04:26.625 --> 01:04:27.865
erweitere sozusagen

01:04:27.865 --> 01:04:30.825
HTML so, wie das

01:04:30.825 --> 01:04:32.945
eigentlich gehören würde, wenn es Browser-Supporter

01:04:32.945 --> 01:04:34.365
für gäbe und das mache ich dann halt in JavaScript.

01:04:34.905 --> 01:04:36.545
Und das Ding nennt er irgendwie Intercooler.js

01:04:36.545 --> 01:04:38.585
und das war am Anfang noch so ein bisschen grude und sehr

01:04:38.585 --> 01:04:40.645
Jackfairy-mäßig und das

01:04:40.645 --> 01:04:42.565
hat man schon mal davon gehört,

01:04:42.945 --> 01:04:44.525
auch noch gelobt heutzutage.

01:04:44.885 --> 01:04:46.705
Ist aber irgendwie, er meinte so, naja,

01:04:46.785 --> 01:04:48.425
der Name ist halt schlecht, weil das JS am

01:04:48.425 --> 01:04:50.865
hinten dran, das vermittelt so den Eindruck,

01:04:50.945 --> 01:04:52.005
das wäre so eins von diesen

01:04:52.005 --> 01:04:54.445
JavaScript-Frameworks, was es eigentlich nicht ist

01:04:54.445 --> 01:04:56.665
von den Frameworks und Intercooler

01:04:56.665 --> 01:04:58.605
versteht auch keiner und dann hat er

01:04:58.605 --> 01:05:00.025
irgendwie so ein bisschen, so ähnlich

01:05:00.025 --> 01:05:02.845
auch wie wir, wie nennen wir diesen Podcast?

01:05:02.985 --> 01:05:04.385
Naja, gucken wir mal, Python oder Python,

01:05:04.485 --> 01:05:05.105
dann macht es halt so.

01:05:06.245 --> 01:05:07.945
Eigentlich möchte ich HTML, aber erweitert,

01:05:08.045 --> 01:05:10.105
Extended, HTMLX, okay, HTMLX.org

01:05:10.105 --> 01:05:10.885
noch frei, oh super.

01:05:11.505 --> 01:05:13.585
Und dann ist das Ding halt HTMLX.

01:05:14.585 --> 01:05:16.325
Und die Idee ist...

01:05:16.325 --> 01:05:18.125
Die Buchstaben Org Demands ist auch nicht schlecht.

01:05:18.205 --> 01:05:19.445
Ja, gibt es eigentlich gar nicht mehr so häufig,

01:05:19.745 --> 01:05:22.005
aber hat wohl funktioniert.

01:05:22.705 --> 01:05:24.165
Und deswegen hat er das

01:05:24.165 --> 01:05:25.805
dann halt jetzt nochmal so, ist halt so

01:05:25.805 --> 01:05:27.645
ein Nachfolger von Intercooler.js.

01:05:27.645 --> 01:05:30.025
und die Idee ist

01:05:30.025 --> 01:05:31.985
tatsächlich, was wäre denn,

01:05:32.205 --> 01:05:33.625
also was ist das Hauptproblem bei,

01:05:34.025 --> 01:05:36.085
wenn man jetzt einfach nur ganz stinknormal

01:05:36.085 --> 01:05:37.325
HTML rendert

01:05:37.325 --> 01:05:39.105
und dieses HateOS

01:05:39.105 --> 01:05:41.165
verwenden möchte,

01:05:41.785 --> 01:05:43.885
also Hypermedia ist die Engine of

01:05:43.885 --> 01:05:45.505
Replication State Dings und

01:05:45.505 --> 01:05:47.485
quasi die Prinzipien beibringen möchte,

01:05:48.225 --> 01:05:50.045
die halt auch in dieser

01:05:50.045 --> 01:05:51.545
Dissertation von Ray Frieden drin sind,

01:05:51.925 --> 01:05:53.925
also das Hauptproblem, weshalb

01:05:53.925 --> 01:05:55.665
das nicht gut ist und weshalb alle irgendwie

01:05:55.665 --> 01:05:58.165
JavaScript zusätzlich machen, ist, dass

01:05:58.165 --> 01:06:00.185
sobald du irgendwas änderst

01:06:00.185 --> 01:06:01.085
in diesem alten Modell,

01:06:01.665 --> 01:06:04.245
musst du deinen kompletten DOM neu aufbauen,

01:06:04.605 --> 01:06:06.345
also einen Request-Response-Type.

01:06:07.345 --> 01:06:08.645
Du musst einen kompletten Page-Reload machen.

01:06:08.825 --> 01:06:09.845
Und das ist halt etwas, was

01:06:09.845 --> 01:06:11.985
nicht gut funktioniert, weil

01:06:11.985 --> 01:06:14.305
wenn die Seite komplizierter wird,

01:06:14.725 --> 01:06:16.565
dann dauert das halt einfach schon mal über eine Sekunde,

01:06:16.785 --> 01:06:17.885
bis sich die Seite wieder aufgebaut hat.

01:06:18.285 --> 01:06:20.305
Und das heißt, alles fühlt sich dann einfach

01:06:20.305 --> 01:06:21.065
nicht mehr flüssig an.

01:06:22.965 --> 01:06:24.045
Ja, aber

01:06:24.045 --> 01:06:26.325
mit AJAX und so,

01:06:26.405 --> 01:06:28.025
konnte man ja da immer schon so ein bisschen was machen, so

01:06:28.025 --> 01:06:29.125
Web 2.0 mäßig.

01:06:30.565 --> 01:06:31.725
Aber das ist halt eben dann

01:06:31.725 --> 01:06:33.965
JQuery, aber das ist halt eben nicht

01:06:33.965 --> 01:06:35.485
REST eigentlich.

01:06:36.605 --> 01:06:38.405
Und auch diese Single-Page-Apps sind auch

01:06:38.405 --> 01:06:40.085
nicht REST, weil die sind halt, die sagen, okay,

01:06:40.465 --> 01:06:42.305
naja, der Application-State ist halt im

01:06:42.305 --> 01:06:44.045
Frontend und Backend ist halt nur,

01:06:44.205 --> 01:06:46.305
liefert halt Daten, aber, oder vielleicht so ein bisschen

01:06:46.305 --> 01:06:48.045
State, aber es ist eigentlich, du hast halt

01:06:48.045 --> 01:06:50.185
Synchronisationsproblemen,

01:06:50.185 --> 01:06:52.185
aber die eigentliche Applikation läuft

01:06:52.185 --> 01:06:53.905
halt im Browser. Und er meinte,

01:06:53.905 --> 01:06:56.285
okay, wie ist es denn, wenn wir jetzt sagen, okay, wir erweitern

01:06:56.285 --> 01:06:57.945
HTML eigentlich um die Elemente,

01:06:58.405 --> 01:07:00.125
warum ist es so, dass nur

01:07:00.125 --> 01:07:01.565
Form, nur das Form-Tag

01:07:01.565 --> 01:07:03.685
einen Post auslösen kann?

01:07:04.005 --> 01:07:06.165
Warum kann das nur einen Post auslösen? Warum gibt es nichts,

01:07:06.305 --> 01:07:07.665
was irgendwie einen Put auslösen kann?

01:07:08.845 --> 01:07:09.905
Ja, okay, aber

01:07:09.905 --> 01:07:11.785
gut, man kann das ja einfach dann so machen,

01:07:12.045 --> 01:07:14.025
weil aus JavaScript heraus kann man das ja dann tun,

01:07:14.385 --> 01:07:16.105
dann schüttet man halt Attribute ein, wo dann

01:07:16.105 --> 01:07:18.045
Elemente eben auch einen Put machen können oder halt

01:07:18.045 --> 01:07:19.725
eben auch andere Elemente einen Post machen können

01:07:19.725 --> 01:07:22.025
und dann kommt

01:07:22.025 --> 01:07:23.785
dabei, wenn man das dann halt sozusagen

01:07:23.785 --> 01:07:25.605
so ein bisschen standardisiert, kommt halt

01:07:25.605 --> 01:07:27.645
HTML eigentlich raus, sodass du halt

01:07:27.645 --> 01:07:29.405
sozusagen diese ganzen anderen netten Sachen

01:07:29.405 --> 01:07:31.565
halt auch einfach nur in deinem

01:07:31.565 --> 01:07:33.085
HTML sozusagen machst und

01:07:33.085 --> 01:07:36.045
ja, es gibt halt dann noch so eine Bibliothek,

01:07:36.165 --> 01:07:37.885
die das, solange die Browser das nicht unterstützen,

01:07:38.245 --> 01:07:39.805
halt dann für dich in JavaScript tut,

01:07:39.985 --> 01:07:41.785
aber im Grunde könnte man das auch einfach so...

01:07:42.425 --> 01:07:42.525
Ja.

01:07:43.305 --> 01:07:45.625
Und das ist eigentlich ein sehr, sehr

01:07:45.625 --> 01:07:47.705
interessanter Gedanke, also fand ich auch sehr gut.

01:07:48.605 --> 01:07:48.785
Ja.

01:07:49.965 --> 01:07:51.925
Ja, und es kam einfach so häufig

01:07:51.925 --> 01:07:53.765
vor. Ja, so man merkt,

01:07:53.785 --> 01:07:55.585
und man merkt, dass man gezwungen war, sich das anzusehen.

01:07:55.705 --> 01:07:57.585
Also es scheint irgendwie so im Zeitgeist

01:07:57.585 --> 01:07:59.845
drin zu sein oder im Gedanken

01:07:59.845 --> 01:08:01.425
der Moment, das Moment ist.

01:08:01.905 --> 01:08:03.705
Ja, der Zeitgeist geht auf jeden Fall Richtung

01:08:03.705 --> 01:08:05.365
ja, was wäre denn, wenn wir einfach HTML

01:08:05.365 --> 01:08:07.805
rüberschicken und nicht irgendwie JSON.

01:08:08.005 --> 01:08:08.645
So ein bisschen, ja.

01:08:10.445 --> 01:08:11.545
Ja gut, diese ganzen

01:08:11.545 --> 01:08:13.505
Single-Page-Apps,

01:08:13.885 --> 01:08:15.785
so eine React-App oder so eine Angular-App

01:08:15.785 --> 01:08:17.245
oder so eine Ember-App oder was auch immer,

01:08:17.965 --> 01:08:19.405
sind ja im Wesentlichen gar keine Webseiten.

01:08:19.545 --> 01:08:20.705
Das sind ja Desktop-Anwendungen,

01:08:21.705 --> 01:08:23.605
die halt, okay, zufällig

01:08:23.605 --> 01:08:25.665
in so einer VM laufen, die Browser und

01:08:25.665 --> 01:08:26.405
JavaScript heißt.

01:08:28.505 --> 01:08:30.005
Die aber

01:08:30.005 --> 01:08:31.765
im Wesentlichen ja selbstständig sind.

01:08:32.245 --> 01:08:33.545
Und es geht ja bei vielen Sachen auch

01:08:33.545 --> 01:08:35.065
total gut, dass du halt

01:08:35.065 --> 01:08:37.745
eine Anwendung hast im Vordergrund. Also es gibt ja inzwischen

01:08:37.745 --> 01:08:39.845
alle möglichen Sachen. Es gibt ja Fotobearbeitungssoftware

01:08:40.765 --> 01:08:41.565
im Browser.

01:08:42.665 --> 01:08:42.965
Ja, gut.

01:08:43.925 --> 01:08:45.585
Es braucht ja überhaupt gar keinen

01:08:45.585 --> 01:08:48.125
Riller, dass das Internet da ist.

01:08:48.125 --> 01:08:49.945
Ja, wenn man so eine Applikation hat, die

01:08:49.945 --> 01:08:51.785
selber sehr viel macht und die ab und zu

01:08:51.785 --> 01:08:53.865
oder vielleicht mal mit einem Backend reden muss, okay,

01:08:54.025 --> 01:08:55.685
dann ist das dafür vielleicht auch super geeignet.

01:08:56.245 --> 01:08:57.825
Aber ich meine, die meisten Webseiten sind

01:08:57.825 --> 01:08:58.805
ja gar nicht unbedingt so.

01:08:59.425 --> 01:09:00.405
Genau, das meine ich.

01:09:01.245 --> 01:09:03.845
Das meine ich ja. Es gibt ja ganz viele solche

01:09:03.845 --> 01:09:06.125
Anwendungen, die halt einfach Desktop-Anwendungen

01:09:06.125 --> 01:09:07.865
sind, die zufällig im Browser laufen.

01:09:08.865 --> 01:09:10.085
Und es gibt aber auch

01:09:10.085 --> 01:09:11.825
sicherlich den größeren Teil

01:09:11.825 --> 01:09:13.925
der Webseiten, die halt

01:09:13.925 --> 01:09:16.045
die gerne so wären,

01:09:16.545 --> 01:09:18.005
aber es eigentlich gar nicht nötig

01:09:18.005 --> 01:09:19.565
haben. Und so diese

01:09:19.565 --> 01:09:21.245
Brücke dazwischen zu schaffen,

01:09:21.785 --> 01:09:23.705
und das ist glaube ich

01:09:23.705 --> 01:09:26.045
das ist eben das, was im Zeitgeist ist

01:09:26.045 --> 01:09:27.765
dass man jetzt eben von den ganz

01:09:27.765 --> 01:09:29.045
statischen Webseiten

01:09:29.045 --> 01:09:30.705
sind wir ja schon lange weg

01:09:30.705 --> 01:09:33.265
auf eine gewisse Art und Weise lange weg

01:09:33.265 --> 01:09:36.185
die ganz dynamischen Sachen, die ja eigentlich Anwendungen sind

01:09:36.185 --> 01:09:38.345
selbst freistehende Anwendungen

01:09:38.345 --> 01:09:40.445
die zufällig halt auch noch Internetrequests

01:09:40.445 --> 01:09:40.745
machen

01:09:40.745 --> 01:09:44.165
das ist die andere Seite und eine Weile lang hat man versucht

01:09:44.165 --> 01:09:46.225
das alles, ja alles muss so eine Anwendung

01:09:46.225 --> 01:09:48.185
sein, was ja aber auch nicht sinnvoll ist

01:09:48.185 --> 01:09:50.165
so auf einen Zwischenschritt

01:09:50.165 --> 01:09:52.125
zu gehen, dass du eigentlich statische

01:09:52.125 --> 01:09:53.905
Informationen anzeigst, die aber trotzdem

01:09:53.905 --> 01:09:55.965
irgendwie auf Events reagieren können und sich dann

01:09:55.965 --> 01:09:57.825
trotzdem so ein bisschen zumindest verändern können.

01:10:00.125 --> 01:10:01.365
Ist glaube ich einfach

01:10:01.365 --> 01:10:03.605
der Kompromiss in der Mitte

01:10:03.605 --> 01:10:05.585
und der deckt sicherlich da

01:10:05.585 --> 01:10:08.025
super viele Use Cases ab und super viele

01:10:08.025 --> 01:10:09.985
Sachen ab, die man eben

01:10:09.985 --> 01:10:11.985
früher entweder so oder so machen musste

01:10:11.985 --> 01:10:12.685
und deshalb

01:10:12.685 --> 01:10:16.065
in die Mitte ist richtig.

01:10:17.785 --> 01:10:19.385
Das Nash-Gleichgewicht ist immer in der Mitte.

01:10:20.165 --> 01:10:28.085
Na, wie heißt es bei Alexander Kluge, glaube ich, in Gefahr und großer Not, es bringt der Mittelweg den Tod.

01:10:31.445 --> 01:10:34.485
Ja, aber in der Mitte der Herde zu sein, ist der sicherste Ort, das hört man.

01:10:37.985 --> 01:10:43.185
Genau, zu der letzten Rest-Episode, da gab es dann auch eine Erwähnung im Podlovers-Podcast,

01:10:43.945 --> 01:10:49.325
wo es um die Entwicklung von so einer Podcast-Plattform geht, im Grunde, basierend auf WordPress und so einem Plugin.

01:10:50.165 --> 01:11:01.467
und da wurde durchaus wahrgenommen dass wir irgendwie XML gel haben So was So was Habt ihr euch ger worden Ja

01:11:02.967 --> 01:11:07.748
Es wurde sogar ein gewisses Verständnis dafür gezeigt, dass Entwickler vielleicht doch lieber JSON mögen

01:11:07.748 --> 01:11:09.308
unter Umständen als XML.

01:11:10.708 --> 01:11:14.567
Was hat dir denn gefehlt an der DjangoCon? Was müsste die DjangoCon mehr haben?

01:11:17.067 --> 01:11:17.828
Schwer zu sagen.

01:11:17.828 --> 01:11:47.808
und Jochen unterhalten sich über die Programmiersprache Python

01:11:47.828 --> 01:11:49.788
Das ist ja Vor- und Nachteil.

01:11:50.148 --> 01:11:52.828
Ich habe das auch sehr genossen, dass ich da nicht hinfahren musste,

01:11:53.507 --> 01:11:55.288
weil ich konnte mich halt trotzdem um meine Kinder kümmern,

01:11:55.467 --> 01:11:59.328
konnte trotzdem dann abends mit der Familie essen

01:11:59.328 --> 01:12:01.368
und dann trotzdem abends noch die Talks machen.

01:12:01.368 --> 01:12:03.388
Ob du es nicht genossen hättest, wenn du auch mal ausnahmsweise

01:12:03.388 --> 01:12:06.668
ohne die Familie und ohne die Kinder irgendwie frei in den Ort runterbiegst.

01:12:06.868 --> 01:12:08.208
Klar, hätte ich auch genossen,

01:12:08.348 --> 01:12:11.768
wäre aber einfach schwieriger gewesen, das zu machen.

01:12:12.467 --> 01:12:15.467
Ich glaube, in Zukunft wäre das sehr schön,

01:12:15.467 --> 01:12:17.348
wenn solche Konferenzen so ein Hybridmodell hätten.

01:12:17.828 --> 01:12:47.808
und Jochen unterhalten sich über die Programmiersprache Python

01:12:47.828 --> 01:12:50.087
gibt, aber eigentlich, wenn man die Online-Konferenz

01:12:50.087 --> 01:12:51.748
macht, dann braucht man keine DjangoCon

01:12:51.748 --> 01:12:53.047
EU und keine DjangoCon

01:12:53.047 --> 01:12:55.507
India und keine DjangoCon Amerika,

01:12:55.708 --> 01:12:57.587
sondern es müsste eigentlich eine DjangoCon Worldwide geben

01:12:57.587 --> 01:12:59.627
und dann ist die Sache

01:12:59.627 --> 01:13:01.587
klar, du kannst nicht bei allen Talks dabei sein, aber

01:13:01.587 --> 01:13:03.348
du kannst halt bei denen dabei sein, wo du dabei sein kannst.

01:13:04.087 --> 01:13:05.007
Aber das ist

01:13:05.007 --> 01:13:07.368
mehr Umbruch als

01:13:07.368 --> 01:13:09.728
Also ich würde sagen,

01:13:09.728 --> 01:13:11.668
das hat auch ein bisschen was familiäres, wenn man da hingehen kann,

01:13:11.728 --> 01:13:13.587
kann die Leute wirklich treffen, wie

01:13:13.587 --> 01:13:15.668
kleiner das ist, das familiäre ist das und je größer es wird,

01:13:15.748 --> 01:13:17.587
desto anonymer wird das und das Problem, was wir gerade

01:13:17.587 --> 01:13:19.487
schon beschrieben an diesen Online-Talks,

01:13:19.507 --> 01:13:21.888
dass halt vor allen Dingen dieses Frontalunterrichtsthema,

01:13:22.007 --> 01:13:23.527
dass irgendwie alle Leute einen Speaker

01:13:23.527 --> 01:13:25.268
in einem Raum hängen und sich diese ganzen

01:13:25.268 --> 01:13:27.388
Nebengespräche halt nicht entwickeln, sich diese ganze soziale

01:13:27.388 --> 01:13:29.428
Interaktion irgendwie nicht so entwickelt, wie man sich das wünscht,

01:13:29.467 --> 01:13:31.127
man sich nicht mal gemeinsam Kaffee trinkt,

01:13:31.127 --> 01:13:33.208
irgendwelche zufälligen Bekanntschaften auf einem Gang

01:13:33.208 --> 01:13:35.027
hat oder so. Und das ist ja auch das, wovon

01:13:35.027 --> 01:13:36.408
irgendwie so eine Community lebt und so.

01:13:36.948 --> 01:13:38.668
Und das ist halt virtuell,

01:13:39.188 --> 01:13:40.908
ja, vielleicht ist sowas wie Gather Town

01:13:40.908 --> 01:13:43.527
so ein bisschen repräsierbar,

01:13:43.748 --> 01:13:45.087
aber ist halt doch

01:13:45.087 --> 01:13:45.808
schon was ganz anderes.

01:13:45.808 --> 01:13:50.127
Ja klar, aber du schließt halt auch manche Leute aus, die das nicht können oder nicht wollen

01:13:50.127 --> 01:13:53.388
und die Leute sind auch ein wichtiger Teil der Community

01:13:53.388 --> 01:13:56.607
die irgendwie mitnehmen und deshalb denke ich

01:13:56.607 --> 01:13:59.888
es wird Mischlösungen geben in der Zukunft

01:13:59.888 --> 01:14:02.708
und muss es auch geben. Okay, aber ich habe noch was ganz konkretes

01:14:02.708 --> 01:14:05.987
was mir jetzt leider gefehlt hat an der Konferenz

01:14:05.987 --> 01:14:08.967
und das waren die Lightning Talks. Es gab Lightning Talks

01:14:08.967 --> 01:14:11.768
Oh ja, stimmt. Und die waren auch alle sehr gut

01:14:11.768 --> 01:14:14.007
und sehr schön und es war wirklich cool, dass da die Leute sich

01:14:14.007 --> 01:14:15.848
Ich kann es jedem nur empfehlen.

01:14:16.087 --> 01:14:18.107
Das ist ein guter Einstieg. Fünf Minuten, das schafft jeder.

01:14:19.168 --> 01:14:19.908
Die waren alle

01:14:19.908 --> 01:14:21.928
pre-recorded, das heißt, man hat auch nicht den

01:14:21.928 --> 01:14:23.368
Stress des Live-Daseins

01:14:23.368 --> 01:14:25.728
gehabt. Ich kann es jedem nur empfehlen.

01:14:26.328 --> 01:14:28.067
Aber die Auswahl war dieses Mal

01:14:28.067 --> 01:14:28.948
nicht so groß.

01:14:29.888 --> 01:14:31.627
Es waren alles technische Talks.

01:14:31.948 --> 01:14:33.527
Es waren auch nur eine Handvoll.

01:14:34.567 --> 01:14:35.888
Und die

01:14:35.888 --> 01:14:37.828
waren nicht so promoted, wie sie bei einer

01:14:37.828 --> 01:14:39.748
Konferenz wären. Also so ganz cool wie

01:14:39.748 --> 01:14:41.908
bei euch beim Baumhaus, das hat Ihnen noch gefehlt.

01:14:42.487 --> 01:14:43.587
Genau. Also ich habe einfach

01:14:43.587 --> 01:14:47.047
in Heidelberg hat einen einen Talk gehalten, wie baue ich ein Baumhaus?

01:14:47.547 --> 01:14:48.428
Fünf Minuten Lightning Talk.

01:14:49.388 --> 01:14:53.288
Großartig, ja. Hatte überhaupt nichts mit der DjangoCon zu tun, aber war großartig.

01:14:53.748 --> 01:14:57.388
Es ist so ein bisschen so ungefähr der einzige Talk, an den ich mich erinnern kann,

01:14:57.388 --> 01:15:03.127
von der DjangoCon 2019 oder 2018 war es, ich weiß nicht mehr.

01:15:04.408 --> 01:15:07.288
Einfach, weil es so etwas ganz anderes war und das gab es dieses Mal gar nicht.

01:15:07.288 --> 01:15:10.428
und das fand ich ein bisschen schade,

01:15:10.788 --> 01:15:12.408
dass es da nicht mehr

01:15:12.408 --> 01:15:14.928
so ein bisschen drüber hinausging,

01:15:15.027 --> 01:15:16.487
weil es war schon sehr fokussiert

01:15:16.487 --> 01:15:18.668
auf Django, was ja

01:15:18.668 --> 01:15:20.487
okay ist, aber bei den Lightning Talks darf man

01:15:20.487 --> 01:15:22.527
durchaus, finde ich, auch so ein bisschen über die Stränge

01:15:22.527 --> 01:15:24.428
schlagen und das hätte ich mir

01:15:24.428 --> 01:15:24.968
mehr gewünscht.

01:15:26.487 --> 01:15:26.607
Ja.

01:15:28.067 --> 01:15:30.288
Das ist keine Kritik an irgendjemandem, sondern das ist eher

01:15:30.288 --> 01:15:31.808
Kritik an jemandem, der nicht dabei war.

01:15:32.567 --> 01:15:34.127
Schämt euch was, ihr hättet dabei sein sollen

01:15:34.127 --> 01:15:36.468
und hättet coole Talks über abgefahrene Dinge.

01:15:36.468 --> 01:15:39.248
halten können. Jeder hat ein Hobby und jeder kann das

01:15:39.248 --> 01:15:41.447
fünf Minuten präsentieren. Das interessiert ganz viele Leute.

01:15:41.547 --> 01:15:42.567
Meine Hobbys sind alle illegal.

01:15:44.987 --> 01:15:47.087
Meine Hobbys sind Python und Django.

01:15:47.288 --> 01:15:49.868
Deshalb bin ich schon

01:15:49.868 --> 01:15:50.288
als Habt.

01:15:52.587 --> 01:15:52.908
Ja.

01:15:53.808 --> 01:15:54.868
Das ist ein Bereich.

01:15:55.127 --> 01:15:57.607
Ja, stimmt. Das hat mich auch

01:15:57.607 --> 01:15:58.848
gewundert, dass ich die Lightning-Stocks

01:15:58.848 --> 01:16:00.527
schon vorbei hupsala.

01:16:01.928 --> 01:16:03.507
Ja, waren zu wenige und waren auch

01:16:03.507 --> 01:16:05.208
nicht divers genug, sagen wir mal so.

01:16:05.208 --> 01:16:22.308
Ja, ansonsten so große, große Themen. Wir hatten jetzt so genau dieses ganze HTMLX. Das war auf jeden Fall ein großes Thema. Es gab viele Talks zu Datenbankgeschichten. Das fand ich auch voll gut.

01:16:22.308 --> 01:16:24.308
Also da waren auch einige...

01:16:24.607 --> 01:16:25.947
Der von Haki Benita, großartig.

01:16:25.947 --> 01:16:27.107
Ja, Markus Holtermann auch.

01:16:27.408 --> 01:16:28.708
Let's use another index.

01:16:30.328 --> 01:16:32.288
Can we do better? You've been in this talk

01:16:32.288 --> 01:16:34.087
long enough to know that yes, we can do better.

01:16:35.828 --> 01:16:36.308
Ja, oder

01:16:36.308 --> 01:16:38.148
auch der, wie macht man Migration eigentlich

01:16:38.148 --> 01:16:39.888
ordentlich, wenn man ein Produktionssystem hat, das

01:16:39.888 --> 01:16:41.788
vielleicht nicht so verträgt.

01:16:42.368 --> 01:16:43.708
Das fand ich auch sehr gut.

01:16:44.308 --> 01:16:46.148
Oder auch, was können wir denn machen,

01:16:46.228 --> 01:16:48.127
ohne den Django ORM zu benutzen? Was ist denn, wenn wir

01:16:48.127 --> 01:16:49.868
nur SQL benutzen wollen? Auch super.

01:16:49.868 --> 01:16:51.107
Fand ich auch gut, weil

01:16:51.107 --> 01:17:20.447
und das war auf jeden Fall auch ein großes Thema.

01:17:21.107 --> 01:17:21.507
und

01:17:21.507 --> 01:17:23.487
ja, dann, was hat man denn noch

01:17:23.487 --> 01:17:25.107
an größeren, dann

01:17:25.107 --> 01:17:26.768
GraphQL war halt auch

01:17:26.768 --> 01:17:31.428
war halt auch ein großes Thema,

01:17:31.547 --> 01:17:33.188
aber auch vor allen Dingen in Kombination, ein Talk

01:17:33.188 --> 01:17:34.228
gab es, fand ich,

01:17:34.868 --> 01:17:39.268
in Zusammenhang

01:17:39.268 --> 01:17:41.507
mit Domain-Driven Design

01:17:41.507 --> 01:17:45.188
und genau.

01:17:45.368 --> 01:17:47.368
Sehr gut. Genau, aber da war

01:17:47.368 --> 01:17:49.107
auch, das muss ich, ja, es ist halt

01:17:49.107 --> 01:17:51.248
tatsächlich nicht so ganz einfach, das miteinander

01:17:51.248 --> 01:17:53.308
zu verknüpfen. Da wäre auch nochmal

01:17:53.308 --> 01:17:55.248
interessant gewesen, wie du das in dem

01:17:55.248 --> 01:17:56.808
dritten Teil, der da nicht vorgekommen ist,

01:17:56.808 --> 01:17:59.527
der ist ja in der Aufzeichnung.

01:18:01.188 --> 01:18:01.627
Genau,

01:18:01.768 --> 01:18:03.428
wie macht man das eigentlich, wenn man jetzt

01:18:03.428 --> 01:18:04.127
erfüllt?

01:18:05.288 --> 01:18:07.007
Genau, wenn man jetzt

01:18:07.007 --> 01:18:08.728
irgendwie

01:18:08.728 --> 01:18:11.288
Business-Logik hat, wo packt man die denn jetzt in Django

01:18:11.288 --> 01:18:13.027
eigentlich hin, wenn

01:18:13.027 --> 01:18:15.428
doch viele sagen, dass es gar nicht so gut

01:18:15.428 --> 01:18:16.607
ist, das in die Models zu packen.

01:18:16.607 --> 01:18:18.487
Server, Helpers, Services,

01:18:18.728 --> 01:18:19.527
Helpers, Utils.

01:18:19.848 --> 01:18:22.087
Jochen, da haben wir doch schon drüber gesprochen.

01:18:22.388 --> 01:18:24.208
Wenn du das in die Models packst, ist das überhaupt nicht Solid.

01:18:24.547 --> 01:18:25.848
Die sind überhaupt nicht mehr

01:18:25.848 --> 01:18:28.168
Single Responsibility, die sind überhaupt nicht mehr

01:18:28.168 --> 01:18:30.067
ersetzbar, die sind überhaupt nicht mehr...

01:18:30.067 --> 01:18:32.107
Ja, ist das jetzt der klassische

01:18:32.107 --> 01:18:33.928
Strafrecht? Fad Models gegen Sin Models.

01:18:34.447 --> 01:18:36.067
Ist direkt verletzt.

01:18:36.248 --> 01:18:37.768
Aber ja, das Problem ist halt

01:18:37.768 --> 01:18:39.828
andererseits auch irgendwie nicht, weil das

01:18:39.828 --> 01:18:42.268
andererseits ist... Das ist halt auch schon sehr praktisch.

01:18:42.388 --> 01:18:43.087
Das ist auch richtig.

01:18:43.928 --> 01:18:44.527
Aber da

01:18:44.527 --> 01:18:47.587
Auf jeden Fall, ich kann darauf erinnern, weil ich auch, glaube ich, eben in dieser

01:18:47.587 --> 01:18:49.947
Domain-Driven-Design-Plus-GraphQL-Geschichte

01:18:49.947 --> 01:18:51.527
hatte ich auch, oder vielleicht war es ein anderer,

01:18:51.627 --> 01:18:52.868
vielleicht kriege ich es nochmal zusammen,

01:18:53.507 --> 01:18:55.968
hatte ich auch jemanden dann so, ja, wie macht man das eigentlich mit Django?

01:18:56.127 --> 01:18:58.067
Und dann, okay, irgendwie geht es

01:18:58.067 --> 01:18:59.127
nicht so richtig gut, weil

01:18:59.127 --> 01:19:01.828
wenn man es in die Models schreibt,

01:19:01.987 --> 01:19:04.067
dann macht man da etwas,

01:19:04.148 --> 01:19:05.228
was man eigentlich nicht tun sollte.

01:19:06.648 --> 01:19:08.248
Aber anders geht es irgendwie auch nicht gut.

01:19:09.748 --> 01:19:11.828
Ja, das ist einfach so eine ungelöste

01:19:11.828 --> 01:19:13.328
Frage.

01:19:13.328 --> 01:19:15.368
Da ist auf jeden Fall noch eine Baustelle

01:19:15.368 --> 01:19:17.208
und ich fand, man hat diesmal auch gemerkt, dass

01:19:17.208 --> 01:19:18.908
irgendeine ordentliche Menge,

01:19:19.688 --> 01:19:21.067
ordentlichen Anteil der Leute tut es halt weh,

01:19:21.368 --> 01:19:22.288
aber es gibt irgendwie keine Lösung,

01:19:22.648 --> 01:19:25.527
jedenfalls keine Best Practice, die man einfach so verwenden könnte.

01:19:25.668 --> 01:19:27.127
Die Graphs heilen statt in der Modus Phi.

01:19:28.168 --> 01:19:29.428
Das ist so ein bisschen

01:19:29.428 --> 01:19:31.487
der letzte Punkt, den ich bringen möchte,

01:19:31.768 --> 01:19:33.768
der letzte Kritikpunkt, den ich bringen möchte.

01:19:34.968 --> 01:19:35.368
Die

01:19:35.368 --> 01:19:37.288
Django-Community ist großartig,

01:19:37.388 --> 01:19:39.487
die ist ganz große Klasse und es gab

01:19:39.487 --> 01:19:41.468
quasi nichts, wo

01:19:41.468 --> 01:20:11.447
und Jochen unterhalten sich über die Programmiersprache Python

01:20:11.468 --> 01:20:41.447
und Jochen unterhalten sich über die Programmiersprache Python

01:20:41.468 --> 01:20:44.368
Django wurde auch auf der Konferenz mehrmals als

01:20:44.368 --> 01:20:46.487
the boring old framework bezeichnet

01:20:46.487 --> 01:20:47.808
und

01:20:47.808 --> 01:20:50.148
das ist was, was man Django und der Community

01:20:50.148 --> 01:20:51.527
vorwerfen kann. Die Innovation

01:20:51.527 --> 01:20:53.447
kommt aus anderen Sachen.

01:20:54.148 --> 01:20:56.107
Die innovativen Sachen kommen aus der

01:20:56.107 --> 01:20:57.748
Ruby-Welt, die viel kleiner ist.

01:20:58.328 --> 01:20:59.087
Aus der Rails-Welt.

01:20:59.668 --> 01:21:01.788
Die innovativen Sachen kommen aus der JavaScript-Welt,

01:21:02.248 --> 01:21:03.107
die halt

01:21:03.107 --> 01:21:06.368
tun müssen, weil sie nicht anders können.

01:21:08.087 --> 01:21:08.348
Aber

01:21:08.348 --> 01:21:10.388
warum haben wir denn nicht

01:21:10.388 --> 01:21:13.928
so viel Innovation in der Django und in der Python-Welt?

01:21:14.067 --> 01:21:18.288
Warum beäugen wir die Sachen nicht auch mal viel skeptischer und sagen,

01:21:18.388 --> 01:21:21.268
ja, das ist ja schon ganz gut, aber es könnte noch viel cooler sein?

01:21:22.507 --> 01:21:30.408
So ein bisschen sieht man das ja mit dem HTMLX und mit dem Fullstack without writing JavaScript.

01:21:32.507 --> 01:21:37.668
Aber das sind immer nur Sachen, die, wir zeigen jetzt mal eine Lösung, die jemand gemacht hat.

01:21:37.668 --> 01:21:43.208
und es gab wenig so, lasst uns doch mal Folgendes machen oder lasst uns mal ausprobieren

01:21:43.208 --> 01:21:47.527
oder hier ist was, was ihr noch nie gesehen habt, weil es das noch nicht gibt irgendwo anders.

01:21:48.308 --> 01:21:50.728
Und ich hatte das Gefühl, oder ich habe schon länger das Gefühl,

01:21:50.828 --> 01:21:53.248
dass die Django-Community eben so ein kleines bisschen weniger,

01:21:55.947 --> 01:22:00.368
weniger, ja, es ist schwer das in Worte zu fassen ohne zu negativ zu sein.

01:22:00.368 --> 01:22:02.547
Das ist einfach so gut, dass man einfach den Nied nicht hat,

01:22:02.607 --> 01:22:03.947
sich so schnell in eine andere Richtung zu bringen.

01:22:03.947 --> 01:22:04.348
Ja, vielleicht.

01:22:04.348 --> 01:22:05.688
Ja, das wäre natürlich gut.

01:22:05.688 --> 01:22:09.368
Ja, aber das ist ja so ein lokales Maximum.

01:22:09.768 --> 01:22:10.768
Vielleicht ist das ja so.

01:22:11.027 --> 01:22:12.908
Vielleicht ist ja Django so ein lokales Maximum,

01:22:13.828 --> 01:22:15.148
wo es eben sehr schwer ist,

01:22:15.188 --> 01:22:16.348
sich rauszuoptimieren, weil

01:22:16.348 --> 01:22:19.487
jeder Schritt nach draußen erstmal ein Schritt nach unten ist.

01:22:21.808 --> 01:22:23.928
Vielleicht ist es das, aber ich würde es mir halt wünschen.

01:22:24.348 --> 01:22:26.527
Ich habe in der Rails-Welt

01:22:26.527 --> 01:22:27.808
total coole Sachen gesehen.

01:22:28.388 --> 01:22:30.248
Hotwire kommt, glaube ich, aus der Rails-Welt.

01:22:30.808 --> 01:22:32.107
Es wurde mehrmals darauf verwiesen,

01:22:32.188 --> 01:22:33.688
wie Rails das macht, während Konferenztalks.

01:22:33.688 --> 01:22:41.127
Transparenz Talks. Und das ist schade, weil Django sollte der Vorreiter sein. Django ist nicht der Vorreiter. Django ist die beste Lösung, aber nicht der Vorreiter.

01:22:41.348 --> 01:22:48.888
Ja, das ist das, was man auf der anderen Seite ist. Django damit natürlich auch so ein bisschen wie Python selber, das zweitbeste Framework.

01:22:49.507 --> 01:22:55.107
Und es ist der absolut beste Platz, wo man sein kann, der zweitbeste zu sein, weil der erste wird immer angegriffen und zerlegt.

01:22:56.288 --> 01:22:59.148
Mach doch mal, Johannes, sei doch mal innovativ. Bring doch mal was Neues raus.

01:22:59.148 --> 01:23:01.087
Ja, ich versuch's ja.

01:23:01.328 --> 01:23:02.288
Ich versuch's ja, aber

01:23:02.288 --> 01:23:05.168
erstmal muss ich Geld verdienen.

01:23:06.368 --> 01:23:07.527
Ja, da kommt wieder her

01:23:07.527 --> 01:23:08.728
der Greed und so.

01:23:10.668 --> 01:23:11.627
Ja, ja, ja.

01:23:12.848 --> 01:23:13.587
Diese Sache mit

01:23:13.587 --> 01:23:15.087
Anvil, Jochen, die ist ja großartig.

01:23:15.228 --> 01:23:17.127
Anvil ist ja eine ganz

01:23:17.127 --> 01:23:19.228
verrückte, abgefahrene Sache.

01:23:19.348 --> 01:23:21.468
Was ist Anvil? Ein Schmiede-Amboss

01:23:21.468 --> 01:23:23.607
für... Ja, das ist quasi

01:23:23.607 --> 01:23:25.368
JavaScript aus Python.

01:23:25.527 --> 01:23:28.208
Die haben dann

01:23:28.208 --> 01:23:30.648
Compiler für

01:23:30.648 --> 01:23:32.947
JavaScript, der JavaScript erzeugt.

01:23:32.968 --> 01:23:34.987
Das heißt, du kannst dein System komplett in Python

01:23:34.987 --> 01:23:36.788
schreiben und hast dann aber

01:23:36.788 --> 01:23:38.567
trotzdem hinterher eine JavaScript-Webseite.

01:23:40.188 --> 01:23:40.627
Großartig.

01:23:40.908 --> 01:23:41.648
Großartige Idee.

01:23:42.928 --> 01:23:43.987
Funktioniert auch, ja. Kann man

01:23:43.987 --> 01:23:46.868
jetzt schon benutzen. Er hat auch eine Live-Demo

01:23:46.868 --> 01:23:48.087
gemacht, die dann sofort live war.

01:23:48.947 --> 01:23:50.728
Auch sehr großartig. Weiß nicht,

01:23:50.728 --> 01:23:52.127
ob das Ding noch live ist. Müsste man mal gucken.

01:23:55.648 --> 01:23:56.007
Aber

01:23:56.007 --> 01:23:58.947
Ja, aber es geht auch, das ist dann schon nicht mehr Django.

01:23:59.947 --> 01:24:01.587
Anvil ist, glaube ich, relativ wenig Django.

01:24:01.908 --> 01:24:03.607
Ja, ja, ja. Genau.

01:24:04.748 --> 01:24:09.007
Aber vielleicht ist das ja genau das Indiz dafür, dass das aus dem lokalen Maximum da raus...

01:24:09.007 --> 01:24:12.188
Ich glaube auch, es ist einfach schwer, du kannst auch Django nicht mehr so leicht verändern.

01:24:12.368 --> 01:24:15.688
Du kannst ja nicht einfach sagen, wir bauen ja Django so um, dass es sowas wie Anvil ist.

01:24:15.908 --> 01:24:16.848
Ja, das würde halt...

01:24:16.848 --> 01:24:17.788
Das ist einfach so viel Arbeit.

01:24:18.047 --> 01:24:20.127
Das ist so, dass Johannes eben gesagt hat, dass wir Module daraus machen.

01:24:20.708 --> 01:24:23.987
Ja, das wäre möglicherweise ein Grund, das zu tun.

01:24:23.987 --> 01:24:26.168
wenn man sagt, also ich meine, es fängt ja schon bei sowas an wie

01:24:26.168 --> 01:24:28.027
Django Admin, haben ja auch schon viele Leute gesagt

01:24:28.027 --> 01:24:29.567
aber es wäre doch auch cooler, wenn das irgendwie

01:24:29.567 --> 01:24:32.067
ein bisschen reaktiver wäre und wenn man da irgendwie so ein paar

01:24:32.067 --> 01:24:34.248
Modellere, es geht halt nicht, weil Django Admin

01:24:34.248 --> 01:24:34.728
neu schreiben könnte.

01:24:37.067 --> 01:24:38.047
Ja, aber es wird halt

01:24:38.047 --> 01:24:39.928
auch da wird dann immer gesagt, so ja, Django Admin neu schreiben

01:24:39.928 --> 01:24:41.708
vergiss es einfach, das kriegst du ja nicht mehr hin.

01:24:41.868 --> 01:24:43.047
Das ist nicht zu machen.

01:24:43.328 --> 01:24:46.007
Es ist halt das lokale

01:24:46.007 --> 01:24:47.947
Maximum, ja, du kannst ein Django Admin schon neu schreiben

01:24:47.947 --> 01:24:49.848
aber der wird erstmal eine ganze Weile lang

01:24:49.848 --> 01:24:52.228
sehr viel schlechter sein als der Django Admin, den du jetzt hast.

01:24:52.228 --> 01:24:55.668
und dann ist die Motivation

01:24:55.668 --> 01:24:57.047
schon so ein bisschen so, ach ja,

01:24:57.168 --> 01:24:58.408
dann nehme ich halt wieder ab.

01:25:00.188 --> 01:25:01.248
Und das vielleicht, ja,

01:25:01.288 --> 01:25:03.127
vielleicht ist das der richtige Weg, das zu

01:25:03.127 --> 01:25:03.848
modularisieren.

01:25:05.607 --> 01:25:07.468
Ich meine, ich würde da sagen

01:25:07.468 --> 01:25:08.768
Flask, um da nochmal,

01:25:09.007 --> 01:25:10.248
weil da gab es noch News zu.

01:25:12.348 --> 01:25:13.248
Das ist ja der andere

01:25:13.248 --> 01:25:14.168
Ansatz, das ist ja sozusagen,

01:25:14.708 --> 01:25:17.107
alles ist modular und du

01:25:17.107 --> 01:25:18.487
bastelst dir das halt selber zusammen.

01:25:18.487 --> 01:25:20.547
Und es gibt auch keine Standardmodule, sondern du musst

01:25:20.547 --> 01:25:21.688
dir selber Standardmodule suchen.

01:25:22.228 --> 01:25:24.148
Da gab es jetzt

01:25:24.148 --> 01:25:26.547
eine neue Release, Flask 2.0

01:25:26.547 --> 01:25:28.208
und ich hatte ja mal so

01:25:28.208 --> 01:25:30.268
irgendwie, Cass behauptet,

01:25:30.348 --> 01:25:31.567
das wird nie async,

01:25:32.848 --> 01:25:34.348
weil ich hatte das

01:25:34.348 --> 01:25:35.607
noch so in Erinnerung, dass

01:25:35.607 --> 01:25:38.268
da ja auch mal sehr, sehr stark geachtet wurde

01:25:38.268 --> 01:25:40.007
auf Abwechskompatibilität und möglichst, also

01:25:40.007 --> 01:25:42.348
gerade, na, wie heißt der noch?

01:25:43.188 --> 01:25:43.607
Dings da,

01:25:44.168 --> 01:25:45.507
Armin, der

01:25:45.507 --> 01:25:47.527
hält das ja total, dass irgendwie

01:25:47.527 --> 01:25:50.107
der hätte ja am liebsten

01:25:50.107 --> 01:25:52.047
Abwechskompatibilität bis

01:25:52.047 --> 01:25:53.788
weiß ich nicht, eigentlich bis ganz weit

01:25:53.788 --> 01:25:55.168
bis Jahrzehnte zurück,

01:25:55.328 --> 01:25:57.148
was ich auch verstehen kann in gewisser Weise.

01:25:57.547 --> 01:25:58.567
Ja, hat auch Vorteile.

01:25:59.348 --> 01:26:01.348
Aber auf der anderen Seite würde das eben bedeuten,

01:26:01.487 --> 01:26:03.848
sowas wie Async Await, das wird dann halt nie gehen.

01:26:05.848 --> 01:26:07.547
Und Flask ist halt auch direkt

01:26:07.547 --> 01:26:09.527
als der erste Frame, das sich direkt auf

01:26:09.527 --> 01:26:11.208
WSGI aufsetzt, was halt

01:26:11.208 --> 01:26:12.567
ein Problem ist, weil

01:26:12.567 --> 01:26:15.228
naja, das ist halt nicht Async

01:26:15.228 --> 01:26:16.428
und das kriegst du auch nicht dazu.

01:26:17.527 --> 01:26:19.428
Und Django hat es da sogar ein bisschen einfacher, weil Django ist

01:26:19.428 --> 01:26:21.447
nämlich älter als WSGI

01:26:21.447 --> 01:26:23.527
und WSGI ist schon irgendwie da so

01:26:23.527 --> 01:26:26.308
dran gebastelt

01:26:26.308 --> 01:26:28.087
und jetzt kann man halt auch noch was anderes ranbasteln.

01:26:28.308 --> 01:26:30.447
Man hat auf jeden Fall eine Stelle, an der man was ranbasteln kann,

01:26:30.567 --> 01:26:31.708
die bei Flask so nicht da ist.

01:26:32.188 --> 01:26:34.027
Deswegen dachte ich so, naja, also das Flask

01:26:34.027 --> 01:26:36.027
asyncfähig wird nicht passieren.

01:26:36.507 --> 01:26:37.928
Aber es ist tatsächlich passiert, jetzt mit 2.0

01:26:37.928 --> 01:26:40.067
geht das und sie haben auch

01:26:40.067 --> 01:26:42.248
eine Menge, eben sie haben halt

01:26:42.248 --> 01:26:43.728
die Abwärtskompetitivität

01:26:43.728 --> 01:26:46.487
beendet,

01:26:46.648 --> 01:26:47.148
jedenfalls.

01:26:48.168 --> 01:26:48.527
Aufgegeben.

01:26:48.527 --> 01:26:50.127
gleichzeitig aufgegeben.

01:26:50.127 --> 01:26:52.708
Aber in einer Major-Release kann man das auch machen.

01:26:54.468 --> 01:26:55.908
Aber dann hätten sie es geschickt,

01:26:55.987 --> 01:26:57.668
weil sie hätten das Flask 3 nennen müssen.

01:26:57.928 --> 01:26:59.587
Weil das ist doch das, wo in Python immer die

01:26:59.587 --> 01:27:01.408
Kompetenzen zerbrechen.

01:27:03.567 --> 01:27:04.007
Genau.

01:27:05.368 --> 01:27:07.228
Das braucht jetzt mindestens Python 3.6.

01:27:07.507 --> 01:27:09.228
Und genau, man hat jetzt auch

01:27:09.228 --> 01:27:11.148
Async-Geschichten da drin und SGI.

01:27:11.808 --> 01:27:13.788
Und es gab da immer so ein

01:27:13.788 --> 01:27:15.388
Ding dafür, Quad. Das gibt es auch immer noch.

01:27:16.708 --> 01:27:17.688
Ja, da hatte ich

01:27:17.688 --> 01:27:18.708
ist übrigens auch her die Idee

01:27:18.708 --> 01:27:21.627
aus einer Podcast-Episode mit

01:27:21.627 --> 01:27:23.567
dem jetzigen Mentainer von

01:27:23.567 --> 01:27:24.527
Flask,

01:27:26.368 --> 01:27:27.268
dass man doch,

01:27:27.468 --> 01:27:29.368
weil der sagte so, ja, irgendwo, wozu braucht man das denn?

01:27:30.408 --> 01:27:31.908
Das ist doch irgendwie, in der Flask-Welt

01:27:31.908 --> 01:27:32.947
machen wir das schon seit jeher

01:27:32.947 --> 01:27:35.308
mit Eventlets und

01:27:35.308 --> 01:27:35.928
G-Vent.

01:27:37.268 --> 01:27:37.668
Okay.

01:27:40.248 --> 01:27:41.188
Und das geht?

01:27:41.188 --> 01:27:43.067
Und das geht? Und dann habe ich es probiert und ja, es geht.

01:27:43.148 --> 01:27:45.148
Tatsächlich, das kann man machen. Und das ist halt

01:27:45.148 --> 01:27:47.007
möglicherweise auch tatsächlich eine einfachere Lösung für

01:27:47.007 --> 01:27:49.087
dieses File-Surf-Problem

01:27:49.087 --> 01:27:51.127
einfach einen G-Event-Worker

01:27:51.127 --> 01:27:53.127
nimmt, der dann halt die Standard-Bibliothek

01:27:53.127 --> 01:27:55.228
monkeypatcht und alle synchronen

01:27:55.228 --> 01:27:56.567
I.O. Calls ersetzt durch

01:27:56.567 --> 01:27:58.888
nicht-blockierende und

01:27:58.888 --> 01:28:00.008
das funktioniert dann einfach magisch.

01:28:01.027 --> 01:28:03.087
Über monkeypatching ist halt so ein bisschen gefährlich,

01:28:03.188 --> 01:28:04.888
aber wenn das nur für die Worker macht, die die

01:28:04.888 --> 01:28:06.748
Files ausliefern, ist es vielleicht auch nicht so schlimm.

01:28:08.248 --> 01:28:08.648
Ja, aber

01:28:08.648 --> 01:28:11.047
und was man da auch machen kann,

01:28:11.087 --> 01:28:12.907
ist, man kann das gleichzeitig machen. Man macht halt

01:28:12.907 --> 01:28:14.648
G-Event irgendwie auf dem

01:28:14.648 --> 01:28:16.668
Main-Thread und

01:28:16.668 --> 01:28:21.487
packt halt, und das macht Django ja auch, und zwar auch aus dem Grund, um G-Event und Eventlets

01:28:21.487 --> 01:28:25.388
nicht zu brechen, den ganzen, die lässt die Event-Gloob in einem

01:28:25.388 --> 01:28:29.428
anderen Thread laufen. Und dann alles, was I think await macht, läuft dann halt in einem anderen Thread

01:28:29.428 --> 01:28:33.888
und trotzdem funktioniert diese ganze Eventlet-G-Event-Geschichte

01:28:33.888 --> 01:28:37.688
weiterhin. Also interessant wusste ich alles gar nicht,

01:28:37.848 --> 01:28:41.567
aber auf der anderen Seite sagten die auch, ja, also tatsächlich, um kompatibel zu sein

01:28:41.567 --> 01:28:44.768
zu moderneren Bibliotheken und so, wo man await-Syntax

01:28:44.768 --> 01:28:46.348
als ein erweitertes Syntax verwenden

01:28:46.348 --> 01:28:48.188
muss dann, weil die nur noch das können.

01:28:49.268 --> 01:28:50.868
Ja, bleibt uns wohl auch nichts anderes übrig,

01:28:50.947 --> 01:28:52.788
müssen wir das auch irgendwie können, weil

01:28:52.788 --> 01:28:54.868
du kannst halt in einem synchronen Funktionsaufruf

01:28:54.868 --> 01:28:56.288
nicht irgendwas erweiten, das geht einfach nicht.

01:28:57.308 --> 01:28:58.808
Ja, und deswegen ist es auch

01:28:58.808 --> 01:29:00.587
in Flask jetzt drin und ja, das wird

01:29:00.587 --> 01:29:02.928
also Flask immer noch weiterentwickelt

01:29:02.928 --> 01:29:04.947
voll gut. Ich weiß nicht so recht,

01:29:05.008 --> 01:29:06.008
ich habe mit dieser ganzen

01:29:06.008 --> 01:29:08.748
Welt nicht so wahnsinnig viel zu tun,

01:29:08.808 --> 01:29:10.928
weil ich jetzt ehrlich gesagt auch keine Flask-Projekte

01:29:10.928 --> 01:29:12.567
oder sowas habe oder Dinge, wo ich was

01:29:12.567 --> 01:29:14.407
schreibe. Ich benutze dann immer,

01:29:14.627 --> 01:29:16.627
ich habe noch ein paar Sachen, die Fast

01:29:16.627 --> 01:29:18.428
API sind und das finde ich auch sehr nett und ich glaube,

01:29:18.527 --> 01:29:19.907
das wäre so ähnlich wie Fast quasi.

01:29:21.868 --> 01:29:22.428
Also auch

01:29:22.428 --> 01:29:23.768
in der Hinsicht, dass es halt nicht

01:29:23.768 --> 01:29:26.388
dir vorgibt, was, also

01:29:26.388 --> 01:29:27.888
es ist halt nicht integriert, sondern

01:29:27.888 --> 01:29:30.368
es geht gar nichts mit, sondern du musst alles

01:29:30.368 --> 01:29:31.968
dann halt selber

01:29:31.968 --> 01:29:33.508
konfigurieren und zusammenstecken.

01:29:34.968 --> 01:29:36.328
Ja, aber es ist halt, war halt

01:29:36.328 --> 01:29:38.188
nativ direkt Async und macht alles über Type

01:29:38.188 --> 01:29:39.248
Annotation und so.

01:29:40.368 --> 01:29:42.208
Ja, insofern,

01:29:42.208 --> 01:29:43.848
Aber ja, es ist schön, dass das

01:29:43.848 --> 01:29:45.587
Pflaster halt auch jetzt einen neuen Release hat.

01:29:45.668 --> 01:29:47.607
Ja, sehr cool. Wenn wir jetzt schon bei den ganzen

01:29:47.607 --> 01:29:49.328
Webprogrammings sind, liebt Pyramid eigentlich noch?

01:29:49.868 --> 01:29:51.228
Ja, da gab es ja auch,

01:29:51.447 --> 01:29:53.508
weiß nicht, ist jetzt ein paar Monate her, glaube ich, aber

01:29:53.508 --> 01:29:54.407
gab es auch einen neuen Release.

01:29:55.648 --> 01:29:57.808
Ja, habe ich allerdings auch nichts

01:29:57.808 --> 01:29:59.648
mehr zu tun, keine Ahnung, kann ich nicht mehr drüber erzählen.

01:30:00.788 --> 01:30:01.527
Aber es ist,

01:30:01.708 --> 01:30:03.668
in unserem Bekanntenkreis gibt es Leute, die

01:30:03.668 --> 01:30:04.648
das ganz stark

01:30:04.648 --> 01:30:07.947
ja, in der

01:30:07.947 --> 01:30:08.708
Pi-DDF-Politik.

01:30:09.407 --> 01:30:11.168
Kommt immer wieder was auf.

01:30:12.208 --> 01:30:15.508
Ja, genau.

01:30:16.768 --> 01:30:18.208
Ja, ich finde, dann haben wir einen kleinen Überblick

01:30:18.208 --> 01:30:19.587
über die Jungle-Kurve tatsächlich jetzt gegeben.

01:30:20.987 --> 01:30:22.087
Guckt euch die ganzen Videos an,

01:30:22.127 --> 01:30:23.748
wenn sie alle draußen sind. Das ist bestimmt nochmal

01:30:23.748 --> 01:30:25.188
interessant.

01:30:26.688 --> 01:30:28.027
Ja, mache ich auf jeden Fall.

01:30:30.008 --> 01:30:30.368
Genau.

01:30:30.907 --> 01:30:32.288
Wollen wir noch was vergessen? Habt ihr noch was dazu?

01:30:32.768 --> 01:30:33.648
Wollen wir noch Pics machen?

01:30:33.788 --> 01:30:34.668
Oh ja, können wir machen.

01:30:35.527 --> 01:30:37.288
Jochen, was war dein Pick dieses Mal?

01:30:39.508 --> 01:30:40.027
Ich habe

01:30:40.027 --> 01:30:41.468
dieses Mal keinen Pick mitgebracht.

01:30:41.468 --> 01:30:43.547
Na gut. Doch, doch, ich habe einen Pick.

01:30:44.748 --> 01:30:45.228
DevDocs.

01:30:45.407 --> 01:30:46.668
DevDocs, ah, ja, achso.

01:30:47.768 --> 01:30:49.527
Tja, die hatten wir leider schon in der letzten

01:30:49.527 --> 01:30:51.527
Episode. Hattet ihr schon? Okay, gut.

01:30:51.527 --> 01:30:53.447
Dann wiederhole ich das, dann bekräftige ich das.

01:30:53.567 --> 01:30:55.468
Jeder sollte sich das sofort auf seinen Rechner

01:30:55.468 --> 01:30:57.148
runterladen und für alles benutzen.

01:30:57.527 --> 01:30:59.087
Ich fand es ja sehr schön, ich habe das

01:30:59.087 --> 01:31:01.388
jetzt kürzlich gefunden und habe dann natürlich

01:31:01.388 --> 01:31:03.288
direkt alle Dokumentationen runtergeladen, die es runtergeladen hat.

01:31:03.288 --> 01:31:04.688
Vielleicht, weil du unseren Podcast gehört hast?

01:31:05.567 --> 01:31:05.848
Natürlich.

01:31:05.848 --> 01:31:09.008
Ich habe es nachgeholt, quasi.

01:31:11.468 --> 01:31:17.067
Was mich sehr belustigt hat war, ich habe diese Dokumentation runtergeladen in den Offline-Modus

01:31:17.067 --> 01:31:20.668
und die Django-Dokumentation sind glaube ich 6 MB

01:31:20.668 --> 01:31:22.928
und die Python-Dokumentation sind etwas über 9 MB

01:31:22.928 --> 01:31:26.468
und die Dokumentation für die DOM sind 64 MB

01:31:26.468 --> 01:31:37.888
Also 6,5 Pythons muss man komplett kennen, um die DOM benutzen zu dürfen

01:31:37.888 --> 01:31:40.508
Fand ich erschreckend.

01:31:40.567 --> 01:31:41.987
Erschreckend-belüstigend.

01:31:43.748 --> 01:31:44.268
Ja,

01:31:44.388 --> 01:31:46.487
damit ihr nochmal wisst, was das ist, man kann

01:31:46.487 --> 01:31:48.487
sich halt tatsächlich auf einer einzigen Seite

01:31:48.487 --> 01:31:50.447
die Dokumentation von verschiedensten Frameworks

01:31:50.447 --> 01:31:52.547
und Sprachen irgendwie auf seine

01:31:52.547 --> 01:31:54.368
Favorites legen und hat dann direkt einen Zugriff

01:31:54.368 --> 01:31:55.947
auf das Buch.

01:31:59.348 --> 01:32:00.228
Jochen, was ist deine

01:32:00.228 --> 01:32:01.228
Faktion?

01:32:03.748 --> 01:32:06.567
Was ich tatsächlich sehr schick fand,

01:32:06.567 --> 01:32:08.447
habe ich jetzt, meine ich auch,

01:32:09.248 --> 01:32:09.668
habe ich das,

01:32:10.328 --> 01:32:12.508
AIO SQL ist so eine ganz

01:32:12.508 --> 01:32:14.428
eigene Art, wie man

01:32:14.428 --> 01:32:16.407
jetzt nochmal, also ich dachte dran,

01:32:16.447 --> 01:32:18.708
musste dran denken, ich weiß nicht mehr, wie ich drauf gekommen bin,

01:32:19.348 --> 01:32:20.627
als ich den Talk

01:32:20.627 --> 01:32:22.188
zu RAW, SQL und Django

01:32:22.188 --> 01:32:24.527
gehört hatte und da hatte ich so,

01:32:24.587 --> 01:32:26.567
ja, also man kann halt

01:32:26.567 --> 01:32:28.428
auch sich

01:32:28.428 --> 01:32:30.527
so als alternatives Konzept zu

01:32:30.527 --> 01:32:32.027
dem klassischen ORMs, wie man so hat,

01:32:32.607 --> 01:32:33.848
einfach alles über

01:32:33.848 --> 01:32:36.508
Statements definieren und dann dieses

01:32:36.508 --> 01:32:38.328
Statements halt so ein bisschen parametrisierbar machen

01:32:38.328 --> 01:32:40.348
und das ist halt, das ist auch alles Async und so

01:32:40.348 --> 01:32:42.148
und das ist

01:32:42.148 --> 01:32:44.288
auch eine sehr nette Geschichte, kann man sich mal angucken.

01:32:44.368 --> 01:32:46.428
Also direkt erst so GEL-Statements aus Python.

01:32:46.487 --> 01:32:48.348
Ja, ganz, ganz anderer Ansatz als

01:32:48.348 --> 01:32:50.388
der OAM-Ansatz, den man so kennt, aber auch

01:32:50.388 --> 01:32:51.468
irgendwie interessant.

01:32:52.748 --> 01:32:54.328
Und, ah, eine Geschichte,

01:32:56.067 --> 01:32:58.348
das fand ich sehr verwunderlich,

01:32:58.447 --> 01:33:00.288
ich dachte jetzt eigentlich, ich fange jetzt mal mit so einem Stream an,

01:33:00.348 --> 01:33:01.888
ich habe ja auch nirgendwo gesagt, dass ich das tue oder so,

01:33:02.428 --> 01:33:03.087
außer euch jetzt.

01:33:06.508 --> 01:33:12.648
In dem Twitch-Stream waren eigentlich relativ sofort irgendwie Leute drin und da muss ich mich auch erstmal dran gewöhnen.

01:33:14.188 --> 01:33:20.248
Und da hat jemand gesagt, also als ich da irgendwie mit Git die ganze Zeit so rumgemurkst habe auf der Kommandozeile, nimm doch einfach Tick.

01:33:21.328 --> 01:33:29.288
So, das gebe ich jetzt einfach mal so weiter. Ich habe es noch nicht benutzt, ich weiß gar nicht, ob das gut ist, aber das ist wohl ein Endcursus-Client für Git, der vielleicht ein bisschen besser ist.

01:33:29.768 --> 01:33:33.047
Aha, interessant. Muss man sich mal angucken.

01:33:33.047 --> 01:33:35.188
Ja, ich habe auch noch einen kleinen Pick. Ich würde

01:33:35.188 --> 01:33:36.907
diesmal eine Business-Anwendung nehmen

01:33:36.907 --> 01:33:39.428
und zwar Lifetimes, das gehört auf PyPy

01:33:39.428 --> 01:33:41.127
und wenn man da quasi

01:33:41.127 --> 01:33:43.428
Bestelldaten von Kunden reinpipet,

01:33:43.947 --> 01:33:45.067
dann bekommt man quasi die

01:33:45.067 --> 01:33:47.208
Absprungrate, die Turnrate ausgerechnet.

01:33:48.188 --> 01:33:49.268
Das ist tatsächlich

01:33:49.268 --> 01:33:51.328
gar nicht so schlecht, wenn man so Sales machen möchte

01:33:51.328 --> 01:33:51.708
oder so.

01:33:53.008 --> 01:33:54.047
Das habe ich so entdeckt und fand ich gut.

01:33:54.788 --> 01:33:56.567
Das funktioniert echt gut für gute Businesses.

01:33:56.868 --> 01:33:59.228
Kann man wahrscheinlich auch verkaufen, also an Endkunden

01:33:59.228 --> 01:34:00.208
oder so, die wollen das alle haben.

01:34:00.208 --> 01:34:02.688
die Library, dass du einfach nur die Library

01:34:02.688 --> 01:34:04.388
verkaufst. Ja, du musst ja natürlich schon

01:34:04.388 --> 01:34:05.308
rechnen auf die Churnrate.

01:34:05.868 --> 01:34:07.928
Durch die Daten der Kundenpipen, aber ja.

01:34:09.708 --> 01:34:10.087
Ja klar,

01:34:10.228 --> 01:34:11.567
das als Service anzubieten,

01:34:12.208 --> 01:34:13.107
ist eine coole Idee.

01:34:14.968 --> 01:34:16.627
Ja, vielen Dank, dass ihr wieder eingeschaltet habt,

01:34:16.627 --> 01:34:18.188
dass ihr zugehört habt. Bleibt uns gewogen, heute

01:34:18.188 --> 01:34:20.087
nachts, morgens, mittags, abends,

01:34:20.648 --> 01:34:22.248
am Wochenende und seit der Woche beim Schwimmen gehen.

01:34:23.648 --> 01:34:23.808
Ja,

01:34:25.087 --> 01:34:26.368
schönen Tag, schönen Zeit.

01:34:27.087 --> 01:34:28.328
Bis dann. Tschüss.

01:34:28.348 --> 01:34:29.428
Das hoffe ich nicht so. Tschüss.

01:34:30.208 --> 01:34:32.228
Spät, ja. Tschüss!

01:34:32.407 --> 01:34:33.348
Ja, diesmal lassen wir uns nicht so viel Zeit.

01:34:34.428 --> 01:34:35.248
Bis dann, tschüss!
