WEBVTT

00:00:00.000 --> 00:00:05.700
Hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast. Heute Jubiläums-Episode 50. Herzlichen Glückwunsch, Jochen.

00:00:06.300 --> 00:00:10.640
Ja, herzlichen Glückwunsch zurück. 50, sind wir schon. Wow.

00:00:11.260 --> 00:00:11.920
Ja, ganz gut, oder?

00:00:12.300 --> 00:00:12.560
Ja.

00:00:13.000 --> 00:00:20.420
Wir sprechen heute über Qt und andere grafische Anwendungen in Python und über mehr Plan, das da gebaut ist, und haben den Martin zu Gast. Hi, Martin.

00:00:20.900 --> 00:00:21.240
Hallihallo.

00:00:21.320 --> 00:00:21.760
Hallöchen.

00:00:23.440 --> 00:00:25.220
Ja, wollen wir ein bisschen News machen am Anfang?

00:00:25.220 --> 00:00:27.080
Ja, diesmal vielleicht schon, hatten wir letztes Mal ja nicht.

00:00:27.740 --> 00:00:28.360
Genau, und

00:00:28.360 --> 00:00:30.920
dann mache ich das hier

00:00:30.920 --> 00:00:32.100
gerade mal auf.

00:00:33.120 --> 00:00:34.700
Ja, also es gibt halt so ein paar langweilige

00:00:34.700 --> 00:00:36.960
Softwaregeschichten, wo es vielleicht

00:00:36.960 --> 00:00:38.320
nicht schlecht wäre zu wissen, was da passiert.

00:00:38.600 --> 00:00:40.740
Es gab jetzt, das ist aber auch schon etwas länger her,

00:00:40.800 --> 00:00:42.840
ich habe jetzt ja dummerweise die News von

00:00:42.840 --> 00:00:44.820
zwei Episoden

00:00:44.820 --> 00:00:46.800
und dazwischen ist auch etwas ausgefallen. Kann sein, dass es

00:00:46.800 --> 00:00:48.900
jetzt doch ein bisschen veraltet ist. Das Beispiel, was ich hier drauf

00:00:48.900 --> 00:00:50.160
habe, ist, dass die

00:00:50.160 --> 00:00:52.920
einzelne Version von MyPy rausgekommen ist.

00:00:53.380 --> 00:00:54.300
Was vielleicht ganz interessant ist.

00:00:54.300 --> 00:01:24.280
und PyTest.

00:01:24.300 --> 00:01:25.840
noch ging und jetzt gehen sie halt nicht mehr.

00:01:26.320 --> 00:01:28.400
Deswegen halt der Manager-Versionssprung.

00:01:29.320 --> 00:01:30.340
Aber eigentlich auch ganz

00:01:30.340 --> 00:01:32.060
interessant, weil so gerade so Async-Geschichten

00:01:32.060 --> 00:01:34.280
ist halt, das ist

00:01:34.280 --> 00:01:35.660
auch da noch relativ neu.

00:01:37.280 --> 00:01:38.220
Also dass man da halt so mit

00:01:38.220 --> 00:01:40.480
na, wie heißt das?

00:01:41.400 --> 00:01:41.680
PG

00:01:41.680 --> 00:01:43.680
Async-PG.

00:01:44.180 --> 00:01:46.340
Genau, das auf Postgres

00:01:46.340 --> 00:01:48.220
zum Beispiel zugreifen kann und das halt

00:01:48.220 --> 00:01:49.840
alles so ordentlich funktioniert.

00:01:51.120 --> 00:01:52.300
Ja, da hatte ich auch schon viel Spaß

00:01:52.300 --> 00:01:52.480
mit.

00:01:54.300 --> 00:01:54.760
dann

00:01:54.760 --> 00:01:58.960
dann Wagtail hat sich eine ganze Menge getan

00:01:58.960 --> 00:02:01.080
da habe ich hier noch die Release Notes

00:02:01.080 --> 00:02:03.100
drin von Wagtail 4.2

00:02:03.100 --> 00:02:06.800
und jetzt ist aber schon 5.0

00:02:06.800 --> 00:02:08.400
gestern erschienen

00:02:08.400 --> 00:02:10.580
das ist tatsächlich

00:02:10.580 --> 00:02:13.440
nicht in den Backing Chases

00:02:13.440 --> 00:02:14.140
gab es diesmal

00:02:14.140 --> 00:02:16.980
doch, gab ein paar und ich hatte auch da so ein bisschen

00:02:16.980 --> 00:02:18.700
Probleme mit, also das war nicht so

00:02:18.700 --> 00:02:20.680
das war schon ein etwas holprigeres Update

00:02:20.680 --> 00:02:21.720
weil, also

00:02:21.720 --> 00:02:23.960
dazu. Die Software, mit der

00:02:23.960 --> 00:02:25.460
wir hier den Podcast irgendwie

00:02:25.460 --> 00:02:27.560
publishen, basiert halt auch auf

00:02:27.560 --> 00:02:29.440
Wagtail. Django Cast. Genau.

00:02:29.920 --> 00:02:31.380
Und auf Django natürlich.

00:02:32.700 --> 00:02:32.980
Und

00:02:32.980 --> 00:02:35.980
ja, deswegen kriege ich das immer mit.

00:02:35.980 --> 00:02:37.920
Wenn irgendwas bricht, dann bricht es halt ja auch.

00:02:38.520 --> 00:02:39.800
Der Grund, warum ich es nicht mehr mitkriege,

00:02:39.860 --> 00:02:41.040
ich habe es aus diesem Grund rausgeschmissen.

00:02:43.340 --> 00:02:44.060
Aber also,

00:02:44.420 --> 00:02:45.900
ja gut, sie machen da was dran. Sie machen das

00:02:45.900 --> 00:02:47.920
jetzt auch über Major-Versionen.

00:02:48.100 --> 00:02:49.440
Also man kriegt zumindest so ein bisschen

00:02:49.440 --> 00:02:51.060
irgendwie

00:02:51.060 --> 00:02:53.560
einen Eindruck davon, dass irgendwas kaputt gehen könnte, wenn sie

00:02:53.560 --> 00:02:55.600
dann die Major-Version erhöhen und sie koppeln

00:02:55.600 --> 00:02:57.220
sich jetzt auch quasi an den

00:02:57.220 --> 00:02:59.500
Django-Release-Prozess dran. Und das war

00:02:59.500 --> 00:03:01.320
jetzt auch nur einen Monat nach dem Release von

00:03:01.320 --> 00:03:03.460
Django 4.2. Also Wagtail 5 ist

00:03:03.460 --> 00:03:05.580
die erste Wagtail-Version,

00:03:05.700 --> 00:03:07.040
die offiziell Django 4.2

00:03:07.040 --> 00:03:09.420
unterstützt. Und das ist, früher

00:03:09.420 --> 00:03:11.620
war das immer noch ein bisschen länger. Und jetzt inzwischen

00:03:11.620 --> 00:03:13.400
ist es halt so einen Monat

00:03:13.400 --> 00:03:15.480
später oder so. Und das ist jetzt, ja gut,

00:03:15.540 --> 00:03:17.420
ist nicht super aktuell. Ein Monat ist ein Monat.

00:03:18.000 --> 00:03:19.240
Ja, ist schon ganz okay.

00:03:19.440 --> 00:03:21.320
und die müssen halt auch relativ viel fixen

00:03:21.320 --> 00:03:23.340
und ändern und so, daher ist es schon verständlich,

00:03:23.440 --> 00:03:25.380
dass es nicht immer so fortgeht.

00:03:26.100 --> 00:03:27.240
Aber Jochen, du bist doch eigentlich immer

00:03:27.240 --> 00:03:29.120
dagegen, dass man sich so dicke Klötze

00:03:29.120 --> 00:03:29.760
ans Bein bindet.

00:03:30.780 --> 00:03:33.060
Ja, ich hätte das auch am liebsten vermieden,

00:03:33.100 --> 00:03:34.500
wenn das irgendwie möglich gewesen wäre, aber

00:03:34.500 --> 00:03:37.180
ich möchte, also ich hätte jetzt auch ein eigenes

00:03:37.180 --> 00:03:38.840
CMS schreiben können, ja, das wäre auch gegangen.

00:03:40.220 --> 00:03:41.140
Warum denn nicht?

00:03:41.620 --> 00:03:41.760
Ja.

00:03:42.580 --> 00:03:44.780
Wir hatten letztens jemanden getroffen, der ein eigenes CMS

00:03:44.780 --> 00:03:46.920
in PHP geschrieben kann, auf jeden Fall.

00:03:47.660 --> 00:03:48.860
Ja, oder hat er mitgearbeitet?

00:03:48.860 --> 00:03:51.360
auf dem

00:03:51.360 --> 00:03:53.680
Vue.js Meetup Cologne.

00:03:54.160 --> 00:03:55.020
Das war ganz interessant.

00:03:55.720 --> 00:03:56.340
Der hat

00:03:56.340 --> 00:03:58.820
ein Statamic mitentwickelt, beziehungsweise

00:03:58.820 --> 00:04:00.860
einer der Leute, die da halt bezahlt werden für das,

00:04:00.960 --> 00:04:02.780
was sie da dann entwickeln. Das ist tatsächlich so ähnlich

00:04:02.780 --> 00:04:04.000
wie Wagtail, bloß halt für

00:04:04.000 --> 00:04:05.440
PHP und Laravel.

00:04:06.800 --> 00:04:08.480
Und ja,

00:04:08.960 --> 00:04:10.540
CMS ist schon eine große

00:04:10.540 --> 00:04:12.400
Geschichte. Wagtail ist auch relativ groß,

00:04:12.500 --> 00:04:14.620
viel Code drin und das weiß ich nicht, ob man

00:04:14.620 --> 00:04:16.800
das wirklich selber machen möchte. Es gibt da ein schönes Projekt von

00:04:16.800 --> 00:04:18.200
jetzt habe ich den Namen vergessen,

00:04:18.860 --> 00:04:21.360
auch sehr bekannt eigentlich in der

00:04:21.360 --> 00:04:23.300
Kerstin

00:04:23.300 --> 00:04:26.460
in der Django Community

00:04:26.460 --> 00:04:29.020
genau, der hat FeinCMS geschrieben

00:04:29.020 --> 00:04:31.180
und das

00:04:31.180 --> 00:04:33.180
gefällt mir, also wenn man sich den Source anguckt

00:04:33.180 --> 00:04:35.240
das gefällt mir tatsächlich auch ein bisschen besser als Wagtail, aber

00:04:35.240 --> 00:04:37.120
es kann halt nicht so viel

00:04:37.120 --> 00:04:39.240
und ja, an der Stelle ist halt

00:04:39.240 --> 00:04:41.060
Wagtail kann halt schon sehr sehr viel, also

00:04:41.060 --> 00:04:43.240
das ist halt irgendwie, also damit kann man

00:04:43.240 --> 00:04:45.200
so ziemlich alles machen, was man irgendwie gerne machen

00:04:45.200 --> 00:04:47.120
möchte. FeinCMS, also

00:04:47.120 --> 00:04:49.220
tatsächlich ein deutsches Fein

00:04:49.220 --> 00:04:50.380
und kein englisches Fein.

00:04:50.640 --> 00:04:52.240
Ja, ich glaube, der kommt aus der Schweiz oder so.

00:04:53.340 --> 00:04:54.940
Und ja, also ich meine, sowas hätte ich natürlich auch

00:04:54.940 --> 00:04:56.960
schreiben können oder das nehmen können, aber dann hätte ich auch

00:04:56.960 --> 00:04:58.900
viel schreiben müssen, weil viele Sachen, die ich gerne hätte,

00:04:59.100 --> 00:04:59.880
sind da halt auch nicht drin.

00:05:01.060 --> 00:05:03.360
Das scheint ein bisschen alt zu sein. Copyright 2009.

00:05:03.860 --> 00:05:04.680
Der macht das schon lange, ja.

00:05:04.680 --> 00:05:06.500
Ja, ja.

00:05:07.140 --> 00:05:08.660
Und ja,

00:05:08.840 --> 00:05:10.940
deswegen nehme ich halt

00:05:10.940 --> 00:05:12.180
Wacktail, obwohl ich auch manchmal denke,

00:05:12.380 --> 00:05:14.680
es knirscht halt

00:05:14.680 --> 00:05:16.840
ab und zu. Das letzte Release

00:05:16.840 --> 00:05:46.820
für Python.

00:05:46.840 --> 00:05:48.640
Update ist halt, dass sie intern irgendwie

00:05:48.640 --> 00:05:50.780
einen, weil ich habe halt eine Extension, also

00:05:50.780 --> 00:05:52.700
ein Ding gebaut, was das halt so ein bisschen erweitert,

00:05:52.760 --> 00:05:54.720
weil ich habe halt viele Bilder für andere Zwecke.

00:05:54.840 --> 00:05:56.640
Jetzt bei dem Podcast kommen nicht so viele Bilder vor,

00:05:56.760 --> 00:05:58.360
aber es waren auch andere Transfers.

00:05:58.360 --> 00:06:00.680
Ich möchte gerne Bilder in der absoluten, maximal

00:06:00.680 --> 00:06:02.180
bestmöglichen Qualität.

00:06:02.440 --> 00:06:03.880
Ich möchte, dass sie nicht total unscharf sind.

00:06:05.200 --> 00:06:06.540
Kann man so oder so sehen.

00:06:07.420 --> 00:06:08.580
Ja, aber ich sehe das schon.

00:06:08.740 --> 00:06:10.440
Ich denke mir immer, wenn ich auf so Seiten,

00:06:10.660 --> 00:06:12.340
also gerade auch Wagtail-Seiten, es gibt ja viele

00:06:12.340 --> 00:06:14.620
andere, die auch Wagtail verwenden,

00:06:14.840 --> 00:06:16.280
so unter anderem NASA, Google,

00:06:16.280 --> 00:06:20.720
irgendwie der National Health Service in UK und so.

00:06:21.060 --> 00:06:22.400
Es gibt schon viele große und immer wenn ich da drauf gucke,

00:06:22.500 --> 00:06:24.100
denke ich mir so, ey, die Bilder sind doch unscharf.

00:06:24.320 --> 00:06:26.400
Ja, 2000 Leute haben auch dieses Problem.

00:06:26.760 --> 00:06:28.020
Ja, also ich weiß nicht.

00:06:28.140 --> 00:06:29.040
Also ich finde super, das ist cool.

00:06:29.120 --> 00:06:30.400
Mir ist das tatsächlich auch aufgefallen,

00:06:30.460 --> 00:06:31.940
wenn ich mal so ein paar Sachen von dir angeguckt habe,

00:06:32.000 --> 00:06:32.980
dass das sehr viel schöner ist.

00:06:33.360 --> 00:06:34.760
Wahrscheinlich hat man sich einfach nur daran gewohnt,

00:06:34.900 --> 00:06:36.280
dass die Sachen gar nicht so cool aussehen.

00:06:37.040 --> 00:06:38.260
Dass das gar nicht so schön sein kann,

00:06:38.300 --> 00:06:39.260
weiß man gar nicht so genau.

00:06:39.740 --> 00:06:41.140
Ja, also sagen wir so,

00:06:42.000 --> 00:06:44.240
ich meine, selbst WordPress macht das besser.

00:06:44.240 --> 00:06:46.620
Das hat auch nur so

00:06:46.620 --> 00:06:48.500
drei oder fünf statische

00:06:48.500 --> 00:06:50.660
Größen für Bilder drin. Also das Problem

00:06:50.660 --> 00:06:51.820
ist grundsätzlich, dass

00:06:51.820 --> 00:06:54.580
wenn du, du hast halt zwei unterschiedliche

00:06:54.580 --> 00:06:56.280
Arten von Pixel, du hast halt sozusagen die Pixel

00:06:56.280 --> 00:06:56.920
für deine

00:06:56.920 --> 00:07:00.380
wie groß dein Gebreit quasi

00:07:00.380 --> 00:07:02.540
dein Bildschirm ist oder so und da kannst du auch in Pixeln rechnen

00:07:02.540 --> 00:07:03.740
aber dass das angezeigt ist,

00:07:03.980 --> 00:07:06.560
ist halt was anderes, weil es halt

00:07:06.560 --> 00:07:07.620
mittlerweile halt

00:07:07.620 --> 00:07:10.640
Devices gibt, Telefone

00:07:10.640 --> 00:07:12.080
irgendwie Bildschirme,

00:07:12.080 --> 00:07:13.640
4K-Bildschirme oder noch mehr,

00:07:13.920 --> 00:07:16.100
die halt dann mehrere physikalische Pixel

00:07:16.100 --> 00:07:17.720
für einen virtuellen Pixel quasi

00:07:17.720 --> 00:07:20.140
benutzen. Und wenn du halt nicht

00:07:20.140 --> 00:07:22.140
sozusagen dann die Bildgrößen

00:07:22.140 --> 00:07:24.040
entsprechend mitlieferst, sondern sagst,

00:07:24.080 --> 00:07:25.900
mein Bild ist halt genauso breit wie so

00:07:25.900 --> 00:07:27.620
viele virtuelle Pixel, dann hast du halt

00:07:27.620 --> 00:07:30.140
ein implizites Upscaling von Faktor 4

00:07:30.140 --> 00:07:31.760
oder so darin und dann wird es halt unscharf.

00:07:32.580 --> 00:07:34.080
Und ja, das ist halt

00:07:34.080 --> 00:07:35.900
irgendwie, da gibt es noch, sie arbeiten da auch dran.

00:07:35.900 --> 00:07:37.580
Also so ist es nicht. Da gibt es jetzt inzwischen auch

00:07:37.580 --> 00:07:39.920
ein sehr vielversprechendes, da gibt es so eine

00:07:39.920 --> 00:07:41.640
Roadmap, wo drin steht, was sie da machen wollen.

00:07:41.640 --> 00:07:43.960
und sie wollen das mit Picture-Elementen

00:07:43.960 --> 00:07:45.120
machen und irgendwie so

00:07:45.120 --> 00:07:47.660
modern oder so. Ihre Hauptmotivation dabei

00:07:47.660 --> 00:07:49.800
ist aber eher irgendwie Wandbreite sparen,

00:07:49.940 --> 00:07:51.880
weil man dann halt so modernere Formate

00:07:51.880 --> 00:07:53.740
wie WP

00:07:53.740 --> 00:07:55.720
oder solche Sachen

00:07:55.720 --> 00:07:56.280
verwenden kann.

00:07:58.420 --> 00:07:59.760
Aber damit kriegt man

00:07:59.760 --> 00:08:01.500
das auch hin, dass man dann halt scharfe Bilder hat.

00:08:02.100 --> 00:08:03.560
Mein Ding ist aber eher, ich will scharfe Bilder

00:08:03.560 --> 00:08:05.340
haben und JPEG reicht mir eigentlich.

00:08:06.800 --> 00:08:07.600
Und deshalb

00:08:07.600 --> 00:08:09.540
habe ich da so ein Ding geschrieben und da haben sie jetzt irgendwas

00:08:09.540 --> 00:08:11.660
unbenannt. Irgendwie ein Attribut auf dem

00:08:11.660 --> 00:08:12.380
Image-Node

00:08:12.380 --> 00:08:15.300
heißt jetzt irgendwie anders, weil ich muss jetzt halt

00:08:15.300 --> 00:08:17.160
also meine Erweiterung für

00:08:17.160 --> 00:08:18.880
Wagtail, die

00:08:18.880 --> 00:08:21.240
erzeugt halt dann Bilder in

00:08:21.240 --> 00:08:23.700
unterschiedlichen Größen und macht da so ein Sourcet-Attribut

00:08:23.700 --> 00:08:24.700
Genau, Sourcet, genau.

00:08:25.140 --> 00:08:27.460
Und da greife ich

00:08:27.460 --> 00:08:29.480
halt auf irgendwie so die Filter

00:08:29.480 --> 00:08:31.460
von dem Ding irgendwie zu,

00:08:31.560 --> 00:08:33.260
weil du kannst ja da noch andere Sachen reinschreiben wie

00:08:33.260 --> 00:08:35.500
JPEG-Qualität und weiß der

00:08:35.500 --> 00:08:36.800
Teufel und die Breite und

00:08:36.800 --> 00:08:39.420
das muss ich ja irgendwie auslesen und das hat sich

00:09:09.420 --> 00:09:11.660
wenn man sich das vor einiger Zeit

00:09:11.660 --> 00:09:13.260
angeguckt hat und

00:09:13.260 --> 00:09:15.540
nicht zufrieden war, kann man das eigentlich nochmal machen.

00:09:16.000 --> 00:09:17.660
Also einiges heißt, bei mir

00:09:17.660 --> 00:09:19.020
ist es nach zwei Jahren her, würde ich sagen.

00:09:19.040 --> 00:09:21.720
Ja, zwei Jahre reicht auf jeden Fall. Also inzwischen hat sich da sehr viel getan.

00:09:22.600 --> 00:09:24.660
die

00:09:24.660 --> 00:09:27.160
Changelogs sind halt auch immer sehr lang. Also würde ich sagen,

00:09:27.260 --> 00:09:29.020
was ist an dem modernen React-Health eigentlich cooler?

00:09:30.300 --> 00:09:31.520
Was sie verbessert haben ist,

00:09:31.700 --> 00:09:33.180
es gibt ja schon seit einiger Zeit so ein

00:09:33.180 --> 00:09:35.340
Streamfield. Das ist auch, das machen alle CMS

00:09:35.340 --> 00:09:36.320
irgendwie gleich.

00:09:37.780 --> 00:09:38.940
Für Video, Audio

00:09:38.940 --> 00:10:08.920
und dergleichen.

00:10:08.940 --> 00:10:38.920
und PyTest.

00:10:38.940 --> 00:10:40.860
weil es halt nicht mehr klassisch ist, sondern dann

00:10:40.860 --> 00:10:42.260
passiert das alles im Kleinen nur noch

00:10:42.260 --> 00:10:44.760
und das geht jetzt schneller. Also überhaupt, das ganze Ding ist

00:10:44.760 --> 00:10:46.960
deutlich schneller geworden. Also ich meine, so sehr React

00:10:46.960 --> 00:10:47.900
irgendwie doof ist für

00:10:47.900 --> 00:10:50.340
die Sachen, für die es oft verwendet wird,

00:10:50.700 --> 00:10:51.880
für sowas wie eine komplizierte

00:10:51.880 --> 00:10:55.500
Content-Editier-Geschichte,

00:10:55.780 --> 00:10:57.140
wo halt irre viele

00:10:57.140 --> 00:10:58.580
Formulare sind und

00:10:58.580 --> 00:11:00.800
Interaktionen dazwischen gibt, dafür ist es

00:11:00.800 --> 00:11:02.360
jetzt vielleicht auch nicht so schlecht. Das ist eigentlich gar nicht schlecht.

00:11:02.540 --> 00:11:04.360
Sieht das Ding gut aus und kann man das denn theme?

00:11:05.540 --> 00:11:06.960
Theme kann sein,

00:11:06.960 --> 00:11:08.060
das weiß ich, kann man,

00:11:08.060 --> 00:11:09.520
Irgendwann kann er auf jeden Fall Dinge ändern

00:11:09.520 --> 00:11:11.260
Oder dass man jetzt halt ganz tief wieder rein

00:11:11.260 --> 00:11:13.620
Eines der neuen Features bei Vectile 5 ist

00:11:13.620 --> 00:11:14.840
es gibt jetzt ein Dark Theme

00:11:14.840 --> 00:11:16.720
Oh ja, ja

00:11:16.720 --> 00:11:17.920
Also

00:11:17.920 --> 00:11:20.080
Wer braucht das nicht?

00:11:20.900 --> 00:11:22.360
Ist mir direkt aufgefallen

00:11:22.360 --> 00:11:25.680
weil ich das dann auch direkt hatte, weil ich hier auf dem Dark Mode

00:11:25.680 --> 00:11:26.960
bin

00:11:26.960 --> 00:11:29.340
Ist aber für die Augen viel angenehmer

00:11:29.340 --> 00:11:31.040
Naja, also ich finde es sieht ganz okay aus

00:11:31.040 --> 00:11:33.580
Also so wirklich hübsch ist es nicht, aber ich meine das ist ja nur das Editierding

00:11:33.580 --> 00:11:35.660
Es ist ja nicht so, wie es dann hinterher aussieht

00:11:35.660 --> 00:11:36.940
was auf der Webseite zu sehen ist

00:11:36.940 --> 00:11:38.040
Das kannst du ja machen, wie du willst.

00:11:38.900 --> 00:11:40.300
Das hat ja nichts mit React Health zu tun.

00:11:41.280 --> 00:11:41.940
Ja, insofern...

00:11:41.940 --> 00:11:44.460
Jetzt hatten wir fast eine schöne Übergleiche zu dem Thema, aber ich glaube, wir sind noch nicht ganz fertig.

00:11:44.840 --> 00:11:46.660
Nee, da kommt noch...

00:11:46.660 --> 00:11:48.620
Genau, nächstes wäre halt Django 4.2.

00:11:49.180 --> 00:11:49.660
Ja, auch

00:11:49.660 --> 00:11:51.560
nächste LTS.

00:11:51.640 --> 00:11:51.800
Ja.

00:11:54.760 --> 00:11:56.440
War auch jetzt, da war auch wenig drin,

00:11:56.460 --> 00:11:57.540
was irgendwie kaputt gegangen ist.

00:11:57.760 --> 00:11:59.780
Die große Neuerung da ist halt, dass

00:11:59.780 --> 00:12:02.440
man jetzt auch async mit der

00:12:02.440 --> 00:12:03.360
Datenbank sprechen kann.

00:12:04.800 --> 00:12:05.240
Und

00:12:05.240 --> 00:12:06.680
zum Beispiel PsychoPG

00:12:06.680 --> 00:12:08.720
3 wird jetzt unterstützt und dann

00:12:08.720 --> 00:12:10.860
also sozusagen man hat jetzt die Voraussetzung dafür, dass

00:12:10.860 --> 00:12:12.380
man komplett Async von

00:12:12.380 --> 00:12:14.880
vorne bis hinten sozusagen von Frontend

00:12:14.880 --> 00:12:16.020
von View bis

00:12:16.020 --> 00:12:18.980
zur Datenbank kann man halt jetzt durchgängig

00:12:18.980 --> 00:12:20.900
Async Dinge machen und man könnte

00:12:20.900 --> 00:12:21.820
jetzt so Sachen bauen wie

00:12:21.820 --> 00:12:25.000
man verwendet diesen Listen Notify Mechanismus

00:12:25.000 --> 00:12:26.820
von Postgres, um halt wirklich so richtig

00:12:26.820 --> 00:12:28.960
reaktiv Dinge zu machen

00:12:28.960 --> 00:12:30.380
so dass man

00:12:30.380 --> 00:12:33.100
also ging auch vorher schon, aber da war es immer so ein bisschen

00:12:33.100 --> 00:12:34.540
hm, jetzt geht es halt

00:12:34.540 --> 00:12:36.100
und muss dann Django Channels

00:12:36.100 --> 00:12:38.100
verwenden und weiß nicht.

00:12:38.560 --> 00:12:40.220
Aber jetzt ging es halt richtig

00:12:40.220 --> 00:12:42.140
sauber eigentlich.

00:12:42.620 --> 00:12:44.120
Also da gibt es noch keine wirkliche Unterstützung

00:12:44.120 --> 00:12:46.220
für. Das müsste man dann alle selber schreiben, aber es geht

00:12:46.220 --> 00:12:47.580
jetzt theoretisch zumindest schon mal.

00:12:48.300 --> 00:12:49.960
Und das ist eigentlich schon schön. Auch der ORM könnte

00:12:49.960 --> 00:12:51.880
jetzt dann halt irgendwie Async werden.

00:12:52.040 --> 00:12:53.400
Der hat ja auch schon Async Interfaces.

00:12:55.000 --> 00:12:56.120
Aber die sind ja

00:12:56.120 --> 00:12:57.640
sozusagen, die kann man auch schon verwenden

00:12:57.640 --> 00:12:59.860
und kriegt dann halt irgendwie den Gewinn, dass es wirklich

00:12:59.860 --> 00:13:01.720
Async ist, irgendwann, wenn das dann halt mal

00:13:01.720 --> 00:13:03.240
identifiziert ist. Momentan

00:13:03.240 --> 00:13:05.360
ist es dann halt nicht

00:13:05.360 --> 00:13:07.320
Async wirklich, sondern es ist halt dann

00:13:07.320 --> 00:13:08.700
irgendwie, es wird über ein Threadpool

00:13:08.700 --> 00:13:11.420
und in Sync gemacht, aber

00:13:11.420 --> 00:13:12.900
ja,

00:13:13.240 --> 00:13:14.740
das wird noch ein bisschen dauern, bis

00:13:14.740 --> 00:13:16.960
die ORM-Geschichten halt auch wirklich Async sind.

00:13:17.120 --> 00:13:19.300
Aber ja, geht auf jeden Fall in die Richtung

00:13:19.300 --> 00:13:20.900
und irgendwann dann

00:13:20.900 --> 00:13:23.260
wird auch alles auf Async dann

00:13:23.260 --> 00:13:25.300
quasi umgestellt sein

00:13:25.300 --> 00:13:27.320
und man kann es dann verwenden, wenn man möchte. Muss man ja nicht.

00:13:27.400 --> 00:13:29.240
Man kann auch einfach Sync verwenden, wenn man

00:13:29.240 --> 00:13:30.620
nicht so viele Queries hat und wenn es

00:13:30.620 --> 00:13:33.120
Sync ist, auch

00:13:33.120 --> 00:13:36.620
ein bisschen schneller als Icing, weil man da halt schon noch so ein bisschen Abstraktionsschichten

00:13:36.620 --> 00:13:40.700
mehr dazwischen hat dann. Aber es gibt halt einiges Fälle, in denen es wäre total praktisch,

00:13:40.760 --> 00:13:42.680
das zu haben. Und dafür ist es natürlich gut.

00:13:43.120 --> 00:13:44.660
Kannst du nochmal einen Anwendungsfall dafür nennen?

00:13:45.860 --> 00:13:51.140
Ne, wenn du zum Beispiel viele Queries machst und du willst halt nicht, dass sich die Latenzen

00:13:51.140 --> 00:13:54.100
und deine Datenbank steht jetzt zum Beispiel woanders, sagen wir mal so. Das wäre jetzt

00:13:54.100 --> 00:13:59.840
nochmal so. Nehmen wir an, deine Datenbank steht irgendwie in Amerika und du hast hier

00:13:59.840 --> 00:14:01.740
Dein Applikationsserver

00:14:01.740 --> 00:14:03.360
oder wie auch immer, das Ding, was halt

00:14:03.360 --> 00:14:05.280
jedenfalls das HTML

00:14:05.280 --> 00:14:07.340
rendert, ist halt irgendwo so. Und jetzt hast du halt

00:14:07.340 --> 00:14:09.400
große Latenz zwischen Datenbank

00:14:09.400 --> 00:14:10.600
und Frontend.

00:14:11.240 --> 00:14:13.320
Dann momentan ist es halt so, leider

00:14:13.320 --> 00:14:15.560
addieren sich die Latenzen auf. Und wenn du halt

00:14:15.560 --> 00:14:17.580
100 Queries machst,

00:14:17.720 --> 00:14:19.520
um eine Seite anzuzeigen, dann hast du 100 Mal

00:14:19.520 --> 00:14:21.360
die Latenz dazwischen und das ist halt dann schon

00:14:21.360 --> 00:14:23.480
ätzend. Also wenn das halt

00:14:23.480 --> 00:14:25.300
nur ein paar Millisekunden sind, dann sind es halt

00:14:25.300 --> 00:14:26.900
insgesamt ein paar 100 Millisekunden vielleicht.

00:14:27.040 --> 00:14:29.460
Ist nicht so tragisch, aber wenn du jetzt 50 Millisekunden Latenz dazwischen hast,

00:14:29.840 --> 00:14:31.940
und dann bist du halt schon bei 5 Sekunden oder sowas

00:14:31.940 --> 00:14:32.820
und dann ist es halt doof

00:14:32.820 --> 00:14:35.360
und genau, wenn du

00:14:35.360 --> 00:14:37.460
das I-Sync machen würdest und könntest die

00:14:37.460 --> 00:14:39.700
Datenbank-Effekte gleichzeitig

00:14:39.700 --> 00:14:41.440
an die Datenbank schicken, dann

00:14:41.440 --> 00:14:43.720
wäre die Gesamtlatenz halt nur die

00:14:43.720 --> 00:14:45.820
Latenz der langsamsten

00:14:45.820 --> 00:14:47.140
Query und nicht irgendwie

00:14:47.140 --> 00:14:48.540
die wir uns nicht alle aufaddieren

00:14:48.540 --> 00:14:51.160
also in solchen Fällen wäre es halt irgendwie durchaus

00:14:51.160 --> 00:14:53.380
sehr praktisch

00:14:53.380 --> 00:14:55.380
genau

00:14:55.380 --> 00:14:57.600
ja, also genau

00:14:57.600 --> 00:14:59.700
Django 4.2, weiß jetzt gar nicht

00:14:59.700 --> 00:15:02.560
genau was sonst noch da an, wirklich, da waren auch noch jede Menge coole Sachen dabei.

00:15:03.040 --> 00:15:04.300
Ah, das habe ich jetzt, ähm,

00:15:05.520 --> 00:15:06.660
habe ich mir gar nicht mehr so in Erinnerung,

00:15:06.760 --> 00:15:07.780
das ist doch schon wieder einen Monat her,

00:15:08.460 --> 00:15:10.140
dass das, äh,

00:15:11.240 --> 00:15:12.320
dass das veröffentlicht wurde

00:15:12.320 --> 00:15:15.260
und bei Formularen hat sich auch noch eine Menge getan.

00:15:15.960 --> 00:15:16.840
Also, äh,

00:15:18.560 --> 00:15:18.880
ja,

00:15:19.460 --> 00:15:19.960
ähm,

00:15:21.200 --> 00:15:22.660
und es sind einige Sachen noch

00:15:22.660 --> 00:15:24.340
deprecated worden, ja, so,

00:15:24.660 --> 00:15:26.080
keine Ahnung, kann man sich mal angucken.

00:15:27.140 --> 00:15:29.100
Der kam bestimmt auch dann in die World Map für Tango 5, oder?

00:15:29.700 --> 00:15:59.240
Ähm, ja, bestimmt irgendwie, keine Ahnung, es gibt auf jeden Fall schon Leute, die sich darüber Gedanken machen, ich habe auch schon so ein bisschen gehört, was bei Django 5, die nächste Geschichte, die jetzt angegangen wird, ich habe das jetzt nicht irgendwo gelesen offiziell, sondern ich habe das jetzt so, was ich so mitkriege, ich habe das ab und zu irgendwie so mitlese, was da so passiert, ist, sie wollen das Request-Objekt, das halt uralt ist und das sehr schwer zu ändern ist, so ein bisschen anpassen,

00:15:59.700 --> 00:16:00.900
Also da gibt es ja immer noch momentan so

00:16:00.900 --> 00:16:03.640
Request.get und Request.post und Post.get

00:16:03.640 --> 00:16:05.500
großgeschrieben und das ist quasi

00:16:05.500 --> 00:16:07.480
genauso wie das damals halt so in

00:16:07.480 --> 00:16:09.400
CGI oder

00:16:09.400 --> 00:16:11.580
PHP war, wo man das dann halt sozusagen

00:16:11.580 --> 00:16:13.540
diese Inspiration für diese Geschichten her

00:16:13.540 --> 00:16:15.640
hatte, aber das ist natürlich jetzt heutzutage eigentlich

00:16:15.640 --> 00:16:17.460
blöd. Und man hat es aber nie geändert in den

00:16:17.460 --> 00:16:18.640
letzten 15 Jahren, weil

00:16:18.640 --> 00:16:21.620
klar ist, dass wenn man das

00:16:21.620 --> 00:16:23.300
ändert, dann brechen halt überall

00:16:23.300 --> 00:16:25.560
Deployments, in denen halt

00:16:25.560 --> 00:16:27.620
irgendwie, keine Ahnung, Leute darauf halt zugreifen

00:16:27.620 --> 00:16:29.540
und deswegen kann man das nicht so einfach jetzt irgendwie umbenennen

00:16:29.540 --> 00:16:32.640
Ja, aber da soll jetzt was passieren

00:16:32.640 --> 00:16:34.480
und zwar hat man jetzt einen Grund, um diese

00:16:34.480 --> 00:16:36.580
großen Änderungen anzugehen und zwar

00:16:36.580 --> 00:16:38.780
soll halt so ein bisschen Fähigkeit

00:16:38.780 --> 00:16:40.200
zu JSON

00:16:40.200 --> 00:16:42.720
generieren und so, also ich glaube die harten

00:16:42.720 --> 00:16:44.560
Sachen, die man dafür braucht

00:16:44.560 --> 00:16:46.980
also der Umgang mit unterschiedlichen

00:16:46.980 --> 00:16:49.220
ich weiß es

00:16:49.220 --> 00:16:50.640
gar nicht mehr, also jedenfalls die Basisarbeit

00:16:50.640 --> 00:16:51.400
dafür ist schon drin

00:16:51.400 --> 00:16:54.940
diese ganze

00:16:54.940 --> 00:16:55.860
diese ganzen

00:16:55.860 --> 00:16:58.580
da geht es irgendwie um

00:16:58.580 --> 00:17:00.280
Header und weißer Teufel irgendwie

00:17:00.280 --> 00:17:01.180
Support.

00:17:02.600 --> 00:17:04.440
Aber was man eigentlich gerne hätte, ist ja, dass man

00:17:04.440 --> 00:17:06.440
JSON rausrennen kann und das halt auch ordentlich

00:17:06.440 --> 00:17:08.300
funktioniert. Also sozusagen

00:17:08.300 --> 00:17:10.460
eigentlich wird jetzt quasi die Basis

00:17:10.460 --> 00:17:12.320
dafür gelegt, dass sowas wie Django REST Framework eigentlich

00:17:12.320 --> 00:17:13.860
in Django Core mit reinwandert.

00:17:14.660 --> 00:17:16.460
Oder man das halt sowas wie Django REST Framework

00:17:16.460 --> 00:17:18.320
eigentlich gar nicht mehr braucht, weil die

00:17:18.320 --> 00:17:20.540
schwierigen Teile in Django REST Framework

00:17:20.540 --> 00:17:21.980
die sind jetzt eigentlich schon in Django Core drin.

00:17:22.860 --> 00:17:24.380
Und jetzt geht es halt noch darum, das

00:17:24.380 --> 00:17:26.400
alles so ein bisschen aufzutuschen, das Request-Objekt zu

00:17:26.400 --> 00:17:28.560
modernisieren, dass man halt jetzt sehr viel leichter

00:17:28.560 --> 00:17:30.380
Jason da auch rausrennen kann oder irgendwas anderes.

00:17:31.560 --> 00:17:32.380
Gut, mittlerweile

00:17:32.380 --> 00:17:33.260
besitzen alle nur noch Jason.

00:17:34.960 --> 00:17:36.680
Ja, das ist auf jeden Fall das, was

00:17:36.680 --> 00:17:36.960
wir noch finden können.

00:17:36.960 --> 00:17:39.940
Jason, eine der Sachen in Django 5 ist Formulare.

00:17:41.140 --> 00:17:42.160
Django 5 ist auch Formulare?

00:17:42.340 --> 00:17:43.100
Ja, ein bisschen bessere Formulare.

00:17:43.100 --> 00:17:44.520
Also Formulare sind auch jetzt schon,

00:17:44.780 --> 00:17:45.840
da wird auch schon viel dran gemacht.

00:17:46.520 --> 00:17:49.040
Der Anwendungsfall

00:17:49.040 --> 00:17:50.400
an der Stelle ist halt einfach, dass man

00:17:50.400 --> 00:17:52.660
das war früher etwas schwierig.

00:17:54.280 --> 00:17:55.040
Man möchte halt

00:17:55.040 --> 00:17:56.880
Teile von Formularen und so rendern können besser.

00:17:56.880 --> 00:17:59.540
also gerade so interaktiv

00:17:59.540 --> 00:18:01.600
möchte man gerne das Verhalten so haben

00:18:01.600 --> 00:18:03.420
wie jetzt man das in der SPA halt auch hat

00:18:03.420 --> 00:18:05.540
nur halt mit ordentlicher

00:18:05.540 --> 00:18:07.260
Serversite-Validierung von irgendwelchen

00:18:07.260 --> 00:18:09.440
Eingabedaten und so und das geht natürlich

00:18:09.440 --> 00:18:11.480
auch, also habe ich auch schon häufiger gemacht

00:18:11.480 --> 00:18:13.560
dass man dann halt, sobald sich irgendwie

00:18:13.560 --> 00:18:15.560
ein Feld von einem Formular

00:18:15.560 --> 00:18:17.440
ändert, dass man dann halt das an den Server

00:18:17.440 --> 00:18:19.060
schickt und dann kriegt man halt sozusagen

00:18:19.060 --> 00:18:21.360
nur das gerenderte Feld zurück und

00:18:21.360 --> 00:18:23.300
ersetzt das dann und dann wenn da die Fehlermeldung

00:18:23.300 --> 00:18:25.120
im Grunde steht, dann steht die halt auch da drin und so, das geht alles

00:18:25.120 --> 00:18:27.800
aber irgendwie zum Beispiel mit Crispy Forms

00:18:27.800 --> 00:18:29.420
irgendwie einzelne Felder rendern

00:18:29.420 --> 00:18:31.500
ist halt, ist es möglich

00:18:31.500 --> 00:18:33.520
es ist halt irgendwie nicht, es macht

00:18:33.520 --> 00:18:35.620
keinen Spaß, und das zu testen macht auch nicht so richtig

00:18:35.620 --> 00:18:37.100
Spaß und das ist alles so ein bisschen

00:18:37.100 --> 00:18:39.560
und ja, da wird auch viel daran gearbeitet, damit das halt einfacher wird

00:18:39.560 --> 00:18:41.080
und besser geht alles, ja

00:18:41.080 --> 00:18:43.160
ja

00:18:43.160 --> 00:18:45.560
ja

00:18:45.560 --> 00:18:47.100
genau, Django 4.2

00:18:47.100 --> 00:18:49.120
ich hab gehört, die Twitter-API ist kaputt

00:18:49.120 --> 00:18:50.460
ja

00:18:50.460 --> 00:18:53.200
das ist auch schon lange her

00:18:53.200 --> 00:18:55.100
bei Twitter ist noch alles möglich kaputt gegangen.

00:18:56.040 --> 00:18:57.200
Ja, es ist...

00:18:58.160 --> 00:18:59.200
Da...

00:18:59.720 --> 00:19:01.140
Du machst ja immer gerne so einen Pun,

00:19:01.260 --> 00:19:02.400
deswegen dachte ich...

00:19:02.400 --> 00:19:05.120
Ich finde jetzt aber auch keine... Ich glaube, das ist echt total veraltet,

00:19:05.200 --> 00:19:07.000
was da drin steht. Also das ist irgendwie

00:19:07.000 --> 00:19:08.760
von vor zwei Monaten oder so, dass das halt

00:19:08.760 --> 00:19:10.900
jetzt die APIs zugemacht haben.

00:19:11.060 --> 00:19:13.200
Ja, und das halt für viele Leute war das halt echt nochmal so ein Grund,

00:19:14.400 --> 00:19:15.160
dann auch zu Masternode

00:19:15.160 --> 00:19:17.220
zu wechseln, weil für Masternode gibt es

00:19:17.220 --> 00:19:19.040
jetzt noch irgendwie ordentliche

00:19:19.040 --> 00:19:20.200
Apps und für Twitter halt nicht mehr.

00:19:20.200 --> 00:19:21.740
Es gibt nur die

00:19:21.740 --> 00:19:25.960
Standard App

00:19:25.960 --> 00:19:26.640
und die ist halt Mist.

00:19:28.940 --> 00:19:29.300
Genau.

00:19:30.640 --> 00:19:31.920
Ah, was auch noch ganz interessant

00:19:31.920 --> 00:19:32.500
ist vielleicht,

00:19:33.900 --> 00:19:35.440
ist, es gibt

00:19:35.440 --> 00:19:36.500
das Pydentic.

00:19:39.100 --> 00:19:39.700
Pydentic hat

00:19:39.700 --> 00:19:41.300
irgendwie Venture Capital eingesammelt.

00:19:41.720 --> 00:19:42.660
Oh, okay.

00:19:43.600 --> 00:19:45.880
5 Millionen von Sequoia oder so.

00:19:46.300 --> 00:19:46.540
Okay.

00:19:47.280 --> 00:19:49.460
Jetzt weiß ich nicht, ob man sich darüber freuen soll

00:19:49.460 --> 00:19:50.620
oder ob man besorgt sein soll.

00:19:50.620 --> 00:19:53.300
und das kann beides sein, das ist so unklar.

00:19:53.980 --> 00:19:55.680
Ich weiß nicht genau, wie sie sich vorgestellt haben,

00:19:55.760 --> 00:19:57.320
dass sie das Investment wieder reinholen, aber

00:19:57.320 --> 00:19:59.720
weil das ist natürlich

00:19:59.720 --> 00:20:01.640
das Problem, wenn man jetzt irgendwie ganz viel

00:20:01.640 --> 00:20:03.480
Infrastruktur, also Pidentic als

00:20:03.480 --> 00:20:05.140
Infrastruktur verwendet und darauf aufbaut,

00:20:05.440 --> 00:20:06.160
dann ist es so, okay,

00:20:06.860 --> 00:20:09.720
haben die jetzt ein großes Incentive,

00:20:09.920 --> 00:20:11.860
mich irgendwie dafür bezahlen zu lassen?

00:20:12.400 --> 00:20:13.540
Das will man vielleicht nicht,

00:20:13.540 --> 00:20:14.300
unbedingt, aber

00:20:14.300 --> 00:20:17.400
ja, auf der anderen Seite,

00:20:17.720 --> 00:20:19.460
was natürlich vielleicht schon schön wäre, ist, wenn

00:20:19.460 --> 00:20:20.140
da halt so ein bisschen

00:20:20.140 --> 00:20:23.180
mehr, also ich glaube, der hat dann noch, also

00:20:23.180 --> 00:20:25.220
wie heißt der noch? Samuel? Der Bastian Ramirez?

00:20:25.500 --> 00:20:26.860
Ne, das ist der von FastAPI.

00:20:27.680 --> 00:20:29.540
Aber der ist Samuel Colvin,

00:20:29.660 --> 00:20:31.500
glaube ich, heißt der, von Pydentic.

00:20:31.660 --> 00:20:33.180
Macht der natürlich auch mit

00:20:33.180 --> 00:20:35.240
Pydentic? Ja, kann sein,

00:20:35.340 --> 00:20:37.400
weiß ich nicht so genau. Aber der

00:20:37.400 --> 00:20:39.220
hat jetzt dann auch irgendwie Leute

00:20:39.220 --> 00:20:41.160
angeheuert und jetzt gibt es dann noch ein bisschen mehr

00:20:41.160 --> 00:20:43.380
Druck irgendwie beim

00:20:43.380 --> 00:20:45.400
Entwickeln an der Stelle und das

00:20:45.400 --> 00:20:47.120
ist natürlich vielleicht schon nicht so schlecht, weil also

00:20:47.120 --> 00:20:48.880
Pydentic ist ja eigentlich schon eine sehr coole Idee. Ich fände

00:20:48.880 --> 00:20:50.000
verwenden das auch mal gerne,

00:20:51.340 --> 00:20:52.300
wenn man mal irgendwie so

00:20:52.300 --> 00:20:54.900
wirklich validieren will, dass die Daten, die man irgendwo reinbekommt,

00:20:55.040 --> 00:20:56.360
halt so richtig...

00:20:56.360 --> 00:20:58.940
Ja, hat eine so

00:20:58.940 --> 00:21:00.780
schöne Syntax, man schreibt eigentlich

00:21:00.780 --> 00:21:02.380
nur die Type Annotations hin und dann

00:21:02.380 --> 00:21:04.440
genau, hat man hinterher

00:21:04.440 --> 00:21:05.880
validierte Daten, das ist ja alles

00:21:05.880 --> 00:21:07.500
echt schick.

00:21:09.760 --> 00:21:11.060
Ja, genau.

00:21:11.500 --> 00:21:12.720
Aber das, was halt so ein bisschen

00:21:12.720 --> 00:21:14.260
problematisch ist, ist halt, dass es sehr langsam

00:21:14.260 --> 00:21:16.240
im Vergleich zu Standard

00:21:16.240 --> 00:21:18.560
Python-Objekte irgendwie einfach nur erstellen.

00:21:18.560 --> 00:21:20.800
Da kannst du ja Pfeil in die Chor nehmen, damit das dann auch in Rust läuft.

00:21:20.820 --> 00:21:22.620
Ja, genau. Und wenn das dann in Rust ist,

00:21:22.920 --> 00:21:24.580
aber es ist natürlich auch klar, dass man mehr Arbeit hat,

00:21:24.660 --> 00:21:25.620
das in Rust zu schreiben und so.

00:21:26.100 --> 00:21:28.380
Also mal gucken. Aber es ist auf jeden Fall eine interessante Entwicklung.

00:21:29.280 --> 00:21:30.200
Und gut, ja.

00:21:31.080 --> 00:21:31.980
Wie es ausgeht, wissen wir nicht.

00:21:32.800 --> 00:21:34.280
Dann haben wir noch, was haben wir noch?

00:21:37.220 --> 00:21:38.140
Node.js 20.

00:21:38.260 --> 00:21:40.380
Ich weiß nicht, ob es irgendwie interessant ist.

00:21:40.460 --> 00:21:41.200
Nö, eigentlich nicht.

00:21:41.200 --> 00:21:41.440
Nö.

00:21:44.740 --> 00:21:47.280
Ja, Pythonista ist eine neue Version

00:21:47.280 --> 00:21:48.080
veröffentlicht worden.

00:21:48.560 --> 00:21:50.700
Das freut mich ja total, aber ich glaube,

00:21:51.040 --> 00:21:52.600
vielen Leuten wird das nix sagen, aber

00:21:52.600 --> 00:21:54.880
es gibt für

00:21:54.880 --> 00:21:56.580
iOS eine App

00:21:56.580 --> 00:21:58.640
namens Pythonister und

00:21:58.640 --> 00:22:00.860
da kann man tatsächlich Python-Code ausführen.

00:22:01.540 --> 00:22:03.100
Also man kriegt dann halt so eine richtige interaktive

00:22:03.100 --> 00:22:05.140
Shell und da ist auch NumPy mit drin und der ganze Kram

00:22:05.140 --> 00:22:07.540
auf dem Telefon.

00:22:08.160 --> 00:22:08.340
Achso,

00:22:08.460 --> 00:22:11.240
Apple-Fanboy-Geschichte.

00:22:12.180 --> 00:22:12.500
Jaja,

00:22:13.200 --> 00:22:14.780
man kann da auch Programme dann ausführen und so,

00:22:14.780 --> 00:22:16.780
man kann die auch, das habe ich schon mal

00:22:16.780 --> 00:22:18.620
gemacht, dann, dass man im Share-Sheet

00:22:18.620 --> 00:22:20.200
sagen kann, ich share das jetzt mit

00:22:20.200 --> 00:22:22.500
irgendwie einem Python-Skript und

00:22:22.500 --> 00:22:24.380
dann kriegt das Python-Skript das und

00:22:24.380 --> 00:22:26.600
kann damit irgendwas machen. Also man kann da tatsächlich

00:22:26.600 --> 00:22:28.520
irgendwie Python-Code auf Telefonen

00:22:28.520 --> 00:22:30.460
und iPads und so ausführen.

00:22:31.240 --> 00:22:32.600
Und das ist jetzt halt in der

00:22:32.600 --> 00:22:34.420
Version erschienen, dass Python 3.10 unterstützt wird

00:22:34.420 --> 00:22:36.500
und ja, das ist schon

00:22:36.500 --> 00:22:38.220
sehr nett. Also das ist wirklich, wie das mit

00:22:38.220 --> 00:22:40.420
dieser App-Store-Policy vereinbar ist,

00:22:40.460 --> 00:22:41.280
dass eigentlich nur

00:22:41.280 --> 00:22:44.580
Objective-C, Swift und irgendwie

00:22:44.580 --> 00:22:46.460
C und C++ irgendwie ausgeführt werden

00:22:46.460 --> 00:22:47.040
können sollen.

00:22:48.420 --> 00:22:49.480
Ist mir nicht so ganz klar.

00:22:50.160 --> 00:22:52.380
Eigentlich, ja, war es wahrscheinlich

00:22:52.380 --> 00:22:54.400
zu unbekannt, dass da jemand wirklich mal drauf geguckt hätte.

00:22:54.600 --> 00:22:55.020
Oh, verdammt.

00:22:56.820 --> 00:22:57.820
Jetzt rausgekegelt.

00:22:59.240 --> 00:23:00.220
Aber es ist wirklich toll.

00:23:00.420 --> 00:23:01.900
Also das ist auch mit sehr viel Liebe

00:23:01.900 --> 00:23:03.500
handgedengelt.

00:23:03.920 --> 00:23:04.500
Ja, sehr schön.

00:23:06.700 --> 00:23:08.340
Ich finde, wir können ja langsam mal übergehen.

00:23:08.460 --> 00:23:09.360
Wir könnten langsam mal übergehen, ne?

00:23:10.180 --> 00:23:11.100
Interessanten Dingen.

00:23:12.060 --> 00:23:14.180
Genau, machen wir doch einfach mal so allmählich das Thema.

00:23:14.180 --> 00:23:16.100
Ja, ansonsten habe ich ja auch noch so Meta-Kram und so.

00:23:16.460 --> 00:23:19.900
Ja, wir wollten heute so ein bisschen über grafische Interfaces reden, die in Python...

00:23:19.900 --> 00:23:20.680
Ja, haben wir noch nie gemacht, ja.

00:23:20.860 --> 00:23:22.100
Genau, und was man da machen kann.

00:23:22.240 --> 00:23:28.320
Also ich höre ja immer, oder ich weiß das aus eigener Erfahrung, dass man grafische Interfaces in Python vielleicht gar nicht so wirklich machen will.

00:23:30.420 --> 00:23:31.900
Man kann vielleicht Turtle benutzen oder so.

00:23:32.820 --> 00:23:34.840
Ja, ich weiß nicht, ob man das überhaupt noch machen will, aber gut.

00:23:36.620 --> 00:23:39.600
Ja, aber genau, es gibt verschiedene Sachen in Python dazu.

00:23:39.740 --> 00:23:42.780
Und vielleicht mal den Martin fragen, warum benutzt du denn Qt?

00:23:42.780 --> 00:23:44.460
Oder wer bist du eigentlich?

00:23:44.460 --> 00:23:46.600
Ja, vielleicht kriegst du einfach erstmal auch nett.

00:23:47.040 --> 00:23:53.180
Ja, also ich bin Martin von miaplan.de und soll ich mich kurz vorstellen?

00:23:53.560 --> 00:23:54.000
Ja, ja.

00:23:55.220 --> 00:24:01.820
Also vielleicht kurz zu mir. Ich habe Bio-Alphabetik studiert, war dann fünf Jahre in der Softwareentwicklung,

00:24:02.080 --> 00:24:05.180
erst im SAP-Umfeld, dann im Bereich Automobil.

00:24:06.920 --> 00:24:13.280
Dann habe ich das Angebot bekommen, in den Familienbetrieb meiner Eltern mit einzusteigen.

00:24:13.280 --> 00:24:15.600
die machen Märkte

00:24:15.600 --> 00:24:17.140
im Einzelhandel

00:24:17.140 --> 00:24:18.480
also Fressnapf

00:24:18.480 --> 00:24:21.120
und das habe ich angenommen

00:24:21.120 --> 00:24:23.740
und habe dann

00:24:23.740 --> 00:24:25.520
gesehen

00:24:25.520 --> 00:24:27.980
wie meine Mutter dort die Dienstpläne

00:24:27.980 --> 00:24:29.580
erstellt, also sie hatte Personalverantwortung

00:24:29.580 --> 00:24:30.940
sozusagen, hat Dienstpläne erstellt

00:24:30.940 --> 00:24:32.780
und sie hat dort

00:24:32.780 --> 00:24:35.440
Excel-Listen erstellt

00:24:35.440 --> 00:24:37.800
und hat ein Kreuz

00:24:37.800 --> 00:24:39.280
für jede halbe Stunde

00:24:39.280 --> 00:24:41.680
gemacht, die ihren Mitarbeiter sozusagen eingeplant

00:24:41.680 --> 00:24:43.680
ist. Das Ganze für damals

00:24:43.680 --> 00:24:45.820
zehn Mitarbeiter, acht Stunden pro Tag,

00:24:45.940 --> 00:24:47.240
26 Tage im Monat, da

00:24:47.240 --> 00:24:48.760
kann man sich vorstellen,

00:24:49.180 --> 00:24:51.700
wie viele Kreuze sie da unten gemacht hat.

00:24:52.480 --> 00:24:53.440
Sie hatte dann irgendwann

00:24:53.440 --> 00:24:55.420
sich eine größere Sammlung an Bleistiften

00:24:55.420 --> 00:24:57.560
zugelegt, weil die halt

00:24:57.560 --> 00:24:59.620
der Reihe nach abgenutzt

00:24:59.620 --> 00:25:01.520
waren. Und ja, das habe ich mir eine Weile

00:25:01.520 --> 00:25:03.540
angeschaut und habe mir dann gedacht, also das muss

00:25:03.540 --> 00:25:05.340
besser gehen. Und

00:25:05.340 --> 00:25:07.520
ja, da war dann Miaplan

00:25:07.520 --> 00:25:07.920
geboren.

00:25:09.720 --> 00:25:11.360
Ja, vielleicht dazu

00:25:11.360 --> 00:25:13.420
was ist MIA Plan?

00:25:14.760 --> 00:25:15.800
Also das ist

00:25:15.800 --> 00:25:17.480
ein SAS

00:25:17.480 --> 00:25:19.020
also Software as a Service

00:25:19.020 --> 00:25:20.620
zur Dienstplanung

00:25:20.620 --> 00:25:23.800
man kann damit machen Schichtplanung

00:25:23.800 --> 00:25:25.520
Planung in der Produktion

00:25:25.520 --> 00:25:27.180
also wenn man Maschinen hat

00:25:27.180 --> 00:25:29.600
automatische Planung

00:25:29.600 --> 00:25:31.180
Bereitschaftsdienste, Nachtarbeit

00:25:31.180 --> 00:25:33.640
also alles was man sich da so will

00:25:33.640 --> 00:25:35.060
oder fast alles was man sich da so

00:25:35.060 --> 00:25:36.600
wünschen kann in dem Bereich

00:25:36.600 --> 00:25:38.400
genau

00:25:38.400 --> 00:25:42.140
Ja, klingt interessant

00:25:42.140 --> 00:25:44.080
also ich glaube die Menge der Unternehmen, die das halt

00:25:44.080 --> 00:25:46.080
irgendwie mit Excel-Listen machen, das wird nicht so klein sein

00:25:46.080 --> 00:25:47.200
das habe ich auch schon häufig gesehen

00:25:47.200 --> 00:25:50.000
Also ich habe ganz oft da schon die Anforderungen an sowas gehört

00:25:50.000 --> 00:25:51.820
aber mich würde jetzt interessieren, warum

00:25:51.820 --> 00:25:54.000
denn mit Qt und nicht als Web-Anwendung

00:25:54.000 --> 00:25:56.000
Ja, ganz kurz

00:25:56.000 --> 00:25:57.540
mit Excel, also Excel machen glaube ich alle

00:25:57.540 --> 00:25:59.760
also man fängt halt mit Excel an

00:25:59.760 --> 00:26:01.560
probiert es quasi

00:26:01.560 --> 00:26:03.960
umzusetzen, was man sich halt so wünscht

00:26:03.960 --> 00:26:05.820
und irgendwann stößt man an Grenzen

00:26:05.820 --> 00:26:07.100
ich glaube, das

00:26:07.100 --> 00:26:11.480
Das haben halt alle. Und dann fängt man halt an, sich umzuschauen.

00:26:13.780 --> 00:26:21.340
Ja, warum Qt? Also ich habe mir angeguckt, wie komme ich quasi zum Ziel?

00:26:21.660 --> 00:26:29.320
Also am Anfang des Projektes war klar, ich brauche eine grafische Oberfläche, die soll im Web stattfinden.

00:26:29.900 --> 00:26:34.980
Also das soll quasi nicht auf einem Computer installiert werden.

00:26:34.980 --> 00:26:36.020
denn

00:26:36.020 --> 00:26:39.700
wir wollen eigentlich von überall planen

00:26:39.700 --> 00:26:40.480
also nicht nur

00:26:40.480 --> 00:26:43.520
man hat nicht immer einen Rechner zur Verfügung

00:26:43.520 --> 00:26:45.460
und meine Mutti war

00:26:45.460 --> 00:26:47.460
nicht immer am Rechner zu Hause

00:26:47.460 --> 00:26:49.460
sondern die wollte halt auch vom Markt aus

00:26:49.460 --> 00:26:51.260
planen und was weiß ich, also es war klar

00:26:51.260 --> 00:26:53.000
das muss irgendwie auch ins Web das Ganze

00:26:53.000 --> 00:26:55.560
Hab mir verschiedene Sachen angeschaut

00:26:55.560 --> 00:26:57.180
ihr habt ja auch schon so ein bisschen angesprochen

00:26:57.180 --> 00:26:58.940
es gibt zig

00:26:58.940 --> 00:27:00.880
Frameworks, die man nutzen kann

00:27:00.880 --> 00:27:02.980
euer Liebling ist Django

00:27:02.980 --> 00:27:05.360
wie man unschwer rauskommt, wenn man euch kennt

00:27:05.360 --> 00:27:07.820
das habe ich mir auch

00:27:07.820 --> 00:27:10.120
angeschaut, kann ich ja dann noch ein bisschen was zu erzählen

00:27:10.120 --> 00:27:12.360
ansonsten

00:27:12.360 --> 00:27:14.300
wenn man jetzt nicht die Bedingung

00:27:14.300 --> 00:27:16.320
Web hat, gibt es

00:27:16.320 --> 00:27:18.520
verschiedene Frameworks, also Kiwi ist eins davon

00:27:18.520 --> 00:27:19.940
Qt ist eins davon

00:27:19.940 --> 00:27:22.360
ansonsten gibt es auch noch

00:27:22.360 --> 00:27:23.820
GTK zum Beispiel

00:27:23.820 --> 00:27:25.500
das GIMP Toolkit

00:27:25.500 --> 00:27:28.540
und ja, habe ich mir sozusagen

00:27:28.540 --> 00:27:30.320
alle der Reihe nochmal angeguckt

00:27:30.320 --> 00:27:32.380
und geschaut, was können die

00:27:32.380 --> 00:27:33.580
für mich leisten sozusagen.

00:27:34.960 --> 00:27:36.340
Und wenn man die

00:27:36.340 --> 00:27:37.880
so vergleicht, also die

00:27:37.880 --> 00:27:39.480
Frameworks für

00:27:39.480 --> 00:27:42.360
den Desktop, dann

00:27:42.360 --> 00:27:44.200
kommt man eigentlich darauf,

00:27:44.420 --> 00:27:46.340
dass es zwei Frameworks

00:27:46.340 --> 00:27:48.120
gibt, die da nur in Frage kommen.

00:27:48.240 --> 00:27:50.260
Das ist einmal Qt und einmal GTK. Das sind die

00:27:50.260 --> 00:27:51.840
einzigen, die, ich sag mal,

00:27:52.600 --> 00:27:54.360
weit fortgeschrittene Widgets

00:27:54.360 --> 00:27:55.100
bieten.

00:27:56.040 --> 00:27:58.540
Also wenn man quasi sehr spezielle

00:27:58.540 --> 00:28:00.380
Sachen machen will und

00:28:00.380 --> 00:28:01.340
das will ich,

00:28:02.380 --> 00:28:05.060
dann kommt man eigentlich um QT

00:28:05.060 --> 00:28:06.920
beziehungsweise GTK

00:28:06.920 --> 00:28:08.860
nicht drumrum. Was wäre so ein

00:28:08.860 --> 00:28:10.680
Widget beispielsweise, wo du sagen würdest, gut, das

00:28:10.680 --> 00:28:12.720
ist halt so was, was man nur da bekommt?

00:28:13.500 --> 00:28:14.300
Ja, also

00:28:14.300 --> 00:28:16.940
zum Beispiel

00:28:16.940 --> 00:28:18.180
Tabellen, ja

00:28:18.180 --> 00:28:20.900
aber nicht einfach nur Tabellen, sondern

00:28:20.900 --> 00:28:22.320
halt spezielle Tabellen

00:28:22.320 --> 00:28:24.480
zum Beispiel brauchte ich Tabellen

00:28:24.480 --> 00:28:26.940
die ein Kontextmenü

00:28:26.940 --> 00:28:28.400
können, die sollten

00:28:28.400 --> 00:28:30.920
Farben können, ich wollte Frames

00:28:30.920 --> 00:29:00.900
und PyTest.

00:29:00.920 --> 00:29:05.120
und jetzt könnte ich das vielleicht anders umsetzen, als ich mir das eigentlich vorstelle.

00:29:06.020 --> 00:29:09.300
Also ich könnte, weiß ich nicht, die Bedienung müsste ich dann halt so umstricken,

00:29:09.460 --> 00:29:14.860
dass das irgendwie dann die jeweilige Bibliothek kann und das wollte ich aber nicht.

00:29:15.380 --> 00:29:18.740
Also ich wollte das eigentlich so machen, wie ich mir das vorstelle.

00:29:20.500 --> 00:29:25.280
Und ja, da kam ich eigentlich nur bei Qt raus.

00:29:25.280 --> 00:29:27.420
Qt hat sehr weit

00:29:27.420 --> 00:29:29.180
entwickelte Widgets

00:29:29.180 --> 00:29:30.860
und damit kann man

00:29:30.860 --> 00:29:33.580
sagen wir mal so, ich habe noch nichts gefunden

00:29:33.580 --> 00:29:35.180
was man damit nicht umsetzen könnte

00:29:35.180 --> 00:29:37.960
und das ist alles schon da

00:29:37.960 --> 00:29:39.700
also ich brauche dann

00:29:39.700 --> 00:29:40.300
nichts mehr

00:29:40.300 --> 00:29:43.120
selber entwickeln

00:29:43.120 --> 00:29:45.540
sozusagen, also was die Oberfläche

00:29:45.540 --> 00:29:47.280
angeht, sondern Qt

00:29:47.280 --> 00:29:49.320
bietet eigentlich von Haus aus schon

00:29:49.320 --> 00:29:51.740
alles was man sich vorstellen kann

00:29:51.740 --> 00:29:53.820
und das

00:29:53.820 --> 00:29:54.360
war quasi

00:29:54.360 --> 00:30:06.383
wie eine Grundvoraussetzung Denn ich bin ein Einmann das hei ich brauche eine hohe Entwicklungsgeschwindigkeit sonst komme ich nicht zum Ziel

00:30:07.743 --> 00:30:15.623
Und genau, das war quasi die Bedingung, hätte ich angefangen, mir ein Webframework rauszusuchen.

00:30:16.143 --> 00:30:19.842
Django, ich habe ein Testprojekt aufgesetzt schon gehabt und habe mal geguckt, wie weit ich komme.

00:30:19.842 --> 00:30:22.802
aber da hat sich ziemlich schnell rausgestellt

00:30:22.802 --> 00:30:24.722
da hätte ich sehr sehr viel

00:30:24.722 --> 00:30:26.663
selber entwickeln müssen an Funktionalität

00:30:26.663 --> 00:30:29.062
und das kam nicht in Frage

00:30:29.062 --> 00:30:31.922
Und wie machst du es hübsch?

00:30:36.743 --> 00:30:37.802
Werden wir spezieller?

00:30:38.243 --> 00:30:39.763
Was genau stellst du dir heute hübsch vor?

00:30:39.962 --> 00:30:41.023
Wie kannst du das erst sein?

00:30:41.222 --> 00:30:41.822
Oder sieben?

00:30:43.442 --> 00:30:45.722
Musst du da alle Widgets einzeln

00:30:45.722 --> 00:30:46.702
überschreiben?

00:30:46.982 --> 00:30:47.763
Ist das responsive?

00:30:47.763 --> 00:30:49.802
oder musst du jeweils eine eigene Applikation

00:30:49.802 --> 00:30:51.503
für verschiedene Geräte schreiben

00:30:51.503 --> 00:30:53.003
oder wie löst Qt das?

00:30:53.802 --> 00:30:55.623
Ja, da

00:30:55.623 --> 00:30:57.362
müsste ich vielleicht erstmal sagen,

00:30:57.783 --> 00:30:59.003
wie ich das überhaupt gebaut habe.

00:31:00.143 --> 00:31:01.263
Fangen wir mal von vorne an.

00:31:01.722 --> 00:31:02.763
Fangen wir mal von vorne an.

00:31:04.023 --> 00:31:05.503
Also es stand sozusagen fest,

00:31:06.602 --> 00:31:07.802
oder ihr könnt ja auch

00:31:07.802 --> 00:31:09.663
vielleicht nochmal was zu den Widgets

00:31:09.663 --> 00:31:11.862
sagen und wie man die in Django einbindet.

00:31:12.923 --> 00:31:13.663
Aber für mich

00:31:13.663 --> 00:31:15.702
stand fest, okay, mit Qt kann

00:31:15.702 --> 00:31:17.602
ich sozusagen das sehr schnell umsetzen, was

00:31:17.602 --> 00:31:18.062
Ich brauche.

00:31:19.283 --> 00:31:21.602
Jetzt hat

00:31:21.602 --> 00:31:23.383
Qt aber ein Problem, das ist eigentlich

00:31:23.383 --> 00:31:25.562
eine Desktop-Framework.

00:31:26.042 --> 00:31:27.383
Also üblicherweise

00:31:27.383 --> 00:31:29.222
würde ich also eine Software schreiben,

00:31:30.682 --> 00:31:31.722
würde die dann bundeln,

00:31:32.062 --> 00:31:33.503
also mit PyInstaller,

00:31:33.582 --> 00:31:35.322
was weiß ich, und

00:31:35.322 --> 00:31:36.903
würde die dann sozusagen

00:31:36.903 --> 00:31:39.623
eine Software mir erstellen

00:31:39.623 --> 00:31:41.482
und die dann zum Kunden liefern

00:31:41.482 --> 00:31:43.322
oder würde die zum Download anbieten oder so.

00:31:44.862 --> 00:31:45.582
Ging in

00:31:45.582 --> 00:31:47.322
meinem Fall sozusagen nicht.

00:31:47.602 --> 00:32:00.903
und jetzt ist die Frage, wie kriegen wir quasi die Desktop-Anwendung ins Web und die Lösung dafür lautet Apache Jack-a-Molly.

00:32:02.682 --> 00:32:04.462
Das ist quasi, ich weiß nicht, habt ihr das schon mal gehört?

00:32:04.763 --> 00:32:04.982
Nein.

00:32:05.143 --> 00:32:05.602
Weißt du, was das ist?

00:32:06.003 --> 00:32:06.143
Nee.

00:32:06.862 --> 00:32:11.263
Das ist im Prinzip wie Remote Desktop, aber ohne Client.

00:32:11.263 --> 00:32:13.783
das heißt

00:32:13.783 --> 00:32:16.763
jeder Nutzer

00:32:16.763 --> 00:32:18.143
bekommt quasi einen Account

00:32:18.143 --> 00:32:20.862
und

00:32:20.862 --> 00:32:22.883
lockt sich damit sozusagen

00:32:22.883 --> 00:32:24.403
auf meinen Servern ein

00:32:24.403 --> 00:32:27.202
und läuft damit unter einen Nutzer-Account

00:32:27.202 --> 00:32:29.263
und kann sich quasi

00:32:29.263 --> 00:32:30.923
also

00:32:30.923 --> 00:32:32.862
ich starte dann sozusagen auf meinem Server

00:32:32.862 --> 00:32:34.682
eine Anwendung, zum Beispiel

00:32:34.682 --> 00:32:36.883
in Qt und die kriegt dann der

00:32:36.883 --> 00:32:37.783
Anwender zu sehen

00:32:37.783 --> 00:32:40.783
also die Software läuft sozusagen auf meinen

00:32:40.783 --> 00:32:42.082
Servern und

00:32:42.082 --> 00:32:44.743
der Anwender guckt sich das quasi von außen an

00:32:44.743 --> 00:32:46.562
und kann die Software auch bedienen und

00:32:46.562 --> 00:32:47.942
installiert aber selber nichts.

00:32:48.802 --> 00:32:50.643
Das heißt, es läuft rein über den

00:32:50.643 --> 00:32:52.643
Browser. Oder anders

00:32:52.643 --> 00:32:53.102
gesagt,

00:32:54.222 --> 00:32:56.403
Apache stellt quasi einen

00:32:56.403 --> 00:32:58.342
HTML5-Client

00:32:58.342 --> 00:33:00.602
schon zur Verfügung, der einfach

00:33:00.602 --> 00:33:01.342
im Browser läuft.

00:33:03.623 --> 00:33:04.663
Ja, ich glaube,

00:33:04.722 --> 00:33:05.883
ich habe das mal irgendwie gesehen.

00:33:06.582 --> 00:33:07.123
Wie heißt das?

00:33:09.123 --> 00:33:09.562
Guacamole?

00:33:09.562 --> 00:33:09.923
Guacamole?

00:33:09.923 --> 00:33:12.783
auf der DjangoCon

00:33:12.783 --> 00:33:14.722
2021

00:33:14.722 --> 00:33:18.842
gab es einen Talk darüber,

00:33:18.982 --> 00:33:19.403
wo auch jemand

00:33:19.403 --> 00:33:22.503
eine Shell quasi damit,

00:33:23.023 --> 00:33:24.763
so konnte man halt quasi auf eine Shell

00:33:24.763 --> 00:33:26.182
zugreifen, auch über einen Browser.

00:33:26.582 --> 00:33:28.682
Und das war ziemlich cool.

00:33:28.682 --> 00:33:30.743
Und das ist jetzt quasi das gleiche System,

00:33:30.862 --> 00:33:32.482
wie das funktioniert. Ja, sehr schick.

00:33:33.003 --> 00:33:33.783
Cool Idee.

00:33:34.082 --> 00:33:36.623
Also theoretisch kann man damit einen ganzen Desktop

00:33:36.623 --> 00:33:39.182
in den Browser reinzeichnen.

00:33:39.923 --> 00:33:42.423
Das ist auch der Standardanwendungsfall,

00:33:42.523 --> 00:33:44.982
aber es geht eben auch für eine einzelne Software.

00:33:46.182 --> 00:33:46.322
Ja.

00:33:46.942 --> 00:33:47.263
Genau.

00:33:47.883 --> 00:33:51.702
Ja, das hat den Vorteil, dass ich Qt nutzen kann.

00:33:53.482 --> 00:33:55.342
Mittlerweile macht mir Qt auch Spaß.

00:33:55.503 --> 00:33:58.082
Also mittlerweile im Sinne von, jetzt weiß ich, wie es funktioniert.

00:33:59.202 --> 00:34:00.482
Das heißt, das hat ein bisschen gedauert,

00:34:00.542 --> 00:34:01.582
das wird jetzt anders bei der Lernkurve.

00:34:01.582 --> 00:34:06.082
Ja, also die Lernkurve ist schon steil, würde ich behaupten.

00:34:06.082 --> 00:34:07.322
aber

00:34:07.322 --> 00:34:09.843
also ich habe festgestellt, das kann

00:34:09.843 --> 00:34:11.163
eigentlich alles, was man braucht

00:34:11.163 --> 00:34:13.643
also ich habe noch nichts gefunden, was das Ding nicht kann

00:34:13.643 --> 00:34:15.863
und was

00:34:15.863 --> 00:34:17.743
außerdem Spaß macht ist, also ich arbeite

00:34:17.743 --> 00:34:19.623
jetzt seit ungefähr drei Jahren damit

00:34:19.623 --> 00:34:21.663
und ich habe insgesamt fünf Bugs

00:34:21.663 --> 00:34:22.102
gefunden

00:34:22.102 --> 00:34:25.863
und das ist echt wenig

00:34:25.863 --> 00:34:27.883
also

00:34:27.883 --> 00:34:29.683
da habe ich schon ganz ganz andere

00:34:29.683 --> 00:34:30.302
Sachen erlebt

00:34:30.302 --> 00:34:33.623
also das ist

00:34:33.623 --> 00:34:35.903
also macht echt Spaß, muss ich sagen

00:34:35.903 --> 00:34:38.802
Ja, ansonsten

00:34:38.802 --> 00:34:40.522
kann ich

00:34:40.522 --> 00:34:43.062
fast nur synchronen Code

00:34:43.062 --> 00:34:45.082
schreiben, ihr habt ja schon ein bisschen gesprochen

00:34:45.082 --> 00:34:46.982
die Frameworks stellen jetzt alle

00:34:46.982 --> 00:34:47.723
auf Async um

00:34:47.723 --> 00:34:50.703
damit die mehrere, also mehr

00:34:50.703 --> 00:34:52.262
Requests quasi handeln können

00:34:52.262 --> 00:34:54.623
und ich habe eigentlich den Vorteil

00:34:54.623 --> 00:34:57.123
ich kann synchronen Code schreiben

00:34:57.123 --> 00:34:58.743
Jaja, das ist natürlich

00:34:58.743 --> 00:35:00.782
aus Entwicklersicht angenehmer

00:35:00.782 --> 00:35:03.082
Ja, das ist deutlich angenehmer

00:35:03.082 --> 00:35:04.703
und es ist einfach

00:35:04.703 --> 00:35:05.482
Ja

00:35:05.482 --> 00:35:08.322
Das ist sehr einfach

00:35:08.322 --> 00:35:11.262
Ja, schick, ja, ich meine

00:35:11.262 --> 00:35:13.223
ich glaube auch, dass, also ja, Qt hat

00:35:13.223 --> 00:35:14.683
halt irgendwie, das ist halt schon

00:35:14.683 --> 00:35:17.223
eigentlich ein sehr altes Projekt tatsächlich

00:35:17.223 --> 00:35:18.643
aus heutiger Sicht nicht, weil

00:35:18.643 --> 00:35:21.002
ich weiß gar nicht, wann das genau gestartet ist

00:35:21.002 --> 00:35:22.963
und wann es die Firma dazu gab

00:35:22.963 --> 00:35:25.282
KDE ist ja da, irgendwie, das ist schon so in den 90ern

00:35:25.282 --> 00:35:26.042
irgendwie ist das

00:35:26.042 --> 00:35:29.342
ich weiß gar nicht

00:35:29.342 --> 00:35:31.403
wann Qt gestartet ist, aber muss irgendwann in den 90ern

00:35:31.403 --> 00:35:32.143
wahrscheinlich gewesen sein

00:35:32.143 --> 00:35:33.482
und das ist jetzt in Version

00:35:33.482 --> 00:35:36.163
5 oder 6 oder wie benutzt ihr das?

00:35:38.062 --> 00:35:40.302
Ich mache gerade die Transition

00:35:40.302 --> 00:35:41.262
von 5 nach 6.

00:35:42.602 --> 00:35:43.982
Und das ist keine

00:35:43.982 --> 00:35:45.903
komplett Open Source Lizenz, wenn ich das

00:35:45.903 --> 00:35:46.883
richtig in Erinnerung habe.

00:35:48.082 --> 00:35:50.022
Genau, also die haben, also das ist

00:35:50.022 --> 00:35:51.963
dual lizenziert, also es hängt ein bisschen

00:35:51.963 --> 00:35:53.762
davon ab, welche Version du

00:35:53.762 --> 00:35:54.443
nutzt.

00:35:56.243 --> 00:35:58.002
Die aktuellste, also

00:35:58.002 --> 00:35:59.802
immer die aktuellste Version, meine ich,

00:35:59.802 --> 00:36:01.602
ist ausschließlich kommerziell.

00:36:02.143 --> 00:36:12.602
und die Lizenz, also da bin ich jetzt nicht hundertprozentig drin, aber die Lizenz sagt so in etwa, wenn der Code ein Jahr alt ist, dann müssen Sie es zusätzlich unter die LGPL stellen.

00:36:13.683 --> 00:36:21.663
Also wenn man quasi die LGPL Lizenz nutzen will, dann ist der Code recht gut abgehangen sozusagen.

00:36:21.982 --> 00:36:26.102
Also LGPL ist Strong Copy Left, wenn ich das richtig verstehe.

00:36:26.102 --> 00:36:29.623
Da müsste ich jetzt meinen Anwalt fragen

00:36:29.623 --> 00:36:31.762
aber

00:36:31.762 --> 00:36:32.802
ja, es

00:36:32.802 --> 00:36:35.883
ist eine relativ restriktive

00:36:35.883 --> 00:36:37.883
Lizenz und man muss

00:36:37.883 --> 00:36:39.842
schauen, dass man das, also wenn man

00:36:39.842 --> 00:36:41.822
das verwenden will und man möchte es

00:36:41.822 --> 00:36:43.223
kommerziell einsetzen, dann

00:36:43.223 --> 00:36:45.443
muss man schon ganz genau hingucken, sage ich mal

00:36:45.443 --> 00:36:47.143
Ja

00:36:47.143 --> 00:36:50.342
Ja, ja, ja

00:36:50.342 --> 00:36:53.683
Ja, interessant

00:36:53.683 --> 00:36:54.643
Ja, ja, ich

00:36:54.643 --> 00:37:01.822
Genau, das war eben, MySQL hatte doch so eine ähnliche Lizenz, aber ich bin mir nicht sicher, ob es der GPL war, wahrscheinlich eher nicht.

00:37:02.223 --> 00:37:24.062
Ja, Qt irgendwie, aber ich meine, Qt selber ist ja irgendwie in C++ geschrieben, glaube ich. Wie greift man denn dann von Python, weil ich meine, die Anwendung ist ja dann in Python irgendwie geschrieben hauptsächlich?

00:37:24.062 --> 00:37:26.203
Richtig, genau. Das ist 100% Python

00:37:26.203 --> 00:37:28.342
Wie kommt man denn dann an C++ dran?

00:37:28.423 --> 00:37:29.923
Da braucht man ja wahrscheinlich irgendeinen Wrapper um

00:37:29.923 --> 00:37:31.102
PyQT oder sowas

00:37:31.102 --> 00:37:32.582
Irgendwie sowas

00:37:32.582 --> 00:37:34.502
Die haben eine

00:37:34.502 --> 00:37:37.143
Python-API

00:37:37.143 --> 00:37:38.403
Python Bindings quasi

00:37:38.403 --> 00:37:39.943
Python Bindings, richtig

00:37:39.943 --> 00:37:42.883
Und wie wirkt es dir?

00:37:43.002 --> 00:37:44.782
Du kannst es auch einfach in jedem Betriebssystem

00:37:44.782 --> 00:37:46.643
wiederverwenden, wenn du das möchtest

00:37:46.643 --> 00:37:48.183
Könnte ich

00:37:48.183 --> 00:37:51.743
Qt ist plattformunabhängig

00:37:51.743 --> 00:37:53.883
Die laufen eigentlich fast überall

00:37:53.883 --> 00:37:57.322
Ich setze es aber unter Linux einfach ein

00:37:57.322 --> 00:38:03.443
Und wie machst du sowas wie Stylings und sowas

00:38:03.443 --> 00:38:05.463
also wie das, was ich eben gesagt habe

00:38:05.463 --> 00:38:06.443
mit hübsch oder sowas

00:38:06.443 --> 00:38:09.322
Wie gehst du da vor, dass das irgendwie so ein bisschen dynamisch ist

00:38:09.322 --> 00:38:11.243
und so? Bietet das Qt einfach

00:38:11.243 --> 00:38:12.443
alles von Haus aus, oder?

00:38:13.782 --> 00:38:15.383
Ja, Theming lässt sich

00:38:15.383 --> 00:38:16.703
machen mit Qt

00:38:16.703 --> 00:38:19.643
Es bringt aber von Haus aus

00:38:19.643 --> 00:38:21.643
schon quasi das Styling

00:38:21.643 --> 00:38:23.262
mit. Das sieht

00:38:23.262 --> 00:38:24.842
einigermaßen nativ aus

00:38:24.842 --> 00:38:26.262
unter jeder Plattform.

00:38:27.302 --> 00:38:29.143
Unter Linux hat es eben den Style,

00:38:29.263 --> 00:38:30.443
den es unter Linux hat.

00:38:31.443 --> 00:38:32.903
Lässt sich aber einfach, also man

00:38:32.903 --> 00:38:35.383
kann quasi jedes Element

00:38:35.383 --> 00:38:37.002
nochmal separat stylen, wenn man das möchte.

00:38:37.102 --> 00:38:38.723
Das geht einfach mit CSS dann.

00:38:39.982 --> 00:38:40.982
Wenn man das möchte.

00:38:41.143 --> 00:38:43.002
Also die haben quasi so eine abgespeckte Art

00:38:43.002 --> 00:38:44.302
von CSS.

00:38:45.042 --> 00:38:45.703
Unterstützen sie.

00:38:46.602 --> 00:38:48.542
Und ja, da kann man quasi

00:38:48.542 --> 00:38:50.802
seine Elemente dann färben

00:38:50.802 --> 00:38:51.203
oder

00:38:51.203 --> 00:38:54.163
einen anderen Rahmen geben oder was weiß ich.

00:38:57.143 --> 00:38:58.383
Ja, genau.

00:39:00.502 --> 00:39:01.143
Ja, ja, ja.

00:39:01.223 --> 00:39:03.203
Ne, interessant. Ich glaube, wir verletzten das letzte Mal

00:39:03.203 --> 00:39:04.822
mit Qt. Ich erinnere mich noch dran,

00:39:04.842 --> 00:39:06.362
das war schon auch wieder ein bisschen her, glaube ich,

00:39:06.423 --> 00:39:08.062
2016 oder so, habe ich das letzte Mal

00:39:08.062 --> 00:39:10.763
irgendwie für einen Headless-Browser,

00:39:10.883 --> 00:39:12.403
den ich brauchte, weil irgendwie

00:39:12.403 --> 00:39:14.342
JavaScript ausgeführt werden sollte,

00:39:15.302 --> 00:39:16.462
irgendwie, das war auch damals

00:39:16.462 --> 00:39:18.562
irgendwie das Ding, was ich da verwendet hatte,

00:39:18.703 --> 00:39:20.562
das war auch noch

00:39:20.562 --> 00:39:24.602
diese, die, ich glaube mit WebKit, die Engine war WebKit

00:39:24.602 --> 00:39:28.602
und dann brauchte man noch so ein bisschen Qt außenrum und dann

00:39:28.602 --> 00:39:32.802
musste ich da irgendwie Qt 5 selber kompilieren und ich erinnere mich noch, dass das ganz schön schmerzhaft war, aber

00:39:32.802 --> 00:39:36.263
Also ich erinnere mich auch daran, dass ich bin damals glaube ich über die Lizenz gestolpert

00:39:36.263 --> 00:39:40.522
in meinen ersten Gehversuchen in Python, da wollte ich unbedingt, wie man das am Anfang macht, irgendwas mit

00:39:40.522 --> 00:39:44.623
GUI bauen, dass da irgendwie man was anzeigen kann auf seinem Bildschirm und

00:39:44.623 --> 00:39:47.903
dann habe ich so ein bisschen rumprobiert, auch mit Qt, aber das hat irgendwie nicht so

00:39:47.903 --> 00:39:50.183
funktioniert, wie ich das wollte. Und ich bin da so ein bisschen

00:39:50.183 --> 00:39:52.022
über diese C++-Implementierung gestolpert

00:39:52.022 --> 00:39:53.842
und ich fand auch diese PyEQ nicht so super

00:39:53.842 --> 00:39:55.842
und bin dann bei Kiwi gelandet tatsächlich.

00:39:56.502 --> 00:39:58.002
Wo ich auch sagen muss, da gingen ein paar Sachen,

00:39:58.123 --> 00:39:59.383
aber das war auch alles eher so,

00:40:00.022 --> 00:40:00.842
ich weiß nicht genau.

00:40:02.002 --> 00:40:03.383
Nicht so, wie ich das eigentlich

00:40:03.383 --> 00:40:06.102
angenehm finde. Und dann habe ich es dann mit den Guis wieder gelassen

00:40:06.102 --> 00:40:07.743
beziehungsweise mit Web angefangen irgendwann.

00:40:08.962 --> 00:40:09.082
Ja.

00:40:09.683 --> 00:40:11.943
Ja, Kiwi, also Kiwi,

00:40:12.263 --> 00:40:14.223
die Widgets sind halt, also die haben nicht genug

00:40:14.223 --> 00:40:16.302
Widgets, also da kommt man nicht weit,

00:40:16.362 --> 00:40:17.022
wenn man wirklich

00:40:17.022 --> 00:40:19.862
intensiv was damit machen will, finde ich.

00:40:20.582 --> 00:40:20.782
Ja.

00:40:23.602 --> 00:40:25.903
Ja, ich meine, aus meiner Perspektive

00:40:25.903 --> 00:40:27.502
wäre jetzt eher so die Frage,

00:40:27.502 --> 00:40:29.362
warum macht man heutzutage

00:40:29.362 --> 00:40:30.763
überhaupt noch GUI?

00:40:31.683 --> 00:40:32.842
Ich wüsste heute alles Web.

00:40:34.383 --> 00:40:35.342
Und es ist ja

00:40:35.342 --> 00:40:36.822
ein etwas anderes Modell

00:40:36.822 --> 00:40:39.403
und eigentlich

00:40:39.403 --> 00:40:41.542
vielleicht ein bisschen einfacher zu maintainen,

00:40:41.602 --> 00:40:43.062
gerade wenn man jetzt eben nicht so

00:40:43.062 --> 00:40:44.903
eine größere Organisation ist, sondern eher

00:40:44.903 --> 00:40:49.443
kleiner, dann ist das ja mit, irgendwie, wie macht man das, wenn Clients inkompatibel werden

00:40:49.443 --> 00:40:53.423
oder so, oder unterschiedliche Versionen hat, das ist ja alles ganz schrecklich. Und das ist ja so ein

00:40:53.423 --> 00:40:56.923
Problem, das man halt hat, wenn man irgendwie klassisch Client-Server machen würde oder so, oder

00:40:56.923 --> 00:41:00.623
diese alten Desktop-UI-Geschichten machen

00:41:00.623 --> 00:41:05.302
würde. Aber ich meine, klar, wenn du das zentral laufen lässt und greifst dann nur sozusagen

00:41:05.302 --> 00:41:09.342
auf das Ding, wo das dann läuft zu, dann hast du diese

00:41:09.342 --> 00:41:13.183
ganzen Probleme eigentlich nicht mehr. Das ist richtig. Also ich habe ja eine ganze Menge

00:41:13.183 --> 00:41:43.163
und PyTest.

00:41:43.183 --> 00:41:51.183
und dadurch kann ich quasi die Ressourcen gleichmäßig auf meine Datenbank und so weiter verteilen.

00:41:53.302 --> 00:41:55.203
Ich weiß nicht, da kennt ihr euch eigentlich besser aus?

00:41:55.203 --> 00:41:59.962
Ja, also ich würde sagen, der State einer Web-Anwendung liegt normalerweise in der Datenbank,

00:42:00.062 --> 00:42:01.143
aus meiner Perspektive.

00:42:01.663 --> 00:42:05.663
Und genau, dann gibt es halt irgendwie diverse Prozesse, an die man Requests hinschickt

00:42:05.663 --> 00:42:07.282
und dann senden sie halt Responses zurück.

00:42:07.282 --> 00:42:10.082
und genau, ja.

00:42:11.842 --> 00:42:13.623
So und da hatte ich das Problem,

00:42:13.723 --> 00:42:15.403
also ich dachte, es gäbe das Problem,

00:42:16.042 --> 00:42:17.683
dass ich das

00:42:17.683 --> 00:42:18.862
nicht machen kann sozusagen.

00:42:19.683 --> 00:42:21.582
Also meine Anwendung, die ich

00:42:21.582 --> 00:42:22.582
also mir planen ist,

00:42:23.322 --> 00:42:25.143
hat ein State für jeden Nutzer.

00:42:25.562 --> 00:42:25.683
Ja.

00:42:26.842 --> 00:42:30.022
Und hier hatte ich in meinem Django-Prototypen

00:42:30.022 --> 00:42:30.683
auch probiert,

00:42:31.143 --> 00:42:32.403
diesen Zustand

00:42:32.403 --> 00:42:35.502
quasi umzusetzen und bin da aber

00:42:35.502 --> 00:42:37.883
schon irgendwie auf eine Hürde gestoßen.

00:42:38.042 --> 00:42:39.403
Also das scheint jedenfalls nicht

00:42:39.403 --> 00:42:41.842
nativ so

00:42:41.842 --> 00:42:43.923
zu gehen in Django, wenn ich das richtig

00:42:43.923 --> 00:42:45.643
gesehen habe. Allerdings habe ich auch nur

00:42:45.643 --> 00:42:48.042
vielleicht eine Woche oder so das ausgetestet.

00:42:48.163 --> 00:42:49.842
Das geht schon. Also du musst halt deine Daten

00:42:49.842 --> 00:42:52.022
irgendwie modellieren und die kannst du in eine Datensprache speichern

00:42:52.022 --> 00:42:53.962
und dann kommst du da auch wieder dran.

00:42:54.183 --> 00:42:56.062
Also es ist die Frage, was genau du da

00:42:56.062 --> 00:42:58.042
halten wolltest an State.

00:42:58.663 --> 00:43:00.302
Naja, also ich habe zum Beispiel

00:43:00.302 --> 00:43:02.663
relativ große NumPy-Matrizen

00:43:02.663 --> 00:43:04.362
und da

00:43:04.362 --> 00:43:09.982
und das muss auch NumPy sein, also das kann ich mir jetzt nicht irgendwie in die Datenbank reinschieben,

00:43:10.143 --> 00:43:14.982
sondern, das könnte ich schon tun, aber für jede Operation müsste ich mir das dann wieder rausziehen,

00:43:15.042 --> 00:43:20.663
das macht also eigentlich keinen Sinn und da hatte ich jetzt, also von meinem Draufgucken,

00:43:20.802 --> 00:43:23.542
keine gute Idee, wie ich das mit Django überhaupt umsetzen kann.

00:43:23.542 --> 00:43:26.322
Okay, das ist natürlich auch eine interessante Anforderung, also das wäre dann die Frage,

00:43:26.802 --> 00:43:33.723
okay, warum hast du denn NumPy-Matrizen, also ich meine, klassischerweise hast du ja eine relationale Datenbank

00:43:33.723 --> 00:43:38.022
und dann hast du die Daten halt in einer Tabelle irgendwie oder in mehreren Tabellen.

00:43:38.022 --> 00:43:39.482
Ja, vielleicht nochmal ein Planungsding.

00:43:39.562 --> 00:43:40.663
Also was ist überhaupt das Problem?

00:43:40.802 --> 00:43:45.982
Also du hast jetzt Menschen, die arbeiten zu Zeiten und die sich koordinieren wollen.

00:43:47.042 --> 00:43:53.203
Ja, also Anforderung ist im Prinzip die folgende.

00:43:53.263 --> 00:43:59.822
Ich habe einen Sprung von Mitarbeitern und die möchte ich quasi einplanen über meinetwegen einen Monat.

00:43:59.923 --> 00:44:00.962
Also der Zeitraum ist variabel.

00:44:00.962 --> 00:44:05.602
und ich möchte eigentlich zu jeder halben Stunde wissen,

00:44:06.342 --> 00:44:10.623
wie viele Mitarbeiter arbeiten in Summe gerade an diesem Tag,

00:44:10.862 --> 00:44:12.223
meinetwegen an diesem Arbeitsplatz.

00:44:14.022 --> 00:44:16.962
Das muss ich wissen und da muss ich effizient Berechnungen drauf machen können.

00:44:18.282 --> 00:44:24.623
Und auch auf der Länge, also wie lange arbeitet ein Mitarbeiter

00:44:24.623 --> 00:44:27.883
an diesem Tag, an dieser Maschine zum Beispiel.

00:44:27.883 --> 00:44:57.862
und PyTest.

00:44:57.883 --> 00:44:59.643
und ich habe sämtliche Operationen, die ich brauche.

00:45:02.743 --> 00:45:04.623
Ja, klar.

00:45:04.782 --> 00:45:08.342
Wenn man jetzt NumPy-Arrays hat,

00:45:08.502 --> 00:45:10.743
dann ist das natürlich so ein bisschen incompatibel

00:45:10.743 --> 00:45:13.143
mit diesem Standardmodell,

00:45:14.002 --> 00:45:16.542
wo man in Django einen relationellen Datenbank hat.

00:45:17.362 --> 00:45:18.723
Man kann das natürlich auch machen,

00:45:18.802 --> 00:45:20.502
dann ist die Frage, ob einem Django noch so viel nützt,

00:45:20.562 --> 00:45:23.183
weil dann kann man den ORM nicht benutzen.

00:45:24.943 --> 00:45:27.542
Ich bin schon mal erfreut,

00:45:27.883 --> 00:45:57.862
und PyTest.

00:45:57.883 --> 00:46:02.082
doch irgendwie auf SQL abbilden oder geht das halt gar nicht? Wenn es nicht geht, ja, dann kann man halt nichts machen.

00:46:02.782 --> 00:46:05.623
Dann nützt einem das. Klingt für mich, als wären da viele Relationen irgendwie.

00:46:06.403 --> 00:46:10.203
Also das kann man mit Sicherheit abbilden. Die Frage ist,

00:46:10.243 --> 00:46:13.982
wie viel Schmerzen hat man dabei? Ja, gut, genau. Und wenn man es schon so hat und

00:46:13.982 --> 00:46:18.163
das gut funktioniert, dann ist halt die Frage, lohnt sich das oder macht man es nicht dann lieber so,

00:46:18.243 --> 00:46:20.763
dass man das einfach verwenden kann, was man schon hat, was funktioniert.

00:46:20.763 --> 00:46:20.982
Ja.

00:46:23.703 --> 00:46:26.683
Ja, da kommt es her.

00:46:27.883 --> 00:46:28.743
interessant

00:46:28.743 --> 00:46:31.462
aber es ist auch wirklich rein Nampal

00:46:31.462 --> 00:46:33.362
kein Pandas oder sowas, sondern einfach

00:46:33.362 --> 00:46:35.962
auch, aber das versuche ich zu vermeiden

00:46:35.962 --> 00:46:37.582
also

00:46:37.582 --> 00:46:39.282
jetzt rein Pandas

00:46:39.282 --> 00:46:41.582
ist meiner Ansicht nach nicht

00:46:41.582 --> 00:46:43.623
praktikabel, weil ganz einfach

00:46:43.623 --> 00:46:45.183
die Importzeit beträgt

00:46:45.183 --> 00:46:46.562
drei Sekunden

00:46:46.562 --> 00:46:48.723
das ist völlig

00:46:48.723 --> 00:46:50.123
in der Exkursabel

00:46:50.123 --> 00:46:53.923
ja, aber

00:46:53.923 --> 00:46:57.002
selbst wenn ich den Import an die

00:46:57.002 --> 00:46:58.943
an die Startzeit verschiebe

00:46:58.943 --> 00:47:01.602
oder in die Laufzeit,

00:47:01.683 --> 00:47:03.502
ist ja egal. Drei Sekunden sind

00:47:03.502 --> 00:47:04.663
an keiner Stelle akzeptabel.

00:47:06.442 --> 00:47:07.703
Und da bleibt höchstens

00:47:07.703 --> 00:47:09.342
die Variante, hier die

00:47:09.342 --> 00:47:10.783
Alternativen zu nehmen,

00:47:11.322 --> 00:47:13.602
die es inzwischen gibt. Jetzt müsste ich

00:47:13.602 --> 00:47:15.362
Polars, war glaube ich

00:47:15.362 --> 00:47:17.403
die aktuelle Entwicklung

00:47:17.403 --> 00:47:18.763
in Rust, wenn mich nicht alles täuscht.

00:47:19.822 --> 00:47:21.383
Das habe ich mir noch nicht in der Tiefe

00:47:21.383 --> 00:47:23.862
angeguckt. Ich nehme mal an,

00:47:23.903 --> 00:47:25.022
die Importzeiten sind da besser.

00:47:25.022 --> 00:47:29.482
Ich weiß aber nicht, ob Polars schon alles kann, was ich da brauche

00:47:29.482 --> 00:47:33.602
Ja, das ist ja jetzt erst am Anfang, genau

00:47:33.602 --> 00:47:35.183
Ja, interessant

00:47:35.183 --> 00:47:42.143
Ja, also das ist natürlich auch etwas, was man halt in Python gut machen kann

00:47:42.143 --> 00:47:45.302
und sonst wahrscheinlich auch eher nicht hat, dass man halt diese Nampai-Geschichte

00:47:45.302 --> 00:47:47.502
direkt irgendwie verwenden kann

00:47:47.502 --> 00:47:53.582
Ja, also Nampai ist eine der besten Bibliotheken in Python, würde ich sagen

00:47:53.582 --> 00:47:55.763
da kann man echt so viel rausziehen

00:47:55.763 --> 00:47:57.502
und da ist so viel schon da

00:47:57.502 --> 00:47:59.042
und es ist vor allem verdammt schnell

00:47:59.042 --> 00:47:59.783
ja

00:47:59.783 --> 00:48:02.223
ja

00:48:02.223 --> 00:48:05.462
aber wie ist denn das, also wenn wir

00:48:05.462 --> 00:48:07.502
jetzt zu dem Qt

00:48:07.502 --> 00:48:08.582
da, also

00:48:08.582 --> 00:48:11.522
die beiden Links, ist das dann halt, da muss man

00:48:11.522 --> 00:48:13.082
dann Cablecase verwenden

00:48:13.082 --> 00:48:15.542
wahrscheinlich ja

00:48:15.542 --> 00:48:17.783
in Qt 6

00:48:17.783 --> 00:48:18.183
nicht mehr

00:48:18.183 --> 00:48:21.183
da haben sie es quasi normal

00:48:21.183 --> 00:48:21.903
gemacht

00:48:21.903 --> 00:48:25.183
aber, naja, man gewöhnt

00:48:25.183 --> 00:48:25.562
sich dran

00:48:25.562 --> 00:48:28.822
es ist jetzt auch kein Weltuntergang

00:48:28.822 --> 00:48:30.442
wenn ich jetzt für die

00:48:30.442 --> 00:48:32.643
Calls dann eben

00:48:32.643 --> 00:48:35.082
CamelCase habe, aber ja, schön ist es nicht, das stimmt

00:48:35.082 --> 00:48:37.123
Ja, sind die

00:48:37.123 --> 00:48:38.302
Fußnägel nach oben geknückt

00:48:38.302 --> 00:48:40.482
Ja gut, ich meine, ich mache ja auch andere Sachen

00:48:40.482 --> 00:48:42.482
auf TypeScript und so, da mache ich auch CamelCase, aber

00:48:42.482 --> 00:48:44.462
wenn man in Python ist, dann finde ich das mal

00:48:44.462 --> 00:48:46.862
die Kombination, manchmal SnackCase, manchmal CamelCase

00:48:46.862 --> 00:48:48.542
aber ja, gut

00:48:48.542 --> 00:48:49.623
ja

00:48:49.623 --> 00:49:00.163
Ja, interessante Geschichte, aber wie ist das denn jetzt, wenn jetzt mehrere Leute auf die Applikation zugreifen?

00:49:00.842 --> 00:49:11.942
Genau, also ich war ja stehen geblieben, also ich habe mir Sorgen gemacht sozusagen, dass das nicht skaliert und das scheint aber nicht so schlimm zu sein.

00:49:11.942 --> 00:49:15.062
also nein, es scheint relativ gut zu sein

00:49:15.062 --> 00:49:16.802
also ich habe mir vor allem

00:49:16.802 --> 00:49:18.822
Sorgen gemacht um die Bandbreite

00:49:18.822 --> 00:49:20.883
und da muss ich

00:49:20.883 --> 00:49:22.922
sagen, das ist gar kein Problem

00:49:22.922 --> 00:49:24.802
also das kostet

00:49:24.802 --> 00:49:26.342
tatsächlich fast keine Bandbreite

00:49:26.342 --> 00:49:28.403
und würde sogar behaupten, das ist

00:49:28.403 --> 00:49:30.763
ähnlich einer Web-Applikation

00:49:30.763 --> 00:49:32.942
Wie

00:49:32.942 --> 00:49:33.862
übersteckt denn

00:49:33.862 --> 00:49:34.422
dieses

00:49:34.422 --> 00:49:37.243
Daten

00:49:37.243 --> 00:49:39.322
ist das nicht ein Bild oder

00:49:39.322 --> 00:49:40.783
Nein

00:49:40.783 --> 00:49:43.263
also das kommt darauf an

00:49:43.263 --> 00:49:46.623
das unterstützt mehrere Backends

00:49:46.623 --> 00:49:47.822
man kann zum Beispiel

00:49:47.822 --> 00:49:49.062
VNC nehmen

00:49:49.062 --> 00:49:52.422
man kann aber auch XRDP nehmen

00:49:52.422 --> 00:49:54.482
und je nachdem wie

00:49:54.482 --> 00:49:56.322
effizient das implementiert ist

00:49:56.322 --> 00:49:57.542
ist es gut

00:49:57.542 --> 00:50:00.562
und im Fall

00:50:00.562 --> 00:50:02.263
von XRDP ist es gut

00:50:02.263 --> 00:50:04.643
und da

00:50:04.643 --> 00:50:05.922
werden also keine Bilder mehr übertragen

00:50:05.922 --> 00:50:08.143
da wird vielleicht ein Frame am Anfang übertragen

00:50:08.143 --> 00:50:09.582
und dann werden nur noch Deltas übertragen

00:50:09.582 --> 00:50:11.062
Okay, ja

00:50:11.062 --> 00:50:13.082
Also da entsteht tatsächlich nicht viel Traffic

00:50:13.082 --> 00:50:17.223
Und was den Speicherbedarf

00:50:17.223 --> 00:50:19.482
angeht, da bin ich ja selber für verantwortlich

00:50:19.482 --> 00:50:21.102
und hab das selber

00:50:21.102 --> 00:50:23.102
in der Hand. Aber es ist denn ja schon so, dass du

00:50:23.102 --> 00:50:25.042
quasi eine Applikation pro Nutzer irgendwie

00:50:25.042 --> 00:50:26.783
starten musst, mehr oder weniger. Ja, richtig

00:50:26.783 --> 00:50:28.322
Genau, das ist schon so

00:50:28.322 --> 00:50:30.602
Aber ich hab mir das durchgerechnet, also das

00:50:30.602 --> 00:50:33.102
funktioniert, also ich kann ja auch

00:50:33.102 --> 00:50:34.002
selber mehr oder weniger

00:50:34.002 --> 00:50:36.862
bestimmen, sag ich mal

00:50:36.862 --> 00:50:38.542
wie viel Speicher das Ganze frisst

00:50:38.542 --> 00:50:40.502
und wenn ich mir halt

00:50:40.502 --> 00:50:43.342
die Bibliothek reinziehe,

00:50:43.403 --> 00:50:45.542
die 500 Megabyte beim Import frisst,

00:50:45.663 --> 00:50:46.743
na dann kann ich die halt nicht nehmen.

00:50:50.542 --> 00:50:51.922
Ja, auch interessant.

00:50:52.462 --> 00:50:54.383
Und genau was mich auch noch interessieren würde,

00:50:54.822 --> 00:50:57.163
um diese grafische Darstellung,

00:50:57.362 --> 00:50:58.683
die muss ja dann irgendwie schon

00:50:58.683 --> 00:51:01.042
irgendwo gerendert werden.

00:51:01.163 --> 00:51:03.143
Das heißt, du brauchst auf dem Server, hast du dann quasi

00:51:03.143 --> 00:51:05.703
auch ein X oder irgendwie sowas?

00:51:06.042 --> 00:51:06.302
Genau.

00:51:06.302 --> 00:51:36.283
Ah, okay.

00:51:36.302 --> 00:51:37.903
20 Jahre, 30 Jahre.

00:51:38.862 --> 00:51:40.602
Also ich denke, es wird es auch noch eine Weile

00:51:40.602 --> 00:51:42.602
geben, dass da noch genug Zeit

00:51:42.602 --> 00:51:43.362
ist, das zu portieren.

00:51:45.862 --> 00:51:46.582
Und dann

00:51:46.582 --> 00:51:48.462
ist Matt quasi ein User,

00:51:48.562 --> 00:51:50.542
der das von außen benutzt,

00:51:50.842 --> 00:51:52.263
eigentlich mehr oder weniger auch ein User

00:51:52.263 --> 00:51:53.883
im Unix-System.

00:51:54.783 --> 00:51:55.922
Nicht eigentlich, sondern tatsächlich.

00:51:55.922 --> 00:51:56.223
Tatsächlich.

00:51:56.223 --> 00:52:08.143
Dominik hat mir gerade

00:52:08.143 --> 00:52:09.042
irgendwie

00:52:09.042 --> 00:52:12.403
auf dem

00:52:12.403 --> 00:52:14.403
Telefon

00:52:14.403 --> 00:52:16.283
aufgemacht und da flackerte das

00:52:16.283 --> 00:52:18.482
das weiß ich allerdings aber nicht

00:52:18.482 --> 00:52:19.422
ob das jetzt irgendwie

00:52:19.422 --> 00:52:22.283
also das Ganze läuft

00:52:22.283 --> 00:52:24.322
auf Tablets und Telefon

00:52:24.322 --> 00:52:26.562
aber das ist nicht meine Zielgruppe

00:52:26.562 --> 00:52:26.922
eigentlich

00:52:26.922 --> 00:52:30.502
also es funktioniert, man kann damit auch

00:52:30.502 --> 00:52:32.582
planen, man kann sogar Tastatureingaben

00:52:32.582 --> 00:52:33.203
und alles machen

00:52:33.203 --> 00:52:36.302
da gibt es eine Tastenkombination dafür, wie das geht

00:52:36.302 --> 00:52:38.123
wenn man in der FAK

00:52:38.123 --> 00:52:39.442
nachguckt, steht es da drin

00:52:39.442 --> 00:52:42.342
aber eigentlich ziele ich auf den Desktop

00:52:42.342 --> 00:52:42.982
Anwender

00:52:42.982 --> 00:52:46.502
eigentlich ist es nur schön auf dem Desktop zu planen

00:52:46.502 --> 00:52:48.322
ich glaube keiner möchte wirklich

00:52:48.322 --> 00:52:50.263
auf dem Handy seine

00:52:50.263 --> 00:52:52.143
32 Mitarbeiter

00:52:52.143 --> 00:52:53.002
planen

00:52:53.002 --> 00:52:58.383
also ich weiß nicht, ob es da irgendeine Software gibt, die das gut macht, wenn, dann Chapeau,

00:52:59.163 --> 00:53:02.462
aber ich ziele da nicht drauf, also ich habe es nicht davor.

00:53:02.462 --> 00:53:05.522
Also ich habe tatsächlich so ein paar Ideen an der Stelle auch schon durchgeschüttet,

00:53:05.623 --> 00:53:08.223
weil ich diese Anforderung wirklich auch so ein paar Mal gekriegt habe,

00:53:08.302 --> 00:53:13.623
auch so Businesses heraus, die es halt wirklich brauchten und die es ganz interessant fanden.

00:53:17.183 --> 00:53:20.002
Also da bist du nicht raus, den muss ich eigentlich nochmal umsetzen.

00:53:20.002 --> 00:53:22.462
irgendwann im nächsten Leben, wenn ich

00:53:22.462 --> 00:53:23.042
mal Zeit finde.

00:53:24.482 --> 00:53:26.623
Ja, ja, ja.

00:53:26.703 --> 00:53:28.263
Aber ich meine, man kann sich schon, also so gerade

00:53:28.263 --> 00:53:30.082
im Probenfeld haben die sitzen, die Leute,

00:53:30.183 --> 00:53:32.442
das ist schon vom Rechner, dann kann man schon davon ausgehen, dass das so

00:53:32.442 --> 00:53:34.223
funktioniert, ja.

00:53:34.962 --> 00:53:35.723
Ja, ja, ja.

00:53:36.942 --> 00:53:38.442
Naja, ich meine, das ist halt ganz

00:53:38.442 --> 00:53:40.302
anders, als man das sozusagen

00:53:40.302 --> 00:53:42.322
so kennt, aber ich meine, wenn man so ein bisschen

00:53:42.322 --> 00:53:44.362
drüber nachdenkt, dann ist das eigentlich gar nicht so

00:53:44.362 --> 00:53:45.383
blöd.

00:53:46.322 --> 00:53:47.283
Das ist schon interessant.

00:53:47.283 --> 00:53:52.123
Also der größte Vorteil, den ich sehe, ist wirklich die Entwicklungsgeschwindigkeit

00:53:52.123 --> 00:53:57.322
Ich brauche, ich habe kein HTML, ich habe kein CSS, ich habe kein JavaScript

00:53:57.322 --> 00:54:01.042
Ich kann reines Python schreiben und kann mein Feature deployen

00:54:02.283 --> 00:54:06.802
Und ich mag Python

00:54:06.802 --> 00:54:10.482
Und ich mag weniger CSS und JavaScript, das mag ich nicht so gerne

00:54:10.482 --> 00:54:16.403
Also ich komme nicht drum rum, also ich mache das auch, aber nur wo es wirklich nötig ist

00:54:17.283 --> 00:54:17.683
Ja.

00:54:19.962 --> 00:54:21.422
Ich überlege gerade, man hat sich so ein bisschen

00:54:21.422 --> 00:54:22.442
an gewohnt. Also ich

00:54:22.442 --> 00:54:24.783
finde zum Beispiel mittlerweile schwierig,

00:54:25.022 --> 00:54:27.442
das von der nicht mit CSS

00:54:27.442 --> 00:54:29.302
irgendwie vielleicht auch ein bisschen in JavaScript

00:54:29.302 --> 00:54:31.422
zu stylen, weil mir so ein paar Sachen dann immer fehlen.

00:54:32.102 --> 00:54:33.342
So diese dynamischen Sachen, an die man

00:54:33.342 --> 00:54:35.203
sich dann doch irgendwie dran gewöhnt, so Headless UI

00:54:35.203 --> 00:54:35.623
oder so.

00:54:38.143 --> 00:54:39.422
Das geht mir schon auf die Nerven,

00:54:39.502 --> 00:54:40.723
wenn ich jetzt in Django

00:54:40.723 --> 00:54:43.403
das ohne REST-API benutzen

00:54:43.403 --> 00:54:45.342
möchte, sondern die Templates einbaue, das ist

00:54:45.342 --> 00:54:46.703
manchmal schon immer so ein bisschen strugglig,

00:54:46.703 --> 00:54:49.723
weil ich halt da schon relativ viel auf Vue.js klebe.

00:54:51.082 --> 00:54:54.163
Ja, aber das ist ja kein Problem von...

00:54:54.163 --> 00:54:54.842
Also es ist ja beides...

00:54:54.842 --> 00:54:55.422
Es ist ja beides Ökosystem.

00:54:56.422 --> 00:55:01.663
Die Frage ist halt, welche Leute haben sich schon wie viel auseinandergesetzt mit Dingen zu entwickeln,

00:55:01.783 --> 00:55:05.743
die das schön, einfach und pretty zu benutzen machen.

00:55:06.322 --> 00:55:07.922
Du meinst... Achso, ja gut, okay.

00:55:08.022 --> 00:55:11.383
Also wenn du aus der Entwicklersicht drauf guckst und dir dann überlegst,

00:55:11.383 --> 00:55:14.442
okay, wenn ich jetzt schnell Produktivität...

00:55:14.442 --> 00:55:17.522
mit UI-Sachen,

00:55:17.842 --> 00:55:18.143
wo ich

00:55:18.143 --> 00:55:20.283
meine, wenn ich quasi

00:55:20.283 --> 00:55:22.342
fürs Web eine Applikation so schreiben will, wie

00:55:22.342 --> 00:55:24.322
ich das sonst mit PyQt machen würde,

00:55:24.623 --> 00:55:26.203
mit Qt,

00:55:26.482 --> 00:55:28.183
was nehme ich denn da?

00:55:28.342 --> 00:55:29.842
Dann landest du wahrscheinlich bei den

00:55:29.842 --> 00:55:32.482
SPAs und dann landest du halt auch irgendwie bei irgendwas

00:55:32.482 --> 00:55:34.542
von den großen UI-Frameworks,

00:55:34.542 --> 00:55:35.663
die es halt für JavaScript gibt.

00:55:36.243 --> 00:55:37.723
Da ist halt schon am meisten Arbeit dran.

00:55:37.783 --> 00:55:39.703
Also ich bin mir natürlich da so ein bisschen ein Klotz ans Bein.

00:55:41.502 --> 00:55:42.582
Naja, aber dafür habe ich natürlich

00:55:42.582 --> 00:55:43.962
auch das ganze Ökosystem mit damit.

00:55:43.962 --> 00:55:45.403
Ich bin halt nicht ganz alleine.

00:55:45.602 --> 00:55:47.723
Mein Problem wäre jetzt bei Qt in Python

00:55:47.723 --> 00:55:48.562
mit den Bindings.

00:55:49.743 --> 00:55:50.862
Ich muss halt alles selber bauen.

00:55:51.342 --> 00:55:52.962
Also vom Scratch irgendwie.

00:55:53.143 --> 00:55:55.283
Ich muss mir selber überlegen, wie das aussehen muss.

00:55:56.362 --> 00:55:56.802
Ich frage mich

00:55:56.802 --> 00:55:58.522
gerade so ein bisschen,

00:55:58.703 --> 00:56:01.522
was ich auch noch gerne von Martin wissen würde,

00:56:01.763 --> 00:56:03.422
wie überhaupt so ein UI strukturiert ist,

00:56:03.462 --> 00:56:05.922
so prinzipiell in Python.

00:56:06.842 --> 00:56:08.062
Also von der Struktur her.

00:56:09.143 --> 00:56:09.663
Also ich glaube,

00:56:09.723 --> 00:56:11.982
das ist gar nicht so groß anders,

00:56:11.982 --> 00:56:13.163
als wenn man

00:56:13.163 --> 00:56:15.883
mit Django das machen würde.

00:56:16.922 --> 00:56:18.062
Also es gibt einen Event-Loop

00:56:18.062 --> 00:56:20.422
und

00:56:20.422 --> 00:56:22.243
ja, eigentlich dreht sich alles

00:56:22.243 --> 00:56:22.922
um das Event-Loop.

00:56:23.763 --> 00:56:26.243
Und wenn man was Asynchrones braucht,

00:56:26.783 --> 00:56:28.322
dann bietet Qt da auch

00:56:28.322 --> 00:56:29.183
was Asynchrones.

00:56:29.922 --> 00:56:31.422
Das ist im Wesentlichen eine Python-Klasse.

00:56:33.462 --> 00:56:33.602
Ja.

00:56:34.862 --> 00:56:36.243
Was interessiert dich speziell?

00:56:37.102 --> 00:56:38.203
Also mich interessiert vor allem das

00:56:38.203 --> 00:56:39.143
UI irgendwie.

00:56:39.143 --> 00:56:40.163
Also wie

00:56:40.163 --> 00:56:42.683
baue ich zuerst mir einen Rahmen

00:56:42.683 --> 00:56:47.143
und dann da verschiedene Container rein oder mache ich das irgendwie über so Floating-Geschichten

00:56:47.143 --> 00:56:49.522
oder mache ich das alles statisch?

00:56:49.903 --> 00:56:51.322
Ach so, ach jetzt habe ich dich falsch verstanden.

00:56:51.462 --> 00:56:54.783
Ich dachte, du meinst das Design der Python-Applikation,

00:56:54.942 --> 00:56:57.962
aber du meinst tatsächlich die Oberfläche ansehen.

00:56:57.962 --> 00:57:03.763
Ja, also Qt hat unterschiedliche Wege, wie man das machen kann.

00:57:04.643 --> 00:57:07.822
Ich habe da auch noch nicht alle bis ins Detail ergründet, tatsächlich.

00:57:08.322 --> 00:57:09.243
Auch nach drei Jahren noch nicht.

00:57:09.243 --> 00:57:39.223
und PyTest.

00:57:39.243 --> 00:58:09.223
und wie man das ausprobieren kann.

00:58:09.243 --> 00:58:25.903
Woran ich eben denken musste, ist halt, ich glaube, es ist halt sehr stark davon abhängig, ob das jetzt eine gute Idee ist, sozusagen, dass man das einfach so nehmen kann, die Widgets, oder wahrscheinlich kann man sie ein bisschen stylen, oder ob das jetzt besser wäre, das über CSS und JavaScript zu machen, hängt halt wahrscheinlich sehr stark von einem Use Case ab.

00:58:25.962 --> 00:58:30.562
Ja, die Frage ist halt, wie viel Arbeit muss ich jetzt da noch reinstecken, um mir so ein komplettes Konzept auszudenken.

00:58:30.562 --> 00:58:32.703
Aber wenn dein Newscast ist, du willst irgendwas

00:58:32.703 --> 00:58:34.663
kompliziertes machen, aber letztlich ist es

00:58:34.663 --> 00:58:36.663
nicht so wahnsinnig wichtig, dass das jetzt zu

00:58:36.663 --> 00:58:38.683
deinen Brandfarben passt, weil das ist

00:58:38.683 --> 00:58:39.763
halt gar nichts, was jetzt

00:58:39.763 --> 00:58:42.562
Customer-Facing ist, sondern es ist halt

00:58:42.562 --> 00:58:44.643
irgendwie ein Ding, was Leute benutzen, um irgendwas

00:58:44.643 --> 00:58:46.643
zu erreichen, aber das ist nie nach außen hin

00:58:46.643 --> 00:58:47.602
sozusagen

00:58:47.602 --> 00:58:50.042
Wer ist denn der Customer?

00:58:51.723 --> 00:58:52.643
Ja gut, natürlich schon die

00:58:52.643 --> 00:58:54.403
Leute, die das benutzen, aber

00:58:54.403 --> 00:58:55.743
das ist halt nur intern

00:58:55.743 --> 00:58:58.703
Das würde ich anders sehen

00:58:58.703 --> 00:58:59.723
mit dem nur intern

00:58:59.723 --> 00:59:02.362
Ja gut, aber warum

00:59:02.362 --> 00:59:04.403
ja okay, aber da würde ich jetzt denken

00:59:04.403 --> 00:59:06.462
an der Stelle ist es, macht es halt

00:59:06.462 --> 00:59:07.982
Sinn, vielleicht was zu verwenden

00:59:07.982 --> 00:59:10.143
womit du komplizierte Sachen

00:59:10.143 --> 00:59:11.482
hinbekommst

00:59:11.482 --> 00:59:14.482
die du vielleicht brauchst

00:59:14.482 --> 00:59:15.723
weil das ein kompliziertes Problem ist

00:59:15.723 --> 00:59:18.362
aber die Anforderung, dass

00:59:18.362 --> 00:59:20.643
du das jetzt irgendwie besonders hübsch

00:59:20.643 --> 00:59:22.042
oder so auf dich angepasst

00:59:22.042 --> 00:59:23.962
dargestellt hast, also das so aussieht

00:59:23.962 --> 00:59:25.302
das ist halt nicht so wichtig

00:59:25.302 --> 00:59:28.743
Selbst wenn ich das so hübsch hinbekomme, weil ich so viel Aufwand habe, das so hübsch hinzubekommen

00:59:28.743 --> 00:59:30.502
Ja, vielleicht wäre das dann schrecklich viel Aufwand, aber

00:59:30.502 --> 00:59:32.102
wenn dir das egal ist, dann musst du es nicht machen

00:59:32.102 --> 00:59:34.862
Naja, also du meintest gerade

00:59:34.862 --> 00:59:36.442
entweder ich mache es mit CSS

00:59:36.442 --> 00:59:38.022
oder ich mache es mit Qt

00:59:38.022 --> 00:59:40.163
Das stimmt nicht ganz

00:59:40.163 --> 00:59:42.462
Nein, du meintest nicht mit CSS oder

00:59:42.462 --> 00:59:44.663
mit Qt, sondern ich meinte sowas wie mit den ganzen Frameworks

00:59:44.663 --> 00:59:44.942
die ich habe

00:59:44.942 --> 00:59:48.502
die ich halt ergänzen muss, keine Ahnung, Tailwind oder sowas

00:59:48.502 --> 00:59:50.802
damit ich halt schneller produktiv bin

00:59:50.802 --> 00:59:51.962
Utility oder so

00:59:51.962 --> 00:59:54.243
Utility-Klassen einbauen

00:59:54.243 --> 00:59:54.502
Aha

00:59:54.502 --> 01:00:03.685
Also wenn ich das ganze CSS dann immer selber schreiben muss und dann muss ich mir erstmal und dann muss ich mir erstmal so ein Verbotchen bauen dass das alles so passt dann Puh

01:00:05.625 --> 01:00:06.405
Ja, kommt drauf an.

01:00:06.765 --> 01:00:08.425
Also Qt hat

01:00:08.425 --> 01:00:09.205
auch noch einen Designer.

01:00:10.125 --> 01:00:12.445
Wenn du das Projekt nicht kommerziell nutzen willst,

01:00:12.565 --> 01:00:13.685
kannst du diesen Designer nutzen.

01:00:14.045 --> 01:00:15.645
Aber wenn ich das nicht kommerziell nutzen will, okay.

01:00:16.605 --> 01:00:16.805
Genau.

01:00:18.065 --> 01:00:20.205
Kannst du den Designer nutzen, das ist quasi mit

01:00:20.205 --> 01:00:21.705
ziehen und

01:00:21.705 --> 01:00:23.385
ablegen quasi.

01:00:23.385 --> 01:00:24.825
Jetzt erinnere ich mich, das hatte ich genauso.

01:00:24.945 --> 01:00:27.205
Wie man das früher von, ich glaube,

01:00:27.345 --> 01:00:28.125
Visual Basic,

01:00:29.225 --> 01:00:31.425
da war das so ähnlich

01:00:31.425 --> 01:00:33.085
schon. Kann man auch, wenn man will.

01:00:33.445 --> 01:00:34.225
Der war auch sehr hübsch.

01:00:35.365 --> 01:00:37.605
Ich hatte tatsächlich, glaube ich, den angefangen auszuprobieren

01:00:37.605 --> 01:00:39.385
und dann bin ich darüber gestolpert, dass man das

01:00:39.385 --> 01:00:41.565
irgendwie mit der Lizenz eben nicht benutzen

01:00:41.565 --> 01:00:42.565
darf, wenn man das machen muss.

01:00:44.425 --> 01:00:45.125
Okay, ja.

01:00:46.525 --> 01:00:47.405
Jaja, ich meine, das

01:00:47.405 --> 01:00:48.825
machen ja auch die ganzen,

01:00:49.305 --> 01:00:51.305
ich kenne jetzt die iOS-Seite besser, aber

01:00:51.305 --> 01:00:53.305
halt da Xcode und so, da gibt es ja auch solche

01:00:53.305 --> 01:00:55.145
Dinge, wo du dann halt dann grafisch dann die ganzen

01:00:55.145 --> 01:00:57.105
Elemente irgendwie sozusagen

01:00:57.105 --> 01:00:59.325
selbst, dann kannst du sogar Linien

01:00:59.325 --> 01:01:01.165
irgendwie dahin ziehen und dann werden dann halt irgendwie

01:01:01.165 --> 01:01:03.305
Event Listener hinzugefügt oder keine Ahnung

01:01:03.305 --> 01:01:05.565
oder dann wird halt, ja genau,

01:01:05.665 --> 01:01:07.165
damit geht das wahrscheinlich auch irgendwie.

01:01:07.705 --> 01:01:07.905
Aber

01:01:07.905 --> 01:01:11.465
naja, ich könnte mir schon vorstellen, dass

01:01:11.465 --> 01:01:13.425
also du kannst jetzt zum Beispiel an der iOS

01:01:13.425 --> 01:01:15.605
ab, da kann ich es halt, weil ich nehme mal an, dass es bei

01:01:15.605 --> 01:01:16.725
Qt genauso ist.

01:01:18.665 --> 01:01:19.305
Sozusagen, damit

01:01:19.305 --> 01:01:21.345
kannst du im Grunde alles machen, aber wenn du

01:01:51.345 --> 01:01:53.285
in Newscase. Dann hast du an der Stelle

01:01:53.285 --> 01:01:54.965
ein Riesenproblem. Das geht ja auch nicht gut.

01:01:58.165 --> 01:01:59.405
Ja, also aus meiner

01:01:59.405 --> 01:02:00.005
Perspektive,

01:02:01.165 --> 01:02:02.525
mein Branding mache ja ich.

01:02:04.745 --> 01:02:05.325
Von daher

01:02:05.325 --> 01:02:06.205
hatte ich das Problem nicht.

01:02:07.945 --> 01:02:09.365
Dazu kann ich dann entsprechend auch nicht

01:02:09.365 --> 01:02:11.385
so viel sagen. Also was

01:02:11.385 --> 01:02:13.305
ich sagen kann ist, es lässt sich jedes Element

01:02:13.305 --> 01:02:15.125
mit CSS stylen, wenn man das will.

01:02:17.125 --> 01:02:17.285
Ja,

01:02:17.565 --> 01:02:19.465
ich glaube so groß und unterscheiden

01:02:19.465 --> 01:02:20.285
tut sich das gar nicht.

01:02:21.345 --> 01:02:23.385
versus Django.

01:02:24.365 --> 01:02:25.005
Ah ja, okay.

01:02:25.365 --> 01:02:27.665
Mit dem Unterschied natürlich, wenn man sein geliebtes

01:02:27.665 --> 01:02:29.705
Framework nutzen will,

01:02:29.985 --> 01:02:30.945
Tailwind, was weiß ich,

01:02:31.505 --> 01:02:33.625
das funktioniert natürlich anders. Aber gut,

01:02:33.725 --> 01:02:35.505
wenn man sich ein anderes Framework auswählt, dann

01:02:35.505 --> 01:02:36.325
sind halt Dinge anders.

01:02:36.725 --> 01:02:39.545
Du kannst halt jetzt, wie wir das bei unserem Podcast gemacht haben,

01:02:39.545 --> 01:02:41.765
ich weiß nicht, was ich erzählen habe, Bootstrap importiert

01:02:41.765 --> 01:02:43.585
und sonst nichts tun für das Design,

01:02:43.765 --> 01:02:44.585
weil einem das nicht wichtig ist.

01:02:45.165 --> 01:02:45.925
Ja, genau.

01:02:47.805 --> 01:02:49.065
Da habe ich das ja auch im Grunde...

01:02:49.065 --> 01:02:51.005
Ich glaube auch, das ist der Grund, warum Bootstrap

01:02:51.005 --> 01:02:52.925
quasi so viel verwendet wird

01:02:52.925 --> 01:02:55.245
in internen Tools, weil da ist es

01:02:55.245 --> 01:02:56.025
halt oft egal.

01:02:56.725 --> 01:02:59.365
Es ist halt wurscht, wie das jetzt aussieht.

01:02:59.485 --> 01:03:01.005
Es muss halt bloß irgendwie halbwegs bedienbar sein

01:03:01.005 --> 01:03:03.145
und das kriegt man

01:03:03.145 --> 01:03:04.365
mit Bootstrap ja schon hin.

01:03:05.305 --> 01:03:06.605
Es sieht halt nicht so toll aus, aber

01:03:06.605 --> 01:03:08.805
ja, genau.

01:03:10.385 --> 01:03:10.765
Ja, ja.

01:03:11.025 --> 01:03:12.185
Ich weiß es nicht so genau.

01:03:12.645 --> 01:03:14.065
Es ist immer, das ist alles

01:03:14.065 --> 01:03:16.205
so wirklich...

01:03:16.205 --> 01:03:19.145
Was möchte man am Anfang immer

01:03:19.145 --> 01:03:20.405
machen, wenn man jung ist und

01:03:20.405 --> 01:03:22.965
und vom Softwareentwickler will man Spiele programmieren.

01:03:23.585 --> 01:03:26.085
Das geht mit Qt wahrscheinlich schon ein bisschen besser als mit Web.

01:03:26.725 --> 01:03:29.365
Aber auch da bin ich mir nicht sicher, ob das die richtige Idee ist,

01:03:29.585 --> 01:03:30.805
irgendwie das so zu betrachten.

01:03:32.165 --> 01:03:36.005
Nee, ich glaube, da würdest du mit Spielen...

01:03:36.005 --> 01:03:36.885
Wir können auch, wenn du was machen willst.

01:03:37.405 --> 01:03:39.465
Also ob da eine 3D-Intel-Milch ist oder halt nicht.

01:03:39.705 --> 01:03:41.885
Also ob da halt eine zweidimensionale, weiß nicht,

01:03:42.285 --> 01:03:44.725
kann man Fensteransicht sagen zu Qt, reicht.

01:03:46.085 --> 01:03:49.505
Achso, also für Spiele wäre jetzt Qt nicht mal eine erste Idee.

01:03:50.405 --> 01:03:53.385
Aber kommt sicherlich aufs Spiel an

01:03:53.385 --> 01:03:54.565
Ja, ich glaube auch

01:03:54.565 --> 01:03:56.425
Nur weil wir es im Python machen wollen

01:03:56.425 --> 01:03:58.305
Ja, genau

01:03:58.305 --> 01:04:03.085
Das geht wahrscheinlich gut

01:04:03.085 --> 01:04:03.925
Ja

01:04:03.925 --> 01:04:07.685
Da kam ich mit Kiwi schon ein bisschen weiter

01:04:07.685 --> 01:04:09.465
Es war auch so eine Art Bürosimulator

01:04:09.465 --> 01:04:11.065
Ja

01:04:11.065 --> 01:04:16.145
Ich habe einen Fantasy-Manager

01:04:16.145 --> 01:04:17.665
für unsere Eishockey-Runde gebaut

01:04:17.665 --> 01:04:19.285
Ja, gut, sowas

01:04:19.285 --> 01:04:20.885
Ja, das hat wundervoll funktioniert.

01:04:21.965 --> 01:04:22.125
Ja.

01:04:23.525 --> 01:04:24.965
Das war sogar hübsch,

01:04:25.005 --> 01:04:25.425
in Kiwi.

01:04:26.745 --> 01:04:28.725
Aber ja, ich glaube, man will das nicht benutzen.

01:04:28.985 --> 01:04:29.845
Das ist fummelig.

01:04:29.925 --> 01:04:33.185
Was mich auch nochmal interessieren würde, so rein ressourcenverbrauchmäßig,

01:04:33.285 --> 01:04:34.645
wenn ich jetzt für einen User

01:04:34.645 --> 01:04:36.685
so eine Applikation starte mit

01:04:36.685 --> 01:04:38.705
Qt, dann habe ich schon das Gefühl, also wahrscheinlich so ein paar

01:04:38.705 --> 01:04:40.605
Megabyte wird die dann schon noch einen Hauptspeicher brauchen

01:04:40.605 --> 01:04:41.125
oder so, ne?

01:04:42.145 --> 01:04:44.185
Die muss ja dann auch die ganze Zeit laufen.

01:04:44.645 --> 01:04:46.085
Obwohl, die muss eigentlich nur so lange laufen,

01:04:46.465 --> 01:04:48.245
wie ein Benutzer sie tatsächlich benutzt.

01:04:48.245 --> 01:04:56.605
Dann kann man irgendwie den State irgendwie so raus serialisieren und erst beim nächsten Mal, wenn der Nutzer wieder kommt, dann muss man das halt irgendwie wieder sich irgendwo herholen.

01:04:56.805 --> 01:04:57.425
Genau so ist es.

01:04:57.585 --> 01:05:12.425
Ja, aber tatsächlich, solange Nutzer irgendwie quasi da drauf guckt, also die Frage eingeloggt ist oder ich weiß nicht, wie man das beschreiben kann, solange irgendwie eine Session aktiv ist, wie auch immer, brauchst du halt diesen Hauptspeicher.

01:05:13.505 --> 01:05:14.265
Ja, genau.

01:05:14.565 --> 01:05:15.105
Ja, okay.

01:05:15.105 --> 01:05:16.985
Das ist so, wobei

01:05:16.985 --> 01:05:18.605
da auch einiges im Shared Memory

01:05:18.605 --> 01:05:19.665
sich befindet

01:05:19.665 --> 01:05:21.845
Ja, die ganzen Bibliotheken

01:05:21.845 --> 01:05:24.525
Das macht Python von sich aus schon, das heißt

01:05:24.525 --> 01:05:27.145
man hat jetzt nicht komplett den Overhead von einem Nutzer

01:05:27.145 --> 01:05:27.785
auf alle Nutzer

01:05:27.785 --> 01:05:30.945
sondern da wird noch einiges geteilt

01:05:30.945 --> 01:05:32.785
aber ja, prinzipiell schon

01:05:32.785 --> 01:05:35.185
Ja, weil

01:05:35.185 --> 01:05:36.905
da bist du natürlich dann wahrscheinlich

01:05:36.905 --> 01:05:38.985
ein bisschen ineffizienter als eine Web-Anwendung

01:05:38.985 --> 01:05:40.205
die halt nur

01:05:40.205 --> 01:05:43.225
wo es dann halt einen Prozess

01:05:43.225 --> 01:05:44.965
gibt, der halt dann viele Requests von unterschiedlichen

01:05:44.965 --> 01:05:47.105
Benutzern. Genau, also

01:05:47.105 --> 01:05:49.245
speicherintensiver ist das schon, wobei

01:05:49.245 --> 01:05:51.085
es nicht so wichtig ist, dass

01:05:51.085 --> 01:05:52.565
der Sprecher schnell

01:05:52.565 --> 01:05:54.745
beschrieben werden kann. Also

01:05:54.745 --> 01:05:57.145
mit anderen Worten, es muss nicht zwingend RAM

01:05:57.145 --> 01:05:57.485
sein,

01:05:58.725 --> 01:06:00.765
was einem die Möglichkeit gibt,

01:06:01.565 --> 01:06:02.525
ein Swap

01:06:02.525 --> 01:06:04.885
Laufwerk anzulegen, das

01:06:04.885 --> 01:06:07.165
irgendwo hinzutun, wo es einen relativ

01:06:07.165 --> 01:06:08.225
zügigen Zugriff hat.

01:06:09.105 --> 01:06:10.705
Und ja, da geht es auch.

01:06:11.605 --> 01:06:12.865
Ja, und das ist jetzt

01:06:12.865 --> 01:06:14.405
auch nicht so super langsam.

01:06:14.965 --> 01:06:17.165
Genau, also eigentlich sind wir

01:06:17.165 --> 01:06:19.225
mit der Swap-Variante

01:06:19.225 --> 01:06:20.545
unbegrenzt im Hauptspeicher

01:06:20.545 --> 01:06:22.345
fast

01:06:22.345 --> 01:06:24.565
Ja, ja, ja

01:06:24.565 --> 01:06:26.805
durchaus interessantes Modell

01:06:26.805 --> 01:06:29.165
Ja, und

01:06:29.165 --> 01:06:31.025
ja, ich meine

01:06:31.025 --> 01:06:32.765
wenn man jetzt aber

01:06:32.765 --> 01:06:34.265
für die Benutzer ist es ja auch so ein bisschen

01:06:34.265 --> 01:06:36.165
die kommen aber gut damit klar und

01:06:36.165 --> 01:06:37.565
nehmen das so an oder

01:06:37.565 --> 01:06:39.705
hörst du da häufiger das so, warum

01:06:39.705 --> 01:06:41.185
das ist irgendwie komisch

01:06:41.185 --> 01:06:43.605
ich weiß nicht genau

01:06:43.605 --> 01:06:46.445
Also bis jetzt habe ich tatsächlich dazu noch gar nichts gehört.

01:06:46.625 --> 01:06:48.245
Ah, okay. Interessant.

01:06:49.445 --> 01:06:52.745
Also es scheint einigermaßen intuitiv zu sein.

01:06:53.325 --> 01:06:55.165
Vor allem, weil man es ja auch vom Desktop schon kennt.

01:06:56.005 --> 01:06:56.185
Ja.

01:06:57.045 --> 01:06:58.585
Also die Art der Bedienung, sage ich mal.

01:06:58.645 --> 01:07:00.445
Gehen ja da wirklich alle...

01:07:00.445 --> 01:07:06.825
Also jetzt stelle ich mir natürlich die Frage, wie ist das denn jetzt mit Tastaturkürzeln oder, weiß ich nicht, rechter Mausklick oder so.

01:07:06.905 --> 01:07:08.305
Das muss ja jetzt alles durch den Browser durch.

01:07:08.305 --> 01:07:10.025
Der Browser lässt ja jetzt nicht alles durch.

01:07:10.025 --> 01:07:40.005
und PyTest.

01:07:40.025 --> 01:07:41.605
Welt. Also Rechtsklick ist kein Problem,

01:07:42.105 --> 01:07:44.205
Tastatureingaben sind kein Problem,

01:07:44.485 --> 01:07:46.045
Tastaturkürzel sind kein Problem, also

01:07:46.045 --> 01:07:48.045
das ist eigentlich alles da und wird

01:07:48.045 --> 01:07:49.605
von Firefox und von Chrome

01:07:49.605 --> 01:07:51.925
supported und damit eigentlich

01:07:51.925 --> 01:07:53.185
von 90%

01:07:53.185 --> 01:07:55.645
von allem, was es da gesucht gibt.

01:07:56.745 --> 01:07:57.305
Ja, ja, ja.

01:08:00.025 --> 01:08:01.745
Ja, das heißt man

01:08:01.745 --> 01:08:03.185
kriegt auch gar nichts, also

01:08:03.185 --> 01:08:05.945
es ist schon in einem Browserfenster, muss es halt sein.

01:08:06.425 --> 01:08:07.525
Ja, richtig.

01:08:07.525 --> 01:08:14.345
Ja, aber ansonsten kriegt man eigentlich gar nicht mit, dass es wirklich ein Browser ist, sondern das ist eigentlich eher, verhält sich wie eine native Applikation.

01:08:14.745 --> 01:08:17.825
Verhält sich so, als ob man die Anwendung lokal auf dem Rechner hätte.

01:08:18.165 --> 01:08:23.465
Auch Copy und Paste, wahrscheinlich bei Text kein Problem, wenn ich jetzt irgendwas da reinziehe oder so, okay, dann passiert wahrscheinlich komisch.

01:08:24.245 --> 01:08:27.305
Genau, es gibt Dateitransfers, es gibt, wenn man will, sogar Audio.

01:08:28.625 --> 01:08:30.405
Ah, ja.

01:08:32.325 --> 01:08:33.125
Ja, schick.

01:08:33.125 --> 01:08:36.905
Ich glaube, dieses Guacamole muss ich mir auch mal angucken

01:08:36.905 --> 01:08:40.345
Das scheint ja schon sehr interessant zu sein

01:08:40.345 --> 01:08:43.865
Ja, ja

01:08:43.865 --> 01:08:48.705
Lass mal überlegen, was kann man sich denn noch so

01:08:48.705 --> 01:08:51.105
vorstellen, was interessant sein könnte bei diesem

01:08:51.105 --> 01:08:54.385
Ist das der Client selber, der Python

01:08:54.385 --> 01:08:57.585
Rapper und Qt kommt selber auch von

01:08:57.585 --> 01:09:01.705
Wie hieß denn diese Firma nochmal, die Qt baut?

01:09:01.705 --> 01:09:04.465
Qt Foundation

01:09:04.465 --> 01:09:04.845
meine ich.

01:09:06.145 --> 01:09:08.545
Gut, ich weiß nicht mehr, da war ja auch noch eine lange Zeit,

01:09:08.645 --> 01:09:10.165
vielleicht gibt es die Firma auch nicht mehr, keine Ahnung,

01:09:10.285 --> 01:09:12.065
Foundation klingt jetzt irgendwie eher nicht mehr nach

01:09:12.065 --> 01:09:12.605
aber

01:09:12.605 --> 01:09:16.465
genau, von denen kommt halt auch

01:09:16.465 --> 01:09:18.285
die Python-Binding, weil ich habe

01:09:18.285 --> 01:09:20.145
irgendwie gehört, PySite gibt es oder

01:09:20.145 --> 01:09:21.085
genau,

01:09:21.705 --> 01:09:24.385
das sind die dann. Wenn ich Qt sage,

01:09:24.505 --> 01:09:25.285
dann meine ich PySite.

01:09:26.285 --> 01:09:27.885
Also es gibt natürlich

01:09:27.885 --> 01:09:29.225
unterschiedliche Ausprägungen,

01:09:30.365 --> 01:09:31.545
wie man Qt nutzen

01:09:31.545 --> 01:09:33.365
will, kann. Und

01:09:33.365 --> 01:09:35.505
ja, ich habe mich für PySight entschieden.

01:09:38.025 --> 01:09:39.485
The QT Company.

01:09:40.605 --> 01:09:41.265
Ah, okay.

01:09:42.845 --> 01:09:43.825
Hier gibt es noch so ein paar andere Sachen.

01:09:44.525 --> 01:09:45.785
Vielleicht wollen wir die noch kurz erwähnen.

01:09:45.885 --> 01:09:47.125
Also Kiwi haben wir jetzt schon, glaube ich, im End.

01:09:47.365 --> 01:09:48.925
Hier ist noch WX-Python.

01:09:49.845 --> 01:09:51.425
Kennt jemand ein GTK-Binding

01:09:51.425 --> 01:09:53.125
für Python? Genau, also

01:09:53.125 --> 01:09:55.625
GTK, würde ich sagen, ist so das

01:09:55.625 --> 01:09:57.565
zweite große Framework, was man da

01:09:57.565 --> 01:09:59.305
nutzen kann. Was

01:09:59.305 --> 01:10:01.425
nicht ganz, aber so

01:10:01.425 --> 01:10:02.865
ungefähr auf Augenhöhe.

01:10:03.305 --> 01:10:05.425
Andere würden wahrscheinlich was anderes sagen.

01:10:05.545 --> 01:10:07.285
Also es ist auf Augenhöhe mit Qt

01:10:07.285 --> 01:10:09.165
und

01:10:09.165 --> 01:10:11.425
die Widgets sind ähnlich weit

01:10:11.425 --> 01:10:11.945
gediehen.

01:10:14.685 --> 01:10:15.625
Kann man das dann quasi

01:10:15.625 --> 01:10:16.745
aussuchen. Du würdest

01:10:16.745 --> 01:10:19.545
wahrscheinlich alles, dein ganzes User Interface

01:10:19.545 --> 01:10:21.325
und auch deinen Desktop komplett mit Qt bauen

01:10:21.325 --> 01:10:23.085
oder mit GTK.

01:10:25.385 --> 01:10:26.985
Dafür habe ich GTK noch nicht

01:10:26.985 --> 01:10:29.645
zu sehr in die Tiefe getestet, um das sagen zu können.

01:10:30.725 --> 01:10:31.085
Aber

01:10:31.085 --> 01:10:32.485
Ja, also es scheint

01:10:32.485 --> 01:10:34.885
ähnlich weit zu sein. Aber dafür habe ich es mir nicht genug

01:10:34.885 --> 01:10:36.945
angeguckt, um jetzt speziell sagen zu können, das geht

01:10:36.945 --> 01:10:38.445
damit und das geht damit nicht.

01:10:39.405 --> 01:10:40.925
Und dann gibt es noch einen Rapper da

01:10:40.925 --> 01:10:42.705
irgendwie drum, PySimpleGui, der mit dem

01:10:42.705 --> 01:10:44.185
einfache Sachen irgendwie dann auch gehen,

01:10:44.365 --> 01:10:46.645
schneller oder sowas, oder noch mehr High-Level-Interface.

01:10:48.345 --> 01:10:48.945
Kenne ich auch

01:10:48.945 --> 01:10:50.185
nicht im Detail, PySimpleGui.

01:10:50.825 --> 01:10:52.325
Das macht also beinahe auch über

01:10:52.325 --> 01:10:54.945
Qt oder WXPython.

01:10:56.485 --> 01:10:56.925
WXPython wäre

01:10:56.925 --> 01:10:57.325
noch so ein Ding.

01:10:59.925 --> 01:11:00.705
Habe ich jetzt auch mal

01:11:00.705 --> 01:11:02.805
mal kurz ausprobiert, aber es war so mittelhübsch.

01:11:03.385 --> 01:11:04.885
Ja, habe ich ja schon ganz lange nichts mehr

01:11:04.885 --> 01:11:06.445
davon gehört. Ja, genau, aber

01:11:06.445 --> 01:11:07.425
ging wohl ein paar Sachen.

01:11:09.565 --> 01:11:10.685
Ja, also ich würde sagen,

01:11:10.885 --> 01:11:12.725
es ist immer noch so, Python und GUI ist immer noch

01:11:12.725 --> 01:11:14.685
so ein bisschen... Ja, wobei

01:11:14.685 --> 01:11:16.385
ich tatsächlich, also ich würde schon

01:11:16.385 --> 01:11:18.825
die Ansicht vertreten, also ich meine auch, wenn das alles

01:11:18.825 --> 01:11:20.865
ja schon eine interessante

01:11:20.865 --> 01:11:22.685
Geschichte ist, aber

01:11:22.685 --> 01:11:24.665
ich habe schon so das Gefühl, dass so diese

01:11:24.665 --> 01:11:27.125
Desktop-UI-Geschichten

01:11:27.125 --> 01:11:28.865
so ein bisschen...

01:11:28.865 --> 01:11:32.625
Also, vielleicht riechen sie auch noch komisch.

01:11:33.765 --> 01:11:35.825
Also, ich meine, da könnte es schon so ein bisschen tot sein.

01:11:36.225 --> 01:11:37.085
Was ist mit Beware?

01:11:38.245 --> 01:11:38.885
Ja, ja, genau.

01:11:39.325 --> 01:11:41.905
Also, das würde ich auch so sehen.

01:11:42.165 --> 01:11:50.925
Also, das ist Russell Keith McGee, der hat ja auf irgendeiner PyCon eine Keynote drüber gehalten,

01:11:51.165 --> 01:11:52.625
was sind die größten Gefahren für Python.

01:11:54.445 --> 01:11:56.885
Oder Black Swan, irgendwas war im Titel.

01:11:57.445 --> 01:11:58.805
Dem würde ich mich durchaus anschließen.

01:11:58.865 --> 01:12:01.045
also was für Python richtig gefährlich

01:12:01.045 --> 01:12:03.425
ist, ist, dass das nicht auf Mobile

01:12:03.425 --> 01:12:04.705
läuft, weil tatsächlich

01:12:04.705 --> 01:12:06.785
Computer werden verdrängt, also die Telefone

01:12:06.785 --> 01:12:08.965
sind inzwischen, also ich würde mal sagen, ein durchschnittliches

01:12:08.965 --> 01:12:10.705
iPhone ist wahrscheinlich

01:12:10.705 --> 01:12:12.785
schneller und leistungsfähiger als ein durchschnittlicher

01:12:12.785 --> 01:12:14.825
Desktop-Rechner. Ja, du stellst halt einfach irgendwo so ein Tablet

01:12:14.825 --> 01:12:16.745
hin und dann gibt es halt ein paar Knöpfchen drauf und dann muss

01:12:16.745 --> 01:12:18.845
das halt dann funktionieren. Ja, und Kinder wachsen

01:12:18.845 --> 01:12:20.845
damit auf, die kennen das gar nicht mehr, die denken

01:12:20.845 --> 01:12:22.845
sich so, was ist denn das für komische, große Dinger da

01:12:22.845 --> 01:12:24.705
seltsam, was ist das? Kann man die

01:12:24.705 --> 01:12:26.745
swipen? Ja, genau, tippen dann

01:12:26.745 --> 01:12:28.725
auf den Bildschirm, dann passiert nichts, dann ist es kaputt.

01:12:28.865 --> 01:12:30.825
Ja, also das ist ein Problem,

01:12:30.965 --> 01:12:32.745
weil in 10 Jahren

01:12:32.745 --> 01:12:34.745
oder 20 Jahren wird das wahrscheinlich

01:12:34.745 --> 01:12:35.585
keiner mehr benutzen.

01:12:36.965 --> 01:12:37.985
Halte ich für eine steile These.

01:12:38.365 --> 01:12:40.985
Ja gut, aber ich meine, das ist nur so ein Risiko.

01:12:41.385 --> 01:12:42.545
Also ob das so eintritt oder nicht,

01:12:42.625 --> 01:12:44.505
ist natürlich klar, wie hoch ist das Risiko.

01:12:44.505 --> 01:12:46.265
Also auch Marker an Python, wenn man das benutzt,

01:12:46.305 --> 01:12:48.325
muss man wahrscheinlich schon relativ viel sich damit auskennen.

01:12:49.885 --> 01:12:50.685
Ja, aber

01:12:50.685 --> 01:12:52.885
also wie auch immer,

01:12:53.745 --> 01:12:54.765
aber dass es

01:12:54.765 --> 01:12:56.605
ein Risiko gibt, würde ich schon sagen,

01:12:56.605 --> 01:12:58.385
einfach deswegen, weil Python da halt nicht läuft.

01:12:58.865 --> 01:12:59.485
es läuft da nicht.

01:13:00.465 --> 01:13:01.905
Und das ist ein Problem.

01:13:02.665 --> 01:13:04.545
Und jetzt muss man entweder irgendeinen Weg finden, wie man

01:13:04.545 --> 01:13:06.905
Python da, wie man sozusagen

01:13:06.905 --> 01:13:08.525
es schaffen kann, dass man Python entwickelt

01:13:08.525 --> 01:13:10.805
und dann halt aber auch eine iOS oder Android App

01:13:10.805 --> 01:13:12.545
hat. Und das ist halt genau, Beware

01:13:12.545 --> 01:13:14.525
macht das halt genau. Es sind diverse

01:13:14.525 --> 01:13:15.705
Komponenten, die dafür nötig sind.

01:13:16.985 --> 01:13:18.905
Ja, letztlich macht es so etwas ähnliches,

01:13:18.965 --> 01:13:20.485
was halt React Native oder so auch macht,

01:13:20.605 --> 01:13:22.325
dass es ruft schon die echten

01:13:22.325 --> 01:13:24.265
UI-Funktionen dann auf von den

01:13:24.265 --> 01:13:25.945
Frameworks der entsprechenden...

01:13:25.945 --> 01:13:27.785
Also kompiliert runter quasi auf...

01:13:27.785 --> 01:13:30.165
Ja, nicht ganz.

01:13:30.505 --> 01:13:33.925
Es gibt unterschiedliche Komponenten

01:13:33.925 --> 01:13:35.825
und die machen unterschiedliche Sachen, aber letztlich

01:13:35.825 --> 01:13:37.685
es gibt auch Wrapper um

01:13:37.685 --> 01:13:39.765
die echten Funktionen drumherum

01:13:39.765 --> 01:13:41.245
und die werden dann aufgerufen.

01:13:45.185 --> 01:13:47.865
Wäre auch interessant zu wissen, wie React das eigentlich

01:13:47.865 --> 01:13:49.565
macht und dann gibt es ja noch irgendwas wie Yonnos oder

01:13:49.565 --> 01:13:50.765
Capacitor oder so.

01:13:51.345 --> 01:13:53.505
Ja, es gibt dann Teile, die sind halt komplett nativ

01:13:53.505 --> 01:13:55.805
und dann kann man aus dem Web nachladen

01:13:55.805 --> 01:13:57.385
und kann JavaScript ausführen und es ist

01:13:57.385 --> 01:13:59.845
oder Elektron macht das ja auch so.

01:14:00.545 --> 01:14:01.365
Ja, also

01:14:01.365 --> 01:14:02.925
ich glaube, da sind wir auch noch nicht

01:14:02.925 --> 01:14:05.545
durch. Das war auch ganz interessant.

01:14:05.865 --> 01:14:07.145
Ich habe mich jetzt, ich war

01:14:07.145 --> 01:14:09.565
letzte Woche Donnerstag auf dem Treffen

01:14:09.565 --> 01:14:10.705
der Java User Group,

01:14:11.265 --> 01:14:12.985
rein Juk,

01:14:13.785 --> 01:14:15.585
die Java User Group rein.

01:14:15.585 --> 01:14:17.045
Was hat dich denn dahin verschlagen?

01:14:17.485 --> 01:14:19.685
Ja, ich dachte, ich muss mich mal weiterentwickeln

01:14:19.685 --> 01:14:21.485
und dann dieses Python entwickeln.

01:14:21.625 --> 01:14:23.025
Das hat keine Zukunft,

01:14:23.165 --> 01:14:24.025
den muss man bei Java angucken.

01:14:27.385 --> 01:14:29.345
Ich bin da hingegangen, weil

01:14:29.345 --> 01:14:31.765
der Vortrag da hat mich

01:14:31.765 --> 01:14:34.165
irgendwie, ist mir aufgefallen,

01:14:34.305 --> 01:14:35.985
dass da Stefan Tilkoff und

01:14:35.985 --> 01:14:37.865
Ebert Wolf, die machen so

01:14:37.865 --> 01:14:39.865
Software minus

01:14:39.865 --> 01:14:41.885
Architektur, TV und

01:14:41.885 --> 01:14:43.725
die machen auch Podcast und die sind

01:14:43.725 --> 01:14:45.905
beide bei IndieQ und die haben auch schon viele interessante

01:14:45.905 --> 01:14:48.205
Stefan Tilkoff

01:14:48.205 --> 01:14:49.765
ist oft zu Gast in anderen Podcasts,

01:14:49.825 --> 01:14:51.425
letztens war er bei der Programmierbar

01:14:51.425 --> 01:14:53.905
und hat da über Architektur

01:14:53.905 --> 01:14:55.805
gesprochen, die machen viel Softwarearchitektur,

01:14:55.805 --> 01:15:00.305
Das ist so eine der Firmen, wo man hingeht, wenn man jetzt ein großes Problem hat, ein großes Projekt

01:15:00.305 --> 01:15:04.525
und man möchte jetzt irgendwie so, dass einem einer mal wirklich erklärt, wie man das denn so angeht

01:15:04.525 --> 01:15:08.145
und wie man das besser machen kann, dann ist das so eine der Adressen, zu denen man gehen kann

01:15:08.145 --> 01:15:10.745
und wahrscheinlich eine der renommierteren Adressen

01:15:10.745 --> 01:15:15.705
und ich höre dem immer gerne, ich höre zum Beispiel Stefan Tillkopf immer gerne zu,

01:15:15.825 --> 01:15:19.845
weil ich finde, der kann das immer schön erklären, was so die Probleme sind, die man da hat

01:15:19.845 --> 01:15:23.205
und ja, deswegen bin ich da hingegangen

01:15:23.205 --> 01:15:27.185
und da haben, wir haben geredet über, wie sah es eigentlich vor zehn Jahren aus, wie sieht es heute aus,

01:15:27.265 --> 01:15:31.585
haben sich die Probleme irgendwie verändert in IT, welche Sachen sind besser geworden,

01:15:31.745 --> 01:15:34.365
welche Sachen sind immer noch genauso wie vorher und

01:15:34.365 --> 01:15:39.425
genau da, jetzt bin ich auch schon wieder abgeschweift,

01:15:39.705 --> 01:15:42.825
da war auch einer, der machte so ein bisschen Elixier

01:15:42.825 --> 01:15:46.945
und auch kein Java

01:15:46.945 --> 01:15:51.745
und der meinte, in letzter Zeit macht er immer mehr Dart,

01:15:51.745 --> 01:15:53.825
weil Dart für

01:15:53.825 --> 01:15:55.965
das ist diese Sprache von

01:15:55.965 --> 01:15:57.945
genau, von Google

01:15:57.945 --> 01:16:00.065
für so, das sollte

01:16:00.065 --> 01:16:01.825
glaube ich auch mal irgendwann Webgeschichte werden

01:16:01.825 --> 01:16:03.705
aber jetzt hat sich so halt eine Nische

01:16:03.705 --> 01:16:06.005
gefunden, man kann damit halt

01:16:06.005 --> 01:16:07.825
Mobile Apps irgendwie oder Apps

01:16:07.825 --> 01:16:09.625
für Android-Telefon oder

01:16:09.625 --> 01:16:11.865
iOS-Geräte entwickeln

01:16:11.865 --> 01:16:13.945
das ist eine eigene Sprache, Flutter ist halt

01:16:13.945 --> 01:16:15.405
das Ding, was dann UI macht und

01:16:15.405 --> 01:16:18.045
das braucht im Grunde nur irgendwie ein Canvas

01:16:18.045 --> 01:16:19.125
wo es halt irgendwie

01:16:19.125 --> 01:16:22.025
SVG reinrendern kann oder so, glaube ich.

01:16:22.705 --> 01:16:24.485
Und macht dann eine UI komplett selber.

01:16:24.645 --> 01:16:26.185
Also das ruft nicht irgendwelche Funktionen,

01:16:26.225 --> 01:16:28.005
nativen UI-Funktionen auf

01:16:28.005 --> 01:16:29.985
von dem

01:16:29.985 --> 01:16:30.765
entsprechenden

01:16:30.765 --> 01:16:33.045
Gerätehersteller,

01:16:33.845 --> 01:16:35.625
sondern das

01:16:35.625 --> 01:16:38.025
zeichnet alles selber. Also alle Buttons

01:16:38.025 --> 01:16:39.625
und Dinge und so werden halt einfach

01:16:39.625 --> 01:16:41.605
tatsächlich in Canvas reingezeichnet.

01:16:41.945 --> 01:16:43.945
Und da Canvas überall da ist und man da

01:16:43.945 --> 01:16:46.085
beliebige Dinge reinzeichnen kann, kann man

01:16:46.085 --> 01:16:48.045
halt alle Sachen gleich aussehen lassen auf allen

01:16:48.045 --> 01:16:49.265
Geräten damit.

01:16:49.725 --> 01:16:51.585
Und es ist halt

01:16:51.585 --> 01:16:53.565
einfacher zu entwickeln, als wenn man jetzt irgendwie...

01:16:53.565 --> 01:16:55.785
Das haben ja diese statischen Programmiersprachen

01:16:55.785 --> 01:16:57.285
oder statistik-stabilisierten Programmiersprachen,

01:16:57.365 --> 01:16:58.685
da ist halt immer so...

01:16:58.685 --> 01:17:01.545
Gut, mit Kotlin ist es schon ein bisschen besser geworden,

01:17:01.745 --> 01:17:03.125
aber Java ist halt schon

01:17:03.125 --> 01:17:05.265
für Android, das ist halt schon sehr

01:17:05.265 --> 01:17:07.665
verbose und man muss halt sehr viel

01:17:07.665 --> 01:17:09.605
Boilerplate schreiben und auch Swift ist

01:17:09.605 --> 01:17:11.685
vielleicht ein bisschen besser, aber so wahnsinnig

01:17:11.685 --> 01:17:13.525
viel besser auch nicht, ist auch relativ schrecklich.

01:17:14.505 --> 01:17:15.545
Und ich meine,

01:17:15.885 --> 01:17:17.565
mein böser

01:17:17.565 --> 01:17:23.465
Scherz an der Stelle wäre ja mal so, naja, Software-Echotikur hat mich auch lange nicht interessiert, weil man schreibt ja in Python oft nicht so große Sachen, weil man muss ja nicht so viel schreiben.

01:17:24.005 --> 01:17:34.965
Und wenn Java für Hello World halt schon tausend Seilen irgendwie boilerplate schreiben muss, dann muss man sich Gedanken um Software-Echotikur machen, einfach um das boilerplate-Zeugs irgendwie zu organisieren.

01:17:37.125 --> 01:17:45.285
Und ja, das muss man mit Dart auch nicht so und dann hat man dann eine Alternative, die vielleicht ein bisschen einfacher zu verwenden ist und das setzt sich gerade durch.

01:17:45.285 --> 01:18:15.265
und PyTest.

01:18:15.285 --> 01:18:25.525
Es bringt aber, wenn man es länger verwendet, doch auch so das ein oder andere Problemchen mit sich, wo man am Anfang nicht unbedingt von weiß

01:18:25.525 --> 01:18:31.065
Ja, also ich meine, das ist halt immer schwierig, glaube ich

01:18:32.525 --> 01:18:44.205
Also ich hatte zum Beispiel, also ich habe eine App oder mehrere in Flutter entwickelt und es gibt dort ein Paketsystem sozusagen

01:18:44.205 --> 01:18:46.245
also man kann sich dort

01:18:46.245 --> 01:18:48.585
Zusatzfunktionalitäten ähnlich wie in Python

01:18:48.585 --> 01:18:50.705
mit Libraries kann man sich

01:18:50.705 --> 01:18:52.825
oder Packages kann man sich dort

01:18:52.825 --> 01:18:54.765
auch reinladen

01:18:54.765 --> 01:18:55.245
sozusagen

01:18:55.245 --> 01:18:58.565
das Problem daran ist

01:18:58.565 --> 01:19:00.425
so ein bisschen, dass die

01:19:00.425 --> 01:19:02.685
oftmals halt von externen

01:19:02.685 --> 01:19:04.505
Entwicklern kommen, so von dir und mir

01:19:04.505 --> 01:19:06.725
und externen

01:19:06.725 --> 01:19:08.805
Entwickler dann nach anderthalb Jahren

01:19:08.805 --> 01:19:10.845
gerne mal die Lust an den Projekten

01:19:10.845 --> 01:19:12.865
verlieren und dann hat man

01:19:12.865 --> 01:19:15.845
so Unmaintained Dependencies

01:19:15.845 --> 01:19:17.285
in seinem Projekt drin

01:19:17.285 --> 01:19:19.125
und muss dann gucken,

01:19:19.545 --> 01:19:21.545
dass man eine neue Bibliothek

01:19:21.545 --> 01:19:23.385
halt findet, die das gleiche noch kann.

01:19:24.625 --> 01:19:24.905
Und

01:19:24.905 --> 01:19:27.225
das heißt, wenn man ein Projekt

01:19:27.225 --> 01:19:29.385
fertig entwickelt hat und man

01:19:29.385 --> 01:19:30.465
guckt ein halbes Jahr später

01:19:30.465 --> 01:19:33.285
und versucht es quasi wieder zu

01:19:33.285 --> 01:19:33.765
kompilieren,

01:19:34.545 --> 01:19:37.305
dann wird das auf jeden Fall

01:19:37.305 --> 01:19:38.145
nicht funktionieren.

01:19:39.045 --> 01:19:41.145
Nach einem halben Jahr ist es ausgeschlossen, dass es

01:19:41.145 --> 01:19:43.245
funktioniert. Zum einen

01:19:43.245 --> 01:19:45.445
führt Google selber regelmäßig

01:19:45.445 --> 01:19:47.325
Änderungen im Framework ein, und zwar

01:19:47.325 --> 01:19:48.205
Breaking Changes.

01:19:49.345 --> 01:19:51.265
Und zum anderen sind halt

01:19:51.265 --> 01:19:53.625
Pakete dann nicht mehr aktuell

01:19:53.625 --> 01:19:55.485
und müssen ersetzt werden, sodass

01:19:55.485 --> 01:19:57.245
quasi der Wartungsaufwand dafür

01:19:57.245 --> 01:19:59.325
nach meiner Einschätzung sehr, sehr groß ist.

01:20:01.505 --> 01:20:03.425
Okay, das erinnert mich jetzt noch ein bisschen

01:20:03.425 --> 01:20:05.865
an die JavaScript-Developer-Experience.

01:20:07.845 --> 01:20:09.445
Also vielleicht hat sich das inzwischen

01:20:09.445 --> 01:20:11.285
verbessert, das weiß ich nicht genau.

01:20:11.825 --> 01:20:13.105
Aber das waren auf jeden Fall

01:20:13.105 --> 01:20:15.365
die Probleme, mit denen ich so zu kämpfen hatte.

01:20:16.145 --> 01:20:17.245
Also ich habe auch gehört, dass

01:20:17.245 --> 01:20:19.285
Flutter irgendwie so für

01:20:19.285 --> 01:20:20.765
größere Projekte irgendwann nervig wird.

01:20:22.045 --> 01:20:23.205
Und ja, die Capacitor habe ich sehr

01:20:23.205 --> 01:20:25.185
empfohlen gekriegt. Und das geht halt auch mit

01:20:25.185 --> 01:20:25.605
Vue.js.

01:20:26.925 --> 01:20:28.605
Ja, ist quasi dann so ähnlich wie React Native.

01:20:28.705 --> 01:20:29.345
Ja, ich glaube auch.

01:20:30.545 --> 01:20:33.405
Ja genau, es gab irgendwie auch mal Vue.Native, aber das ist auch irgendwie kaputt gegangen

01:20:33.405 --> 01:20:35.185
aus den selben Gründen, weil irgendwer keinen Lust mehr hatte.

01:20:36.045 --> 01:20:37.425
Und das klingt

01:20:37.425 --> 01:20:39.105
so ein bisschen, als wäre das so das neueste Ding.

01:20:39.445 --> 01:20:42.505
Aber ob das gut funktioniert

01:20:42.505 --> 01:20:44.025
und wie lange das funktioniert, weiß man halt auch alles nicht

01:20:44.025 --> 01:20:47.105
Also was mir ja ehrlich gesagt am liebsten wäre

01:20:47.105 --> 01:20:48.465
wenn es so ausgeht, wäre halt, dass

01:20:48.465 --> 01:20:50.585
auf allen Plattformen Web gut genug funktioniert

01:20:50.585 --> 01:20:52.485
dass man die anderen Sachen nicht machen muss

01:20:52.485 --> 01:20:53.865
Ja, aber gut

01:20:53.865 --> 01:20:56.745
Und mit Safari 16.4 ist ja jetzt

01:20:56.745 --> 01:20:58.565
natürlich auch, also iOS hat jetzt

01:20:58.565 --> 01:21:00.645
einen Großteil der Sachen, die

01:21:00.645 --> 01:21:02.425
gefehlt haben oder die bisher so richtig schmerzhaft waren

01:21:02.425 --> 01:21:04.025
bekommen und

01:21:04.025 --> 01:21:06.705
sollte jetzt irgendwie dann auch quasi

01:21:06.705 --> 01:21:07.585
auf iOS halt

01:21:07.585 --> 01:21:10.125
eigentlich ganz gut funktionieren, aber

01:21:10.125 --> 01:21:12.325
okay, ja. Ja, aber diese PWA's, das hat auch

01:21:12.325 --> 01:21:13.845
immer so...

01:21:13.845 --> 01:21:15.845
Ja, es hat schon alles noch so seine Ecken mit Kannen,

01:21:15.925 --> 01:21:18.225
es ist nicht ganz das gleiche, als wenn man

01:21:18.225 --> 01:21:20.105
in Native das macht, ja, das ist schon wahr.

01:21:20.145 --> 01:21:20.965
Kennt ihr PyScript?

01:21:21.845 --> 01:21:23.445
Ja, klar, ja.

01:21:25.185 --> 01:21:26.465
Das ist doch eigentlich die Lösung

01:21:26.465 --> 01:21:27.305
aller unserer Probleme.

01:21:28.785 --> 01:21:29.185
Ja.

01:21:31.565 --> 01:21:32.405
Ja, also

01:21:32.405 --> 01:21:34.125
es geht quasi darum, dass man halt

01:21:34.125 --> 01:21:35.625
Python einfach im Browser, also

01:21:35.625 --> 01:21:37.845
per Web-SMP im Browser laufen hat.

01:21:39.505 --> 01:21:39.905
Ja, das

01:21:39.905 --> 01:21:41.905
große Problem an der Stelle ist halt,

01:21:42.085 --> 01:21:43.905
dass das, oder es ist halt die Frage,

01:21:43.985 --> 01:21:45.065
ob das ein großes Problem ist oder nicht,

01:21:45.965 --> 01:21:47.485
dass das halt bedeutet, dass man

01:21:47.485 --> 01:21:49.725
halt irgendwie ein paar Megabyte Zeug

01:21:49.725 --> 01:21:51.985
irgendwie runterlädt, weil der Interpreter, Python-Interpreter,

01:21:52.205 --> 01:21:53.405
der ist halt nicht im Browser drin.

01:21:54.025 --> 01:21:55.325
Die JavaScript-Interpreter halt schon.

01:21:56.105 --> 01:21:57.645
Und das bedeutet, man muss halt erstmal

01:21:57.645 --> 01:21:59.945
ein paar Megabyte irgendwie runterladen

01:21:59.945 --> 01:22:01.765
und kann dann erst irgendwas

01:22:01.765 --> 01:22:02.025
machen.

01:22:03.605 --> 01:22:05.465
Wobei, das ließe sich ja leicht lösen,

01:22:05.465 --> 01:22:07.325
wenn sich das so weit durchgesetzt hat, dass die

01:22:07.325 --> 01:22:08.925
Browserhersteller sagen, ja gut,

01:22:09.385 --> 01:22:11.205
dann bundeln wir das halt mit in den Browser rein.

01:22:12.205 --> 01:22:13.645
Ja, das wäre natürlich eine Perspektive.

01:22:13.745 --> 01:22:15.445
Das wäre natürlich schick. Dann hätten wir

01:22:15.445 --> 01:22:16.605
gewonnen, aber naja.

01:22:17.425 --> 01:22:18.945
Ja, aber dann kommen auch noch alle anderen

01:22:18.945 --> 01:22:20.045
und wollen das auch haben.

01:22:21.145 --> 01:22:23.105
Ja, ich weiß es nicht. Aber ja, natürlich.

01:22:23.265 --> 01:22:24.865
Also das ist auf jeden Fall auch ein interessanter Weg.

01:22:25.145 --> 01:22:27.125
Das ist halt alles irgendwie dann nach

01:22:27.125 --> 01:22:29.405
WebAssembly kompiliert letztendlich.

01:22:29.505 --> 01:22:31.125
Ich habe letztens gehört, das fand ich auch sehr interessant,

01:22:31.365 --> 01:22:33.345
dass tatsächlich

01:22:33.345 --> 01:22:35.365
ich glaube Figma war es,

01:22:35.465 --> 01:22:35.905
und

01:22:35.905 --> 01:22:37.365
ich hoffe, ich erzähle jetzt nicht

01:22:37.365 --> 01:22:39.365
keinen allzu großen Nutzen, aber ich glaube

01:22:39.365 --> 01:22:40.545
Figma ist tatsächlich

01:22:40.545 --> 01:22:43.285
eine Applikation, die ist geschrieben

01:22:43.285 --> 01:22:44.445
in C++ oder so

01:22:44.445 --> 01:22:47.265
und dann kompiliert das aber

01:22:47.265 --> 01:22:49.085
zu WebAssembly und läuft im Browser.

01:22:49.445 --> 01:22:50.825
Aber die Leute, die das entwickeln,

01:22:50.925 --> 01:22:52.105
entwickeln tatsächlich in C++.

01:22:53.665 --> 01:22:54.305
Ja, okay.

01:22:55.585 --> 01:22:57.365
Figma ist das Design-Tool für alle, die es noch nicht

01:22:57.365 --> 01:22:58.605
können, mit dem man ohne

01:22:58.605 --> 01:23:00.925
Plan von Entwicklung

01:23:00.925 --> 01:23:03.005
so Screens zusammen klicken kann,

01:23:03.005 --> 01:23:04.925
ein bisschen Funktionalität versehen, um so

01:23:04.925 --> 01:23:07.045
Klickstrecken zu verwirklichen, wo es

01:23:07.045 --> 01:23:08.985
auch tolle Tools gibt, wo man das exportieren kann

01:23:08.985 --> 01:23:10.605
als Vue.js-Komponenten oder

01:23:10.605 --> 01:23:12.705
direkt mit CSS rausfahren kann und so weiter

01:23:12.705 --> 01:23:14.885
vom Figma. Dann spart man sich so den

01:23:14.885 --> 01:23:16.345
Zwischenschritt, was sehr praktisch ist.

01:23:16.725 --> 01:23:18.505
Was mein Problem wäre, sowas wie

01:23:18.505 --> 01:23:20.865
Qt zu verwenden, weil ich glaube,

01:23:20.965 --> 01:23:22.845
ich möchte jemanden, der von Design mehr Ahnung hat

01:23:22.845 --> 01:23:24.925
als ich, das bauen lassen, das dann

01:23:24.925 --> 01:23:26.545
exportieren und dann in meine Anwendung

01:23:26.545 --> 01:23:28.885
importieren. Dann muss ich mich

01:23:28.885 --> 01:23:30.025
darum nämlich nicht mehr groß kümmern.

01:23:30.645 --> 01:23:32.625
Ja, aber da würde ich eben denken,

01:23:32.625 --> 01:23:33.725
dass es genau diese

01:23:33.725 --> 01:24:03.705
und PyTest.

01:24:03.725 --> 01:24:05.945
Nichts können, verkaufen sich x-mal

01:24:05.945 --> 01:24:08.405
viel besser als die Sachen, die es anders machen.

01:24:08.585 --> 01:24:09.665
Das kommt auf deine Zielgruppe an.

01:24:11.545 --> 01:24:12.125
Ich würde

01:24:12.125 --> 01:24:12.885
sagen, ja.

01:24:13.505 --> 01:24:16.125
Ich würde sagen, die Normalverteilung

01:24:16.125 --> 01:24:17.825
in der Mitte sagt leider was anderes.

01:24:18.045 --> 01:24:19.425
Also ich wäre durchaus auch bei

01:24:19.425 --> 01:24:21.805
gute Funktionalität, würde ich eher

01:24:21.805 --> 01:24:23.385
bevorzugen. Aber naja.

01:24:24.345 --> 01:24:25.665
Ich glaube, dass es selten das

01:24:25.665 --> 01:24:26.205
dem so ist.

01:24:26.865 --> 01:24:27.505
Weiß ich nicht.

01:24:30.505 --> 01:24:31.205
Ja, ja.

01:24:33.725 --> 01:24:35.585
Ja, aber genau, vielleicht nochmal zu dem

01:24:35.585 --> 01:24:37.765
zu mir planen,

01:24:37.805 --> 01:24:39.945
das ist aber quasi

01:24:39.945 --> 01:24:41.485
ist es entstanden

01:24:41.485 --> 01:24:44.065
für einen konkreten Anwendungsfall,

01:24:45.165 --> 01:24:45.685
in dem es dann auch

01:24:45.685 --> 01:24:47.745
eingesetzt wird, aber es verwenden jetzt auch andere Leute schon

01:24:47.745 --> 01:24:49.525
und es funktioniert eigentlich ganz gut quasi.

01:24:49.865 --> 01:24:51.785
Und man kann das, also wenn man irgendwie so ein Problem hat

01:24:51.785 --> 01:24:53.565
mit, man möchte irgendwie

01:24:53.565 --> 01:24:55.705
Personalplanung machen, im Grunde kann

01:24:55.705 --> 01:24:57.565
jeder das einfach so dann verwenden.

01:24:58.485 --> 01:24:59.985
Kann jeder das einfach so verwenden, genau.

01:24:59.985 --> 01:25:00.165
Ja.

01:25:01.765 --> 01:25:03.305
Das, ja, genau.

01:25:03.725 --> 01:25:06.605
Klingt ja auf jeden Fall schon mal gut

01:25:06.605 --> 01:25:08.905
Ich weiß nicht, fällt dir noch was ein?

01:25:08.985 --> 01:25:10.545
Ich überlege gerade, ob ich noch irgendwelche Fragen habe

01:25:10.545 --> 01:25:12.165
oder irgendwelche Dinge, über die man mal reden könnte

01:25:12.165 --> 01:25:14.545
Wir haben jetzt alles ein bisschen

01:25:14.545 --> 01:25:16.245
wirklich tief gemacht

01:25:16.245 --> 01:25:18.245
Also was mir

01:25:18.245 --> 01:25:19.785
ich höre euch ja auch regelmäßig

01:25:19.785 --> 01:25:22.605
was mir aufgefallen ist

01:25:22.605 --> 01:25:24.545
es gibt noch einen

01:25:24.545 --> 01:25:25.245
Unterschied

01:25:25.245 --> 01:25:28.485
was wir anders machen, was ich anders mache

01:25:28.485 --> 01:25:29.905
als ihr wahrscheinlich

01:25:29.905 --> 01:25:32.905
Ihr nutzt gerne Datenbanken

01:25:32.905 --> 01:25:34.465
Ich nicht

01:25:34.465 --> 01:25:36.745
Ja, das ist auch interessant, ja

01:25:36.745 --> 01:25:38.665
Und

01:25:38.665 --> 01:25:39.745
Was nimmst du? Files?

01:25:40.645 --> 01:25:42.245
Wie bitte? Was nimmst du? Files?

01:25:43.085 --> 01:25:43.945
Dateibasiert, genau

01:25:43.945 --> 01:25:46.245
Gründe, warum ich

01:25:46.245 --> 01:25:48.685
Also, es stimmt natürlich nicht

01:25:48.685 --> 01:25:50.785
Also ich habe auch Datenbanken, aber nur

01:25:50.785 --> 01:25:51.725
da, wo ich sie haben muss

01:25:51.725 --> 01:25:54.045
Also zum Beispiel das

01:25:54.045 --> 01:25:56.005
Jack and Molly hat

01:25:56.005 --> 01:25:58.245
eine Datenbank im Hintergrund

01:25:58.245 --> 01:25:59.985
Da komme ich nicht drum rum

01:25:59.985 --> 01:26:02.705
Aber ja, Datenbanken

01:26:02.705 --> 01:26:06.565
habe ich verschiedene Nachteile, die ich da sehe.

01:26:07.185 --> 01:26:08.525
Zum Beispiel brauche ich ein Tool, mit der ich

01:26:08.525 --> 01:26:09.805
die angucken

01:26:09.805 --> 01:26:12.645
kann, muss. Das heißt,

01:26:12.725 --> 01:26:14.425
wenn ich mal schnell was nachschauen will,

01:26:14.765 --> 01:26:16.365
dann geht das mal nicht so einfach.

01:26:16.505 --> 01:26:18.405
Ich kann mich nicht einfach per SSH auf den Server

01:26:18.405 --> 01:26:20.645
einloggen, kann mir eine Datei

01:26:20.645 --> 01:26:22.865
anschauen mit dem Datei-Editor

01:26:22.865 --> 01:26:24.685
meiner Wahl, sondern ich muss da irgendwie

01:26:24.685 --> 01:26:27.045
dann mit einem SQLite, was weiß ich,

01:26:27.125 --> 01:26:29.005
Viewer oder von außen

01:26:29.005 --> 01:26:30.785
gut, dann kann ich einen Porn aufmachen, aber den muss ich auch

01:26:30.785 --> 01:26:31.465
erstmal aufmachen.

01:26:32.705 --> 01:26:33.705
dann da drauf.

01:26:34.925 --> 01:26:36.925
Also das ist deutlich einfacher mit einer Datei,

01:26:37.025 --> 01:26:37.905
würde ich mal sagen.

01:26:38.805 --> 01:26:40.325
Dann habe ich die Wartung

01:26:40.325 --> 01:26:43.045
der Datenbank. Ich möchte ja regelmäßig

01:26:43.045 --> 01:26:45.585
reinigen,

01:26:45.805 --> 01:26:46.825
ich möchte die komprimieren

01:26:46.825 --> 01:26:48.625
vielleicht, alte

01:26:48.625 --> 01:26:51.025
Sachen rausschmeißen. Das habe ich

01:26:51.025 --> 01:26:52.985
auf Dateiebene zwar auch

01:26:52.985 --> 01:26:55.165
so ein bisschen, aber ich würde

01:26:55.165 --> 01:26:56.725
sagen, es ist da wesentlich einfacher.

01:26:57.505 --> 01:26:58.925
Wenn ich da

01:26:58.925 --> 01:27:01.005
Sachen habe, die ich nicht mehr brauche, dann kann ich

01:27:01.005 --> 01:27:02.225
die mir konkret angucken.

01:27:02.705 --> 01:27:06.445
und kann dann zum Beispiel in Python dafür sorgen, dass die wieder rausfliegen.

01:27:06.765 --> 01:27:09.825
Wie machst du das? Pickelst du die Sachen dann weg oder schreibst du das JSON weg?

01:27:10.265 --> 01:27:14.505
Ne, ich mache alles, was geht, mache ich menschenlesbar.

01:27:15.105 --> 01:27:18.465
Also JSON oder INI.

01:27:20.005 --> 01:27:24.325
Also JSON mache ich auch in einigen Applikationen, schreibe ich einfach tatsächlich so JSON-Files raus.

01:27:24.705 --> 01:27:27.825
Also JSON ist ganz nett, das ist vor allem schnell.

01:27:27.825 --> 01:27:32.405
eigentlich würde ich gerne noch woanders hin

01:27:32.405 --> 01:27:33.545
es gab jetzt ein neues

01:27:33.545 --> 01:27:37.745
Settingsformat von Python

01:27:37.745 --> 01:27:40.305
wird natürlich jetzt in 3 Toml genau

01:27:40.305 --> 01:27:43.945
das ist eigentlich das, wo ich jetzt

01:27:43.945 --> 01:27:46.005
hin wollte, aber

01:27:46.005 --> 01:27:49.965
sämtliche Operationen, die ich

01:27:49.965 --> 01:27:53.165
eigentlich, also ich brauche natürlich auch Operationen auf den Daten

01:27:53.165 --> 01:27:56.185
die ich da lese, das ist klar, aber die mache ich eigentlich alle

01:27:56.185 --> 01:27:57.365
in NumPy

01:27:57.825 --> 01:28:17.785
Also ich lade die Datei in meinen Speicher rein und das geht relativ schnell. Das geht mit der Geschwindigkeit, mit der ich von der Platte lesen kann und kann dann halt die ganzen Aggregationsfunktionen, die ich brauche, Summe, Maximum und so weiter, die habe ich in NumPy auch. Also mache ich das in NumPy.

01:28:19.105 --> 01:28:25.345
Ja, ansonsten Datenbanknachteile. Ja, ich muss natürlich, ich muss die stoppen, wenn ich einen Backup mache.

01:28:25.345 --> 01:28:27.745
Ja, das weiß ich nicht

01:28:27.745 --> 01:28:30.505
Ja, okay, gibt es vielleicht so eine Live-Variante

01:28:30.505 --> 01:28:32.925
Also ich kenne es noch, weiß ich nicht

01:28:32.925 --> 01:28:34.065
Also wer mir nicht bekannt hat

01:28:34.065 --> 01:28:36.805
Was für einen Datenbank man verwendet, aber ich meine jetzt bei Postgres

01:28:36.805 --> 01:28:37.305
das geht schon

01:28:37.305 --> 01:28:40.465
Also muss man nicht

01:28:40.465 --> 01:28:41.425
stoppen

01:28:41.425 --> 01:28:44.185
Aber ja, das ist natürlich ein Problem

01:28:44.185 --> 01:28:47.205
Du hast einen Tail halt, mit dem du irgendwie umgehen musst

01:28:47.205 --> 01:28:49.265
von Zeugs, das irgendwie in der Luft hängen kann

01:28:49.265 --> 01:28:50.725
zwischen dem letzten Backup

01:28:50.725 --> 01:28:52.725
und dem, wo du gerade backuppen willst

01:28:52.725 --> 01:28:54.865
was da an Transaktionen gerade quasi reinkommt

01:28:54.865 --> 01:28:56.565
der relativ groß werden kann, wenn du

01:28:56.565 --> 01:28:57.825
viel Traffic drauf hast.

01:28:59.185 --> 01:29:00.865
Gut, aber da gibt es schon Wege, damit

01:29:00.865 --> 01:29:02.805
umzugehen. Ich meine, was da

01:29:02.805 --> 01:29:04.885
empfohlen wird, ist ja dann auch immer nicht, das selber zu

01:29:04.885 --> 01:29:06.885
machen, wenn man das nicht, weil das natürlich

01:29:06.885 --> 01:29:08.565
ein Riesenaufwand ist, sich da einzuarbeiten.

01:29:08.725 --> 01:29:11.005
Das ist durchaus ein Nachteil,

01:29:11.385 --> 01:29:11.945
ganz klar.

01:29:12.945 --> 01:29:14.565
Man kann ja auch da Dienstleister benutzen

01:29:14.565 --> 01:29:16.245
und sowas wie Crunchybridge,

01:29:16.665 --> 01:29:18.845
Crunchydata verwenden oder so, oder sonst irgendwen,

01:29:18.985 --> 01:29:20.865
der halt sowas Managed Postgres anbietet

01:29:20.865 --> 01:29:21.825
oder so. Okay, interessant.

01:29:21.825 --> 01:29:24.085
Dann muss man das ja eigentlich schon packen.

01:29:24.085 --> 01:29:25.845
Bitte? Pack jetzt bitte noch meine Shownotes.

01:29:26.065 --> 01:29:28.085
Ja, aber man kann das auch selber

01:29:28.085 --> 01:29:29.805
machen, was sie tun. Hat aber den

01:29:29.805 --> 01:29:31.985
Nachteil, dass dann meine Daten woanders liegen.

01:29:32.245 --> 01:29:33.225
Ja, ja, gut, okay.

01:29:33.405 --> 01:29:35.905
Das will ich eigentlich nicht, sondern

01:29:35.905 --> 01:29:37.465
also, was

01:29:37.465 --> 01:29:39.965
mein Ansatz ist, ich möchte eigentlich

01:29:39.965 --> 01:29:41.205
gar keine Kundendaten haben.

01:29:42.825 --> 01:29:44.145
Und wenn ich sie haben muss,

01:29:44.505 --> 01:29:45.945
dann möchte ich so wenig wie möglich davon

01:29:45.945 --> 01:29:46.205
haben.

01:29:47.845 --> 01:29:49.705
Also, zum Beispiel

01:29:49.705 --> 01:29:51.505
bei der Anmeldung verlange ich auch nur

01:29:51.505 --> 01:29:52.805
Nutzername und Passwort mehr nicht.

01:29:52.805 --> 01:29:54.325
noch nicht mal eine E-Mail.

01:29:55.545 --> 01:30:04.527
Ja Das hei wenn jemand sein Passwort vergisst dann kann er mich anschreiben Ja okay gut

01:30:05.507 --> 01:30:12.327
Dann kann er mich anschreiben und falls das öfter passiert, das ist tatsächlich noch nie passiert, dann mache ich das in einem automatischen Verfahren draus.

01:30:12.867 --> 01:30:16.887
Aber solange das nicht häufig vorkommt, ich antworte auch schnell.

01:30:17.387 --> 01:30:22.287
Ich denke auch, das ist wieder eine Frage, wer die Kunden sind.

01:30:22.287 --> 01:30:23.827
also wenn du jetzt ganz viele

01:30:23.827 --> 01:30:26.127
Endkunden hast, an denen du nicht viel verdienst

01:30:26.127 --> 01:30:27.967
und dann

01:30:27.967 --> 01:30:29.747
muss alles automatisiert sein

01:30:29.747 --> 01:30:31.527
dann ist es schlecht, wenn die Leute alle dich anschreiben

01:30:31.527 --> 01:30:33.087
wenn du jetzt nur Endkunden hast

01:30:33.087 --> 01:30:36.027
die sich auskennen, dann ist das halt alles nicht so schlimm

01:30:36.027 --> 01:30:38.047
ich werde das auch automatisieren, solange das

01:30:38.047 --> 01:30:39.668
überhand nimmt, wenn das überhand nimmt

01:30:39.668 --> 01:30:40.607
aber das ist nicht der Fall

01:30:40.607 --> 01:30:41.487
dann

01:30:41.487 --> 01:30:44.688
ich finde es interessant

01:30:44.688 --> 01:30:48.067
ich weiß nicht

01:30:48.067 --> 01:30:49.847
ich denke mir, irgendwas könnte man mit dem

01:30:49.847 --> 01:30:50.987
da noch anfangen

01:30:50.987 --> 01:30:56.087
Es gibt ja auch die Verantwortung an die Hand

01:30:56.087 --> 01:30:59.207
Wenn ich jetzt sage, ich habe hier einen riesen Haufen von Nutzerdaten

01:30:59.207 --> 01:31:03.287
mit E-Mail-Adresse, Passwort, Bankdaten, was weiß ich

01:31:03.287 --> 01:31:05.887
und dann kommt irgendjemand auf meinen Server

01:31:05.887 --> 01:31:08.467
und trägt das ganze Zeug raus

01:31:08.467 --> 01:31:09.727
dann habe ich auf jeden Fall ein Problem

01:31:09.727 --> 01:31:12.707
und das kann ich schon mal insofern vermeiden

01:31:12.707 --> 01:31:14.168
wenn ich das Zeug gar nicht erst habe

01:31:14.168 --> 01:31:16.007
Das würde zum Beispiel aber auch für Managed sprechen

01:31:16.007 --> 01:31:18.688
weil dann hast du die Verantwortung quasi auch abgegeben

01:31:18.688 --> 01:31:19.287
Naja

01:31:19.287 --> 01:31:21.787
Du schließt dann

01:31:21.787 --> 01:31:23.627
einen Servicevertrag

01:31:23.627 --> 01:31:26.127
mit dem, der das halt managt

01:31:26.127 --> 01:31:28.188
aber in der Verantwortung steht trotzdem ich

01:31:28.188 --> 01:31:29.867
Also ganz so

01:31:29.867 --> 01:31:32.467
Also wenn jemand dann

01:31:32.467 --> 01:31:34.727
also nehmen wir an, du hast eine Managed Datenbank

01:31:34.727 --> 01:31:36.027
irgendwo gekauft, zum Beispiel bei Crunchy Data

01:31:36.027 --> 01:31:38.067
und dann irgendwie Crunchy Data, da geht

01:31:38.067 --> 01:31:40.127
irgendjemand rein und trägt alle Daten raus

01:31:40.127 --> 01:31:42.067
dann hast du natürlich trotzdem ein Problem

01:31:42.067 --> 01:31:44.027
auch wenn du das vertraglich dann sagen kannst

01:31:44.027 --> 01:31:44.787
das bin ich gar nicht jetzt

01:31:44.787 --> 01:31:46.668
ich bin jetzt vielleicht außer Haftung

01:31:46.668 --> 01:31:49.507
oder, aber das ist ja trotzdem Kacke für deine Kunden und überhaupt.

01:31:49.887 --> 01:31:52.607
Genau, aber es kommt halt, genau, auch da vielleicht auf die detaillierte Vertragsbeziehung

01:31:52.607 --> 01:31:54.567
mit deinen Kunden oder mit den Kunden deiner Kunden an und so.

01:31:54.907 --> 01:31:56.247
Ja, aber vielleicht willst du das auch einfach gar nicht.

01:31:56.727 --> 01:32:01.327
Naja, aber die Frage ist halt tatsächlich, also was jetzt aus der Datenraustrageperspektive

01:32:01.327 --> 01:32:06.607
sicherer oder besser ist, wenn man jetzt ein kleines Team hat, sich noch komplett um so

01:32:06.607 --> 01:32:10.327
einen Datenbankcluster-Management zu kümmern zu müssen oder das halt an einen Service-Dienstleister

01:32:10.327 --> 01:32:14.467
auszusourcen, der da vielleicht mehr Zeit für hat oder mehr ressourcen, weil er das nur

01:32:14.467 --> 01:32:16.607
macht und da sich besser mit auskennt als man selber.

01:32:16.767 --> 01:32:18.747
Und das geht ja für verschiedene andere Services auch so.

01:32:18.767 --> 01:32:20.547
Ja, also es kann durchaus sein, dass das sogar

01:32:20.547 --> 01:32:22.627
die sichere Alternative ist, wenn du

01:32:22.627 --> 01:32:24.507
das outstorst, wenn du dich selber

01:32:24.507 --> 01:32:26.527
halt nicht damit auskennst. Genau, oder man hat halt nicht

01:32:26.527 --> 01:32:28.487
so relevante Sachen. Und ich sag mal so, ja,

01:32:28.607 --> 01:32:30.607
okay, klar, gibt es so Punkte, wo man jetzt gucken muss,

01:32:30.648 --> 01:32:32.527
dass man jetzt nicht alles so sammelt, wie jetzt die letzte

01:32:32.527 --> 01:32:34.327
Krake. Da gibt es ja so ein paar

01:32:34.327 --> 01:32:36.507
Google-Kraken, die das so machen. Ja, aber es gibt

01:32:36.507 --> 01:32:38.467
viele Unternehmen, die erstmal alles in ihrem

01:32:38.467 --> 01:32:40.467
Data Lake irgendwo hin...

01:32:40.467 --> 01:32:42.607
Ja, also ich würde jetzt auch nicht alles... Vielleicht kann man damit irgendwann

01:32:42.607 --> 01:32:43.587
mal irgendwas anfangen, aber

01:32:43.587 --> 01:32:45.627
Da habe ich auch keinen Freund von

01:32:45.627 --> 01:32:48.067
Ich kann das so ein bisschen

01:32:48.067 --> 01:32:50.367
verstehen, also jetzt nicht von Kunden an

01:32:50.367 --> 01:32:52.188
aber wenn ich jetzt so ein Request habe, warum soll ich

01:32:52.188 --> 01:32:53.607
die ganzen Informationen da wegschmeißen

01:32:53.607 --> 01:32:56.087
Also der neueste Trend scheint zu sein

01:32:56.087 --> 01:32:58.227
dass jeder Dienst, egal wie unwichtig

01:32:58.227 --> 01:32:59.668
der ist, mal eine Telefonnummer haben will

01:32:59.668 --> 01:33:02.467
und das finde ich ganz grausam

01:33:02.467 --> 01:33:03.767
Ja

01:33:03.767 --> 01:33:05.387
Also ich würde jetzt auch sagen

01:33:05.387 --> 01:33:07.927
Mir geht es gar nicht um Kunden da an, sondern eher so um

01:33:07.927 --> 01:33:10.627
Meta-Quatsch

01:33:10.627 --> 01:33:12.067
Log-Zeit-Stempel

01:33:12.067 --> 01:33:14.207
oder sowas. So Zilemmitrie

01:33:14.207 --> 01:33:15.148
im weitesten Sinne.

01:33:16.648 --> 01:33:18.148
Und ohne, dass ich jetzt irgendwie so Nutzer

01:33:18.148 --> 01:33:20.007
daran identifizieren möchte, um irgendwie da noch

01:33:20.007 --> 01:33:21.567
ein Quäntchen Umsatz raus zu quetschen,

01:33:22.027 --> 01:33:23.927
sondern einfach nur so ein bisschen um den Flow

01:33:23.927 --> 01:33:25.887
so ein bisschen besser im Blick zu haben. Ja, technische Daten

01:33:25.887 --> 01:33:27.947
brauchst du natürlich. Das steht ja außer Frage.

01:33:28.707 --> 01:33:30.168
Sonst funktioniert die Software ja nicht.

01:33:30.947 --> 01:33:31.107
Ja.

01:33:33.827 --> 01:33:35.827
Ja, aber ich glaube auch da, ich meine,

01:33:35.907 --> 01:33:37.847
man macht sich vielleicht nicht immer klar, welche

01:33:37.847 --> 01:33:39.527
Optionen man eigentlich hat. Natürlich kann man irgendwie

01:33:39.527 --> 01:33:41.527
Sachen speichern und so. Die Frage ist halt,

01:33:42.067 --> 01:33:43.427
wiederum, wenn du nicht so viele

01:33:43.427 --> 01:33:44.867
Nutzer hast, du kannst ja auch einfach fragen.

01:33:45.247 --> 01:33:47.527
Also zum Beispiel, das wäre jetzt auch so ein GraphQL-Api,

01:33:48.067 --> 01:33:49.688
wenn ich jetzt nicht ein Problem

01:33:49.688 --> 01:33:51.707
mit Latenz habe, ich ziehe mir dann Maximum

01:33:51.707 --> 01:33:53.367
und schmeiße alles weg, was ich brauche.

01:33:54.407 --> 01:33:55.527
Man könnte natürlich auch direkt

01:33:55.527 --> 01:33:57.447
die Query so effektiv stellen,

01:33:57.787 --> 01:33:58.747
dass man das Minimum holt.

01:33:58.787 --> 01:34:00.527
Du kannst auch direkt die Datenbank

01:34:00.527 --> 01:34:03.188
quasi in deinen Browser reinpacken,

01:34:03.307 --> 01:34:05.327
das geht natürlich auch, es gibt auch bestimmte

01:34:05.327 --> 01:34:06.507
Anwendungsfälle, in denen das nicht toll ist,

01:34:07.507 --> 01:34:09.467
aber es gibt

01:34:09.467 --> 01:34:11.007
auch gute Gründe, warum Leute das anders machen.

01:34:11.007 --> 01:34:12.168
Ja, man muss halt

01:34:12.168 --> 01:34:13.027
ein bisschen mehr Format haben

01:34:13.027 --> 01:34:16.347
Ein weiterer Vorteil ist, wenn ich die Daten nicht sammle, dann

01:34:16.347 --> 01:34:18.648
ist mein Backup deutlich kleiner

01:34:18.648 --> 01:34:20.188
Ja, also ich würde

01:34:20.188 --> 01:34:22.327
einer der wichtigsten Argumente ist vielleicht auch, dass weniger Strom

01:34:22.327 --> 01:34:24.148
verbraucht, so ein bisschen weniger Kosten

01:34:24.148 --> 01:34:25.527
auch ökologisch

01:34:25.527 --> 01:34:27.807
Ja

01:34:27.807 --> 01:34:29.227
Ja

01:34:29.227 --> 01:34:32.107
Aber ich finde das, also so Dinge als

01:34:32.107 --> 01:34:33.067
Grundsatz zu sagen, ich

01:34:33.067 --> 01:34:36.267
schaue mal, ob ich jetzt nicht vielleicht irgendwie

01:34:36.267 --> 01:34:38.287
welche Daten ich wirklich brauche und welche halt

01:34:38.287 --> 01:34:40.387
nicht und die, die ich nicht brauche, die

01:34:40.387 --> 01:34:42.327
spreche ich gar nicht erst, das finde ich

01:34:42.327 --> 01:34:44.527
eigentlich schon recht sinnvoll.

01:34:44.727 --> 01:34:45.247
Ja, ja.

01:34:45.247 --> 01:34:45.447
Ja.

01:34:51.387 --> 01:34:53.207
Was eigentlich für so ein ORM-Ding

01:34:53.207 --> 01:34:55.127
sprechen wir mit klaren, definierten Modellen, mit einer klaren

01:34:55.127 --> 01:34:55.487
Validierung?

01:34:56.427 --> 01:34:59.267
Zu dieser grundsätzlichen Frage, Datenbank ja oder

01:34:59.267 --> 01:35:01.287
nein, aus meiner Perspektive ist das jetzt

01:35:01.287 --> 01:35:03.207
eher, würde ich ja sagen,

01:35:03.307 --> 01:35:05.007
gut, das Dateisystem ist ja auch eine Datenbank.

01:35:05.207 --> 01:35:07.207
Es ist halt nur eine andere Art

01:35:07.207 --> 01:35:09.188
von Datenbank. Es ist halt eine hierarchische Datenbank,

01:35:09.188 --> 01:35:10.347
und keine Relationale.

01:35:11.087 --> 01:35:12.427
Busker steht ja auch in Python irgendwo rum.

01:35:13.607 --> 01:35:14.467
Ja, genau.

01:35:16.267 --> 01:35:16.668
Insofern

01:35:16.668 --> 01:35:18.867
ist halt auch da die Frage,

01:35:19.047 --> 01:35:20.907
und es ist ja auch, wenn man eine Web-Anwendung hat,

01:35:21.027 --> 01:35:22.727
die sind, die auch eine,

01:35:22.807 --> 01:35:23.907
jetzt wenn man Django hat oder so,

01:35:24.327 --> 01:35:26.767
oder was auch immer, für eine Standard

01:35:26.767 --> 01:35:29.007
Web-Anwendung, dann üblicherweise hat man

01:35:29.007 --> 01:35:30.127
ja auch da nicht nur

01:35:30.127 --> 01:35:33.107
Daten in Tabellen,

01:35:33.427 --> 01:35:35.247
sondern da hat man ja auch noch was anderes.

01:35:35.887 --> 01:35:36.707
Da hat inzwischen

01:35:36.707 --> 01:35:39.168
eigentlich nicht mehr wirklich Falses, im Frühjahr war es dann Falses,

01:35:39.188 --> 01:35:42.027
noch, aber inzwischen ist es halt ein Object Store meistens.

01:35:42.107 --> 01:35:43.287
Irgendwas Cash-Radius oder?

01:35:43.927 --> 01:35:47.707
Cash, gut, aber das ist jetzt nicht unbedingt Teil der Datenhaltung, da liegt ja auch nur

01:35:47.707 --> 01:35:48.668
eine Kopie von dem, was man...

01:35:48.668 --> 01:35:51.307
Ja, du musst ja zum Beispiel Redis jetzt auch nicht nur als Cache nehmen, sondern kannst

01:35:51.307 --> 01:35:54.707
halt auch da irgendwie bestimmte Sachen vorbrechen und da ablegen, wenn das irgendwie...

01:35:54.707 --> 01:35:59.607
Gut, das ist nochmal eine andere, Redis ist halt so ein Key-Value-Store im weitesten Sinne,

01:36:00.447 --> 01:36:06.407
aber dafür gibt es natürlich auch wieder Anwendungsfälle, wo das gut ist, aber also

01:36:06.407 --> 01:36:36.387
und PyTest.

01:36:36.407 --> 01:37:06.387
und PyTest.

01:37:06.407 --> 01:37:08.427
Genau, dann

01:37:08.427 --> 01:37:10.627
die Standardlösung, oder das erste ist dann halt

01:37:10.627 --> 01:37:12.107
Leute legen das dann nach S3 oder so

01:37:12.107 --> 01:37:14.327
und stellen dann fest, oh mein Gott, das ist ja voll teuer

01:37:14.327 --> 01:37:15.547
Ja, das ist

01:37:15.547 --> 01:37:18.547
und ja, ich hab jetzt

01:37:18.547 --> 01:37:20.487
ich weiß nicht, vor den letzten Monaten, und ich hab ja eine super

01:37:20.487 --> 01:37:22.327
kleine Instanz, aber ich hab trotzdem die letzten

01:37:22.327 --> 01:37:24.247
drei, vier Monate hat das Ding irgendwie

01:37:24.247 --> 01:37:26.547
60 GB Daten

01:37:26.547 --> 01:37:28.747
oder so angesammelt an Zeugs

01:37:28.747 --> 01:37:30.087
und

01:37:30.087 --> 01:37:32.627
gut, bei größeren Instanzen wird das noch viel, viel

01:37:32.627 --> 01:37:34.547
mehr sein und dann wird das halt irgendwann teuer, wenn man

01:37:34.547 --> 01:37:36.207
das halt alles nach S3 legt

01:37:36.207 --> 01:37:38.467
und dann ist die Frage, okay, kann man das

01:37:38.467 --> 01:37:40.327
irgendwie selber machen? Ja, kann man. Was ich

01:37:40.327 --> 01:37:42.227
dafür schon verwendet habe, ist so

01:37:42.227 --> 01:37:42.707
Minio.

01:37:44.127 --> 01:37:44.227
Ja.

01:37:45.907 --> 01:37:48.927
Das Problem

01:37:48.927 --> 01:37:49.668
dabei ist,

01:37:50.148 --> 01:37:52.547
das ist quasi

01:37:52.547 --> 01:37:53.727
ein Backend-Lokal.

01:37:54.907 --> 01:37:56.487
Gleicher API, gleiche Unterface wie S3.

01:37:56.587 --> 01:37:57.547
Gleicher API wie S3,

01:37:57.807 --> 01:38:00.347
aber du kannst halt selber hosten.

01:38:01.467 --> 01:38:02.727
Das ist eigentlich ganz nett.

01:38:02.727 --> 01:38:03.967
Also so prinzipiell die Idee.

01:38:05.447 --> 01:38:06.007
Ja,

01:38:06.207 --> 01:38:35.127
Ja, das kann man durchaus verwenden, auch im kommerziellen Kontext geht das, aber es gibt da eine Firma hinter, die ist jetzt auch im Silicon Valley, das ist alles irgendwo geschrieben und da arbeiten viele Leute, die haben wirklich viel, viel Venture-Capital eingesammelt und das müssen die halt irgendwie auch wieder rausholen, das heißt, irgendwann werden sie irgendwie versuchen, Methoden zu finden, wie sie einem dafür irgendwie das kleine Schräubchen, einen dafür bezahlen lassen können, was ja auch irgendwie legitim ist, aber das ist halt so ein bisschen,

01:38:35.127 --> 01:38:37.067
und was halt der große Nachteil von Minio

01:38:37.067 --> 01:38:39.167
ist, dass du da nicht

01:38:39.167 --> 01:38:40.867
dynamisch irgendwie

01:38:40.867 --> 01:38:43.047
Dinge hinzustellen und wegnehmen kannst,

01:38:43.247 --> 01:38:44.907
sondern das ist halt schon

01:38:44.907 --> 01:38:47.188
eher so auf den Betrieb ausgelegt. Du weißt schon,

01:38:47.547 --> 01:38:49.087
wie viel Platz du hast und das ist

01:38:49.087 --> 01:38:51.148
alles fertig. Wieso kannst du da nicht dynamisch

01:38:51.148 --> 01:38:52.747
was... Du kannst halt nicht einfach eine Maschine

01:38:52.747 --> 01:38:54.887
dazustellen und sagen, so, hier eine Maschine mehr.

01:38:55.087 --> 01:38:56.327
Du kannst auch so ein Cluster, dann kannst du irgendwie

01:38:56.327 --> 01:38:57.648
eine Liste eintragen.

01:38:58.387 --> 01:39:00.728
Das ist dann etwas, wo dann die Leute draufgestoßen sind,

01:39:00.867 --> 01:39:02.467
die dann Minio verwendet haben.

01:39:02.967 --> 01:39:04.228
Das ist ja der große Vorteil

01:39:04.228 --> 01:39:06.847
von AWS und der Lambda-Geschichte,

01:39:07.367 --> 01:39:08.947
dass du das halt einfach hochskalieren kannst

01:39:08.947 --> 01:39:09.507
mit einem Klick.

01:39:10.027 --> 01:39:12.648
Ja, genau. Aber Minio ist

01:39:12.648 --> 01:39:14.807
eher so für jemand, der sowas wie S3

01:39:14.807 --> 01:39:15.747
betreiben möchte.

01:39:16.467 --> 01:39:17.027
Und dann halt schon,

01:39:17.188 --> 01:39:19.367
wo du halt schon ein Datastarter hast.

01:39:20.107 --> 01:39:22.167
Aber wenn du jetzt dynamisch irgendwie

01:39:22.167 --> 01:39:24.287
sagst, oh, ich brauche jetzt aber nochmal ein paar Terabyte mehr

01:39:24.287 --> 01:39:25.887
Datenspeicher,

01:39:26.547 --> 01:39:27.207
dann ist Minio...

01:39:27.207 --> 01:39:29.907
Da kannst du Sachen auf jeden Fall hinzufügen.

01:39:30.007 --> 01:39:32.287
Das heißt, wenn du dir irgendwie dynamisch

01:39:32.287 --> 01:39:33.927
Kisten spawnst, auf denen du

01:39:33.927 --> 01:39:36.207
Minio aufsetzt und die dann kannst du einfach

01:39:36.207 --> 01:39:38.188
deinem Cluster hinzufügen. Also theoretisch geht das halt schon.

01:39:38.967 --> 01:39:39.587
Ja, also jedenfalls,

01:39:39.847 --> 01:39:41.627
ich beziehe mich da jetzt auf die ganzen

01:39:41.627 --> 01:39:43.728
Performance-Tuning und so Dinge, Artikel,

01:39:44.307 --> 01:39:45.627
die Leuten dann aufgefallen sind, die

01:39:45.627 --> 01:39:48.067
größere Monster-Incense mit haben, die meinten so, ah shit,

01:39:48.527 --> 01:39:50.167
das geht nicht mit Minio, geht nicht gut, weil

01:39:50.167 --> 01:39:51.287
du kannst es nicht dynamisch,

01:39:51.907 --> 01:39:53.807
kannst du Sachen hinzufügen oder wegnehmen, geht nicht gut.

01:39:54.847 --> 01:39:56.287
Und die sind dann alle umgestiegen

01:39:56.287 --> 01:39:57.947
auf etwas, das nennt sich SeaweedFS.

01:39:58.667 --> 01:40:00.247
Okay. Und da geht

01:40:00.247 --> 01:40:02.587
das wohl, das habe ich aber selber noch nicht ausprobiert.

01:40:02.767 --> 01:40:03.307
Also keine Ahnung.

01:40:03.728 --> 01:40:04.087
Seaweed.

01:40:04.487 --> 01:40:04.667
Ja.

01:40:06.667 --> 01:40:07.027
Ja.

01:40:08.947 --> 01:40:10.487
Genau, das sind halt so die Dinge, die man hat.

01:40:10.507 --> 01:40:11.827
Wieder auf die Entity-To-Do-Liste.

01:40:12.827 --> 01:40:12.947
Ja.

01:40:14.427 --> 01:40:16.627
Naja, genau. Aber ja, also die Kombination

01:40:16.627 --> 01:40:18.407
ist eigentlich schon gut, aber ja klar, ich sehe auch, dass man,

01:40:18.627 --> 01:40:20.287
wenn man ein Teilsystem hat, ist es auch nicht so schlecht.

01:40:20.467 --> 01:40:22.567
Also wenn man da tatsächlich reingucken kann und so.

01:40:23.688 --> 01:40:23.887
Ja.

01:40:25.188 --> 01:40:26.527
Ja, es kommt halt immer auf

01:40:26.527 --> 01:40:27.467
einen Anwendungsfall an.

01:40:28.167 --> 01:40:29.688
Ob das jetzt da mehr Sinn macht.

01:40:30.247 --> 01:40:32.627
Ja, aber ich meine

01:40:32.627 --> 01:40:34.887
sozusagen aus der Datenbankperspektive

01:40:34.887 --> 01:40:36.767
du musst dich ja jetzt dann auch tatsächlich

01:40:36.767 --> 01:40:38.347
um solche Sachen kümmern wie Backup und

01:40:38.347 --> 01:40:40.767
was passiert eigentlich

01:40:40.767 --> 01:40:42.688
wenn irgendwas

01:40:42.688 --> 01:40:44.807
weg ist, wie kommt das wieder zurück und diese ganzen

01:40:44.807 --> 01:40:46.807
Prozesse, wo du ja, ich meine

01:40:46.807 --> 01:40:48.507
klar, bei Datenbanken ist es halt vielleicht komplizierter

01:40:48.507 --> 01:40:50.627
aber da gibt es ja schon eine fertige Lösung für

01:40:50.627 --> 01:40:51.728
das musst du dann ja selber bauen

01:40:51.728 --> 01:40:54.607
eigentlich. Naja, eigentlich

01:40:54.607 --> 01:40:56.667
nicht. Also wie kommt das zurück

01:40:56.667 --> 01:40:58.667
war ja deine Frage, naja mit Ansible

01:40:58.667 --> 01:40:59.648
und dem Backup

01:40:59.648 --> 01:41:02.547
und

01:41:02.547 --> 01:41:05.127
ja, Backups mache ich mit Borg.

01:41:05.987 --> 01:41:07.207
Habe noch nichts besseres gefunden.

01:41:08.207 --> 01:41:08.847
RESTIC ist gut.

01:41:09.167 --> 01:41:09.688
Kennst du RESTIC?

01:41:09.688 --> 01:41:11.607
RESTIC habe ich

01:41:11.607 --> 01:41:12.527
gelesen,

01:41:13.267 --> 01:41:15.688
brauche ich da aber eigentlich nicht.

01:41:16.047 --> 01:41:17.767
Also habe noch

01:41:17.767 --> 01:41:19.688
keinen Anwendungsfall, wo ich jetzt

01:41:19.688 --> 01:41:21.967
oberhalb von Borg noch was brauchen würde.

01:41:23.907 --> 01:41:25.427
Was kann RESTIC noch zusätzlich?

01:41:26.267 --> 01:41:27.407
Du kannst halt auch direkt auf

01:41:27.407 --> 01:41:29.627
ein Bucket backupen zum Beispiel oder so.

01:41:29.648 --> 01:41:30.607
Achso

01:41:30.607 --> 01:41:34.047
Also oder auch irgendwo, wo halt einer läuft

01:41:34.047 --> 01:41:35.347
also relativ gutes

01:41:35.347 --> 01:41:38.167
Ja, das mache ich sowieso, aber gut, das mache ich dann händisch

01:41:38.167 --> 01:41:41.688
Also nicht händisch, sondern automatisch

01:41:41.688 --> 01:41:44.148
Also ich habe es programmiert, sodass es jetzt automatisch

01:41:44.148 --> 01:41:45.407
läuft, sozusagen

01:41:45.407 --> 01:41:50.547
Ja, aber

01:41:50.547 --> 01:41:53.807
also ich meine, klar

01:41:53.807 --> 01:41:55.927
das ist schon eine prächtigte, also muss man sich eigentlich

01:41:55.927 --> 01:41:57.987
schon überlegen, es ist ja meistens so, dass Relationalen Daten

01:41:57.987 --> 01:42:00.007
immer so gesetzt sind, aber ob das

01:42:00.007 --> 01:42:01.207
für alle Anwendungsfälle immer so

01:42:01.207 --> 01:42:04.148
der Default sein sollte, das weiß ich auch nicht.

01:42:04.267 --> 01:42:05.807
Das ist schon, kann man auch nochmal

01:42:05.807 --> 01:42:07.947
drüber nachdenken, ob das

01:42:07.947 --> 01:42:09.487
für den eigenen Fall irgendwie Sinn macht.

01:42:10.527 --> 01:42:11.807
Ja, ich meine,

01:42:11.967 --> 01:42:13.887
aus einer Software-Architektur-Perspektive kann man

01:42:13.887 --> 01:42:15.867
natürlich auch einfach sagen, das ist halt ein

01:42:15.867 --> 01:42:17.787
Implementationsdetail, das ich jetzt aus dem

01:42:17.787 --> 01:42:19.407
Kern meiner Software auch eigentlich raushalten kann.

01:42:19.827 --> 01:42:21.767
Ich mache halt irgendwie Repository-Pattern oder so

01:42:21.767 --> 01:42:22.167
und dann

01:42:22.167 --> 01:42:25.507
habe ich sowieso in meiner Applikation oder

01:42:25.507 --> 01:42:30.807
in einer Kernlogik irgendwie nur mit Objekten zu tun und wie die jetzt letztlich gespeichert werden,

01:42:30.907 --> 01:42:34.927
ob die in einem Falssystem landen, in JSON oder Tommel oder der Datenbank,

01:42:35.567 --> 01:42:39.287
das ist letztlich egal, da kümmert sich irgendwie ein anderer Teil drum

01:42:39.287 --> 01:42:41.967
und das ist gar nicht im Kern meiner Applikation drin.

01:42:43.027 --> 01:42:47.507
Naja, der Vorteil der Datenbank, das sehe ich in erster Linie in den Aggregationsfunktionen,

01:42:48.148 --> 01:42:52.127
die das halt mitbringt, aber das mache ich halt woanders dann.

01:42:55.507 --> 01:43:03.967
Ja, also ich meine, was du in NumPy halt nicht hast, wenn du jetzt so große Datenmengen hast, dass die gar nicht so wirklich in deinen Hauptspeicher passen oder so.

01:43:03.967 --> 01:43:16.967
Wenn die nicht in den Speicher passen, richtig. Aber auch da gibt es Lösungen tatsächlich. Da gibt es Abstraktionen von NumPy, die das quasi so chunkmäßig dann bearbeiten. Also das geht tatsächlich auch, wenn man das will.

01:43:16.967 --> 01:43:23.287
Ja, oder überhaupt so Indizes und so hast du wahrscheinlich dann eher nicht.

01:43:23.287 --> 01:43:24.707
Ne, brauche ich nicht.

01:43:24.767 --> 01:43:25.247
Brauchst du halt nicht.

01:43:26.267 --> 01:43:28.547
Dann können auch keine Indizes kollidieren, wenn ich

01:43:28.547 --> 01:43:30.327
zwei dicke Datensätze zusammenfüge.

01:43:33.767 --> 01:43:33.987
Ja.

01:43:34.427 --> 01:43:35.807
Insofern, also auf jeden Fall

01:43:35.807 --> 01:43:38.427
finde ich sehr interessant, weil viele

01:43:38.427 --> 01:43:40.307
irgendwie eher

01:43:40.307 --> 01:43:42.547
unkonventionelle Ansätze oder so, aber

01:43:42.547 --> 01:43:43.547
ja,

01:43:44.427 --> 01:43:46.867
auf jeden Fall sehr interessant

01:43:46.867 --> 01:43:48.867
und für den Anwendungsfall

01:43:49.607 --> 01:43:50.787
macht das wahrscheinlich durchaus

01:43:50.787 --> 01:43:51.487
alles Sinn.

01:43:51.487 --> 01:43:53.367
Hat natürlich alles

01:43:53.367 --> 01:43:55.507
Vor- und Nachteile, aber gut, da muss man

01:43:55.507 --> 01:43:57.487
sich halt dann informieren vorher

01:43:57.487 --> 01:44:03.247
Ja, ich weiß nicht, hast du noch

01:44:03.247 --> 01:44:05.167
irgendein Thema, Martin, was

01:44:05.167 --> 01:44:05.887
du

01:44:05.887 --> 01:44:09.547
wo wir jetzt noch nicht drüber gesprochen hätten

01:44:09.547 --> 01:44:11.207
oder

01:44:11.207 --> 01:44:12.627
sind wir quasi durch

01:44:12.627 --> 01:44:14.627
Nö, aktuell

01:44:14.627 --> 01:44:17.247
würde ich sagen, haben wir relativ

01:44:17.247 --> 01:44:18.367
breit alles erschlagen

01:44:18.367 --> 01:44:19.467
Da machen wir noch Pics

01:44:19.467 --> 01:44:20.707
Gut, ja

01:44:20.707 --> 01:44:22.007
Wer möchte anfangen?

01:44:24.148 --> 01:44:25.367
Okay, dann fange ich mal an

01:44:25.367 --> 01:44:26.587
Moment

01:44:26.587 --> 01:44:29.267
Pics

01:44:29.267 --> 01:44:32.807
Ich würde gerne eine

01:44:32.807 --> 01:44:33.907
auch eine

01:44:33.907 --> 01:44:36.627
kleine, feine Anwendung

01:44:36.627 --> 01:44:38.047
picken

01:44:38.047 --> 01:44:42.607
die jetzt, also auch wieder natürlich

01:44:42.607 --> 01:44:44.807
für so wahnsinnig viele Leute interessant ist

01:44:44.807 --> 01:44:46.447
gibt es auf iOS und auf dem

01:44:46.447 --> 01:44:49.087
Mac und zwar heißt die

01:44:49.467 --> 01:44:51.167
Paprika

01:44:51.167 --> 01:44:54.627
und das ist so eine Rezeptverwaltung.

01:44:54.767 --> 01:44:55.827
Ich weiß nicht, wenn man halt

01:44:55.827 --> 01:44:58.347
gerne kocht und viele Rezepte hat und so,

01:44:58.827 --> 01:45:00.587
dann überlegt man sich ja häufig,

01:45:00.747 --> 01:45:02.467
wo man die dann irgendwie zentral

01:45:02.467 --> 01:45:04.447
lagert oder keine Ahnung, was man damit...

01:45:04.447 --> 01:45:06.267
Obsidian. Ja, Obsidian.

01:45:06.667 --> 01:45:07.707
Ja, gut, aber das dann halt

01:45:07.707 --> 01:45:09.967
sehr

01:45:09.967 --> 01:45:12.507
puristisch irgendwie

01:45:12.507 --> 01:45:14.228
dann... Kannst ja

01:45:14.228 --> 01:45:16.688
direkt Static Pages, das ist für Rezepte

01:45:16.688 --> 01:45:18.407
eigentlich dafür sehr gut, erinnern lassen, deinen Bock.

01:45:18.407 --> 01:45:29.228
Ja, aber klar, kann man machen, ist aber nicht unbedingt auf den Rezeptanwendungsfall irgendwie so wahnsinnig gut zugeschnitten.

01:45:30.367 --> 01:45:41.207
Und das Ding kann halt so Sachen wie zum Beispiel, das hat einen eingebauten Browser und dann, wenn man irgendwo im Web ist und sieht halt irgendwo ein Rezept oder so, dann kann man sagen, okay, speichere mir das mal.

01:45:41.207 --> 01:45:42.228
und dann

01:45:42.228 --> 01:45:45.287
kann man halt die unterschiedlichen Teile, also

01:45:45.287 --> 01:45:47.507
man hat sozusagen ein Schema, in dem die Rezepte

01:45:47.507 --> 01:45:49.427
irgendwie gespeichert werden und dann

01:45:49.427 --> 01:45:51.667
kann man dann halt in dem eingebauten

01:45:51.667 --> 01:45:53.327
Browser kann man dann halt so rechtecke ziehen und sagen,

01:45:53.427 --> 01:45:55.407
das hier sind die Zutaten und dann zieht man da einfach

01:45:55.407 --> 01:45:57.327
ein Rechteck drüber und sagt, da waren die Zutaten und dann macht es halt

01:45:57.327 --> 01:45:59.507
und dann sind die Zutaten halt in einem ordentlichen Format

01:45:59.507 --> 01:46:01.447
drin oder hier, das ist das Bild, wo man

01:46:01.447 --> 01:46:02.987
wirklich sehen kann, was da drauf, also

01:46:02.987 --> 01:46:04.327
woher soll,

01:46:05.467 --> 01:46:07.287
will man sonst wissen, also oft auf Webseiten

01:46:07.287 --> 01:46:09.347
gibt es halt viele Bilder, wo ist denn, welches Bild ist

01:46:09.347 --> 01:46:11.188
denn jetzt so das, auf dem das wirklich zu sehen ist

01:46:11.188 --> 01:46:41.167
und PyTest.

01:46:41.188 --> 01:47:11.167
und PyTest.

01:47:11.188 --> 01:47:13.247
auch eine Kombination aus Python Backend

01:47:13.247 --> 01:47:14.747
und Vue.js Melee

01:47:14.747 --> 01:47:15.787
verwendet.

01:47:17.407 --> 01:47:18.467
Vor drei Wochen.

01:47:18.907 --> 01:47:20.847
Vor einem Jahr ungefähr, habe ich damit mal angefangen.

01:47:21.607 --> 01:47:23.167
Weil das auch ganz interessant aussah.

01:47:23.887 --> 01:47:24.947
Aber ehrlich gesagt,

01:47:25.167 --> 01:47:26.987
das zu deployen ist schon ein ganz schöner Horror.

01:47:27.127 --> 01:47:28.067
Ja, ich meine Melee nicht so viel.

01:47:29.027 --> 01:47:30.047
Ja, aber

01:47:30.047 --> 01:47:32.907
dann habe ich irgendwie ein Ding gebaut,

01:47:33.047 --> 01:47:34.487
was mir sozusagen die

01:47:34.487 --> 01:47:36.887
Rezeptgeschichten, die es bei

01:47:36.887 --> 01:47:38.607
dieser App gibt, in dieser Captain Cook App,

01:47:39.067 --> 01:47:40.867
halt rübersynkt in meinen Melee und ich dann

01:47:40.867 --> 01:47:42.347
halt nur noch Melee verwenden muss und nicht mehr

01:47:42.347 --> 01:47:44.747
die komische App, weil die App von Captain Cook ist halt,

01:47:44.847 --> 01:47:46.987
sieht zwar irgendwie nett aus, aber sie ist halt, funktioniert nicht so richtig.

01:47:48.148 --> 01:47:48.407
Und

01:47:48.407 --> 01:47:50.847
genau, und da hat jemand dann

01:47:50.847 --> 01:47:51.507
ein Pull-Request

01:47:51.507 --> 01:47:54.307
gegen

01:47:54.307 --> 01:47:56.767
Gestellte gesagt, hier, soll das

01:47:56.767 --> 01:47:58.387
nicht auch vielleicht mal nach Paprika sinken und so? Ich so,

01:47:58.387 --> 01:47:59.307
Paprika kenne ich gar nicht.

01:47:59.847 --> 01:48:02.787
Ja, bin ich auch aufmerksam geworden und ja, super, super, jetzt sinkt das halt auch dahin.

01:48:03.087 --> 01:48:04.767
Und jetzt verwende ich Paprika und bin

01:48:04.767 --> 01:48:05.247
sehr zufrieden.

01:48:05.247 --> 01:48:07.107
Also was echt cool klingt,

01:48:07.228 --> 01:48:08.587
mit den Bildern und den Zutaten, weil

01:48:08.587 --> 01:48:10.847
ich mache das halt immer alles selber, aber gut,

01:48:10.867 --> 01:48:12.107
und Korrektiv-Rezepte.

01:48:12.907 --> 01:48:13.627
Ja, okay.

01:48:15.007 --> 01:48:16.567
Cool. Ich würde

01:48:16.567 --> 01:48:18.567
Copilot Labs picken.

01:48:19.167 --> 01:48:19.347
Ah.

01:48:20.827 --> 01:48:22.587
Also Copilot, haben wir ja schon ein paar Mal

01:48:22.587 --> 01:48:24.648
darüber gesprochen, wunderschöne Extension

01:48:24.648 --> 01:48:26.667
für den Editor deiner Wahl zum

01:48:26.667 --> 01:48:27.767
besser machen.

01:48:28.447 --> 01:48:30.487
Copilot Labs, ich weiß nicht, ob es auch für andere

01:48:30.487 --> 01:48:32.627
IDEs geht, als wie es Code, aber damit

01:48:32.627 --> 01:48:33.707
kannst du halt so Sachen machen wie

01:48:33.707 --> 01:48:36.867
markier dir irgendwie ein paar Funktionen,

01:48:36.987 --> 01:48:38.487
mach doch mal bitte Type-Ins dran oder

01:48:38.487 --> 01:48:40.167
ein paar Tests hätte ich hier gerne und so.

01:48:40.167 --> 01:48:41.728
und das funktioniert ganz gut.

01:48:42.188 --> 01:48:43.067
Das ist ganz nett.

01:48:44.148 --> 01:48:45.847
Oder übersetzt das mal in eine andere Sprache.

01:48:46.047 --> 01:48:47.967
Also hier habe ich einen Python-Code, hier kann ich go oder

01:48:47.967 --> 01:48:49.728
andersrum oder ja.

01:48:50.387 --> 01:48:52.148
Okay, ich verwende

01:48:52.148 --> 01:48:53.027
immer nur den Standard-Copilot.

01:48:53.728 --> 01:48:56.167
Das ist eine sehr, sehr geile Extension

01:48:56.167 --> 01:48:56.827
noch dazu.

01:48:57.887 --> 01:48:59.927
Was ich bei Copilot gelesen habe,

01:49:00.827 --> 01:49:02.107
ist das folgende, wenn da

01:49:02.107 --> 01:49:03.767
ein Fehler auftritt, also angenommen, man

01:49:03.767 --> 01:49:06.087
nutzt halt Copilot in VS Code oder so,

01:49:06.967 --> 01:49:07.967
dann schickt

01:49:07.967 --> 01:49:37.947
und PyTest.

01:49:37.967 --> 01:50:07.947
und wie man das dann erlauben kann.

01:50:07.967 --> 01:50:09.667
in Italien.

01:50:09.887 --> 01:50:11.587
In Italien ist es komplett gesperrt worden.

01:50:12.367 --> 01:50:12.487
Ja.

01:50:13.787 --> 01:50:14.728
Jetzt ist es wieder frei.

01:50:14.728 --> 01:50:15.327
Jetzt ist es wieder frei.

01:50:15.967 --> 01:50:19.287
Aber das fand ich schon auch ein bisschen dreist von Open Air,

01:50:19.427 --> 01:50:20.688
dass sie da halt wirklich gar nichts zu sagen haben.

01:50:21.367 --> 01:50:22.148
Ich meine, sie können ja da,

01:50:22.287 --> 01:50:23.867
wenn man das sagt, was man da tut,

01:50:23.987 --> 01:50:25.487
kann man ja durchaus einiges machen,

01:50:25.607 --> 01:50:27.467
aber sie haben halt einfach gar nichts dazu gesagt.

01:50:28.767 --> 01:50:30.407
Wobei, das ist ein bisschen andersrum.

01:50:30.887 --> 01:50:32.148
Du musst die Story jetzt auch fertig erzählen.

01:50:32.247 --> 01:50:33.507
Man konnte die Story gar nicht verstehen. Entschuldigung.

01:50:33.867 --> 01:50:34.407
Welche Story?

01:50:35.247 --> 01:50:36.887
Dass sie da einfach gesperrt haben in Italien.

01:50:36.887 --> 01:50:39.228
Ich dachte, Italien hat sich überlegt, dass sie hier keinen Bock drauf haben.

01:50:39.267 --> 01:50:41.127
Nee, nee, nee, nee. Das ist eine europäische

01:50:41.127 --> 01:50:43.067
Geschichte. Das droht

01:50:43.067 --> 01:50:44.747
ja auch dann in anderen europäischen Ländern zu

01:50:44.747 --> 01:50:47.007
passieren, weil du musst halt,

01:50:47.087 --> 01:50:48.967
wenn du irgendwie Daten von Leuten speicherst oder damit

01:50:48.967 --> 01:50:51.027
irgendwas machst, musst du halt zumindest sagen,

01:50:51.087 --> 01:50:52.487
was du da tust und warum.

01:50:53.007 --> 01:50:54.688
Und das haben sie nicht gemacht. Und daher

01:50:54.688 --> 01:50:56.067
kann man sagen, okay,

01:50:57.787 --> 01:50:58.927
darfst du deine Produkte

01:50:58.927 --> 01:51:01.087
in der EU nicht anbieten und Italien hat das so ausgelegt,

01:51:01.167 --> 01:51:02.867
das kann jedes Land dann so auslegen,

01:51:02.947 --> 01:51:04.667
wie sie das möchten, dass kann

01:51:04.667 --> 01:51:05.947
das da niemand mehr drauf zugreifen.

01:51:05.947 --> 01:51:08.228
Ja gut, aber Artikel 6.1.f

01:51:08.228 --> 01:51:10.127
DSGVO zum Beispiel sagt, dass

01:51:10.127 --> 01:51:12.067
ein Anbieter eines Dienstes alle

01:51:12.067 --> 01:51:14.247
für den Vertragserfüllung relevanten Daten

01:51:14.247 --> 01:51:16.167
durchaus erheben darf. Ja, ja, ja, klar, aber

01:51:16.167 --> 01:51:18.067
du musst trotzdem

01:51:18.067 --> 01:51:20.127
sagen, was du da irgendwie machst und warum.

01:51:21.228 --> 01:51:22.367
Du darfst das schon, aber

01:51:22.367 --> 01:51:24.467
sie haben ja nicht mal was dazu

01:51:24.467 --> 01:51:26.307
gesagt und das machen sie jetzt und dann geht's

01:51:26.307 --> 01:51:28.107
wieder. Also insofern, aber

01:51:28.107 --> 01:51:30.148
ja, ich meine, na, so.

01:51:30.747 --> 01:51:31.807
Nee, ist halt...

01:51:31.807 --> 01:51:34.287
Wobei da ist es ein bisschen andersrum, also da

01:51:34.287 --> 01:51:35.907
nimmt sich ja OpenAI quasi

01:51:35.907 --> 01:51:38.067
den Datensatz Internet

01:51:38.067 --> 01:51:39.827
und lernt da drauf

01:51:39.827 --> 01:51:41.667
und falls sie damit was

01:51:41.667 --> 01:51:43.787
machen, was sie nicht dürfen, haben die ja das Problem.

01:51:44.327 --> 01:51:46.127
Bei Copilot ist es ja so ein bisschen

01:51:46.127 --> 01:51:48.207
andersrum, da ist ja der Anwender quasi

01:51:48.207 --> 01:51:49.507
dafür verantwortlich, also wenn

01:51:49.507 --> 01:51:52.267
der Anwender in der Firma sitzt und lädt jetzt Teile

01:51:52.267 --> 01:51:53.787
des Quellcodes der Firma

01:51:53.787 --> 01:51:56.307
irgendwo hoch, darf glaube

01:51:56.307 --> 01:51:57.887
ich der geneigte

01:51:57.887 --> 01:51:59.347
Mitarbeiter eigentlich auch nicht.

01:52:00.747 --> 01:52:01.927
Naja, ich sag mal so, wenn du über Git

01:52:01.927 --> 01:52:02.847
tappest, ist das eh wurscht, ne?

01:52:04.287 --> 01:52:06.567
Ja, wenn da eine Code da eh liegt, ja, klar.

01:52:08.047 --> 01:52:09.027
Aber ich meine,

01:52:09.107 --> 01:52:10.527
auch was, was Leute halt so bei

01:52:10.527 --> 01:52:12.747
ChatGPT oder so reinpacen, also ehrlich gesagt,

01:52:12.787 --> 01:52:14.607
ich pace da ja auch viel Code rein, also daher

01:52:14.607 --> 01:52:16.887
das ist halt

01:52:16.887 --> 01:52:18.127
auch ein Anwendungsfall

01:52:18.127 --> 01:52:20.927
und da ist wahrscheinlich auch vieles dabei, wo

01:52:20.927 --> 01:52:22.747
man als Firma ein Problem mit hätte, wenn Leute

01:52:22.747 --> 01:52:24.947
das halt machen, aber ja.

01:52:25.627 --> 01:52:26.787
Ja, aber als Firma, ganz ehrlich,

01:52:27.307 --> 01:52:28.947
gerade

01:52:28.947 --> 01:52:31.067
als Firma ist doch wohl ein berechtigtes

01:52:31.067 --> 01:52:32.007
Interesse daran,

01:52:32.007 --> 01:52:34.567
Produktivität und Effektivität zu haben

01:52:34.567 --> 01:52:36.587
und die ganzen Secrets, die irgendjemand

01:52:36.587 --> 01:52:37.767
damit preisgeben könnte,

01:52:38.247 --> 01:52:40.507
die Maschine dahinter, die fängt

01:52:40.507 --> 01:52:42.547
jetzt ja nicht an, individuell nach

01:52:42.547 --> 01:52:44.967
dir zu suchen und deine Secrets rauszupaldovern,

01:52:45.107 --> 01:52:46.527
um da selber einen Profit

01:52:46.527 --> 01:52:48.367
zu machen. Also auch

01:52:48.367 --> 01:52:49.527
als Firma würde ich das sagen.

01:52:50.747 --> 01:52:52.587
Ja, aber ich weiß

01:52:52.587 --> 01:52:54.547
jetzt nicht, ob ich meine patentierbaren

01:52:54.547 --> 01:52:55.387
Sachen da irgendwie

01:52:55.387 --> 01:52:58.527
lassen würde, aber ansonsten würde ich jetzt sagen,

01:52:58.648 --> 01:53:00.627
und es gibt halt auch zum Beispiel, wenn man

01:53:00.627 --> 01:53:02.827
das nicht möchte, als Firma ja durchaus

01:53:02.827 --> 01:53:04.947
Auftragsdatenverarbeitungsdinge,

01:53:05.047 --> 01:53:06.607
wenn man jetzt mit dem Microsoft Professional

01:53:06.607 --> 01:53:08.507
Vertrieb spricht, wo man dann

01:53:08.507 --> 01:53:10.427
APIs bekommt, wo die Daten halt nicht

01:53:10.427 --> 01:53:12.688
zurückgeflossen werden sollen und so weiter.

01:53:13.148 --> 01:53:14.648
Das heißt, dann meint man halt sowas, dann hat

01:53:14.648 --> 01:53:16.527
man halt einen anderen API-Endpunkt mit einem anderen API-Key,

01:53:16.887 --> 01:53:17.107
basta.

01:53:17.987 --> 01:53:20.327
Also ich weiß von einer Firma,

01:53:20.547 --> 01:53:22.367
da ist in den Firmenrichtlinien Copilot

01:53:22.367 --> 01:53:23.287
direkt verboten worden.

01:53:23.648 --> 01:53:25.767
Ja, das stellen sich auch immer alle ziemlich viel an.

01:53:26.847 --> 01:53:28.648
Also ich fand den

01:53:28.648 --> 01:53:30.607
Punkt auch, ich weiß gar nicht, wer das gesagt hatte,

01:53:30.627 --> 01:53:33.407
Ich glaube, das hast du in der letzten Episode gesagt.

01:53:33.688 --> 01:53:34.627
Bei Firmen ist ja sowieso

01:53:34.627 --> 01:53:35.447
an einer gewissen Größe,

01:53:36.167 --> 01:53:37.807
so effizient kannst du da gar nicht mehr sein.

01:53:38.027 --> 01:53:39.927
Ja, aber jeder Angst hat dann, dass du

01:53:39.927 --> 01:53:41.887
jedes einzelne Softwarepaket

01:53:41.887 --> 01:53:44.067
verifizieren musst von irgendeinem

01:53:44.067 --> 01:53:45.587
Audit-Team, was meins ganz besser ist, die

01:53:45.587 --> 01:53:48.228
OMSUS-Community und so. Und dann sitzen da zwei Männchen

01:53:48.228 --> 01:53:49.587
und machen dann ein Audit von

01:53:49.587 --> 01:53:51.987
60.000 JavaScript-Paketen oder sowas. Entschuldigung.

01:53:52.747 --> 01:53:52.887
Ja.

01:53:53.688 --> 01:53:55.228
Muss ja nicht alles sinnvoll sein, aber

01:53:55.228 --> 01:53:58.487
Worüber reden wir? Ist das eine ABM oder was?

01:53:58.487 --> 01:54:00.127
Also ganz ehrlich,

01:54:00.127 --> 01:54:30.107
und PyTest.

01:54:30.127 --> 01:54:32.367
Du hast noch einen Pick auch, Martin?

01:54:34.267 --> 01:54:36.527
Ja, ich hatte ja eine Episode mal gemacht

01:54:36.527 --> 01:54:37.327
zu PyPy.

01:54:38.287 --> 01:54:39.728
Ziemlich cooles Tool übrigens.

01:54:41.688 --> 01:54:42.167
Und

01:54:42.167 --> 01:54:44.387
ich habe noch so eine Ergänzung dazu

01:54:44.387 --> 01:54:46.487
quasi. Das nennt sich

01:54:46.487 --> 01:54:46.827
Numba.

01:54:48.767 --> 01:54:50.347
Das ist von den Entwicklern

01:54:50.347 --> 01:54:51.148
von Anaconda.

01:54:52.067 --> 01:54:54.487
Das ist die quasi Python-Distribution.

01:54:55.547 --> 01:54:55.927
Und

01:54:55.927 --> 01:54:58.487
das finde ich auch richtig genial.

01:55:00.127 --> 01:55:15.648
Mein großer Traum war, ich schreibe Python-Code, dann drücke ich einen Knopf und der übersetzt mir das nach C. Und im Prinzip macht das das eigentlich fast ohne Code-Anpassung.

01:55:15.648 --> 01:55:17.007
also alles was ich

01:55:17.007 --> 01:55:18.787
da machen muss ist

01:55:18.787 --> 01:55:21.247
ich mache einen Decorator

01:55:21.247 --> 01:55:22.607
über meine Funktion drüber

01:55:22.607 --> 01:55:25.487
und muss ein bisschen aufpassen

01:55:25.487 --> 01:55:26.228
mit den Eingaben

01:55:26.228 --> 01:55:29.287
über die Funktion drüber, muss ein bisschen

01:55:29.287 --> 01:55:31.267
aufpassen mit den Eingabe und Ausgabe

01:55:31.267 --> 01:55:33.648
Datentypen und dann ist es das

01:55:33.648 --> 01:55:35.627
dann erzeugt er

01:55:35.627 --> 01:55:37.347
mir quasi zur Laufzeit

01:55:37.347 --> 01:55:38.707
C-Code, cached die

01:55:38.707 --> 01:55:41.607
und führt die quasi mit C-Geschwindigkeit

01:55:41.607 --> 01:55:43.467
aus die Funktion, habe ich probiert

01:55:43.467 --> 01:55:44.747
funktioniert genial

01:55:44.747 --> 01:55:49.387
Ja, hast du auch schon mal

01:55:49.387 --> 01:55:50.287
das Python ausprobiert?

01:55:51.207 --> 01:55:52.827
Weil das ist mal so das, was so standardmäßig

01:55:52.827 --> 01:55:55.228
auch bei Scikit-Learn oder so verwendet wird

01:55:55.228 --> 01:55:56.907
Das Problem ist

01:55:56.907 --> 01:55:59.367
wenn das Projekt hinreichend groß wird

01:55:59.367 --> 01:56:00.967
dann habe ich

01:56:00.967 --> 01:56:02.707
also ich habe ja bei Python und bei

01:56:02.707 --> 01:56:05.107
PyPy nicht so richtig die Wahl

01:56:05.107 --> 01:56:06.627
dass ich jetzt nur

01:56:06.627 --> 01:56:09.047
einen bestimmten Teil meines Projektes damit

01:56:09.047 --> 01:56:09.947
ausführe

01:56:09.947 --> 01:56:13.087
Python ist einfach

01:56:13.087 --> 01:56:14.567
auch eine Art Python-Dialekt

01:56:14.567 --> 01:56:16.487
wo man aber dann zum Beispiel, wenn man es

01:56:16.487 --> 01:56:18.507
schneller haben will, die Typen mit dazu

01:56:18.507 --> 01:56:20.188
schreibt, ist halt ein bisschen, ist auch älter

01:56:20.188 --> 01:56:22.527
als die Spannung der Zone, deswegen. Ja, ja, ich erinnere mich, aber da

01:56:22.527 --> 01:56:24.527
musst du einiges für tun. Also da

01:56:24.527 --> 01:56:26.287
musst du eigentlich den ganzen Code umstellen.

01:56:26.688 --> 01:56:28.607
Ne, ne, ne, das kannst du für einzelne Funktionen

01:56:28.607 --> 01:56:30.347
auch machen oder für... Ja, aber

01:56:30.347 --> 01:56:32.607
wenn die Funktion schon da ist, musst du sie umstellen.

01:56:33.247 --> 01:56:34.067
Ja, das ist richtig.

01:56:34.427 --> 01:56:35.707
Stimmt, das musst du bei Nummer nicht unbedingt.

01:56:36.027 --> 01:56:38.507
Und bei Nummer brauchst du das nicht, da kannst du das lassen.

01:56:39.007 --> 01:56:39.847
Eigentlich wie es ist,

01:56:40.347 --> 01:56:42.547
Klammer auf, abgesehen von den Eingabe-

01:56:42.547 --> 01:56:44.228
und Ausgabedatentypen, die müssen

01:56:44.228 --> 01:56:46.307
ein spezielles Format haben, aber da ist

01:56:46.307 --> 01:56:48.387
eigentlich, also wenn du eine NumPy-Matrix zum Beispiel

01:56:48.387 --> 01:56:49.927
hast, die kannst du mehr oder weniger so lassen.

01:56:50.787 --> 01:56:52.607
Und dann, ja, ist es das.

01:56:52.947 --> 01:56:54.567
Dekorator drüber, Funktion ist ein C.

01:56:54.688 --> 01:56:56.347
Fertig. Und ich kann sie von Python aus

01:56:56.347 --> 01:56:58.148
genauso rufen wie vorher. Und die ist halt einfach

01:56:58.148 --> 01:56:58.807
tausendmal schneller.

01:56:59.707 --> 01:57:01.867
Ja, ja, ja, ja.

01:57:01.927 --> 01:57:05.567
Ja, cool.

01:57:06.567 --> 01:57:08.367
Da wir jetzt von dem Speed waren, hat es eben auch noch

01:57:08.367 --> 01:57:10.027
erwähnt, das wollte ich jetzt nochmal an das Ende packen,

01:57:10.107 --> 01:57:12.487
Polar IRS. Ich glaube, das ist auch

01:57:12.487 --> 01:57:14.367
cool. In dem Zusammenhang, wenn wir

01:57:14.367 --> 01:57:15.287
schon bei Speed wieder sind,

01:57:16.267 --> 01:57:18.267
so als DataFrame-Tool

01:57:18.267 --> 01:57:20.648
für Rust und Python irgendwie noch kombiniert.

01:57:22.867 --> 01:57:23.267
Oh, ja.

01:57:24.707 --> 01:57:25.987
Ja, vielleicht,

01:57:26.567 --> 01:57:28.387
ich höre immer, Python ist langsam.

01:57:30.228 --> 01:57:30.387
Ja.

01:57:30.688 --> 01:57:32.527
Also bis jetzt lag es immer an mir

01:57:32.527 --> 01:57:34.087
und nicht an Python.

01:57:34.087 --> 01:57:34.527
Ja.

01:57:35.167 --> 01:57:37.427
Und wenn es an mir lag, dann

01:57:37.427 --> 01:57:39.607
hatte ich auch eine Chance, das zu beheben.

01:57:40.188 --> 01:57:41.067
Also da gibt es zum Beispiel

01:57:41.067 --> 01:57:43.228
den Line Profiler

01:57:43.228 --> 01:57:44.787
für Python.

01:57:45.787 --> 01:57:46.847
Weiß nicht, ob ihr das kennt.

01:57:48.228 --> 01:57:49.507
Ist das nicht

01:57:49.507 --> 01:57:50.107
der eingebaute?

01:57:50.887 --> 01:57:53.567
Nee, ist nicht der eingebaute. Also Line Profiler

01:57:53.567 --> 01:57:54.927
macht im Prinzip folgendes.

01:57:55.107 --> 01:57:57.247
Ist auch wieder ein Dekorator, den schreibst du über deine

01:57:57.247 --> 01:57:59.188
Funktion drüber und der annotiert dir

01:57:59.188 --> 01:58:00.827
an jede Quellcode-Zeile,

01:58:01.327 --> 01:58:02.648
wie schnell oder langsam die war.

01:58:03.587 --> 01:58:04.587
Und dann kannst du quasi,

01:58:05.627 --> 01:58:07.307
also möglicherweise würde man

01:58:07.307 --> 01:58:09.347
das so verwenden, du findest erst mal die Funktion,

01:58:09.467 --> 01:58:10.907
die langsam ist, das kannst du mit den klassischen

01:58:10.907 --> 01:58:12.327
Tools machen.

01:58:13.487 --> 01:58:14.807
Also was man halt

01:58:14.807 --> 01:58:16.728
üblicherweise so nimmt, da springen ja hinten

01:58:16.728 --> 01:58:18.347
quasi die Funktionen raus, die langsam sind,

01:58:18.527 --> 01:58:19.907
wenn man es richtig bedient.

01:58:20.247 --> 01:58:23.047
Und dann gehst du quasi mit dem Lime Profiler

01:58:23.047 --> 01:58:25.007
in die Funktion rein und schaust dir an,

01:58:25.228 --> 01:58:26.487
was genau ist denn da langsam.

01:58:27.287 --> 01:58:29.027
Und so kommt man echt richtig schnell

01:58:29.027 --> 01:58:30.887
zu einer

01:58:30.887 --> 01:58:32.007
Performance-Analyse.

01:58:33.027 --> 01:58:34.947
Kann das dann beheben oder dann irgendwie

01:58:34.947 --> 01:58:36.827
auch doch ein C oder ein Mithnummer-Deprogrammter versehen.

01:58:37.067 --> 01:58:38.807
Hast du irgendeinen Lieblingsprofiler

01:58:38.807 --> 01:58:40.987
für die globale Sicht. Ich habe in letzter Zeit

01:58:40.987 --> 01:58:42.807
häufiger mal Eskalin verwendet, aber

01:58:42.807 --> 01:58:46.728
Nö, da nehme ich den Python-Standard.

01:58:47.507 --> 01:58:48.367
C-Profile.

01:58:49.067 --> 01:58:50.947
Genau. Funktioniert,

01:58:50.987 --> 01:58:52.767
ist nicht schön, bedienbar, aber funktioniert.

01:58:53.887 --> 01:58:54.967
So oft braucht man es

01:58:54.967 --> 01:58:55.688
ja auch zum Glück auch nicht.

01:58:56.787 --> 01:58:58.387
Ich bin auch kein Freund von

01:58:58.387 --> 01:58:59.807
Premature Optimization.

01:59:00.627 --> 01:59:02.648
Ich optimiere dann, wenn ich wirklich

01:59:02.648 --> 01:59:03.707
feststelle, es ist langsam.

01:59:04.567 --> 01:59:06.728
Für meinen Geschmack ist Python oft

01:59:06.728 --> 01:59:08.707
nicht langsam, aber wenn es eben doch mal

01:59:08.707 --> 01:59:10.507
langsam ist, dann fange ich an zu profilen

01:59:10.507 --> 01:59:12.427
und dann kriege ich das,

01:59:12.728 --> 01:59:14.787
bis jetzt habe ich es immer weggekriegt, das Problem.

01:59:16.447 --> 01:59:17.107
Klingt gut.

01:59:17.927 --> 01:59:18.767
Das verlege ich

01:59:18.767 --> 01:59:19.447
vielleicht auch nochmal.

01:59:20.167 --> 01:59:21.927
Letzten Mal einen ganz interessanten Artikel

01:59:21.927 --> 01:59:23.967
gelesen zum Thema

01:59:23.967 --> 01:59:25.507
Müten,

01:59:26.027 --> 01:59:27.307
Performance-Mythen.

01:59:27.867 --> 01:59:30.087
Das ist ein, jetzt bin ich den Namen nicht parat,

01:59:30.527 --> 01:59:32.587
ein Spieleentwickler, der da halt auch schon

01:59:32.587 --> 01:59:34.367
seit langer Zeit, der hat auch so einen YouTube-Channel,

01:59:34.467 --> 01:59:35.847
der irgendwie relativ beliebt ist.

01:59:38.148 --> 01:59:38.387
Und

01:59:38.387 --> 01:59:46.947
und der hat dann so einen Artikel geschrieben, wo er irgendwie so darüber rantet, was halt aus seiner Sicht die Leute immer sagen über Performance, was alles nicht stimmt.

01:59:47.767 --> 01:59:53.267
Und da sind so ein paar interessante Sachen dabei, wo ich dachte, oh, das höre ich sehr oft, solche Sachen und das ist wahrscheinlich Quatsch.

01:59:53.567 --> 01:59:59.887
So wird zum Beispiel sowas geschrieben wie, naja, die Leute sagen immer, man muss eigentlich nur die Hotspots irgendwie optimieren oder so, du machst...

01:59:59.887 --> 02:00:01.427
Erstmal keine Performance-Geschichten,

02:00:01.687 --> 02:00:03.247
entwickelst ohne Performance

02:00:03.247 --> 02:00:05.267
im Hinterkopf zu haben,

02:00:05.527 --> 02:00:07.167
eben keine premature optimization

02:00:07.167 --> 02:00:10.107
dein Code

02:00:10.107 --> 02:00:12.287
und dann, wenn es langsam ist, dann guckst du halt, wo es langsam ist

02:00:12.287 --> 02:00:13.947
und dann optimierst du das weg und dann meint er so, ja,

02:00:14.407 --> 02:00:16.227
also das funktioniert ja auch manchmal, aber manchmal

02:00:16.227 --> 02:00:17.847
halt auch nicht und gerade wenn du jetzt wirklich

02:00:17.847 --> 02:00:20.267
performance-kritische Sachen machst, dann kann es gut sein,

02:00:20.827 --> 02:00:22.207
dass dieser Ansatz überhaupt nicht funktioniert,

02:00:22.387 --> 02:00:24.307
weil du

02:00:25.707 --> 02:00:26.287
halt sozusagen

02:00:26.287 --> 02:00:27.967
dann rauskriegst, wenn du anguckst,

02:00:27.967 --> 02:00:30.367
und was sind die Teile deines Codes, die langsam sind?

02:00:30.727 --> 02:00:33.067
Naja, dann ist da halt irgendwie MemCopy oder keine Ahnung,

02:00:33.167 --> 02:00:34.827
da wird halt Hauptsprecher durch den Prozessor geschoben.

02:00:35.287 --> 02:00:36.347
Das ist das, was du willst optimieren.

02:00:36.487 --> 02:00:37.767
Das ist halt, da kannst du nichts mehr machen.

02:00:38.407 --> 02:00:41.107
Und da musst du eigentlich wieder ans Design deiner Applikationen.

02:00:41.107 --> 02:00:41.467
Da musst du umstrukturieren.

02:00:41.467 --> 02:00:45.227
Aber wenn ich von vornherein weiß, dass das performancekritisch ist,

02:00:45.567 --> 02:00:47.107
dann schreibe ich ganz anderen Code.

02:00:47.287 --> 02:00:49.507
Dann ist der Code komplett anders eigentlich.

02:00:50.307 --> 02:00:53.987
Also da kannst du vergessen, da musst du komplett das Design ändern.

02:00:54.627 --> 02:00:56.487
Genau, und dann kann es sein...

02:00:56.487 --> 02:00:57.527
Wie meintest du, John Carmack?

02:00:57.967 --> 02:01:31.512
und PyTest

02:01:31.532 --> 02:01:33.732
schlimmer als ein Rewrite, der dann

02:01:33.732 --> 02:01:35.552
wo man im Hinterkopf hat, dass das

02:01:35.552 --> 02:01:37.712
besser und besser ist. Und deswegen wird das

02:01:37.712 --> 02:01:39.712
in der Spielindustrie auch häufiger gemacht und es ist tatsächlich auch

02:01:39.712 --> 02:01:41.372
ab und zu erfolgreich. In anderen Bereichen

02:01:41.372 --> 02:01:42.612
sollte man das vielleicht nicht machen,

02:01:43.272 --> 02:01:45.712
aber da ist das wohl ab und zu

02:01:45.712 --> 02:01:47.232
irgendwie dann halt der beste Weg.

02:01:47.832 --> 02:01:48.312
Und ja,

02:01:49.292 --> 02:01:50.732
das ist alles nicht so einfach.

02:01:52.112 --> 02:01:53.112
Das ist gleich dein Schlusswort.

02:01:54.032 --> 02:01:55.712
Ja, kann man immer sagen. Hängt davon ab,

02:01:55.872 --> 02:01:57.432
kommt drauf an, ist alles nicht so einfach.

02:01:57.432 --> 02:02:01.552
Vielen Dank, dass wir hier zugehört haben

02:02:01.552 --> 02:02:03.092
Vielen Dank Martin, dass du da warst

02:02:03.092 --> 02:02:04.052
Gerne, danke

02:02:04.052 --> 02:02:07.412
Dann schaltet uns doch bald wieder rein

02:02:07.412 --> 02:02:09.532
Hallo at PythonPodcast.de

02:02:09.532 --> 02:02:10.652
Bis zum nächsten Mal

02:02:10.652 --> 02:02:11.152
Bis dann
