WEBVTT

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

00:00:04.460 --> 00:00:06.240
Heute reden wir mit euch über FastAPI.

00:00:07.820 --> 00:00:08.500
Hi, Jochen.

00:00:09.000 --> 00:00:10.740
Ja, hallo, herzlich willkommen, Dominik.

00:00:11.060 --> 00:00:14.220
Wir sind mal wieder im schönen Wintergarten, es ist noch relativ dunkel draußen heute mal wieder.

00:00:14.520 --> 00:00:14.760
Ja.

00:00:15.660 --> 00:00:21.460
Ja, und sind schon ganz gespannt, was ihr uns für Feedback gebt an hallo-at-python-podcast.de.

00:00:22.180 --> 00:00:22.420
Genau.

00:00:23.740 --> 00:00:26.580
Ja, machen wir wie immer so ein bisschen zuerst News oder so.

00:00:26.580 --> 00:00:29.720
Heute haben wir auch keinen Gast irgendwie oder so, sondern...

00:00:29.720 --> 00:00:30.680
Nur wir zwei.

00:00:31.880 --> 00:00:32.540
Das schaffen wir.

00:00:33.900 --> 00:00:35.400
Vielleicht können wir das auch gar nicht mehr. Mal schauen.

00:00:35.920 --> 00:00:37.460
Es gibt ja heute ein bisschen Werbung.

00:00:37.580 --> 00:00:38.320
Wir sind immer noch gesponsert.

00:00:39.500 --> 00:00:41.220
Falls ihr das total doof findet, schreibt uns doch einfach.

00:00:41.360 --> 00:00:42.860
Dann überlegen wir, ob wir es direkt wieder sein lassen.

00:00:43.960 --> 00:00:45.680
Okay, was haben wir denn so an News?

00:00:46.260 --> 00:00:47.400
Wir haben also einen

00:00:47.400 --> 00:00:49.540
Pepp, der eigentlich ganz interessant

00:00:49.540 --> 00:00:51.040
aussah. Pepp

00:00:51.040 --> 00:00:52.120
665.

00:00:53.120 --> 00:00:55.340
Kurz bevor The Devil, ich habe geguckt, 666 war schon

00:00:55.340 --> 00:00:56.600
seit 2001 belegt.

00:00:56.980 --> 00:00:58.940
Ja, die ganzen interessanten Nummern sind alle schon

00:00:58.940 --> 00:01:00.980
irgendwie, da haben sich Leute schon viele Gedanken

00:01:00.980 --> 00:01:02.180
zu gemacht, was man damit machen könnte.

00:01:02.460 --> 00:01:04.860
Ja, um ein

00:01:04.860 --> 00:01:06.060
Log-File-Format, also

00:01:06.060 --> 00:01:08.920
das gibt es ja, also Log-Files zum

00:01:08.920 --> 00:01:10.580
Festnageln von...

00:01:10.580 --> 00:01:12.320
Also nicht File, dann Log-File.

00:01:12.320 --> 00:01:12.900
Ja, mit CK.

00:01:14.720 --> 00:01:16.780
Das gibt es ja

00:01:16.780 --> 00:01:18.820
in diversen, also bei Poetry macht das halt,

00:01:19.300 --> 00:01:20.220
PipTools macht das,

00:01:21.040 --> 00:01:22.720
aber es gibt keinen Standard

00:01:22.720 --> 00:01:24.540
dafür und deswegen ist das halt immer ein bisschen

00:01:24.540 --> 00:01:25.560
schwierig und

00:01:25.560 --> 00:01:28.420
ja, da war halt die Idee, dass

00:01:28.420 --> 00:01:30.160
mal so zu standardisieren, zumindest für

00:01:30.160 --> 00:01:32.320
Binary-Installationen, weil das geht

00:01:32.320 --> 00:01:34.380
eigentlich auch nur so richtig gut für Wheels,

00:01:34.580 --> 00:01:36.460
weil bei Source-Distributionen oder so ist halt

00:01:36.460 --> 00:01:38.480
unklar, was ist denn jetzt eigentlich der Hash da?

00:01:38.800 --> 00:01:39.820
Worüber macht man den denn jetzt?

00:01:40.320 --> 00:01:42.240
Also, wobei bei Wheels ist es halt relativ einfach.

00:01:42.720 --> 00:01:44.220
Genau, und das war der Pep dazu

00:01:44.220 --> 00:01:46.460
von Bracken, der sich

00:01:46.460 --> 00:01:48.440
jetzt auch seit einiger Zeit relativ intensiv da mit diesem

00:01:48.440 --> 00:01:50.020
ganzen Packaging-Thema beschäftigt hat.

00:01:50.020 --> 00:01:51.920
Und ja, das wäre halt eine schöne Gelegenheit

00:01:51.920 --> 00:01:53.240
gewesen, das mal zu standardisieren, aber

00:01:53.240 --> 00:01:55.220
wurde abgelehnt.

00:01:55.360 --> 00:01:56.060
Der war nochmal Bracken, ne?

00:01:56.520 --> 00:01:58.400
ist einer aus dem Steering Council

00:01:58.400 --> 00:02:00.020
und auch irgendwie, der

00:02:00.020 --> 00:02:02.480
macht, glaube ich, eigentlich ist der so, der

00:02:02.480 --> 00:02:04.220
verantwortlich für

00:02:04.220 --> 00:02:05.920
VSCode-Python-Integration

00:02:05.920 --> 00:02:08.120
bei Microsoft, aber der ist eine

00:02:08.120 --> 00:02:10.240
ganz bekannte Figur da in der

00:02:10.240 --> 00:02:12.280
Python-Entwicklungsszene.

00:02:12.300 --> 00:02:14.280
Und weißt du auch noch, warum das abgelehnt worden ist, das PEP?

00:02:14.500 --> 00:02:16.440
Ja, weil es eben keine Source-Distribution

00:02:16.440 --> 00:02:18.320
irgendwie mit umfasst und

00:02:18.320 --> 00:02:20.400
du kannst halt damit dann nur Sachen,

00:02:20.400 --> 00:02:22.260
wo es ein Wheel gibt, das locken und dann ist

00:02:22.260 --> 00:02:23.840
halt irgendwie, viele sagen dann, das

00:02:23.840 --> 00:02:25.740
bringt dann nicht so viel und

00:02:25.740 --> 00:02:27.960
Und ach ja, naja, mal schauen.

00:02:28.100 --> 00:02:30.360
Vielleicht mal sehen, wie das da so weitergeht.

00:02:30.880 --> 00:02:31.680
Vielleicht denkt sich irgendjemand aus,

00:02:31.720 --> 00:02:33.860
wie man auch Source-Sachen hashen kann oder so.

00:02:34.940 --> 00:02:36.900
Ja, oder vielleicht gibt es da mal was ganz anderes.

00:02:36.900 --> 00:02:38.320
Keine Ahnung, mal abwarten.

00:02:38.440 --> 00:02:39.540
Das ist Packaging-Problem.

00:02:39.640 --> 00:02:41.820
Man könnte ja den Source in einen ZIP runterladen,

00:02:41.900 --> 00:02:43.500
den ZIP hashen und dann entpacken.

00:02:45.020 --> 00:02:47.800
Naja, also es ist nicht so einfach.

00:02:48.980 --> 00:02:50.500
Ja, genau.

00:02:50.900 --> 00:02:51.360
Nächste News.

00:02:51.620 --> 00:02:53.520
Nächste, was sehr schön ist.

00:02:54.500 --> 00:02:55.180
WebAssembly.

00:02:55.360 --> 00:02:57.440
WebAssembly ist C-Python, kompiliert komplett

00:02:57.440 --> 00:02:59.520
nach, also das ist wirklich

00:02:59.520 --> 00:03:01.200
das richtige C-Python, nicht irgendwie

00:03:01.200 --> 00:03:03.500
kompiliert nach WebAssembly und

00:03:03.500 --> 00:03:05.260
ja, kann man im Browser ausführen. Also es

00:03:05.260 --> 00:03:07.140
gehen da natürlich noch viele Dinge noch nicht, aber

00:03:07.140 --> 00:03:09.580
dass das überhaupt klappt, ist halt

00:03:09.580 --> 00:03:11.380
schon mal irgendwie sehr interessant

00:03:11.380 --> 00:03:13.580
und eine sehr gute Nachricht. Das heißt, irgendwann kann man

00:03:13.580 --> 00:03:15.260
tatsächlich Python schreiben,

00:03:15.400 --> 00:03:17.420
in C-Python kompilieren und dann einfach im

00:03:17.420 --> 00:03:19.200
Browser laufen. Nee, der kompiliert mal nichts.

00:03:19.440 --> 00:03:21.500
Du nimmst einfach, nein, C-Python ist der Interpreter

00:03:21.500 --> 00:03:23.380
von Python. Der ist nach WebAssembly,

00:03:23.500 --> 00:03:25.480
Das heißt, der läuft dann sozusagen im Browser

00:03:25.480 --> 00:03:27.340
zum Beispiel oder auf irgendwas, was halt

00:03:27.340 --> 00:03:29.340
WebAssembly ausführen kann. Und

00:03:29.340 --> 00:03:31.440
dann kannst du da einfach Python hinschicken und dann

00:03:31.440 --> 00:03:33.500
kann das das ausführen. Das heißt, du schickst

00:03:33.500 --> 00:03:34.880
da quasi vom Server Python

00:03:34.880 --> 00:03:37.380
Source-Files an den Browserskunden

00:03:37.380 --> 00:03:38.720
und das wird dann da. Ja, der könnte das ausführen.

00:03:40.720 --> 00:03:41.620
Ist natürlich

00:03:41.620 --> 00:03:43.420
so die ganze Umgebung und so,

00:03:43.520 --> 00:03:45.480
das ist natürlich dann nicht so wirklich wie

00:03:45.480 --> 00:03:46.860
normalerweise.

00:03:47.680 --> 00:03:49.560
Du musst halt mit den rechten Beschränkungen klarkommen,

00:03:49.640 --> 00:03:51.420
die es dann wahrscheinlich gibt. Ja, und noch diverse

00:03:51.420 --> 00:03:53.420
andere Geschichten. Du kannst ja auch nicht irgendwelche Sachen installieren und so, aber

00:03:53.420 --> 00:03:55.500
und irgendwie C-Extensions und so,

00:03:55.520 --> 00:03:56.620
das geht wahrscheinlich alles nicht, aber

00:03:56.620 --> 00:03:59.300
dass das überhaupt geklappt hat, ist schon mal

00:03:59.300 --> 00:04:01.340
So wird JavaScript halt endlich

00:04:01.340 --> 00:04:03.300
wegschmeißen. Nee, also

00:04:03.300 --> 00:04:05.100
das fürchte ich, wird

00:04:05.100 --> 00:04:07.280
das aber, aber es ist halt

00:04:07.280 --> 00:04:09.380
auf jeden Fall ein Ding, was dazu führen kann,

00:04:09.520 --> 00:04:11.340
dass man da

00:04:11.340 --> 00:04:13.420
eventuell nicht in so ein

00:04:13.420 --> 00:04:15.120
Aussterbeproblem läuft, weil halt alles

00:04:15.120 --> 00:04:17.060
irgendwann im Browser ist und so, dann kann man da

00:04:17.060 --> 00:04:18.300
vielleicht auch sein oder so, mal schauen.

00:04:18.860 --> 00:04:20.720
Was ist so ein Use Case von so WebAssembly

00:04:20.720 --> 00:04:23.440
Zeugs? Ja, zum Beispiel

00:04:23.440 --> 00:04:25.340
eben im Browser

00:04:25.340 --> 00:04:27.180
halt laufen, aber auch eventuell in Zukunft

00:04:27.180 --> 00:04:29.260
irgendwann wird es halt vielleicht auch so sein, dass

00:04:29.260 --> 00:04:31.200
Telefone oder so das halt irgendwie nativ

00:04:31.200 --> 00:04:31.660
ausführen.

00:04:33.480 --> 00:04:34.660
Ich meine auch, also

00:04:34.660 --> 00:04:37.020
unter iOS oder die

00:04:37.020 --> 00:04:39.240
iPhones, die haben ja, da ist ja ganz viel

00:04:39.240 --> 00:04:40.880
optimierter Kram auch für

00:04:40.880 --> 00:04:43.460
JavaScript schon drin, aber auch für WebAssembly

00:04:43.460 --> 00:04:44.420
ist es halt

00:04:44.420 --> 00:04:47.360
ja, also da sozusagen das so

00:04:47.360 --> 00:04:49.280
zu machen, dass man da den Kram halt auch irgendwie

00:04:49.280 --> 00:04:50.800
ausführen kann, das wäre eigentlich relativ einfach.

00:04:50.840 --> 00:04:53.460
Das heißt, der macht dann direkt dein Telefon mit die Datenanalyse

00:04:53.460 --> 00:04:55.020
live auf dem Gerät direkt oder sowas?

00:04:55.040 --> 00:04:57.260
Man könnte sagen, also das kann halt

00:04:57.260 --> 00:04:59.140
auch WebAssembly ausführen. Also momentan zum Beispiel

00:04:59.140 --> 00:05:01.340
wenn du für iOS entwickelst, geht halt nur

00:05:01.340 --> 00:05:03.260
C,

00:05:03.360 --> 00:05:04.980
C++, Objective-C,

00:05:05.980 --> 00:05:06.300
Swift.

00:05:08.160 --> 00:05:09.020
Es gibt zwar auch

00:05:09.020 --> 00:05:11.060
Pythonista und so, man kann schon Python da ausführen,

00:05:11.120 --> 00:05:13.200
das geht auch, aber das ist alles nicht

00:05:13.200 --> 00:05:14.600
so richtig offiziell erlaubt.

00:05:15.120 --> 00:05:16.580
Und ja,

00:05:16.800 --> 00:05:18.040
JavaScript geht halt auch.

00:05:19.100 --> 00:05:21.160
Und vielleicht ist halt

00:05:21.160 --> 00:05:23.140
irgendwie WebAssembly irgendwann mal so ein offizielles

00:05:23.140 --> 00:05:24.520
Target und dann

00:05:24.520 --> 00:05:27.120
könnte man auch Python da so wieder reinschummeln

00:05:27.120 --> 00:05:29.200
quasi. Und dann Apps für

00:05:29.200 --> 00:05:30.460
Telefone in Python schreiben.

00:05:30.660 --> 00:05:32.420
Was ja auch so ein anderes Problem ist.

00:05:32.620 --> 00:05:35.340
Die beiden Hauptdinger, auf denen Python nicht da ist,

00:05:35.340 --> 00:05:37.200
ist halt Frontend-Web und

00:05:37.200 --> 00:05:39.020
halt mobile Geräte.

00:05:39.340 --> 00:05:41.220
Und das sind zwei Kategorien, die immens wichtig sind

00:05:41.220 --> 00:05:43.240
eigentlich. Und das macht so ein bisschen

00:05:43.240 --> 00:05:45.500
Angst, dass die Story für Python da nicht so gut ist.

00:05:45.520 --> 00:05:47.100
Aber gut, dass das in die richtige Richtung geht.

00:05:47.300 --> 00:05:47.680
Ja, genau.

00:05:49.100 --> 00:05:50.960
Genau, Christian Heim ist Hamburger

00:05:50.960 --> 00:05:52.680
Python-User-Gruppe, irgendwie

00:05:52.680 --> 00:05:54.940
ein paar Mal gesehen, hat da ganz viel gemacht

00:05:54.940 --> 00:05:56.500
und das freut mich sehr, dass das irgendwie

00:05:56.500 --> 00:05:58.520
coole Sachen macht.

00:05:59.800 --> 00:06:00.840
Dann ist Black

00:06:00.840 --> 00:06:02.380
jetzt stable. Black ist stable.

00:06:02.800 --> 00:06:03.140
Das ist,

00:06:03.320 --> 00:06:06.380
ja, genau, das ist toll.

00:06:07.220 --> 00:06:08.780
Oder so. Manche Leute finden es auch schrecklich,

00:06:08.780 --> 00:06:10.520
aber ich finde es eigentlich eine gute Nachricht.

00:06:11.020 --> 00:06:12.680
Das heißt, man kann sich jetzt darauf verlassen, dass das erstmal

00:06:12.680 --> 00:06:14.640
eine Zeit lang alles so bleiben wird. Was auch mit

00:06:14.640 --> 00:06:16.100
dazugekommen ist, ist Port für Python

00:06:16.100 --> 00:06:18.500
3.10-Syntax und so und

00:06:18.500 --> 00:06:20.860
ja, eine ganze lange Liste von Dingen, die da

00:06:20.860 --> 00:06:22.560
Und damit ist jetzt auch die DIP,

00:06:22.820 --> 00:06:25.060
die Django Enhancement Proposal

00:06:25.060 --> 00:06:26.520
Ah, ja, ja, ja, es gab

00:06:26.520 --> 00:06:29.080
Django Enhancement Proposal

00:06:29.080 --> 00:06:30.800
8 sagt irgendwie, lass doch mal

00:06:30.800 --> 00:06:32.940
Autofarmata benutzen, aber erst

00:06:32.940 --> 00:06:34.740
wenn es Stable ist und genau,

00:06:34.740 --> 00:06:36.580
da Blackhead Stable ist, ist Django

00:06:36.580 --> 00:06:38.820
jetzt auch quasi mit Black formatiert

00:06:38.820 --> 00:06:39.760
und ja.

00:06:41.100 --> 00:06:42.580
Ja, wir hatten ja schon mal darüber gesprochen,

00:06:42.700 --> 00:06:44.160
wie man Black noch so einsetzen kann mit

00:06:44.160 --> 00:06:45.880
Darker oder

00:06:45.880 --> 00:06:48.540
Blue war das? Ja, Blue ist halt dann mit

00:06:48.540 --> 00:06:50.380
Single Quotes statt Double. Genau, und

00:06:50.380 --> 00:06:52.240
Darker ist halt inkrementelles

00:06:52.240 --> 00:06:53.860
Black Bike mit

00:06:53.860 --> 00:06:55.220
Hooks zum Beispiel.

00:06:55.580 --> 00:06:58.120
Ja gut, aber genau, Jungle ist jetzt auch Black.

00:06:58.880 --> 00:07:00.580
PyTest. PyTest gibt es

00:07:00.580 --> 00:07:02.080
eine neue Version, sieben Seiten.

00:07:02.860 --> 00:07:04.480
Der letzte kam irgendwann im Frühjahr letzten

00:07:04.480 --> 00:07:06.020
Jahres oder so raus, also das ist ein ganz großer Schritt.

00:07:06.380 --> 00:07:08.220
Ich weiß aber gar nicht genau, also es ist nichts, was jetzt irgendwie

00:07:08.220 --> 00:07:10.200
rausstechen würde, was man sagen kann, oh das ist ganz toll.

00:07:11.140 --> 00:07:12.240
Aber kann man ja mal ausprobieren.

00:07:12.440 --> 00:07:14.400
Also die Information, es gibt jetzt eine neue

00:07:14.400 --> 00:07:16.500
Version ist vielleicht daran am interessantesten.

00:07:18.360 --> 00:07:18.540
Ja,

00:07:18.820 --> 00:07:20.560
ansonsten genau zu der

00:07:20.560 --> 00:07:22.560
zu der HTMX-Episode

00:07:22.560 --> 00:07:24.380
vom letzten Mal. Es gab da noch so ein Essay

00:07:24.380 --> 00:07:26.320
von, das habe ich dann gesehen, als ich gedacht habe,

00:07:26.380 --> 00:07:28.480
okay, kann man das nicht vielleicht irgendwie einfacher erklären mit diesem

00:07:28.480 --> 00:07:30.520
HTUS-Ding?

00:07:30.880 --> 00:07:32.200
Was ist das eigentlich? Und so

00:07:32.200 --> 00:07:34.480
und habe dann gesehen, es gibt ein

00:07:34.480 --> 00:07:36.380
Essay von dem Carson Gross

00:07:36.380 --> 00:07:38.480
dazu,

00:07:40.080 --> 00:07:40.360
wo er

00:07:40.360 --> 00:07:42.360
beschreibt, wie er sich so

00:07:42.360 --> 00:07:44.760
gedacht hat und nimmt da halt so ein Bankbeispiel

00:07:44.760 --> 00:07:45.760
und sagt halt,

00:07:46.360 --> 00:07:48.340
also wenn du eine JSON-API hast, dann

00:07:48.340 --> 00:07:50.260
muss, wenn du so eine

00:07:50.260 --> 00:07:52.360
JavaScript-Applikation hast, dann muss

00:07:52.360 --> 00:07:54.500
ja

00:07:54.500 --> 00:07:56.480
sozusagen die Applikation

00:07:56.480 --> 00:07:58.380
immer wissen, was zum Beispiel sowas bedeutet,

00:07:58.500 --> 00:08:00.000
wie du hast dein Konto überzogen

00:08:00.000 --> 00:08:02.340
und welche Aktionen

00:08:02.340 --> 00:08:03.680
du dann machen darfst und welche nicht.

00:08:04.160 --> 00:08:06.300
Während wenn du halt HTML rüberschickst, dann

00:08:06.300 --> 00:08:08.440
können da ja zum Beispiel, ob du jetzt eine Überweisung

00:08:08.440 --> 00:08:09.620
machen kannst oder so, ist halt ein Link.

00:08:10.040 --> 00:08:11.700
Dann kann der Link da halt entweder drin sein oder nicht.

00:08:12.360 --> 00:08:40.100
und dein Browser muss halt nicht wissen, dass du dein Konto überzogen hast, der zeigt einfach nur Formulare an und das Formular zum Überweisen zeigt dir halt einfach nicht mehr an und sozusagen der State, dass der das dann nicht mehr anzeigt, ist halt im HTML und nicht in der Applikation, während in einem JavaScript-Fall kriegst du halt nur die Account-Daten von der Bank und musst dann halt in der Applikation überprüfen, okay, hat er sein Konto überzogen?

00:08:40.280 --> 00:08:41.840
Wenn ja, dann darf er nicht überweisen.

00:08:42.360 --> 00:08:44.300
Und das ist natürlich sozusagen

00:08:44.300 --> 00:08:46.340
einfach ein bisschen anders. Und vielleicht kann man sich das

00:08:46.340 --> 00:08:47.720
anhand dieser Geschichte, ich will verlinken,

00:08:47.860 --> 00:08:50.360
packen das in die Shownotes. Also ich fand, daran kann man

00:08:50.360 --> 00:08:52.280
eigentlich ganz schön sehen, was da eigentlich so gemeint ist

00:08:52.280 --> 00:08:54.280
mit Hypermedia

00:08:54.280 --> 00:08:56.520
ist die Engine of Application State

00:08:56.520 --> 00:08:56.780
nicht.

00:08:58.540 --> 00:09:00.060
Was gab es noch? Ach ja, Wagtail.

00:09:00.140 --> 00:09:00.680
Wagtail, genau.

00:09:02.460 --> 00:09:03.920
Wagtail bekommt einen neuen Page Editor

00:09:03.920 --> 00:09:05.560
und zwar von Google.

00:09:05.820 --> 00:09:07.840
Genau, von Google gesponsert.

00:09:07.980 --> 00:09:10.120
weil Google relativ viel Wagtail wohl intern

00:09:10.120 --> 00:09:10.740
benutzt.

00:09:12.200 --> 00:09:14.000
Ja, und das ist natürlich schon nett. Also ist

00:09:14.000 --> 00:09:15.820
es nicht so wahnsinnig viel Geld, irgendwie, was

00:09:15.820 --> 00:09:17.800
sind das, 150.000 Dollar oder so, die sie denen geben,

00:09:17.980 --> 00:09:19.480
aber ich meine, da kannst du halt schon

00:09:19.480 --> 00:09:21.100
ein bisschen was mit machen und

00:09:21.100 --> 00:09:23.880
ja, also freut mich auf jeden Fall auch, dass die Ergebnisse

00:09:23.880 --> 00:09:25.700
dann halt allen hinterher zugutekommen, das ist ja

00:09:25.700 --> 00:09:26.300
sehr schön.

00:09:27.960 --> 00:09:30.000
Genau, und ja, ich meine, ich benutze

00:09:30.000 --> 00:09:32.020
ja jetzt auch für meine Geschichten da

00:09:32.020 --> 00:09:33.980
Wagtail. Ich bin nicht immer so

00:09:33.980 --> 00:09:35.760
ganz super überzeugt, ob das die richtige Entscheidung ist, aber

00:09:35.760 --> 00:09:38.900
solche Nachrichten sind auch gute Nachrichten

00:09:38.900 --> 00:09:39.200
für mich.

00:09:41.040 --> 00:09:42.200
Apropos Open Source,

00:09:42.360 --> 00:09:44.880
da gab es doch irgendwie noch eine Meldung von uns.

00:09:45.180 --> 00:09:46.800
Ja, Oliver

00:09:46.800 --> 00:09:48.380
hat netterweise einen Kommentar

00:09:48.380 --> 00:09:50.800
zu der Open Source Episode, glaube ich,

00:09:50.820 --> 00:09:52.680
hinterlassen und meinte, da kennt ihr eigentlich diesen

00:09:52.680 --> 00:09:53.780
Prototype Fund.

00:09:54.780 --> 00:09:56.580
Und nö, kannte ich zumindest überhaupt gar nicht.

00:09:57.160 --> 00:09:57.980
Ja, man sagte mir auch nichts.

00:09:58.740 --> 00:10:00.560
Und was ist das? Das ist irgendwie

00:10:00.560 --> 00:10:02.760
ein Fonds, der

00:10:02.760 --> 00:10:05.120
aufgelegt ist, das Bildungsministerium

00:10:05.120 --> 00:10:06.760
zahlt dann irgendwie für,

00:10:07.420 --> 00:10:08.940
also das geht vom Jahr

00:10:08.940 --> 00:10:10.140
2016 bis 2024,

00:10:11.000 --> 00:10:13.120
25 Projekte und

00:10:13.120 --> 00:10:13.920
16

00:10:13.920 --> 00:10:16.980
Förderungsrunden und

00:10:16.980 --> 00:10:19.040
also, ja, da sind wir

00:10:19.040 --> 00:10:21.140
natürlich jetzt mit 2022 so mittendrin

00:10:21.140 --> 00:10:22.520
oder am Ende eigentlich schon fast.

00:10:23.460 --> 00:10:25.020
Ja, wenn der jetzt noch einen Förderantrag schreiben will,

00:10:25.160 --> 00:10:27.040
also das Problem ist wahrscheinlich immer, der Förderantrag ist relativ

00:10:27.040 --> 00:10:28.760
lang, aber ja,

00:10:29.120 --> 00:10:30.360
wie immer so bei solchen Dingen, aber

00:10:30.360 --> 00:10:32.360
wie viel kriegt man? 50k für 6 Monate?

00:10:32.640 --> 00:10:35.000
Ja, 47.500 Euro für 6 Monate

00:10:35.000 --> 00:10:36.640
maximal, also vielleicht auch weniger.

00:10:37.340 --> 00:10:38.160
Doch, dann dachte ich so, oh,

00:10:38.420 --> 00:10:39.400
für ein Team,

00:10:40.020 --> 00:10:41.220
die helfen, ja.

00:10:42.000 --> 00:10:45.080
Also ich meine, tatsächlich mache ich ja eigentlich genau

00:10:45.080 --> 00:10:47.100
das, da steht auch noch in diesem Ding drin, so für Freelancer

00:10:47.100 --> 00:10:48.960
oder so, vielleicht ganz interessant, da dachte ich mir so, oh ja, stimmt.

00:10:49.620 --> 00:10:51.140
Eigentlich mache ich genau sowas und

00:10:51.140 --> 00:10:53.080
eigentlich wäre das ja tatsächlich, vielleicht schreibe ich da

00:10:53.080 --> 00:10:54.820
einfach mal was hin, aber andererseits,

00:10:55.060 --> 00:10:57.300
ja, so vom Finanziell

00:10:57.300 --> 00:10:58.980
ist das jetzt nicht so super attraktiv, ehrlich gesagt.

00:10:59.780 --> 00:11:00.900
Und für ein Team ist das natürlich,

00:11:01.360 --> 00:11:01.740
ja, nee.

00:11:02.560 --> 00:11:04.740
Ja, da kann man, ja, ja.

00:11:04.800 --> 00:11:05.260
Ach ja.

00:11:06.160 --> 00:11:07.800
Tja, die Preise und so, öffentliche Hand.

00:11:08.200 --> 00:11:11.160
Ja, aber prinzipiell sehr interessant

00:11:11.160 --> 00:11:12.340
und auch gut, dass das jemand macht,

00:11:12.440 --> 00:11:14.380
weil das ist eigentlich total wichtig

00:11:14.380 --> 00:11:16.060
und müsste man eigentlich noch mehr machen.

00:11:17.440 --> 00:11:19.040
Aber immerhin, das ist ja schon nicht so schlecht.

00:11:19.260 --> 00:11:21.060
Und vielleicht weiß ja jemand noch nicht, dass es das gibt.

00:11:21.080 --> 00:11:22.640
Ja, und wenn jemand zum Beispiel gerade nach dem Studium

00:11:22.640 --> 00:11:23.960
damit durchaus zufrieden sein kann

00:11:23.960 --> 00:11:25.020
und dann damit was probieren kann

00:11:25.020 --> 00:11:26.460
und damit gefühlt wird, das ist auch schon mal super.

00:11:28.860 --> 00:11:31.120
Ja, dann, das war auch jetzt

00:11:31.120 --> 00:11:33.160
vor ganz kurzem

00:11:33.160 --> 00:11:35.200
EdgeDB 1.0

00:11:35.200 --> 00:11:37.140
Release ist vielleicht auch interessant.

00:11:38.900 --> 00:11:39.340
Ja,

00:11:39.440 --> 00:11:40.780
muss man eigentlich, ich weiß nicht, ob man da so

00:11:40.780 --> 00:11:42.580
in Detail drauf eingehen kann.

00:11:42.600 --> 00:11:44.560
Aber was ist denn eine EdgeDB trotzdem?

00:11:44.900 --> 00:11:46.680
EdgeDB ist, ja,

00:11:48.320 --> 00:11:48.800
quasi

00:11:48.800 --> 00:11:50.740
ein Versuch, sozusagen

00:11:50.740 --> 00:11:53.080
diesen Object Relational

00:11:53.080 --> 00:11:54.360
Impedance

00:11:54.360 --> 00:11:56.320
Mismatch, irgendwie so ein bisschen.

00:11:56.540 --> 00:11:58.380
Okay, jetzt hast du was gesagt, das habe ich überhaupt nicht verstanden.

00:11:59.100 --> 00:12:00.000
Edge Relational

00:12:00.000 --> 00:12:02.820
in... Object Relational...

00:12:02.820 --> 00:12:03.960
Also du hast ja immer das

00:12:03.960 --> 00:12:05.900
Problem in

00:12:05.900 --> 00:12:08.000
objektorientierten Sprachen, das mappt halt

00:12:08.000 --> 00:12:09.260
nicht so richtig gut auf

00:12:09.260 --> 00:12:11.740
relationale Datenbanken. Relationale Datenbanken

00:12:11.740 --> 00:12:14.000
ist halt so eine Idee aus Anfang

00:12:14.000 --> 00:12:15.120
der 70er und

00:12:15.120 --> 00:12:17.740
eigentlich eine ziemlich coole Idee, aber damals gab es

00:12:17.740 --> 00:12:19.600
objektorientierte Programmierung und sowas gab es einfach nicht.

00:12:20.600 --> 00:12:21.820
Und das ist aber

00:12:21.820 --> 00:12:23.960
irgendwie das dominante Programmierparadigma

00:12:23.960 --> 00:12:24.760
irgendwie geworden.

00:12:25.780 --> 00:12:27.660
Und jetzt haben wir halt immer das Problem,

00:12:27.800 --> 00:12:29.540
okay, man speichert die Daten

00:12:29.540 --> 00:12:31.380
halt in Relationen

00:12:31.380 --> 00:12:33.540
oder in einer relationalen Datenbank und man hat aber jetzt

00:12:33.540 --> 00:12:35.320
Objekte irgendwie

00:12:35.320 --> 00:12:37.380
in der Applikation

00:12:37.380 --> 00:12:39.000
und wie kriegt man das jetzt zusammen?

00:12:39.140 --> 00:12:40.700
Da gibt es im Grunde zwei wesentliche, also

00:12:40.700 --> 00:12:43.160
du kannst auch hohe SQL-Szenen natürlich schreiben, aber

00:12:43.160 --> 00:12:44.440
das ist halt so ein bisschen unhandlich.

00:12:45.980 --> 00:12:47.440
Die meisten verwenden dann eben

00:12:47.440 --> 00:12:48.920
ORMs, also so

00:12:48.920 --> 00:12:50.180
Object Relational Mapper.

00:12:50.480 --> 00:12:52.540
Wie den von Django oder Peewee oder sowas.

00:12:52.540 --> 00:12:54.560
Genau, oder SQL Alchemies für Python

00:12:54.560 --> 00:12:55.480
vielleicht der bekannteste.

00:12:56.400 --> 00:12:58.440
Und da gibt es zwei grundsätzlich unterschiedliche

00:12:58.440 --> 00:13:00.580
Patterns. Das eine ist Active Record Pattern,

00:13:00.620 --> 00:13:01.680
was halt Ruby on Rails

00:13:01.680 --> 00:13:04.040
verwendet. Django verwendet das auch.

00:13:04.480 --> 00:13:06.660
Oder halt Datamapper-Pattern,

00:13:06.720 --> 00:13:07.740
das verwendet SQL Alchemy.

00:13:08.580 --> 00:13:10.020
Die haben halt so ihre Trade-Offs.

00:13:10.140 --> 00:13:11.620
Die haben halt Vorurteile und Nachteile.

00:13:12.060 --> 00:13:13.860
Man kann jetzt nicht sagen, das eine oder andere ist besser.

00:13:15.280 --> 00:13:16.400
Jedenfalls, aber

00:13:16.400 --> 00:13:18.480
sowas muss man halt eigentlich, oder die meisten Leute

00:13:18.480 --> 00:13:20.380
verwenden sowas heutzutage einfach deswegen, weil es

00:13:20.380 --> 00:13:22.420
halt das Leben einfach deutlich leichter macht.

00:13:22.760 --> 00:13:24.320
Aber trotzdem hat man immer noch das Problem,

00:13:24.320 --> 00:13:26.400
dass viele Sachen nicht so richtig gut

00:13:26.400 --> 00:13:28.140
gehen und schwierig sind.

00:13:28.440 --> 00:13:33.980
Und man muss mit den Dingern auch teilweise ein bisschen kämpfen.

00:13:35.100 --> 00:13:37.920
Und ja, die Idee bei HDB ist halt einfach zu sagen,

00:13:38.000 --> 00:13:39.760
warum denken wir das Ganze nicht einfach nochmal neu

00:13:39.760 --> 00:13:41.280
und machen das halt eher so,

00:13:41.380 --> 00:13:44.580
dass die Datenhaltung auch zu der Art,

00:13:44.620 --> 00:13:46.220
wie wir heutzutage programmieren, besser passt.

00:13:47.020 --> 00:13:48.280
Und die Standardfälle,

00:13:48.420 --> 00:13:50.320
wo man halt in SQL komische Sachen schreiben muss

00:13:50.320 --> 00:13:52.620
oder die mit den normalen ORMs nicht so gut gehen,

00:13:53.160 --> 00:13:54.840
die machen wir halt so, dass es halt einfach geht.

00:13:54.840 --> 00:13:56.780
und dass man auch,

00:13:57.240 --> 00:13:58.840
das ist halt immer so ein Fremdkörper,

00:13:59.060 --> 00:14:00.600
selbst wenn man es mit einem ORM macht,

00:14:00.680 --> 00:14:02.460
es sieht immer komisch aus,

00:14:02.560 --> 00:14:04.660
ein bisschen eigenartig, es passt halt

00:14:04.660 --> 00:14:05.780
nicht so richtig und

00:14:05.780 --> 00:14:08.460
genau, dafür haben sie sich eine neue Sprache überlegt,

00:14:08.560 --> 00:14:10.640
haben gesagt, das eigentliche Problem ist halt, warum die

00:14:10.640 --> 00:14:12.300
ORMs nicht so gut sein können, ist halt, dass sie,

00:14:12.940 --> 00:14:14.560
dass halt SQL als Compile-Target

00:14:14.560 --> 00:14:16.680
sozusagen ziemlich schwierig ist, weil halt

00:14:16.680 --> 00:14:18.600
SQL ist ja auch kompliziert, ist eigentlich auch dafür

00:14:18.600 --> 00:14:20.220
gemacht, dass Menschen das schreiben,

00:14:20.680 --> 00:14:22.480
was ja heute auch keiner mehr macht, eigentlich war das mal gedacht

00:14:22.480 --> 00:14:24.140
für das Analysten und so

00:14:24.140 --> 00:14:24.860
Queries schreiben.

00:14:26.440 --> 00:14:27.920
Weiß ich nicht, ob das jemals passiert ist, aber

00:14:27.920 --> 00:14:30.500
heutzutage passiert das kaum, denke ich.

00:14:31.840 --> 00:14:32.200
Sondern

00:14:32.200 --> 00:14:34.200
es ist halt immer so, dass du verwendest

00:14:34.200 --> 00:14:36.000
halt einen ORM, der compiled dann zu SQL,

00:14:36.200 --> 00:14:37.700
also zu etwas, was eigentlich dafür gemacht ist, dass Menschen

00:14:37.700 --> 00:14:39.460
das finden, das macht irgendwie alles keinen Sinn.

00:14:40.060 --> 00:14:42.200
Dann ist es halt auch so, SQL ist nicht so gut composable,

00:14:42.360 --> 00:14:43.520
du kannst halt nicht irgendwie

00:14:43.520 --> 00:14:45.960
Schnipsel SQL rumreichen und die dann halt

00:14:45.960 --> 00:14:48.400
zusammensetzen oder es geht alles nicht so gut.

00:14:48.400 --> 00:14:49.760
Das ist eine Gesamtstatement-Syndromie.

00:14:50.200 --> 00:14:52.260
Und genau, all diese Dinge sind halt bei

00:14:52.260 --> 00:14:54.440
EdgeQL oder so ist, glaube ich, dann die

00:14:54.440 --> 00:14:56.460
Sprache besser

00:14:56.460 --> 00:14:58.640
sozusagen. Aber da weiß man nicht so genau.

00:14:58.800 --> 00:15:00.240
Das ist halt jetzt gerade eine neue Ankündigung.

00:15:00.380 --> 00:15:02.320
Die entwickeln da schon seit ein paar Jahren dran, aber

00:15:02.320 --> 00:15:04.360
jetzt ist halt die erste

00:15:04.360 --> 00:15:06.060
1.0-Version erschienen.

00:15:07.140 --> 00:15:08.260
Ja, also

00:15:08.260 --> 00:15:10.320
das hört sich auf jeden Fall interessant an. Kann man sich

00:15:10.320 --> 00:15:12.260
ja mal angucken. Und es ist halt so eine Mischung.

00:15:12.440 --> 00:15:14.180
Das, was sie da gebaut haben, ist

00:15:14.180 --> 00:15:16.340
die Sprache soll halt standardisiert

00:15:16.340 --> 00:15:17.540
werden. Das ist eher so ein Standard.

00:15:18.400 --> 00:15:20.280
Es gibt aber auch eine konkrete Implementation, die

00:15:20.280 --> 00:15:21.000
basiert auf

00:15:21.000 --> 00:15:23.200
Postgres und

00:15:23.200 --> 00:15:25.220
quasi so ein bisschen Erweiterung

00:15:25.220 --> 00:15:27.080
Richtung Graphen, Datenbanken,

00:15:27.440 --> 00:15:28.260
weil das ist ja auch immer so ein Ding,

00:15:28.500 --> 00:15:31.400
es ist eigentlich gar nicht so klar, warum wir jetzt Relationale Datenbanken gewonnen haben

00:15:31.400 --> 00:15:33.260
gegenüber den Graphen-Datenbanken und es gibt

00:15:33.260 --> 00:15:35.120
ja auch noch Graphen-Datenbanken, Neo4j oder

00:15:35.120 --> 00:15:37.160
diverse andere, Dgraph

00:15:37.160 --> 00:15:38.880
und Zeugs und

00:15:38.880 --> 00:15:41.340
ja, eigentlich will man beides irgendwie haben und

00:15:41.340 --> 00:15:43.440
in Postgres kann man das ja ganz gut

00:15:43.440 --> 00:15:45.360
auch abbilden und dann haben sie

00:15:45.360 --> 00:15:47.120
halt irgendwie so ein Layer über Postgres gelegt und

00:15:47.120 --> 00:15:49.220
Ah, wie heißt das? Ein Layer über Postgres?

00:15:49.360 --> 00:15:51.300
Klingt ja spannend. Also es klingt auch so, als könnte man das

00:15:51.300 --> 00:15:52.420
mit Fast-IP benutzen.

00:15:52.740 --> 00:15:55.040
Ja, die haben auch,

00:15:55.320 --> 00:15:57.100
also die Leute, die das gemacht haben,

00:15:57.280 --> 00:15:59.200
das sind bekannte Leute, das ist nicht so,

00:15:59.260 --> 00:16:01.120
dass das irgendwie aus dem Nichts kommt,

00:16:01.340 --> 00:16:01.600
sondern

00:16:01.600 --> 00:16:05.480
der CEO

00:16:05.480 --> 00:16:07.000
von HDB ist dann auch eine Firma,

00:16:07.440 --> 00:16:09.360
das macht das Ganze wieder so ein bisschen, ich weiß nicht genau,

00:16:09.360 --> 00:16:11.220
die machen halt vor allen Dingen, die haben viel Consulting gemacht

00:16:11.220 --> 00:16:12.760
und haben halt viele Probleme gesehen auch,

00:16:13.380 --> 00:16:15.100
die man halt

00:16:15.100 --> 00:16:15.980
normalerweise so hat.

00:16:18.120 --> 00:16:18.680
Ja, der

00:16:18.680 --> 00:16:21.700
wie heißt der, Jure Selin

00:16:21.700 --> 00:16:24.800
der hat auch

00:16:24.800 --> 00:16:26.300
an den

00:16:26.300 --> 00:16:28.700
Peps zu

00:16:28.700 --> 00:16:31.760
Async Await diese ganzen Geschichten, da hat er hauptsächlich

00:16:31.760 --> 00:16:33.820
dran mitgeschrieben, also der ist halt

00:16:33.820 --> 00:16:35.880
auch einer der Hauptverantwortlichen

00:16:35.880 --> 00:16:37.380
dafür, dass wir jetzt in Python

00:16:37.380 --> 00:16:39.640
Keywords für Async Await

00:16:39.640 --> 00:16:41.840
also Syntax-Unterstützung

00:16:41.840 --> 00:16:43.160
für diese ganzen Async-Geschichten haben

00:16:43.160 --> 00:16:45.500
und hat da auch

00:16:45.500 --> 00:16:47.520
ganz viele Dinge implementiert und

00:16:47.520 --> 00:16:49.920
Lukas Schlanger hat

00:16:49.920 --> 00:16:51.660
irgendwie für RGB auch gearbeitet schon

00:16:51.660 --> 00:16:53.920
und ja, es ist alles

00:16:53.920 --> 00:16:55.040
typisiert, genau, das ist auch sowas.

00:16:55.240 --> 00:16:56.460
Den letzten Namen hatte ich jetzt auch noch nicht gehört.

00:16:57.600 --> 00:16:59.880
Lukas? Der Release-Manager von Python

00:16:59.880 --> 00:17:01.640
für 3.8, 3.9, 3.10.

00:17:01.780 --> 00:17:03.780
Ah, okay. Nee, nicht für 3.10, nicht Quatsch.

00:17:03.940 --> 00:17:04.280
Das ist Unsinn.

00:17:05.320 --> 00:17:07.580
Oder vielleicht noch sogar früher,

00:17:07.640 --> 00:17:08.420
ich weiß es gar nicht mehr genau.

00:17:09.340 --> 00:17:11.520
Und der, ja, auch ganz einer,

00:17:12.040 --> 00:17:12.960
der hat ganz viel zu

00:17:12.960 --> 00:17:15.640
Type-Annotation-Geschichten gemacht, der hat Black geschrieben,

00:17:15.780 --> 00:17:15.920
genau.

00:17:17.520 --> 00:17:19.580
naja, also auch

00:17:19.580 --> 00:17:20.380
sehr bekannte

00:17:20.380 --> 00:17:23.720
Typ da und

00:17:23.720 --> 00:17:25.320
ja, genau, der hatte

00:17:25.320 --> 00:17:27.860
und Async.io hat halt mit halt auch

00:17:27.860 --> 00:17:29.060
viel zu tun und

00:17:29.060 --> 00:17:31.900
das ist alles, die haben auch, genau, die haben

00:17:31.900 --> 00:17:32.100
auch

00:17:32.100 --> 00:17:35.940
Async.pg geschrieben, das ist halt

00:17:35.940 --> 00:17:38.020
die schnellste Postgres-Artenanbindung

00:17:38.020 --> 00:17:39.720
sozusagen, die es so gibt.

00:17:40.700 --> 00:17:42.000
Ist auch ein ganz tolles Projekt,

00:17:42.180 --> 00:17:43.480
also muss man sich, ja,

00:17:43.880 --> 00:17:45.820
dann haben sie, genau, haben sie

00:17:45.820 --> 00:17:47.860
UV-Loop geschrieben, also das Ding, was halt

00:17:47.860 --> 00:17:51.800
unter UV-Corn und so

00:17:51.800 --> 00:17:52.260
drunter liegt.

00:17:53.480 --> 00:17:56.260
Also eine schnelle Async-IO-Implementation,

00:17:56.620 --> 00:17:57.940
die in der Standardbibliothek ist ja sozusagen

00:17:57.940 --> 00:17:59.820
nur eine Referenz-Implementation, aber die ist halt

00:17:59.820 --> 00:18:01.800
nicht schnell. Und sie haben halt eine schnelle

00:18:01.800 --> 00:18:03.820
Version geschrieben, also ganz viel der

00:18:03.820 --> 00:18:05.840
Basis-Infrastruktur, die man so, kommt da auch aus

00:18:05.840 --> 00:18:07.860
der Ecke schon. Insofern, das

00:18:07.860 --> 00:18:09.080
sind schon Leute, die wissen, was sie da tun.

00:18:09.980 --> 00:18:11.820
Dann darf man auch ein bisschen Werbung für seine Projekte machen.

00:18:12.240 --> 00:18:13.880
Genau, wobei, ja, Firma ist natürlich

00:18:14.760 --> 00:18:15.820
Was uns ja zur Werbung bringt.

00:18:16.580 --> 00:18:17.960
Moment, wir sind noch nicht mit den News durch.

00:18:17.960 --> 00:18:18.840
Wir sind noch nicht mit den News durch.

00:18:19.400 --> 00:18:22.040
Achso, was Geheimes, das ich noch gar nicht weiß.

00:18:23.680 --> 00:18:24.000
Also

00:18:24.000 --> 00:18:25.940
einen Punkt noch, genau, ich habe wieder Podcast

00:18:25.940 --> 00:18:27.680
gehört, Problemierbar hat jetzt auch was über

00:18:27.680 --> 00:18:29.620
letzte Episode, das war

00:18:29.620 --> 00:18:31.120
Laravel, PHP,

00:18:32.040 --> 00:18:33.440
Livewire,

00:18:34.100 --> 00:18:35.760
das fand ich auch ganz interessant, weil immer so diese

00:18:35.760 --> 00:18:37.920
Verbindungen finde ich immer interessant, weil die vielleicht nicht so

00:18:37.920 --> 00:18:39.680
klar sind oder mir nicht so klar waren

00:18:39.680 --> 00:18:41.300
und wenn man das dann weiß, dann

00:18:41.300 --> 00:18:43.460
macht das halt das alles schon mal ein bisschen

00:18:43.460 --> 00:18:45.160
verständlicher, nämlich

00:18:45.160 --> 00:18:48.360
Laravel

00:18:48.360 --> 00:18:49.860
Livewire ist auch tatsächlich

00:18:49.860 --> 00:18:51.240
inspiriert von Phoenix Liveview.

00:18:53.040 --> 00:18:54.020
Ist aber auch schon ein bisschen älter,

00:18:54.120 --> 00:18:55.920
das ist von 2019. Ich hätte das jetzt gedacht, dass es

00:18:55.920 --> 00:18:58.020
jünger ist, aber das ist auch schon relativ lange quasi dabei.

00:18:58.220 --> 00:18:59.880
Also bei diesem Trend, die Dinge jetzt wieder

00:18:59.880 --> 00:19:01.780
vom Server aus zu machen. Und der

00:19:01.780 --> 00:19:03.740
Autor von Livewire ist der gleiche wie der von

00:19:03.740 --> 00:19:05.460
Alpine.js. Das ist halt, wie heißt der?

00:19:05.600 --> 00:19:05.920
Caleb.

00:19:08.180 --> 00:19:09.600
Habe ich jetzt den Namen vergessen, aber

00:19:09.600 --> 00:19:10.880
irgendwas mit P.

00:19:11.840 --> 00:19:13.380
Und Portio, oder

00:19:13.380 --> 00:19:15.140
wieso? Und

00:19:15.140 --> 00:19:17.640
genau, der hat AlpineJS gebaut und halt aber auch

00:19:17.640 --> 00:19:19.560
LiveWire. Und der wollte

00:19:19.560 --> 00:19:21.720
eigentlich ja sowas eben wie PhoenixLiveView

00:19:21.720 --> 00:19:22.940
bauen. Und dann

00:19:22.940 --> 00:19:24.820
ist aber das Problem mit dem PHP,

00:19:25.720 --> 00:19:27.820
naja, also so WebSockets,

00:19:28.200 --> 00:19:29.480
also PhoenixLiveView macht das ja über

00:19:29.480 --> 00:19:31.460
WebSockets. Das geht halt mit PHP

00:19:31.460 --> 00:19:33.720
nicht so richtig, weil du hast halt den Async-Teil

00:19:33.720 --> 00:19:35.440
in PHP nicht. Also gibt's jetzt

00:19:35.440 --> 00:19:37.980
auch seit PHP 8.1,

00:19:38.120 --> 00:19:39.480
das ja auch vor ein paar Monaten rausgekommen ist.

00:19:40.120 --> 00:19:41.580
Aber es gibt

00:19:41.580 --> 00:19:43.460
keine Infrastruktur so richtig dafür und die ganzen

00:19:43.460 --> 00:19:45.440
Russer können das nicht und so. Das heißt,

00:19:45.960 --> 00:19:47.500
quasi eine Verbindung offen

00:19:47.500 --> 00:19:49.420
halten vom Server aus ist in

00:19:49.420 --> 00:19:51.500
PHP sehr, sehr schwierig. Das geht eigentlich gar nicht richtig.

00:19:51.880 --> 00:19:53.480
Und dann hat er halt angefangen nachzudenken,

00:19:53.580 --> 00:19:55.420
so okay, ja Mist, mit WebSocket

00:19:55.420 --> 00:19:57.460
das wird irgendwie nicht funktionieren. Wie kann man das

00:19:57.460 --> 00:19:58.960
denn sonst machen? Und die machen das,

00:20:00.040 --> 00:20:01.060
der macht das auch alles über

00:20:01.060 --> 00:20:03.360
AJAX-Calls und Pollen

00:20:03.360 --> 00:20:05.440
und, ja, sie

00:20:05.440 --> 00:20:07.340
machen so ein bisschen komplizierte Dinge darüber, dass sie

00:20:07.340 --> 00:20:09.180
halt immer alles mit übertragen, wenn sobald

00:20:09.180 --> 00:20:10.740
irgendwie ein AJAX-Call gemacht wird. Aber

00:20:10.740 --> 00:20:13.520
was ich daran cool finde, ist, dass das überhaupt geht

00:20:13.520 --> 00:20:15.420
und dass man den Websocket gar nicht so

00:20:15.420 --> 00:20:17.420
unbedingt braucht. Also das zeigt das

00:20:17.420 --> 00:20:19.360
auf jeden Fall irgendwie. Man kann halt sehr viel machen,

00:20:19.560 --> 00:20:21.400
ohne unbedingt einen Websocket haben zu müssen

00:20:21.400 --> 00:20:22.660
und das ist eigentlich auch sehr nett, weil

00:20:22.660 --> 00:20:25.540
tatsächlich, so Websocket

00:20:25.540 --> 00:20:27.320
wird es wahrscheinlich in Django ohne

00:20:27.320 --> 00:20:29.580
Django-Channels-Anstützung oder so auch wahrscheinlich nie geben.

00:20:30.520 --> 00:20:31.180
Und daher,

00:20:31.500 --> 00:20:33.560
aber offenbar scheint man

00:20:33.560 --> 00:20:34.580
braucht es auch nicht unbedingt.

00:20:35.120 --> 00:20:37.280
Das ist interessant, da können wir vielleicht gleich nochmal drauf eingehen und sagen,

00:20:37.560 --> 00:20:39.320
warum oder was FastAPI

00:20:39.320 --> 00:20:40.940
Genau, aber mit Fast-TP

00:20:40.940 --> 00:20:43.020
könnte man das wahrscheinlich sehr gut machen.

00:20:43.480 --> 00:20:43.760
Genau.

00:20:44.700 --> 00:20:46.320
Ja, das war's eigentlich.

00:20:46.980 --> 00:20:48.920
Ich glaube, das probiere ich

00:20:48.920 --> 00:20:51.200
nächstes Mal aus. Habe ich auf Twitter gesehen.

00:20:51.400 --> 00:20:52.840
Dachte ich, kann ich hier auch mal anbringen.

00:20:53.500 --> 00:20:54.280
Wenn jemand anders das auch

00:20:54.280 --> 00:20:56.340
Twitter hat, hat jemand

00:20:56.340 --> 00:20:58.080
irgendwie geschrieben.

00:20:59.860 --> 00:21:01.240
Jetzt war ich beim Zahnarzt und da hat er

00:21:01.240 --> 00:21:01.640
irgendwie

00:21:01.640 --> 00:21:05.280
wurde gerückt, beziehungsweise

00:21:05.280 --> 00:21:06.820
Moment, warte, gerade dein Zahnarzt

00:21:07.400 --> 00:21:08.020
Okay, nochmal.

00:21:09.320 --> 00:21:11.740
Nicht ich, ich hab nur gelesen, ich hab es auf Twitter gelesen.

00:21:12.860 --> 00:21:32.180
Ja gut, da meint jemand dann, ja, also manchmal fühlt man sich ja so ausgeliefert, wenn man so beim Zahnarzt sitzt, ne, und dann kriegt man auch noch irgendwie so harsche Ansagen wie irgendwie, benutzen Sie eine Zahnseide, ja, Mund auf und dann so, was ist das denn hier, irgendwie, benutzen Sie eigentlich Zahnseide, warum nicht, macht das doch mal bitte häufiger.

00:21:32.620 --> 00:21:43.940
Und der meinte dann so, ja, ich habe dann, also nachdem ich diese Zahnseide-Geschichte darauf so hingewiesen worden bin, habe ich dann gefragt, ja, wie sieht es eigentlich bei Ihnen aus, machen Sie Backups?

00:21:45.900 --> 00:21:52.620
Und prüfen Sie die auch, ob Sie die ab und zu mal einspielen, ob das überhaupt geht, also wäre schon gut, wenn man das macht, ansonsten, ja.

00:21:52.720 --> 00:21:54.740
Das war eine Geschichte, habe ich auch irgendwo im Talk gesehen.

00:21:54.860 --> 00:21:55.280
Kein Mitleid.

00:21:55.800 --> 00:21:56.580
Kongress, glaube ich sogar.

00:21:57.940 --> 00:21:59.820
Schön, muss ich mir merken, muss ich auch mal versuchen

00:21:59.820 --> 00:22:01.840
anzubringen. Ja, habe ich mir auch fest vorgenommen,

00:22:01.940 --> 00:22:03.780
wenn ich es in Zahlen suche, wenn dann die Frage

00:22:03.780 --> 00:22:05.060
kommt, und machen sie eigentlich ihre Backups?

00:22:05.860 --> 00:22:07.920
Genau, ja. So, aber jetzt glaube ich,

00:22:07.980 --> 00:22:09.720
dann sind wir mit den News durch. Ja, okay.

00:22:10.040 --> 00:22:11.820
Ja, okay. Dann wollen wir jetzt wieder

00:22:11.820 --> 00:22:13.840
Werbung schalten, also wir wollen nicht, aber wir müssen natürlich.

00:22:14.340 --> 00:22:14.540
Ja.

00:22:15.900 --> 00:22:17.700
Und wieder mit freundlicher Unterstützung heute von

00:22:17.700 --> 00:22:19.160
unserem Werbepartner NordVPN.

00:22:20.940 --> 00:22:22.020
Gibt es was Neues?

00:22:22.020 --> 00:22:24.680
Ja, ein Exklusiv-Deal

00:22:24.680 --> 00:22:27.420
und ein Geschenk obendrauf zum NordVPN-Geburtstag.

00:22:28.320 --> 00:22:31.280
Und dann könnt ihr auf den NordVPN-Python-Podcast gehen

00:22:31.280 --> 00:22:33.440
und euch den Deal da sichern.

00:22:35.040 --> 00:22:37.800
Und da gibt es auch so eine 30-Tage-Geld-Zurück-Garantie.

00:22:38.120 --> 00:22:38.360
Genau.

00:22:38.400 --> 00:22:39.240
Hatten wir ja auch letztes Mal schon.

00:22:39.960 --> 00:22:41.360
Ja, genau.

00:22:41.600 --> 00:22:44.000
Ich weiß nicht, benutzt du VPNs irgendwie?

00:22:44.700 --> 00:22:45.640
Relativ selten, aber ich glaube,

00:22:45.720 --> 00:22:47.640
zum Geoblocking umgehen ist das gar nicht so schlecht.

00:22:47.640 --> 00:22:48.520
Ist wahrscheinlich so schlecht, ja.

00:22:48.560 --> 00:22:49.740
Wenn du Streaming haben möchtest

00:22:49.740 --> 00:22:51.780
und möchtest du irgendwie das Streaming-Programm von zu Hause gucken,

00:22:51.780 --> 00:22:52.960
wenn du im Urlaub bist oder so,

00:22:53.900 --> 00:22:54.900
ist das doch gar nicht so unnützlich.

00:22:54.900 --> 00:22:56.800
Genau, also diese

00:22:56.800 --> 00:22:58.820
Geoblocking-Geschichten oder halt auch eben

00:22:58.820 --> 00:23:01.020
wenn man sicherstellen möchte,

00:23:01.200 --> 00:23:02.940
dass man genug Durchsatz hat

00:23:02.940 --> 00:23:04.820
und das irgendwie vom lokalen ISP

00:23:04.820 --> 00:23:06.840
vielleicht nicht unbedingt zu erwarten ist,

00:23:06.980 --> 00:23:08.620
dann kann das durchaus

00:23:08.620 --> 00:23:10.100
hilfreich sein.

00:23:10.840 --> 00:23:12.760
Ja, also genau, einfach da

00:23:12.760 --> 00:23:14.880
auf https.nordvpn.com

00:23:14.880 --> 00:23:16.860
slash pythonpodcast gehen und mal

00:23:16.860 --> 00:23:17.980
angucken, was da so von dir gibt.

00:23:18.740 --> 00:23:20.400
Genau, damit würdet ihr uns unterstützen.

00:23:21.880 --> 00:23:22.100
Jo.

00:23:22.520 --> 00:23:24.280
Dann machen wir weiter im Programm

00:23:24.280 --> 00:23:25.900
und gehen zu FastAPI.

00:23:26.200 --> 00:23:27.540
Ja, FastAPI, das Thema.

00:23:28.520 --> 00:23:29.860
Genau, das Thema unserer Folge.

00:23:30.840 --> 00:23:32.260
Was ist denn FastAPI überhaupt?

00:23:32.500 --> 00:23:34.220
Also es ist ein weiteres Web-Framework, ein neues

00:23:34.220 --> 00:23:35.840
Web-Framework und

00:23:35.840 --> 00:23:38.220
ersetzt, oder was heißt ersetzt, also ergänzt

00:23:38.220 --> 00:23:40.060
vielleicht so ein bisschen die Welt, die es in Python dazu gibt.

00:23:40.540 --> 00:23:41.820
Ja, das ist sehr interessant.

00:23:42.220 --> 00:23:43.620
Also genau, also eigentlich

00:23:43.620 --> 00:23:46.180
die meisten anderen Sachen sind ja sehr alt, also Flask ist

00:23:46.180 --> 00:23:48.100
sehr alt, Django ist sehr alt.

00:23:48.300 --> 00:23:49.780
Also wenn ich das so richtig verstanden habe,

00:23:50.300 --> 00:23:52.060
ist FastAPI quasi das neue Flask, das setzt

00:23:52.060 --> 00:23:53.600
du das so ein bisschen, was man da gemacht hat?

00:23:53.800 --> 00:23:55.940
Ja, also es ist auf jeden Fall eher, also es kommt

00:23:55.940 --> 00:23:58.020
darauf an, aber also auf jeden Fall ist es eher

00:23:58.020 --> 00:24:00.200
vergleichbar

00:24:00.200 --> 00:24:01.760
mit Flask quasi, was die so

00:24:01.760 --> 00:24:03.960
grundsätzliche, den grundsätzlichen

00:24:03.960 --> 00:24:05.060
Ansatz angeht, aber

00:24:05.060 --> 00:24:07.800
ja, es ist halt auch irgendwie wieder so ein bisschen anders

00:24:07.800 --> 00:24:09.880
insofern, aber es ist einfach historisch, man hatte

00:24:09.880 --> 00:24:12.040
so eine Explosion von irgendwie unterschiedlichen

00:24:12.040 --> 00:24:13.880
Webframework-Projekten

00:24:13.880 --> 00:24:15.880
irgendwann halt um diesen Dreh, wo die alle entstanden

00:24:15.880 --> 00:24:17.940
sind, 2004, 5, 6, irgendwie so.

00:24:18.040 --> 00:24:19.260
Pyramid ist auch aus der Zeit, oder?

00:24:20.200 --> 00:24:21.800
Das weiß ich nicht, es kann sein, dass das auch

00:24:21.800 --> 00:24:23.660
später, weil ich weiß es nicht so genau

00:24:23.660 --> 00:24:25.560
bei Pyramid, aber so viele

00:24:25.560 --> 00:24:27.620
Web-Frameworks

00:24:27.620 --> 00:24:28.680
kommen halt aus der Zeit.

00:24:29.660 --> 00:24:31.360
Oder da gab es halt ganz, ganz viele. Da gab es

00:24:31.360 --> 00:24:33.360
so eine Zeit, wo alle zwei Monate

00:24:33.360 --> 00:24:35.420
irgendwie was Neues rausgekommen ist.

00:24:35.640 --> 00:24:37.160
So wie jetzt bei JavaScript.

00:24:39.740 --> 00:24:41.080
Und ja,

00:24:41.300 --> 00:24:42.520
die meisten sind wieder verschwunden.

00:24:43.280 --> 00:24:45.620
Ich weiß nicht, was gab es damals? Also TurboGears

00:24:45.620 --> 00:24:46.620
und ach, was ist der Teufel?

00:24:47.460 --> 00:24:48.760
Naja, das meiste ist halt alles wieder

00:24:48.760 --> 00:24:51.300
verschwunden und übrig geblieben sind

00:24:51.300 --> 00:24:52.720
im Grunde Flask und Django.

00:24:53.960 --> 00:24:55.280
Und die repräsentieren ja auch so

00:24:55.280 --> 00:24:56.100
irgendwie

00:24:56.100 --> 00:24:58.200
gegensätzliche,

00:24:58.960 --> 00:25:00.980
die Enden von irgendwie so, also entweder

00:25:00.980 --> 00:25:02.920
Batteries included oder halt irgendwie sehr

00:25:02.920 --> 00:25:05.300
wenig dabei, aber dafür sehr flexibel.

00:25:06.460 --> 00:25:07.220
Ja, genau.

00:25:07.340 --> 00:25:09.040
Also der Unterschied auch mit den URMs hatten wir eben schon

00:25:09.040 --> 00:25:10.140
gesprochen, dass halt Django

00:25:10.140 --> 00:25:13.400
den URM mitliefert

00:25:13.400 --> 00:25:15.400
und dass du bei Flask meistens die Core-Icony nimmst.

00:25:15.720 --> 00:25:17.300
Ja, aber kannst halt auch irgendwas anderes

00:25:17.300 --> 00:25:18.600
nehmen, also bist du halt nicht...

00:25:18.600 --> 00:25:20.900
Hast da keine feste Bindung und...

00:25:20.900 --> 00:25:23.020
Ja, aber irgendwie seit ein paar Jahren

00:25:23.020 --> 00:25:24.540
gibt es halt sowas Ähnliches wieder.

00:25:24.620 --> 00:25:26.740
Es gibt wieder viele neue Web-Frameworks.

00:25:27.740 --> 00:25:32.300
Also was vor allen Dingen an der neuen Syntax bei Python ist,

00:25:32.340 --> 00:25:34.220
liegt halt an der Sprache, dass sie sich geändert hat.

00:25:34.240 --> 00:25:35.900
Genau, an den Typefilms, die es dazu gekommen sind.

00:25:36.280 --> 00:25:37.480
Typefilms, Async.io.

00:25:38.540 --> 00:25:39.460
Genau, das ist Async.

00:25:39.740 --> 00:25:42.340
Und was unter FastAPI drunter liegt, ist ja Starlet.

00:25:43.460 --> 00:25:44.060
Starlet, genau.

00:25:44.420 --> 00:25:45.560
Ja, vielleicht kann man das so ein bisschen

00:25:45.560 --> 00:25:48.560
in die ganze Historie so ein bisschen kurz erzählen.

00:25:48.860 --> 00:25:52.140
eben, wir sehen so Async-Web-Frameworks

00:25:52.140 --> 00:25:53.680
jetzt wieder ganz viele, so Scenic,

00:25:53.960 --> 00:25:56.000
Falcon, FastAPI,

00:25:56.800 --> 00:25:57.140
Quad,

00:25:58.360 --> 00:26:00.080
also jetzt gibt es auch wieder ganz viele

00:26:00.080 --> 00:26:00.980
und

00:26:00.980 --> 00:26:04.100
der Autor von

00:26:04.100 --> 00:26:05.940
FastAPI hat sich auch viele angeguckt

00:26:05.940 --> 00:26:07.100
und hat das vorher schon...

00:26:07.100 --> 00:26:08.540
Sebastian Ramirez, also Tiandolo,

00:26:08.900 --> 00:26:11.360
der viele andere coole Sachen noch macht nebenbei,

00:26:11.440 --> 00:26:13.820
neben FastAPI. Also Typer ist auch

00:26:13.820 --> 00:26:15.740
sehr ähnlich und dann gibt es auch SQL-Model,

00:26:15.800 --> 00:26:17.220
wenn man das irgendwie mit dem OEM machen möchte.

00:26:17.900 --> 00:26:19.940
Aber vielleicht erstmal nochmal, was du sagen wolltest.

00:26:19.960 --> 00:26:21.600
Genau, der hat viel

00:26:21.600 --> 00:26:23.520
Django gemacht oder viel mit anderen,

00:26:23.980 --> 00:26:24.980
der hat auch viel APIs gemacht

00:26:24.980 --> 00:26:27.820
und war auf der Suche nach einem

00:26:27.820 --> 00:26:30.000
Framework, das halt irgendwie bessere

00:26:30.000 --> 00:26:32.060
Entwickler-Experience

00:26:32.060 --> 00:26:33.780
irgendwie bietet. Also Django REST

00:26:33.780 --> 00:26:34.360
Framework oder so.

00:26:35.840 --> 00:26:37.880
Er fand das jetzt nicht schlecht, er fand das schon gut.

00:26:38.060 --> 00:26:39.780
Also er hat sich halt auch, also die

00:26:39.780 --> 00:26:42.020
Browsable API bei Django REST

00:26:42.020 --> 00:26:43.720
Framework, es war halt auch eine wesentliche

00:26:43.720 --> 00:26:45.480
Inspiration für das, was er dann halt da gemacht hat.

00:26:47.060 --> 00:26:47.720
Und fand

00:26:47.720 --> 00:26:49.240
das schon gut, aber

00:26:49.240 --> 00:26:51.960
es war halt nicht alles dabei,

00:26:52.060 --> 00:26:53.460
was er gerne gehabt hätte und

00:26:53.460 --> 00:26:55.140
ja,

00:26:55.420 --> 00:26:58.060
dann war aber ein Ding

00:26:58.060 --> 00:26:59.980
fast perfekt. Also er hat sich

00:26:59.980 --> 00:27:01.520
zum Beispiel, Django Rest Framework hat er sich viele Sachen

00:27:01.520 --> 00:27:03.660
angeschaut, die er gut fand, aber es war halt nicht.

00:27:04.080 --> 00:27:05.980
Dann hat er sich Marshmallow angeguckt, bei Flask

00:27:05.980 --> 00:27:07.720
fand er auch gut, diese ganze

00:27:07.720 --> 00:27:09.980
Validierungsgeschichten und Serialisierung

00:27:09.980 --> 00:27:12.040
von ganzen Objekt-Hierarchien

00:27:12.040 --> 00:27:13.880
und so, aber das ist halt

00:27:13.880 --> 00:27:16.200
auch noch nicht so

00:27:16.200 --> 00:27:18.660
hundertprozentig hat das das getroffen, was er

00:27:18.660 --> 00:27:20.080
irgendwie haben wollte. Und

00:27:20.080 --> 00:27:22.660
es gab noch ein paar andere Sachen, die er sich auch angeguckt hat.

00:27:24.760 --> 00:27:26.660
dann

00:27:26.660 --> 00:27:27.940
hat er

00:27:27.940 --> 00:27:30.560
sich dann der Autor von

00:27:30.560 --> 00:27:32.640
Jungle Rest Framework, Tom Christie, ist ja

00:27:32.640 --> 00:27:34.580
auch so einer, der hat ganz, ganz viele Projekte gemacht.

00:27:36.000 --> 00:27:36.440
Und

00:27:36.440 --> 00:27:38.520
viele Dinge sind auch Basisinfrastruktur für ganz

00:27:38.520 --> 00:27:40.540
viele andere Sachen. Also

00:27:40.540 --> 00:27:42.360
er hat Jungle Rest Framework irgendwann mal geschrieben.

00:27:42.980 --> 00:27:44.620
Dann hat er irgendwann Jungle Rest Framework

00:27:44.620 --> 00:27:46.540
quasi abgegeben oder

00:27:46.540 --> 00:27:47.840
macht es, weil

00:27:47.840 --> 00:27:50.560
ehrlich gesagt ist es auch mehr oder weniger fertig, da ändert sich

00:27:50.560 --> 00:27:52.000
schon seit einigen Jahren nicht mehr viel

00:27:52.000 --> 00:27:54.500
und hat dann

00:27:54.500 --> 00:27:56.460
etwas gemacht, wollte aber schon

00:27:56.460 --> 00:27:58.180
APIs weitermachen und hat dann API-Star

00:27:58.180 --> 00:28:00.020
mal ins Leben gerufen

00:28:00.020 --> 00:28:02.300
und die Idee dabei war halt auch

00:28:02.300 --> 00:28:04.100
so ein bisschen irgendwie

00:28:04.100 --> 00:28:06.680
das so zu machen, dass es halt von der Kommandozeile

00:28:06.680 --> 00:28:08.400
ausgeht plus irgendwie im Web,

00:28:08.400 --> 00:28:10.300
dass es halt alles das gleiche Interface hat mit Typen

00:28:10.300 --> 00:28:12.280
dran und nativ Async

00:28:12.280 --> 00:28:14.000
und all sowas und

00:28:14.000 --> 00:28:15.120
genau

00:28:15.120 --> 00:28:18.480
Sebastian Ramirez meinte dann auch so,

00:28:18.540 --> 00:28:20.540
ja, das war eigentlich schon genau das, was ich gerne gehabt hätte.

00:28:20.980 --> 00:28:22.160
Und dann hat er aber

00:28:22.160 --> 00:28:24.680
Tom Christie irgendwie angefangen, Starlet zu entwickeln.

00:28:25.880 --> 00:28:26.060
Also

00:28:26.060 --> 00:28:28.120
auch ein Web-Framework, aber sehr

00:28:28.120 --> 00:28:30.460
Basis-Infrastruktur-mäßig, sehr

00:28:30.460 --> 00:28:32.460
auf Async fokussiert und gar nicht mehr unbedingt

00:28:32.460 --> 00:28:34.720
im API-Bereich. Und AP Star

00:28:34.720 --> 00:28:36.600
ist dann eher zu so einem Schema-

00:28:36.600 --> 00:28:37.720
Validierungstool geworden.

00:28:38.680 --> 00:28:40.400
Und das heißt, das Ding, was

00:28:40.400 --> 00:28:42.500
er am besten fand eigentlich oder am besten zu seinen

00:28:42.500 --> 00:28:44.660
Anforderungen passte, hat plötzlich

00:28:44.660 --> 00:28:46.420
den Fokus gewechselt und was anderes gemacht.

00:28:46.600 --> 00:28:48.540
Und dann dachte er so, oh Mist, jetzt gibt's

00:28:48.540 --> 00:28:49.640
nix mehr. Jetzt muss ich irgendwie,

00:28:50.040 --> 00:28:52.460
ich wollte es wirklich vermeiden, aber jetzt muss ich es vielleicht doch selber

00:28:52.460 --> 00:28:54.300
in ein Webfile beschreiben. Und dann hat er das halt

00:28:54.300 --> 00:28:56.400
gemacht und dabei ist FastAPI

00:28:56.400 --> 00:28:58.480
rausgekommen. Und dabei hat er, glaube ich, relativ viel

00:28:58.480 --> 00:29:00.800
auch noch an Pidentic mit rumgewerkelt,

00:29:00.920 --> 00:29:02.620
wenn ich das so gesehen habe. Ja, genau. Pidentic

00:29:02.620 --> 00:29:04.560
ist halt eine der Geschichten,

00:29:04.660 --> 00:29:06.500
die sonst nirgendwo drin sind, die halt da mit

00:29:06.500 --> 00:29:08.600
dabei sind. Genau, weil halt so Erweiterung

00:29:08.600 --> 00:29:10.200
von Data Classes halt, dass man so ein bisschen

00:29:10.200 --> 00:29:12.480
Typen und Modelle hat,

00:29:12.500 --> 00:29:14.440
dann direkt mit Validierung und so. Aber darauf

00:29:14.440 --> 00:29:16.300
gehen wir gleich ein bisschen genauer ein, würde ich sagen.

00:29:16.860 --> 00:29:18.320
Also wir haben gesagt, das ist jetzt ASCII,

00:29:18.400 --> 00:29:20.060
hast du gesagt, das ist Async.

00:29:21.500 --> 00:29:22.880
Was ist denn da eine ASCII-Applikation

00:29:22.880 --> 00:29:23.500
überhaupt nochmal?

00:29:26.220 --> 00:29:26.840
Die immer

00:29:26.840 --> 00:29:27.360
die Fragen.

00:29:28.500 --> 00:29:29.220
Ja, also

00:29:29.220 --> 00:29:32.800
ganz lange der Standard für die Kommunikation

00:29:32.800 --> 00:29:34.140
zwischen irgendwie dem

00:29:34.140 --> 00:29:36.820
Applikationsserver, der halt

00:29:36.820 --> 00:29:38.580
irgendwie tatsächlich Requests annimmt und dann

00:29:38.580 --> 00:29:40.700
irgendwie, also die Kommunikation mit dem Browser

00:29:40.700 --> 00:29:42.540
tatsächlich macht. Das machst du ja normalerweise

00:29:42.540 --> 00:29:44.820
nicht, wenn man irgendwie eine Web-Applikation

00:29:44.820 --> 00:29:45.560
schreibt, sondern

00:29:45.560 --> 00:29:47.580
das nennt sich

00:29:47.580 --> 00:29:50.440
WSGI oder WSGI oder

00:29:50.440 --> 00:29:52.440
weiß ich nicht, wie man das am besten ausspricht, Micro-Whisky.

00:29:52.680 --> 00:29:53.880
Ist das nicht dasselbe wie

00:29:53.880 --> 00:29:55.660
What you see is what you get, Whisky?

00:29:56.440 --> 00:29:56.560
Ja.

00:29:58.360 --> 00:30:00.320
Das Ding,

00:30:01.160 --> 00:30:02.480
das ist auch super

00:30:02.480 --> 00:30:04.080
einfach. Also eigentlich ist das alles total trivial.

00:30:04.440 --> 00:30:06.340
Aber das Gute, dass es halt ein Standard ist,

00:30:06.800 --> 00:30:08.280
dass es mehr oder weniger eine Funktion,

00:30:08.680 --> 00:30:10.440
die man halt implementieren muss. Und wenn man das

00:30:10.440 --> 00:30:12.580
tut, ist man halt ein WSGI

00:30:12.580 --> 00:30:14.500
Server. So, das ist der Grund,

00:30:14.580 --> 00:30:16.340
warum man da jetzt nochmal irgendwas anderes brauchte.

00:30:16.740 --> 00:30:18.240
Also der kriegt im Wesentlichen ein Request,

00:30:18.320 --> 00:30:20.100
kommt rein, Response geht raus. Das ist es eigentlich.

00:30:20.260 --> 00:30:22.300
Das ist was man klassisch aus HTTP kennt.

00:30:23.460 --> 00:30:23.860
Ja,

00:30:24.340 --> 00:30:25.340
genau, aber

00:30:25.340 --> 00:30:27.780
genau. So, jetzt ist aber

00:30:27.780 --> 00:30:30.400
ja, Dinge haben sich

00:30:30.400 --> 00:30:32.340
geändert und man will jetzt eventuell auch

00:30:32.340 --> 00:30:34.020
solche Dinge machen können wie WebSockets

00:30:34.020 --> 00:30:36.280
oder halt, man hat halt eventuell langlaufende

00:30:36.280 --> 00:30:36.780
Requests.

00:30:38.600 --> 00:30:40.060
Und wenn man viel parallel machen,

00:30:40.200 --> 00:30:42.460
dieses Async-Zeugs. Genau, man möchte halt

00:30:42.460 --> 00:30:44.600
nicht nur einmal eine Response zurückgeben

00:30:44.600 --> 00:30:46.480
können, sondern vielleicht halt auch irgendwie

00:30:46.480 --> 00:30:48.860
wieder was zurückbekommen,

00:30:49.040 --> 00:30:50.580
dann wieder was rausreichen und

00:30:50.580 --> 00:30:52.460
mit Co-Routinen geht das ja super eigentlich.

00:30:53.420 --> 00:30:54.520
Und genau,

00:30:54.660 --> 00:30:56.500
dann gibt es, aber es gab

00:30:56.500 --> 00:30:57.560
keinen Standard und dann

00:30:57.560 --> 00:31:00.520
irgendwann, glaube ich, Andrew

00:31:00.520 --> 00:31:02.380
Godwin, auch bekannter Django

00:31:02.380 --> 00:31:04.400
Entwickler, der hat

00:31:04.400 --> 00:31:06.200
das Migrations-Ding gebaut und so.

00:31:08.580 --> 00:31:10.180
Der hat dann irgendwann in diesen

00:31:10.180 --> 00:31:11.640
ASGI-Standard geschrieben,

00:31:12.060 --> 00:31:14.580
um halt das dann halt

00:31:14.580 --> 00:31:16.540
möglich zu machen, dass man da halt einen Standard hat für alle.

00:31:17.180 --> 00:31:18.520
Und da ist es im Grunde so,

00:31:18.600 --> 00:31:20.520
es ist auch wieder super minimal, aber

00:31:20.520 --> 00:31:22.600
man hat halt auch eine Funktion, die man implementieren muss

00:31:22.600 --> 00:31:24.580
und die kriegt im Grunde eine Receive- und eine Send-Funktion

00:31:24.580 --> 00:31:26.300
und halt, ich weiß gar nicht, muss ich nachgucken.

00:31:26.400 --> 00:31:28.180
Und Scope. Und Scope, genau.

00:31:29.040 --> 00:31:29.760
Ja, aber

00:31:29.760 --> 00:31:32.560
da geht das halt. Da kannst du halt dann auch wieder Sachen

00:31:32.560 --> 00:31:33.980
nochmal empfangen und

00:31:33.980 --> 00:31:36.280
dann irgendwas machen und dann wieder was rausschicken und

00:31:36.280 --> 00:31:38.680
bist halt nicht in diesem Request-Response-Ding

00:31:38.680 --> 00:31:40.620
so drin.

00:31:41.420 --> 00:31:43.160
Ja, und genau.

00:31:44.440 --> 00:31:45.460
Ja, und FastAPI

00:31:45.460 --> 00:31:46.440
ist halt ein SGI-Server.

00:31:46.900 --> 00:31:49.340
Und dann gibt es halt eine gute Implementation

00:31:49.340 --> 00:31:51.100
darunter, das ist UV-Con.

00:31:51.740 --> 00:31:53.240
Also UV-Loop,

00:31:53.400 --> 00:31:55.180
da hatten wir es schon. Also eigentlich ganz

00:31:55.180 --> 00:31:56.360
unten drunter ist LibUV.

00:31:57.020 --> 00:31:59.260
Das ist das Ding, was halt auch unter Node.js drunter liegt.

00:32:00.420 --> 00:32:01.500
Aber ich glaube, da haben wir auch schon

00:32:01.500 --> 00:32:02.760
eine Episode mal drüber gesprochen.

00:32:02.760 --> 00:32:05.280
Ja, vielleicht einmal doch mal kurz erklären, weil nicht alle Leute haben ja alle

00:32:05.280 --> 00:32:07.440
Episoden gehört. Das ist halt eine Bibliothek,

00:32:07.520 --> 00:32:09.400
weg abstrahiert, die dieses

00:32:09.400 --> 00:32:11.480
Betriebssystem, Syscalls, weg abstrahiert,

00:32:11.580 --> 00:32:13.140
die man halt benutzen muss, um halt schnell

00:32:13.140 --> 00:32:15.640
I.O. zu machen.

00:32:16.400 --> 00:32:17.720
Genau. Und das ist halt unterschiedlich

00:32:17.720 --> 00:32:19.100
je nachdem, was man verwendet. Unter Windows

00:32:19.100 --> 00:32:21.840
TCP-Completion-Ports oder was auch immer

00:32:21.840 --> 00:32:22.700
da verwendet, keine Ahnung.

00:32:23.660 --> 00:32:25.220
Unter FreeBSD ist es halt

00:32:25.220 --> 00:32:25.720
KQ

00:32:25.720 --> 00:32:27.360
und

00:32:27.360 --> 00:32:31.020
Linux ist es halt E-Poll

00:32:31.020 --> 00:32:33.600
und das Ding bietet halt

00:32:33.600 --> 00:32:35.580
ein Standard-Interface für all diese Dinge.

00:32:36.340 --> 00:32:38.400
SelectPol, ich weiß nicht, was da noch alles drin ist.

00:32:39.380 --> 00:32:40.860
Und das kann man halt benutzen,

00:32:41.000 --> 00:32:42.700
da muss man sich nicht drum kümmern, auf welchem Betriebssystem

00:32:42.700 --> 00:32:43.280
man läuft und so.

00:32:44.240 --> 00:32:45.940
Und genau, das

00:32:45.940 --> 00:32:48.640
und Node.js hat

00:32:48.640 --> 00:32:49.080
das halt

00:32:49.080 --> 00:32:52.620
relativ, hat diese

00:32:52.620 --> 00:32:54.560
Entwicklung da getrieben, weil die haben das halt dann

00:32:54.560 --> 00:32:56.500
stark verwendet.

00:32:57.580 --> 00:32:58.520
Und ja,

00:32:58.660 --> 00:32:59.560
mit den

00:32:59.560 --> 00:33:02.700
AsyncIO-Primitiv

00:33:02.700 --> 00:33:04.500
Keyword-Geschichten in Python

00:33:04.500 --> 00:33:06.720
bot es sich dann halt ja auch an, da irgendwie sowas

00:33:06.720 --> 00:33:09.000
zu verwenden und da gab es

00:33:09.000 --> 00:33:10.680
halt die schnelle Event-Loop-Implementation mit

00:33:10.680 --> 00:33:13.020
UV-Loop von den Leuten, die jetzt HDB gemacht haben

00:33:13.020 --> 00:33:14.800
und dann so und

00:33:14.800 --> 00:33:16.660
auf UV-Loop drauf sitzt halt

00:33:16.660 --> 00:33:18.580
UV-Corn, also quasi

00:33:18.580 --> 00:33:21.100
so wie G-Unicorn halt als Applikations-

00:33:21.100 --> 00:33:22.280
Server, der dann halt Web-Geschichten macht

00:33:22.280 --> 00:33:24.620
und dann halt UV-Loop nutzt, um halt schnell

00:33:24.620 --> 00:33:26.800
I.O. machen zu können und das ist auch

00:33:26.800 --> 00:33:27.980
wieder ein Projekt von Tom Christie.

00:33:28.560 --> 00:33:30.560
Okay, ja, da sind die Katzen mit dem Schwanz.

00:33:31.040 --> 00:33:31.700
Genau und

00:33:31.700 --> 00:33:35.180
darüber gibt es halt dann nochmal so ein minimales

00:33:35.180 --> 00:33:37.160
Web-Framework, was halt

00:33:37.160 --> 00:33:37.980
dann nochmal die ganzen

00:33:37.980 --> 00:33:40.980
Routing-Request-Response-Geschichten abstrahiert

00:33:40.980 --> 00:33:42.120
und das ist halt dann Starlet.

00:33:43.980 --> 00:33:44.780
Ja, und

00:33:44.780 --> 00:33:46.240
FastAPI benutzt Starlet.

00:33:47.460 --> 00:33:48.760
Und, ja,

00:33:49.420 --> 00:33:49.840
genau.

00:33:50.800 --> 00:33:52.840
Aber die Idee ist im Grunde, viele Sachen zu kombinieren,

00:33:52.960 --> 00:33:55.180
Pydentic zu kombinieren mit Type-Annotationen,

00:33:55.840 --> 00:33:57.400
mit einem

00:33:57.400 --> 00:33:59.180
Dependency-Injection-Geschichte.

00:34:01.200 --> 00:34:02.480
Parameter und sowas.

00:34:03.480 --> 00:34:03.720
Und

00:34:03.720 --> 00:34:06.640
ja, halt Starlet als

00:34:06.640 --> 00:34:08.400
quasi schnell,

00:34:09.300 --> 00:34:10.800
für das schnell unten drunter.

00:34:11.480 --> 00:34:12.300
Und ASGI.

00:34:13.140 --> 00:34:14.920
Und ja, das

00:34:14.920 --> 00:34:16.900
ist eigentlich eine ziemlich coole Kombination

00:34:16.900 --> 00:34:18.520
irgendwie. Man kann jetzt sagen, na gut,

00:34:18.760 --> 00:34:20.960
ich habe mir jetzt den FastAPI-Source-Code

00:34:20.960 --> 00:34:22.080
auch so ein bisschen angeguckt mal.

00:34:23.240 --> 00:34:24.900
Also ganz oft sieht man schon

00:34:24.900 --> 00:34:26.920
so irgendwie, naja, er importiert

00:34:26.920 --> 00:34:28.100
halt Sachen von Starlet und das war's.

00:34:28.560 --> 00:34:31.180
Das ganze WebSocket-Modul in FastAPI.

00:34:31.200 --> 00:34:33.120
ist halt irgendwie vom Starlet-Import-Websocket fertig.

00:34:33.560 --> 00:34:35.000
Ja gut, also abstrahiert halt, ne?

00:34:35.000 --> 00:34:37.040
Und dann einen anderen abgibt vielleicht an ein, zwei Stellen und

00:34:37.040 --> 00:34:39.040
wird halt gut integriert. Genau.

00:34:39.060 --> 00:34:41.380
Das, was man da haben möchte, ja. Und es ist halt, die Dokumentation

00:34:41.380 --> 00:34:43.100
ist halt schön geschrieben und so. Er hat das dann irgendwann mal

00:34:43.100 --> 00:34:44.760
in Reddit, auf irgendeinem

00:34:44.760 --> 00:34:47.160
in einer Reddit-Group oder so angekündigt,

00:34:47.280 --> 00:34:49.080
irgendwie, FastAPI. Und die

00:34:49.080 --> 00:34:50.700
Reaktionen waren da so ein bisschen geteilt.

00:34:51.980 --> 00:34:52.960
Also ich finde das

00:34:52.960 --> 00:34:54.400
super, was er gemacht hat, aber

00:34:54.400 --> 00:34:56.820
auf Reddit wurde dann halt irgendwie

00:34:56.820 --> 00:34:59.520
so, ne? Also diese Dokumentation

00:34:59.520 --> 00:35:01.080
und da sind so viele Emojis und das

00:35:01.080 --> 00:35:02.660
ist alles so mit diesen GIFs.

00:35:02.840 --> 00:35:05.140
Ja, da waren die ganzen, ganz seriösen

00:35:05.140 --> 00:35:07.060
Jungs, die alle die ganze Zeit keinen

00:35:07.060 --> 00:35:09.280
Humor haben und im Keller sitzen, die fanden das überhaupt nicht witzig.

00:35:09.380 --> 00:35:10.700
Die sagen so, das ist so gebraucht,

00:35:10.760 --> 00:35:12.860
war ein Verkäufer-Style, das finde ich nicht gut,

00:35:12.900 --> 00:35:13.640
da lese ich gar nicht weiter.

00:35:14.960 --> 00:35:17.160
Also ich finde das super, weil ich finde die Dokumentation

00:35:17.160 --> 00:35:18.880
tatsächlich sehr eingängig, auch

00:35:18.880 --> 00:35:21.060
für Leute geschrieben, die mit Python noch nicht so viel zu tun

00:35:21.060 --> 00:35:22.900
hatten und gerade mit

00:35:22.900 --> 00:35:24.900
Web-Krams und ich glaube, da gibt es relativ

00:35:24.900 --> 00:35:26.660
gute Hinweise und so Querlings, man kann es wirklich,

00:35:26.820 --> 00:35:29.040
wenn man anfangen möchte, auch mit Web-Frameworks,

00:35:29.040 --> 00:35:30.920
finde ich das gar nicht so schlecht, dass man sich das damit mal

00:35:30.920 --> 00:35:32.980
anguckt und ich glaube gerade für so Einsatzzwecke

00:35:32.980 --> 00:35:34.940
wie man macht eigentlich so Data Science

00:35:34.940 --> 00:35:37.200
oder sowas. Ja, man braucht

00:35:37.200 --> 00:35:38.740
vielleicht gar keine Webseite, sondern halt eher eine

00:35:38.740 --> 00:35:40.920
API oder so, dann ist das halt schon super.

00:35:40.940 --> 00:35:42.760
Ja, und dann liest man das halt durch, man lernt da relativ viel

00:35:42.760 --> 00:35:45.020
und das Tutorial ist echt nett und angenehm

00:35:45.020 --> 00:35:46.860
zu lesen und nimmt einen sehr an die Hand,

00:35:47.040 --> 00:35:48.820
auch wenn es so wirklich ein Graufahrenverkäufer ist.

00:35:48.820 --> 00:35:50.720
Also man muss ja nicht immer einen Neuwagen kaufen,

00:35:50.820 --> 00:35:52.940
das ist ein bisschen teuer und auch aus Sustainability-Gründen

00:35:52.940 --> 00:35:53.960
nicht immer so super.

00:35:55.000 --> 00:35:55.060
Ja.

00:35:57.480 --> 00:35:58.520
Nee, also ja,

00:35:59.420 --> 00:36:00.580
im Grunde ist

00:36:00.580 --> 00:36:03.080
eine wirklich schicke Geschichte

00:36:03.080 --> 00:36:05.480
und überhaupt, ich würde mal sagen, also was daran

00:36:05.480 --> 00:36:06.880
halt neu, also es hat sich ja

00:36:06.880 --> 00:36:09.480
es gibt es erst seit 2019 ja und das ist

00:36:09.480 --> 00:36:11.480
jetzt schon, weiß ich nicht

00:36:11.480 --> 00:36:13.680
sehr, sehr verbreitet, keine Ahnung wie verbreitet

00:36:13.680 --> 00:36:15.600
aber in den entsprechenden Umfragen ist es halt

00:36:15.600 --> 00:36:15.980
irgendwie

00:36:15.980 --> 00:36:19.220
nicht mehr viel hinter Django und Flask

00:36:19.220 --> 00:36:21.500
sondern wie viele Leute verwenden das

00:36:21.500 --> 00:36:23.520
und das

00:36:23.520 --> 00:36:25.520
ich glaube einer der Gründe, warum das

00:36:25.520 --> 00:36:26.640
so ist, ist einmal, dass es halt

00:36:26.640 --> 00:36:29.380
viele Dinge, also wo bei anderen Geschichten was

00:36:29.380 --> 00:36:31.000
gefehlt hat, sind halt da mit drin.

00:36:32.080 --> 00:36:33.140
Und dann auch,

00:36:33.520 --> 00:36:35.280
dass

00:36:35.280 --> 00:36:37.700
diese

00:36:37.700 --> 00:36:39.420
Developer-Experience-Geschichte da so betont

00:36:39.420 --> 00:36:41.340
wird. Das ist auch etwas, was man jetzt in letzter Zeit

00:36:41.340 --> 00:36:43.120
immer mehr sieht. Von früher

00:36:43.120 --> 00:36:44.120
kenne ich das so nicht.

00:36:44.960 --> 00:36:47.040
Da musste man doch alles von Hand und selber und es war alles

00:36:47.040 --> 00:36:48.020
schön und hässlich.

00:36:48.260 --> 00:36:51.080
Wenn es kryptisch ist und schwer zu installieren,

00:36:51.080 --> 00:36:52.400
das war so ein bisschen...

00:36:52.400 --> 00:36:53.820
Ja, deswegen macht man das.

00:36:54.640 --> 00:36:57.200
Ja, genau. Du musst ja erstmal beweisen, dass du manns genug bist

00:36:57.200 --> 00:36:59.360
und hier das Shred aus

00:36:59.360 --> 00:37:00.520
zum Stein ziehen, bevor du irgendwie

00:37:00.520 --> 00:37:03.540
so und dass man das den Entwicklern

00:37:03.540 --> 00:37:05.400
einfach macht und dass die

00:37:05.400 --> 00:37:06.860
da irgendwie einfach eine gute Experience...

00:37:06.860 --> 00:37:09.480
Ja, das ist irgendwie so ein Ansatz,

00:37:09.860 --> 00:37:11.220
also früher

00:37:11.220 --> 00:37:13.080
wäre das Leuten fremdartig vorgekommen,

00:37:13.220 --> 00:37:15.380
indem man sich sowas... Aber heute ist das

00:37:15.380 --> 00:37:17.180
irgendwie... Heute, ja, Zeiten haben sich geändert.

00:37:17.560 --> 00:37:18.960
Ja, so will man das wahrscheinlich auch machen, weil man

00:37:18.960 --> 00:37:20.720
keine Lust hat, die ganze Zeit nur im Keller rumzusitzen.

00:37:22.120 --> 00:37:23.300
Gut ist, wenn die Leute aus dem

00:37:23.300 --> 00:37:25.080
Business noch erwarten, dass es doch genauso lange dauert wie früher.

00:37:26.560 --> 00:37:27.200
Ja, ja, ja, gut.

00:37:27.340 --> 00:37:29.000
Ich meine, es ist halt die Frage, ob einem das wirklich

00:37:29.000 --> 00:37:30.160
so wahnsinnig viel hilft, aber

00:37:30.160 --> 00:37:32.520
ich würde schon sagen, ja.

00:37:34.940 --> 00:37:35.300
Aber

00:37:35.300 --> 00:37:37.080
es ist auf jeden Fall irgendwie eine neue

00:37:37.080 --> 00:37:39.080
Geschichte und ich finde das ja auch im Prinzip gut,

00:37:39.300 --> 00:37:40.900
dass man da so, dass das halt irgendwie alles ein bisschen

00:37:40.900 --> 00:37:42.500
angenehmer wird also und nicht so

00:37:42.500 --> 00:37:43.300
stachlig ist.

00:37:45.700 --> 00:37:47.000
Ja, vielleicht müssen wir mal kurz darüber reden,

00:37:47.080 --> 00:37:48.800
wie der das macht. Also zum Beispiel über Type Annotations

00:37:48.800 --> 00:37:50.420
geht halt da ganz viel an den Guten dran.

00:37:51.040 --> 00:37:52.820
Parameter kannst du übergeben und kannst direkt

00:37:52.820 --> 00:37:54.000
sagen, okay,

00:37:54.900 --> 00:37:56.080
das Query enthält jetzt ein

00:37:56.080 --> 00:37:58.640
Integer oder sowas. Ja, also eine

00:37:58.640 --> 00:38:00.520
Geschichte, das hatte mich am Anfang auch so ein bisschen

00:38:00.520 --> 00:38:01.060
verwirrt.

00:38:02.560 --> 00:38:04.680
Die Query würde ich jetzt so intuitiv

00:38:04.680 --> 00:38:06.360
sagen, ich weiß aber nicht, ob es richtig ist, keine Ahnung.

00:38:08.380 --> 00:38:08.640
Das hatte

00:38:08.640 --> 00:38:10.220
mich am Anfang, da wurde ich dann nach der, also klar,

00:38:10.420 --> 00:38:12.460
man schreibt jetzt, also man hat auch immer

00:38:12.460 --> 00:38:14.520
die Dinger, die man halt in FastAP

00:38:14.520 --> 00:38:16.160
schreibt, sozusagen

00:38:16.160 --> 00:38:17.920
die Endpunkte,

00:38:18.240 --> 00:38:20.560
was man sagen möchte, sind halt Funktionen

00:38:20.560 --> 00:38:22.440
und die Funktionen haben halt Parameter und

00:38:22.440 --> 00:38:24.440
dann geht da was rein, also kommt ein Request mehr oder

00:38:24.440 --> 00:38:26.440
weniger rein und es geht eine Response raus.

00:38:27.320 --> 00:38:28.420
Man sagt jetzt nicht unbedingt Request,

00:38:28.560 --> 00:38:31.320
beziehungsweise bei Django wäre es

00:38:31.320 --> 00:38:32.980
halt so, da kommt ein Request rein, geht eine Response raus

00:38:32.980 --> 00:38:35.260
und dann popelt man sich sozusagen

00:38:35.260 --> 00:38:37.100
aus dem Request die ganzen Sachen halt raus,

00:38:37.200 --> 00:38:38.600
die man so braucht. Also aus dem,

00:38:38.960 --> 00:38:40.880
da gibt es dann Request.get oder Request.post

00:38:40.880 --> 00:38:42.020
oder

00:38:42.020 --> 00:38:45.220
man nimmt dann halt den Body und dann gut,

00:38:45.320 --> 00:38:46.600
wenn man jetzt sowas wie REST-Framework

00:38:46.600 --> 00:38:49.040
oder Formulare nimmt an, dann natürlich

00:38:49.040 --> 00:38:51.400
eine ganze Menge ab. Oder Class-Based-Views oder sowas, ja.

00:38:51.400 --> 00:38:52.940
Ja, aber prinzipiell

00:38:52.940 --> 00:38:55.080
muss man sich den, ist der Teil,

00:38:55.800 --> 00:38:57.280
man poolt sich den Kram

00:38:57.280 --> 00:38:58.220
da selber halt raus, so.

00:38:59.500 --> 00:39:01.180
Und das ist bei FastAPI halt nicht so.

00:39:01.700 --> 00:39:03.280
Und das passiert halt sehr viel

00:39:03.280 --> 00:39:04.540
von dieser Magie direkt,

00:39:05.100 --> 00:39:06.860
wenn du die Type-Annotation richtig

00:39:06.860 --> 00:39:08.700
dran schreibst, dass halt du...

00:39:08.700 --> 00:39:11.280
Man schreibt halt Type-Annotation in die Parameter und dann

00:39:11.280 --> 00:39:13.120
kommen die Daten

00:39:13.120 --> 00:39:15.120
irgendwie magisch da rein.

00:39:15.140 --> 00:39:16.920
Ja, also wenn man besonders gut wird, wenn man da

00:39:16.920 --> 00:39:18.780
zu Pidentic-Modelle verwendet als

00:39:18.780 --> 00:39:21.560
Parameter-

00:39:21.560 --> 00:39:23.160
Annotation, weil dann wird halt

00:39:23.160 --> 00:39:25.020
die Validierung von den Objekten, die da beispielsweise

00:39:25.020 --> 00:39:26.460
als JSON reinkommen oder so,

00:39:26.860 --> 00:39:28.960
direkt mit Pidentic durchgeführt

00:39:28.960 --> 00:39:30.940
und das ist sehr cool, weil halt die ganzen Validierungen

00:39:30.940 --> 00:39:32.860
dabei sind, die kann man an den Pidentic reinschreiben,

00:39:33.260 --> 00:39:35.060
die passieren halt automatisch,

00:39:35.100 --> 00:39:36.820
die Type-Konvertierung passiert automatisch,

00:39:36.880 --> 00:39:38.800
du hast in den Objekten direkt die richtige

00:39:38.800 --> 00:39:40.960
Datenstruktur vorliegen,

00:39:41.020 --> 00:39:42.800
du kannst auch das mit, weiß nicht, sogar mit

00:39:42.800 --> 00:39:44.840
Daytimes machen, deinen eigenen Parser dafür in dieses

00:39:44.840 --> 00:39:46.500
Pidentic-Modell integrieren, wie du das haben willst

00:39:46.500 --> 00:39:48.560
und kriegst direkt die nutzbaren

00:39:48.560 --> 00:39:50.700
Python-Objekte da raus, die du brauchst.

00:39:51.540 --> 00:39:53.080
Das ist schon sehr, sehr, sehr, sehr nett.

00:39:53.080 --> 00:39:55.080
Ja, tatsächlich,

00:39:55.280 --> 00:39:57.100
Also ich fand es halt am Anfang so, ich habe das nicht

00:39:57.100 --> 00:39:59.400
direkt verstanden, dass das so ist und das hat

00:39:59.400 --> 00:40:00.580
mich irgendwie eine Zeit lang verwirrt,

00:40:01.200 --> 00:40:03.360
weil ich dachte so, okay, wo gebe ich denn jetzt an,

00:40:03.400 --> 00:40:05.440
dass das jetzt die Get-Parameter sind

00:40:05.440 --> 00:40:07.200
oder wo sage ich denn jetzt, dass es im Body

00:40:07.200 --> 00:40:09.240
vorkommt? Und tatsächlich tut man das halt nicht,

00:40:09.420 --> 00:40:11.240
sondern man schreibt das halt da in die

00:40:11.240 --> 00:40:12.280
Tube-Annotation und dann

00:40:12.280 --> 00:40:15.160
magie, findet fast irgendwie

00:40:15.160 --> 00:40:17.260
selber raus, ob das jetzt in den Cookies war oder

00:40:17.260 --> 00:40:19.220
ob das halt im Body von dem Request

00:40:19.220 --> 00:40:21.100
war oder ob das irgendwie in den

00:40:21.100 --> 00:40:22.020
Get-Parametern war.

00:40:23.200 --> 00:40:24.780
Und ja,

00:40:25.100 --> 00:40:27.020
das funktioniert eigentlich auch immer irgendwie ganz gut.

00:40:27.540 --> 00:40:28.200
Das ist echt super, ja.

00:40:29.060 --> 00:40:30.940
Also was man dann, also vielleicht an der Stelle

00:40:30.940 --> 00:40:33.000
nochmal ganz kurz, würde ich gerne eingehen

00:40:33.000 --> 00:40:34.980
auf SQL-Model, weil

00:40:34.980 --> 00:40:36.740
man diese Pidentic-Modelle, die man dann halt

00:40:36.740 --> 00:40:39.120
netterweise geschrieben hat, mit SQL-Model,

00:40:39.300 --> 00:40:40.920
das ist auch ein Projekt von Sebastian Ramirez,

00:40:41.340 --> 00:40:43.140
ist noch relativ am Anfang, also noch nicht so ganz

00:40:43.140 --> 00:40:45.040
produktionsreif, da waren

00:40:45.040 --> 00:40:46.420
noch so ein paar Breaking Changes drin, aber

00:40:46.420 --> 00:40:49.400
da kann man einfach diese Pidentic-Models

00:40:49.400 --> 00:40:50.680
direkt in der Datenbank speichern.

00:40:51.480 --> 00:40:52.940
Und der nimmt das dann direkt und zum Beispiel mit

00:40:52.940 --> 00:40:54.380
dem SQL-Alchemy drunter,

00:40:54.940 --> 00:41:09.960
Dann wird es halt direkt in die Datenbank geschrieben, die man da angeschlossen hat, was halt auch sehr angenehm ist, weil man halt diese Duplikation von der ganzen Logik nicht mehr hat, sondern halt einfach wie bei, wenn man das vielleicht von Dango gewohnt ist so ein bisschen, nur so Modelle schreibt und hat dann direkt seine Datenbankadaptation und die Validierung damit drin.

00:41:10.100 --> 00:41:31.000
Ja, und das ist halt dann quasi das Gleiche für Datenbank, man schreibt halt, was das ist, quasi einmal hin und dann gilt das halt für Datenbank, also es wird dann halt ein Datenbank-Schema draus generiert, also es wird halt auch das Schema für die API draus generiert und das ist halt in beiden Fällen gleich und das ist natürlich schon nett, also man kann sich da vielleicht schon eine ganze Menge Schreibarbeit sparen.

00:41:31.000 --> 00:41:32.740
Genau, man kann auch dann tatsächlich, das ist auch

00:41:32.740 --> 00:41:34.600
in FastAPI mit drin, direkt das

00:41:34.600 --> 00:41:36.200
Schema daraus rennen lassen.

00:41:37.060 --> 00:41:38.000
Als OpenIP

00:41:38.000 --> 00:41:40.000
kompatibles

00:41:40.000 --> 00:41:42.960
JSON oder so, das ist direkt mit drin.

00:41:43.040 --> 00:41:44.900
Muss man eigentlich eine Funktion aufrufen, dann ist das da.

00:41:45.380 --> 00:41:46.040
Auch sehr schick.

00:41:46.760 --> 00:41:48.800
Ich mache dabei, also mit SQL Academy

00:41:48.800 --> 00:41:50.300
die Migration ist immer mit Alembic.

00:41:50.900 --> 00:41:52.940
Damit ich so ein bisschen so eine Art Tango-mäßiges

00:41:52.940 --> 00:41:54.260
Migration-System habe, das heißt,

00:41:54.780 --> 00:41:56.700
kannst du dann sowas machen wie Migrate schreiben

00:41:56.700 --> 00:41:58.620
oder so. Das funktioniert ein bisschen anders.

00:41:58.780 --> 00:42:00.040
Das sind halt

00:42:00.040 --> 00:42:02.700
andere Formen von Migrationen ran, aber die schreibt man

00:42:02.700 --> 00:42:04.700
eigentlich nur in eine Datei an, da kann man relativ viel anpassen

00:42:04.700 --> 00:42:06.340
und der macht dann auch relativ automatisch das

00:42:06.340 --> 00:42:07.800
Vor- und Zurückspulen.

00:42:08.920 --> 00:42:09.840
Das finde ich ganz schick.

00:42:11.180 --> 00:42:12.660
Ja, aber gut, das ist halt

00:42:12.660 --> 00:42:14.440
dann irgendwie, um diese Sachen muss man sich dann halt

00:42:14.440 --> 00:42:16.520
selber so ein bisschen kümmern. Ja, genau, das ist halt das, was

00:42:16.520 --> 00:42:18.680
FASAPI nicht mitliefert im Vergleich zu Dango oder sowas,

00:42:18.780 --> 00:42:20.640
aber das geht eigentlich auch ganz gut, wenn

00:42:20.640 --> 00:42:22.700
man es dann reinbaut. Ja, also was

00:42:22.700 --> 00:42:23.620
den Unterschied angeht, also

00:42:23.620 --> 00:42:26.560
wir haben ja schon gesagt, irgendwie ist es so

00:42:26.560 --> 00:42:27.900
ähnlich wie Flask, aber

00:42:27.900 --> 00:42:30.260
also ich würde sagen, der Hauptunterschied ist eben, dass

00:42:30.260 --> 00:42:32.280
bei Flask ist, man kriegt

00:42:32.280 --> 00:42:34.180
die Werte eher relativ

00:42:34.180 --> 00:42:36.340
roh und man hat eben nicht

00:42:36.340 --> 00:42:38.340
weiß, wenn man jetzt in Fast

00:42:38.340 --> 00:42:40.320
API das schon annotiert hat mit

00:42:40.320 --> 00:42:42.020
das ist ein Integer oder so, dann kriegt man halt ein Integer.

00:42:42.400 --> 00:42:44.040
Und in Flask ist das halt nicht so.

00:42:44.720 --> 00:42:46.000
Genau. Das ist halt der

00:42:46.000 --> 00:42:48.320
genau, dann diese Pidentic-Geschichten, das

00:42:48.320 --> 00:42:50.260
könnte man in Flask vielleicht auch so machen, aber das

00:42:50.260 --> 00:42:51.680
muss man halt selber machen, das ist halt nicht integriert.

00:42:52.960 --> 00:42:53.780
Ja, das ist

00:42:53.780 --> 00:42:56.300
und vielleicht auch

00:42:56.300 --> 00:42:57.280
noch etwas, was halt

00:42:57.280 --> 00:42:59.420
interessant ist, wenn man gerade so

00:42:59.420 --> 00:43:01.200
Data-Science-Geschichten macht oder halt

00:43:01.200 --> 00:43:02.880
Dinge, die so ein bisschen anders sind als

00:43:02.880 --> 00:43:05.200
in Django, hast du halt irgendwie eine

00:43:05.200 --> 00:43:07.400
relationelle Datenbank darunter, weil der ORM ist halt so,

00:43:07.480 --> 00:43:08.980
wenn man den ORM nicht verwenden möchte,

00:43:09.280 --> 00:43:11.360
dann macht es eigentlich gar nicht so viel Sinn, Django zu verwenden,

00:43:11.420 --> 00:43:12.620
weil das ist halt der Hauptteil von Django.

00:43:13.600 --> 00:43:13.800
Und

00:43:13.800 --> 00:43:17.020
wenn man jetzt irgendwie eine MongoDB

00:43:17.020 --> 00:43:19.140
verwenden will oder so, oder irgendeine andere

00:43:19.140 --> 00:43:21.040
NoSQL-Geschichte, dann ist das halt mit

00:43:21.040 --> 00:43:22.820
Django eher so, das geht auch,

00:43:22.980 --> 00:43:24.320
aber muss man halt,

00:43:25.200 --> 00:43:26.700
es geht nicht über die Modelle.

00:43:26.800 --> 00:43:37.520
So ein modularer Teil. Also wenn man jetzt das mit SQL-Model zum Beispiel verwendet, habe ich ja gerade versucht zu erzählen, dann genau diese Revision, die man halt hat, die kann man ja vor- und zurückspulen und da kann man sicher alles Mögliche reinhängen.

00:43:38.140 --> 00:43:39.380
Naja, NoSQL hat man auch nicht.

00:43:39.960 --> 00:43:49.360
Ja, Moment, aber was cool ist, du kannst aus diesen Pydentic-Modellen, die du halt hast, kannst du auch erzeugen aus einer OpenAPI, die du halt hast, wenn du eine OpenAPI-JSON hast oder sowas.

00:43:49.560 --> 00:43:51.600
Achso, kannst du dir direkt die Pydentic-Modelle...

00:43:51.600 --> 00:43:53.000
Identik-Modelle bauen lassen.

00:43:53.480 --> 00:43:55.860
Und so hast du dann halt dann die Sachen direkt, die du dann auch

00:43:55.860 --> 00:43:56.900
in eine Datenbank wegschreiben willst.

00:43:57.900 --> 00:43:59.460
Das ist halt auch schon sehr, sehr nett.

00:44:01.160 --> 00:44:01.820
Klar, man muss sich

00:44:01.820 --> 00:44:03.840
dann halt trotzdem, wenn man das jetzt nicht relational ablegen

00:44:03.840 --> 00:44:05.840
will, dann irgendwie eine andere Integration nehmen.

00:44:06.740 --> 00:44:07.760
Ja, aber sowas geht halt

00:44:07.760 --> 00:44:09.740
prinzipiell. Während das mit Django eigentlich nicht wirklich

00:44:09.740 --> 00:44:11.800
geht, kannst du halt in FastAPI,

00:44:11.860 --> 00:44:13.820
ob du jetzt irgendwie eine relationale Datenbank verwendest

00:44:13.820 --> 00:44:15.620
oder halt irgendwas, oder MongoDB oder so,

00:44:16.320 --> 00:44:17.400
das geht beides.

00:44:17.800 --> 00:44:19.760
Und zwar ist es nicht so, dass man das

00:44:19.760 --> 00:44:21.700
irgendwie, dass man dann gegen

00:44:21.700 --> 00:44:23.520
das Framework arbeitet, wenn man jetzt irgendwie NoSQL

00:44:23.520 --> 00:44:24.720
verwendet mit FastAPI.

00:44:25.460 --> 00:44:26.900
Ja, das finde ich sehr, sehr schick.

00:44:28.640 --> 00:44:28.880
Genau.

00:44:29.620 --> 00:44:30.600
FastAPI selber benutzt

00:44:30.600 --> 00:44:32.680
MakeDocs, MKDocs, ist auch sehr schick.

00:44:32.920 --> 00:44:34.120
Ja, weißt du, von wem das ist?

00:44:34.660 --> 00:44:34.980
Nein.

00:44:37.360 --> 00:44:38.860
Ich müsste jetzt einen von

00:44:38.860 --> 00:44:40.220
den Namen sagen, die wir jetzt gerade eben schon erwähnt haben.

00:44:40.260 --> 00:44:41.180
Von Chris, die ist auch...

00:44:41.180 --> 00:44:44.460
Ja, okay, tatsächlich.

00:44:44.780 --> 00:44:46.620
Ja, das ist echt erstaunlich, der hat irgendwie, ja,

00:44:46.840 --> 00:44:47.100
genau.

00:44:48.680 --> 00:44:50.500
Ja, auch ganz schick. Ich habe dazu

00:44:50.500 --> 00:44:52.540
einen kleinen Skeleton tatsächlich mal geschrieben, so für die kleinen

00:44:52.540 --> 00:44:54.620
Anfangssachen. Da ist so ein bisschen viel vielleicht schon drin.

00:44:55.080 --> 00:44:56.560
Ein bisschen rumgespielt. Können wir vielleicht

00:44:56.560 --> 00:44:58.020
mal verlinken. Vielleicht mag ja jemand

00:44:58.020 --> 00:45:00.440
den direkt benutzen, wenn er es will. Also ist das nichts

00:45:00.440 --> 00:45:02.720
Tolles, aber ein bisschen aus.

00:45:03.260 --> 00:45:04.460
Ich habe damit noch nicht so viel gemacht.

00:45:04.600 --> 00:45:06.420
Ich habe mir aber vorgenommen, dass ich das mal

00:45:06.420 --> 00:45:08.340
tun muss, weil...

00:45:08.340 --> 00:45:09.660
Ich habe so ein bisschen Django versucht zu enthinken.

00:45:09.860 --> 00:45:12.400
Das ist vielleicht nicht immer ganz so cool, aber Typer ist da auch

00:45:12.400 --> 00:45:14.180
dabei. Also so Commands-mäßig.

00:45:14.840 --> 00:45:16.380
Ja. Was könnt ihr mir denn noch so alles

00:45:16.380 --> 00:45:18.340
erzählen über FastAPI? Ja, also vielleicht

00:45:18.340 --> 00:45:20.120
noch mal so ein bisschen, wie das funktioniert mit den Datentypen

00:45:20.120 --> 00:45:22.040
und diesen Dependency-Injection-Systemen.

00:45:22.120 --> 00:45:23.780
Man kann ja auch damit

00:45:23.780 --> 00:45:25.840
sowas machen wie Permissions oder sowas.

00:45:26.800 --> 00:45:28.160
Wenn du sagen kannst, bestimmte Dinge müssen enthalten

00:45:28.160 --> 00:45:30.320
sein, wie Authentifizierung oder so.

00:45:30.820 --> 00:45:32.220
Ja, also diese Magie,

00:45:32.780 --> 00:45:33.920
dass halt irgendwie

00:45:33.920 --> 00:45:36.060
man einfach nur die Annotationen

00:45:36.060 --> 00:45:37.840
hinschreibt und dann die Werte so richtig

00:45:37.840 --> 00:45:38.500
bekommt.

00:45:39.480 --> 00:45:40.440
Depends on us.

00:45:41.720 --> 00:45:43.240
Das sind halt,

00:45:43.240 --> 00:45:45.000
das funktioniert über diese

00:45:45.000 --> 00:45:46.480
Path-Operations-Geschichten

00:45:46.480 --> 00:45:48.620
und das ist halt auch irgendwie

00:45:48.620 --> 00:45:51.040
über Dependency Injection

00:45:51.040 --> 00:45:52.920
wird das halt gemacht. Und du kannst aber auch das

00:45:52.920 --> 00:45:54.780
selber definieren, genau. Da musst du halt nur irgendwie

00:45:54.780 --> 00:45:56.720
schreibst halt Depends und dann übergibst du halt ein

00:45:56.720 --> 00:45:58.500
Callable und das kriegst du dann halt den ganzen Kram.

00:45:58.560 --> 00:46:00.740
Da kannst du halt Code wiederverwenden,

00:46:00.860 --> 00:46:02.540
der halt irgendwie, weiß ich nicht, irgendwas

00:46:02.540 --> 00:46:04.580
eben ein OAuth-Token irgendwie

00:46:04.580 --> 00:46:06.420
validiert oder so. Genau, genau.

00:46:07.200 --> 00:46:08.560
Oder halt irgendwas anderes macht.

00:46:09.420 --> 00:46:10.340
An der Stelle vielleicht.

00:46:10.400 --> 00:46:11.580
Datenbankverbindung reinreicht oder so.

00:46:12.200 --> 00:46:13.860
Was ist denn ein Dependency Injection?

00:46:14.560 --> 00:46:15.980
Oh je, das ist auch so ein Ding.

00:46:16.260 --> 00:46:18.120
Genau, in der letzten Episode hat ja schon jemand gesagt,

00:46:18.240 --> 00:46:19.520
Thomas hat das...

00:46:19.520 --> 00:46:21.140
Weiß ich nicht, ob man das erklären kann.

00:46:21.740 --> 00:46:23.580
Das ist halt auch so ein etwas schwieriges

00:46:23.580 --> 00:46:26.180
Konzept. Also im Grunde...

00:46:26.180 --> 00:46:28.180
Ist das ein Pattern? Kann man das so sagen?

00:46:28.360 --> 00:46:29.860
Ja, ist irgendwie

00:46:29.860 --> 00:46:31.000
ein Design-Pattern, kann man sagen.

00:46:31.160 --> 00:46:33.880
Also wie man ein Objekt in eine Klasse reingibt, ohne

00:46:33.880 --> 00:46:35.120
dass man das jetzt mal neu definiert?

00:46:35.280 --> 00:46:37.440
Nee, ist eher so, dass du das halt umdrehst.

00:46:38.160 --> 00:46:39.500
Sozusagen, also Dependency

00:46:39.500 --> 00:46:41.500
Injection ist ein bisschen

00:46:41.500 --> 00:46:43.020
sozusagen das Ding, wie man

00:46:43.020 --> 00:46:45.700
Dependency Inversion implementiert.

00:46:45.800 --> 00:46:47.740
Also du willst halt nicht, also was du halt

00:46:47.740 --> 00:46:49.200
nicht machen möchtest vielleicht, ist

00:46:49.200 --> 00:46:51.720
in deiner Funktion, die

00:46:51.720 --> 00:46:53.920
halt irgendwie Request-Response

00:46:53.920 --> 00:46:55.680
macht, irgendwie ein Datenbank-Ding

00:46:55.680 --> 00:46:57.800
importieren und dann

00:46:57.800 --> 00:46:59.260
was noch machen. Also

00:46:59.260 --> 00:47:01.160
weil du dann ja damit hängst.

00:47:01.740 --> 00:47:03.760
Genau. Und dann, was passiert jetzt eigentlich,

00:47:03.860 --> 00:47:05.840
wenn du testest? Okay, das heißt, du musst dich mit reingeben,

00:47:05.900 --> 00:47:07.660
da ist dann alles abstrahiert in diesem Ding.

00:47:07.660 --> 00:47:09.640
Genau. Und jetzt willst du das aber auch

00:47:09.640 --> 00:47:11.440
nicht explizit irgendwie da rein,

00:47:11.820 --> 00:47:13.620
weil du rufst ja gar nicht, du bist ja gar nicht

00:47:13.620 --> 00:47:15.400
derjenige, der das aufruft, den

00:47:15.400 --> 00:47:17.600
Funktion, die halt irgendwie

00:47:17.600 --> 00:47:20.160
Request-Response macht, sondern das wird ja

00:47:20.160 --> 00:47:21.040
irgendwie aufgerufen. Das heißt,

00:47:22.520 --> 00:47:24.300
du übergibst es nicht wirklich, sondern du injectest es.

00:47:24.400 --> 00:47:25.660
Es wird halt irgendwie automatisch...

00:47:25.660 --> 00:47:27.760
Depends on database access oder sowas. Genau.

00:47:27.980 --> 00:47:30.260
Und damit sagst du halt eigentlich, dass du das gerne

00:47:30.260 --> 00:47:32.220
injectest hättest, sozusagen an der

00:47:32.220 --> 00:47:34.200
Stelle. Ja. Und dann

00:47:34.200 --> 00:47:36.180
kannst du das halt in Tests halt auch ändern.

00:47:36.420 --> 00:47:37.420
In Tests kannst du dann einfach sagen,

00:47:37.540 --> 00:47:40.280
in der Applikation,

00:47:40.460 --> 00:47:42.000
in der Fast API, also dem

00:47:42.000 --> 00:47:44.140
Hauptapplikationsobjekt, kann man irgendwie sagen,

00:47:44.540 --> 00:47:45.700
Dependency Override,

00:47:46.100 --> 00:47:48.860
und dann kannst du halt definieren,

00:47:48.980 --> 00:47:50.160
was da injectet werden soll.

00:47:50.300 --> 00:47:52.480
Und sagst halt, Depends on Database bedeutet jetzt,

00:47:52.620 --> 00:47:54.800
gib mir einfach ein anderes Objekt

00:47:54.800 --> 00:47:56.680
oder eine Testdatenbank. Genau, und dann kannst du halt

00:47:56.680 --> 00:47:58.420
die Testdatenbank reinreißen oder du reißt halt

00:47:58.420 --> 00:48:00.340
irgendeine Memory Repository rein.

00:48:01.800 --> 00:48:02.680
Genau, und

00:48:02.680 --> 00:48:04.960
ja, das ist halt sozusagen eine Methode,

00:48:05.220 --> 00:48:06.900
um diese Sachen

00:48:06.900 --> 00:48:08.240
halt voneinander so zu entkoppeln,

00:48:08.600 --> 00:48:10.040
dass du halt nicht, weil, also

00:48:10.040 --> 00:48:12.380
eingekoppelt wäre es halt, wenn du von irgendwas erbst,

00:48:12.460 --> 00:48:14.280
oder wenn du halt irgendwie das importierst oder so,

00:48:14.540 --> 00:48:16.180
dann hängst du halt direkt davon ab

00:48:16.180 --> 00:48:18.280
und wenn du es halt so indirekt reingereicht

00:48:18.280 --> 00:48:20.140
bekommst, dann bist du halt so

00:48:20.140 --> 00:48:21.140
ein bisschen losgelöst.

00:48:22.880 --> 00:48:24.240
Ja, und das ist

00:48:24.240 --> 00:48:26.020
halt auch in Flask alles ein bisschen schwieriger,

00:48:26.320 --> 00:48:27.980
das ist halt schon elegant gemacht, wobei

00:48:27.980 --> 00:48:30.180
ehrlich gesagt, also ich habe mir den, ich habe mir

00:48:30.180 --> 00:48:31.380
kurz den Code angeguckt,

00:48:31.580 --> 00:48:34.140
also das Konzept ist relativ

00:48:34.140 --> 00:48:36.280
elegant, aber die Implementation ist ein bisschen

00:48:36.280 --> 00:48:38.120
ne. Also

00:48:38.120 --> 00:48:40.180
da gibt es halt in Flask API so diese

00:48:40.180 --> 00:48:42.580
Dependencies-Module-Package

00:48:42.580 --> 00:48:44.140
und dann der Hauptinhalt

00:48:44.140 --> 00:48:46.100
der Implementation liegt in Utils.py

00:48:46.100 --> 00:48:46.860
und das

00:48:46.860 --> 00:48:50.360
war schon

00:48:50.360 --> 00:48:51.160
schwer zu lesen, also

00:48:51.160 --> 00:48:54.020
ja, aber

00:48:54.020 --> 00:48:55.280
es funktioniert einfach.

00:48:55.280 --> 00:48:56.580
Also ich finde das, du hast schon recht,

00:48:56.680 --> 00:48:59.220
wie hast du das eben genommen mit DevFriendly oder sowas, also ich finde

00:48:59.220 --> 00:49:01.020
das sehr angenehm. Ja, ja, es ist genau, es ist halt

00:49:01.020 --> 00:49:02.900
darauf optimiert, dass man, also

00:49:02.900 --> 00:49:04.840
es ist halt anders. Man kann schnellere Ergebnisse erzeugen, wenn du irgendwie

00:49:04.840 --> 00:49:07.140
JSON rauspowern willst und hast nicht so viel

00:49:07.140 --> 00:49:08.860
Aufgaben, dann kannst du relativ schnell

00:49:08.860 --> 00:49:10.840
Erfolge damit erzielen, finde ich. Ja, ja, absolut.

00:49:11.020 --> 00:49:12.880
Es ist halt darauf optimiert, dass du als

00:49:12.880 --> 00:49:14.980
Entwickler, der das benutzt, um irgendwie ein Ziel zu erreichen,

00:49:15.060 --> 00:49:16.400
dass du da gut zum Ziel kommst.

00:49:17.280 --> 00:49:19.000
Und ja, diese

00:49:19.000 --> 00:49:20.780
anderen Dinge, also ich finde das ganz interessant,

00:49:20.880 --> 00:49:22.500
wenn du zum Beispiel Starlet Sourcecode anguckst,

00:49:22.820 --> 00:49:24.880
also die Sachen, die Tom Christie so macht, die sind halt

00:49:24.880 --> 00:49:27.060
alle super poliert innen

00:49:27.060 --> 00:49:28.860
drin, ja. So ein bisschen wie bei

00:49:28.860 --> 00:49:30.660
Apple, wenn man Apple Geräte aufschraubt, die sind auch

00:49:30.660 --> 00:49:32.780
innen hübsch. Also da sind auch innen

00:49:32.780 --> 00:49:34.460
die Sachen, ja.

00:49:34.800 --> 00:49:36.380
Man könnte ja mal aufschrauben, reingucken.

00:49:36.400 --> 00:49:37.580
Das ist nicht irgendwie so ein Kabelsalat.

00:49:38.720 --> 00:49:40.860
Es gibt ja bei anderen Sachen, da schraubst du das halt so auf,

00:49:41.140 --> 00:49:42.200
dann nimmst du die Abdeckung ab und dann machst du

00:49:42.200 --> 00:49:44.980
platzt da so ein

00:49:44.980 --> 00:49:46.820
Gedärmen-Kabel-Ding draus.

00:49:47.120 --> 00:49:49.200
Das ist, wenn du Apple-Dinger hast, das ist halt super ordentlich

00:49:49.200 --> 00:49:50.920
und alles. Und das ist halt,

00:49:51.200 --> 00:49:53.060
wenn du irgendwie Starlet dir den Source-Code

00:49:53.060 --> 00:49:55.040
anguckst, der ist halt auch so. Das ist halt irgendwie

00:49:55.040 --> 00:49:56.920
alles total, so wenn man

00:49:56.920 --> 00:49:58.200
die Fast-API-Source-Code anguckt,

00:49:59.020 --> 00:50:01.420
das ist halt schon so,

00:50:01.760 --> 00:50:03.000
da hängt dann eher so, da hängt dann

00:50:03.000 --> 00:50:04.720
irgendwie Dinge von der Decke und, aber...

00:50:04.720 --> 00:50:07.000
Also ich hab zum Beispiel in meinem Computer, wenn ich den aufschraube,

00:50:07.080 --> 00:50:08.860
da hab ich auch so ein paar LEDs reingebaut, das hast du.

00:50:09.840 --> 00:50:11.000
Ja, genau, ist halt auch

00:50:11.000 --> 00:50:11.940
so ein bisschen eine Typfrage.

00:50:12.720 --> 00:50:14.560
Die sind auch unnötig halt, die braucht man halt nicht.

00:50:17.180 --> 00:50:19.220
Ob man das jetzt hässlich findet oder hübsch ist.

00:50:19.880 --> 00:50:21.320
Wichtig ist halt, dass die Luftzufuhr

00:50:21.320 --> 00:50:23.080
vernünftig ist, dass es schön kühl ist und dass es

00:50:23.080 --> 00:50:23.500
schnell ist.

00:50:25.900 --> 00:50:27.300
Ja, genau.

00:50:27.480 --> 00:50:29.000
Aber auf der anderen Seite wiederum

00:50:29.000 --> 00:50:31.120
zum Beispiel, also auch das

00:50:31.120 --> 00:50:33.080
wiederum, das ist halt unterschiedlich.

00:50:33.320 --> 00:50:35.280
Auch der Source Code hat kaum Kommentare

00:50:35.280 --> 00:50:35.560
oder so.

00:50:38.060 --> 00:50:39.300
Dockstrings gibt es fast

00:50:39.300 --> 00:50:40.880
gar nicht. Ich habe vielleicht zwei, drei Stellen gefunden,

00:50:41.000 --> 00:50:42.940
welche drin sind und Kommentare gibt es eigentlich auch nicht.

00:50:44.340 --> 00:50:45.060
Das bin ich auch schon ein paar

00:50:45.060 --> 00:50:46.800
Mal drüber gestolpert, ich muss mal gucken. Aber dafür

00:50:46.800 --> 00:50:49.140
sind halt die Type Annotations

00:50:49.140 --> 00:50:51.040
so aussagekräftig schon

00:50:51.040 --> 00:50:52.200
oft.

00:50:52.680 --> 00:50:54.700
Ja, aber auch da, das ist halt so ein bisschen,

00:50:55.520 --> 00:50:57.080
ja, sie sind aussagekräftig und ja,

00:50:57.220 --> 00:50:59.000
wenn du das im Editor mit, der das unterstützt,

00:50:59.000 --> 00:51:00.380
halt benutzt, dann ist das halt,

00:51:01.200 --> 00:51:02.940
dann ist das für dich halt total cool.

00:51:03.460 --> 00:51:04.860
Ehrlich gesagt, aber den Code einfacher

00:51:04.860 --> 00:51:06.080
zu lesen, macht das jetzt nichts.

00:51:06.140 --> 00:51:08.720
Ja, ich muss auch sagen, den Code selber, wenn ich da reingucke,

00:51:08.840 --> 00:51:10.540
muss ich ein bisschen suchen, was macht der denn jetzt.

00:51:11.000 --> 00:51:16.040
Geht das alles über Keyword-Only-Argumente?

00:51:17.060 --> 00:51:19.200
Was ja auch irgendwie, also es ist klar,

00:51:19.320 --> 00:51:21.400
dass das halt für jemanden, der eine IDE benutzt,

00:51:21.520 --> 00:51:23.980
vielleicht besser so ist, wenn er halt Funktionen aufruft

00:51:23.980 --> 00:51:26.300
oder Dinge, die halt Keyword-Only sind.

00:51:26.500 --> 00:51:28.400
Also das heißt, alle Funktionen und Methoden fangen an

00:51:28.400 --> 00:51:31.280
mit irgendwie irgendwas, Stern, Komma irgendwie.

00:51:31.920 --> 00:51:35.760
Aber für jemanden, der so, von früher hätte man gesagt,

00:51:35.860 --> 00:51:36.720
oh mein Gott, was ist das denn?

00:51:36.740 --> 00:51:37.560
Das ist ja schrecklich hässlich.

00:51:38.300 --> 00:51:40.320
Warum nicht einfach hinschreiben, was man,

00:51:40.580 --> 00:51:41.760
und aber

00:51:41.760 --> 00:51:44.220
also es ist halt so ein bisschen

00:51:44.220 --> 00:51:46.180
also du verbietest ja mit diesem Stern

00:51:46.180 --> 00:51:48.080
erstmal, dass es irgendwelche Argumente gibt, außer den

00:51:48.080 --> 00:51:50.100
Keyword-Dingern. Auf der anderen Seite

00:51:50.100 --> 00:51:52.140
ist es natürlich so, wenn ein IDE dann

00:51:52.140 --> 00:51:54.340
halt anbieten kann, was du alles auswählen kannst

00:51:54.340 --> 00:51:56.200
an Dingen, die du da reingibst, ist es natürlich für dich

00:51:56.200 --> 00:51:58.040
irgendwie angenehmer. Also sozusagen

00:51:58.040 --> 00:52:00.100
deine Entwickler-Experience,

00:52:00.500 --> 00:52:02.000
wenn du das in einer IDE verwendest,

00:52:02.140 --> 00:52:03.880
ist halt besser, aber wenn du das jetzt

00:52:03.880 --> 00:52:05.820
in einem Source-Code liest, ist es eher so ein bisschen

00:52:05.820 --> 00:52:07.820
ikidigit, ja so sag ich mal.

00:52:08.500 --> 00:52:08.860
Ikidigit.

00:52:10.260 --> 00:52:11.000
Ja, ja.

00:52:11.000 --> 00:52:12.160
Es ist halt die Frage, wie man das gewohnt ist.

00:52:12.160 --> 00:52:14.100
Man muss halt damit schnell arbeiten, deswegen ja.

00:52:14.300 --> 00:52:16.740
Ja, also ich meine, heutzutage benutzen die Leute halt alle Idees

00:52:16.740 --> 00:52:20.960
und gucken halt darüber, was der Code denn macht.

00:52:22.060 --> 00:52:24.080
Wenn du dann halt aber mit einem VI da sitzt

00:52:24.080 --> 00:52:26.080
und den Source Code liest, dann denkst du ja so,

00:52:26.660 --> 00:52:27.100
was ist das denn?

00:52:27.200 --> 00:52:28.920
Ich verstehe diese modernen Zeiten nicht mehr.

00:52:29.780 --> 00:52:29.980
Ja.

00:52:31.160 --> 00:52:33.320
Es hängt es, aber ja.

00:52:33.620 --> 00:52:35.000
Der VI kann das ja wahrscheinlich jetzt auch

00:52:35.000 --> 00:52:36.380
mit Autocompletion auf den Quarks und so.

00:52:37.400 --> 00:52:38.760
Kann man auch alles machen,

00:52:38.760 --> 00:52:40.960
wenn man da die entsprechenden Plugins richtig konfiguriert hat,

00:52:41.060 --> 00:52:43.040
was einem erstmal ein paar Monate kosten wird.

00:52:43.320 --> 00:52:45.100
Ja, ich habe immer zu wenig

00:52:45.100 --> 00:52:46.940
Zeit, um das neben der Arbeit noch hinzubekommen, aber

00:52:46.940 --> 00:52:48.900
ja. Naja, also

00:52:48.900 --> 00:52:50.920
ich finde es interessant. Also es ist

00:52:50.920 --> 00:52:52.800
auf jeden Fall irgendwie so ein bisschen was anderes

00:52:52.800 --> 00:52:55.200
und das ist, ja.

00:52:55.520 --> 00:52:56.900
Also ich mag es sehr gerne. Also zum Benutzen und zum

00:52:56.900 --> 00:52:58.840
Anfassen, das gibt einem so ein bisschen

00:52:58.840 --> 00:53:00.400
Speed auf der Straße. Ja.

00:53:00.880 --> 00:53:02.900
Ja, das auf jeden Fall. Also ich meine, Pidentic ist auch sowas.

00:53:03.560 --> 00:53:05.020
Das ist halt. Das ist echt gut.

00:53:05.040 --> 00:53:06.840
Das hilft einem enorm. Ich finde auch

00:53:06.840 --> 00:53:08.840
ehrlich gesagt, immer wenn ich jetzt so

00:53:08.840 --> 00:53:11.200
Alt-Klassen

00:53:11.200 --> 00:53:12.820
im alten Style verwende, oder ich meine,

00:53:12.900 --> 00:53:14.960
ich habe auch schon häufiger mal irgendwie

00:53:14.960 --> 00:53:16.440
Atteris verwendet,

00:53:16.640 --> 00:53:17.820
das war ein guter Atteris-Episode,

00:53:18.420 --> 00:53:20.760
oder Data-Classes, und

00:53:20.760 --> 00:53:22.980
das macht schon, es ist einfach angenehmer,

00:53:23.040 --> 00:53:24.500
das so hinzuschreiben, dass halt die

00:53:24.500 --> 00:53:25.320
Sachen

00:53:25.320 --> 00:53:28.980
als Attribute direkt in die Klasse reinschreibst

00:53:28.980 --> 00:53:31.040
und nicht in Init

00:53:31.040 --> 00:53:32.820
und dann das nochmal setzt, das ist halt

00:53:32.820 --> 00:53:34.100
immer so ein bisschen umständlich.

00:53:35.100 --> 00:53:36.120
Jaja, das ist so ein bisschen

00:53:36.120 --> 00:53:39.100
ein bisschen wie die neue Variante

00:53:39.100 --> 00:53:39.760
von dem Tupel.

00:53:40.600 --> 00:53:42.980
Auf der anderen Seite muss man, ich habe jetzt

00:53:42.980 --> 00:53:44.900
nochmal geguckt, weil es gab jetzt

00:53:44.900 --> 00:53:47.200
bei DDF, da war ich,

00:53:47.520 --> 00:53:48.960
warst du da? Ich konnte nicht,

00:53:49.040 --> 00:53:50.440
da hatte jemand Geburtstag. Ach ja, richtig.

00:53:53.440 --> 00:53:54.680
Genau, ich habe mir das Video

00:53:54.680 --> 00:53:56.740
so teilweise jedenfalls angeguckt und

00:53:56.740 --> 00:53:58.400
weil mich interessiert hat, irgendwie, weil da

00:53:58.400 --> 00:54:00.700
Klaus gesprochen hat über

00:54:00.700 --> 00:54:02.980
wie schnell ist eigentlich

00:54:02.980 --> 00:54:04.640
Data Class im Vergleich zu einem alten. Genau,

00:54:04.740 --> 00:54:06.800
rausgekommen, dass Pylentic ein bisschen langsamer ist bei der

00:54:06.800 --> 00:54:08.800
Umformung von vielen Transaktionen. Kann das sein?

00:54:08.900 --> 00:54:10.580
Nee, der hatte Pylentic gar nicht. Der hat nur

00:54:10.580 --> 00:54:12.980
Data Classes. Achso, ich hatte mal so ein Video

00:54:12.980 --> 00:54:14.000
gepostet, wo das verglichen wurde.

00:54:14.880 --> 00:54:16.460
Und ja, also

00:54:16.460 --> 00:54:18.760
tatsächlich, Data Classes sind auch ein bisschen

00:54:18.760 --> 00:54:20.720
langsamer. Die waren früher viel, viel langsamer.

00:54:20.860 --> 00:54:22.820
Sind inzwischen gar nicht mehr so schrecklich viel langsamer.

00:54:23.780 --> 00:54:24.820
Ein bisschen langsamer sind sie aber.

00:54:25.280 --> 00:54:26.880
Und bei Pylentic habe ich es jetzt selber

00:54:26.880 --> 00:54:28.340
nochmal nachgeguckt, weil mich das interessiert hat.

00:54:28.400 --> 00:54:30.460
Weil ich dachte so, okay, wie schlimm ist es denn eigentlich?

00:54:31.720 --> 00:54:32.740
Und gut, ich habe das

00:54:32.740 --> 00:54:34.340
jetzt in meinem, ich habe

00:54:34.340 --> 00:54:35.600
kleine Objekte genommen,

00:54:36.140 --> 00:54:38.180
wo nicht viel Validierung drauf ist.

00:54:38.340 --> 00:54:39.100
Aber ich dachte, gut,

00:54:39.880 --> 00:54:41.600
ehrlich gesagt kann es dann ja nicht mehr besser werden für

00:54:41.600 --> 00:54:43.880
Pydentic, sondern es wird eher schlimmer.

00:54:44.100 --> 00:54:46.020
Aber da war der Unterschied schon relativ

00:54:46.020 --> 00:54:48.020
riesig. Also da ist es

00:54:48.020 --> 00:54:50.420
halt so beim Deserialisieren,

00:54:52.040 --> 00:54:53.540
also quasi du hast

00:54:53.540 --> 00:54:55.960
sowas wie JSON oder DICT. Ich habe immer DICT genommen, nicht JSON,

00:54:56.080 --> 00:54:57.940
weil ich wollte jetzt nicht die JSON-Library

00:54:57.940 --> 00:54:59.820
brennschmarken, sondern einfach nur von DICT

00:54:59.820 --> 00:55:01.060
zu irgendwie Objekt.

00:55:02.100 --> 00:55:03.840
Es ist so, dass Pydentic ist halt

00:55:03.840 --> 00:55:04.800
irgendwie so achtmal langsamer.

00:55:05.340 --> 00:55:07.480
Und beim

00:55:07.480 --> 00:55:09.800
Serialisieren, also von

00:55:09.800 --> 00:55:11.800
Objekt zu, also objektgerecht zu

00:55:11.800 --> 00:55:13.920
irgendwie dickt, ist es halt

00:55:13.920 --> 00:55:15.200
sogar irgendwie zwanzigmal langsamer.

00:55:16.100 --> 00:55:17.620
Und das ist natürlich schon, also es kommt drauf an.

00:55:18.200 --> 00:55:19.380
Bei WANs wird das dann relevant?

00:55:19.780 --> 00:55:20.600
Genau, das ist halt die Frage.

00:55:22.000 --> 00:55:23.640
Das ist halt, also ich meine

00:55:23.640 --> 00:55:25.280
irgendwie Serialisieren von

00:55:25.280 --> 00:55:27.500
irgendwie hundert Objekten, ich weiß

00:55:27.500 --> 00:55:29.560
jetzt gar nicht mehr genau, bis ich jetzt nachgucke,

00:55:29.560 --> 00:55:31.020
aber es war halt irgendwie so, das ist halt

00:55:31.020 --> 00:55:33.580
für einzelne Objekte so ein paar hundert

00:55:33.580 --> 00:55:34.200
Nanosekunden.

00:55:36.140 --> 00:55:37.240
Bei Nativ

00:55:37.240 --> 00:55:39.740
und Pydentic ist es halt dann so, geht in den

00:55:39.740 --> 00:55:41.660
Mikrosekundenbereich. Also ich weiß nicht, kostet

00:55:41.660 --> 00:55:43.380
dann halt irgendwie 4-5 Mikrosekunden.

00:55:44.680 --> 00:55:45.780
Das ist alles relativ

00:55:45.780 --> 00:55:47.660
egal, solange das nur ein paar Objekte sind. Wenn du jetzt aber

00:55:47.660 --> 00:55:49.800
sagst, du nimmst 100 oder 1000, bei 1000

00:55:49.800 --> 00:55:50.960
könnte es sein, dass du schon ein bisschen

00:55:50.960 --> 00:55:53.140
möglicherweise schon bei ein paar Millisekunden halt.

00:55:53.400 --> 00:55:55.200
So ein paar Mikrosekunden mal 1000 ist ein bisschen

00:55:55.200 --> 00:55:57.760
bei Millisekunden. Und ein paar

00:55:57.760 --> 00:55:59.840
Millisekunden merkst du dann vielleicht in der Latenz schon irgendwie.

00:56:00.840 --> 00:56:01.780
Und es macht natürlich

00:56:01.780 --> 00:56:03.780
auch mehr CPU Last, was ja

00:56:03.780 --> 00:56:05.760
wenn du viele Sachen parallel machen möchtest, dann darfst

00:56:05.760 --> 00:56:07.560
du ja nicht CPU eigentlich. Das heißt, wenn wir über so

00:56:07.560 --> 00:56:09.780
Millionen Datensätze reden, die gleichzeitig Prozess werden

00:56:09.780 --> 00:56:11.680
würden, dann muss man vielleicht auf so eine Geschwindigkeit dann doch

00:56:11.680 --> 00:56:13.500
mal gucken, ob man das... Es kommt halt dann auf die

00:56:13.500 --> 00:56:15.580
Gesamtzahl der Dinger an.

00:56:15.680 --> 00:56:17.700
Ob du jetzt irgendwie tausend

00:56:17.700 --> 00:56:19.960
Dinger in einer Liste serialisierst oder deserialisierst

00:56:19.960 --> 00:56:21.720
oder tausend

00:56:21.720 --> 00:56:23.580
mal ein Ding gleichzeitig, ist ja

00:56:23.580 --> 00:56:23.940
egal.

00:56:26.120 --> 00:56:27.680
Aber das Problem ist halt

00:56:27.680 --> 00:56:29.700
die CPU-Geschichte

00:56:29.700 --> 00:56:31.300
ist halt dann, ja,

00:56:31.420 --> 00:56:33.580
die macht

00:56:33.580 --> 00:56:35.300
alles irgendwie dann halt langsamer.

00:56:35.420 --> 00:56:37.420
Das sind halt die verwöhnten Generationen, die einfach mehr Hardware

00:56:37.420 --> 00:56:39.620
auf ein Problem schmeißen. Kannst du natürlich dann auch

00:56:39.620 --> 00:56:41.540
machen, ja. Aber also da

00:56:41.540 --> 00:56:43.460
muss man schon so, sollte man sich vielleicht klar sein,

00:56:43.580 --> 00:56:45.700
dass es halt, dieser Komfort

00:56:45.700 --> 00:56:47.460
kostet halt auch ganz schön. Wobei

00:56:47.460 --> 00:56:49.660
ich weiß es nicht genau. Vielleicht habe ich es auch noch irgendwie falsch bedient.

00:56:49.940 --> 00:56:50.620
Das kann auch sein.

00:56:51.480 --> 00:56:53.260
Und vielleicht gibt es da auch noch irgendwie

00:56:53.260 --> 00:56:55.500
Geschichten, wie man das schneller

00:56:55.500 --> 00:56:56.900
machen kann, dass man halt irgendwie noch was,

00:56:58.480 --> 00:56:59.540
ich weiß es nicht, vielleicht hat das

00:56:59.540 --> 00:57:01.420
noch irgendwelche Dinge, wo man das

00:57:01.420 --> 00:57:03.320
modellieren kann, wo dann irgendwas zu Zeiten

00:57:03.320 --> 00:57:05.360
kompiliert wird oder wo es Zeiten zu zählen

00:57:05.360 --> 00:57:06.340
oder ich weiß es nicht genau.

00:57:08.000 --> 00:57:09.140
Aber also,

00:57:09.440 --> 00:57:09.700
wenn man

00:57:09.700 --> 00:57:13.320
das verwendet, sollte man sich vielleicht schon klar sein,

00:57:13.380 --> 00:57:15.020
das ist unter Umständen ein gutes Stückchen langsamer,

00:57:15.220 --> 00:57:17.180
als die alte Art, das zu machen.

00:57:18.500 --> 00:57:19.300
Aber es ist auch viel

00:57:19.300 --> 00:57:21.160
komfortabler. Also insofern, die meisten haben ja auch

00:57:21.160 --> 00:57:22.900
keine Last und haben auch nicht viele Objekte, insofern

00:57:22.900 --> 00:57:23.820
ist das alles viel besser.

00:57:25.120 --> 00:57:27.040
Ja, ja, ich habe gestern, letztens noch wieder jemanden gehabt,

00:57:27.040 --> 00:57:28.820
der keinen Python konnte und ich meinte, ja, ich habe gehört,

00:57:28.880 --> 00:57:30.760
das ist voll langsam, weil es die erste Ersagung gibt.

00:57:31.160 --> 00:57:32.640
Ja, das hören immer viele,

00:57:32.840 --> 00:57:34.720
aber es ist halt die Frage, was das

00:57:34.720 --> 00:57:36.660
denn bedeutet und in welcher Hinsicht

00:57:36.660 --> 00:57:38.360
langsam und so, das muss man dann halt

00:57:38.360 --> 00:57:40.580
so ein bisschen auseinander dividieren.

00:57:41.540 --> 00:57:42.700
Und ich, also

00:57:42.700 --> 00:57:44.500
meine Ansicht dazu ist ja so, wenn du

00:57:44.500 --> 00:57:46.820
mir da genau sagen kannst, was du haben willst,

00:57:46.940 --> 00:57:48.720
dann kann ich dir sagen, wie du es hinkriegst.

00:57:48.860 --> 00:57:50.660
Insofern, und dann kannst du so schnell sein,

00:57:50.720 --> 00:57:52.400
wie du sein willst. Also ich kann mir nicht vorstellen,

00:57:52.540 --> 00:57:54.620
dass du mit irgendwas anderem sehr viel

00:57:54.620 --> 00:57:55.100
schneller bist.

00:57:56.240 --> 00:57:58.240
Ja, aber das ist halt wahrscheinlich der Punkt,

00:57:58.360 --> 00:58:00.160
dass die Leute gar nicht den Andenksfall genau verstehen

00:58:00.160 --> 00:58:02.100
und warum Peißen dann da vielleicht langsamer ist, wenn man es

00:58:02.100 --> 00:58:04.140
falsch macht. Wenn du keine Ahnung hast und irgendwas machst

00:58:04.140 --> 00:58:06.040
und dann kann es sein, dass es hinterher langsamer ist, ja.

00:58:06.320 --> 00:58:06.820
Das stimmt. Ja, genau.

00:58:07.460 --> 00:58:09.620
Das stimmt halt auch für alles andere, also insofern, ja.

00:58:10.040 --> 00:58:10.160
Ja.

00:58:13.160 --> 00:58:14.600
Äh, genau.

00:58:16.600 --> 00:58:18.140
Ja, also schöne Sachen, also um

00:58:18.140 --> 00:58:20.060
tatsächlich, wenn du irgendwie einfach sagst, du hast irgendwie

00:58:20.060 --> 00:58:22.140
willst einen Dick draus geben, ist das direkt

00:58:22.140 --> 00:58:24.020
Jason und so, also Fasshapi ist schon irgendwie

00:58:24.020 --> 00:58:25.820
eine schöne Sache für sowas, ich mag das.

00:58:26.140 --> 00:58:27.680
Ja, genau.

00:58:28.360 --> 00:58:29.420
Ah, vielleicht

00:58:29.420 --> 00:58:31.220
die ganze Async-Geschichte.

00:58:32.700 --> 00:58:33.640
Genau, normalerweise

00:58:33.640 --> 00:58:35.620
sind halt, oder was heißt normalerweise,

00:58:35.700 --> 00:58:36.980
aber üblicherweise

00:58:36.980 --> 00:58:38.400
hast du ja dann, also

00:58:38.400 --> 00:58:41.340
machst du ja dann Async, definierst du dann

00:58:41.340 --> 00:58:43.220
eine Funktion als Async und so, dann kann das alles

00:58:43.220 --> 00:58:43.820
schön

00:58:43.820 --> 00:58:47.220
sozusagen, zumindest

00:58:47.220 --> 00:58:48.980
das IOMS sich parallel gemacht werden.

00:58:49.380 --> 00:58:51.480
Jetzt hätte ich mal eine Frage. Ich habe eine ganz fiese, gemeine Frage.

00:58:52.180 --> 00:58:52.420
Okay.

00:58:53.760 --> 00:58:54.540
Was macht eigentlich,

00:58:54.980 --> 00:58:57.040
du kannst aber auch in FastAPI

00:58:57.040 --> 00:59:00.820
normal Funktionen so definieren.

00:59:01.080 --> 00:59:03.020
Oder wenn du auf die Datenbank zugreifst, dann ist das ja auch synchron

00:59:03.020 --> 00:59:04.960
alles. Und dann

00:59:04.960 --> 00:59:05.720
kannst du ja eigentlich nicht mehr

00:59:05.720 --> 00:59:08.940
deine Funktionen async definieren oder wait sagen, sondern du musst das

00:59:08.940 --> 00:59:11.020
halt so aufrufen. Und das funktioniert ja auch einfach

00:59:11.020 --> 00:59:11.280
so.

00:59:14.700 --> 00:59:15.000
Wie

00:59:15.000 --> 00:59:17.020
macht, oder was, warum

00:59:17.020 --> 00:59:18.580
geht das eigentlich? Oder wie macht

00:59:18.580 --> 00:59:20.840
FastAPI das

00:59:20.840 --> 00:59:21.780
eigentlich, dass

00:59:21.780 --> 00:59:24.820
wenn du jetzt ganz viele

00:59:24.820 --> 00:59:26.740
sagen wir mal so, es kommen ganz viele Requests

00:59:26.740 --> 00:59:28.820
parallel rein, sozusagen, und jetzt hast du da

00:59:28.820 --> 00:59:30.540
diese Funktionen, die synchron sind, die sind ja nicht als

00:59:30.540 --> 00:59:32.900
iSync irgendwas definiert, und

00:59:32.900 --> 00:59:34.020
die blockieren also,

00:59:34.640 --> 00:59:36.680
die blockieren ja alles andere. Wie kann es denn sein, dass

00:59:36.680 --> 00:59:38.360
FastAPI dann trotzdem nicht viel langsamer wird?

00:59:38.800 --> 00:59:39.960
Was es tatsächlich nicht wird.

00:59:42.720 --> 00:59:43.300
Gute Frage.

00:59:44.320 --> 00:59:44.920
Mit der Session,

00:59:45.040 --> 00:59:46.180
ich weiß nicht, wie du das regelmäßig

00:59:46.180 --> 00:59:46.980
für die Datenbank...

00:59:46.980 --> 00:59:50.700
Als ich das gesehen hatte,

00:59:50.700 --> 00:59:52.560
dass FastAPI,

00:59:52.700 --> 00:59:54.640
dass man beides verwenden kann und es auch irgendwie magisch

00:59:54.640 --> 00:59:56.600
funktioniert und auch nicht schlechter wird von der

00:59:56.600 --> 00:59:58.480
Performance her, wenn man das irgendwie synchron

00:59:58.480 --> 01:00:00.420
definiert, so, hä, wie macht denn der das?

01:00:00.660 --> 01:00:02.340
Dann muss ich an der Fast-API-Dokumentation ein bisschen

01:00:02.340 --> 01:00:04.080
kramen, bis ich das gefunden habe.

01:00:04.440 --> 01:00:05.900
Und über zwei-, dreimal

01:00:05.900 --> 01:00:08.640
es gibt irgendwie Concurrency, Parallelism

01:00:08.640 --> 01:00:10.400
gibt es einen Teil in der Doku

01:00:10.400 --> 01:00:12.620
und dann kommt so die erste Warnung jetzt ab,

01:00:12.660 --> 01:00:14.380
hier wird es aber technisch und dann kommt noch eine zweite Warnung ab,

01:00:14.420 --> 01:00:16.600
hier wird es aber wirklich fies technisch. Und dann nach der dritten,

01:00:16.740 --> 01:00:18.620
wo dann steht, also das dürfte jetzt nur wirklich überhaupt niemanden

01:00:18.620 --> 01:00:20.580
mehr interessieren, da steht dann noch, wie es wirklich

01:00:20.580 --> 01:00:21.240
funktioniert.

01:00:22.700 --> 01:00:23.640
Jetzt musst du spoilern.

01:00:24.900 --> 01:00:27.160
Naja, also tatsächlich, was FastAPI

01:00:27.160 --> 01:00:28.860
macht, ist, es benutzt ein Threadpool,

01:00:29.080 --> 01:00:30.600
um die Sachen dann halt irgendwie

01:00:30.600 --> 01:00:32.840
concurrent, synchron abzuarbeiten.

01:00:32.980 --> 01:00:34.780
Also synchrone Funktionen landen im Threadpool,

01:00:34.920 --> 01:00:37.020
der das dann macht. Das geht auch. Also du kannst

01:00:37.020 --> 01:00:38.460
ja auch Threads verwenden, um halt

01:00:38.460 --> 01:00:41.200
deine I.O.

01:00:41.260 --> 01:00:43.000
zu multiplexen. Und wenn man das richtig

01:00:43.000 --> 01:00:45.100
macht und, ja, FastAPI

01:00:45.100 --> 01:00:47.020
importiert dann ein Threadpool aus Salad, dann

01:00:47.020 --> 01:00:48.440
funktioniert das auch schnell. Also

01:00:48.440 --> 01:00:50.860
ja, aber wenn man halt

01:00:50.860 --> 01:00:52.920
sozusagen wirklich ressourcenschonend

01:00:52.920 --> 01:00:54.820
das machen will, dann macht es schon

01:00:54.820 --> 01:00:56.200
im Sinne der Async-Geschichten

01:00:56.200 --> 01:00:58.780
Funktionen zu verwenden, dann ist es halt direkt

01:00:58.780 --> 01:01:00.780
nochmal

01:01:00.780 --> 01:01:02.640
irgendwie ein Stückchen eleganter.

01:01:03.220 --> 01:01:03.580
Noch schicker.

01:01:04.320 --> 01:01:05.960
Und dann sind es halt Co-Routinen und nichts Weißes.

01:01:06.240 --> 01:01:07.780
Da haben wir schon immer noch ein bisschen mehr Overhead.

01:01:09.020 --> 01:01:10.540
Oh, was auch gut geht,

01:01:10.860 --> 01:01:12.080
das hat man ja sonst immer auch

01:01:12.080 --> 01:01:12.880
irgendwie,

01:01:14.260 --> 01:01:15.960
sind so Geschichten,

01:01:16.360 --> 01:01:18.820
Background-Tasks. Oh ja, Background-Tasks.

01:01:18.820 --> 01:01:19.840
Ist ja relativ easy, ne?

01:01:20.020 --> 01:01:22.500
Kannst einfach so eine Queue haben und dann

01:01:22.500 --> 01:01:24.560
geht rein und sagst, was ist das, Dekorator?

01:01:24.820 --> 01:01:26.620
oder eine Dependency, die du reingibst,

01:01:26.680 --> 01:01:28.600
Background-Task, und dann hängst du was rein

01:01:28.600 --> 01:01:30.640
und das läuft dann einfach? Du musst da am Anfang einmal

01:01:30.640 --> 01:01:32.900
initiieren, oder? Nee, nee, nee, nee, du sagst,

01:01:33.400 --> 01:01:35.440
das hier ist jetzt ein Background-Task

01:01:35.440 --> 01:01:36.380
und den da waitest du dann.

01:01:37.260 --> 01:01:38.360
Ah ja, okay. Also das kann eine beliebige

01:01:38.360 --> 01:01:39.660
Funktion sein und

01:01:39.660 --> 01:01:41.960
genau.

01:01:45.180 --> 01:01:47.120
Ich weiß es jetzt

01:01:47.120 --> 01:01:49.000
aber nicht mehr genau, aber im Grunde ist das auch schon eine Funktion,

01:01:49.000 --> 01:01:50.920
die installiert drin ist und damit kannst du halt

01:01:50.920 --> 01:01:52.980
so Dinge, aber die

01:01:52.980 --> 01:01:54.580
müssen halt, ich glaube, die müssen dann aber auch

01:01:54.580 --> 01:01:56.740
Async-Central, können die auch synchron sein? Das weiß ich jetzt gar nicht.

01:01:57.380 --> 01:01:58.920
Ich glaube, es geht sogar synchron, aber ich bin auch nicht.

01:01:58.920 --> 01:02:00.540
Kann auch sein, ja. Ich meine, es gibt ja diesen

01:02:00.540 --> 01:02:01.940
Threat-Pool, da kannst du auch mal einen Threat machen.

01:02:02.700 --> 01:02:04.760
Aber für viele einfache Fälle, also das Problem

01:02:04.760 --> 01:02:07.160
ist natürlich, wenn du da jetzt irgendwas sehr CPU-intensives

01:02:07.160 --> 01:02:08.640
drin machst, das geht natürlich eigentlich

01:02:08.640 --> 01:02:10.740
da nicht. Aber wenn du da drin nur irgendwas

01:02:10.740 --> 01:02:12.640
machst, wo du auf I.O. wartest, also du machst

01:02:12.640 --> 01:02:14.020
eigentlich nicht wirklich was, sondern du wartest nur,

01:02:14.640 --> 01:02:16.660
dann ist das

01:02:16.660 --> 01:02:18.580
natürlich sehr bequem, dass du das halt direkt integriert hast

01:02:18.580 --> 01:02:20.580
und nicht wie, also was man in Django und so

01:02:20.580 --> 01:02:22.400
macht, dann nimmt man halt so Celery oder sowas

01:02:22.400 --> 01:02:24.340
oder irgendeine andere Task-Queue und dann startet

01:02:24.340 --> 01:02:26.060
man halt, schmeißt man das irgendwas mal

01:02:26.060 --> 01:02:28.240
in die Queue, dann gibt es irgendwie andere Dinge, die holen

01:02:28.240 --> 01:02:30.200
sich das aus der Queue da wieder raus. Ja, und dann in die Queue schmeißt

01:02:30.200 --> 01:02:31.840
man es halt erstmal weg zu realisieren in irgendwie

01:02:31.840 --> 01:02:33.860
ein String-Format und das

01:02:33.860 --> 01:02:36.320
Ja, ja gut, also es gibt

01:02:36.320 --> 01:02:38.260
halt Dinge, für die geht es nicht anders, geht es auch mit

01:02:38.260 --> 01:02:40.040
Fast-DP, ging es nicht, also wenn du, wie gesagt,

01:02:40.120 --> 01:02:42.400
einen Berechnungsjob machst, dann das kannst

01:02:42.400 --> 01:02:44.120
du halt nicht in deinem Web-Server-Prozess machen, weil

01:02:44.120 --> 01:02:46.220
wenn du das machst, dann machst du halt sonst nichts mehr, dann

01:02:46.220 --> 01:02:48.100
kannst du nicht mehr auf Requests antworten, was natürlich

01:02:48.100 --> 01:02:50.160
Ja, und irgendwie muss man es ja dann realisieren, damit es

01:02:50.160 --> 01:02:51.820
abgespeichert werden kann zwischendurch, aber

01:02:51.820 --> 01:02:54.460
Genau, genau. Und wenn du es

01:02:54.460 --> 01:02:56.100
in einem anderen Prozess machen willst, dann musst du irgendwie

01:02:56.100 --> 01:02:58.320
das serialisieren und dann irgendwo anders aufrufen.

01:02:58.720 --> 01:03:00.600
Ja. Insofern

01:03:00.600 --> 01:03:02.240
es gibt halt diverse Fälle,

01:03:02.440 --> 01:03:04.320
in denen kommst du nicht drum rum, aber für viele

01:03:04.320 --> 01:03:06.360
kleinere Sachen, du willst eine E-Mail wegschicken oder

01:03:06.360 --> 01:03:07.760
du willst halt einfach nur

01:03:07.760 --> 01:03:11.120
Kurze Berechnung.

01:03:12.460 --> 01:03:14.240
Berechnung ist nicht so gut, aber du machst halt

01:03:14.240 --> 01:03:15.980
irgendwas, du machst eine andere API ab oder

01:03:15.980 --> 01:03:18.420
du schickst irgendwas irgendwo hin oder so, dann ist egal.

01:03:18.560 --> 01:03:19.960
Dann kannst du das halt machen.

01:03:20.160 --> 01:03:21.960
Und das dürften die allermeisten Fälle

01:03:21.960 --> 01:03:22.660
sein eigentlich.

01:03:23.980 --> 01:03:25.540
Also das ist halt auch integriert.

01:03:26.980 --> 01:03:27.940
Dann, was auch

01:03:27.940 --> 01:03:29.860
integriert ist, ist halt statische Files, auch wieder

01:03:29.860 --> 01:03:31.900
aus Zalett, aber genau

01:03:31.900 --> 01:03:34.000
den Code habe ich mal geklaut

01:03:34.000 --> 01:03:34.780
für diese Django

01:03:34.780 --> 01:03:36.980
Files-Response-Geschichten.

01:03:39.460 --> 01:03:40.020
Und

01:03:40.020 --> 01:03:41.740
ja, das ist, du kannst halt

01:03:41.740 --> 01:03:43.240
dadurch, dass das halt so

01:03:43.240 --> 01:03:44.860
effizient geht mit

01:03:44.860 --> 01:03:47.660
LibUV, UV-Loop, UV-Corn,

01:03:48.120 --> 01:03:49.140
kannst du halt auch Files

01:03:49.140 --> 01:03:51.020
sorgen, was du normalerweise in einem Applikationsserver

01:03:51.020 --> 01:03:52.200
nie machen würdest, aber

01:03:52.200 --> 01:03:54.940
dadurch, dass jetzt halt nichts mehr kostet, irgendwie

01:03:54.940 --> 01:03:56.560
eine Verbindung auf, also weil das Problem

01:03:56.560 --> 01:03:58.880
bei Filesorving ist halt,

01:03:58.980 --> 01:04:00.900
das sind halt Requests, die lange laufen. Also normalerweise

01:04:00.900 --> 01:04:02.540
macht das von außen dann der Web-Server, also keine Ahnung,

01:04:02.640 --> 01:04:04.820
der Nginx-Server. Nginx oder ein Apache oder

01:04:04.820 --> 01:04:06.740
sonst irgendwas, genau,

01:04:06.860 --> 01:04:07.700
oder dein CDN,

01:04:08.620 --> 01:04:10.680
weil, ja, eben

01:04:10.680 --> 01:04:12.320
wenn ein Applikationsserver

01:04:12.320 --> 01:04:14.400
lange Zeit irgendwie

01:04:14.400 --> 01:04:16.800
einen Request ausliefert, dann ist der halt belegt und kann sonst nichts

01:04:16.800 --> 01:04:18.960
mehr machen. Und du hast normalerweise immer nur so ein paar.

01:04:19.140 --> 01:04:25.560
Und wenn dann halt mehrere Leute irgendwie Files runterladen, dann ist deine Webseite halt nicht mehr erreichbar.

01:04:25.940 --> 01:04:26.820
Das ist halt schlecht.

01:04:26.980 --> 01:04:30.140
Daher normalerweise statische Files ausliefern machst du halt von woanders.

01:04:31.040 --> 01:04:36.920
Aber wenn du jetzt irgendwie das effizient IO machen kannst, dann macht das ja nichts.

01:04:37.240 --> 01:04:39.660
Dann kann das halt auch dein Applikationsserver machen.

01:04:40.260 --> 01:04:44.520
Und deswegen statische Files ausliefern kannst du einfach so vom Applikationsserver aus.

01:04:44.520 --> 01:04:56.600
Was natürlich total cool ist, weil du kannst nämlich dann auch die ganzen anderen Sachen machen, die halt man so vielleicht auch braucht, die sonst halt sehr schwierig sind, wie sowas wie Authentifizierung und Autorisierung und so.

01:04:56.840 --> 01:05:04.820
Das ist halt, wenn das ein anderer Server macht als dein Applikationsserver, eher ätzend und so geht das halt relativ einfach.

01:05:05.800 --> 01:05:10.620
Mit den Dekoratoren, die halt die Routen verbinden, dass du halt so Router hast, so ein bisschen wie du es in Flask kennst.

01:05:11.380 --> 01:05:12.240
Ja, aber auch

01:05:12.240 --> 01:05:14.040
tatsächlich ein bisschen, es gibt sogar dann,

01:05:14.620 --> 01:05:16.540
ich glaube, das gibt es in Flask nicht, aber wahrscheinlich

01:05:16.540 --> 01:05:18.120
erzähle ich jetzt Unsinn, ich habe keine Ahnung von Flask, aber

01:05:18.120 --> 01:05:20.500
dass du das aufblenden kannst

01:05:20.500 --> 01:05:22.140
in unterschiedliche, dass du sagen kannst,

01:05:22.220 --> 01:05:25.020
unter diesem

01:05:25.020 --> 01:05:26.440
Pfad, dafür ist dieser Router

01:05:26.440 --> 01:05:28.040
zuständig. Genau, du kannst halt die Router unternehmen,

01:05:28.140 --> 01:05:29.960
du kannst auch unterschiedliche Regeln dann versetzen oder

01:05:29.960 --> 01:05:32.300
Authentifizierung für einen Router verlangen oder sowas alles.

01:05:32.580 --> 01:05:34.400
Du kannst die Responses dafür definieren,

01:05:34.460 --> 01:05:36.280
die du halt haben willst, für den Router, die dir halt

01:05:36.280 --> 01:05:37.940
rausgegeben werden und sowas alles, die

01:05:37.940 --> 01:05:38.700
Vollfehler-Codes.

01:05:39.180 --> 01:05:41.160
Damit kannst du eigentlich deine ganze Applikation

01:05:41.160 --> 01:05:42.680
halt irgendwie hübsch aufteilen.

01:05:43.780 --> 01:05:45.300
Und etwas, was es in Flask gibt,

01:05:45.380 --> 01:05:47.400
was es in FastAPI

01:05:47.410 --> 01:05:48.990
nicht gibt, ist so ein Plug-in-System.

01:05:49.370 --> 01:05:51.310
Also ich meine, das ist halt die Frage, wie teilst du Sachen auf?

01:05:51.790 --> 01:05:53.430
In Django würde man das mit Django-Apps

01:05:53.430 --> 01:05:55.410
vielleicht machen, in Flask hast du halt diese Plug-ins

01:05:55.410 --> 01:05:57.670
und in FastAPI

01:05:57.670 --> 01:05:58.490
hast du wieder noch.

01:05:59.510 --> 01:06:01.250
Aber du hast halt einmal die Möglichkeit, über die

01:06:01.250 --> 01:06:03.270
Router das aufzuteilen und dann noch die andere Möglichkeit

01:06:03.270 --> 01:06:05.330
ist halt, über Dependency Injection das zu

01:06:05.330 --> 01:06:07.110
machen. Ja, man kriegt ja schon

01:06:07.110 --> 01:06:09.310
irgendwie so eine hübsche Applikationsstruktur dann damit hin.

01:06:09.590 --> 01:06:09.690
Ja.

01:06:12.190 --> 01:06:13.270
Also ich finde das

01:06:13.270 --> 01:06:15.310
ganz nett, vielleicht darzustellen nochmal zu Typer.

01:06:15.310 --> 01:06:17.110
Also das ist auch ein Projekt von Ramirez

01:06:17.110 --> 01:06:19.170
von Chiantolo. Das hat es so ähnlich gemacht.

01:06:19.230 --> 01:06:20.950
Das setzt auch auf Klick auf und macht halt auch

01:06:20.950 --> 01:06:22.650
mit Type Annotation, das ist eine Kommandozeilen

01:06:22.650 --> 01:06:24.970
Geschichte, die so ein bisschen ähnlich funktioniert

01:06:24.970 --> 01:06:25.750
wie FastAPI.

01:06:26.810 --> 01:06:28.850
Und das in der Kombination ist halt irgendwie sehr, sehr nett,

01:06:28.930 --> 01:06:30.490
weil man halt irgendwie damit dann

01:06:30.490 --> 01:06:32.370
seine Applikation steuern kann.

01:06:33.610 --> 01:06:34.710
Ja, gefällt mir auch sehr gut.

01:06:36.090 --> 01:06:36.730
Ja, verwende ich

01:06:36.730 --> 01:06:38.090
jetzt auch schon ein paar Mal verwendet.

01:06:38.550 --> 01:06:40.750
Das ist irgendwie so sehr charmant, falls ihr das kennt. Das macht irgendwie Spaß,

01:06:40.750 --> 01:06:42.770
damit zu arbeiten. Das ist diese Developer Experience

01:06:42.770 --> 01:06:44.410
irgendwie, mit der ich halt mag, irgendwie

01:06:44.410 --> 01:06:46.750
modern zu arbeiten mit den ganzen modernen

01:06:47.110 --> 01:06:48.590
Tools. Da bin ich auch,

01:06:48.970 --> 01:06:50.750
ich muss das nicht schwierig haben.

01:06:50.970 --> 01:06:52.990
Das ist irgendwie nervig. Also, ja, man kann

01:06:52.990 --> 01:06:54.810
durch diesen Berg boxen und dann,

01:06:55.170 --> 01:06:56.730
ja, I'm the Hero, ich habe das Schwert

01:06:56.730 --> 01:06:57.710
rausgezogen.

01:06:58.950 --> 01:07:00.870
Ja, ich kann mit meiner Zeit

01:07:00.870 --> 01:07:01.510
Besseres anfangen.

01:07:02.790 --> 01:07:03.770
Ja, naja.

01:07:04.690 --> 01:07:06.910
Ich meine, die

01:07:06.910 --> 01:07:08.950
anderen Sachen haben ja auch so ein bisschen was für sich.

01:07:09.690 --> 01:07:10.670
Du meinst, die sind charmant.

01:07:11.130 --> 01:07:11.910
Nee, es ist nicht nur,

01:07:12.030 --> 01:07:14.830
tatsächlich bist du dann halt eben

01:07:14.830 --> 01:07:16.110
nicht auf eine Idee angewiesen, zum Beispiel.

01:07:17.110 --> 01:07:19.570
Und du kannst halt schöner allgemeiner

01:07:19.570 --> 01:07:21.910
Ja, aber ich weiß nicht, ob das jetzt ein Feature

01:07:21.910 --> 01:07:23.590
oder ein Feed ist, dass ich nicht auf

01:07:23.590 --> 01:07:25.650
eine IDE angewiesen sein muss. Also come on.

01:07:26.450 --> 01:07:26.810
Ja.

01:07:29.810 --> 01:07:31.370
Also inzwischen bin ich da ja nicht mehr so.

01:07:31.570 --> 01:07:33.430
Der Entharkt ist nur mit meinem BI gestrandet auf meinem

01:07:33.430 --> 01:07:35.050
Telefonsitze. Okay, maybe.

01:07:35.770 --> 01:07:37.550
Nein, aber ich meine, vor ein paar Jahren

01:07:37.550 --> 01:07:39.170
hätte ich dann auch gesagt, so IDE ist das.

01:07:39.290 --> 01:07:40.890
Alles Quatsch. Auch keiner

01:07:40.890 --> 01:07:42.730
BI. Ja.

01:07:44.190 --> 01:07:45.370
Aber inzwischen,

01:07:45.530 --> 01:07:47.090
ich meine, ich habe ja einfach mir dann vorgenommen, okay,

01:07:47.110 --> 01:07:48.290
bevor ich dann irgendwie mal so

01:07:48.290 --> 01:07:51.090
rente, muss ich das mal ausprobiert haben

01:07:51.090 --> 01:07:52.950
und habe dann jetzt mehr Peitschamen gemacht,

01:07:53.010 --> 01:07:55.170
mehr VS Code und muss sagen, ach ja, das ist eigentlich schon ganz okay.

01:07:56.930 --> 01:07:57.250
Aber...

01:07:57.250 --> 01:07:58.730
Ja, ich probiere es ja gerade einen anderen Weg herum.

01:07:58.810 --> 01:08:00.890
Ich versuche gerade so ein bisschen wie Eis zu lernen nochmal, aber

01:08:00.890 --> 01:08:03.150
ja, das ist halt, die Konfiguration

01:08:03.150 --> 01:08:05.010
ist so ein bisschen pain, aber wenn man einmal durchgestiegen ist,

01:08:05.050 --> 01:08:07.450
dann geht es so ein bisschen, also, aber ich sage mal, das Produktivitätslevel

01:08:07.450 --> 01:08:09.010
ist schon ganz nett für

01:08:09.010 --> 01:08:11.110
bestimmte TAS, aber für bestimmte TAS halt einfach auch nicht.

01:08:11.790 --> 01:08:13.010
Ja, also

01:08:13.010 --> 01:08:14.550
genau, also ich will,

01:08:14.770 --> 01:08:16.790
ja, es gibt Gründe, warum es so ist,

01:08:16.850 --> 01:08:18.090
es ist und das ist auch eigentlich gut.

01:08:19.010 --> 01:08:20.610
Aber, ach, naja,

01:08:20.730 --> 01:08:21.150
vielleicht Romantik.

01:08:22.970 --> 01:08:24.770
Ich glaube, wenn man neu anfängt,

01:08:24.890 --> 01:08:26.490
ist es so ein bisschen, ja. Ja, dann machen wir das

01:08:26.490 --> 01:08:27.330
vielleicht einfach gar nicht.

01:08:30.190 --> 01:08:30.890
Die ganzen,

01:08:31.230 --> 01:08:32.510
was haben wir denn?

01:08:33.770 --> 01:08:34.610
Ach so, Flask

01:08:34.610 --> 01:08:36.130
auch irgendwie gibt,

01:08:37.490 --> 01:08:38.310
jedenfalls die alte,

01:08:38.650 --> 01:08:40.590
also Flask 2.0 ist ja auch noch nicht so

01:08:40.590 --> 01:08:42.690
lange her. Das kann

01:08:42.690 --> 01:08:44.330
auch SGI, aber Flask war

01:08:44.330 --> 01:08:46.390
sehr stark an WSGI

01:08:46.390 --> 01:08:48.970
dran gebunden und deswegen

01:08:48.970 --> 01:08:49.830
ist eigentlich

01:08:49.830 --> 01:08:52.830
also Flask

01:08:52.830 --> 01:08:54.830
unter 2, das wird mit SGI nie funktionieren.

01:08:54.990 --> 01:08:56.250
Das ist immer fest auf.

01:08:56.530 --> 01:08:58.790
Deswegen nimmt man ja neue Software. Genau, also

01:08:58.790 --> 01:09:00.630
insofern, das ist halt sowas, wenn man jetzt

01:09:00.630 --> 01:09:02.670
irgendwie was mit WebSockets machen wollen würde.

01:09:03.370 --> 01:09:04.810
Ich glaube, WebSockets hat man auch

01:09:04.810 --> 01:09:06.350
noch nicht so richtig. Dann

01:09:06.350 --> 01:09:08.450
ist Flask, also jedenfalls das alte Flask,

01:09:08.570 --> 01:09:10.710
nicht unbedingt, ich glaube, Flask 2.0 geht

01:09:10.710 --> 01:09:12.790
vielleicht und Quad

01:09:12.790 --> 01:09:14.370
geht halt auch oder vielleicht ist

01:09:14.370 --> 01:09:16.450
Quad und 2 plus 2 0 aufgegangen.

01:09:16.550 --> 01:09:17.250
Ich weiß es gar nicht mehr so genau.

01:09:18.730 --> 01:09:20.730
Aber das alte geht auf jeden Fall

01:09:20.730 --> 01:09:21.190
nicht so richtig.

01:09:23.150 --> 01:09:24.950
Fast API, kein Problem,

01:09:25.170 --> 01:09:26.810
geht einfach so. Und das ist natürlich

01:09:26.810 --> 01:09:28.730
auch nett, weil für manche Sachen braucht man das ja

01:09:28.730 --> 01:09:30.770
vielleicht schon. Wobei

01:09:30.770 --> 01:09:32.270
ich da inzwischen so ein bisschen,

01:09:32.550 --> 01:09:34.950
ich habe das ja auch benutzt und habe extra

01:09:34.950 --> 01:09:36.630
irgendwie, naja gut, wenn man

01:09:36.630 --> 01:09:38.490
ein Fast API machen möchte,

01:09:38.610 --> 01:09:39.790
dann kann man natürlich auch direkt

01:09:39.790 --> 01:09:42.650
mit allen Pfeifen

01:09:42.650 --> 01:09:44.230
und Witzels

01:09:44.230 --> 01:09:46.390
und Websocket und so machen.

01:09:47.630 --> 01:09:48.790
Dachte ich dann und

01:09:48.790 --> 01:09:50.330
hab das dann halt auch mal benutzt.

01:09:51.850 --> 01:09:53.090
Du hast auch ein Tutorial dafür gemacht

01:09:53.090 --> 01:09:54.830
auf YouTube, glaube ich, wo das ein bisschen

01:09:54.830 --> 01:09:56.750
gezeigt wird, FastAPI. Habe ich das mal gemacht?

01:09:57.590 --> 01:09:59.050
Zumindest das Topic, was du dann

01:09:59.050 --> 01:10:01.090
wirklich gemacht hast. Ich glaube, das ist einfach

01:10:01.090 --> 01:10:02.370
nur gestreamt. Das ist einfach nicht

01:10:02.370 --> 01:10:04.590
das Einzige, wo ich mir mal was

01:10:04.590 --> 01:10:06.310
geplant habe, war zu

01:10:06.310 --> 01:10:08.830
NaiveBase implementieren. Da habe ich vorher mal überlegt, was ich

01:10:08.830 --> 01:10:10.750
dann implementieren will eigentlich. Die ganzen

01:10:10.750 --> 01:10:12.910
anderen Streams sind alle einfach nur so

01:10:12.910 --> 01:10:15.090
alle furchtbar. So kann man es auch

01:10:15.090 --> 01:10:17.010
umschreiben. Und das ist einfach nur so, ich setze mich hin

01:10:17.010 --> 01:10:19.030
und programmiere irgendwas. Und das ist natürlich manchmal spannend,

01:10:19.410 --> 01:10:20.470
häufig total langweilig.

01:10:21.370 --> 01:10:23.050
Aber für mich, der Vorteil dabei ist

01:10:23.050 --> 01:10:25.110
wenig Verbreitungsaufwand.

01:10:25.270 --> 01:10:26.970
Man kann das sehen, wenn ihr Jochen mal sehen wollt,

01:10:27.050 --> 01:10:27.790
dann könnt ihr mal da reingucken.

01:10:29.010 --> 01:10:30.610
Vielleicht sollte ich aber ein bisschen mehr

01:10:30.610 --> 01:10:33.030
besser produzierte Geschichten

01:10:33.030 --> 01:10:34.310
machen, das ist vielleicht gar nicht so blöd.

01:10:34.730 --> 01:10:37.030
Ich habe jetzt sowieso nicht so viel Zeit mehr, irgendwie Streams zu machen.

01:10:37.050 --> 01:10:38.810
Wir haben gehört, du sollst einen Didaktik-Code machen, Jochen, haben wir

01:10:38.810 --> 01:10:39.770
eine Empfehlung bekommen.

01:10:39.830 --> 01:10:42.650
Ja, genau, die ganzen

01:10:42.650 --> 01:10:44.490
R's und Übers. Ja, das stimmt.

01:10:44.890 --> 01:10:46.270
Ich wäre eher für Didaktik.

01:10:46.470 --> 01:10:46.910
Didaktik.

01:10:48.690 --> 01:10:49.830
Ja, gut.

01:10:50.590 --> 01:10:51.950
Eigentlich am besten alles austauschen.

01:10:52.110 --> 01:10:53.390
Didaktik, Rhetorik.

01:10:54.530 --> 01:10:55.830
Das Gesicht. Ja.

01:10:56.490 --> 01:10:57.190
Ich verstehe schon.

01:10:57.570 --> 01:10:58.850
Ja, ein bisschen Schminke hier und da.

01:11:00.590 --> 01:11:02.170
Ja, also jetzt,

01:11:02.310 --> 01:11:04.050
ich komme sowieso nicht mehr so häufig zum Streamen,

01:11:04.050 --> 01:11:05.550
oder habe das auch noch nicht geschafft,

01:11:05.690 --> 01:11:07.890
einen Schedule hinzukriegen, wo der irgendwie funktioniert.

01:11:08.610 --> 01:11:10.310
daher, vielleicht mache ich das einfach so.

01:11:10.370 --> 01:11:11.310
Dann habe ich ja in der Zeit, wo ich,

01:11:12.070 --> 01:11:14.410
bereite ich vielleicht was vor und dann mache ich das halt irgendwie mal ein bisschen

01:11:14.410 --> 01:11:15.850
besser vorbereitet und dann halt seltener.

01:11:16.230 --> 01:11:18.450
Einmal die Woche reicht vielleicht. Einmal die Woche oder alle zwei

01:11:18.450 --> 01:11:19.810
Wochen oder sowas und dann halt dafür, aber

01:11:19.810 --> 01:11:21.670
vielleicht irgendein Thema ein bisschen fokussierter.

01:11:23.110 --> 01:11:23.850
Ja, muss man gucken.

01:11:23.850 --> 01:11:25.450
Gut, dann kannst du auch wieder Gäste einladen, wie mich.

01:11:25.850 --> 01:11:26.330
Ja, gerne.

01:11:27.650 --> 01:11:29.610
Aber every day dann da, da bin ich raus, wenn du da

01:11:29.610 --> 01:11:31.790
anfängst, deine Tests neu zu schreiben

01:11:31.790 --> 01:11:33.210
oder irgendwelche Pakete nachzunstallieren.

01:11:34.890 --> 01:11:35.210
Ja.

01:11:36.230 --> 01:11:37.370
Ist ja auch mal nett zu sehen.

01:11:38.170 --> 01:11:40.630
Wir haben jetzt davon 100 Folgen oder was archiviert

01:11:40.630 --> 01:11:42.170
auf unserer Podcast-YouTube-Seite.

01:11:42.890 --> 01:11:43.050
Ja.

01:11:43.410 --> 01:11:44.130
Das war schon einiges.

01:11:44.470 --> 01:11:45.250
Ja, ja, schon einiges.

01:11:45.550 --> 01:11:45.870
Ja, klar.

01:11:48.150 --> 01:11:48.470
Genau.

01:11:51.310 --> 01:11:52.050
Was hatte ich denn noch?

01:11:52.270 --> 01:11:53.390
Ach genau, WebSockets, genau.

01:11:53.530 --> 01:11:55.510
Dafür hatte ich WebSockets so ein bisschen verwendet.

01:11:55.850 --> 01:12:00.050
Und ja, also ich dachte so, okay, wenn man das denn verwenden kann,

01:12:00.090 --> 01:12:01.710
das wäre einfach voll cool, dann machen wir das einfach so.

01:12:03.230 --> 01:12:04.910
Das geht tatsächlich ganz gut mit Class-App, gell?

01:12:04.930 --> 01:12:05.630
Das geht auch sehr gut, ja.

01:12:05.630 --> 01:12:07.330
Also wenn man so einen Anwendungshalter dafür hat,

01:12:07.850 --> 01:12:09.710
Aber diesen Webzock ist jetzt prinzipiell

01:12:09.710 --> 01:12:10.970
auf die Nerven gegangen, habe ich gemerkt.

01:12:11.590 --> 01:12:13.890
Also es war schwieriger, als ich jetzt gedacht

01:12:13.890 --> 01:12:15.450
hätte. Ich bin da auf viele Dinge

01:12:15.450 --> 01:12:17.410
gestoßen, wo ich schon das Gefühl habe,

01:12:17.670 --> 01:12:19.910
war ja, das ist gar nicht so einfach.

01:12:20.490 --> 01:12:21.890
Und also fängt

01:12:21.890 --> 01:12:23.750
halt schon, und zwar nicht nur auf, also auf der

01:12:23.750 --> 01:12:25.670
Serverseite muss man halt aufpassen, wenn man da halt irgendwie

01:12:25.670 --> 01:12:27.770
was verwendet, was halt nicht gut damit klarkommt,

01:12:28.390 --> 01:12:29.770
dass man halt immer eine Verbindung offen

01:12:29.770 --> 01:12:31.590
halten muss, dann

01:12:31.590 --> 01:12:33.790
ist es halt schlecht. Also wenn man

01:12:33.790 --> 01:12:35.490
halt irgendwie so sich darüber keine Gedanken macht,

01:12:35.610 --> 01:12:37.010
oder sowas und dann wieder da irgendwie hin.

01:12:37.050 --> 01:12:38.630
Und benutzt halt einfach WebSockers einfach so.

01:12:39.270 --> 01:12:41.690
Dann kriegt man Probleme.

01:12:42.350 --> 01:12:43.470
Mit FastAPI geht das, aber

01:12:43.470 --> 01:12:45.590
naja. Und dann ist halt die Frage, wie gut kann man das so

01:12:45.590 --> 01:12:47.610
verwenden? Das geht mit FastAPI

01:12:47.610 --> 01:12:49.190
oder geht auch ganz gut.

01:12:50.530 --> 01:12:51.630
Und dann ist

01:12:51.630 --> 01:12:53.590
aber noch die Client-Seite auch schwierig. Das ist halt nicht so

01:12:53.590 --> 01:12:55.330
richtig einfach. Weil was passiert zum Beispiel, wenn

01:12:55.330 --> 01:12:57.410
jetzt die Server-Seite sich

01:12:57.410 --> 01:12:58.210
neu startet?

01:12:59.830 --> 01:13:01.030
Du musst eine neue Verbindung bekommen.

01:13:01.610 --> 01:13:03.490
Ja, du musst halt retryen. Weil ansonsten, wenn du einfach nichts

01:13:03.490 --> 01:13:05.450
machst, dann ist die Verbindung halt weg. Und das bedeutet,

01:13:05.610 --> 01:13:07.590
weg, tot, aus. Genau, du kriegst einfach keine

01:13:07.590 --> 01:13:09.530
Absätze mehr. Aus die Maus, danke, nein, das war's, tschüss.

01:13:10.130 --> 01:13:11.430
Ja, das heißt, du musst reconnecten.

01:13:11.850 --> 01:13:13.610
So, jetzt seht ihr das erste

01:13:13.610 --> 01:13:14.970
Reconnect vielleicht nicht, dann, okay,

01:13:15.170 --> 01:13:17.470
vielleicht noch einen zweiten. Dann gibt's halt unterschiedliche

01:13:17.470 --> 01:13:19.450
Sachen, die auftreten können. Auf die musst du

01:13:19.450 --> 01:13:20.910
irgendwie reagieren. Dann,

01:13:21.130 --> 01:13:22.890
und dann wird's halt... Ami-Quota exceded.

01:13:23.370 --> 01:13:24.690
Ja, dann,

01:13:25.130 --> 01:13:27.390
ja, auch auf der Serverseite auch wieder

01:13:27.390 --> 01:13:28.690
so ein Problem. Du musst halt dann die Sachen,

01:13:29.450 --> 01:13:30.950
du weißt ja nicht unter Umständen, wo du dann

01:13:30.950 --> 01:13:33.310
landest, ja, also entweder du hast nur einen einzigen Prozess,

01:13:33.410 --> 01:13:35.350
das ist aber vielleicht dann noch ein bisschen wenig, oder

01:13:35.350 --> 01:13:37.770
du musst halt dafür sorgen, dass die alle gleich sind

01:13:37.770 --> 01:13:39.550
irgendwie in gewisser Weise, dass du auf alle

01:13:39.550 --> 01:13:41.510
connecten kannst und es immer das Gleiche dann

01:13:41.510 --> 01:13:43.590
passiert. Ach ja,

01:13:43.930 --> 01:13:44.990
aber so wirklich,

01:13:45.850 --> 01:13:47.650
also was dann wirklich

01:13:47.650 --> 01:13:49.550
so ein bisschen so Software-Architektur-Problem wird,

01:13:49.670 --> 01:13:50.390
ist halt sowas wie,

01:13:52.170 --> 01:13:55.530
du kriegst jetzt die unterschiedlichen Informationen

01:13:55.530 --> 01:13:57.730
rein, halt einmal über einen Websocket, kriegst du halt irgendwelche Events,

01:13:57.810 --> 01:13:59.670
dass irgendwas passiert ist, du holst

01:13:59.670 --> 01:14:01.690
aber auch manchmal Sachen. Und manchmal sind das ja die gleichen

01:14:01.690 --> 01:14:03.510
Informationen. Nur in dem einen Fall holst du sie halt

01:14:03.510 --> 01:14:05.690
so eine HTTP-JSON-API

01:14:05.690 --> 01:14:07.970
und im anderen Fall kriegst du es halt über einen Websocket rein.

01:14:08.750 --> 01:14:10.050
Und jetzt musst du es halt irgendwie so chronisieren.

01:14:10.170 --> 01:14:12.070
Du darfst halt nicht Sachen doppelt zählen oder so.

01:14:12.210 --> 01:14:14.050
Und dann musst du das halt irgendwie

01:14:14.050 --> 01:14:15.630
abstrahieren, dass du in dem

01:14:15.630 --> 01:14:18.290
Teil, wo du halt

01:14:18.290 --> 01:14:19.990
deine Wahrheit über den

01:14:19.990 --> 01:14:21.950
Application-State halt hältst, zum Beispiel

01:14:21.950 --> 01:14:24.390
in Vue, in so einem Pinia-Store

01:14:24.390 --> 01:14:26.210
oder sowas, musst du

01:14:26.210 --> 01:14:28.350
halt so wegabstrahieren,

01:14:28.350 --> 01:14:30.230
dass es dir an der Stelle egal sein kann, ob das jetzt

01:14:30.230 --> 01:14:32.330
über einen Websocket kam oder woanders her oder so. Und dann musst du halt

01:14:32.330 --> 01:14:34.290
anfangen, so, muss er schon ein Software-Struktur

01:14:34.290 --> 01:14:35.290
machen, so ein Frontend.

01:14:37.010 --> 01:14:38.610
Oh nein, wer macht denn das?

01:14:39.390 --> 01:14:40.390
Wer kennt schon nicht so richtig

01:14:40.390 --> 01:14:41.870
hin und wer macht das denn sauber?

01:14:42.210 --> 01:14:43.910
Pinia war ein guter Sighted, das ist nämlich für

01:14:43.910 --> 01:14:46.170
einen Superstore, ich finde den auch sehr viel angenehmer

01:14:46.170 --> 01:14:47.290
zu schreiben als Vuex,

01:14:47.890 --> 01:14:49.330
den man für Vue.js nehmen kann, ja.

01:14:49.830 --> 01:14:51.750
Ja, gefällt mir auch sehr gut, aber

01:14:51.750 --> 01:14:53.970
tatsächlich irgendwie, manchmal

01:14:53.970 --> 01:14:56.150
habe ich auch so Dinge, wo ich denke, oh okay, der Zustand

01:14:56.150 --> 01:14:57.970
ist jetzt aber nicht, warum steht denn da, da ist irgendwas

01:14:57.970 --> 01:14:59.950
übrig geblieben und da ist irgendwas inkonsistent, wie ist das denn

01:14:59.950 --> 01:15:01.830
passiert? Das kann ja jetzt eigentlich gar nicht sein.

01:15:02.330 --> 01:15:04.630
Es ist schon so ein bisschen hakelig und

01:15:04.630 --> 01:15:06.810
man muss da drüber nachdenken und es ist

01:15:06.810 --> 01:15:08.490
alles nicht mehr so einfach. Also das ist,

01:15:09.050 --> 01:15:10.690
hätte ich jetzt gar nicht so erwartet, dass

01:15:10.690 --> 01:15:12.710
das so kompliziert auch ist

01:15:12.710 --> 01:15:14.630
irgendwie. Also, aber es ist halt irgendwie,

01:15:14.750 --> 01:15:16.590
ist halt tatsächlich... Ich habe ehrlich gesagt

01:15:16.590 --> 01:15:18.550
auch State immer noch nicht so genau verstanden. Also, weil es ist

01:15:18.550 --> 01:15:20.550
irgendwas, irgendeine Wahrheit hat irgendwer in der Hand

01:15:20.550 --> 01:15:22.410
und der hat den Ball nicht in die richtige Stelle

01:15:22.410 --> 01:15:24.430
geschmissen und die Frage ist, wer sammelt denn alle

01:15:24.430 --> 01:15:26.410
Bälle ein, um hinterher die wieder weiter zu verteilen?

01:15:26.510 --> 01:15:27.830
Also irgendwie so. Das ist so ein bisschen dumm.

01:15:29.250 --> 01:15:30.430
Ja, es ist halt das,

01:15:30.510 --> 01:15:31.530
woraus quasi dann

01:15:31.530 --> 01:15:33.990
das, was du von der Applikation siehst,

01:15:34.050 --> 01:15:35.950
gerendert wird. Und wenn sich das ändert, sollte sich das halt

01:15:35.950 --> 01:15:37.070
im Spaß ändern. Ja, Single Source of Truth.

01:15:37.210 --> 01:15:39.830
Wer weiß das denn überhaupt? Manche Leute rendern ja

01:15:39.830 --> 01:15:40.570
irgendwas, obwohl es gar nicht stimmt.

01:15:42.130 --> 01:15:43.770
Was auch nicht immer falsch sein muss, vielleicht.

01:15:44.270 --> 01:15:45.770
Vielleicht muss man auch manchmal da gucken,

01:15:45.910 --> 01:15:47.890
was ist denn wichtiger? Dass man lange

01:15:47.890 --> 01:15:49.170
wartet, bis man weiß, was wahr ist?

01:15:49.450 --> 01:15:51.610
Nö, man kann ja auch einfach dann so tun, als wüsste man es schon.

01:15:51.950 --> 01:15:54.030
Genau. Und das stimmt ja vielleicht oft auch.

01:15:54.290 --> 01:15:55.710
Vielleicht ja manchmal auch nicht. Und was macht man denn dann?

01:15:55.710 --> 01:15:56.590
Und so. Und ja.

01:15:57.050 --> 01:15:59.870
Ja, aber es wird halt schnell kompliziert.

01:16:00.690 --> 01:16:02.510
Und genau, also das fand ich schon

01:16:02.510 --> 01:16:04.770
ja so ein bisschen, also hätte ich

01:16:04.770 --> 01:16:06.150
jetzt nicht so erwartet, dass es so schlimm ist.

01:16:06.510 --> 01:16:07.990
Und dann eine andere Geschichte, die halt auch

01:16:07.990 --> 01:16:09.290
dann irgendwann,

01:16:10.090 --> 01:16:12.270
ich hätte nicht erwartet, dass es so leicht

01:16:12.270 --> 01:16:13.610
ist, irgendwie

01:16:13.610 --> 01:16:16.670
Polling zu verwenden. Also jetzt mit

01:16:16.670 --> 01:16:18.190
HTMLX zum Beispiel,

01:16:19.370 --> 01:16:20.570
es ist halt super easy

01:16:20.570 --> 01:16:22.650
irgendwie, weil, also ich meine, was ich

01:16:22.650 --> 01:16:24.550
früher halt so gesagt hatte, so, oh, pollen, oh mein Gott,

01:16:24.750 --> 01:16:26.630
also einmal, das macht viel Last auf dem Server, weil du pollst ja die ganze

01:16:26.630 --> 01:16:28.530
Zeit, ne, wenn jetzt viele Leute auf deiner Seite

01:16:28.530 --> 01:16:30.610
sind, dann pollen die die ganze Zeit, super,

01:16:30.690 --> 01:16:33.030
toll, irgendwie habe ich irgendwie viel mehr

01:16:33.030 --> 01:16:35.050
Requests, als ich eigentlich bräuchte

01:16:35.050 --> 01:16:35.410
und so.

01:16:37.270 --> 01:16:38.890
Da muss ich irgendwie

01:16:38.890 --> 01:16:40.930
sicherstellen, dass das JavaScript auch irgendwann aufhört zu

01:16:40.930 --> 01:16:41.190
poilen.

01:16:42.090 --> 01:16:44.970
In der letzten Unterhaltung darüber, da sagtest du, poilen, das will man überhaupt

01:16:44.970 --> 01:16:46.770
nicht machen. Genau. Ruhigbar. Ja, ja, ja, aber

01:16:46.770 --> 01:16:48.910
habe ich jetzt inzwischen dann doch, glaube ich, meine Meinung geändert,

01:16:49.030 --> 01:16:51.030
weil, wenn man das halt so einfach hinschreiben

01:16:51.030 --> 01:16:52.630
kann, wie in HTMLX, wo man schreibt halt

01:16:52.630 --> 01:16:54.990
every two seconds oder so,

01:16:55.130 --> 01:16:56.570
schreibt man ein Attribut, das war's.

01:16:56.990 --> 01:16:58.590
Mehr macht man gar nicht. Und auf der

01:16:58.590 --> 01:17:00.070
Server-Seite schickt man halt,

01:17:00.550 --> 01:17:02.450
man kontrolliert es von der Server-Seite aus und nicht

01:17:02.450 --> 01:17:04.450
von der JavaScript-Seite aus. Und von der

01:17:04.450 --> 01:17:05.710
Server-Seite aus schickt man halt so

01:17:05.710 --> 01:17:07.990
einen Status-Code 286 zurück.

01:17:08.890 --> 01:17:10.210
Ich weiß nicht, der heißt irgendwie auch sowas wie

01:17:10.210 --> 01:17:12.230
Stop-Polling oder sowas. Und dann

01:17:12.230 --> 01:17:14.290
hört es einfach auf. Und in Stop-Polling steht auch

01:17:14.290 --> 01:17:15.890
wie lange, glaube ich sogar, ne? Ja.

01:17:16.530 --> 01:17:18.070
Kann man alles irgendwie setzen und man kann halt auch

01:17:18.070 --> 01:17:19.990
behalten. Ja, klarerweise, ich glaube, wenn du

01:17:19.990 --> 01:17:22.290
einen bestimmten Code machst, also ich glaube 419

01:17:22.290 --> 01:17:24.270
kann das auch sein, dass man dann sagt, ey, hör auf

01:17:24.270 --> 01:17:26.090
jetzt. Besonders wie lange, sonst wirst du

01:17:26.090 --> 01:17:28.250
gebannt oder so. Vier, wie hieß

01:17:28.250 --> 01:17:29.950
der Client hat irgendwas falsch gemacht. Ich weiß es nicht so genau.

01:17:30.050 --> 01:17:31.950
Keine Ahnung. Aber ja, man kann da auf jeden Fall viel machen.

01:17:32.590 --> 01:17:33.850
Und man kann sogar

01:17:33.850 --> 01:17:35.850
das halt einfach so machen, dass man das

01:17:35.850 --> 01:17:38.150
Element, was halt pollt oder so, einfach austauscht

01:17:38.150 --> 01:17:39.750
mit OuterHTML und dann

01:17:39.750 --> 01:17:42.130
kann man einfach das Poll-Ding wegnehmen.

01:17:42.570 --> 01:17:44.290
Also das Neueste ist ja AuthenticationTimeout.

01:17:44.530 --> 01:17:46.170
Und sobald jemand auf irgendwas anderes draufdrückt,

01:17:46.230 --> 01:17:48.010
kann man out of band aber das Pollen ja wieder aktivieren

01:17:48.010 --> 01:17:49.790
und so. Das heißt, also eigentlich

01:17:49.790 --> 01:17:52.010
für ganz viele Fälle, wo man halt

01:17:52.010 --> 01:17:54.030
mal eine Zeit lang irgendwie so Live-Updates oder so

01:17:54.030 --> 01:17:55.950
braucht auf einer Seite, kann man

01:17:55.950 --> 01:17:58.250
das mit Polling relativ schmerzfrei

01:17:58.250 --> 01:17:59.870
machen. Und das war mir

01:17:59.870 --> 01:18:01.790
vorher nicht so klar. Da hätte ich gedacht, oh Mann, das ist ja alles ganz

01:18:01.790 --> 01:18:03.570
furchtbar. Und da würde ich jetzt sagen,

01:18:03.850 --> 01:18:05.730
über die aus der

01:18:05.730 --> 01:18:07.850
HTMX-Erfahrung heraus würde ich sagen, also das ist gar nicht

01:18:07.850 --> 01:18:09.190
so schlimm. Das geht eigentlich relativ gut.

01:18:09.670 --> 01:18:11.390
Und der Riesenvorteil ist halt, es ist komplett

01:18:11.390 --> 01:18:13.590
stateless. Es funktioniert mit

01:18:13.590 --> 01:18:15.490
irgendwie uralten, es funktioniert

01:18:15.490 --> 01:18:17.550
mit ganz so einem Standard-Kram, den man halt so verwendet.

01:18:17.870 --> 01:18:19.630
Braucht nicht irgendwie SGI oder

01:18:19.630 --> 01:18:21.550
Django Channels oder sonst irgendwas. Es funktioniert mit dem

01:18:21.550 --> 01:18:23.890
ganz normalen Stack, den man hat.

01:18:24.690 --> 01:18:24.930
Ja.

01:18:25.670 --> 01:18:27.050
Und dann, ja.

01:18:27.430 --> 01:18:28.710
Vielleicht doch leifer, als man denkt.

01:18:29.170 --> 01:18:31.230
Da ist jetzt nur die Frage halt, wenn man

01:18:31.230 --> 01:18:33.270
viele Clients hat, die einen pollen wollen, ist das vielleicht

01:18:33.270 --> 01:18:35.350
dann doch doof. Ja, aber man

01:18:35.350 --> 01:18:37.250
hat das ja unter Kontrolle. Wenn du sagst, okay, das ist mir

01:18:37.250 --> 01:18:39.090
jetzt zu viel, dann sagst du halt, okay, dann

01:18:39.090 --> 01:18:41.050
polle ich halt nicht jede Sekunde, sondern alle zwei Sekunden

01:18:41.050 --> 01:18:42.410
hast du schon die Last um die Hälfte gesenkt.

01:18:42.610 --> 01:18:45.010
Wenn trotzdem eine Million Leute

01:18:45.010 --> 01:18:47.110
alle zwei Sekunden fragen, ist das vielleicht doof, weil es so viel

01:18:47.110 --> 01:18:49.210
auf einmal sind. Kannst ja dann irgendwann einen Mehrserver kaufen

01:18:49.210 --> 01:18:51.030
und kannst dir dann überlegen, was du machst. Ja, okay, genau.

01:18:51.170 --> 01:18:53.190
Aber das ist halt dann, man weiß

01:18:53.190 --> 01:18:55.070
dann an welcher Linie des Problems,

01:18:55.090 --> 01:18:56.530
in welcher Achse man sich dann abarbeiten kann.

01:18:57.070 --> 01:18:58.750
Ja, also das war

01:18:58.750 --> 01:19:01.010
schon so ein bisschen, also wenn ich mit dem Wissen von

01:19:01.010 --> 01:19:02.690
jetzt, würde ich das nicht nochmal mit wegversorgen.

01:19:04.230 --> 01:19:05.230
Aber jetzt habe ich es halt schon gemacht.

01:19:05.350 --> 01:19:06.950
Ja, weil ihr könnt ja sehen, wie Jochen es versucht hat.

01:19:07.030 --> 01:19:08.870
Das ist ja auch manchmal ganz amüsant.

01:19:08.870 --> 01:19:10.750
Ja. Dann hast du hoffentlich noch

01:19:10.750 --> 01:19:12.870
einen Pick. Ach, Picks. Dann machen wir jetzt Picks.

01:19:13.130 --> 01:19:13.290
Ja, gut.

01:19:14.990 --> 01:19:16.730
Ja, also mein Pick für

01:19:16.730 --> 01:19:17.630
diesmal wäre

01:19:17.630 --> 01:19:20.670
Honsho. Honsho.

01:19:20.750 --> 01:19:21.430
Ist das eine Insel?

01:19:23.510 --> 01:19:24.050
Ne, das ist

01:19:24.050 --> 01:19:25.310
Hauptinsel

01:19:25.310 --> 01:19:28.930
Ich weiß gar nicht, wo der Name herkommt

01:19:28.930 --> 01:19:30.750
ehrlich gesagt, so grübel ich da gerade

01:19:30.750 --> 01:19:32.330
Ne, das ist

01:19:32.330 --> 01:19:34.310
es gibt in der Ruby-Welt

01:19:34.310 --> 01:19:35.510
gibt es ein Ding, das nennt sich Formen

01:19:35.510 --> 01:19:37.890
ist da relativ populär

01:19:37.890 --> 01:19:40.010
und Honshu ist das auch, da ist eine

01:19:40.010 --> 01:19:41.310
Python-Nachimplementation davon

01:19:41.310 --> 01:19:43.710
und das benutzt man, um

01:19:43.710 --> 01:19:45.670
ein

01:19:45.670 --> 01:19:46.650
Proc-File

01:19:46.650 --> 01:19:49.990
zu lesen und dann Dinge, die

01:19:49.990 --> 01:19:51.930
darin stehen, zu starten und zu stoppen

01:19:51.930 --> 01:19:53.730
Also quasi, wenn man jetzt

01:19:53.730 --> 01:19:55.550
so was, man kennt das vielleicht mit Docker-Compose,

01:19:55.630 --> 01:19:57.670
Docker-Compose, Minus-F, irgendeine

01:19:57.670 --> 01:19:59.590
Config, YAML-Config, Up und

01:19:59.590 --> 01:20:01.530
Down und so, dann passiert auch sowas, dann werden alle die

01:20:01.530 --> 01:20:02.950
Dinger hochgefahren oder wieder runtergefahren oder so.

01:20:03.030 --> 01:20:05.010
Also alle Docker-Container, die in der Compose-Vertrags-Schiene haben.

01:20:05.310 --> 01:20:06.810
Jetzt möchte man aber vielleicht zum Beispiel, wenn man

01:20:06.810 --> 01:20:09.270
irgendwie, so wie ich,

01:20:09.510 --> 01:20:10.390
Docker ganz

01:20:10.390 --> 01:20:12.530
nicht so gut

01:20:12.530 --> 01:20:16.990
findet, nicht so gut

01:20:16.990 --> 01:20:17.610
eher so Mittel

01:20:17.610 --> 01:20:19.170
findet, dann

01:20:19.170 --> 01:20:21.150
das nicht verwenden möchte und dann

01:20:21.150 --> 01:20:23.210
ich hätte aber schon diese Funktion gerne, dass ich halt

01:20:23.210 --> 01:20:25.090
mein komplettes System, das ich zum Entwickeln

01:20:25.090 --> 01:20:26.850
brauche, einmal hochfahre und einmal runterfahren kann.

01:20:27.550 --> 01:20:29.110
Dann kann man das halt in

01:20:29.110 --> 01:20:30.970
so ein Proc-File reinschreiben, was man alles

01:20:30.970 --> 01:20:32.230
dafür hochfahren muss und runterfahren muss.

01:20:32.850 --> 01:20:34.910
Und dann nimmt man Honshu und sagt Honshu start und dann passiert

01:20:34.910 --> 01:20:36.750
halt quasi genau das gleiche wie mit Docker-Corpus ab.

01:20:37.250 --> 01:20:37.990
Okay, cool.

01:20:39.210 --> 01:20:40.610
Nur, dass es halt nicht Docker ist, sondern

01:20:40.610 --> 01:20:42.430
einfach ganz normale Prozesse, die gestartet werden.

01:20:42.530 --> 01:20:44.410
Und Proc-File hat ja da auch den Format

01:20:44.410 --> 01:20:46.610
Diverse-Hoster-Könner-Stack-Lesen, Heroku-Könner-Stack-Lesen.

01:20:48.450 --> 01:20:49.070
Und dann kann man

01:20:49.070 --> 01:20:50.930
sich eine Konfiguration bauen und dann werden auf dem Rechner

01:20:50.930 --> 01:20:51.750
Sachen hoch und runter gefahren.

01:20:52.470 --> 01:20:53.990
Ich meine, der Nachteil ist natürlich, es ist nicht isoliert,

01:20:54.050 --> 01:20:55.410
der Vorteil ist natürlich, es ist nicht isoliert.

01:20:55.970 --> 01:20:59.950
Ja, zum Beispiel ein Pattern, was ich halt in letzter Zeit,

01:21:00.210 --> 01:21:02.770
wenn ich meine Sachen mache, tatsächlich viele Dinge,

01:21:02.770 --> 01:21:08.110
die ich halt so bezahlt tue, da ist es eigentlich seit Jahren,

01:21:08.330 --> 01:21:09.110
es ist halt immer Docker.

01:21:10.990 --> 01:21:12.230
Es ist besser geworden, ja.

01:21:12.330 --> 01:21:16.670
Davor war es mal eine Zeit lang Vagrant und Virtualbox und so.

01:21:16.870 --> 01:21:18.250
Das war noch schrecklicher als Docker.

01:21:19.590 --> 01:21:21.010
Aber Docker ist auch ziemlich schlimm.

01:21:21.650 --> 01:21:23.550
Und das... Ist jetzt auch bezahlt übrigens,

01:21:23.670 --> 01:21:25.050
für Corporates muss man jetzt da richtig...

01:21:25.050 --> 01:21:27.710
Wobei die Grenzen sind halt so, dass da viele

01:21:27.710 --> 01:21:29.910
nicht drunter fallen. Nur große Corporates müssen das eigentlich machen.

01:21:29.910 --> 01:21:31.690
Ja, und wenn du so groß bist, dass du da drunter fallst,

01:21:31.830 --> 01:21:34.070
dann ist es... Genau, dann...

01:21:34.070 --> 01:21:35.810
Ja, wenn die Leute halt nicht freiwillig für Open Source

01:21:35.810 --> 01:21:37.590
dann bereitstellen, dann ist das vielleicht schon ganz gut, dass die

01:21:37.590 --> 01:21:39.530
zugezogen werden über ein Modell, aber ja.

01:21:40.130 --> 01:21:41.430
Ja, aber genau, aber

01:21:41.430 --> 01:21:43.190
tatsächlich würde ich jetzt mal so sagen, also

01:21:43.190 --> 01:21:45.750
es geht schon viel Zeit dabei drauf.

01:21:46.230 --> 01:21:47.050
Also bei mir jetzt so,

01:21:47.550 --> 01:21:49.630
dass ich irgendwie Dinge...

01:21:49.630 --> 01:21:51.290
Also morgens, wenn ich mich dransetze,

01:21:51.350 --> 01:21:54.250
Irgendwie ist schon wieder einer von den Containern

01:21:54.250 --> 01:21:56.490
gestorben oder so. Ich muss halt regelmäßig

01:21:56.490 --> 01:21:58.230
Docker-Desktop neu

01:21:58.230 --> 01:22:00.190
starten. Ja, ich verstehe auch nicht,

01:22:00.270 --> 01:22:01.970
warum Docker ab und zu mal

01:22:01.970 --> 01:22:03.670
einfach mal in den Container runterfällt.

01:22:03.670 --> 01:22:05.570
Oder ich versuche einen zu stoppen und es geht

01:22:05.570 --> 01:22:07.370
irgendwie nicht. Es bleibt irgendwie hängen. Dann kill ich das

01:22:07.370 --> 01:22:09.630
irgendwie weg. Manchmal geht es, manchmal geht es nicht.

01:22:10.230 --> 01:22:11.650
Dann irgendwie kriege ich

01:22:11.650 --> 01:22:13.650
ganz seltsame Fehlermeldungen aus den Tiefen

01:22:13.650 --> 01:22:15.330
von irgendwie von Docker.

01:22:15.730 --> 01:22:17.730
Und dann liegt es aber daran,

01:22:17.810 --> 01:22:19.630
dass intern irgendwie irgendein Teil

01:22:19.630 --> 01:22:20.490
ist halt vollgelaufen.

01:22:20.690 --> 01:22:22.930
Die Logs von vor drei Jahren sind immer noch ein,

01:22:23.010 --> 01:22:24.930
anstatt dass man auf die Idee kommt, wenn es mal komplett

01:22:24.930 --> 01:22:26.190
rebuildet ist, dass es wieder von vorne an.

01:22:26.510 --> 01:22:28.650
Und wenn man darin debuggen will, es geht schon,

01:22:28.810 --> 01:22:30.510
es ist aber alles irgendwie und alles ist langsam.

01:22:30.670 --> 01:22:32.970
Es ist halt alles lahm.

01:22:33.110 --> 01:22:34.270
Es fühlt sich alles so an.

01:22:35.490 --> 01:22:37.790
Es braucht relativ viel Ressourcen.

01:22:37.870 --> 01:22:39.290
Ja, genau. Ich bin vielleicht besonders

01:22:39.290 --> 01:22:39.990
gestraft, weil ich halt

01:22:39.990 --> 01:22:43.410
auf einer Mac-Plattform bin und da ist es halt besonders langsam.

01:22:44.290 --> 01:22:45.310
Aber es ist wirklich

01:22:45.310 --> 01:22:47.510
es ist so ein bisschen, es ist wirklich aufwendig.

01:22:47.510 --> 01:22:48.010
Also ich bin nicht

01:22:48.010 --> 01:22:50.070
es kostet

01:22:50.070 --> 01:22:51.970
wirklich Zeit, irgendwie das halt zu

01:22:51.970 --> 01:22:53.950
verwenden und es macht alles ein bisschen

01:22:53.950 --> 01:22:55.850
schwieriger und für meine eigenen Sachen

01:22:55.850 --> 01:22:58.050
mache ich das, also da habe ich jetzt den Vergleich, da mache ich das halt nicht so.

01:22:58.730 --> 01:22:59.870
Ein Pattern, das ich da halt verwende,

01:22:59.950 --> 01:23:01.350
ist eben, ich verwende halt sowas oder

01:23:01.350 --> 01:23:03.350
auch ganz lange nicht Honcho verwendet, aber

01:23:03.350 --> 01:23:05.350
verwende jetzt dann halt vielleicht Honcho und

01:23:05.350 --> 01:23:07.850
den Applikationsverlauf oder das Ding, an dem ich

01:23:07.850 --> 01:23:09.910
gerade entwickle, das starte ich dann halt

01:23:09.910 --> 01:23:11.750
in der IDE mit dem Debugger zum Beispiel

01:23:11.750 --> 01:23:13.910
und kann da halt dann schön drin debuggen.

01:23:14.050 --> 01:23:15.770
Ich kann, wenn ich auf den Test ausführen klicke,

01:23:15.930 --> 01:23:18.090
ist es halt sofort, sofort ausgeführt,

01:23:18.190 --> 01:23:19.770
ja, und ich muss halt nicht erstmal 10 Sekunden warten,

01:23:19.910 --> 01:23:21.930
bis das irgendwie sich irgendwie in Docker reingetunnelt

01:23:21.930 --> 01:23:23.270
hat und dann da irgendwie...

01:23:23.270 --> 01:23:25.930
Ja, weil du erstmal alles die ganze Umgebung wiederbauen musst und so.

01:23:26.810 --> 01:23:27.930
Und das

01:23:27.930 --> 01:23:29.790
funktioniert tatsächlich ziemlich gut, ist eine sehr

01:23:29.790 --> 01:23:31.470
angenehme Erfahrung, aber ja,

01:23:32.010 --> 01:23:33.650
diesen, ja, ich weiß auch nicht, aber die Leute,

01:23:34.010 --> 01:23:35.930
also in Firmen ist das wohl

01:23:35.930 --> 01:23:37.850
offensichtlich inzwischen irgendwie verpflichtend,

01:23:37.910 --> 01:23:38.790
Docker zu nehmen, naja.

01:23:39.530 --> 01:23:40.630
Klingt gut, also Honschuhe.

01:23:42.210 --> 01:23:43.530
Ich wollte...

01:23:43.530 --> 01:23:45.490
Danke an Claudio für den Tipp, der hatte das

01:23:45.490 --> 01:23:48.070
Ja, also ich wollte

01:23:48.070 --> 01:23:49.770
ein Dango-Projekt

01:23:49.770 --> 01:23:52.190
picken und zwar Health-Checks

01:23:52.190 --> 01:23:52.570
heißt das.

01:23:54.030 --> 01:23:54.950
Das ist sehr cool, weil

01:23:54.950 --> 01:23:57.670
das kann man selber hosten, einfach Health-Checks und da

01:23:57.670 --> 01:23:59.190
irgendwie seine Applikationen reinpacken.

01:23:59.450 --> 01:24:00.950
Das ist natürlich ganz wichtig, dass der Health-Check

01:24:00.950 --> 01:24:03.630
Server auf dem gleichen Server läuft

01:24:03.630 --> 01:24:04.030
wie der Rest.

01:24:06.110 --> 01:24:07.790
Ja, ich weiß

01:24:07.790 --> 01:24:08.510
es nicht mehr genau.

01:24:09.450 --> 01:24:13.590
Das ist ja in Dango-Server

01:24:13.590 --> 01:24:14.030
drin, ja.

01:24:14.310 --> 01:24:16.190
Ja, genau. Es ist ein Dago-Projekt, Dago-4-Projekt,

01:24:16.370 --> 01:24:17.970
wo man halt relativ nett einfach

01:24:17.970 --> 01:24:20.130
seinen Server, den man so überwachen

01:24:20.130 --> 01:24:21.370
will, rein monitoren kann.

01:24:21.930 --> 01:24:23.930
Ganz nettes, kleines Frontend, alles

01:24:23.930 --> 01:24:25.750
relativ modern gebaut und

01:24:25.750 --> 01:24:28.170
dann nur Postgres peißen, 3.8 glaube ich

01:24:28.170 --> 01:24:30.310
und hochfahren,

01:24:31.310 --> 01:24:32.130
Webfrontend benutzen,

01:24:32.770 --> 01:24:34.030
wie man das halt von anderen Tools kennt, aber

01:24:34.030 --> 01:24:36.190
self-hosted und light-white und schick.

01:24:36.530 --> 01:24:37.230
Ja, cool, cool, cool.

01:24:37.990 --> 01:24:39.410
Muss ich mir mal angucken, was das genau macht.

01:24:39.410 --> 01:24:41.270
Ich dachte, das wäre jetzt in dem Ding, was man

01:24:41.270 --> 01:24:43.310
innerhalb von Django hat, wo man dann von außen fragen kann,

01:24:43.390 --> 01:24:44.610
ob da noch alles okay ist.

01:24:44.610 --> 01:24:46.650
Einfach so ein normales Health-Check-Ding,

01:24:46.810 --> 01:24:48.690
dass du halt einfach guckst, sind die Server, die du halt haben willst,

01:24:48.730 --> 01:24:50.270
sind die noch da oder nicht und was macht das hinterher?

01:24:50.270 --> 01:24:51.790
Okay, also eher so ein Monitoring-Tool.

01:24:51.870 --> 01:24:52.350
Ja, ja, genau.

01:24:52.830 --> 01:24:53.810
Muss ich mal angucken, weiß ich nicht.

01:24:56.970 --> 01:25:01.010
Ja, ja, dann sind wir eigentlich, ne?

01:25:01.770 --> 01:25:02.410
Ja, sind wir durch.

01:25:03.230 --> 01:25:04.510
Vielen Dank, dass ihr wieder eingeschaltet habt.

01:25:04.930 --> 01:25:06.550
Ihr habt uns gewogen, trotz Erwärmung.

01:25:07.230 --> 01:25:08.430
Hört uns überall, wo ihr uns hören wollt.

01:25:09.190 --> 01:25:11.630
Sagt Bescheid, was euch stört, an hallo-at-python-podcast.de.

01:25:11.890 --> 01:25:13.530
Ja, oder wenn es euch nicht stört und gut gefällt,

01:25:13.650 --> 01:25:14.690
dann könnt ihr auch gerne irgendwie

01:25:14.690 --> 01:25:17.310
mal eine Bewertung hinterlassen bei iTunes oder

01:25:17.310 --> 01:25:19.090
Spotify geht es jetzt auch bei uns mit Bewertungen.

01:25:19.910 --> 01:25:20.070
Oh.

01:25:22.290 --> 01:25:23.430
Ich finde das interessant.

01:25:23.530 --> 01:25:25.130
Ich habe letztens drauf geguckt, es sind ja auch nicht so viele,

01:25:25.230 --> 01:25:27.610
aber es ist halt quasi sehr ähnlich zu den

01:25:27.610 --> 01:25:29.410
iTunes-Geschichten. Also es ist auf jeden Fall

01:25:29.410 --> 01:25:30.870
konsistent. Das ist schon mal...

01:25:30.870 --> 01:25:32.250
Ein paar Leute finden es gut, ein paar Leute finden es doof.

01:25:32.250 --> 01:25:33.110
Ja, so ist es halt.

01:25:33.610 --> 01:25:34.550
So kann man nichts gegen machen.

01:25:36.390 --> 01:25:37.490
Ist auch völlig in Ordnung.

01:25:37.670 --> 01:25:39.650
Wie gesagt, Feedback, teilt uns das immer gerne mit.

01:25:40.470 --> 01:25:40.830
Genau.

01:25:41.390 --> 01:25:42.790
Wir dürfen jetzt eigentlich mal angeben.

01:25:42.870 --> 01:25:43.530
Ich glaube, wir dürfen angeben.

01:25:43.950 --> 01:25:45.990
Letztes Jahr waren wir über 100 Tage, glaube ich,

01:25:45.990 --> 01:25:48.010
in Top-20-Tech-Podcast-Charts. Kann das sein?

01:25:48.970 --> 01:25:50.710
Top-50, glaube ich, eher.

01:25:50.830 --> 01:25:51.690
Nee, Top-20, weiß ich nicht.

01:25:51.730 --> 01:25:52.870
Top-50 ist immer das, was...

01:25:52.870 --> 01:25:56.470
Ja, aber relativ lang.

01:25:56.610 --> 01:25:57.810
Und jetzt, also dieses Jahr, ich gucke mal,

01:25:57.850 --> 01:26:01.130
weil dieses Jahr eigentlich schon die ganze Zeit.

01:26:03.370 --> 01:26:06.330
Ja, vielleicht gibt es gar nicht mehr als 50, man weiß es nicht.

01:26:06.330 --> 01:26:10.390
Ich gucke mal gerade, aber auf Spotify sind es quasi jetzt gerade so 3.000.

01:26:11.210 --> 01:26:12.970
Subscriber. Ja, und wie viel sind

01:26:12.970 --> 01:26:14.950
wir, ähm, welcher Platz

01:26:14.950 --> 01:26:15.970
sind wir gerade beim Tech?

01:26:17.170 --> 01:26:18.690
Und haben sie, glaube ich, gerade wieder rausgefallen.

01:26:19.110 --> 01:26:19.790
Haha, tada!

01:26:20.550 --> 01:26:22.010
Ja, wir lagen bestimmt an der letzten...

01:26:22.010 --> 01:26:24.590
Ich weiß nicht, ob ich jetzt hier die

01:26:24.590 --> 01:26:26.670
Spotify-Plattform promoten möchte, weil

01:26:26.670 --> 01:26:27.830
ehrlich gesagt... Nein, wollen wir nicht.

01:26:28.470 --> 01:26:30.530
Also die Spotify und Podcast ist jetzt irgendwie

01:26:30.530 --> 01:26:32.010
vielleicht ein bisschen unglücklich.

01:26:32.470 --> 01:26:34.030
Das ist ja ungefähr was, was wir so machen.

01:26:35.090 --> 01:26:36.570
Ja, oi.

01:26:37.310 --> 01:26:38.590
Ist ja völlig verpönt, okay.

01:26:39.070 --> 01:26:40.530
Nein, hast du das mitgekriegt, diese

01:26:40.530 --> 01:26:42.930
Joe Rogan-Geschichte und diese unsägliche

01:26:42.930 --> 01:26:44.650
Mail, die der Spotify-CEO geschrieben hat.

01:26:44.950 --> 01:26:46.690
Die Mail habe ich nicht gelesen, ich habe nur gehört, dass es

01:26:46.690 --> 01:26:48.550
irgendeinen Stress gibt mit Joe Rogan, den ich nicht höre

01:26:48.550 --> 01:26:50.650
und da habe ich mir gesagt, aha, okay,

01:26:50.790 --> 01:26:52.490
die Leute, der hat irgendwelchen Scheiß erzählt und

01:26:52.490 --> 01:26:54.290
ein Idiot und einige Leute verlassen jetzt die Plattform

01:26:54.290 --> 01:26:56.350
und geben diesen Auftrag, blablabla, ist mir völlig egal.

01:26:56.530 --> 01:26:58.690
Weißt du was, ich bin einer der wenigen Leute, die überhaupt kein Spotify

01:26:58.690 --> 01:27:00.430
haben. Ach so, okay.

01:27:00.690 --> 01:27:02.570
Ich weiß zwar auch nicht, warum unser Podcast da läuft, ich glaube,

01:27:02.630 --> 01:27:04.030
jemand hatte die Idee, dass das unbedingt da laufen muss.

01:27:04.430 --> 01:27:06.550
Mir ist das Ding völlig egal, ich höre meine Musik

01:27:06.550 --> 01:27:08.070
tatsächlich auf anderen Quellen, also

01:27:08.070 --> 01:27:10.350
auf Vinyl, falls es genau so ist, aber

01:27:10.350 --> 01:27:11.370
boah.

01:27:12.430 --> 01:27:13.910
Ich war da, ja, dann

01:27:13.910 --> 01:27:16.150
aha, der feine Herr auf dem Vinyl.

01:27:17.490 --> 01:27:18.650
Ich mag das halt,

01:27:18.770 --> 01:27:20.570
wenn Python-Code gut aussieht, aber okay.

01:27:20.850 --> 01:27:22.070
Andere Leute hören halt Sachen auf Vinyl.

01:27:22.770 --> 01:27:24.430
Ja, also ich habe aber so ein modernes System,

01:27:24.530 --> 01:27:25.970
damit kann ich mir auch jede digitale

01:27:25.970 --> 01:27:28.630
Flak auf mein Vinyl schmeißen, wenn ich das

01:27:28.630 --> 01:27:30.890
muss. Und dann kann ich sogar mit dem

01:27:30.890 --> 01:27:32.370
auf dem Flak rumscratchen.

01:27:32.370 --> 01:27:34.150
Das muss ich dann nicht so mit einer Tonspur von dir

01:27:34.150 --> 01:27:34.850
aufprobieren.

01:27:36.750 --> 01:27:38.050
Egal, aufdrucken.

01:27:39.590 --> 01:27:41.310
Bleibt uns gewogen, bleibt wieder rein.

01:27:41.510 --> 01:27:42.570
Bis dann, tschüss.
