WEBVTT

00:00:00.260 --> 00:00:03.940
Ja, hallo, liebe Hörerinnen und Hörer. Willkommen beim Python-Podcast, Episode 51.

00:00:03.940 --> 00:00:07.200
Wir hatten eine relativ lange Sommerpause.

00:00:07.200 --> 00:00:08.460
Ja, ungeplant.

00:00:08.460 --> 00:00:11.000
Ungeplant. War ein bisschen was dazwischengekommen.

00:00:11.000 --> 00:00:13.000
Das haben uns auch schon viele Leute geschrieben.

00:00:13.000 --> 00:00:14.700
Wir loben Besserung, ja. Liebe Grüße.

00:00:14.700 --> 00:00:18.860
Genau. Danke für die Erinnerung, dass wir mal irgendwie wieder was machen sollen.

00:00:18.860 --> 00:00:21.840
Wir wollen heute über Environment Management und Packaging sprechen.

00:00:21.840 --> 00:00:24.280
Und wir haben die Annalena heute sogar. Hallo, Annalena.

00:00:24.280 --> 00:00:24.560
Ja, hallo.

00:00:24.560 --> 00:00:25.360
Hi, ihr beiden.

00:00:25.360 --> 00:00:28.140
Magst du kurz was über dich erzählen vielleicht? Vielleicht fangen wir so an.

00:00:28.140 --> 00:00:30.700
Ja, na klar. Genau, mein Name ist Annalena Popkes.

00:00:30.700 --> 00:00:34.900
Ich arbeite als Machine Learning Engineer bei einem deutschen Unternehmen, das nennt sich Innovex.

00:00:34.900 --> 00:00:37.980
Und bin da in verschiedenen Kundenprojekten unterwegs.

00:00:37.980 --> 00:00:41.120
Je nachdem, was der Kunde möchte, mache ich verschiedene Dinge.

00:00:41.120 --> 00:00:42.860
Manchmal auch reines Data Engineering.

00:00:42.860 --> 00:00:45.220
Jetzt gerade bin ich bei Bubble.

00:00:45.220 --> 00:00:50.260
Das ist ein Unternehmen, was Sprachen beibringt.

00:00:50.260 --> 00:00:52.120
Kennt ihr vielleicht auch schon.

00:00:52.120 --> 00:00:53.420
Habt ihr vielleicht selbst schon mal benutzt.

00:00:53.420 --> 00:00:56.460
Und ich arbeite da im Speech Recognition Team.

00:00:57.140 --> 00:01:06.460
Und helfe da dem Team dabei, ihre Software weiterzuentwickeln, produktiv zu nehmen und was da alles so dazukommt.

00:01:06.460 --> 00:01:07.380
Oh ja, sehr cool.

00:01:07.380 --> 00:01:09.280
Klingt echt total interessant.

00:01:09.280 --> 00:01:10.160
Ja, finde ich gut.

00:01:10.160 --> 00:01:11.400
Ist super spannend.

00:01:11.400 --> 00:01:18.820
Ja, ist auch ein ganz interessantes Unternehmen, finde ich, wenn man dann mal etwas mitarbeitet, was auch wirklich beim User Verwendung findet.

00:01:18.820 --> 00:01:25.040
Das ist sehr unterschiedlich, was man da für Kundenprojekte hat, was passiert mit dem Code, den man da so schreibt.

00:01:25.040 --> 00:01:26.960
Und das finde ich total...

00:01:27.140 --> 00:01:33.280
Rewarding, also, dass es einem viel zurückgibt, an etwas mitzuarbeiten, was man auch vielleicht selbst schon mal benutzt hat.

00:01:33.280 --> 00:01:35.460
Ja, stimmt, das ist gut.

00:01:35.460 --> 00:01:42.500
Und dabei bist du auch über Environment-Management-Packaging-Zeugs gestoßen oder gestolpert, oder ist das ein Hobby von dir?

00:01:42.500 --> 00:01:46.240
Nee, das war bei einem vorherigen Kundenprojekt.

00:01:46.240 --> 00:01:53.020
Da wurde ich gefragt, also Packaging ist ja sehr präsent, wenn man viel mit Python macht und dementsprechend ist mir das schon vorher begegnet.

00:01:53.020 --> 00:01:55.840
Aber ich habe mich da noch nie so wirklich reingearbeitet gehabt.

00:01:55.840 --> 00:01:57.120
Aber in einem vorherigen Kundenprojekt.

00:01:57.140 --> 00:02:00.860
Wurde ich dann mal gefragt, welches Packaging Tool sollen wir denn benutzen?

00:02:00.860 --> 00:02:02.420
Es gibt ja so viele.

00:02:02.420 --> 00:02:10.400
Und dann hatte ich angefangen, mich mal ein bisschen reinzulesen und dachte, boah, ich finde wirklich viele Blogartikel zu den einzelnen Tools.

00:02:10.400 --> 00:02:20.820
Aber ich finde nicht so wirklich einen Artikel, der die verschiedenen Tools zusammenfasst, mal kurz erklärt, was sie können, wozu sie geeignet sind und das Ganze vernünftig kategorisiert.

00:02:20.820 --> 00:02:26.020
Vor allem ohne diese persönliche Präferenz reinzubringen, die man ganz viel findet, die ich auch ganz viel...

00:02:26.020 --> 00:02:26.940
Ja.

00:02:26.940 --> 00:02:31.480
Unter Kollegen halt bemerkt habe, dass manche sagen, ja, Poetry auf keinen Fall will ich nicht benutzen.

00:02:31.480 --> 00:02:34.980
Die haben da mal so ein Release rausgebracht und der hat total viel kaputt gemacht.

00:02:34.980 --> 00:02:37.660
Und nee, das mache ich jetzt kategorisch nicht mehr.

00:02:37.660 --> 00:02:38.440
Ja, das sagt Jürgen auch.

00:02:38.440 --> 00:02:39.560
Ich benutze es noch.

00:02:39.560 --> 00:02:41.280
Wir hauen uns da im Karten.

00:02:41.280 --> 00:02:45.100
Und dementsprechend dachte ich dann, okay, jetzt wird es mal Zeit.

00:02:45.100 --> 00:02:51.620
Das ist eine gute Möglichkeit, mich da mal tiefer reinzuarbeiten, da auch einen Talk zuzumachen und einen Blog zu schreiben, einen Blogpost zu schreiben.

00:02:51.620 --> 00:02:52.460
Und das habe ich dann gemacht.

00:02:52.460 --> 00:02:55.040
Und das hat erstaunlich viel Anklang gefunden.

00:02:55.040 --> 00:02:56.860
Wobei, wenn man jetzt so darüber nachdenkt.

00:02:56.900 --> 00:03:00.200
Wahrscheinlich gar nicht so erstaunlich, weil das ein Problem ist, was so viele Leute betrifft.

00:03:00.200 --> 00:03:00.440
Ja.

00:03:00.440 --> 00:03:02.220
Und das Ganze...

00:03:02.220 --> 00:03:08.020
Also ich würde ausdrücken, das ist so das Hauptproblem, wenn ich halt auch einen Neuling oder sowas versuche, Python beizubringen oder irgendwie irgendwas zu zeigen.

00:03:08.020 --> 00:03:13.120
Das ist immer eine große Hürde, bis erstmal alles läuft und bis man irgendwelche Environments erstellen kann und so weiter.

00:03:13.120 --> 00:03:18.740
Und jetzt reden wir ja noch nicht über Packaging, aber einfach nur dieses Environment-Setup in Python ist so ein bisschen nervig.

00:03:18.740 --> 00:03:18.900
Ja.

00:03:18.900 --> 00:03:22.280
Und nicht nur ein bisschen, sondern sogar ziemlich nervig.

00:03:22.280 --> 00:03:26.400
Und ja, ich bin da auch tatsächlich da auf deine Meinung sehr gespannt hinterher.

00:03:26.400 --> 00:03:26.860
Auf deine Meinung.

00:03:26.860 --> 00:03:30.100
Persönliche Präferenz, was du sagen würdest, was so am besten funktioniert.

00:03:30.100 --> 00:03:34.320
Aber ich finde das cool, dass wir diese ganzen Tools haben und vielleicht können wir über die einzelnen Tools noch irgendwie reden.

00:03:34.320 --> 00:03:42.920
Normalerweise machen wir es ja immer so, dass wir einen großen News-Teil vorne haben, aber da wir halt seit Mai, glaube ich, keine Folge mehr hatten, da hat sich da so einiges eingesammelt.

00:03:42.920 --> 00:03:44.760
Ich würde sagen, das ist fast eine eigene Folge.

00:03:44.760 --> 00:03:47.100
Das müssen wir, glaube ich, an einer anderen Stelle nochmal so ein bisschen nachholen.

00:03:47.100 --> 00:03:49.280
Aber gut, so ein bisschen was können wir ja machen.

00:03:49.280 --> 00:03:50.080
Ach, doch so ein bisschen was.

00:03:50.080 --> 00:03:50.340
Ja.

00:03:50.340 --> 00:03:51.240
Na gut.

00:03:51.240 --> 00:03:53.240
Worüber willst du erzählen?

00:03:53.240 --> 00:03:53.900
Ich weiß es nicht.

00:03:53.900 --> 00:03:56.260
Einfach nur das, was mich in letzter Zeit so ein bisschen beschäftigt.

00:03:56.260 --> 00:03:56.820
Oder wo ich dachte...

00:03:56.820 --> 00:03:59.620
Okay, kann ich jetzt was zu sagen, weil es mich gerade betroffen hat?

00:03:59.620 --> 00:04:02.420
Zum Beispiel, es gibt irgendwie ja...

00:04:02.420 --> 00:04:06.320
Also, seit letztem Mal Pydentic Version 2 ist raus.

00:04:06.320 --> 00:04:06.500
Ah, ja, natürlich.

00:04:06.500 --> 00:04:08.140
Und jetzt inzwischen sogar 2.4.

00:04:08.140 --> 00:04:10.120
Wir haben ja auch die ganzen Europe-Python-News noch nicht gemacht.

00:04:10.120 --> 00:04:11.040
Ja, richtig.

00:04:11.040 --> 00:04:12.000
Eine ganze Menge.

00:04:12.000 --> 00:04:16.360
Und genau, da habe ich jetzt auch letztens ein Projekt umgestellt.

00:04:16.360 --> 00:04:20.060
Ich wollte es eigentlich nur updaten und dann hat das halt irgendwie nicht so gut funktioniert.

00:04:20.060 --> 00:04:26.780
An Pydentic 2 ist jetzt, dass dieses Rust-Core, das halt vorher Pydentic-Core war, also als Extra-Library jetzt mit drin ist, direkt in...

00:04:26.780 --> 00:04:27.780
Pydentic selbst, ja.

00:04:27.780 --> 00:04:29.480
Ja, genau.

00:04:29.480 --> 00:04:30.700
Das heißt jetzt auch schnell.

00:04:30.700 --> 00:04:31.720
Das ist jetzt...

00:04:31.720 --> 00:04:36.140
Das, was vorher langsam war, das ist das Hauptproblem, was Pydentic halt so hatte bei der Validierung, geht jetzt einigermaßen flott.

00:04:36.140 --> 00:04:37.360
Ja, sollte jetzt deutlich schneller gehen.

00:04:37.360 --> 00:04:38.300
Ja, ja, genau.

00:04:38.300 --> 00:04:44.900
Ja, das Problem ist halt, dass Objekte erzeugen halt, wenn man das rein in Python macht, sehr langsam ist.

00:04:44.900 --> 00:04:54.480
Wenn man jetzt irgendwie lange Listen von 10.000 irgendwie Einträgen in einem JSON-Ding hat, dann dauert das halt irgendwie, wenn man das in Pure Python macht, das alles zu validieren.

00:04:54.480 --> 00:04:56.020
Und in Rust geht das halt deutlich schneller.

00:04:56.740 --> 00:05:08.340
Und, ähm, ja, aber, äh, genau, also, ähm, ach so, das hatten wir auch noch nicht erwähnt, äh, ähm, es gibt jetzt eine Firma hinter Pydentic, äh, und die hat auch irgendwie, glaube ich, von Sequoia oder so, ordentlich Venture-Craft-Value bekommen.

00:05:08.340 --> 00:05:08.560
Mhm.

00:05:08.560 --> 00:05:09.960
Und die Entwicklung...

00:05:09.960 --> 00:05:11.300
Das habt ihr, glaube ich, erwähnt in der letzten Episode.

00:05:11.300 --> 00:05:12.340
Hatten wir schon erwähnt, ach so, gut.

00:05:12.340 --> 00:05:12.920
Kann sein.

00:05:12.920 --> 00:05:13.800
Habt ihr schon erwähnt, ja.

00:05:13.800 --> 00:05:14.040
Ja.

00:05:14.040 --> 00:05:20.600
Äh, okay, genau, aber die Entwicklung geht da jetzt auch deutlich schneller und, ähm, genau, das Update, das ich dann jetzt probiert habe, war aber nicht so reibungslos.

00:05:20.600 --> 00:05:22.600
Das war halt echt, das war richtig übel.

00:05:22.600 --> 00:05:24.220
Das hat deutlich länger gedauert, als ich so gedacht hätte.

00:05:26.740 --> 00:05:40.440
Ich meine, das ist halt auch so ein Ding, äh, das kann dann passieren, wenn man Dinge ändert, ne, da halt halt irgendwie, früher war es halt so, dass, wenn man, äh, bei einer, ähm, äh, bei so einem Feld gesagt hat, typing any, dann war das default-mäßig none.

00:05:40.440 --> 00:05:41.980
Mhm.

00:05:41.980 --> 00:05:44.520
Und, ähm, das ist es jetzt nicht mehr.

00:05:44.520 --> 00:05:49.560
Jetzt ist es halt, kriegt man einen Fehler und das sagt halt irgendwie, du hast da einen, äh, hast da einen Wert nicht gesetzt.

00:05:49.560 --> 00:05:56.480
Und dann drunter kommen aber die anderen Variablen und dann hatte ich das irgendwie falsch einsortiert und bin dann irgendwie falsch abgebucht.

00:05:56.740 --> 00:06:00.040
Und dann musste ich halt irgendwie, weil das, es hat sich auch noch ganz viel anderes Zeug geändert.

00:06:00.040 --> 00:06:03.900
Ich dachte so, welche Änderung hat das jetzt verursacht, dass ich da jetzt immer einen Fehler kriege?

00:06:03.900 --> 00:06:07.500
Und ich habe wirklich lange suchen müssen, bis ich das rausgekriegt habe, dass das der Grund war.

00:06:07.500 --> 00:06:09.100
Manche Sachen sind gemein, die beißen einen.

00:06:09.100 --> 00:06:12.640
Äh, ja, das war schon, dachte ich so, mhm, ja.

00:06:12.640 --> 00:06:17.600
Aber im Grunde ist das natürlich eine tolle Sache, dass das jetzt irgendwie alles irgendwie auch schnell funktioniert und so.

00:06:17.600 --> 00:06:18.580
Ja.

00:06:18.580 --> 00:06:24.120
Aber ich werde wahrscheinlich noch ein bisschen, bisschen brauchen, bis ich alle Sachen, die ich, wo ich Freidentik verwende, da umgezogen habe.

00:06:24.120 --> 00:06:26.260
Benutzt du das auch in Django?

00:06:26.740 --> 00:06:34.600
Ähm, ja, ich benutze es in Django-Projekten teilweise auch, wenn halt vor allen Dingen Daten von außen irgendwie kommen, um die halt zu validieren, verwende ich das halt.

00:06:34.600 --> 00:06:37.900
Also wenn es halt nicht über quasi Django REST-Framework geht.

00:06:37.900 --> 00:06:39.620
Genau, ich wollte gerade sagen, du hast keinen Django REST-Framework.

00:06:39.620 --> 00:06:49.000
Doch, also für, für, für, für so REST-Apps nehme ich normalerweise Django REST-Framework, aber manchmal kommen Daten ja auch von woanders und dann, dann nehme ich schon ein paar Identik.

00:06:49.000 --> 00:06:54.900
Aber da gab es ja auch ein paar News zu, ne? Ich glaube, REST-Framework wird irgendwann duplicated und nach Django reinwandern, irgendwie jetzt mit 5 sogar schon, dann.

00:06:54.900 --> 00:06:56.720
Ja, das weiß ich nicht.

00:06:56.740 --> 00:07:02.120
Das weiß ich noch nicht. Also die, die Kerngeschichten wandern in den, wandern in Django selber rein.

00:07:02.120 --> 00:07:17.740
Ähm, ja, also quasi das Encoding-Geschichten, also es gibt, ja, größere Teile, die in Django jetzt selber sind und dann könnte man halt sowas wie Django REST-Framework relativ leicht in Django selber reinpacken.

00:07:17.740 --> 00:07:24.240
Aber Django REST-Framework selber, glaube ich, kommt nicht, also mit allem, was so dranhängt, auch nicht rein, weil das ist halt einfach so riesig.

00:07:24.240 --> 00:07:25.920
Ja, vielleicht, aber natürlich keine Sache, ne?

00:07:26.740 --> 00:07:27.760
Dann kann ich dann gar nicht mehr, wenn man das einfach so reinpackt.

00:07:27.760 --> 00:07:30.040
Dann ist es auch nicht mehr großartig, genau. Das ist halt, ja.

00:07:30.040 --> 00:07:32.480
Insbesondere, wenn man dann diese Pidentic-Validation macht oder sowas, ja.

00:07:32.480 --> 00:07:37.380
Ja, ja. Ja, also das ist auch noch interessant. Also es gibt ja dieses Django Ninja oder so.

00:07:37.380 --> 00:07:39.420
Ja, okay, das ist komisch.

00:07:39.420 --> 00:07:40.020
Ja?

00:07:40.020 --> 00:07:40.960
Ja, also ich finde schon.

00:07:40.960 --> 00:07:44.540
Okay. Ja, das habe ich auch noch nicht verwendet, also müsste ich mal vielleicht.

00:07:44.540 --> 00:07:51.660
Ja, ansonsten, äh, was habe ich denn noch so? Ach ja, die LLM-Geschichte, das war ja die vorletzte Episode.

00:07:51.660 --> 00:07:52.380
Ja, ja.

00:07:52.380 --> 00:07:54.000
Da haben wir uns also quasi gerade mit beschäftigt.

00:07:54.000 --> 00:07:56.680
Die eskaliert auch immer noch so munter von sich.

00:07:56.740 --> 00:08:02.440
Und wird immer, äh, äh, da gibt es auch jede Menge Neuigkeiten. Kann man auch nicht alles abdecken, ist einfach so viel, was da passiert.

00:08:02.440 --> 00:08:10.560
Aber, äh, ne, ne Haupt-, ne, ne, äh, wichtige neuere, äh, neuere Geschichte, die da passiert, ist halt irgendwie, und das will ich mir unbedingt angucken, hab's noch nicht geschafft.

00:08:10.560 --> 00:08:22.320
Aber, was man jetzt machen kann, ist halt, äh, tatsächlich, äh, irgendwie mit, mit Lama 2, was halt jetzt so richtig offiziell irgendwie, ähm, dafür, äh, gedacht ist, dass man damit Dinge machen kann.

00:08:22.320 --> 00:08:26.720
Das kann man halt super feintunen, gerade die kleineren Modelle kann man super feintunen auf irgendwelche Problematiken.

00:08:26.740 --> 00:08:35.780
Und dann braucht man halt nur ein paar tausend Beispiele für irgendwas und kann da halt dann, ohne dass man die Daten zu OpenAI schickt oder sonst irgendwo hin, äh, irgendwie Dinge damit machen.

00:08:35.780 --> 00:08:36.780
Mit guten Ergebnissen.

00:08:36.780 --> 00:08:40.960
Mit sehr guten Ergebnissen. Es gibt ganz viele Leute, die davon total schwärmen und die sagen, das ist total super.

00:08:40.960 --> 00:08:47.260
Irgendwie, wenn du da in der Richtung irgendwas machen kannst, lass alles stehen und liegen und mach das, weil das ist halt so großartig.

00:08:47.260 --> 00:08:47.620
Ja.

00:08:47.620 --> 00:08:48.200
Ja, okay.

00:08:48.200 --> 00:08:49.120
Daher, ähm, ja.

00:08:49.120 --> 00:08:51.800
Hab ich mir auch schon gedacht und gedacht, nee, mach ich nicht, aber.

00:08:51.800 --> 00:08:52.120
Ja.

00:08:52.120 --> 00:08:54.020
Ich würd gern.

00:08:54.020 --> 00:08:55.040
Naja.

00:08:55.040 --> 00:08:55.120
Ja.

00:08:55.120 --> 00:08:56.740
Weißt du, was ich rausgekommen bin?

00:08:56.760 --> 00:08:59.500
Von dem, wofür man LLMs noch wunderbar benutzen kann, wo ich sehr überrascht war?

00:08:59.500 --> 00:09:00.800
Nee.

00:09:00.800 --> 00:09:01.080
Sag mal.

00:09:01.080 --> 00:09:01.920
Musiktipps.

00:09:01.920 --> 00:09:03.500
Musiktipps?

00:09:03.500 --> 00:09:03.760
Ja.

00:09:03.760 --> 00:09:04.060
Okay.

00:09:04.060 --> 00:09:04.680
Das fand ich hervorragend.

00:09:04.680 --> 00:09:07.340
Also, also, fast mit das Beste, was du hast.

00:09:07.340 --> 00:09:10.260
Du hörst irgendwas Schönes und gibst dann halt so das, was du magst.

00:09:10.260 --> 00:09:13.760
Aber als Kontext, wenn du sagst, hey, ich hör das und das gerne, hast du ein paar gute Tipps, was rauskommt.

00:09:13.760 --> 00:09:14.760
Also, ich fand die Tipps hervorragend.

00:09:14.760 --> 00:09:16.800
Ich hab so ein paar Sachen gefunden, die ich noch nicht kannte und so.

00:09:16.800 --> 00:09:17.760
Cool.

00:09:17.760 --> 00:09:19.900
Hab ich noch nicht verwendet für, aber klingt, äh, klingt gut.

00:09:19.900 --> 00:09:20.780
Ja, muss ich mal probieren.

00:09:21.120 --> 00:09:24.620
Ich glaube, dazu gab es tatsächlich sogar einen Talk genau mit der Topic bei Europython.

00:09:24.620 --> 00:09:24.920
Ach, echt?

00:09:24.920 --> 00:09:27.200
LLMs for Music Recommendation.

00:09:27.200 --> 00:09:27.660
Ja.

00:09:27.660 --> 00:09:28.320
Ach, witzig.

00:09:28.320 --> 00:09:29.020
Toll.

00:09:29.020 --> 00:09:29.640
Ich hab, ich hab's nicht gesehen.

00:09:29.640 --> 00:09:30.520
Ich dachte gerade, du hättest den gehört.

00:09:30.520 --> 00:09:31.580
Nein, hab ich tatsächlich nicht gesehen.

00:09:31.580 --> 00:09:32.640
Sonst hätte ich den auch jetzt empfohlen.

00:09:32.640 --> 00:09:34.020
Aber den hab ich tatsächlich verpasst.

00:09:34.020 --> 00:09:38.160
Die sind jetzt alle auf YouTube seit, seit einer Woche, glaube ich.

00:09:38.160 --> 00:09:38.800
Ah, gut.

00:09:38.800 --> 00:09:42.380
Okay, also auch noch, das musst du auf jeden Fall auch in die Show-Notes, ne?

00:09:42.380 --> 00:09:45.060
Dann können wir nochmal die Europython-Talks verlinken.

00:09:45.060 --> 00:09:46.060
Ja.

00:09:46.060 --> 00:09:48.140
Genau.

00:09:48.140 --> 00:09:51.020
Ansonsten, ja, äh, Postkarten.

00:09:51.120 --> 00:09:51.800
Das 16 ist raus.

00:09:51.800 --> 00:09:56.360
Ist jetzt zwar nicht so wirklich was mit Python zu tun, aber, äh, vielleicht, äh, ja, die

00:09:56.360 --> 00:10:00.260
meisten Leute, oder, dürften ja auch irgendwie den Datenbank verwenden und viele verwenden

00:10:00.260 --> 00:10:04.360
wahrscheinlich Postgres und da hab ich jetzt auch meine, meine ganzen Geschichten geupdatet

00:10:04.360 --> 00:10:06.360
und, äh, das ging auch problemlos.

00:10:06.360 --> 00:10:11.620
Also von, von 15 nach 16, wenn der PG-Upgrade einfach drüberlaufen lässt, das hat einfach

00:10:11.620 --> 00:10:12.780
immer so funktioniert, auch mit 14.

00:10:12.780 --> 00:10:15.240
Also es war ein sehr problemloses Update.

00:10:15.240 --> 00:10:15.920
Mhm.

00:10:15.920 --> 00:10:16.500
Für mich.

00:10:16.500 --> 00:10:17.600
Und, ähm, ja.

00:10:17.600 --> 00:10:19.800
Hat auch eine Menge nette Sachen drin.

00:10:19.800 --> 00:10:20.620
Boah.

00:10:21.120 --> 00:10:25.600
Also ansonsten, weiß nicht, habt, habt ihr vielleicht noch irgendwas, was euch einfällt,

00:10:25.600 --> 00:10:28.820
was man mal erwähnen könnte, was in letzter Zeit Interessantes passiert ist?

00:10:28.820 --> 00:10:34.900
Ich bekomme vor allem durch die Arbeit viel mit über die Large-Language-Modelle, aber

00:10:34.900 --> 00:10:37.440
du hast ja auch gerade so gesagt, das sprengt absolut den Rahmen.

00:10:37.440 --> 00:10:41.640
Wir haben da auch einen Channel zu bei der Arbeit, ähm, und da sind täglich mehrere

00:10:41.640 --> 00:10:46.700
Posts, also da kommt man überhaupt nicht hinterher, weder sich das alles anzulesen noch, also

00:10:46.700 --> 00:10:50.960
ich bekomme die großen Releases mit von den Modellen, aber darüber hinaus finde ich

00:10:50.960 --> 00:10:55.640
schon fast, könnte ich fast den halben Tag damit verbringen, Artikel zu lesen zu den

00:10:55.640 --> 00:10:57.180
verschiedenen Dingen, die da passieren.

00:10:57.180 --> 00:10:58.460
Ja, ja.

00:10:58.460 --> 00:10:59.780
Das ist halt mal so.

00:10:59.780 --> 00:11:04.440
Ja, ja, ist aber die Frage, was dann die richtige Strategie ist, ob man irgendwie dann mitmacht

00:11:04.440 --> 00:11:07.560
oder sagt, naja gut, jetzt warten wir erstmal ein paar Monate, bis sich das alles so ein

00:11:07.560 --> 00:11:12.360
bisschen gesettelt hat und dann die Sachen, die halt dann als sich als, äh, das wird

00:11:12.360 --> 00:11:17.760
bleiben oder es nicht so, äh, es nicht nur Hype irgendwie erwiesen haben, da, sich das

00:11:17.760 --> 00:11:18.540
dann nochmal anzugucken.

00:11:18.540 --> 00:11:19.920
Ich weiß es nicht.

00:11:19.920 --> 00:11:20.240
Ah.

00:11:20.800 --> 00:11:21.280
Schwierig.

00:11:21.280 --> 00:11:22.260
Schwierig.

00:11:22.260 --> 00:11:23.760
Ja.

00:11:23.760 --> 00:11:27.580
Äh, ja gut, aber ansonsten.

00:11:27.580 --> 00:11:30.800
Ja, ich würde, meine News sind alle so, gerade nicht so technisch, natürlich, deswegen

00:11:30.800 --> 00:11:32.240
skippen wir die für heute einfach mal.

00:11:32.240 --> 00:11:32.580
Okay.

00:11:32.580 --> 00:11:34.180
Jut, jut, jut.

00:11:34.180 --> 00:11:37.540
Ja, dann können wir ja eigentlich direkt zum Thema übergehen, nahtlos.

00:11:37.540 --> 00:11:39.280
Wollen wir mit Environment anfangen oder mit Packaging?

00:11:39.280 --> 00:11:40.340
Ich würde sagen Environment, oder?

00:11:40.340 --> 00:11:41.460
Ja.

00:11:41.460 --> 00:11:42.520
Hätte ich auch gesagt, ja.

00:11:42.520 --> 00:11:43.620
Okay.

00:11:43.620 --> 00:11:46.820
Ähm, wollt ihr auch über das Python Version Management reden?

00:11:46.820 --> 00:11:48.920
Das hatte ich auch als Kategorie noch mit aufgenommen.

00:11:48.920 --> 00:11:50.640
Ja, also Finte gehört auch dazu und das überschneidet sich.

00:11:50.640 --> 00:11:53.160
Das überschneidet sich ja teilweise auch, weil auch PyEnv ja Virtual Environments macht

00:11:53.160 --> 00:11:54.140
und so, wenn man, wenn man will.

00:11:54.140 --> 00:11:54.440
Ja.

00:11:54.440 --> 00:11:55.160
Ja.

00:11:55.160 --> 00:11:59.960
PyEnv ist vielleicht ein guter Anstieg, also weil ich würde tatsächlich mit PyEnv wahrscheinlich

00:11:59.960 --> 00:12:03.580
anfangen auf so einem System, um Python selber zu installieren.

00:12:03.580 --> 00:12:07.080
Ich würde das halt nicht irgendwie über die Website machen, sondern tatsächlich irgendwie

00:12:07.080 --> 00:12:12.440
versuchen, PyEnv irgendwie zu klonen und dann in den Pfad zu packen und dann halt verschiedene

00:12:12.440 --> 00:12:14.000
PyThons installieren zu können.

00:12:14.000 --> 00:12:18.220
Das funktioniert ja leider nicht so gut auf, auf Windows-Maschinen, sondern halt nur auf

00:12:18.220 --> 00:12:18.560
POSIX.

00:12:18.560 --> 00:12:20.480
Es gibt aber so ein Fork.

00:12:20.480 --> 00:12:24.520
Der das auch für Windows macht, der in den letzten Jahren so ein bisschen besser geworden

00:12:24.520 --> 00:12:27.820
ist und es ist jetzt einigermaßen benutzbar, aber es hat halt nicht so schöne Sachen auch

00:12:27.820 --> 00:12:32.060
drin wie Minikonda oder sowas, was ja bei der POSIX ganz gut funktioniert.

00:12:32.060 --> 00:12:34.060
Ich weiß nicht, ob ihr.

00:12:34.060 --> 00:12:38.100
Bin auch ganz froh, dass ich meistens mit einer Linux-Maschine arbeiten kann und nicht

00:12:38.100 --> 00:12:41.860
unbedingt auf Windows zurückgreifen muss, da ist es häufig ein bisschen leichter, alles

00:12:41.860 --> 00:12:42.860
aufzusetzen.

00:12:42.860 --> 00:12:44.820
Ja, also es ist in den letzten Jahren ein bisschen besser geworden.

00:12:44.820 --> 00:12:47.980
Ich muss das halt recht häufig machen, aber es geht mittlerweile.

00:12:47.980 --> 00:12:49.320
Also ja, ich weiß nicht.

00:12:49.320 --> 00:12:50.320
Vielleicht.

00:12:50.320 --> 00:12:51.320
Das geht ja auch an mit PyEnv.

00:12:51.320 --> 00:12:56.200
Also ich würde tatsächlich PyEnv installieren und dann mit PyEnv die Python-Version installieren,

00:12:56.200 --> 00:12:58.160
die das Projekt gerade haben will.

00:12:58.160 --> 00:12:59.160
Genau.

00:12:59.160 --> 00:13:03.860
Ich weiß auch gar nicht, ob viele Einsteiger bei eurem Podcast dabei sind.

00:13:03.860 --> 00:13:07.560
Also vielleicht können wir auch immer noch mal sagen, was die Tools überhaupt machen.

00:13:07.560 --> 00:13:08.560
Ja.

00:13:08.560 --> 00:13:09.560
So zur Vollständigkeit.

00:13:09.560 --> 00:13:10.560
Sonst sind sie alle wieder direkt aufgeschaltet.

00:13:10.560 --> 00:13:11.560
Oh ja.

00:13:11.560 --> 00:13:12.560
Das Feedback habe ich schon ein paar Mal bekommen.

00:13:12.560 --> 00:13:13.560
Das war aber ganz schön schwierig.

00:13:13.560 --> 00:13:14.560
Ja, genau.

00:13:14.560 --> 00:13:15.460
Also ich hatte am Anfang überlegt, als ich mich mit der Thematik der Art und Weise beschäftigt

00:13:15.460 --> 00:13:16.460
habe.

00:13:16.460 --> 00:13:17.460
Das war ganz schön schwierig, ja.

00:13:17.460 --> 00:13:18.460
Ja, genau.

00:13:18.460 --> 00:13:19.460
Also ich hatte am Anfang überlegt, als ich mich mit der Thematik der Art und Weise beschäftigt

00:13:19.460 --> 00:13:20.160
habe.

00:13:20.160 --> 00:13:21.160
Das war ganz schön schwierig, ja.

00:13:21.160 --> 00:13:22.160
Also ich hatte am Anfang überlegt, als ich mich mit der Thematik der Art und Weise beschäftigt

00:13:22.160 --> 00:13:23.160
habe.

00:13:23.160 --> 00:13:24.160
Also ich hatte am Anfang überlegt, als ich mich mit der Thematik der Art und Weise beschäftigt

00:13:24.160 --> 00:13:26.360
habe, ob es Kategorien gibt, weil bei Python gibt es eben unheimlich viele Tools, die alle

00:13:26.360 --> 00:13:31.140
verschiedene Dinge können und manche können mehrere Sachen und eine bestimmte Kategorie

00:13:31.140 --> 00:13:35.580
ist eben Python Version Management, sprich, dass man ein Tool hat, das einem erlaubt,

00:13:35.580 --> 00:13:39.660
verschiedene Python-Versionen herunterzuladen oder zu installieren, ohne dass man das manuell

00:13:39.660 --> 00:13:44.660
machen muss und dann, dass man eben auch leicht zwischen den Versionen wechseln kann.

00:13:44.660 --> 00:13:50.000
Und PyEnv ist so das bekannteste Tool, glaube ich, dafür und auch eines der wenigen Tools,

00:13:50.000 --> 00:13:56.300
das es wirklich macht, viele, die das, also zum Beispiel Rye ist so ein Multi-Purpose-Tool,

00:13:56.300 --> 00:14:02.500
was viele verschiedene Dinge kann, aber sonst die meisten können gut mit PyEnv interagieren,

00:14:02.500 --> 00:14:06.300
also man kann beides zusammen nutzen, aber PyEnv ist, glaube ich, so das Tool und auch

00:14:06.300 --> 00:14:10.840
ziemlich leicht zu benutzen, wenn man es erst mal installiert hat, gibt es einfache Befehle,

00:14:10.840 --> 00:14:12.660
womit man dann einfach spezifizieren kann.

00:14:12.660 --> 00:14:19.840
Ich möchte gerne Version 3.10.4 und dann installiert es die Version und man kann leicht

00:14:19.840 --> 00:14:22.300
zwischen der und anderen Versionen hin und her wechseln.

00:14:22.300 --> 00:14:31.140
Ja, also ich brauche es auch genau, also lokal, wenn ich irgendwie auf einer Entwicklungsmaschine

00:14:31.140 --> 00:14:36.340
unterwegs bin, da ist das halt etwas, was ich auch ständig brauche, weil viele, also

00:14:36.340 --> 00:14:40.680
ich arbeite ja auch für unterschiedliche Kunden mit unterschiedlichen Python-Versionen

00:14:40.680 --> 00:14:45.220
teilweise und wenn man halt ein Virtual Env mit einer bestimmten Python-Version haben

00:14:45.220 --> 00:14:47.960
möchte, dann ist halt PyEnv genau das, was man dann an der Stelle haben möchte.

00:14:47.960 --> 00:14:49.680
Ich glaube, es gibt noch ASDF zum Beispiel.

00:14:49.680 --> 00:14:55.480
Das macht das dann halt nicht nur für Python, sondern halt auch noch für quasi Node.js und

00:14:55.480 --> 00:14:57.240
für Ruby oder sowas.

00:14:57.240 --> 00:15:01.480
Keine Ahnung, habe ich dann nicht probiert, weil den Anwendungsfall habe ich so selten,

00:15:01.480 --> 00:15:02.860
dass ich das nicht brauche.

00:15:02.860 --> 00:15:09.440
Und genau, es macht halt auch so Dinge wie, also PyEnv macht auch noch so Sachen wie, man

00:15:09.440 --> 00:15:15.520
kann halt Minikonda, also es gibt ja auch so ganz unterschiedliche Python-Ökosysteme,

00:15:15.520 --> 00:15:19.520
also je nachdem, also wenn man im Data-Science-Umfeld unterwegs ist, da ist halt

00:15:19.520 --> 00:15:23.480
eher so Conda, das Tool, was man benutzt, um halt Applikigkeiten zu installieren und

00:15:23.480 --> 00:15:28.460
vielleicht will man halt dann eher so die Minikonda-Python-Version haben, was wieder

00:15:28.460 --> 00:15:32.280
was anderes ist als diese komplette Anaconda-Distribution, das habe ich auch schon ganz oft gesehen, dass

00:15:32.280 --> 00:15:36.060
Leute mit der anfangen und das dann halt für Sachen verwenden, wo ich denken würde, oh

00:15:36.060 --> 00:15:39.720
nein, da brauchst du eigentlich Minikonda und irgendwie ein Virtual Env oder so, kannst

00:15:39.720 --> 00:15:40.860
das komplette Ding, ist halt, ja.

00:15:40.860 --> 00:15:43.900
Das ist oft halt so ein Einstiegspunkt, weil das halt oft in der Data-Science-Welt irgendwie

00:15:43.900 --> 00:15:45.560
sehr empfohlen wird als Entry-Point.

00:15:45.560 --> 00:15:46.640
Ja, ja.

00:15:46.640 --> 00:15:49.360
Kann man mit PyEnv auch die ganzen Dialekte installieren?

00:15:49.360 --> 00:15:51.600
Also sowas wie A-Python oder H-Python oder sowas?

00:15:51.600 --> 00:16:00.360
Das weiß ich nicht, also PyPy geht, ich glaube, Logel geht, aber…

00:16:00.360 --> 00:16:02.980
Habe ich tatsächlich auch noch nie ausprobiert.

00:16:02.980 --> 00:16:04.320
Keine Ahnung.

00:16:04.320 --> 00:16:07.860
Ich habe auch gerade gedacht, dass so über Conda, Minikonda, Anaconda könnt ihr wahrscheinlich

00:16:07.860 --> 00:16:08.880
auch sogar eine ganze Semper-Art-Folge machen.

00:16:08.880 --> 00:16:13.840
Ja, wahrscheinlich, oh Gott, du musst nicht zu tief da abschweifen, weil, ja.

00:16:13.840 --> 00:16:19.160
Genau, ja, Conda ist ja wirklich so ein ganz eigenes Ökosystem, ein bisschen, wo man dann

00:16:19.200 --> 00:16:22.660
doch mal, das lohnt sich schon, finde ich, tiefer einzusteigen, damit man zumindest mal

00:16:22.660 --> 00:16:26.220
einmal versteht, was der Unterschied zwischen Conda, Anaconda, Minikonda und so weiter ist.

00:16:26.220 --> 00:16:28.860
Aber es ist schon wirklich ein riesengroßes Themengebiet.

00:16:28.860 --> 00:16:31.880
Vielleicht sagen wir das nochmal kurz, wenn wir schon jetzt bei Conda sind, dann bitte.

00:16:31.880 --> 00:16:35.480
Vielleicht haben wir das einmal so kurz so als Elevator.

00:16:35.480 --> 00:16:42.740
Ja, also aus meiner Sicht, der Hauptunterschied ist, dass beim Virtual Env, bei dem normalen

00:16:42.740 --> 00:16:47.460
Virtual Env in Python, da ist der Interpreter halt nicht mit dabei, sondern man verwendet

00:16:47.460 --> 00:16:49.040
halt alle Virtual Envs.

00:16:49.040 --> 00:16:52.320
Wir verwenden den gleichen Interpreter, die halt mit dem gleichen Interpreter erzeugt worden

00:16:52.320 --> 00:16:52.420
sind.

00:16:52.420 --> 00:16:55.120
Vielleicht nochmal ganz, ganz anstrengend, also ein Virtual Env ist tatsächlich eine

00:16:55.120 --> 00:16:59.920
virtuelle, erzeugte Umgebung für das Python, für dein eigenes Projekt.

00:16:59.920 --> 00:17:05.820
Ja, also es ist so ein bisschen Magie, dass man die Pfade umbiegt, aber das hat den Effekt,

00:17:05.820 --> 00:17:10.880
dass man alles, was man da drin, also wenn man jetzt irgendwas mit PIP-Install irgendwas,

00:17:10.880 --> 00:17:14.820
eine Abhängigkeit installiert, dass die halt nur in dem Environment tatsächlich installiert

00:17:14.820 --> 00:17:18.880
ist und nicht in allen, die man sonst irgendwie, also sonst halt nicht, sodass ich halt, wenn

00:17:18.880 --> 00:17:21.360
man jetzt mehrere Projekte hat, dann kommen die sich ja sonst in die Quere, wenn man halt

00:17:21.360 --> 00:17:29.140
in dem einen irgendwie, weiß ich nicht, Django 3 hat und im anderen Django 4, dann, die werden

00:17:29.140 --> 00:17:35.440
sozusagen im gleichen, ja, auf dem gleichen Isolationslevel, dann würde man ja quasi

00:17:35.440 --> 00:17:38.600
die Abhängigkeiten vom einen kaputt machen, wenn man im anderen was ändert und um das

00:17:38.600 --> 00:17:41.400
voneinander zu isolieren, nimmt man halt Virtual Envs, üblicherweise.

00:17:41.400 --> 00:17:48.760
Und ja, das ist halt sozusagen, Virtual Env ist so der, die leichtgewichtigste Art von

00:17:48.760 --> 00:17:52.040
Isolation, weil der Interpreter ist, wenn man jetzt zwei unterschiedliche Projekte mit

00:17:52.040 --> 00:17:56.500
zwei unterschiedlichen Virtual Envs hat, ist man halt noch gleich, aber die Pakete, die

00:17:56.500 --> 00:17:57.080
installiert sind, sind halt gleich.

00:17:57.080 --> 00:18:00.060
Genau, das ist ja auch ein Bild, ne, Python-M, Venv und dann Sachen.

00:18:00.060 --> 00:18:04.300
Genau, bei Conda ist das anders, da ist der Interpreter tatsächlich mit dabei, das heißt,

00:18:04.300 --> 00:18:09.080
auch die Interpreter sind voneinander getrennt und man kann mit Conda nicht nur Python-Pakete

00:18:09.080 --> 00:18:14.140
installieren oder Python-Reels, sondern man kann halt auch andere Geschichten installieren,

00:18:14.140 --> 00:18:17.160
das heißt, man kann zum Beispiel, das ist halt, deswegen ist das auch bei Data Science

00:18:17.160 --> 00:18:21.220
immer so ein, so ein, so ein, aber das braucht man halt einfach häufig, häufig hat man

00:18:21.220 --> 00:18:25.200
halt nicht so einen direkten Zugang zu den Maschinen, auf denen man irgendwie Dinge macht

00:18:25.200 --> 00:18:28.360
und dann kann es schon mal sein, dass man dann eine alte LibC hat oder sonst irgendwas

00:18:28.360 --> 00:18:33.940
und, oder alte Bibliotheken, die man nicht verwenden möchte und man kommt halt, man

00:18:33.940 --> 00:18:38.040
hat ja gar nicht die Berechtigung, das sozusagen auf Systemlevel zu ändern und dann kann man

00:18:38.040 --> 00:18:42.200
das mit Conda aber meistens schon irgendwie hinkriegen, dass man das halt dann, dass man

00:18:42.200 --> 00:18:47.140
dann halt eine eigene Grundlagenbibliothek irgendwie mit installiert und die dann verwendet,

00:18:47.140 --> 00:18:51.080
wird, statt dem, was auf dem System drauf ist, das geht mit Conda, das geht mit PIP nicht

00:18:51.080 --> 00:18:57.580
und daher ist das halt etwas, was man halt, wenn man diese Probleme hat, dann, also wenn

00:18:57.580 --> 00:19:01.060
man Webentwicklung macht, hat man diese Probleme normalerweise nicht, aber bei Data Science

00:19:01.060 --> 00:19:04.920
kann das durchaus schon mal vorkommen und dann ist Conda da einfach das Ding, womit

00:19:04.920 --> 00:19:06.520
man Sachen hinkriegt, die dann mit PIP nicht gehen.

00:19:06.520 --> 00:19:09.520
Ja, da sind wir schon direkt drin, also es gibt ja PIP, was macht PIP?

00:19:09.520 --> 00:19:12.040
Pakete von API installieren?

00:19:12.040 --> 00:19:17.120
Ja, genau, vom Cheese-Shop und ja.

00:19:17.120 --> 00:19:21.260
Und Conda installiert jetzt auch irgendwie externe Binaries noch und die gar nicht Python

00:19:21.260 --> 00:19:26.420
sind und so und da gibt es noch ein anderes Tool für, das man häufiger nutzt, oder?

00:19:26.420 --> 00:19:31.120
Noch eine Isolationsschicht weiter, oder noch weiter isoliert, also ein Tool, also ich würde

00:19:31.120 --> 00:19:32.580
sagen, das nächste Tool in der Reihe wäre halt Docker.

00:19:32.580 --> 00:19:33.980
Oder PIPX.

00:19:33.980 --> 00:19:40.220
PIPX macht das gleich wie PIP, nur das ist halt für das, was du installierst, ein eigenes

00:19:40.220 --> 00:19:41.540
Virtual Env erzeugt direkt.

00:19:41.540 --> 00:19:47.100
Ja, oder es macht aber auch externe Sachen, also Sachen, die sich auf PIP einlegen und

00:19:47.100 --> 00:19:47.920
da überziehen kannst.

00:19:47.920 --> 00:19:48.700
Ja, okay, gut, das wusste ich gar nicht.

00:19:48.700 --> 00:19:54.260
Ich habe gerade noch überlegt, vielleicht noch einmal zum Anaconda und Miniconda, die

00:19:54.260 --> 00:19:58.760
Namen sagen das ja schon so ein bisschen, dass Anaconda wirklich riesig ist, das nimmt

00:19:58.760 --> 00:20:03.460
auch unheimlich viel Speicherplatz ein, weil super viele Python-Packages, wenn man Anaconda

00:20:03.460 --> 00:20:07.320
installiert, kommt das mit Python, dann ist Conda dabei, was ja der Package-Manager ist

00:20:07.320 --> 00:20:14.680
von dieser Conda-Welt und aber auch super viele Packages, die man gar nicht unbedingt

00:20:14.680 --> 00:20:16.760
braucht und dementsprechend, wenn man...

00:20:17.100 --> 00:20:20.920
jetzt nichts dagegen hat, die Packages, die man braucht wirklich selbst zu installieren

00:20:20.920 --> 00:20:24.580
und auch nicht unbedingt so viel freien Speicher hat, dann ist Miniconda eigentlich immer eine

00:20:24.580 --> 00:20:30.300
gute Variante, was mit Python kommt, schon mit einer Version und eben mit Conda, mit

00:20:30.300 --> 00:20:36.140
dem Package-Manager, sodass man die Pakete dann installieren kann, die aber von dem Conda-Index

00:20:36.140 --> 00:20:37.140
kommen, dann nicht von PyPI.

00:20:37.140 --> 00:20:42.860
Ja, ja, also ich denke, wenn man jetzt halt noch härter isolieren will als mit Conda,

00:20:42.860 --> 00:20:47.080
dann wäre halt Docker das Ding, was man auch verwenden kann, was halt viele benutzen,

00:20:47.080 --> 00:20:48.080
ja.

00:20:48.080 --> 00:20:52.020
Ja, das ist halt langsam, aber ich finde Conda so ein bisschen intrusiv, weil Conda relativ

00:20:52.020 --> 00:20:58.840
hart immer den Pfad direkt angreift, zumindest auf ein System und dann, ja, muss man immer

00:20:58.840 --> 00:20:59.840
so ein bisschen aufpassen.

00:20:59.840 --> 00:21:00.840
Ich glaube, also...

00:21:00.840 --> 00:21:01.840
Ja, muss man bei all diesen Dingen...

00:21:01.840 --> 00:21:05.320
Ja, generell, der Pfad ist immer so das, wofür viele Anfänger halt drüber stolpern,

00:21:05.320 --> 00:21:08.300
wenn halt irgendwie im Pfad Dinge in der falschen Reihenfolge gesetzt sind und dann halt nicht

00:21:08.300 --> 00:21:11.800
das Python läuft, was wir eigentlich denken, was laufen sollte und sowas, das ist so ein

00:21:11.800 --> 00:21:12.800
bisschen hampelig.

00:21:12.800 --> 00:21:16.620
Ja, ich habe auch mit Conda also anfangs immer angefangen, weil ich es praktisch fand, weil

00:21:16.620 --> 00:21:23.900
so viel schon damit kam, aber mit der Zeit habe ich auch dazu gewechselt, die Python-Version

00:21:23.900 --> 00:21:28.940
selbst zu installieren und nicht mehr auf Conda zurückzugreifen, auch weil ich das teilweise

00:21:28.940 --> 00:21:32.620
verwirrend fand, dann manche Packages kann man gut mit Conda installieren, andere wieder

00:21:32.620 --> 00:21:33.620
nicht.

00:21:33.620 --> 00:21:38.420
Und dann fand ich es tatsächlich leichter, langfristig einfach die Dinge mit pip zu machen.

00:21:38.420 --> 00:21:42.920
Aber ich weiß, dass viele Conda, vor allem wenn sie jetzt nicht aus dem Computer-Science-Bereich

00:21:42.920 --> 00:21:44.800
kommen, doch recht hilfreich finden.

00:21:44.800 --> 00:21:45.800
Mhm.

00:21:45.800 --> 00:21:46.600
Ja.

00:21:46.600 --> 00:21:48.280
Und ich weiß, dass die Leute, die mit pip auch die richtigen Build-Tools halt irgendwie

00:21:48.280 --> 00:21:51.820
noch installiert haben als Dependencies und je nachdem, was für Dependencies dabei sind,

00:21:51.820 --> 00:21:56.200
damit das gebaut werden kann, brauchen halt, weiß ich nicht, von C-Libraries über Haskell

00:21:56.200 --> 00:22:00.060
oder sowas und das halt manchmal so ein bisschen anstrengend sein kann, wenn man nicht weiß,

00:22:00.060 --> 00:22:01.060
was da passiert.

00:22:01.060 --> 00:22:04.780
Ja, das hat alles so seine Tücken.

00:22:04.780 --> 00:22:07.960
Ja, es ist leider kompliziert.

00:22:07.960 --> 00:22:11.600
Ich weiß auch nicht, ich glaube nicht, dass man da, ich würde sagen, immer wenn jemand

00:22:11.600 --> 00:22:14.880
fragt, ja, was soll ich denn nehmen, dann muss man eigentlich immer antworten, ja, hängt

00:22:14.880 --> 00:22:16.580
davon ab, was man macht.

00:22:16.580 --> 00:22:20.280
Und dann kann ich, ja, und das ist natürlich so ein bisschen eine doofe Situation, weil

00:22:20.280 --> 00:22:22.220
muss man lange erklären und so.

00:22:22.220 --> 00:22:23.220
Ja.

00:22:23.220 --> 00:22:26.820
Ja, häufig finde ich es auch hilfreich, also ich arbeite ja immer an verschiedenen Kundenprojekten,

00:22:26.820 --> 00:22:30.840
dementsprechend auch in verschiedenen Teams, dass die Teams sich ja häufig auch auf eine

00:22:30.840 --> 00:22:33.840
Lösung einigen, sodass sie sich dann gegenseitig helfen können, dass dann nicht jeder sein

00:22:33.840 --> 00:22:37.720
eigenes Setup hat, sondern dass sie sich auch vielleicht auf einen Editor einigen, den dann

00:22:37.720 --> 00:22:41.600
alle ähnlich aufsetzen können, das ist mir schon häufiger begegnet.

00:22:41.600 --> 00:22:46.560
Also da würde ich sagen, da gibt es immer große Widerstände, wenn man sich auf einen

00:22:46.560 --> 00:22:47.560
Editor einigen kann.

00:22:47.560 --> 00:22:50.080
Also es ist ganz gut, wenn die Sachen editoragnostisch funktionieren, also.

00:22:50.080 --> 00:22:53.800
Ja, das stimmt, aber manchmal kann es auch ganz hilfreich sein, also ich finde, es kommt,

00:22:53.800 --> 00:22:54.800
also es kommt wirklich sehr auf die Kundenprojekte auf.

00:22:54.800 --> 00:22:57.860
Ja, solange alle Leute das so machen, wie ich das so richtig halte, ist das natürlich

00:22:57.860 --> 00:22:58.860
so.

00:22:58.860 --> 00:22:59.860
Ja.

00:22:59.860 --> 00:23:00.860
Ja.

00:23:00.860 --> 00:23:01.860
Ja, ja.

00:23:01.860 --> 00:23:02.860
Genau.

00:23:02.860 --> 00:23:03.860
Wo waren wir denn überhaupt?

00:23:03.860 --> 00:23:04.860
Genau.

00:23:04.860 --> 00:23:09.000
Wir haben Python installiert und wollen jetzt halt ein Environment haben und dann gibt es

00:23:09.000 --> 00:23:11.300
halt verschiedene Sachen, wie man das macht und wir haben jetzt gerade.

00:23:11.300 --> 00:23:16.200
Also was ich gerne noch zu Python sagen würde, also ich benutze das halt für Entwicklungsmaschinen,

00:23:16.200 --> 00:23:16.540
ne.

00:23:16.540 --> 00:23:19.740
Da habe ich halt die Python Version, produktiv mache ich das eigentlich nicht, also nicht,

00:23:19.740 --> 00:23:23.460
wenn ich es unter Kontrolle habe, wenn andere Leute das machen, die machen manchmal auch

00:23:23.460 --> 00:23:26.460
andere Sachen, ich habe auch schon mal Python verwendet, um halt dann auf Produktivmaschinen

00:23:26.460 --> 00:23:28.230
Maschinen eine Python-Version zu installieren

00:23:28.230 --> 00:23:30.190
oder so, aber das mache ich jetzt eigentlich

00:23:30.190 --> 00:23:32.050
nicht mehr, sondern ich installiere da hart,

00:23:32.050 --> 00:23:34.170
ich kompiliere Python. Also, das ist auch so was.

00:23:34.170 --> 00:23:36.170
Hätte ich nicht gedacht. Also, wenn mir jemand früher

00:23:36.170 --> 00:23:38.150
gesagt hätte, also, in

00:23:38.150 --> 00:23:40.150
zehn Jahren, weißt du, wie du da Python installieren wirst?

00:23:40.150 --> 00:23:41.910
Du wirst es runterladen und auf der Maschine

00:23:41.910 --> 00:23:44.130
kompilieren. Ich dachte so, nee, das

00:23:44.130 --> 00:23:46.070
kann nicht sein. Doch, ist aber so.

00:23:46.070 --> 00:23:48.210
Also, das ist tatsächlich die von mir momentan

00:23:48.210 --> 00:23:50.130
präferierte Art, Python

00:23:50.130 --> 00:23:52.110
auf ein Produktivsystem zu installieren, ist halt

00:23:52.110 --> 00:23:53.670
selber zu kompilieren.

00:23:53.670 --> 00:23:55.630
Postcode und bauen, okay.

00:23:56.450 --> 00:23:57.590
Und auch nicht Python.

00:23:57.590 --> 00:23:59.950
Ich habe Python auch selten in Kundenprojekten

00:23:59.950 --> 00:24:01.810
benutzt, aber wenn man es mal ausprobieren

00:24:01.810 --> 00:24:03.390
möchte, finde ich das auch ganz

00:24:03.390 --> 00:24:05.710
nett, sich einfach mal die neueste Python-Version

00:24:05.710 --> 00:24:07.590
runterzuladen damit. Dann kann man das

00:24:07.590 --> 00:24:09.630
Tool mal ausprobieren und dann mal gucken, was

00:24:09.630 --> 00:24:11.070
die neue Python-Version so

00:24:11.070 --> 00:24:13.330
besonders macht oder mitbringt.

00:24:13.330 --> 00:24:15.550
Beta-Version oder Release-Kandidates oder so, das ist immer

00:24:15.550 --> 00:24:16.450
sehr nett dafür. Genau.

00:24:16.450 --> 00:24:19.390
Ich überlege gerade, ob ich das cool finde, dass ich das selber

00:24:19.390 --> 00:24:20.690
kompiliere im Produktivsystem.

00:24:20.690 --> 00:24:22.950
Warum nicht Python für ein Produktivsystem?

00:24:22.950 --> 00:24:24.690
Naja, deswegen, weil ich,

00:24:24.690 --> 00:24:26.430
der Grund, warum ich damit dann aufgehört habe,

00:24:26.450 --> 00:24:28.310
ist, dass ich dann irgendwie

00:24:28.310 --> 00:24:30.610
nach längerer Zeit gemerkt habe, dass manche Projekte

00:24:30.610 --> 00:24:32.250
halt eine alte Python-Version

00:24:32.250 --> 00:24:33.070
verwendet haben,

00:24:33.070 --> 00:24:36.550
wo ich das gar nicht mehr gedacht hätte, dass sie das tun.

00:24:36.550 --> 00:24:38.510
Und das aber alles weiter funktioniert hat.

00:24:38.510 --> 00:24:40.390
Und ich das aber gar nicht wollte.

00:24:40.390 --> 00:24:42.290
Und dann habe ich gesagt,

00:24:42.290 --> 00:24:44.450
ah, ist mir doch lieber, dass halt,

00:24:44.450 --> 00:24:46.450
weil ich hätte sowieso gerne

00:24:46.450 --> 00:24:48.150
immer die gleichen Python-Versionen für alle.

00:24:48.150 --> 00:24:50.290
Aber den Fall, dass ich das unterscheiden will,

00:24:50.290 --> 00:24:52.210
den habe ich gar nicht. Aber es kann ja mal sein,

00:24:52.210 --> 00:24:54.190
dass du irgendwie so eine harte obere Schranke hast,

00:24:54.190 --> 00:24:56.170
weil irgendein Projekt auf eine völlig veraltete

00:24:56.170 --> 00:24:58.150
Library dependet, die halt schade ist, aber die halt

00:24:58.150 --> 00:24:59.970
da irgendwie jetzt drin hängt. Und jetzt musst du halt

00:24:59.970 --> 00:25:01.450
eine alte Version nehmen. Und dann...

00:25:01.450 --> 00:25:03.270
Ja, passiert bei meinen Sachen nie.

00:25:03.270 --> 00:25:06.310
Okay, ja, okay. Also ich habe so ein paar

00:25:06.310 --> 00:25:07.630
Kunden, geht das so? Ja, ja, klar.

00:25:07.630 --> 00:25:10.290
Ja, also der Vorteil von PyInf ist halt,

00:25:10.290 --> 00:25:12.210
ich kann halt einfach auch die Version einfach dann installieren

00:25:12.210 --> 00:25:14.110
und wenn in meiner Production Pipeline

00:25:14.110 --> 00:25:16.410
PyInf halt drin ist, dann ist das halt ein leichtes

00:25:16.410 --> 00:25:18.190
mal eben da auch mehrere Projekte

00:25:18.190 --> 00:25:20.270
mit unterschiedlichen Python-Versionen auf einem Produktivsystem

00:25:20.270 --> 00:25:22.190
laufen zu haben. Was halt, wenn ich das alles selber

00:25:22.190 --> 00:25:23.770
kompilieren muss, wieder Hassel ist,

00:25:23.770 --> 00:25:26.130
muss ich das alles selber konfigurieren. Das ist ja genau das,

00:25:26.130 --> 00:25:27.450
warum ich ja solche Tools mit möchte.

00:25:27.450 --> 00:25:28.830
Ja, siehste? Kommt drauf an.

00:25:28.830 --> 00:25:31.850
Ja, leider.

00:25:31.850 --> 00:25:34.110
Tja, ja.

00:25:34.110 --> 00:25:35.890
Ja, also...

00:25:35.890 --> 00:25:38.090
Da wären wir bei der Hoffnung, dass es irgendwann das eine

00:25:38.090 --> 00:25:39.430
Tool gibt, was alles macht. Ja.

00:25:39.430 --> 00:25:41.670
Sodass man dann nicht mehr diskutieren muss.

00:25:41.670 --> 00:25:44.110
Da gibt es ja gerade tolle Versuche drin, das zu lösen

00:25:44.110 --> 00:25:46.090
irgendwie, ne? Also man hört immer

00:25:46.090 --> 00:25:48.050
Rust an der Stelle und ich würde auch sagen, dass tatsächlich

00:25:48.050 --> 00:25:49.410
vielleicht gar nicht so eine doofe Idee ist.

00:25:49.410 --> 00:25:51.810
Ich hätte das gerne, dass Python selber das so irgendwie anbietet.

00:25:51.810 --> 00:25:53.930
Fände ich irgendwie cool, weil diese ganzen Tools,

00:25:53.930 --> 00:25:56.090
die es von außen gibt, die sind alle so...

00:25:56.090 --> 00:25:58.010
Also du hast eben Rye erwähnt, das ist das

00:25:58.010 --> 00:25:59.930
Tool von Armin Runacher, was auch in Rust geschrieben ist,

00:25:59.930 --> 00:26:02.010
der jetzt für Rust macht, dass so seine Opinion

00:26:02.010 --> 00:26:03.790
ist, wie man so Projekte ein...

00:26:03.790 --> 00:26:05.910
neu baut. Ehrlicherweise,

00:26:05.910 --> 00:26:07.450
also ich bin da so ein bisschen anderer Meinung,

00:26:07.450 --> 00:26:09.790
wie man das richtig machen würde. Also ich mache es anders,

00:26:09.790 --> 00:26:11.990
mein Taste ist anders. Aber das ist eigentlich

00:26:11.990 --> 00:26:14.090
ja so was, was es halt...

00:26:14.090 --> 00:26:14.890
Ja, was man halt will.

00:26:14.890 --> 00:26:17.810
Du hast vielleicht noch den großen Überblick von Tools,

00:26:17.810 --> 00:26:18.790
die man dafür verwenden kann.

00:26:18.790 --> 00:26:21.670
Ja, genau. Also

00:26:21.670 --> 00:26:23.810
bei Environment Management vielleicht nochmal wieder

00:26:23.810 --> 00:26:25.970
als Einführung, falls Leute dabei sind, die

00:26:26.050 --> 00:26:27.970
da noch nicht sich so

00:26:27.970 --> 00:26:29.910
gut mit auskennen. Also wenn man beispielsweise an

00:26:29.910 --> 00:26:31.950
mehreren Projekten gleichzeitig arbeitet und

00:26:31.950 --> 00:26:34.010
dann kann das immer mal wieder

00:26:34.010 --> 00:26:36.070
vorkommen, dass Projekte das gleiche Package brauchen,

00:26:36.070 --> 00:26:38.090
aber in einer anderen Version. Und man möchte die Packages

00:26:38.090 --> 00:26:39.990
eigentlich nicht direkt auf der Maschine mit

00:26:39.990 --> 00:26:40.870
den

00:26:40.870 --> 00:26:44.290
nativen Dingen installieren,

00:26:44.290 --> 00:26:45.790
sondern man... Es ist immer

00:26:45.790 --> 00:26:47.870
ganz schön, wenn man das isolieren kann. Dann kann man alle

00:26:47.870 --> 00:26:49.610
Dependencies installieren, die man für das

00:26:49.610 --> 00:26:52.070
Projekt braucht, ohne dass man irgendwas anderes kaputt

00:26:52.070 --> 00:26:53.770
macht. Und dafür kann man Virtual

00:26:53.770 --> 00:26:54.670
Environments nutzen.

00:26:56.010 --> 00:26:58.070
Es gibt auch einen anderen Ansatz, aber die meisten

00:26:58.070 --> 00:27:00.410
Tools benutzen Virtual Environments und erstellen

00:27:00.410 --> 00:27:04.130
dann eben kleine isolierte Umgebungen, wo man dann

00:27:04.130 --> 00:27:07.570
über PIP oder Conda, wie auch immer sich die

00:27:07.570 --> 00:27:11.850
Pakete installieren kann. Und Python hat zwei Tools,

00:27:11.850 --> 00:27:14.910
die wirklich nur für Environment Management gedacht

00:27:14.910 --> 00:27:18.350
sind. Das ist einmal Venv. Das kommt auch direkt mit,

00:27:18.350 --> 00:27:20.010
wenn man Python installiert. Das braucht man also nicht

00:27:20.010 --> 00:27:23.130
zusätzlich installieren. Und Virtual Env. Ich habe beides

00:27:23.130 --> 00:27:25.970
schon benutzt. Es ist beides recht ähnlich. Virtual Env kann

00:27:25.970 --> 00:27:27.670
auch ein paar mehr Dinge machen als

00:27:27.670 --> 00:27:29.230
Venv. Aber

00:27:29.230 --> 00:27:31.930
ich könnte da jetzt nicht

00:27:31.930 --> 00:27:33.570
eins groß über das andere empfehlen.

00:27:33.570 --> 00:27:35.770
Vor allem, weil wenn man

00:27:35.770 --> 00:27:37.870
noch mehr machen möchte, beispielsweise man

00:27:37.870 --> 00:27:40.050
ein Package erstellt, dann ist es häufig hilfreich,

00:27:40.050 --> 00:27:41.890
eins von den Tools zu benutzen, die eben auch

00:27:41.890 --> 00:27:43.950
noch andere Dinge können. Aber ich

00:27:43.950 --> 00:27:45.930
habe häufiger schon mal, wenn ich einfach nur ein Virtual Environment

00:27:45.930 --> 00:27:46.950
erstellt,

00:27:46.950 --> 00:27:50.150
erstellen wollte, Venv benutzt oder Virtual Env,

00:27:50.150 --> 00:27:51.770
um das schnell machen zu können.

00:27:51.770 --> 00:27:53.910
Also ich benutze versuchst dann immer noch Virtual Env

00:27:53.910 --> 00:27:55.930
Wrapper, weil das halt dann irgendwie

00:27:55.930 --> 00:27:57.630
nur so drei oder vier...

00:27:57.630 --> 00:27:59.910
Ja, da gibt es ja noch ein paar interessante Shell-Aliasse, die man dann

00:27:59.910 --> 00:28:01.650
zusätzlich hat. Ehrlicherweise

00:28:01.650 --> 00:28:03.630
auf Windows, ich muss ja, wenn ich Windows benutze,

00:28:03.630 --> 00:28:05.710
ist das ja mal Quatsch. Da gab es irgendwie Virtual Env Wrapper PowerShell,

00:28:05.710 --> 00:28:07.650
das irgendwie fürchterlich war. Und ich habe es mir einfach selber geschrieben, was

00:28:07.650 --> 00:28:09.870
eigentlich nur ein Wrapper um Venv ist. Und du willst halt

00:28:09.870 --> 00:28:11.870
sowas haben wie MK Virtual Env oder

00:28:11.870 --> 00:28:13.830
RM Virtual Env oder LS Virtual Env,

00:28:13.830 --> 00:28:15.790
um halt deine Virtual Envs anzuzeigen, die du hast

00:28:15.790 --> 00:28:17.470
und die du halt einfach dann aktivieren kannst mit

00:28:17.470 --> 00:28:19.790
sowas wie WorkOn. Also ich finde das Schönste

00:28:19.790 --> 00:28:21.350
an Virtual Env Wrapper ist WorkOn.

00:28:21.350 --> 00:28:23.850
Du gehst halt einfach in dein Projekt

00:28:23.850 --> 00:28:25.850
und gibst ein WorkOn in der Shell

00:28:25.850 --> 00:28:27.870
und die Env ist aktiviert, ohne dass du irgendwas machen musst

00:28:27.870 --> 00:28:29.550
und das ist halt immer convenient, das zu tun.

00:28:29.550 --> 00:28:31.690
Ah ja, benutzt aber einer von euch

00:28:31.690 --> 00:28:33.910
eigentlich, genau, fürs Erzeugen

00:28:33.910 --> 00:28:35.870
oder Verwalten von Virtual Envs PyEnv,

00:28:35.870 --> 00:28:37.330
weil das könnte man ja auch machen.

00:28:37.330 --> 00:28:39.710
Also ich habe es... Ja,

00:28:39.710 --> 00:28:41.030
nein, also ich benutze es nicht mehr.

00:28:41.030 --> 00:28:43.470
Ich habe es noch nie benutzt dafür.

00:28:43.470 --> 00:28:45.570
Okay, ich habe es mal dafür benutzt und

00:28:45.570 --> 00:28:46.730
mache es aber nicht mehr, weil

00:28:46.730 --> 00:28:49.070
das ist...

00:28:49.070 --> 00:28:51.750
Damit hatte sich

00:28:51.750 --> 00:28:53.670
das erledigt, als ich dann von ZSH

00:28:53.670 --> 00:28:55.010
auf Fisch umgestellt bin.

00:28:55.770 --> 00:28:57.450
Die Shell und jetzt verwende ich halt zum Verwalten

00:28:57.450 --> 00:28:59.830
der Virtual Envs Virtual Fisch,

00:28:59.830 --> 00:29:01.650
was ich auch noch empfehlen kann, wenn man die Fischshell hat.

00:29:01.650 --> 00:29:02.610
Ja.

00:29:02.610 --> 00:29:04.950
Genau, nee, verwende ich auch nicht mehr.

00:29:04.950 --> 00:29:07.470
Ja genau, also ich benutze tatsächlich für Erstellen

00:29:07.470 --> 00:29:09.670
von Virtual Envs meistens Poetry.

00:29:09.670 --> 00:29:11.370
Da wird gleich ein großer Aufschrei kommen,

00:29:11.370 --> 00:29:13.130
weil da gibt es große Diskussionen um dieses Tool

00:29:13.130 --> 00:29:14.930
und ich benutze es tatsächlich immer noch und

00:29:14.930 --> 00:29:17.330
ja, weil das in den Projekten, ich eh eine

00:29:17.330 --> 00:29:19.550
PyProject Hummel habe, wo die Dependencies drin definiert

00:29:19.550 --> 00:29:21.010
sind, dann mit Poetry relativ easy geht

00:29:21.010 --> 00:29:23.530
und wenn ich mal selber eine eigene Env kurz

00:29:23.530 --> 00:29:25.430
brauche, dann einfach mit dem Virtual Env Wrapper

00:29:25.690 --> 00:29:27.170
einfach mkvirtualenv Name

00:29:27.170 --> 00:29:28.330
work on, fertig.

00:29:28.330 --> 00:29:31.710
Ja, das ist auch das, was ich am meisten gesehen habe.

00:29:31.710 --> 00:29:33.710
Wobei für Einsteiger, die jetzt

00:29:33.710 --> 00:29:35.170
wirklich noch nie ein Package gemacht haben,

00:29:35.170 --> 00:29:37.530
ist das häufig nochmal schwierig,

00:29:37.530 --> 00:29:39.470
wenn man dann da plötzlich so ein PyProject

00:29:39.470 --> 00:29:41.510
Atommel-File rumfliegen hat und überhaupt

00:29:41.510 --> 00:29:43.510
nicht weiß, wirklich was das macht und wofür man

00:29:43.510 --> 00:29:45.570
das braucht. Da kann es schon ganz hilfreich sein,

00:29:45.570 --> 00:29:47.390
einfach mal nur diese Tools zu benutzen.

00:29:47.390 --> 00:29:49.390
Genau. Wie Venv. Ja, das ist,

00:29:49.390 --> 00:29:51.530
über die PyProject Hummel müssen wir glaube ich später auch nochmal sprechen,

00:29:51.530 --> 00:29:53.370
weil es da ja auch verschiedene Ideen gibt, wie man da

00:29:53.370 --> 00:29:55.610
strukturiert und da bin ich auch mit so Sachen, die Poetry

00:29:55.610 --> 00:29:57.410
zum Beispiel macht, nicht so einverstanden und

00:29:57.410 --> 00:29:59.450
da gibt es ja so ein paar Peps, die glaube ich, das

00:29:59.450 --> 00:30:01.650
relativ besser strukturiert

00:30:01.650 --> 00:30:02.210
hätten, glaube ich, ja.

00:30:02.210 --> 00:30:05.390
Es gibt auch so ein paar Tools, du hattest ja gerade

00:30:05.390 --> 00:30:07.230
einmal gefragt, die nicht nur

00:30:07.230 --> 00:30:09.290
Environment Management machen, also natürlich auch die, die

00:30:09.290 --> 00:30:11.510
alle Packaging machen, aber es gibt zum Beispiel PipEnv,

00:30:11.510 --> 00:30:13.470
das ist auch schon ziemlich

00:30:13.470 --> 00:30:15.330
alt, das Tool, was

00:30:15.330 --> 00:30:17.410
einem dann auch noch erlaubt, also das sagt

00:30:17.410 --> 00:30:18.990
der Name ja auch schon, dass es Pip und

00:30:18.990 --> 00:30:20.810
Virtual Env zusammenführt

00:30:20.810 --> 00:30:23.210
und das Ganze nochmal ein bisschen

00:30:23.210 --> 00:30:25.130
mehr abstrahiert, also noch mehr

00:30:25.530 --> 00:30:27.390
Funktionalitäten hat und man darüber auch Packages

00:30:27.390 --> 00:30:29.190
installieren kann, habe ich jetzt

00:30:29.190 --> 00:30:30.710
relativ komische Dinge.

00:30:30.710 --> 00:30:33.070
Weiß ich nicht.

00:30:33.070 --> 00:30:33.710
Inwiefern?

00:30:33.710 --> 00:30:36.530
Es gab eine Zeit lang

00:30:36.530 --> 00:30:39.390
war halt da mal so ein bisschen das Problem, was man

00:30:39.390 --> 00:30:40.410
gehört hat, dass

00:30:40.410 --> 00:30:42.870
das nicht richtig im Intent wäre oder so,

00:30:42.870 --> 00:30:44.570
aber ich glaube, das ist nicht mehr so, das ist inzwischen,

00:30:44.570 --> 00:30:46.910
weil es halt auch eins von den Projekten von,

00:30:46.910 --> 00:30:47.570
wie heißt der noch,

00:30:47.570 --> 00:30:49.830
Kenneth Wrights,

00:30:49.830 --> 00:30:52.870
ursprünglich, aber der hat damit glaube ich nichts mehr zu tun.

00:30:52.870 --> 00:30:55.410
Hat das abgegeben, also ich glaube, das war mit so einer der Gründe,

00:30:55.450 --> 00:30:57.470
wo man gesagt hat, so, äh, ii, aber

00:30:57.470 --> 00:30:59.550
ja, wenn das jetzt in anderen Händen

00:30:59.550 --> 00:31:01.230
liegt, müsste man das nochmal angucken.

00:31:01.230 --> 00:31:03.470
Ja, okay, hat auch noch

00:31:03.470 --> 00:31:04.130
so eine look-up.

00:31:04.130 --> 00:31:07.410
Ganz viel in diesem Bereich,

00:31:07.410 --> 00:31:09.570
da kommt es aber auch darauf an, was man gewohnt ist,

00:31:09.570 --> 00:31:11.070
was die anderen benutzen, wenn man irgendwann

00:31:11.070 --> 00:31:13.350
anfängt, ein Tool zu benutzen, beispielsweise, wie du das

00:31:13.350 --> 00:31:14.530
jetzt mit Poetry genannt hast,

00:31:14.530 --> 00:31:17.370
dann gibt es selten Grund, plötzlich auf ein Tool wie PipEnv

00:31:17.370 --> 00:31:18.910
umzusteigen, weil

00:31:18.910 --> 00:31:21.510
ja, also ich könnte jetzt verstehen, wenn man

00:31:21.510 --> 00:31:23.370
dann ein anderes Packaging-Tool benutzt, also eins,

00:31:23.370 --> 00:31:25.370
was auch mehrere Dinge kann, aber dass man

00:31:25.370 --> 00:31:27.270
zurückgeht auf ein Tool, was weniger

00:31:27.270 --> 00:31:29.610
kann und dann vielleicht nochmal mehr Komplexität

00:31:29.610 --> 00:31:31.390
hinzufügt, weil PipEnv zum Beispiel

00:31:31.390 --> 00:31:33.350
hat so eine eigene Konvention, das

00:31:33.350 --> 00:31:34.790
ist eben schon rausgekommen, bevor

00:31:34.790 --> 00:31:37.210
es den, ähm, Python

00:31:37.210 --> 00:31:38.710
Enhancement Proposal gab zu

00:31:38.710 --> 00:31:41.130
PyProject.toml-Files, dass man die benutzt

00:31:41.130 --> 00:31:42.810
und die haben eben auch so einen eigenen

00:31:42.810 --> 00:31:44.830
Weg, das zu machen, also

00:31:44.830 --> 00:31:47.230
wenn man PipEnv benutzt hat, hat man plötzlich

00:31:47.230 --> 00:31:49.230
ein Pip-File noch da und auch ein

00:31:49.230 --> 00:31:51.310
Pip-File.log, ähm,

00:31:51.310 --> 00:31:53.450
das finde ich teilweise

00:31:53.450 --> 00:31:54.290
schwierig, weil

00:31:55.290 --> 00:31:56.650
das nochmal wieder

00:31:56.650 --> 00:31:58.030
was anderes ist.

00:31:58.030 --> 00:32:00.950
Also ich glaube, Leute, die PipEnv schon benutzt

00:32:00.950 --> 00:32:02.930
haben und sich damit auskennen, für die ist das

00:32:02.930 --> 00:32:04.750
ganz nett, aber ich würde jetzt

00:32:04.750 --> 00:32:06.910
ich persönlich niemandem empfehlen, sich das

00:32:06.910 --> 00:32:08.950
anzugucken, sondern dann einfach direkt ein Tool wie

00:32:08.950 --> 00:32:10.630
Poetry zu benutzen oder Rye,

00:32:10.630 --> 00:32:12.070
Hedge, wie auch immer.

00:32:12.070 --> 00:32:14.950
Was haltet ihr von PDM? Oder was hältst du von PDM?

00:32:14.950 --> 00:32:17.150
Ich hab's

00:32:17.150 --> 00:32:18.990
selbst noch nie in einem Projekt benutzt, also

00:32:18.990 --> 00:32:21.210
in einem Kundenprojekt. Ich hab's mal selbst ausprobiert.

00:32:21.210 --> 00:32:22.690
Darum kann ich da nicht so viel

00:32:22.690 --> 00:32:24.610
dazu sagen. Ich hab's natürlich mir

00:32:25.210 --> 00:32:27.190
angeschaut für den Talk und fand's jetzt ganz

00:32:27.190 --> 00:32:29.250
cool. Ähm, aber

00:32:29.250 --> 00:32:31.110
ich kenn auch Leute, die darauf schwören, also

00:32:31.110 --> 00:32:32.150
die das richtig gut finden.

00:32:32.150 --> 00:32:35.330
Ähm, man muss zu PDM aber sagen,

00:32:35.330 --> 00:32:37.030
ich hatte das ja vorhin kurz erwähnt, dass die

00:32:37.030 --> 00:32:38.890
meisten Tools Virtual Environments benutzen

00:32:38.890 --> 00:32:41.110
und PDM ist eins der wenigen Tools,

00:32:41.110 --> 00:32:42.750
die einen anderen Ansatz fahren.

00:32:42.750 --> 00:32:45.110
Und zwar benutzen die so, benutzt

00:32:45.110 --> 00:32:46.830
das sogenannte Local Environments.

00:32:46.830 --> 00:32:49.170
Das war auch ein Pep, der jetzt aber abgelehnt

00:32:49.170 --> 00:32:51.050
wurde. Ähm, und

00:32:51.050 --> 00:32:53.050
ich glaube, am Anfang gab's darum auch

00:32:53.050 --> 00:32:55.050
sehr viel Interesse an dem Tool, dadurch, dass es halt diesen

00:32:55.050 --> 00:32:56.130
anderen Weg benutzt.

00:32:56.130 --> 00:32:59.150
Bin mir nicht sicher, was jetzt passiert, dadurch, dass es abgelehnt

00:32:59.150 --> 00:33:00.410
wurde, ob das irgendeinen Unterschied macht.

00:33:00.410 --> 00:33:03.110
Da diese Local Environments.

00:33:03.110 --> 00:33:05.030
Ich glaube, es gibt auch so ein paar

00:33:05.030 --> 00:33:06.030
Tools, die das so machen.

00:33:06.030 --> 00:33:08.870
Ja, okay. Ich kann das gar nicht.

00:33:08.870 --> 00:33:11.110
Ja, also ein Ding,

00:33:11.110 --> 00:33:13.110
was mir nicht so klar war, als ich

00:33:13.110 --> 00:33:15.030
äh, also früher und jetzt,

00:33:15.030 --> 00:33:17.110
äh, dass das, dass es viele

00:33:17.110 --> 00:33:19.030
Dinge gibt, die sehr unterschiedlich, also ich meine, das ist natürlich

00:33:19.030 --> 00:33:21.130
schön, wenn man ein Tool hat, das irgendwie alles macht, aber

00:33:21.130 --> 00:33:23.010
ähm, und

00:33:23.010 --> 00:33:24.970
das war auch einer der Gründe, warum ich irgendwann mal

00:33:24.970 --> 00:33:26.750
äh, auch eigentlich recht begeistert war von

00:33:26.750 --> 00:33:29.010
Poultry, dass ich das Gefühl hatte, ich muss

00:33:29.010 --> 00:33:30.570
nur noch diese eine Geschichte irgendwie

00:33:30.570 --> 00:33:32.950
benutzen und kann damit eigentlich alles machen, was ich

00:33:32.950 --> 00:33:34.050
so irgendwie tun will.

00:33:34.050 --> 00:33:36.990
Und dann merkt man aber mit der Zeit so, naja,

00:33:36.990 --> 00:33:38.810
so richtig, so

00:33:38.810 --> 00:33:40.790
leider sind die Sachen doch sehr unterschiedlich,

00:33:40.790 --> 00:33:43.030
also so unterschiedlich, dass man sich dann doch dafür interessieren

00:33:43.030 --> 00:33:44.510
muss, dass diese Abstraktion halt anfängt,

00:33:44.510 --> 00:33:46.990
äh, zu leaken und dann, äh,

00:33:46.990 --> 00:33:48.310
dann wird's halt hässlich.

00:33:48.310 --> 00:33:50.850
Für mich jedenfalls. Also ich find Poultry super, weil

00:33:50.850 --> 00:33:52.970
es halt drei Sachen für mich macht, und das sind Dependencies

00:33:52.970 --> 00:33:54.950
zum Projekt dazufügen, Dependencies für ein Projekt,

00:33:54.950 --> 00:33:56.910
Dependencies für ein Projekt installieren, Dependencies für ein Projekt updaten,

00:33:56.910 --> 00:33:59.010
und das ist so das Hauptding, für das ich's benutze,

00:33:59.010 --> 00:34:01.030
und es ist trotzdem total nervig,

00:34:01.030 --> 00:34:02.530
und es geht immer wieder kaputt.

00:34:02.530 --> 00:34:04.890
Schreibst du Libraries, wo du dann

00:34:04.890 --> 00:34:06.790
Pakete erzeugst? Nein, genau, das nicht, also weil

00:34:06.790 --> 00:34:08.890
das ist nämlich genau der Punkt, wo ich wahrscheinlich, weiß ich

00:34:08.890 --> 00:34:10.670
nicht, ob ich Poultry für mich nehmen würde, ich hab ja

00:34:10.670 --> 00:34:12.730
irgendwie Flit oder Hedge irgendwie besser dafür geeignet,

00:34:12.730 --> 00:34:14.990
aber da kommen wir vielleicht auch noch drauf, wenn wir Packaging

00:34:14.990 --> 00:34:16.590
besprechen, ähm.

00:34:16.590 --> 00:34:18.670
Ja, weil ich würd sagen, solange man nur

00:34:18.670 --> 00:34:21.010
Projekte hat, wo man halt

00:34:21.010 --> 00:34:22.930
andere Abhängigkeiten reinzieht, und die man dann

00:34:22.930 --> 00:34:24.930
halt irgendwie, äh, irgendwo installieren

00:34:24.930 --> 00:34:26.510
oder irgendwo hindeployt und so,

00:34:26.510 --> 00:34:28.970
da funktioniert das ganz gut, aber sobald man halt

00:34:28.970 --> 00:34:30.910
eigene Libraries hat, wo man, äh, irgendwie

00:34:30.910 --> 00:34:32.830
Pakete erzeugen möchte,

00:34:32.830 --> 00:34:34.910
dann beißt einen das so ein bisschen,

00:34:34.910 --> 00:34:36.950
dass da die Anforderungen einfach völlig anders sind

00:34:36.950 --> 00:34:39.010
als, äh, und, ja,

00:34:39.010 --> 00:34:40.910
also da find ich halt zum Beispiel, also da fand ich

00:34:40.910 --> 00:34:42.950
halt Poultry macht da Ding, äh,

00:34:42.950 --> 00:34:45.150
da hat mich sozusagen

00:34:45.150 --> 00:34:47.330
kalt erwischt, dass, ähm,

00:34:47.330 --> 00:34:48.550
dass die, äh,

00:34:48.550 --> 00:34:50.910
dass das halt zwei sehr unterschiedliche Use Cases

00:34:50.910 --> 00:34:52.930
sind, und ich dachte, ich könnte das halt für beides

00:34:52.930 --> 00:34:54.910
gleich verwenden. So ein Paarstellenstrich hat die Kaputte

00:34:54.910 --> 00:34:56.910
oder sowas, dann will man halt irgendwie den Pfad

00:34:56.910 --> 00:34:58.730
für Poultry Home setzen, und dann installiert es aber

00:34:58.730 --> 00:35:00.690
trotzdem irgendwo anders, andere Dinge hin

00:35:00.690 --> 00:35:02.870
und sowas, das ist halt einfach total nervig

00:35:02.870 --> 00:35:05.130
und... Ja, das Schlimmste war, dass, äh,

00:35:05.130 --> 00:35:06.690
also bei meinem Anwendungsfall,

00:35:06.690 --> 00:35:08.830
das hab ich wirklich nicht gewusst, äh,

00:35:08.830 --> 00:35:10.870
und das hat halt, äh, Sachen draußen

00:35:10.870 --> 00:35:12.910
kaputt gemacht, äh, ist halt, dass Poultry

00:35:12.910 --> 00:35:14.670
per Default, was ja vielleicht

00:35:14.670 --> 00:35:17.030
okay ist für Applikationen, die man irgendwo hindeployt,

00:35:17.030 --> 00:35:18.970
eine obere, äh, eine obere Schranke

00:35:18.970 --> 00:35:20.830
für Abhängigkeiten hat. Das kannst du aber

00:35:20.830 --> 00:35:22.670
einstellen. Klar kann man das einstellen, ich hab's nicht gemacht.

00:35:22.670 --> 00:35:24.630
Und wenn du jetzt ein Paket baust,

00:35:24.890 --> 00:35:26.730
und hast da implizit obere Schranken drin,

00:35:26.730 --> 00:35:28.990
für die Abhängigkeiten, dann ist

00:35:28.990 --> 00:35:30.730
das für Leute, die sich, die

00:35:30.730 --> 00:35:33.050
dein Paket als Abhängigkeit haben, halt total blöd.

00:35:33.050 --> 00:35:34.970
Ja, obere Schranken, also da,

00:35:34.970 --> 00:35:36.770
da war ich erst anderer Meinung, und, ähm,

00:35:36.770 --> 00:35:38.630
das macht im Data Science Umfeld, macht das unheimlich viele,

00:35:38.630 --> 00:35:40.610
und auch unheimlich viele Pakete, die halt obere Schranken drin haben,

00:35:40.610 --> 00:35:42.690
und, äh, es gab diesen sehr länglichen

00:35:42.690 --> 00:35:44.290
Blogpost dazu, den du mir geschickt hast,

00:35:44.290 --> 00:35:46.870
äh, den wir auch nochmal verlinken können, der mich

00:35:46.870 --> 00:35:48.870
auch überzeugt hat zu sagen, dass das wahrscheinlich eine ziemlich

00:35:48.870 --> 00:35:50.850
doofe Idee, äh, überhaupt so eine obere Schranke

00:35:50.850 --> 00:35:51.210
zu haben.

00:35:51.210 --> 00:35:54.870
Interessant, dass es mir noch nie begegnet, das Problem

00:35:54.870 --> 00:35:56.830
Ja, du,

00:35:56.830 --> 00:35:58.870
im Data Science Umfeld tatsächlich öfter, und wenn du dann

00:35:58.870 --> 00:36:00.850
irgendwelche neuen Versionen hast, und die

00:36:00.850 --> 00:36:02.690
sagen, na, ich will aber nur bis Python

00:36:02.690 --> 00:36:04.410
maximal 3.10 gehen, und du willst aber 3.11 nehmen,

00:36:04.410 --> 00:36:06.850
dann musst du das halt irgendwie umbauen, oder sowas,

00:36:06.850 --> 00:36:08.010
das ist halt schon ätzend.

00:36:08.010 --> 00:36:10.730
Ja, eigentlich gar nicht so sehr dabei, sondern

00:36:10.730 --> 00:36:13.090
eher so bei, äh, irgendwelchen

00:36:13.090 --> 00:36:14.710
Third-Party-Geschichten, also man hat halt irgendwie

00:36:14.710 --> 00:36:15.970
eine, irgendeine

00:36:15.970 --> 00:36:18.710
Crypto-Library oder so, die man

00:36:18.710 --> 00:36:20.630
halt als Abhängigkeit verwendet, wenn man irgendwas,

00:36:20.630 --> 00:36:22.450
wenn man die für irgendwas braucht,

00:36:22.450 --> 00:36:24.850
und dann, äh,

00:36:24.850 --> 00:36:27.250
äh, sozusagen hat man eine implizite

00:36:27.250 --> 00:36:28.950
obere Schranke auf der, auf

00:36:28.950 --> 00:36:31.010
diese, auf eine Version von diesem Paket,

00:36:31.010 --> 00:36:32.950
und jemand installiert

00:36:32.950 --> 00:36:34.770
jetzt eine Library, die man selber irgendwie

00:36:34.770 --> 00:36:36.910
gebaut hat, äh, und hat

00:36:36.910 --> 00:36:38.910
aber noch eine andere, und jetzt sagt die eine

00:36:38.910 --> 00:36:40.910
irgendwie, ich brauch aber Abversion so und so, weil

00:36:40.910 --> 00:36:43.110
die hat halt irgendwie so eine, äh,

00:36:43.110 --> 00:36:44.630
Funktion, die das halt benötigt, und

00:36:44.630 --> 00:36:46.730
mein Paket, ohne dass ich das weiß, sagt,

00:36:46.730 --> 00:36:48.690
aber ich kann nur bis zu der Version, und dann

00:36:48.690 --> 00:36:50.850
kriegt der halt einen Konflikt. Ja, genau. Und kann's

00:36:50.850 --> 00:36:52.870
nicht mehr installieren. Und das ist gar nicht

00:36:52.870 --> 00:36:54.830
deswegen, weil es einen echten Konflikt gibt, sondern deswegen, weil ich

00:36:54.830 --> 00:36:56.590
einfach nur in den Default-Einstellungen nichts geändert habe. Ja, genau.

00:36:56.590 --> 00:36:58.230
Und das ist halt, äh, genau.

00:36:58.230 --> 00:37:00.290
Und wenn dann Leute sagen so, ähm, dein,

00:37:00.290 --> 00:37:02.670
dein Library ist, äh, die macht irgendwie

00:37:02.670 --> 00:37:04.910
hier bei mir Dinge kaputt, dann, äh,

00:37:04.910 --> 00:37:06.830
ja, das ist halt nicht so schön. Genau, und das, also im Datastandort

00:37:06.830 --> 00:37:08.750
hatte ich das recht häufig bei irgendwie Machine Learning-Paketen,

00:37:08.750 --> 00:37:10.930
dass du halt tatsächlich hingehen musstest, müsstest du in den Paketen

00:37:10.930 --> 00:37:12.770
die Requirements so anpassen, dass es halt irgendwie

00:37:12.770 --> 00:37:14.910
funktioniert, und gucken, ob's dann geht, was man halt dann auch nicht so genau

00:37:14.910 --> 00:37:16.870
weiß. Aber das, äh, ja.

00:37:16.870 --> 00:37:17.750
Ja.

00:37:17.750 --> 00:37:20.910
Das, ja. Habt ihr das mal mit anderen Tools

00:37:20.910 --> 00:37:22.810
ausprobiert, ob das Problem dann auch besteht?

00:37:22.810 --> 00:37:24.090
Ja, besteht auch mit dem, damit.

00:37:24.810 --> 00:37:26.410
Ähm, also,

00:37:26.410 --> 00:37:28.730
apropos Tools, ähm, Jochen, du meinst Pip-Tools

00:37:28.730 --> 00:37:29.910
jetzt für deine Environments?

00:37:29.910 --> 00:37:32.190
Genau, also ich verwende jetzt unterschiedliche Dinge,

00:37:32.190 --> 00:37:34.630
also für diese beiden unterschiedlichen Use-Cases, also wenn ich

00:37:34.630 --> 00:37:36.010
halt eine Applikation habe, wo ich

00:37:36.010 --> 00:37:38.330
Abhängigkeiten, also wo ich halt auch sowas wie

00:37:38.330 --> 00:37:40.570
Log-Files, bei einer Library habe ich

00:37:40.570 --> 00:37:42.570
ja keinen Log-File. Aber bei einer

00:37:42.570 --> 00:37:44.470
Applikation hätte ich natürlich schon wieder einen Log-File, sodass

00:37:44.470 --> 00:37:46.690
halt alle Entwickler irgendwie, dass ich halt weiß,

00:37:46.690 --> 00:37:48.730
äh. Was nochmal ein Log-File ist. Ja, muss man

00:37:48.730 --> 00:37:50.730
auch mal finden. Also ein Log-File

00:37:50.730 --> 00:37:52.330
ist normalerweise, pinnt halt die

00:37:52.330 --> 00:37:54.190
Dependencies und insbesondere den, den

00:37:54.790 --> 00:37:57.150
Dependency-Grafen halt mit, für deine

00:37:57.150 --> 00:37:58.630
Dependencies, dass halt klar ist, dass so

00:37:58.630 --> 00:38:00.990
die Versionen und die Abhängigkeiten dieser

00:38:00.990 --> 00:38:02.690
Pakete, die du da benutzt, auch

00:38:02.690 --> 00:38:04.590
ähm, gepinnt sind und

00:38:04.590 --> 00:38:07.030
meistens hashtest du die noch, das heißt, du kannst halt sehen,

00:38:07.030 --> 00:38:09.270
ob irgendwelche Änderungen da sind, also aus der Qt-Perspektive

00:38:09.270 --> 00:38:11.170
gar nicht so interessant. Ja, ob das, was man runtergeladen hat,

00:38:11.170 --> 00:38:13.250
auch tatsächlich, äh, das ist, was man haben

00:38:13.250 --> 00:38:15.250
wollte. Genau. Genau. Und

00:38:15.250 --> 00:38:17.070
ja. Also es führt halt dazu, dass

00:38:17.070 --> 00:38:19.210
wenn zwei Leute, ähm, sozusagen

00:38:19.210 --> 00:38:21.170
das, äh,

00:38:21.170 --> 00:38:23.210
Virtual-Env mit allen Environments,

00:38:23.210 --> 00:38:24.770
äh, äh, äh. Nach dieser Anleitung,

00:38:24.770 --> 00:38:26.790
werden installiert. Kriegen die dasselbe. Kriegen sie genau

00:38:26.790 --> 00:38:28.630
das Gleiche. Genau. Und haben nicht unterschiedliche

00:38:28.630 --> 00:38:30.730
Versionen von Paketen. Genau, also das ist das Hauptproblem auch,

00:38:30.730 --> 00:38:32.630
also klassisch ist ja Requirements-TXT.

00:38:32.630 --> 00:38:34.550
Genau. Und das, da wär's nicht so.

00:38:34.550 --> 00:38:36.830
Da sind halt diese ganzen Subdependencies nicht enthalten

00:38:36.830 --> 00:38:38.410
und es kann halt sein, dass wenn man Requirements-TXT

00:38:38.410 --> 00:38:40.870
irgendwie ein Jahr später installiert, dass dann irgendwas gebrochen

00:38:40.870 --> 00:38:42.730
ist, weil sich da. Genau, man. Abhängigkeiten

00:38:42.730 --> 00:38:44.910
geändert haben. Man erzeugt die Requirements-TXT,

00:38:44.910 --> 00:38:46.670
sechs Monate später kommt ein Entwickler dazu

00:38:46.670 --> 00:38:48.730
und installiert nochmal und sagt dann, hä, das

00:38:48.730 --> 00:38:50.170
lässt sich gar nicht mehr installieren, weil. Ja, genau.

00:38:50.170 --> 00:38:52.790
Irgendwelche Konflikte auftreten oder es verhält sich anders.

00:38:53.190 --> 00:38:54.950
Und das ist natürlich etwas, was man nicht haben will.

00:38:54.950 --> 00:38:57.010
Dafür braucht man unbedingt Blog-File-Teil. Und deswegen

00:38:57.010 --> 00:38:59.190
also diese Blog-Files sollten eigentlich meiner Meinung

00:38:59.190 --> 00:39:01.150
nach auf jeden Fall Teil von so einem Projekt mit

00:39:01.150 --> 00:39:02.950
sein. In welcher Form auch immer.

00:39:02.950 --> 00:39:05.310
Ja, wird glaube ich auch immer empfohlen.

00:39:05.310 --> 00:39:07.010
Von einer Applikation, aber eben bei einer

00:39:07.010 --> 00:39:09.110
Library halt nicht, weil da weiß ich ja gar nicht,

00:39:09.110 --> 00:39:10.090
was installiert wird. Ja.

00:39:10.090 --> 00:39:13.230
Und genau, für den Anwendungsfall

00:39:13.230 --> 00:39:13.770
nehme ich halt,

00:39:13.770 --> 00:39:16.950
also

00:39:16.950 --> 00:39:19.030
eine Anwendung, die ich deploye, nehme ich halt Pip-Tools

00:39:19.030 --> 00:39:21.190
und für den, ich hab ein

00:39:21.190 --> 00:39:23.170
Paket, wo ich ein Wheel oder irgendwas

00:39:23.170 --> 00:39:24.750
sonst wie ein Paket veröffentlichen möchte,

00:39:24.750 --> 00:39:27.010
nehme ich halt Flit, was

00:39:27.010 --> 00:39:28.970
jetzt, ich gucke

00:39:28.970 --> 00:39:30.150
manchmal so nach Hedge rüber,

00:39:30.150 --> 00:39:33.130
bisher hatte ich noch nicht so richtig den Grund

00:39:33.130 --> 00:39:34.390
irgendwie umzusteigen.

00:39:34.390 --> 00:39:36.970
Ja, wenn Flit für dich funktioniert, das ist auch glaube ich

00:39:36.970 --> 00:39:39.150
das Wichtigste, was man von dem Ganzen mitnehmen

00:39:39.150 --> 00:39:40.310
kann. Packaging ist zwar

00:39:40.310 --> 00:39:43.130
super messy in Python,

00:39:43.130 --> 00:39:45.270
also es ist total schwierig

00:39:45.270 --> 00:39:46.990
da einzusteigen, weil Python eben

00:39:46.990 --> 00:39:48.670
nicht designt wurde mit einem Tool,

00:39:48.670 --> 00:39:51.070
was es alles kann, wie das bei Rust ist,

00:39:51.070 --> 00:39:53.010
weswegen ja viele Leute sehr begeistert sind von

00:39:53.010 --> 00:39:55.050
Rust, vor allem die Python kennen, da läuft

00:39:55.050 --> 00:39:57.050
das sehr einfach, da hast du, hat man

00:39:57.050 --> 00:39:58.830
Cargo, was man benutzen kann

00:39:58.830 --> 00:40:01.030
für das Packaging und dann braucht man sich

00:40:01.030 --> 00:40:03.090
nicht die Gedanken machen über diese ganzen anderen Tools

00:40:03.090 --> 00:40:04.410
und

00:40:04.410 --> 00:40:06.990
verschiedene Tools bei Python lösen eben verschiedene

00:40:06.990 --> 00:40:08.890
Probleme und Flit ist super,

00:40:08.890 --> 00:40:10.930
wenn man ein reines Python-Paket hat und das einfach

00:40:10.930 --> 00:40:13.050
nur bilden

00:40:13.050 --> 00:40:14.890
möchte, also wenn man irgendwie ein Wheel-File braucht und

00:40:14.890 --> 00:40:16.610
das vielleicht dann noch publishen will und wenn das

00:40:16.610 --> 00:40:18.970
für einen selbst funktioniert, dann wunderbar, da kann man

00:40:18.970 --> 00:40:20.450
das wirklich gut verwenden.

00:40:20.450 --> 00:40:22.850
Ich habe gerade noch daran gedacht, mit den Log-Files,

00:40:22.850 --> 00:40:24.970
was ihr gesagt hatte, mit diesem Unterschied zwischen

00:40:24.970 --> 00:40:26.770
abstrakten und konkreten

00:40:26.770 --> 00:40:28.250
Abhängigkeiten,

00:40:28.250 --> 00:40:31.110
das kann man vielleicht auch noch mal

00:40:31.110 --> 00:40:33.210
ganz gut in Verbindung mit dem PyProject-Hommelfile

00:40:33.210 --> 00:40:35.050
erklären, weil wenn man ein Paket

00:40:35.050 --> 00:40:36.890
baut, hat man eben PyProject-Hommelfile,

00:40:36.890 --> 00:40:38.710
wo die ganzen, ja,

00:40:38.710 --> 00:40:40.850
wichtigen Dinge über das Paket drinstehen,

00:40:40.850 --> 00:40:42.110
das sind so Sachen wie

00:40:42.110 --> 00:40:44.830
der Name, wer der Autor ist, aber

00:40:44.830 --> 00:40:46.610
eben auch die Dependencies, dann kann man da

00:40:46.610 --> 00:40:49.070
für manche Tools auch genau sagen,

00:40:49.070 --> 00:40:51.070
wie die konfiguriert

00:40:51.070 --> 00:40:52.630
sein sollen, sowas wie Black zum Beispiel,

00:40:52.690 --> 00:40:54.410
wenn man Formatting benutzen möchte.

00:40:54.410 --> 00:40:56.650
Man kann da auch Skripte definieren, also man kann

00:40:56.650 --> 00:40:58.310
quasi super viel reinschreiben, dieses

00:40:58.310 --> 00:41:00.410
PyProject-Hommel, also die ganze Konfiguration löst halt

00:41:00.410 --> 00:41:02.570
diese Placerer an Konfigurations-Files

00:41:02.570 --> 00:41:04.410
ab, die dann irgendwo im Projekt-Root

00:41:04.410 --> 00:41:05.170
rumfliegen müssen, ja.

00:41:05.170 --> 00:41:08.310
Ja, und man,

00:41:08.310 --> 00:41:10.330
die Dependencies, die man da reinschreibt, sind aber

00:41:10.330 --> 00:41:12.690
möglichst, ja, grob

00:41:12.690 --> 00:41:14.550
gehalten, würde ich mal sagen, also da kann man

00:41:14.550 --> 00:41:16.410
Ranges angeben, welche

00:41:16.410 --> 00:41:18.550
Paketnummern gut sind, aber man sollte

00:41:18.550 --> 00:41:21.070
nicht die, auf genau die Version pinnen,

00:41:21.070 --> 00:41:22.530
die man haben möchte, wofür dann die

00:41:22.530 --> 00:41:24.270
meisten Tools eben automatisiert so ein

00:41:24.270 --> 00:41:26.330
Log-File erstellen, wie ihr das gerade beschrieben habt,

00:41:26.330 --> 00:41:28.710
sodass man das auch noch mitgeben

00:41:28.710 --> 00:41:30.410
kann in seinen Repository

00:41:30.410 --> 00:41:32.290
oder Package, sodass alle

00:41:32.290 --> 00:41:34.270
genau das gleiche Setup

00:41:34.270 --> 00:41:35.790
reproduzieren können.

00:41:35.790 --> 00:41:38.310
Setup ist, glaube ich, ein gutes Stichwort. Ich glaube, früher

00:41:38.310 --> 00:41:40.210
hat Python das halt mit Setup-Py gemacht und

00:41:40.210 --> 00:41:40.970
Setup-Tools,

00:41:40.970 --> 00:41:44.250
dann war das halt in Python und halt nicht in dieser

00:41:44.250 --> 00:41:45.730
deklarativen Tummel.

00:41:45.730 --> 00:41:48.130
Ja, die Geschichte davon ist auch,

00:41:48.130 --> 00:41:50.170
also da gibt es ja noch sehr viel mehr, es gibt auch noch

00:41:50.170 --> 00:41:51.810
Dist-Utils und ach, was ist der Teufel?

00:41:52.370 --> 00:41:54.210
Ja, aber genau, also von

00:41:54.210 --> 00:41:56.250
der Setup-Py wollte man eigentlich wegkommen,

00:41:56.250 --> 00:41:58.410
weil irgendwie, naja, gut, viele Leute

00:41:58.410 --> 00:41:59.990
haben immer nur ihr altes

00:41:59.990 --> 00:42:02.370
Setup-Py, was sie sich irgendwann mal irgendwie hingeschrieben haben,

00:42:02.370 --> 00:42:03.210
halt kopiert und

00:42:03.210 --> 00:42:06.210
das war halt so ein Problem,

00:42:06.210 --> 00:42:08.330
deswegen, ja, musste

00:42:08.330 --> 00:42:10.370
man quasi beliebig lange abwärtskompatibel bleiben

00:42:10.370 --> 00:42:11.990
mit allem und

00:42:11.990 --> 00:42:13.090
inzwischen

00:42:13.090 --> 00:42:16.290
sollte ja eigentlich für fast alles, was

00:42:16.290 --> 00:42:18.510
man tut, Setup-CFG ausreichen

00:42:18.510 --> 00:42:19.390
irgendwie,

00:42:19.390 --> 00:42:21.730
aber ja, das ist alles ein

00:42:22.210 --> 00:42:24.530
It's a mess.

00:42:24.530 --> 00:42:25.270
Ja, genau.

00:42:25.270 --> 00:42:28.490
Es ist auch eben überraschend, finde ich, also das

00:42:28.490 --> 00:42:30.810
ich habe gerade mal das PEP geöffnet

00:42:30.810 --> 00:42:32.090
von, das ist

00:42:32.090 --> 00:42:34.310
518, wo es darum geht, dass

00:42:34.310 --> 00:42:36.150
pyproject.tummel eingeführt wird, das ist von

00:42:36.150 --> 00:42:38.650
2016, also es ist schon echt eine Weile

00:42:38.650 --> 00:42:40.410
her und trotzdem begegnet mir das immer wieder,

00:42:40.410 --> 00:42:42.190
dass Leute noch Setup.py benutzen,

00:42:42.190 --> 00:42:44.710
obwohl inzwischen das schon so weit verbreitet

00:42:44.710 --> 00:42:46.870
ist, dass man eine pyproject.tummel

00:42:46.870 --> 00:42:48.590
Datei hat, in der

00:42:48.590 --> 00:42:50.490
man im Tummel-Format eben definiert,

00:42:50.490 --> 00:42:52.090
wie das Paket aussieht und welche

00:42:52.090 --> 00:42:53.110
Abhängigkeiten es hat.

00:42:53.110 --> 00:42:56.230
Also was ich so ein bisschen anstrengend finde, ist, dass

00:42:56.230 --> 00:42:58.150
es halt keine Referenzen gibt in diesen Tummel-Files, dass

00:42:58.150 --> 00:43:00.010
du halt dann Redundanzen hinkriegst, wenn du mehrere

00:43:00.010 --> 00:43:02.170
Male diesen Namen verwenden willst in unterschiedlichen

00:43:02.170 --> 00:43:04.350
Sachen oder sowas, was manchmal so ein bisschen

00:43:04.350 --> 00:43:06.050
schade ist, aber gut,

00:43:06.050 --> 00:43:08.290
es gibt Schlimmeres, als dann

00:43:08.290 --> 00:43:09.910
zweimal irgendwie den Projektnamen hinzuschreiben, aber

00:43:09.910 --> 00:43:12.510
ja, also ich mag die pyproject.tummel

00:43:12.510 --> 00:43:14.030
sehr gerne, ich benutze sie halt auch für alles und

00:43:14.030 --> 00:43:16.150
ich glaube, mittlerweile sind die meisten Tools durch

00:43:16.150 --> 00:43:18.170
irgendwelche Tricks auch dazu zu bringen,

00:43:18.170 --> 00:43:20.250
nur noch diese pyproject.tummel zu nehmen,

00:43:20.250 --> 00:43:21.830
also Flake oder so.

00:43:21.970 --> 00:43:23.930
Das ist halt so ein Kandidat für, nee.

00:43:23.930 --> 00:43:26.110
Ja, genau, aber das geht auch, da muss man halt

00:43:26.110 --> 00:43:28.090
ein extra Paket installieren, dann geht das, das gibt halt

00:43:28.090 --> 00:43:30.210
so ein Fork davon quasi.

00:43:30.210 --> 00:43:32.250
PyTest oder so ist halt auch

00:43:32.250 --> 00:43:34.230
sehr schön darüber einstellbar, MyPy,

00:43:34.230 --> 00:43:35.070
Ruff

00:43:35.070 --> 00:43:37.650
und deine ganzen Tools halt, ne?

00:43:37.650 --> 00:43:39.390
Linting und sowas.

00:43:39.390 --> 00:43:41.210
Die Skripts

00:43:41.210 --> 00:43:44.210
finde ich auch sehr interessant, weil

00:43:44.210 --> 00:43:46.030
da gibt es ja auch verschiedene Sachen, das noch zu lösen.

00:43:46.030 --> 00:43:48.090
Welche Skripts man irgendwie einhängen will.

00:43:48.090 --> 00:43:50.310
Ja, das finde ich auch ganz schön.

00:43:50.310 --> 00:43:51.850
Ich hatte das auch jetzt gerade im Kunden

00:43:51.850 --> 00:43:53.110
Projekt wieder, dass jemand

00:43:53.110 --> 00:43:54.850
Makefile benutzen wollte, um

00:43:54.850 --> 00:43:57.830
bestimmte Kommandos, die man häufig

00:43:57.830 --> 00:44:00.270
ausführt, runterzuschreiben

00:44:00.270 --> 00:44:01.890
oder es zu vereinfachen, weil

00:44:01.890 --> 00:44:03.910
der Person gar nicht bewusst war, dass man das auch

00:44:03.910 --> 00:44:05.750
im pyproject.tummel-File definieren kann.

00:44:05.750 --> 00:44:07.110
Also wenn man zum Beispiel immer

00:44:07.110 --> 00:44:10.810
Python-M-Unit-Test-Discover-Test

00:44:10.810 --> 00:44:11.970
schreibt, dass man

00:44:11.970 --> 00:44:13.970
das einfach abkürzen kann, indem man

00:44:13.970 --> 00:44:16.150
in der pyproject.tummel ein kleines

00:44:16.150 --> 00:44:17.990
Skript quasi definiert und dann

00:44:17.990 --> 00:44:19.930
sagt, dieser Befehl

00:44:19.930 --> 00:44:21.730
soll ausgeführt werden, wenn du

00:44:21.730 --> 00:44:23.810
Hedge, jetzt als Beispiel, Hedge ist eins

00:44:23.810 --> 00:44:25.550
von diesen Packaging-Tools und wenn du

00:44:25.550 --> 00:44:27.150
Hedge-Run-Test

00:44:27.150 --> 00:44:29.750
schreibst in dein Terminal, dann wird

00:44:29.750 --> 00:44:30.970
eben dieser Befehl ausgeführt.

00:44:30.970 --> 00:44:33.930
Finde ich unheimlich

00:44:33.930 --> 00:44:35.830
praktisch. Habe ich schon sehr viel

00:44:35.830 --> 00:44:37.030
benutzt, benutze ich auch sehr viel.

00:44:37.030 --> 00:44:39.170
Ich habe mir meinen eigenen Webpack geschrieben, weil

00:44:39.170 --> 00:44:41.710
bei mir ist es dann cc, weil

00:44:41.710 --> 00:44:43.650
ich habe meinen c-Compiler, die

00:44:43.650 --> 00:44:45.830
linkt und dann einfach cc-up,

00:44:45.830 --> 00:44:47.450
cc-start, cc-test,

00:44:47.450 --> 00:44:50.030
crawl-command. Aber man muss

00:44:50.030 --> 00:44:51.610
dafür das Paket quasi installieren,

00:44:51.610 --> 00:44:53.570
im aktuellen Environment.

00:44:53.570 --> 00:44:55.130
Genau.

00:44:55.130 --> 00:44:57.550
Ja, aber das ist halt sowas,

00:44:57.550 --> 00:44:59.350
wenn ich jetzt in einem Projekt bin,

00:44:59.350 --> 00:45:01.430
also sagen wir mal, ich habe ein Django-Projekt oder so,

00:45:01.430 --> 00:45:03.770
dann installiere ich das ja gar nicht als Paket oft.

00:45:03.770 --> 00:45:07.510
Da ist halt wieder so

00:45:07.510 --> 00:45:09.570
diese Unterscheidung, wenn ich ein Paket entwickle,

00:45:09.570 --> 00:45:11.650
okay, dann habe ich das normalerweise auch immer

00:45:11.650 --> 00:45:13.590
in einer editierbaren Version

00:45:13.590 --> 00:45:15.610
installiert im aktuellen Environment, aber

00:45:15.610 --> 00:45:17.610
das ist wieder diese Unterscheidung zwischen

00:45:17.610 --> 00:45:19.290
Libraries und

00:45:19.290 --> 00:45:21.490
install-e oder sowas, also

00:45:21.490 --> 00:45:23.410
editable installiert ist

00:45:23.410 --> 00:45:25.550
eine der Features, die nicht jedes von

00:45:25.550 --> 00:45:27.310
diesen Tools unterstützt. Ja, da hatte

00:45:27.310 --> 00:45:28.910
Poetry auch lange Probleme mit, ja.

00:45:28.910 --> 00:45:29.250
Ja.

00:45:29.250 --> 00:45:33.190
Aber genau,

00:45:33.190 --> 00:45:35.310
damit geht das gut. Ja, ich bin inzwischen also

00:45:35.310 --> 00:45:35.750
gerade bei

00:45:35.750 --> 00:45:39.370
ich bin bei einem eigenen

00:45:39.370 --> 00:45:40.670
Skript, das ich halt in alle

00:45:40.670 --> 00:45:43.430
Projekte reinlege oder so,

00:45:43.430 --> 00:45:43.890
weil

00:45:43.890 --> 00:45:47.610
es oft auch so ist, wenn man das zum ersten Mal ausführt,

00:45:47.610 --> 00:45:49.430
dann kann ich halt so Dinge machen,

00:45:49.430 --> 00:45:51.370
wie ich mache halt ein try-except

00:45:51.370 --> 00:45:53.450
um Imports und wenn die da nicht da sind,

00:45:53.450 --> 00:45:55.250
dann gucke ich halt, ob ich irgendwo das Log-File

00:45:55.250 --> 00:45:56.470
finde und dann installiere ich das erstmal,

00:45:56.470 --> 00:45:59.190
erzeuge ein Virtual-Env und mache halt so,

00:45:59.190 --> 00:46:01.450
sodass halt, wenn jemand, auch wenn jemand keine Ahnung

00:46:01.450 --> 00:46:03.150
hat, einfach irgendwas ausführt, dass es dann

00:46:03.150 --> 00:46:05.310
trotzdem funktioniert. Das geht halt, wenn man ein eigenes Skript hat,

00:46:05.310 --> 00:46:07.630
relativ gut, aber ansonsten

00:46:07.630 --> 00:46:11.330
wenn man den Leuten dann noch erklären muss, nee, du musst erst das Paket

00:46:11.330 --> 00:46:13.170
installieren und dann so, welches Paket?

00:46:13.170 --> 00:46:15.130
Ja, das, okay, und dann ist es halt immer noch mal

00:46:15.130 --> 00:46:16.610
eine Hürde. Ja.

00:46:16.610 --> 00:46:19.270
Ja, ich weiß es nicht. Ich habe da auch keine gute Lösung für.

00:46:19.270 --> 00:46:21.250
Ich habe gerade

00:46:21.250 --> 00:46:23.430
noch daran gedacht, dass es vielleicht auch ganz hilfreich

00:46:23.430 --> 00:46:24.850
ist, einmal zu erwähnen, dass diese

00:46:24.850 --> 00:46:27.050
Tools, die wir jetzt gerade schon genannt haben,

00:46:27.050 --> 00:46:28.990
sowas wie Hedge oder Poetry, PDM,

00:46:28.990 --> 00:46:31.190
Rye, dass die für

00:46:31.190 --> 00:46:33.370
ein dieses Virtual-Environment-Handling

00:46:33.370 --> 00:46:35.470
machen, also dass man da gar keine Virtual-Environments

00:46:35.470 --> 00:46:37.250
mehr selbst erstellt, sondern man

00:46:37.250 --> 00:46:39.210
installiert das Tool und dann kann man beispielsweise

00:46:39.210 --> 00:46:41.370
sagen, beispielsweise sagen Hedge

00:46:41.370 --> 00:46:43.450
run und dann Python

00:46:43.450 --> 00:46:45.450
main.py oder was auch

00:46:45.450 --> 00:46:47.050
immer und dann

00:46:47.050 --> 00:46:49.230
lässt Hedge dieses Skript

00:46:49.230 --> 00:46:51.130
innerhalb eines Virtual-Environments laufen

00:46:51.130 --> 00:46:52.910
wo all diese Dependency

00:46:52.910 --> 00:46:55.080
die man im pyproject.toml-File definiert hat,

00:46:55.080 --> 00:46:55.960
schon installiert sind.

00:46:55.960 --> 00:47:00.420
Sprich, man muss das nicht mehr manuell erstellen,

00:47:00.420 --> 00:47:01.360
dieses Virtual Environment.

00:47:01.360 --> 00:47:03.000
Das wird dann für einen gemacht.

00:47:03.000 --> 00:47:05.000
Mhm.

00:47:05.000 --> 00:47:08.080
Ja, dann, also Pultree zum Beispiel,

00:47:08.080 --> 00:47:09.800
kann man halt auch dann konfigurieren,

00:47:09.800 --> 00:47:12.220
dass halt alle WEMFs in einem bestimmten Ordner liegen,

00:47:12.220 --> 00:47:13.080
wenn man das gerne hätte.

00:47:13.080 --> 00:47:15.020
Oder dass die halt im Projekt liegen.

00:47:15.020 --> 00:47:16.560
Also das gibt halt diese zwei Varianten.

00:47:16.560 --> 00:47:18.040
Ich weiß nicht, wozu ihr da tendiert.

00:47:18.040 --> 00:47:19.220
Vielleicht auch ein bisschen die Frage,

00:47:19.220 --> 00:47:19.920
ob man ein Dev macht,

00:47:19.920 --> 00:47:21.720
wo man halt zwischen den WEMFs vergleichen will

00:47:21.720 --> 00:47:23.460
oder ob man das halt in ein Pod macht,

00:47:23.460 --> 00:47:25.100
wo man das vielleicht direkt ins Projekt legt

00:47:25.100 --> 00:47:27.700
oder irgendwo nach Opt oder ich weiß nicht.

00:47:27.700 --> 00:47:28.740
Ja, also man kann...

00:47:28.740 --> 00:47:30.080
Häufig einfach den Default benutzt.

00:47:30.080 --> 00:47:30.640
Mhm.

00:47:30.640 --> 00:47:32.480
Also ich mache, ist unterschiedlich.

00:47:32.480 --> 00:47:34.600
Für Entwicklungen lege ich die ganzen Virtual Envs

00:47:34.600 --> 00:47:35.520
in ein Verzeichnis,

00:47:35.520 --> 00:47:37.940
damit ich halt nur bei einem Verzeichnis sagen muss,

00:47:37.940 --> 00:47:39.440
dieses Verzeichnis bitte nicht backuppen.

00:47:39.440 --> 00:47:42.400
Ansonsten müsste ich eine Regel haben,

00:47:42.400 --> 00:47:43.800
die das halt für alle,

00:47:43.800 --> 00:47:44.760
die halt immer rausfindet,

00:47:44.760 --> 00:47:46.660
was ist das Virtual Env in einem Projekt

00:47:46.660 --> 00:47:48.220
und dann das dann halt nicht backupt.

00:47:48.220 --> 00:47:50.540
Was auch geht, aber ist halt komplizierter.

00:47:50.540 --> 00:47:52.360
Und wenn ich mich dann an diese Regel selber mal nicht halte,

00:47:52.360 --> 00:47:53.860
dann wird halt ein Virtual Env gebackupt,

00:47:53.860 --> 00:47:54.820
was halt doof ist.

00:47:54.820 --> 00:47:56.400
Ja, also ich habe aber tatsächlich schon gesehen,

00:47:56.400 --> 00:47:58.960
dass tatsächlich sogar die WEMFs Teil der Version Control sind.

00:47:58.960 --> 00:48:00.660
Ja, das ist natürlich...

00:48:00.660 --> 00:48:02.300
Nee, also das würde ich auch nicht machen,

00:48:02.300 --> 00:48:03.120
aber das habe ich schon gefunden,

00:48:03.120 --> 00:48:05.160
weil die Leute halt irgendwie die brauchen,

00:48:05.160 --> 00:48:07.920
reproduzierbar auch irgendwie auf ihren Systemen,

00:48:07.920 --> 00:48:10.960
dann halt tatsächlich einfach die WEMF auschecken

00:48:10.960 --> 00:48:12.140
und dann haben sie die schon,

00:48:12.140 --> 00:48:14.160
ohne dass sie diesen ganzen Hustle machen müssen.

00:48:14.160 --> 00:48:16.320
Oder die wird halt irgendwie gesippt und halt dazugelegt,

00:48:16.320 --> 00:48:18.720
weil man die dann für alte Versionen

00:48:18.720 --> 00:48:20.420
halt einfach dann dabei hat und die funktioniert direkt.

00:48:20.540 --> 00:48:24.360
Und wenn man dann halt jetzt nicht den Python nur gelinkt hat,

00:48:24.360 --> 00:48:26.700
sondern das halt als hart dahingeschrieben hat,

00:48:26.700 --> 00:48:28.020
dann könnte das sogar funktionieren.

00:48:28.020 --> 00:48:30.500
Also...

00:48:30.500 --> 00:48:31.260
Ich habe Zweifel.

00:48:31.260 --> 00:48:33.660
Ja, gut, aber das ist halt wieder genau so ein Punkt,

00:48:33.660 --> 00:48:34.580
wo wir halt merken,

00:48:34.580 --> 00:48:36.400
es gibt halt ganz, ganz viele verschiedene Lösungen

00:48:36.400 --> 00:48:37.500
für dieses Problem,

00:48:37.500 --> 00:48:40.160
wie laufe ich denn überhaupt eine Python an,

00:48:40.160 --> 00:48:44.480
die alle nicht so richtig gut funktionieren und so.

00:48:44.480 --> 00:48:45.180
Ja.

00:48:45.180 --> 00:48:47.520
Alle Probleme haben an irgendwelchen Edge Cases.

00:48:47.520 --> 00:48:48.900
Also es gibt, das ist tatsächlich,

00:48:48.900 --> 00:48:50.520
also das Beispiel Rust ist da, glaube ich, echt ein guter.

00:48:50.540 --> 00:48:52.820
Also weil du machst Rust ab und hast dann Cargo und sowas.

00:48:52.820 --> 00:48:54.340
Ja, aber man kann halt,

00:48:54.340 --> 00:48:56.540
das wird ja dann auch oft vorgeschlagen.

00:48:56.540 --> 00:48:59.580
Warum machen wir es nicht einfach wie Rust jetzt sozusagen

00:48:59.580 --> 00:49:01.660
in der Python-Welt und dann sind wir dieses Problem los.

00:49:01.660 --> 00:49:03.880
Das funktioniert halt nicht, weil Python halt so alt ist

00:49:03.880 --> 00:49:05.020
und es so viele Dinge gibt.

00:49:05.020 --> 00:49:08.280
Also tatsächlich größere Teile des Ökosystems würden,

00:49:08.280 --> 00:49:09.840
wenn du sagst, okay, das ist jetzt der Weg,

00:49:09.840 --> 00:49:11.920
wie wir das machen, halt einfach nicht mehr funktionieren.

00:49:11.920 --> 00:49:14.260
Und dann kannst du es halt eigentlich auch nicht machen.

00:49:14.260 --> 00:49:15.340
Also einen Plan verpassen.

00:49:15.340 --> 00:49:17.540
Also zum Beispiel den ZRPY-Support einstellen.

00:49:17.540 --> 00:49:20.120
Das haben auch Leute schon angedacht oder probiert.

00:49:20.120 --> 00:49:20.340
Und dann...

00:49:20.540 --> 00:49:21.880
Bei den Diskussionen kamen wir raus,

00:49:21.880 --> 00:49:23.320
nee, das ist unmöglich, das geht nicht.

00:49:23.320 --> 00:49:24.200
Kann man nicht machen.

00:49:24.200 --> 00:49:25.120
Also bei Python 4 dann.

00:49:25.120 --> 00:49:26.740
Selbe Problem, ja.

00:49:26.740 --> 00:49:28.260
Das will auch keiner mehr machen.

00:49:28.260 --> 00:49:29.060
Das will auch keiner machen.

00:49:29.060 --> 00:49:32.840
Das ist so ein harter, solche harten Kompetibilitäten.

00:49:32.840 --> 00:49:34.100
Das wird nicht mehr passieren, glaube ich.

00:49:34.100 --> 00:49:36.700
Ja, es ist, aber genau.

00:49:36.700 --> 00:49:39.060
Also auf Produktivgeschichten, da mache ich das so,

00:49:39.060 --> 00:49:42.980
dass ich das Virtual Env in das Projekt selber mit reinlege.

00:49:42.980 --> 00:49:46.640
Einfach deswegen, weil ich dann sozusagen alles an einem Platz habe

00:49:46.640 --> 00:49:47.980
und halt auch, wenn ich es dann entferne,

00:49:47.980 --> 00:49:50.520
auch nur ein Verzeichnis entfernen muss.

00:49:50.540 --> 00:49:52.860
Und nicht noch gucken muss, oh, da gibt es noch das Virtual Env.

00:49:52.860 --> 00:49:54.620
Oh, da gibt es ja noch die Datenbank unter Auer.

00:49:54.620 --> 00:49:56.300
Da gibt es noch dieses Dings, was ich auch noch mit entferne.

00:49:56.300 --> 00:49:58.100
Sondern dann entferne ich das eine Ding und dann fertig.

00:49:58.100 --> 00:50:00.920
Ja, also ich habe das tatsächlich unter Opt.

00:50:00.920 --> 00:50:03.840
Und dann halt die Python-Sachen alle da an einer Stelle,

00:50:03.840 --> 00:50:04.760
die für das Projekt da sind.

00:50:04.760 --> 00:50:06.180
Okay, auch interessant, ja.

00:50:06.180 --> 00:50:07.420
Und dann habe ich halt quasi das Projekt,

00:50:07.420 --> 00:50:09.100
also den Code vom Projekt und den Code von dem,

00:50:09.100 --> 00:50:11.320
was für das Projekt zum Lauf notwendig ist.

00:50:11.320 --> 00:50:13.420
Also zwei Sachen, aber ja.

00:50:13.420 --> 00:50:15.380
Ja.

00:50:15.380 --> 00:50:16.540
Ich habe gerade noch daran gedacht,

00:50:16.540 --> 00:50:18.040
Hedge zum Beispiel ist eins der Tools,

00:50:18.040 --> 00:50:19.320
die ich recht häufig benutze.

00:50:19.320 --> 00:50:20.240
Einfach auch nur, weil ich,

00:50:20.500 --> 00:50:21.320
weil ich irgendwann damit angefangen habe

00:50:21.320 --> 00:50:22.100
und das ganz nett finde.

00:50:22.100 --> 00:50:25.380
Und das hat so ein tolles Feature für die Virtual Environments,

00:50:25.380 --> 00:50:28.240
dass man im PyProject.toml-File eben auch definieren kann,

00:50:28.240 --> 00:50:30.940
deklarativ, welche verschiedenen Virtual Environments

00:50:30.940 --> 00:50:31.640
man haben möchte.

00:50:31.640 --> 00:50:35.040
Und ich habe beispielsweise häufig eins für Styling,

00:50:35.040 --> 00:50:38.300
also wo man, was dann Black über alle Sachen laufen lässt,

00:50:38.300 --> 00:50:40.380
wo dann, also da sind da die Dependencies nur,

00:50:40.380 --> 00:50:42.960
wie Black, Rough und Ähnliches installiert.

00:50:42.960 --> 00:50:44.580
Und auch die Skripte dafür.

00:50:44.580 --> 00:50:46.740
Und dann habe ich ein Virtual Environment

00:50:46.740 --> 00:50:48.180
für die Documentation.

00:50:48.180 --> 00:50:50.180
Ich benutze zum Beispiel Material for mkDocs,

00:50:50.460 --> 00:50:52.440
wo das dann installiert ist.

00:50:52.440 --> 00:50:54.340
Und dann kann man halt wirklich ganz strukturiert sagen,

00:50:54.340 --> 00:50:57.440
okay, diese verschiedenen, ja, Anwendungsfälle

00:50:57.440 --> 00:50:59.600
oder das mache ich in meinem Workflow

00:50:59.600 --> 00:51:02.240
und dafür brauche ich nur diese Dependencies.

00:51:02.240 --> 00:51:05.100
Und dann kann man das wirklich schön organisiert runterschreiben,

00:51:05.100 --> 00:51:06.060
PyProject.toml.

00:51:06.060 --> 00:51:08.120
Das finde ich irgendwie total angenehm,

00:51:08.120 --> 00:51:11.020
weil das so viel besser nach außen kommuniziert.

00:51:11.020 --> 00:51:13.640
Potpourri hat das auch irgendwann eingeführt als Groups.

00:51:13.640 --> 00:51:14.380
Ah, okay.

00:51:14.380 --> 00:51:17.120
Und tatsächlich, also du kannst halt die Gruppen optional machen halt

00:51:17.120 --> 00:51:17.580
oder halt nicht.

00:51:17.580 --> 00:51:19.240
Also die nicht optionalen Gruppen sind halt die,

00:51:19.240 --> 00:51:20.360
die absolut notwendig sind damit,

00:51:20.420 --> 00:51:20.960
wie die Anwendung läuft.

00:51:20.960 --> 00:51:23.580
Und halt solche Sachen wie Docs oder wie Tests oder sowas

00:51:23.580 --> 00:51:25.160
können halt eigene Gruppen haben.

00:51:25.160 --> 00:51:27.680
Da hatten wir mal mit Johannes drüber gesprochen.

00:51:27.680 --> 00:51:29.040
Johannes meinte, totaler Quatsch.

00:51:29.040 --> 00:51:31.000
Du brauchst eigentlich nur zwei.

00:51:31.000 --> 00:51:32.040
Und das ist Def und Prot.

00:51:32.040 --> 00:51:32.480
Def und Prot, ja.

00:51:32.480 --> 00:51:34.360
Kann man auch vertreten.

00:51:34.360 --> 00:51:35.960
Ja, aber es ist halt die Frage,

00:51:35.960 --> 00:51:38.080
braucht man so einen Fall, wo man nur linden will

00:51:38.080 --> 00:51:40.840
oder wo man nur Docs angucken will oder so.

00:51:40.840 --> 00:51:42.900
Ja, also mein Argument dafür wäre halt auch genau,

00:51:42.900 --> 00:51:45.900
weil ich habe, also oft hat man dann implizit ja doch mehrere.

00:51:45.900 --> 00:51:48.460
Zum Beispiel, wenn man sowas wie Precommit Hooks verwendet.

00:51:48.460 --> 00:51:50.380
Bei Precommit kümmert sich ja auch wieder selber

00:51:50.380 --> 00:51:50.760
da drum.

00:51:50.760 --> 00:51:52.760
Und dann hast du es aber implizit irgendwie.

00:51:52.760 --> 00:51:55.080
Und es wäre natürlich vielleicht schöner,

00:51:55.080 --> 00:51:57.420
das explizit irgendwo stehen zu haben,

00:51:57.420 --> 00:51:59.700
wo das, ja.

00:51:59.700 --> 00:52:02.340
Ja, Precommit MyPi ist zum Beispiel so ein Kandidat,

00:52:02.340 --> 00:52:04.220
der unheimlich nervig ist, weil das halt, ja.

00:52:04.220 --> 00:52:05.620
Genau.

00:52:05.620 --> 00:52:06.540
Also,

00:52:06.540 --> 00:52:08.800
also genau,

00:52:08.800 --> 00:52:09.960
also ich würde sagen,

00:52:09.960 --> 00:52:11.860
wenn man nur Def und Prot haben will,

00:52:11.860 --> 00:52:13.420
dann schafft man das nicht,

00:52:13.420 --> 00:52:15.420
weil man hat ja zumindest noch das für Precommit.

00:52:15.420 --> 00:52:17.560
Und das heißt,

00:52:17.560 --> 00:52:18.940
dann hat man nochmal einen Ort, wo man das pflegen muss.

00:52:18.940 --> 00:52:20.280
Das steht ja auch nicht in der PyProject Tommel,

00:52:20.340 --> 00:52:23.600
sondern es steht dann auch wieder in dem Precommit Jammel.

00:52:23.600 --> 00:52:25.060
Und, äh, Jammel, Uwe.

00:52:25.060 --> 00:52:25.980
Das ist sehr mäßig.

00:52:25.980 --> 00:52:27.880
Bei mir sind es halt so Gruppen, die sind alle optional,

00:52:27.880 --> 00:52:30.000
die ich alle per Default dann wieder copy und paste.

00:52:30.000 --> 00:52:31.200
Wo halt dann sowas drin ist,

00:52:31.200 --> 00:52:32.640
wenn eine Postquest benutzt wird,

00:52:32.640 --> 00:52:34.320
dann mach doch bitte diese Gruppe noch dazu.

00:52:34.320 --> 00:52:36.480
Und wenn irgendwie Authentifizierung benötigt wird,

00:52:36.480 --> 00:52:37.880
dann mach doch bitte diese Gruppe noch dazu.

00:52:37.880 --> 00:52:39.980
Und wenn, ja, so Dokumentationen,

00:52:39.980 --> 00:52:40.660
dann muss halt alle die...

00:52:40.660 --> 00:52:41.620
Okay, an der Stelle würde ich sagen,

00:52:41.620 --> 00:52:43.820
beschränk dich doch bitte auf Def und Prot.

00:52:43.820 --> 00:52:48.000
Kann man denn bei den Gruppen in Poetry

00:52:48.000 --> 00:52:50.140
dann auch Skripte für diese Gruppen,

00:52:50.300 --> 00:52:50.780
definieren?

00:52:50.780 --> 00:52:52.500
Ähm, nicht, dass ich wüsste.

00:52:52.500 --> 00:52:54.300
Aber vielleicht vertue ich mich auch alle.

00:52:54.300 --> 00:52:56.880
Ja, also Poetry hat eh immer so ein bisschen so Probleme

00:52:56.880 --> 00:52:59.060
mit so dann Sachen wieder abreißen oder sowas.

00:52:59.060 --> 00:53:00.340
Oder wenn du halt irgendwie ein Update

00:53:00.340 --> 00:53:01.360
von einem Major Python machst,

00:53:01.360 --> 00:53:03.160
dann fliegt Poetry oft auf die Nase.

00:53:03.160 --> 00:53:04.080
Das ist halt fürchterlich.

00:53:04.080 --> 00:53:05.640
Vielleicht ist das jetzt neu besser.

00:53:05.640 --> 00:53:07.040
Also auch so ein Ding, ne?

00:53:07.040 --> 00:53:09.020
Poetry hat irgendwie zweimal ein Update gemacht,

00:53:09.020 --> 00:53:10.960
das so Breaking Changes eingebaut hat,

00:53:10.960 --> 00:53:11.880
wo es dann...

00:53:11.880 --> 00:53:12.820
Das war halt so sehr, sehr nervig.

00:53:12.820 --> 00:53:13.960
Wirklich böse Dinge gemacht hat.

00:53:13.960 --> 00:53:15.080
Ja, das war halt der Hauptgrund,

00:53:15.080 --> 00:53:16.020
warum viele Leute gesagt haben,

00:53:16.020 --> 00:53:17.220
so eine Idee fasse ich jetzt nicht mehr an,

00:53:17.220 --> 00:53:18.880
weil sowas geht halt eigentlich nicht, ne?

00:53:18.880 --> 00:53:19.540
Genau, ja.

00:53:20.260 --> 00:53:21.380
Das habe ich auch total viel mitbekommen.

00:53:21.380 --> 00:53:22.740
Also ich habe selbst schon Poetry benutzt.

00:53:22.740 --> 00:53:23.920
Das hat für mich immer gut funktioniert

00:53:23.920 --> 00:53:25.280
und ich finde es auch ein gutes Tool.

00:53:25.280 --> 00:53:27.380
Aber ich habe voll viele Leute,

00:53:27.380 --> 00:53:29.180
von voll vielen Leuten das mitbekommen,

00:53:29.180 --> 00:53:31.520
die dann einen dieser Breaking Changes mitgemacht haben

00:53:31.520 --> 00:53:32.580
und dann gesagt haben, nie wieder.

00:53:32.580 --> 00:53:34.860
Also kategorisch benutze ich nicht mehr.

00:53:34.860 --> 00:53:35.620
Sowas geht nicht.

00:53:35.620 --> 00:53:36.460
Das kann man nicht machen.

00:53:36.460 --> 00:53:38.700
Und dann hat man eben auch genug Alternativen,

00:53:38.700 --> 00:53:39.900
auf die man zurückgreifen kann,

00:53:39.900 --> 00:53:42.120
sodass man Poetry dann nicht mehr verwenden muss.

00:53:42.120 --> 00:53:42.500
Also ich sage mal so,

00:53:42.500 --> 00:53:44.240
andererseits, das waren halt so ein paar Sachen echt kaputt

00:53:44.240 --> 00:53:45.380
und die haben die jetzt gefixt.

00:53:45.380 --> 00:53:46.780
So gesehen, ne?

00:53:46.780 --> 00:53:48.220
Wenn man jetzt einmal diesen Schmerz hat

00:53:48.220 --> 00:53:49.720
und es läuft dann jetzt wieder, warum dann nicht?

00:53:49.880 --> 00:53:52.040
Aber ja, ich weiß nicht.

00:53:52.040 --> 00:53:53.800
Ich glaube, es war bei vielen auch diese Art und Weise,

00:53:53.800 --> 00:53:54.660
mit der es gemacht wurde,

00:53:54.660 --> 00:53:56.860
dass zum Beispiel nicht gewarnt wurde davor,

00:53:56.860 --> 00:53:59.420
dass bestimmte Dinge dann nicht mehr funktionieren werden.

00:53:59.420 --> 00:54:02.380
Ja, ich glaube, der Ton in den Requests

00:54:02.380 --> 00:54:04.760
oder in den Issues war auch so ein bisschen rau.

00:54:04.760 --> 00:54:05.800
Habe ich das Gefühl gehabt.

00:54:05.800 --> 00:54:07.360
Das war, einige Leute fanden das auch nicht so gut.

00:54:07.360 --> 00:54:09.560
Poetry ist halt auch so ein Sonderfall,

00:54:09.560 --> 00:54:10.400
habe ich manchmal das Gefühl.

00:54:10.400 --> 00:54:15.460
Also ich hatte mir so ein paar Kriterien rausgesucht,

00:54:15.460 --> 00:54:17.020
um die verschiedenen Tools zu vergleichen,

00:54:17.020 --> 00:54:19.500
damit es eben wirklich so ein bisschen unbiased ist

00:54:19.500 --> 00:54:21.800
und nicht nur meine persönliche Präferenz mit reinfließt.

00:54:21.800 --> 00:54:26.180
Und es gibt ein PEP 621, da geht es darum,

00:54:26.180 --> 00:54:30.120
wie man Metadata in der PyProject-Hommel aufschreibt.

00:54:30.120 --> 00:54:31.660
Also in welchem Weg.

00:54:31.660 --> 00:54:34.040
Und da wurde halt irgendwann ein Standard definiert,

00:54:34.040 --> 00:54:35.360
den die meisten Tools vertreten.

00:54:35.360 --> 00:54:39.020
Nur Poetry hat da seine Extrawurst und macht das anders,

00:54:39.020 --> 00:54:40.480
was ja auch in Ordnung ist,

00:54:40.480 --> 00:54:42.780
dadurch, dass sie es von Anfang an anders gemacht haben.

00:54:42.780 --> 00:54:44.900
Aber es gibt, glaube ich, seit eineinhalb Jahren

00:54:44.900 --> 00:54:47.940
schon ein offenes Issue dazu auf GitHub

00:54:47.940 --> 00:54:49.360
und sie wollen es auch irgendwann machen.

00:54:49.360 --> 00:54:50.800
Aber sie haben es halt immer noch nicht gemacht.

00:54:50.800 --> 00:54:52.940
Und ich glaube, so ein paar Besonderheiten

00:54:52.940 --> 00:54:54.220
muss man da schon im Kopf behalten,

00:54:54.220 --> 00:54:55.560
wenn man dann Poetry benutzen will.

00:54:55.560 --> 00:54:57.280
Ja, also das war auch,

00:54:57.280 --> 00:55:00.240
als ich dann irgendwie auch Probleme mit Poetry mal bekommen habe

00:55:00.240 --> 00:55:01.380
und dann halt da auch angefangen habe,

00:55:01.380 --> 00:55:06.400
Issues aufzumachen und dann mir das Open Issues-Ding mal angeguckt habe,

00:55:06.400 --> 00:55:07.500
da dachte ich so, oh, oh, oh.

00:55:07.500 --> 00:55:10.020
Also letztlich, glaube ich, ist das einer,

00:55:10.020 --> 00:55:11.620
der auch eigentlich als Freelancer arbeitet,

00:55:11.620 --> 00:55:13.000
der das halt auch nicht Vollzeit macht,

00:55:13.000 --> 00:55:14.500
sondern halt auch so in seiner Freizeit.

00:55:14.500 --> 00:55:17.420
Und zu dem Zeitpunkt, wie es heute ist, weiß ich nicht.

00:55:17.420 --> 00:55:19.320
Und da waren halt tausend offene,

00:55:19.320 --> 00:55:20.340
offene Issues in dem Projekt.

00:55:20.340 --> 00:55:22.320
Das ist halt so, okay.

00:55:22.320 --> 00:55:23.640
Und einige schon sehr, sehr lange offen.

00:55:23.640 --> 00:55:26.240
Und ja, na ja.

00:55:26.240 --> 00:55:28.100
Ich meine, es ist ja klar,

00:55:28.100 --> 00:55:29.580
dass man das nicht so hinkriegen kann.

00:55:29.580 --> 00:55:32.100
Gerade wenn das dann halt viel verwendet wird,

00:55:32.100 --> 00:55:34.020
dann wird man halt erschlagen von dem Ansturm von Leuten,

00:55:34.020 --> 00:55:36.900
die irgendwas ändern wollen oder irgendwelche Probleme gefunden haben.

00:55:36.900 --> 00:55:38.500
Aber ja.

00:55:38.500 --> 00:55:42.460
Ist halt für Leute, die das halt noch ein Problem haben.

00:55:42.460 --> 00:55:43.460
Ja, das ist ein Open Source Schicksal so ein bisschen.

00:55:43.460 --> 00:55:44.060
Ja, ja, natürlich.

00:55:44.060 --> 00:55:46.100
Also es, ja, ja.

00:55:46.100 --> 00:55:49.260
Wo würdest du denn den Unterschied sehen zu,

00:55:49.280 --> 00:55:51.300
zu, zu, zu Hedge oder, oder Rye?

00:55:51.300 --> 00:55:53.020
Kann man das irgendwie kategorisieren,

00:55:53.020 --> 00:55:53.960
wo da die Unterschiede liegen?

00:55:53.960 --> 00:55:56.960
Also ich habe es so ein bisschen kategorisiert

00:55:56.960 --> 00:55:59.560
aufgrund der Dinge, die sie tun können.

00:55:59.560 --> 00:56:01.940
Beispielsweise ist Rye somit das einzige Tool,

00:56:01.940 --> 00:56:03.240
was wirklich alles kann.

00:56:03.240 --> 00:56:04.580
Eben auch Python Version Management.

00:56:04.580 --> 00:56:07.160
Dadurch, dass es eben nicht in Python geschrieben ist,

00:56:07.160 --> 00:56:07.860
sondern in Rust.

00:56:07.860 --> 00:56:13.100
Und man dann eben alles in einem Tool machen kann.

00:56:13.100 --> 00:56:14.940
Ja, auch so Project Scatboarding oder sowas

00:56:14.940 --> 00:56:16.480
mit fürchterlich opinionated und dann so.

00:56:16.480 --> 00:56:18.760
Na ja, sorry.

00:56:19.240 --> 00:56:20.420
Kein Problem.

00:56:20.420 --> 00:56:24.820
Genau, und da gibt es PDM, Poetry, Hedge,

00:56:24.820 --> 00:56:27.940
die noch mal so ein bisschen rausfallen,

00:56:27.940 --> 00:56:30.560
weil sie, also PDM und Poetry zum Beispiel,

00:56:30.560 --> 00:56:32.440
können kein Python Version Management machen.

00:56:32.440 --> 00:56:34.060
Man kann einfach PyEnv benutzen,

00:56:34.060 --> 00:56:37.700
aber die haben das nicht als eigene Funktionalität drin.

00:56:37.700 --> 00:56:41.440
Also dass man irgendwie sagen kann Poetry, keine Ahnung,

00:56:41.440 --> 00:56:43.080
add Python Version irgendwas.

00:56:43.080 --> 00:56:44.180
Aber sowas gibt es nicht.

00:56:44.180 --> 00:56:45.580
Und Hedge wiederum, das ist noch,

00:56:45.580 --> 00:56:47.880
also wird auch natürlich sehr aktiv entwickelt.

00:56:47.880 --> 00:56:49.200
Aber das kann zum Beispiel,

00:56:49.200 --> 00:56:53.160
also jetzt gerade hat es noch keine Package Management Möglichkeiten.

00:56:53.160 --> 00:56:54.800
Also man kann jetzt nicht wie bei Poetry,

00:56:54.800 --> 00:56:58.360
da kann man ja sagen Poetry add irgendein Paket

00:56:58.360 --> 00:57:01.600
und dann fügt Poetry das in die PyProject Tommelfile hinzu

00:57:01.600 --> 00:57:05.580
und macht auch, versucht die Dependency-Konflikte zu lösen.

00:57:05.580 --> 00:57:07.460
Und das kann Hedge noch nicht.

00:57:07.460 --> 00:57:11.740
Der hat immer angekündigt, dass er das noch implementieren wird.

00:57:11.740 --> 00:57:14.200
Aber bisher ist es noch nicht da.

00:57:14.200 --> 00:57:16.220
Es sei denn, das wurde jetzt die letzten Tage hinzugefügt.

00:57:16.220 --> 00:57:17.140
Ich habe es noch nicht gesehen.

00:57:17.140 --> 00:57:19.160
Genau, ich glaube, das kommt so,

00:57:19.160 --> 00:57:20.400
ein bisschen auf den Use Case drauf an.

00:57:20.400 --> 00:57:21.800
Flit hatten wir auch schon besprochen.

00:57:21.800 --> 00:57:23.720
Flit ist halt eben wirklich dazu gedacht,

00:57:23.720 --> 00:57:26.560
wenn man einfach nur ein Package bilden und publishen möchte

00:57:26.560 --> 00:57:31.000
und vor allem ein Package, was keinen C-Code hat oder ähnliches,

00:57:31.000 --> 00:57:32.360
sondern wirklich nur Python-Code.

00:57:32.360 --> 00:57:36.000
Ich glaube, das ist ganz gut, wenn man sich vorher mal überlegt,

00:57:36.000 --> 00:57:38.920
was möchte ich überhaupt machen und dann dementsprechend

00:57:38.920 --> 00:57:40.600
sich das Tool raussucht.

00:57:40.600 --> 00:57:42.800
Ich muss aber auch sagen, dass bei diesen ganzen Tools

00:57:42.800 --> 00:57:45.860
letztlich die persönliche Präferenz und was das Team macht,

00:57:45.860 --> 00:57:47.220
auch eine riesengroße Rolle spielt.

00:57:47.220 --> 00:57:49.120
Wenn jetzt alle im Team Poetry benutzen,

00:57:49.120 --> 00:57:52.080
wird es wahrscheinlich schwierig, Hedge zu benutzen,

00:57:52.080 --> 00:57:55.080
weil in der pipe-project.toml-File eben auch das Build-Backend

00:57:55.080 --> 00:57:58.460
definiert ist und da steht dann eben Poetry drin.

00:57:58.460 --> 00:58:00.360
Vielleicht noch mal ganz kurz zu dem Packaging.

00:58:00.360 --> 00:58:04.780
Also ihr wollt ein Paket auf PyPI veröffentlichen.

00:58:04.780 --> 00:58:05.980
Das ist so das, was dahinter steht.

00:58:05.980 --> 00:58:09.380
Du meinst mit dem Publishen gerade?

00:58:09.380 --> 00:58:10.380
Ja.

00:58:10.380 --> 00:58:12.120
Ja, genau. Stimmt.

00:58:12.120 --> 00:58:13.460
Das kann man vielleicht noch einmal kurz erklären,

00:58:13.460 --> 00:58:16.820
dass man bei Packaging zwei verschiedene Schritte dann hat.

00:58:16.820 --> 00:58:19.080
Also man kann den Build-Schritt machen.

00:58:19.080 --> 00:58:22.140
Das bedeutet, dass ein wheel-File erstellt wird,

00:58:22.140 --> 00:58:27.980
was so das Format ist, mit dem das Package beschrieben wird.

00:58:27.980 --> 00:58:30.220
Und da ist dann wirklich auch alles drin, was das Package braucht.

00:58:30.220 --> 00:58:33.280
Das ist auch letztlich das, was von PyPI gezogen wird,

00:58:33.280 --> 00:58:36.080
wenn man pip install was auch immer macht.

00:58:36.080 --> 00:58:40.680
Und es wird ein tarball-File erstellt, so .tar.gz.

00:58:40.680 --> 00:58:44.480
Und der Publish-Step ist dann,

00:58:44.480 --> 00:58:49.040
dass man diese Dateien zu PyPI oder zu irgendeinem anderen Index

00:58:49.040 --> 00:58:51.600
veröffentlicht, was man ja gar nicht unbedingt machen möchte.

00:58:51.600 --> 00:58:53.740
Manchmal reicht es auch schon, wenn man ein wheel-File erstellt,

00:58:53.740 --> 00:58:55.800
was man dann lokal hat, was andere installieren können.

00:58:55.800 --> 00:58:59.800
Für Wheels vielleicht noch.

00:58:59.800 --> 00:59:05.600
Bei Windows gibt es Goalke, eine wundervolle Bibliothek

00:59:05.600 --> 00:59:09.480
von gut gepatchten Wheels für Pakete,

00:59:09.480 --> 00:59:11.040
die man sonst bei Windows nicht einfach so installieren kann,

00:59:11.040 --> 00:59:12.340
weil man die irgendwie selber kompilieren müsste,

00:59:12.340 --> 00:59:15.900
wo dann Kompilierungs-Tools-Probleme auftauchen können oder die es nicht gibt.

00:59:15.900 --> 00:59:17.040
Aber auf Windows geht es immer.

00:59:17.040 --> 00:59:18.040
Also super tolle Quelle.

00:59:18.040 --> 00:59:20.280
Ich merke schon, wenn ich irgendwann mal doch Windows benutzen muss,

00:59:20.280 --> 00:59:21.280
dann werde ich auf dich zukommen.

00:59:21.280 --> 00:59:22.380
Du hast alle Hexen, die man so braucht.

00:59:22.380 --> 00:59:24.000
Ja, das ist einfach so viel Quatsch, die man irgendwann gegenfaut.

00:59:24.000 --> 00:59:25.820
Irgendwann geht es dann vielleicht, ja.

00:59:25.820 --> 00:59:32.240
Letztens hat jemand einen ganz alten Webcomic repostet

00:59:32.240 --> 00:59:36.300
auf Mastodon von 2004 oder so.

00:59:36.300 --> 00:59:39.700
Ich weiß nicht, welcher Webcomic das jetzt war.

00:59:39.700 --> 00:59:42.780
Man sieht halt irgendwie so Star-Trek-Setting

00:59:42.780 --> 00:59:46.620
und im Hintergrund irgendwie Klingonen sich mit so Schmerzstöcken quälen

00:59:46.620 --> 00:59:48.000
und einem vor dem Grund sagen so,

00:59:48.000 --> 00:59:50.640
oh, ich habe was noch viel, viel Härteres gefunden als Schmerzstöcke.

00:59:50.640 --> 00:59:53.600
Irgendwie ist dann hier einfach Windows auf meinem Laptop.

00:59:53.600 --> 00:59:59.780
Obwohl man tatsächlich dazu sagen muss, ja,

00:59:59.780 --> 01:00:04.120
also mit den neuesten Power-Shades und den neuesten Windows-Terminals

01:00:04.120 --> 01:00:07.180
und wenn man das so ein bisschen beherrscht,

01:00:07.180 --> 01:00:11.060
kann man auch ohne VSA einigermaßen gut entwickeln.

01:00:11.060 --> 01:00:13.320
Es gibt halt so ein paar Sachen, die gibt es noch nicht als Pakete.

01:00:13.320 --> 01:00:17.440
Aber für die meisten Sachen geht es ordentlich.

01:00:18.000 --> 01:00:21.760
Und mittlerweile würde ich jetzt behaupten, auch für Windows.

01:00:21.760 --> 01:00:23.120
Du kennst dich damit sicherlich gut aus.

01:00:23.120 --> 01:00:24.400
Ja, ich muss halt damit die ganze Zeit arbeiten.

01:00:24.400 --> 01:00:26.260
Also ich würde es auch jetzt nicht unbedingt immer machen wollen,

01:00:26.260 --> 01:00:27.880
aber es geht irgendwie schon.

01:00:27.880 --> 01:00:31.640
Also ich brauche keinen Docker mehr, wie es vorher die ganze Zeit war.

01:00:31.640 --> 01:00:33.400
Dann muss man halt einfach Docker installieren und dann hält das laufend.

01:00:33.400 --> 01:00:34.380
Ja, mit Docker geht es natürlich.

01:00:34.380 --> 01:00:37.280
Aber auch da hast du natürlich Probleme.

01:00:37.280 --> 01:00:38.700
Genau, ja.

01:00:38.700 --> 01:00:40.580
Und das wird nach einer Zeit alles ein bisschen langsamer und hässlich.

01:00:40.580 --> 01:00:42.420
Aber es geht auch mittlerweile relativ vieles

01:00:42.420 --> 01:00:45.280
oder eigentlich alles nativ direkt mit Ausnahmen.

01:00:45.280 --> 01:00:46.200
Es gibt so ein paar Pakete, die laufen.

01:00:46.200 --> 01:00:46.960
Ansible zum Beispiel.

01:00:47.800 --> 01:00:50.820
Zickt halt rum, muss halt doch ein Docker laufen oder auf ESL oder sowas.

01:00:50.820 --> 01:00:54.680
Ich habe gerade noch gedacht, mit der Frage von gerade,

01:00:54.680 --> 01:00:58.840
mit den verschiedenen Tools, was, finde ich, auch eine große Rolle spielt,

01:00:58.840 --> 01:01:01.580
ist, in welchem Entwicklungsstadium die sich befinden,

01:01:01.580 --> 01:01:04.160
beziehungsweise wie aktiv die weiterentwickelt werden.

01:01:04.160 --> 01:01:06.800
Weil Rai zum Beispiel ist ja ein sehr junges Tool.

01:01:06.800 --> 01:01:08.620
Das ist erst, glaube ich, im Mai rausgekommen

01:01:08.620 --> 01:01:14.580
und ist auch eigentlich entstanden mehr so als Spielerei, würde ich mal sagen.

01:01:14.580 --> 01:01:16.800
Er hat jetzt nicht gedacht, der Auto, dass das jetzt ein Tool wird,

01:01:16.800 --> 01:01:17.780
was total viel läuft.

01:01:17.780 --> 01:01:18.580
Dass das für viele Leute genutzt wird.

01:01:18.580 --> 01:01:20.800
Das nutzen aber voll viele Leute.

01:01:20.800 --> 01:01:23.100
Also Rust jetzt hat ja, also Armin Gronacher ist wahrscheinlich der Typ,

01:01:23.100 --> 01:01:24.020
der hat Flask gemacht, ne?

01:01:24.020 --> 01:01:26.880
Ja, ganz viele, ganz viele Projekte.

01:01:26.880 --> 01:01:28.500
Jochen weiß da mehr.

01:01:28.500 --> 01:01:31.280
Aber ja, also er macht jetzt gar keinen Python mehr hauptsächlich,

01:01:31.280 --> 01:01:32.160
wenn ich das richtig verstehe.

01:01:32.160 --> 01:01:35.000
Aber er benutzt halt Python noch manchmal.

01:01:35.000 --> 01:01:36.820
Und dafür hat er dann in Rust so eine Lösung geschrieben,

01:01:36.820 --> 01:01:39.380
die tatsächlich so ein bisschen nach dem aussieht,

01:01:39.380 --> 01:01:41.020
was sich eigentlich die meisten Leute so wünschen.

01:01:41.020 --> 01:01:43.740
Aber ja, also ich habe es auch so ein bisschen ausprobiert

01:01:43.740 --> 01:01:46.680
und dachte mir so, na, nicht ganz das, was ich brauche.

01:01:47.580 --> 01:01:49.900
Was hat dir denn gefehlt, oder?

01:01:49.900 --> 01:01:52.000
Also der Stil, wie.

01:01:52.000 --> 01:01:54.100
Also vor allem das Project Scaffolding

01:01:54.100 --> 01:01:56.220
und wo die Sachen dann liegen und so.

01:01:56.220 --> 01:01:58.520
Das ist halt alles opinionated.

01:01:58.520 --> 01:02:00.260
Ich meine, ist halt, sein gutes Recht,

01:02:00.260 --> 01:02:01.980
er macht halt sein Kram, ist ja voll super für ihn,

01:02:01.980 --> 01:02:03.420
aber nicht das, was ich machen würde.

01:02:03.420 --> 01:02:05.200
Ich hätte das gerne konfigurierbarer oder so.

01:02:05.200 --> 01:02:07.920
Und würde halt das gerne auf meinen Stil umbringen.

01:02:07.920 --> 01:02:08.100
Ja.

01:02:08.100 --> 01:02:10.800
Ich glaube, das muss man halt auch so ein bisschen im Kopf behalten,

01:02:10.800 --> 01:02:12.360
wenn man jetzt sagt, okay, wir benutzen Rai

01:02:12.360 --> 01:02:13.880
und wir benutzen das vielleicht auch im Projekt,

01:02:13.880 --> 01:02:16.140
sich einmal vor Augen zu führen, okay,

01:02:16.140 --> 01:02:17.560
das ist, wird jetzt gerade eben,

01:02:17.560 --> 01:02:19.760
von Armin entwickelt und gerade ist es auch sehr aktiv.

01:02:19.760 --> 01:02:21.660
Also der bringt da viele neue Releases raus,

01:02:21.660 --> 01:02:23.300
aber man weiß ja nicht so wirklich, was damit passiert.

01:02:23.300 --> 01:02:24.660
Genau, weil im halben Jahr hat er was anderes vor,

01:02:24.660 --> 01:02:26.800
hat einen anderen Job und hat ein neues Hobby oder sowas.

01:02:26.800 --> 01:02:29.020
Dann ist halt, liegt es halt darum, wie es halt oft so ist, ne?

01:02:29.020 --> 01:02:30.260
Genau.

01:02:30.260 --> 01:02:32.420
Und sowas wie Poetry, würde ich jetzt sagen,

01:02:32.420 --> 01:02:33.620
ist schon so lange etabliert,

01:02:33.620 --> 01:02:36.660
dass es eher sicherer, dass das auch weiterverwendet wird.

01:02:36.660 --> 01:02:39.260
Ja, also ich habe,

01:02:39.260 --> 01:02:40.680
also weil Jochen halt sagte,

01:02:40.680 --> 01:02:41.980
er nimmt jetzt auch kein Poetry mehr

01:02:41.980 --> 01:02:43.100
und er macht das alles über PipTools,

01:02:43.100 --> 01:02:44.560
auch das mal benutzt.

01:02:44.560 --> 01:02:46.600
Und das gefiel mir auch überhaupt nicht.

01:02:46.600 --> 01:02:47.540
Ich finde es total fürchterlich,

01:02:47.540 --> 01:02:48.980
weil ich, ja, es ist so ein bisschen,

01:02:48.980 --> 01:02:51.620
ich benutze es auch nicht pur, sozusagen,

01:02:51.620 --> 01:02:53.040
sondern ich verdünne das halt.

01:02:53.040 --> 01:02:55.660
Ich habe dann noch so Wrapper außenrum,

01:02:55.660 --> 01:02:56.120
die ich dann benutze.

01:02:56.120 --> 01:02:58.180
Genau, also man muss sich halt einen eigenen Wrapper drumherum bauen

01:02:58.180 --> 01:03:00.280
und das, damit das halt alles wieder irgendwie nett ist und so.

01:03:00.280 --> 01:03:04.240
Ja, insofern, ob man das Leuten einfach so zumuten kann.

01:03:04.240 --> 01:03:06.060
Ja, also die Frage ist halt auch da, ne,

01:03:06.060 --> 01:03:07.400
wenn ich halt jetzt Neulinge im Projekt habe,

01:03:07.400 --> 01:03:08.840
irgendwie ein Junior-Dev oder so,

01:03:08.840 --> 01:03:10.660
der gerade Python das erste Mal in der Hand hat,

01:03:10.660 --> 01:03:11.640
wie erkläre ich ihm das denn jetzt?

01:03:11.640 --> 01:03:13.500
Ja, ich habe übrigens das gemacht und das gemacht

01:03:13.500 --> 01:03:15.100
und das gemacht und das gemacht und dann hier von oben rein

01:03:15.100 --> 01:03:16.720
und von hinten durch, dann, oh.

01:03:17.520 --> 01:03:18.540
Oh, das ist aber kompliziert,

01:03:18.540 --> 01:03:20.080
dann ist er direkt nach zehn Minuten ausgestiegen

01:03:20.080 --> 01:03:21.020
und fängt hier von vorne an.

01:03:21.020 --> 01:03:22.480
Das glaube ich auch.

01:03:22.480 --> 01:03:27.360
Viele der Tools benutzen auch andere Tools under the hood.

01:03:27.360 --> 01:03:29.120
Also, Rye zum Beispiel benutzt Pip-Tools

01:03:29.120 --> 01:03:32.320
und natürlich benutzen viele der anderen dann auch Pip.

01:03:32.320 --> 01:03:34.240
Also, wenn man jetzt irgendwie Poetry-Add,

01:03:34.240 --> 01:03:35.480
irgendein Package macht,

01:03:35.480 --> 01:03:38.760
dann nutzt das, glaube ich, Pip oder Pip-X,

01:03:38.760 --> 01:03:39.640
ich bin mir gar nicht sicher.

01:03:39.640 --> 01:03:42.340
Aber viele von diesen grundlegenden Tools

01:03:42.340 --> 01:03:43.540
werden eben auch wiederverwendet

01:03:43.540 --> 01:03:47.120
und haben dann aber trotzdem diese übergeordneten Befehle

01:03:47.500 --> 01:03:48.120
Poetry-Add.

01:03:48.120 --> 01:03:51.900
Ja, also Pip-X ist auch nochmal interessant.

01:03:51.900 --> 01:03:53.820
Also, es gibt ja verschiedene Wege zum Beispiel,

01:03:53.820 --> 01:03:55.780
dann sowas wie Poetry auch zu installieren.

01:03:55.780 --> 01:03:57.680
Man kann es halt einmal selber irgendwie

01:03:57.680 --> 01:03:59.100
von Gitter ziehen und bauen,

01:03:59.100 --> 01:04:01.600
man kann es halt irgendwie über Pip selbst installieren,

01:04:01.600 --> 01:04:03.700
man kann es über Pip-X installieren

01:04:03.700 --> 01:04:05.580
oder über, ich glaube, der empfohlene Weg ist,

01:04:05.580 --> 01:04:07.340
das Installationsskript zu verwenden.

01:04:07.340 --> 01:04:09.560
Ist es immer noch irgendwie,

01:04:09.560 --> 01:04:12.140
man nimmt die URL und pipet die nach Curl,

01:04:12.140 --> 01:04:15.040
oder zieht die per Curl und pipet die in die Shell oder so?

01:04:15.040 --> 01:04:15.780
So ähnlich, ja.

01:04:15.780 --> 01:04:17.480
Aber es gibt mittlerweile ein neues Skript und die anderen,

01:04:17.480 --> 01:04:19.280
beiden alten Skripte sind auch wieder deprecated

01:04:19.280 --> 01:04:20.200
und die sollen wir nicht mehr verwenden

01:04:20.200 --> 01:04:21.100
und da gibt es dann irgendeine Warning

01:04:21.100 --> 01:04:22.440
und es funktioniert nicht mehr und es geht kaputt.

01:04:22.440 --> 01:04:24.240
Also, da gibt es übrigens auch bittere,

01:04:24.240 --> 01:04:26.120
also, ja, ich meine, Security-mäßig

01:04:26.120 --> 01:04:28.280
immer schon so ein bisschen fragwürdig, das so zu machen.

01:04:28.280 --> 01:04:29.720
Aber es gibt halt auch viele Dinge,

01:04:29.720 --> 01:04:30.600
die die Leute vielleicht nicht wissen,

01:04:30.600 --> 01:04:31.620
die halt echt übel sind.

01:04:31.620 --> 01:04:33.880
Selbst wenn man bei Curl halt sagt,

01:04:33.880 --> 01:04:35.600
irgendwie benutzt doch bitte SSL,

01:04:35.600 --> 01:04:37.040
macht es zuerst nur Request auf HTTP.

01:04:37.040 --> 01:04:39.860
Das heißt, wenn ein Angreifer dazwischen sitzt,

01:04:39.860 --> 01:04:41.760
der kann das, selbst wenn du sagst,

01:04:41.760 --> 01:04:43.480
verwende bitte HTTPS,

01:04:43.480 --> 01:04:45.840
wenn du das nicht in die URL dazu geschrieben hast,

01:04:47.460 --> 01:04:48.540
Konfigurationsoption gesetzt hast,

01:04:48.540 --> 01:04:50.840
kann sich jemand dazwischen klemmen

01:04:50.840 --> 01:04:52.760
und einfach den ersten HTTP-Request abfangen

01:04:52.760 --> 01:04:54.440
und dann was zurückliefern.

01:04:54.440 --> 01:04:56.040
Das heißt, wenn jemand in deinem Netzwerk sitzt,

01:04:56.040 --> 01:04:57.720
dann kann er dir da Dinge unterschieben,

01:04:57.720 --> 01:04:58.380
wenn du das so machst.

01:04:58.380 --> 01:05:00.480
Also, das ist schon, also, naja.

01:05:00.480 --> 01:05:02.000
Aber, ja, ich verstehe,

01:05:02.000 --> 01:05:03.640
warum Leute auf die Idee kommen, das so zu machen,

01:05:03.640 --> 01:05:07.300
weil, ja, die Alternativen sind auch alle nicht so toll.

01:05:07.300 --> 01:05:09.880
Gut, also, Rust-Up ist auch per Curl übrigens,

01:05:09.880 --> 01:05:10.760
das an der Stelle mal.

01:05:10.760 --> 01:05:11.340
Ja.

01:05:11.340 --> 01:05:13.500
Ja.

01:05:13.500 --> 01:05:17.140
Ja, also, ist die Frage auch noch interessant.

01:05:17.440 --> 01:05:18.480
Habt ihr irgendwelche Pakete,

01:05:18.480 --> 01:05:20.660
die ihr in das System Python mit direkt installiert?

01:05:20.660 --> 01:05:22.540
Ganz verpflichtend, oder sagt ihr alles,

01:05:22.540 --> 01:05:23.720
nein, pur, da kommt nichts dran,

01:05:23.720 --> 01:05:26.580
das ist rein Standard-Lib.

01:05:26.580 --> 01:05:28.200
Also, ich installiere tatsächlich immer Django.

01:05:28.200 --> 01:05:29.620
Ich versuche tatsächlich zu vermeiden.

01:05:29.620 --> 01:05:31.360
Also, bei mir ist immer Django drin.

01:05:31.360 --> 01:05:32.500
Nee, bei mir nicht.

01:05:32.500 --> 01:05:34.560
Also, ich hätte gerne immer Start-Project zum Beispiel.

01:05:34.560 --> 01:05:36.840
Ach so, damit du quasi im Template

01:05:36.840 --> 01:05:38.420
direkt immer was erzeugen kannst.

01:05:38.420 --> 01:05:38.660
Ja.

01:05:38.660 --> 01:05:39.420
Okay, ja gut.

01:05:39.420 --> 01:05:40.560
Und Rich ist immer drin,

01:05:40.560 --> 01:05:42.780
weil ich habe immer so ein paar Sachen in meiner Shell,

01:05:42.780 --> 01:05:44.660
die auf Python basiert sind

01:05:44.660 --> 01:05:45.720
und da hätte ich gerne immer Rich drin

01:05:45.720 --> 01:05:47.420
und Typer hätte ich halt in dem Fall auch gerne drin,

01:05:47.420 --> 01:05:49.300
weil ich halt viele Kommando-Talent-Tools,

01:05:49.300 --> 01:05:50.900
die ich im System weit benutze, baue.

01:05:50.900 --> 01:05:52.400
Deswegen auch da.

01:05:52.400 --> 01:05:55.020
Ja, aber das sind dann schon wieder so Dependencies,

01:05:55.020 --> 01:05:56.080
die ich dazu packen muss.

01:05:56.080 --> 01:05:58.700
Ich habe tatsächlich noch nie Django benutzt.

01:05:58.700 --> 01:05:59.560
Warum hast du das?

01:05:59.560 --> 01:06:00.640
Also, du hast das gerade kurz erwähnt,

01:06:00.640 --> 01:06:02.760
aber nicht so, dass ich das verstehen konnte.

01:06:02.760 --> 01:06:04.700
Also, das ist eigentlich nur ein einziger Grund.

01:06:04.700 --> 01:06:07.720
Normalerweise, wenn ich ein neues Projekt mache,

01:06:07.720 --> 01:06:09.620
benutze ich Django Start-Project,

01:06:09.620 --> 01:06:11.940
was quasi den Scaffold macht

01:06:11.940 --> 01:06:13.140
und ich benutze dafür mein eigenes Template.

01:06:13.140 --> 01:06:14.240
Du kannst halt dann bei Start-Project

01:06:14.240 --> 01:06:15.540
einen Pfad zu deinem Template angeben

01:06:15.540 --> 01:06:17.400
und damit aber Start-Project

01:06:17.400 --> 01:06:19.260
verfügbar ist,

01:06:19.260 --> 01:06:20.600
muss halt Django schon da sein.

01:06:20.600 --> 01:06:24.080
Und deswegen zähle ich Django einfach direkt mit.

01:06:24.080 --> 01:06:24.940
Ja, das ergibt Sinn.

01:06:24.940 --> 01:06:27.900
Dieses mit dem Project Scaffolding,

01:06:27.900 --> 01:06:28.860
da habe ich auch gerade daran gedacht,

01:06:28.860 --> 01:06:30.300
dass die meisten Packaging-Tools,

01:06:30.300 --> 01:06:31.680
die haben da auch eben Befehle für.

01:06:31.680 --> 01:06:33.360
Das ist vielleicht ganz gut zu wissen.

01:06:33.360 --> 01:06:34.700
Also, normalerweise hat man irgendwie

01:06:34.700 --> 01:06:37.740
Tests-Directory und Source-Directory

01:06:37.740 --> 01:06:39.880
und die meisten Tools,

01:06:39.880 --> 01:06:41.900
beispielsweise jetzt Hedge-Poetry,

01:06:41.900 --> 01:06:43.600
die haben alle einen Befehl.

01:06:43.600 --> 01:06:45.540
Könnte irgendwie Hedge-Init,

01:06:45.540 --> 01:06:47.380
nee, Hedge-New und dann sozusagen

01:06:47.380 --> 01:06:48.480
so eine Init-Flag beispielsweise,

01:06:48.480 --> 01:06:51.180
die erstellen dann das PyProject-Hummel-File

01:06:51.180 --> 01:06:51.960
schon mal für einen.

01:06:51.960 --> 01:06:54.260
Da sind dann auch viele der Tools schon konfiguriert,

01:06:54.260 --> 01:06:56.160
wie Black beispielsweise

01:06:56.160 --> 01:06:57.980
und dann auch diese Folder-Struktur.

01:06:57.980 --> 01:07:00.100
Also, das kann auch ganz nett sein,

01:07:00.100 --> 01:07:02.200
wenn man das nicht alles selbst machen will.

01:07:02.200 --> 01:07:03.700
Ja, oder wenn man das mag, ja.

01:07:03.700 --> 01:07:05.440
Das ist zum Beispiel so ein Punkt,

01:07:05.440 --> 01:07:05.960
wo ich sagen würde,

01:07:05.960 --> 01:07:07.020
ich hätte da gerne,

01:07:07.020 --> 01:07:08.480
dass er dann ein Template nimmt,

01:07:08.480 --> 01:07:09.240
was ich ihm vorgebe,

01:07:09.240 --> 01:07:10.620
weil ich nicht mag, wie der es macht.

01:07:10.620 --> 01:07:11.600
Und das ist auch der Grund.

01:07:11.600 --> 01:07:13.260
Also, es gibt noch ein paar andere Möglichkeiten,

01:07:13.260 --> 01:07:14.600
so ein Project Scaffolding zu machen,

01:07:14.600 --> 01:07:15.820
sowas wie Cookie Cutter oder so.

01:07:15.820 --> 01:07:17.360
Das ist halt,

01:07:17.360 --> 01:07:19.640
also ich finde es mittlerweile recht bloated,

01:07:19.640 --> 01:07:21.260
wie das haben wir früher halt so ein paar Mal öfter gemacht,

01:07:21.260 --> 01:07:22.340
aber da ist halt so viel Zeug drin,

01:07:22.340 --> 01:07:23.020
das du halt nie brauchst,

01:07:23.020 --> 01:07:24.040
dass du halt alles immer wegschmeißt

01:07:24.040 --> 01:07:24.780
und rausschneiden musst.

01:07:24.780 --> 01:07:27.000
Total, ich weiß nicht mehr, warum man so.

01:07:27.000 --> 01:07:28.620
Wenn man jetzt so ein Standardprojekt,

01:07:28.620 --> 01:07:30.860
Django-Cookie-Cutter-Projekt nimmt oder so,

01:07:30.860 --> 01:07:31.680
genau, das habe ich früher,

01:07:31.680 --> 01:07:33.920
weil früher war das für mich alles so,

01:07:33.920 --> 01:07:35.480
oh, es ist so viel Zeug,

01:07:35.480 --> 01:07:36.780
was man irgendwie einstellen muss und so,

01:07:36.780 --> 01:07:39.200
dann gut, dass da jemand anders drüber nachdenken muss

01:07:39.200 --> 01:07:39.740
und nicht ich.

01:07:39.740 --> 01:07:41.980
Und inzwischen denke ich mir auch so,

01:07:41.980 --> 01:07:43.440
na ja, nee, ich mache das lieber selber.

01:07:43.440 --> 01:07:44.700
Aber das Problem ist,

01:07:44.700 --> 01:07:46.160
wenn jetzt jemand anfängt,

01:07:46.260 --> 01:07:47.080
was empfiehlt man dem?

01:07:47.080 --> 01:07:48.980
Ich würde fast sagen,

01:07:48.980 --> 01:07:50.080
gar keinen Scaffold,

01:07:50.080 --> 01:07:50.880
sondern alles selber bauen.

01:07:50.880 --> 01:07:53.600
Ja, aber dann hat er halt eine schwere Lehrkurve

01:07:53.600 --> 01:07:54.320
erst mal vor sich.

01:07:54.320 --> 01:07:55.560
Und es ist auch Kurve Buchung,

01:07:55.560 --> 01:07:56.280
du musst alles aufräumen.

01:07:56.280 --> 01:07:57.340
Ich kenne halt auch so Kundenprojekte,

01:07:57.340 --> 01:07:58.560
wo die Leute an da irgendwas angefangen haben

01:07:58.560 --> 01:07:59.660
und denkst dir so, oh mein Gott.

01:07:59.660 --> 01:08:02.900
Ja, Cookie-Cutter ist vielleicht gar nicht so doof,

01:08:02.900 --> 01:08:04.620
es gibt ja auch für Data-Science-Templates oder sowas

01:08:04.620 --> 01:08:06.560
und vielleicht kann man da auch sein eigenes Template bauen,

01:08:06.560 --> 01:08:07.100
ich weiß es nicht.

01:08:07.100 --> 01:08:09.220
Ich habe es für Django halt,

01:08:09.220 --> 01:08:10.340
Django-Template.

01:08:10.340 --> 01:08:12.040
Interessanterweise,

01:08:12.040 --> 01:08:15.340
man kann mit diesem Django-Start-Project-Template

01:08:16.240 --> 01:08:18.120
das auch missbrauchen für Nicht-Django-Projekte.

01:08:18.120 --> 01:08:21.080
Das heißt, du kannst halt da tatsächlich auch andere Projekte,

01:08:21.080 --> 01:08:22.660
die gar nicht Django brauchen, haben.

01:08:22.660 --> 01:08:24.520
Deswegen habe ich Django tatsächlich am Anfang installiert,

01:08:24.520 --> 01:08:25.940
weil ich kann einfach arbiträre Projekte

01:08:25.940 --> 01:08:26.980
mit meinem Django-Template bauen,

01:08:26.980 --> 01:08:30.080
was im Prinzip sowas ähnliches macht,

01:08:30.080 --> 01:08:32.380
wo einfach Ginger ersetzen für irgendwelche Python-Files

01:08:32.380 --> 01:08:33.780
und halt Dietrich-Strukturen bauen.

01:08:33.780 --> 01:08:37.680
Mir ist fast so wie Cookie-Cutter nicht ganz so mächtig

01:08:37.680 --> 01:08:39.660
und ich brauche es halt auch nur so für kleine Sachen.

01:08:39.660 --> 01:08:41.940
Ich mache jetzt auch nicht so mega große Dinge, aber ja.

01:08:41.940 --> 01:08:43.920
Ja, und ein Problem, was man dabei hat, ist halt,

01:08:43.920 --> 01:08:46.120
was ist, wenn sich an dem Basis-Template irgendwas ändert?

01:08:46.220 --> 01:08:47.580
Und man möchte jetzt alle Projekte,

01:08:47.580 --> 01:08:49.160
die man mit dem Template erzeugt hat,

01:08:49.160 --> 01:08:50.180
auf den aktuellen Stand bringen.

01:08:50.180 --> 01:08:50.920
Wie macht man denn das?

01:08:50.920 --> 01:08:52.960
Das ist eine gute Frage.

01:08:52.960 --> 01:08:54.560
Ich bin da gerade dabei, mir was zu überlegen.

01:08:54.560 --> 01:08:56.600
Und zwar ist das sowas wie,

01:08:56.600 --> 01:08:59.880
du musst dir halt den Commit merken,

01:08:59.880 --> 01:09:02.680
von dem du das Template gescaffoldet hast.

01:09:02.680 --> 01:09:07.180
Dann musst du einen neuen Brand erstellen,

01:09:07.180 --> 01:09:11.920
musst dann den neuen Commit-Hash auschecken,

01:09:11.920 --> 01:09:13.260
machst dazu einen Div,

01:09:13.260 --> 01:09:14.980
dann hast du halt den Div von deinem Template

01:09:14.980 --> 01:09:16.200
und dann machst du ...

01:09:16.200 --> 01:09:18.160
dann machst du einen Rebase von deinem ganzen Projekt

01:09:18.160 --> 01:09:19.800
auf diesen Div drauf.

01:09:19.800 --> 01:09:21.780
So ungefähr funktioniert das.

01:09:21.780 --> 01:09:23.540
Und dafür schreibe ich gerade zum Kommando

01:09:23.540 --> 01:09:24.140
und das funktioniert.

01:09:24.140 --> 01:09:25.020
Okay.

01:09:25.020 --> 01:09:26.960
Ja, und das ist aber ...

01:09:26.960 --> 01:09:28.480
Ja, ich habe es Cherry genannt.

01:09:28.480 --> 01:09:29.460
Ich mache dann CC Cherry

01:09:29.460 --> 01:09:31.420
und dann pickt der quasi alle Changes

01:09:31.420 --> 01:09:33.360
von meinem Template-Scaffold.

01:09:33.360 --> 01:09:34.980
Okay.

01:09:34.980 --> 01:09:37.840
Du musst dich halt an zwei Sachen halten.

01:09:37.840 --> 01:09:38.960
Zum Beispiel darfst du halt jetzt nicht

01:09:38.960 --> 01:09:40.800
an den Sachen, die das Template bereitstellt,

01:09:40.800 --> 01:09:41.380
eigentlich rumfummeln.

01:09:41.380 --> 01:09:42.340
Ich habe zum Beispiel so Core-Sachen,

01:09:42.340 --> 01:09:43.400
die kommen halt immer aus dem Template.

01:09:43.400 --> 01:09:45.040
Das heißt, ich muss die immer im Template bauen

01:09:45.040 --> 01:09:46.180
und dann picken.

01:09:46.180 --> 01:09:48.080
Anstatt, dass ich Sachen selber im Core ändere.

01:09:48.080 --> 01:09:50.300
Ich könnte halt nur Sachen dazufügen

01:09:50.300 --> 01:09:52.380
und dann sonst wird es halt immer Mesh-Konflikte geben,

01:09:52.380 --> 01:09:54.160
wo du halt immer dann manuell rumfummeln musst.

01:09:54.160 --> 01:09:55.440
Deswegen würde ich einfach sagen,

01:09:55.440 --> 01:09:56.900
meine Konvention ist das dann einfach nicht zu machen,

01:09:56.900 --> 01:09:57.640
weil das brauche ich auch nicht,

01:09:57.640 --> 01:09:59.760
weil ich habe halt dann E-Apps in der Applikation,

01:09:59.760 --> 01:10:01.060
die für die Applikation da sind

01:10:01.060 --> 01:10:01.880
und dann machen die halt nur Sachen,

01:10:01.880 --> 01:10:02.640
die die Applikation macht

01:10:02.640 --> 01:10:04.320
und Core-Funktionalität kommt halt immer dann

01:10:04.320 --> 01:10:06.080
aus der Basis raus.

01:10:06.080 --> 01:10:06.880
Aber, ja.

01:10:06.880 --> 01:10:09.720
Oder auch noch eine Frage.

01:10:09.720 --> 01:10:10.540
Genau, gibt es irgendwie,

01:10:10.540 --> 01:10:12.560
dass bei diesen ganzen Tools

01:10:12.560 --> 01:10:13.800
gibt es da auch so Funktionalitäten für.

01:10:13.800 --> 01:10:16.160
Ich habe jetzt irgendwie 30 Reports,

01:10:16.160 --> 01:10:18.360
Repositories, die alle relativ ähnlich sind.

01:10:19.360 --> 01:10:21.480
jetzt gern zum Beispiel, weiß ich nicht, Poetry Update

01:10:21.480 --> 01:10:23.120
oder was auch immer, mal

01:10:23.120 --> 01:10:24.980
auf allen ausführen? Gibt es da

01:10:24.980 --> 01:10:25.800
Support?

01:10:25.800 --> 01:10:28.960
Ich hatte den Fall noch nie, das kann

01:10:28.960 --> 01:10:31.320
gut sein. Also habe ich noch

01:10:31.320 --> 01:10:32.980
nie ausprobiert, ausprobieren müssen.

01:10:32.980 --> 01:10:37.020
Ja, und ich kenne das auch immer so, dass dann Leute sich

01:10:37.020 --> 01:10:39.300
ihre eigenen Dinge zum Verwalten von vielen Projekten

01:10:39.300 --> 01:10:39.900
schreiben.

01:10:39.900 --> 01:10:43.380
Also ich glaube, das ist sehr gefährlich,

01:10:43.380 --> 01:10:45.060
weil die Projekte alle so unterschiedlich sind,

01:10:45.060 --> 01:10:46.620
da alle gleichzeitig anfassen.

01:10:46.620 --> 01:10:48.620
Ja, also zum Beispiel

01:10:48.620 --> 01:10:50.400
in der letzten

01:10:50.400 --> 01:10:52.300
Jungle Chat Episode wurde Adam Johnson gefragt,

01:10:52.300 --> 01:10:54.480
wie er das hinkriegt, dass er irgendwie 70

01:10:54.480 --> 01:10:56.400
populäre Repositories

01:10:56.400 --> 01:10:58.520
maintained. Oder es gibt ja

01:10:58.520 --> 01:10:59.480
Leute, die da ganz viel haben.

01:10:59.480 --> 01:11:02.340
Der erste Schritt ist, dass man alle Projekte ungefähr auf den gleichen

01:11:02.340 --> 01:11:04.560
Status bringen muss. Und dann kann man

01:11:04.560 --> 01:11:05.480
mit Skripten drüber gehen.

01:11:05.480 --> 01:11:08.560
Ja, ich habe auch

01:11:08.560 --> 01:11:10.220
für die Produktivsachen so ein Ansible-Book,

01:11:10.220 --> 01:11:12.320
das halt dann hingeht und einfach Python updatet.

01:11:12.320 --> 01:11:14.640
Also zumindest Python Minor oder so, oder Buckmix geht ja noch.

01:11:14.640 --> 01:11:16.520
Aber wenn du halt Major, dann musst du

01:11:16.520 --> 01:11:18.200
halt eigentlich immer das Projekt auschecken, gucken, ob es geht.

01:11:18.620 --> 01:11:19.800
Noch so eine Frage halt.

01:11:19.800 --> 01:11:21.940
Wie macht ihr das dann mit Tests für

01:11:21.940 --> 01:11:24.280
Produktion, für so Builds in verschiedenen Versionen?

01:11:24.280 --> 01:11:25.660
Nehmt ihr da alle Tox? Oder

01:11:25.660 --> 01:11:27.600
wie macht ihr das am besten?

01:11:27.600 --> 01:11:30.340
Ja, genau. Also ich habe

01:11:30.340 --> 01:11:32.060
bisher immer Tox verwendet.

01:11:32.060 --> 01:11:34.420
Auch weil es eben meistens schon, wenn man

01:11:34.420 --> 01:11:36.140
jetzt irgendwie Hedge oder ähnliches hat, dann

01:11:36.140 --> 01:11:38.400
mitkonfiguriert ist. Einfach der einfache

01:11:38.400 --> 01:11:40.300
Teil. Ah, okay. Also Hedge konfiguriert Tox auch

01:11:40.300 --> 01:11:42.500
direkt mit... Soweit ich weiß,

01:11:42.500 --> 01:11:44.300
ja. Und dann sagt ihr einfach,

01:11:44.300 --> 01:11:46.200
okay, ich unterstütze bis zu dieser

01:11:46.200 --> 01:11:47.540
und dieser Version runter und

01:11:47.540 --> 01:11:48.200
ähm...

01:11:48.620 --> 01:11:50.460
Dann installiert...

01:11:50.460 --> 01:11:51.820
Also was macht Tox nochmal? Also Tox

01:11:51.820 --> 01:11:54.560
macht verschiedene Pythons. Ja, das

01:11:54.560 --> 01:11:56.200
erzeugt dir zum Beispiel alle virtuell, also die

01:11:56.200 --> 01:11:58.700
unterschiedlichen Virtual Amps in unterschiedlichen Versionen

01:11:58.700 --> 01:12:00.300
und lässt dann da deine Tests

01:12:00.300 --> 01:12:02.540
gegenlaufen und so und macht dann hinterher eine Zusammenfassung,

01:12:02.540 --> 01:12:03.980
was alles funktioniert oder nicht funktioniert hat.

01:12:03.980 --> 01:12:06.440
Woher nimmt denn Tox die Python-Version?

01:12:06.440 --> 01:12:10.680
Ähm...

01:12:10.680 --> 01:12:12.080
Das ist eine gute Frage.

01:12:12.080 --> 01:12:15.660
Da...

01:12:15.660 --> 01:12:16.020
Äh...

01:12:16.020 --> 01:12:17.820
Ich weiß gar nicht,

01:12:17.820 --> 01:12:18.580
ob es selber eine Möglichkeit

01:12:18.580 --> 01:12:18.600
gibt.

01:12:18.620 --> 01:12:20.700
Ob die auf der Maschine schon da sein müssen

01:12:20.700 --> 01:12:22.060
oder ob es selber...

01:12:22.060 --> 01:12:22.620
Docker oder...

01:12:22.620 --> 01:12:24.760
Nee, nee, nicht Docker. Docker, das glaube ich

01:12:24.760 --> 01:12:25.900
nicht, aber ich glaube...

01:12:25.900 --> 01:12:26.220
Aber muss da sein?

01:12:26.220 --> 01:12:28.800
Ich glaube, es kann die selber installieren

01:12:28.800 --> 01:12:30.580
tatsächlich. Ich glaube, weil es nicht da sein muss, weil

01:12:30.580 --> 01:12:32.700
ich glaube... Nee, ich

01:12:32.700 --> 01:12:34.520
hab... Ich hab wahrscheinlich alte

01:12:34.520 --> 01:12:36.560
Versionen nicht mehr, aber die Tox-Dinger testen

01:12:36.560 --> 01:12:38.640
auch gegen alte Python-Versionen und

01:12:38.640 --> 01:12:40.300
ähm... Das hat eigentlich immer funktioniert. Also

01:12:40.300 --> 01:12:41.780
wahrscheinlich... Also, so mein...

01:12:41.780 --> 01:12:44.580
Mein Guess wäre an der Stelle, ja,

01:12:44.580 --> 01:12:46.040
Tox macht das irgendwie selber, aber

01:12:46.040 --> 01:12:48.300
ich weiß es auch nicht genau. Okay, Bold Prediction.

01:12:48.620 --> 01:12:49.180
Ja.

01:12:49.180 --> 01:12:51.820
Es gibt auch Nox.

01:12:51.820 --> 01:12:54.260
Gar nicht so sicher. Auch noch ganz interessant,

01:12:54.260 --> 01:12:56.200
weil ich habe auch schon viel zu viel Zeit damit

01:12:56.200 --> 01:12:57.040
verwendet, irgendwie

01:12:57.040 --> 01:13:00.260
Tox-Inni so zu konfigurieren, wie ich das gerne hätte

01:13:00.260 --> 01:13:02.080
und dann kann man da ja...

01:13:02.080 --> 01:13:04.180
Und es dauert immer länger, als man denkt, dann funktioniert es doch nicht

01:13:04.180 --> 01:13:06.160
und dann... Und bei Nox

01:13:06.160 --> 01:13:08.240
kann man einfach Python-Code hinschreiben

01:13:08.240 --> 01:13:09.800
und das finden viele auch angenehmer.

01:13:09.800 --> 01:13:12.240
Ich habe es aber auch noch nicht, weil jetzt habe ich schon so viel...

01:13:12.240 --> 01:13:13.700
Jetzt unterliege ich der

01:13:13.700 --> 01:13:16.060
Sun-Cost-Fallacy und jetzt habe ich schon so viel Zeit

01:13:16.060 --> 01:13:18.600
in Tox-Innis investiert. Jetzt gehe ich davon nicht mehr.

01:13:18.600 --> 01:13:18.780
Weg.

01:13:18.780 --> 01:13:22.840
Ich habe gerade mal nebenbei nachgeguckt

01:13:22.840 --> 01:13:24.580
und es sieht so aus, als müsste man das vorher

01:13:24.580 --> 01:13:26.060
installiert haben. Ach doch, okay.

01:13:26.060 --> 01:13:29.840
Okay, also tatsächlich

01:13:29.840 --> 01:13:32.520
PyEnv und dann alle Versionen, die du halt testen willst,

01:13:32.520 --> 01:13:34.460
einmal draufhauen und dann Tox sagen,

01:13:34.460 --> 01:13:34.860
wo die sind.

01:13:34.860 --> 01:13:39.720
Ja, ja, ja.

01:13:39.720 --> 01:13:42.800
Also ich finde so Backwards-Compatibility

01:13:42.800 --> 01:13:44.620
Maintain auch fürchterlich, ne?

01:13:44.620 --> 01:13:46.600
Ja, aber...

01:13:46.600 --> 01:13:48.460
Ich nutze gerne sowas wie neue Sprachfeatures,

01:13:48.580 --> 01:13:50.060
einfach so direkt.

01:13:50.060 --> 01:13:53.020
Kann man ja auch so in Projekten,

01:13:53.020 --> 01:13:54.760
die nicht andere Leute, auf die andere Leute

01:13:54.760 --> 01:13:56.480
nicht dependen, kann man das ja gerne machen, aber ich meine,

01:13:56.480 --> 01:13:58.620
wenn... Also viele können sich ja gar nicht so unbedingt

01:13:58.620 --> 01:14:00.760
aussuchen, auf welche Python-Visienz sie sind und dann...

01:14:00.760 --> 01:14:02.700
Ja, aber warum nicht? Das ist schon mal so ein

01:14:02.700 --> 01:14:04.600
Infrastruktur-Problem, wo ich sagen würde, erst mal

01:14:04.600 --> 01:14:05.840
dieses Infrastruktur-Problem lösen?

01:14:05.840 --> 01:14:08.520
Naja, nee, zum Beispiel, wenn du jetzt die Kombination hast

01:14:08.520 --> 01:14:10.140
aus Data Science und zum Beispiel Web,

01:14:10.140 --> 01:14:12.200
dann gibt es halt diverse Geschichten,

01:14:12.200 --> 01:14:14.720
so, weiß ich nicht, irgendwie PyTorch

01:14:14.720 --> 01:14:16.720
oder Dinge in diesem Ökosystem,

01:14:16.720 --> 01:14:18.520
die halt nicht

01:14:18.520 --> 01:14:20.520
auf Python 3.11 laufen. Das kannst du

01:14:20.520 --> 01:14:22.440
dann, geht halt noch nicht. Ja, aber genau, aber das ist halt

01:14:22.440 --> 01:14:24.440
so ein Ding, ne? Harte, obere

01:14:24.440 --> 01:14:26.560
Abhängigkeitsschranke. Warum laufen die nicht auf Python 3.11?

01:14:26.560 --> 01:14:28.560
Ja, gut, weiß ich auch nicht so genau. Ja, aber das ist ja

01:14:28.560 --> 01:14:30.060
genau der Punkt, weil die meistens haben ihre

01:14:30.060 --> 01:14:32.280
Top, dann

01:14:32.280 --> 01:14:34.440
gesetzt, oder viele Pakete in diesem Data Science

01:14:34.440 --> 01:14:36.140
Umfeld, die gehen auch nicht für Python

01:14:36.140 --> 01:14:38.640
größer 4, also größer 3,

01:14:38.640 --> 01:14:39.460
also nicht für 4.

01:14:39.460 --> 01:14:42.460
Ja. Warum auch immer man

01:14:42.460 --> 01:14:44.120
das sagen möchte. Ich würde sagen,

01:14:44.120 --> 01:14:46.620
warum nicht? Wenn Python 4, vielleicht läuft das ja noch.

01:14:46.620 --> 01:14:47.820
Mal ausprobieren.

01:14:48.460 --> 01:14:52.060
Ja, das ist nicht so einfach.

01:14:52.060 --> 01:14:54.520
Ja, ich weiß nicht, haben wir denn

01:14:54.520 --> 01:14:56.340
irgendwie noch irgendwie ein

01:14:56.340 --> 01:14:57.980
größeres Thema bei diesem Paket?

01:14:57.980 --> 01:15:01.060
Paketierungstools,

01:15:01.060 --> 01:15:02.240
Projektmanagement?

01:15:02.240 --> 01:15:04.120
Ich glaube vielleicht die Quintessenz, ne?

01:15:04.120 --> 01:15:06.460
Dass es irgendwie nicht das beste Tool gibt.

01:15:06.460 --> 01:15:08.480
Das wünschen sich irgendwie alle,

01:15:08.480 --> 01:15:10.460
aber bis zur Zeit ist es leider noch nicht

01:15:10.460 --> 01:15:11.680
aufgetaucht. Genau.

01:15:11.680 --> 01:15:14.320
Ja, und es ist eben auch schwierig, das hast du ja auch

01:15:14.320 --> 01:15:16.280
gerade beschrieben, dass man nicht von Python

01:15:16.280 --> 01:15:17.940
aus dieses Tool herstellen kann.

01:15:18.400 --> 01:15:20.500
Und es gibt immer mal wieder Ansätze, das zu lösen,

01:15:20.500 --> 01:15:22.600
aber so wirklich das beste

01:15:22.600 --> 01:15:23.580
Tool, was glaube ich alle

01:15:23.580 --> 01:15:26.380
adoptieren werden, kann man es im Deutschen

01:15:26.380 --> 01:15:27.720
sagen, was alle

01:15:27.720 --> 01:15:30.240
benutzen werden, ist irgendwie noch nicht so wirklich

01:15:30.240 --> 01:15:32.400
gefunden. Du hast es ja auch gerade gesagt, zum Beispiel

01:15:32.400 --> 01:15:34.480
Rai kann ja theoretisch alles,

01:15:34.480 --> 01:15:36.320
aber wenn es dann nicht wirklich dem

01:15:36.320 --> 01:15:38.220
entspricht, auch diesem Workflow oder wie es

01:15:38.220 --> 01:15:40.360
aufgebaut ist, wie man das gerne hätte und man

01:15:40.360 --> 01:15:42.360
benutzt es dann nicht, dann fällt man eben

01:15:42.360 --> 01:15:44.320
doch wieder auf eins der anderen Tools zurück. Und dadurch

01:15:44.320 --> 01:15:46.380
entsteht das auch, dass so viele Leute so viele verschiedene

01:15:46.380 --> 01:15:47.060
Tools benutzen.

01:15:48.340 --> 01:15:50.480
Ja.

01:15:50.480 --> 01:15:50.520
Ja.

01:15:50.520 --> 01:15:55.180
Euag zum Beispiel

01:15:55.180 --> 01:15:56.680
oder sowas, wie heißt das? Habe ich noch nie gehört.

01:15:56.680 --> 01:15:58.720
Das ist auch so eine Rust-Implementierung von

01:15:58.720 --> 01:16:00.580
Python-Paketen

01:16:00.580 --> 01:16:02.940
für VENVs und sowas, Format

01:16:02.940 --> 01:16:05.100
Activate-Add und sowas.

01:16:05.100 --> 01:16:07.240
Ja, aber dieses Bootstrapping-Problem

01:16:07.240 --> 01:16:08.480
ist halt schon auch eines der

01:16:08.480 --> 01:16:10.580
grundlegenden, dass man halt nicht

01:16:10.580 --> 01:16:11.560
einfach irgendwie,

01:16:11.560 --> 01:16:14.040
ja, dass man immer schon

01:16:14.040 --> 01:16:16.520
irgendwie Python und Virtual

01:16:16.520 --> 01:16:17.960
Envs und so, das irgendwie

01:16:18.280 --> 01:16:20.180
können muss, um halt irgendwas, um sich

01:16:20.180 --> 01:16:22.080
ein Tool zu installieren, das dann

01:16:22.080 --> 01:16:23.960
Probleme löst. Und ja,

01:16:23.960 --> 01:16:25.980
da bleibt wahrscheinlich nur der Ausweg irgendwie über

01:16:25.980 --> 01:16:28.220
irgendwas zu gehen, was halt, wo

01:16:28.220 --> 01:16:30.220
man halt ein Binary deployen kann, also Rust oder

01:16:30.220 --> 01:16:31.360
Go oder so, aber

01:16:31.360 --> 01:16:33.360
Ja.

01:16:33.360 --> 01:16:35.760
Also ich würde gerne noch vielleicht ein, zwei Sachen zu diesem Packaging-Ding sagen.

01:16:35.760 --> 01:16:38.220
Also mich interessiert das zum Beispiel noch, also wann würde man denn zum Beispiel

01:16:38.220 --> 01:16:40.220
ein Package auf Pypi

01:16:40.220 --> 01:16:42.000
publishen wollen?

01:16:42.000 --> 01:16:46.100
Also es gibt ja da recht viele Pakete,

01:16:46.100 --> 01:16:48.260
würde ich sagen. Ja, also ich denke,

01:16:48.260 --> 01:16:50.160
das kommt total darauf an, also ob man das

01:16:50.160 --> 01:16:52.360
irgendwie gerne einfach mal ausprobieren

01:16:52.360 --> 01:16:54.220
will, habe ich auch schon häufiger mal mitbekommen, dass Leute

01:16:54.220 --> 01:16:56.120
wirklich einfach mal

01:16:56.120 --> 01:16:58.460
sich ein bisschen einlesen möchten in diese ganze Thematik

01:16:58.460 --> 01:17:00.360
und wie funktioniert das überhaupt und dann so ein kleines

01:17:00.360 --> 01:17:01.720
Beispielprojekt schreiben,

01:17:01.720 --> 01:17:04.220
weil man muss ja nicht viel machen, man kann an sich

01:17:04.220 --> 01:17:06.100
einfach einen Account erstellen und dann kann man

01:17:06.100 --> 01:17:08.640
sein Paket hochladen und zugänglich

01:17:08.640 --> 01:17:10.200
machen. Darum muss man, glaube ich, auch sehr aufpassen,

01:17:10.200 --> 01:17:11.820
was man sich so installiert von Pypi.

01:17:11.820 --> 01:17:14.320
Genau, oder

01:17:14.320 --> 01:17:16.340
dass man, was auch

01:17:16.340 --> 01:17:18.240
häufiger vorkommt, das ist jetzt dann, dass man

01:17:18.240 --> 01:17:20.360
so einen internen Packaging

01:17:20.360 --> 01:17:22.040
Index benutzen würde, wenn man

01:17:22.040 --> 01:17:24.100
beispielsweise in einem großen Unternehmen

01:17:24.100 --> 01:17:25.480
arbeitet und Code

01:17:25.480 --> 01:17:27.380
zwischen verschiedenen

01:17:27.380 --> 01:17:30.320
Gruppen oder Abteilungen teilen

01:17:30.320 --> 01:17:32.400
möchte. So eine Core-Library quasi, so eine eigene.

01:17:32.400 --> 01:17:34.300
Ja, genau, dass

01:17:34.300 --> 01:17:36.220
man das dann hochlädt, sodass andere

01:17:36.220 --> 01:17:37.700
das wieder installieren können.

01:17:37.700 --> 01:17:39.700
Genau.

01:17:39.700 --> 01:17:42.320
Gibt es, denke ich, verschiedene

01:17:42.320 --> 01:17:44.260
Use Cases. Und

01:17:44.260 --> 01:17:46.380
es gibt natürlich auch total viele tolle Open Source

01:17:46.380 --> 01:17:48.040
Libraries, wie beispielsweise

01:17:48.040 --> 01:17:48.220
4D.

01:17:48.220 --> 01:17:49.500
Die man sich darüber

01:17:49.500 --> 01:17:52.120
installieren kann, einfach weil

01:17:52.120 --> 01:17:53.560
jemand sich mal dachte, boah, das

01:17:53.560 --> 01:17:56.160
müsste man mal machen, das mache ich jetzt mal

01:17:56.160 --> 01:17:58.180
und das total populär geworden ist.

01:17:58.180 --> 01:18:00.100
Ich finde aber auch in dieser Hinsicht, wir hatten da ja gerade

01:18:00.100 --> 01:18:02.140
schon mit Poetry drüber geredet, dass da so viele

01:18:02.140 --> 01:18:04.080
offene Issues waren, teilweise,

01:18:04.080 --> 01:18:06.280
dass man häufig auch vergisst,

01:18:06.280 --> 01:18:08.200
dass da eine Person hinter sitzt, die das

01:18:08.200 --> 01:18:09.800
eventuell noch in ihrer freien Zeit macht.

01:18:09.800 --> 01:18:12.100
Und dass man das

01:18:12.100 --> 01:18:13.680
auch ganz häufig

01:18:13.680 --> 01:18:16.160
wertschätzender beurteilen muss,

01:18:16.160 --> 01:18:18.020
als man es tut, wenn Dinge nicht funktionieren.

01:18:18.060 --> 01:18:19.800
Das ist total krass. Also wie soll ich das denn

01:18:19.800 --> 01:18:21.740
jemals schaffen? Also welche freie Zeit?

01:18:21.740 --> 01:18:22.340
Fangen wir mal so.

01:18:22.340 --> 01:18:25.620
Ja, das ist ja auch

01:18:25.620 --> 01:18:27.880
ein sehr, sehr verbreitetes Problem,

01:18:27.880 --> 01:18:28.740
dass Leute dann halt

01:18:28.740 --> 01:18:31.640
irgendwie, also

01:18:31.640 --> 01:18:34.040
dass dann Maintainer von so Projekten

01:18:34.040 --> 01:18:35.560
verschwinden, liegt ja häufig daran,

01:18:35.560 --> 01:18:37.780
dass sie das dann halt irgendwie hinkriegen.

01:18:37.780 --> 01:18:39.960
Aber man kriegt das halt nur eine Zeit lang irgendwie hin

01:18:39.960 --> 01:18:41.640
und irgendwann ist man halt einfach durch.

01:18:41.640 --> 01:18:43.240
Und dann ist halt,

01:18:43.240 --> 01:18:46.040
dann geht man halt irgendwie was mit Holz

01:18:46.040 --> 01:18:48.000
machen oder so und das Projekt ist halt nicht mehr

01:18:48.000 --> 01:18:48.520
Maintainer.

01:18:48.520 --> 01:18:52.480
Ja, vor allem,

01:18:52.480 --> 01:18:53.860
wenn der Ton dann nicht wertschätzend ist,

01:18:53.860 --> 01:18:55.420
wenn Leute Ansprüche stellen und sagen,

01:18:55.420 --> 01:18:57.940
jetzt sieh aber mal zu, dass du das machst

01:18:57.940 --> 01:18:59.860
oder es funktioniert hier nicht und warum nicht und gib mir

01:18:59.860 --> 01:19:00.560
bitte die Lösung.

01:19:00.560 --> 01:19:04.000
Ja, stelle ich mir

01:19:04.000 --> 01:19:05.940
auch schon ganz schön frustrierend vor, wenn man sowas hat.

01:19:05.940 --> 01:19:07.480
Ja.

01:19:07.480 --> 01:19:10.280
Ja.

01:19:10.280 --> 01:19:11.740
Ja gut, der Computer

01:19:11.740 --> 01:19:13.740
und Internet und so, das ist eh

01:19:13.740 --> 01:19:15.840
immer, oh je.

01:19:17.840 --> 01:19:19.460
Ungefilterte Menschen aufeinander

01:19:19.460 --> 01:19:20.220
loslassen.

01:19:20.220 --> 01:19:21.420
Tja.

01:19:21.420 --> 01:19:23.120
Die sich gegenseitig nicht sehen können.

01:19:23.120 --> 01:19:26.140
Aber die Community ist auch, finde ich, sehr wertschätzend

01:19:26.140 --> 01:19:28.080
und freundlich. Also wenn ich jetzt auf Python-Konferenzen

01:19:28.080 --> 01:19:29.860
war, die Leute sind ja wirklich nett.

01:19:29.860 --> 01:19:31.860
Also man muss dann irgendwie Sorge haben, Vortrag

01:19:31.860 --> 01:19:33.540
zu halten und Fehler zu machen, weil

01:19:33.540 --> 01:19:35.920
da sitzt niemand, der dich dann ausbuht

01:19:35.920 --> 01:19:37.880
oder irgendwie sagt, boah, was hast denn du jetzt für ein Mist

01:19:37.880 --> 01:19:38.540
fabriziert?

01:19:38.540 --> 01:19:41.900
Also ich finde, die Leute in der Python-Community sind schon

01:19:41.900 --> 01:19:43.680
sehr freundlich. Ja, vor Ort, die Leute, das

01:19:43.680 --> 01:19:45.880
macht immer mehr Spaß als auch bei anderen

01:19:45.880 --> 01:19:47.340
Sachen, die ich so kennengelernt habe im Check-in-Feld.

01:19:47.780 --> 01:19:49.740
Ja, und man muss auch sagen, dass die Python-Community da halt

01:19:49.740 --> 01:19:51.040
ein, ja,

01:19:51.040 --> 01:19:54.100
so ein gutes Beispiel ist für, wie das

01:19:54.100 --> 01:19:55.720
gut funktionieren kann. Das ist in

01:19:55.720 --> 01:19:57.720
anderen Communities ist das nicht unbedingt so.

01:19:57.720 --> 01:19:58.860
Also Python ist da doch besonders

01:19:58.860 --> 01:20:01.140
angenehm, ehrlich gesagt.

01:20:01.140 --> 01:20:03.780
Wir waren da natürlich nicht davor, irgendwie von irgendwelchen Randoms auf Reddit

01:20:03.780 --> 01:20:05.360
angeschrien zu werden, aber...

01:20:05.360 --> 01:20:06.920
Nee, gut, das kann natürlich auch mal passieren, aber

01:20:06.920 --> 01:20:09.720
generell ist es, und vor allen Dingen ist es halt

01:20:09.720 --> 01:20:11.260
auch besser als bei anderen.

01:20:11.260 --> 01:20:13.640
Wir erinnern uns ja vielleicht selber an junge Jahre,

01:20:13.640 --> 01:20:15.680
wo man vielleicht selber mal nicht immer den Ton

01:20:15.680 --> 01:20:17.620
getroffen hat, den man eigentlich sich als Erwachsener hätte,

01:20:17.720 --> 01:20:18.000
überlegt.

01:20:18.000 --> 01:20:21.680
Ja, es passiert auch immer noch mit T und so.

01:20:21.680 --> 01:20:22.080
Ja, genau.

01:20:22.080 --> 01:20:24.340
Manchmal, ja.

01:20:24.340 --> 01:20:26.600
Ja, mir passiert das nie.

01:20:26.600 --> 01:20:29.500
Ich bin immer freundlich, immer höflich,

01:20:29.500 --> 01:20:30.260
immer gut drauf.

01:20:30.260 --> 01:20:33.160
Ja.

01:20:33.160 --> 01:20:35.700
Ja, ansonsten, ich weiß nicht genau,

01:20:35.700 --> 01:20:37.540
ob, ich hab sonst auch nicht...

01:20:37.540 --> 01:20:38.540
Habt ihr noch ein Packaging-Thema?

01:20:38.540 --> 01:20:41.560
Oder ein Management-

01:20:41.560 --> 01:20:42.660
von-Environments-Thema, oder?

01:20:42.660 --> 01:20:45.120
Nee, aber ansonsten, ich fand dieses

01:20:45.120 --> 01:20:47.520
Automatic-Speech-Recognition-Thema auch noch total interessant.

01:20:47.660 --> 01:20:49.620
Ich weiß nicht, ob du Lust hast,

01:20:49.620 --> 01:20:51.240
drüber zu reden, oder...

01:20:51.240 --> 01:20:53.680
Ich würde da super gerne drüber reden, aber ich darf leider nicht.

01:20:53.680 --> 01:20:54.740
Ach so, ah, okay.

01:20:54.740 --> 01:20:57.340
Also, das ist so ziemlich alles, was ich erzählen darf,

01:20:57.340 --> 01:20:58.540
was ich schon gesagt habe.

01:20:58.540 --> 01:20:59.820
Ja.

01:20:59.820 --> 01:21:03.280
Leider, aber es ist ein super interessantes Thema,

01:21:03.280 --> 01:21:03.840
das stimmt schon.

01:21:03.840 --> 01:21:07.660
Okay. Ich überlege gerade, also für

01:21:07.660 --> 01:21:08.900
Environment-Management oder Painting,

01:21:08.900 --> 01:21:11.500
ich glaube, da haben wir so die meisten Tools so besprochen,

01:21:11.500 --> 01:21:12.320
es gibt noch so ein paar mehr,

01:21:12.320 --> 01:21:15.640
die wir jetzt nicht so gesprochen haben. Ja, aber ich glaube, ich weiß auch nicht, ob die wichtig sind

01:21:15.640 --> 01:21:17.640
oder relevant. Wir können ja auch einfach

01:21:17.640 --> 01:21:18.060
den

01:21:18.060 --> 01:21:21.560
Vortrag verlinken oder auch den Blog-Post,

01:21:21.560 --> 01:21:23.400
da ist dann auch nochmal das Ganze ein bisschen grafischer

01:21:23.400 --> 01:21:25.200
dargestellt, das finde ich,

01:21:25.200 --> 01:21:27.020
hilft natürlich auch für die Übersicht.

01:21:27.020 --> 01:21:28.980
Es gibt eben auch ein paar Tools,

01:21:28.980 --> 01:21:31.440
PyFlow zum Beispiel haben wir gar nicht angesprochen, das habe ich auch mit

01:21:31.440 --> 01:21:33.700
aufgenommen, aber das ist so ein klassisches

01:21:33.700 --> 01:21:35.240
Projekt, was mal angefangen wurde

01:21:35.240 --> 01:21:37.420
und was nicht mehr maintained wird und

01:21:37.420 --> 01:21:38.740
dementsprechend auch nicht unbedingt

01:21:38.740 --> 01:21:41.820
empfehlenswert ist, das zu benutzen.

01:21:41.820 --> 01:21:43.400
Ich habe es mal ausprobiert und

01:21:43.400 --> 01:21:44.920
habe sofort ganz viele Fehler gehabt,

01:21:44.920 --> 01:21:47.620
aber da sollte man auch immer drauf achten, was man

01:21:47.620 --> 01:21:49.500
sich da für ein Projekt anschaut,

01:21:49.500 --> 01:21:51.380
ob da wirklich regelmäßig Releases

01:21:51.380 --> 01:21:53.500
rauskommen und die Issues auch abgearbeitet

01:21:53.500 --> 01:21:55.200
werden. Ja, ich würde auch sagen, tatsächlich,

01:21:55.200 --> 01:21:57.260
insgesamt bei Libraries so ein bisschen die Frage,

01:21:57.260 --> 01:21:59.480
also manchmal tendiert man ja so ein bisschen

01:21:59.480 --> 01:22:01.680
dazu, immer den neuesten heißen geilen Scheiß zu benutzen,

01:22:01.680 --> 01:22:03.640
wenn er aber dann

01:22:03.640 --> 01:22:05.280
halt im halben Jahr wieder weg ist, dann ist es halt blöd,

01:22:05.280 --> 01:22:06.880
wenn man halt Projekte darauf direkt

01:22:06.880 --> 01:22:09.540
aufgebaut hat und dann so diese ganzen

01:22:09.540 --> 01:22:11.360
abgehangenen Sachen, die sind vielleicht nicht immer so

01:22:11.360 --> 01:22:12.140
eine blöde Idee.

01:22:12.140 --> 01:22:15.440
Ja, absolut.

01:22:15.440 --> 01:22:17.540
Ja,

01:22:17.600 --> 01:22:18.600
das ist halt immer so ein bisschen,

01:22:18.600 --> 01:22:21.540
irgendwie, es ist

01:22:21.540 --> 01:22:23.420
ein nicht unerhebliches

01:22:23.420 --> 01:22:25.340
Feature, dass Dinge halt langweilig,

01:22:25.340 --> 01:22:27.400
boring und alt

01:22:27.400 --> 01:22:29.440
sind. Das kann auch sehr,

01:22:29.440 --> 01:22:29.980
sehr gut sein.

01:22:29.980 --> 01:22:33.200
Ja, alleine schon auch, weil dann

01:22:33.200 --> 01:22:35.100
man in den Issues ja häufig

01:22:35.100 --> 01:22:37.300
genau das Problem

01:22:37.300 --> 01:22:39.080
findet, was man gerade hat und dass das schon

01:22:39.080 --> 01:22:41.120
beantwortet wurde. Alleine sowas kann ja unheimlich

01:22:41.120 --> 01:22:43.080
hilfreich sein, dass einfach

01:22:43.080 --> 01:22:45.340
solche Probleme schon besprochen wurden und

01:22:45.340 --> 01:22:47.180
schon zig Leute das Gleiche hatten.

01:22:47.600 --> 01:22:49.580
Ja, genau. Und man kann

01:22:49.580 --> 01:22:51.280
Chat-GPT fragen, weil

01:22:51.280 --> 01:22:53.600
es war vor 2021 schon

01:22:53.600 --> 01:22:55.660
irgendwie etwas, was man finden konnte.

01:22:55.660 --> 01:22:56.240
Ja, ja.

01:22:56.240 --> 01:22:58.900
Ja, ja.

01:22:58.900 --> 01:23:01.240
Ja, das ist halt genau, also ich

01:23:01.240 --> 01:23:03.460
weiß nicht, also das finde ich zum Beispiel bei Django immer toll.

01:23:03.460 --> 01:23:05.340
Also ich meine auch, ich mag ja fast

01:23:05.340 --> 01:23:07.620
API, ich mag das ja gerne.

01:23:07.620 --> 01:23:09.200
Ich mag auch Pydentic, ich finde den Ansatz super.

01:23:09.200 --> 01:23:10.140
Aber

01:23:10.140 --> 01:23:12.940
das ist etwas, was halt bei Django echt

01:23:12.940 --> 01:23:15.240
angenehmer ist, dass es da halt schon so viel Zeug gibt,

01:23:15.240 --> 01:23:17.540
dass es halt eine 15 Jahre alte Geschichte gibt,

01:23:17.540 --> 01:23:19.480
und ganz viel Content,

01:23:19.480 --> 01:23:21.000
den man halt durchsuchen kann.

01:23:21.000 --> 01:23:23.120
Und ja,

01:23:23.120 --> 01:23:25.600
auch solche Dinge, auch da

01:23:25.600 --> 01:23:27.060
ich mich persönlich,

01:23:27.060 --> 01:23:29.240
also ich kriege immer, wenn

01:23:29.240 --> 01:23:31.340
halt irgendwie so Venture Capital

01:23:31.340 --> 01:23:33.480
ins Spiel kommt, dann denke ich mir immer so, oh nein.

01:23:33.480 --> 01:23:35.420
Ja.

01:23:35.420 --> 01:23:37.260
Und andere, also vor allen Dingen,

01:23:37.260 --> 01:23:39.360
ich finde den Gegensatz halt interessant, weil die Leute,

01:23:39.360 --> 01:23:41.120
die das dann bekommen, oder es ist halt immer so,

01:23:41.120 --> 01:23:42.880
juhu, jetzt können wir endlich und so.

01:23:42.880 --> 01:23:44.860
Und die Leute, die es benutzen, denken sich so, oh nein.

01:23:44.860 --> 01:23:47.480
Ja gut, aber es ist halt auch

01:23:47.480 --> 01:23:49.280
so ein Trade-off. Du hast natürlich einerseits Interessen

01:23:49.280 --> 01:23:51.160
geleitete Entwicklung dann, und die ist halt nicht mehr

01:23:51.160 --> 01:23:52.780
vielleicht so ganz neutral.

01:23:52.780 --> 01:23:55.140
Ja, vor allen Dingen, weil Leute dann irgendwann ihr Geld wieder haben.

01:23:55.140 --> 01:23:57.440
Ja, aber das ist ein

01:23:57.440 --> 01:23:59.220
Problem, aber eine andere Frage ist halt auch,

01:23:59.220 --> 01:24:01.420
du hast tatsächlich dann halt Zeit da und Geld

01:24:01.420 --> 01:24:02.360
da Sachen zu bauen.

01:24:02.360 --> 01:24:05.200
Ja, also brauchst du ein Geschäftsmodell, willst du eins haben,

01:24:05.200 --> 01:24:07.340
willst du nichts. Und also, was immer ganz

01:24:07.340 --> 01:24:09.280
schlecht ist, wenn die Leute auf einmal halt ihr Geschäftsmodell dann so

01:24:09.280 --> 01:24:09.900
zufällig anpassen.

01:24:09.900 --> 01:24:13.140
Genau, aber das finde ich eben bei solchen Projekten

01:24:13.140 --> 01:24:15.220
dann halt auch oft irgendwie sehr nett, wenn die

01:24:15.220 --> 01:24:17.420
dann, wenn es halt wirkliche Open-Source-Projekte

01:24:17.420 --> 01:24:19.200
sind in der Community, wo nicht eine Firma dahinter

01:24:19.200 --> 01:24:21.120
steht. Und wenn man halt eine Firma hat,

01:24:21.120 --> 01:24:21.940
dann ist immer,

01:24:21.940 --> 01:24:25.180
es ist tendenziell eher kurzlebiger, weil

01:24:25.180 --> 01:24:27.500
vielleicht haben Firmen dann auch mal andere Prioritäten,

01:24:27.500 --> 01:24:29.220
andere Interessen. Ja, eine kleine Anekdote am Rennen, ich weiß nicht,

01:24:29.220 --> 01:24:31.240
ob ihr es mitbekommen habt und ob ihr euch damit

01:24:31.240 --> 01:24:33.180
auskennt, aber es gibt Unity Game Engine.

01:24:33.180 --> 01:24:34.320
Ja, ja, ja.

01:24:34.320 --> 01:24:37.260
Das muss halt ganz viel Open-Source oder irgendwie

01:24:37.260 --> 01:24:39.200
so Indie-Studios, die haben halt

01:24:39.200 --> 01:24:40.660
auf Unity gesetzt und halt da ihre

01:24:40.660 --> 01:24:43.300
Spiele entwickelt. Und die haben dann irgendwie gesagt,

01:24:43.300 --> 01:24:45.140
so ja, neue Version jetzt übrigens, ach und

01:24:45.140 --> 01:24:47.160
alle Projekte, also auch alle, die ihr irgendwann mal

01:24:47.360 --> 01:24:49.640
angefangen habt, die sollen jetzt bitte pro Installation

01:24:49.640 --> 01:24:50.840
so viel Geld teilen.

01:24:50.840 --> 01:24:53.340
Das war natürlich

01:24:53.340 --> 01:24:55.320
auf einmal geknallt.

01:24:55.320 --> 01:24:57.160
Ich würde sagen, ist tot. Mal gucken.

01:24:57.160 --> 01:24:59.460
Ja, es war sehr blöd

01:24:59.460 --> 01:25:01.260
und die Leute müssen jetzt alle ihre Projekte umziehen

01:25:01.260 --> 01:25:03.400
und so. Die sind jetzt wieder mal zurückgerudert,

01:25:03.400 --> 01:25:05.200
wie es halt immer so ist, kommen wir so raus,

01:25:05.200 --> 01:25:07.160
aber solche Sachen sind natürlich gefährlich,

01:25:07.160 --> 01:25:08.860
wenn man halt dann von kommerziellen,

01:25:08.860 --> 01:25:11.100
proprietären Anbietern irgendwie abhängig ist.

01:25:11.100 --> 01:25:13.040
Ja. Das ist vielleicht nicht so.

01:25:13.040 --> 01:25:15.460
Aber andererseits ist es aber halt auch eine Chance,

01:25:15.460 --> 01:25:17.300
ne, aus diesem, ich mache das, als man

01:25:17.300 --> 01:25:18.800
mein Hobby und da passiert immer...

01:25:18.800 --> 01:25:21.640
Ja, natürlich, ja, ist alles irgendwie...

01:25:21.640 --> 01:25:23.280
Also ich finde, ja, also Open Source ist halt

01:25:23.280 --> 01:25:25.320
das Problem, ist halt meiner Meinung nach immer so

01:25:25.320 --> 01:25:26.180
die Finanzierung.

01:25:26.180 --> 01:25:29.260
Weil irgendwann kommen halt die meisten Leute,

01:25:29.260 --> 01:25:31.240
also ich meine, es gibt vielleicht Leute, die so

01:25:31.240 --> 01:25:33.320
viel Glück haben, dass sie mit so viel Geld

01:25:33.320 --> 01:25:35.180
begegnet sind, dass sie nichts anderes machen müssen

01:25:35.180 --> 01:25:37.360
oder die so genügsam sind,

01:25:37.360 --> 01:25:39.380
dass sie halt den ganzen Tag verbringen

01:25:39.380 --> 01:25:41.340
können mit wunderbaren Beiträgen an die

01:25:41.340 --> 01:25:43.400
Community, aber oft ist man halt

01:25:43.400 --> 01:25:45.140
leider gerade mit Familienhintergrund oder sowas

01:25:45.140 --> 01:25:47.240
dazu gezwungen, irgendeiner Erwerb

01:25:47.240 --> 01:25:48.920
Tätigkeit nachzugehen, die irgendwie

01:25:48.920 --> 01:25:51.140
Einkommen erwirtschaftet und wenn das halt mit Open Source

01:25:51.140 --> 01:25:53.260
nicht geht, ist es halt schwierig, ne.

01:25:53.260 --> 01:25:55.280
Also ich versuche

01:25:55.280 --> 01:25:57.180
auch immer tatsächlich, also bei den Konzernen, wo ich irgendwie

01:25:57.180 --> 01:25:59.220
so da bin, irgendwen zu bewegen,

01:25:59.220 --> 01:26:01.440
dass das so Geld zurückgibt,

01:26:01.440 --> 01:26:03.200
also dass die zumindest dann so Spenden machen an Projekte

01:26:03.200 --> 01:26:05.240
oder so, aber die hören dann immer so, ja, ja, total tolle

01:26:05.240 --> 01:26:06.940
Ideen, würden wir auch total gerne machen, aber nein.

01:26:06.940 --> 01:26:09.320
Passiert eher selten, leider.

01:26:09.320 --> 01:26:11.160
Ja, denen ist das dann egal.

01:26:11.160 --> 01:26:13.340
Ja, man müsste halt einen Grund dafür liefern

01:26:13.340 --> 01:26:14.840
können und das ist, glaube ich, halt auch eins

01:26:14.840 --> 01:26:17.180
der Dinge, wo man sich über Sachen überlegen

01:26:17.180 --> 01:26:19.060
müsste, wie man das hängt. Also es gibt ja

01:26:19.060 --> 01:26:20.860
diverse Ideen. Ah, ich finde übrigens genau

01:26:20.860 --> 01:26:22.980
dieses Material Theme für MKDocs, du hattest das eben

01:26:22.980 --> 01:26:25.180
erwähnt, der Autor davon,

01:26:25.180 --> 01:26:27.080
der hat einen sehr schönen Weg gefunden, um damit

01:26:27.080 --> 01:26:28.780
Geld zu erzielen. Der lebt ausschließlich davon

01:26:28.780 --> 01:26:31.080
und der

01:26:31.080 --> 01:26:32.940
lebt eigentlich quasi davon,

01:26:32.940 --> 01:26:35.100
dass er Unternehmen einen Grund gibt,

01:26:35.100 --> 01:26:36.700
ihm Geld dafür zu bezahlen und zwar

01:26:36.700 --> 01:26:38.380
gibt es halt alle Features

01:26:38.380 --> 01:26:40.760
sozusagen zuerst für eine Bezahlversion

01:26:40.760 --> 01:26:42.540
und

01:26:42.540 --> 01:26:44.980
die werden aber irgendwann dann halt

01:26:44.980 --> 01:26:47.120
quasi auch in der, kommen halt in die

01:26:47.120 --> 01:26:49.020
normale rein und alles ist Open Source,

01:26:49.020 --> 01:26:50.960
aber wenn du halt irgendwie das ein bisschen

01:26:50.960 --> 01:26:52.680
früher haben willst als andere, dann musst du halt zahlen.

01:26:52.680 --> 01:26:54.720
Und das funktioniert wohl sehr, sehr gut.

01:26:54.720 --> 01:26:56.500
Also, ja.

01:26:56.500 --> 01:26:59.100
Aber ansonsten, ich würde sagen, das ist das zentrale

01:26:59.100 --> 01:27:01.200
Problem. Also wie kann man Unternehmen klar machen,

01:27:01.200 --> 01:27:03.260
ja, es wäre

01:27:03.260 --> 01:27:04.940
nicht nur nett, wenn ihr das tun würdet, sondern ihr habt auch

01:27:04.940 --> 01:27:05.440
einen Vorteil davon.

01:27:05.440 --> 01:27:09.040
Also ich finde auch diese, also ich

01:27:09.040 --> 01:27:10.980
muss halt auch darauf angewiesen sein, dass ich

01:27:10.980 --> 01:27:12.920
jetzt mit Open Source, die ich benutze, dass ich die

01:27:12.920 --> 01:27:14.840
für alles benutzen kann, also auch für Business, weil sonst kann ich

01:27:14.840 --> 01:27:16.040
halt für meine Arbeit nicht verwenden.

01:27:16.040 --> 01:27:16.360
Ja.

01:27:17.120 --> 01:27:19.280
Was aber halt doof ist halt, wenn es halt nie,

01:27:19.280 --> 01:27:21.100
wenn irgendjemand aber richtig viel Geld mitfindet, der halt nichts

01:27:21.100 --> 01:27:23.080
zurückgibt, das ist halt irgendwie so der Deal dann gebrochen und

01:27:23.080 --> 01:27:24.860
die Frage ist halt, ob man das lizenztechnisch irgendwie lösen kann.

01:27:24.860 --> 01:27:25.520
Ich würde sagen, eher nicht.

01:27:25.520 --> 01:27:28.160
AGPL war da natürlich so ein Versuch.

01:27:28.160 --> 01:27:30.820
Ja, aber das ist halt eher kacke. Also bei mir führt es halt dazu, dass ich das gar nicht

01:27:30.820 --> 01:27:32.960
verwenden kann, weil dann ich

01:27:32.960 --> 01:27:34.780
sonst lizenzprobleme kriege,

01:27:34.780 --> 01:27:36.860
die ich halt nicht haben darf. Deswegen kann ich die Software mit

01:27:36.860 --> 01:27:38.900
AGPL nicht verwenden für Arbeitsprojekte, sondern nur

01:27:38.900 --> 01:27:40.940
irgendwie in der Freizeit irgendwie und das bringt es halt

01:27:40.940 --> 01:27:41.220
irgendwie nicht.

01:27:41.220 --> 01:27:45.140
Ja, aber ja, schwierige.

01:27:45.140 --> 01:27:46.600
Auch wieder ein schwieriger Ansatz.

01:27:47.120 --> 01:27:49.280
Man kann ja jetzt zumindest bei

01:27:49.280 --> 01:27:51.060
bestimmten Projekten, wenn man sie selbst als User

01:27:51.060 --> 01:27:52.440
hilfreich findet, über

01:27:52.440 --> 01:27:55.460
GitHub-Sponsors da was zurückgeben.

01:27:55.460 --> 01:27:57.240
Das finde ich manchmal ganz schön. Und wenn es mal

01:27:57.240 --> 01:27:58.940
nur ein paar Euro sind, die Wertschätzung

01:27:58.940 --> 01:28:00.720
doch irgendwie mitzuteilen.

01:28:00.720 --> 01:28:05.260
Ja, also das ist notwendig, aber

01:28:05.260 --> 01:28:07.100
also schwierig, weil du halt davon abgelehnt hast,

01:28:07.100 --> 01:28:08.400
dass das halt so dieses Spenden-Ding nicht

01:28:08.400 --> 01:28:11.500
eigentlich, also meiner Meinung nach

01:28:11.500 --> 01:28:13.220
müsste so der Staat so ein bisschen mit der

01:28:13.220 --> 01:28:15.060
Gießkanne vielleicht sogar dahin gehen und was machen.

01:28:15.060 --> 01:28:16.440
Gerade bei Umschuss.

01:28:17.120 --> 01:28:18.960
Das hat ja noch viel zu wenig für sich entdeckt, weil also auch

01:28:18.960 --> 01:28:20.660
Behörden und so sind ja abhängig von sowas und ich finde,

01:28:20.660 --> 01:28:23.000
das wäre eigentlich so eine gute Sache, dass man sagt, okay,

01:28:23.000 --> 01:28:24.900
es gibt jetzt so und so ein Budget, die halt dann

01:28:24.900 --> 01:28:26.660
investieren müssen in so eine Infrastruktur.

01:28:26.660 --> 01:28:29.320
Ja, aber das ist

01:28:29.320 --> 01:28:31.200
halt auch wieder das, bist du das, oder

01:28:31.200 --> 01:28:33.200
das ist halt das Problem, das zu erklären,

01:28:33.200 --> 01:28:35.260
das ist halt so schwierig. Ja, dann hast du irgendwie so einen Prozess

01:28:35.260 --> 01:28:36.160
und dann und so, ja.

01:28:36.160 --> 01:28:38.920
Aber ja, vielleicht wäre tatsächlich

01:28:38.920 --> 01:28:41.120
einfach das mit Steuergeld, aber ja.

01:28:41.120 --> 01:28:43.100
Ich sehe nicht, dass das

01:28:43.100 --> 01:28:43.560
passieren würde.

01:28:43.560 --> 01:28:45.660
Ja.

01:28:47.120 --> 01:28:49.220
Habt ihr einen Pick der Woche, Pick der

01:28:49.220 --> 01:28:49.460
Folge?

01:28:49.460 --> 01:28:53.200
Habe ich irgendwelche

01:28:53.200 --> 01:28:53.500
Picks?

01:28:53.500 --> 01:28:57.100
Ich muss nochmal nachdenken.

01:28:57.100 --> 01:28:58.460
Hast du schon einen?

01:28:58.460 --> 01:29:01.200
Was ist

01:29:01.200 --> 01:29:03.020
tatsächlich mit Django Neapolitan?

01:29:03.020 --> 01:29:04.480
Ah.

01:29:04.480 --> 01:29:06.700
Kennt ihr das?

01:29:06.700 --> 01:29:09.320
Nee, aber ich bin auch

01:29:09.320 --> 01:29:11.280
wie gesagt Django noch nicht benutzt.

01:29:11.280 --> 01:29:11.840
Genau, ja.

01:29:11.840 --> 01:29:14.300
Guck mal rein.

01:29:14.300 --> 01:29:16.020
Okay.

01:29:17.120 --> 01:29:19.260
Ja, wenn man jetzt Django sonst nicht macht, dann bringt

01:29:19.260 --> 01:29:20.800
einem das noch nicht so viel. Ja, würde ich auch sagen.

01:29:20.800 --> 01:29:23.000
Also es ist Quatt, wenn man halt irgendwie

01:29:23.000 --> 01:29:25.480
meistens hat man ja irgendwie so sein Quatt-Template

01:29:25.480 --> 01:29:26.920
irgendwo liegen oder sowas und das ist halt

01:29:26.920 --> 01:29:28.260
direkt mit drinnen.

01:29:28.260 --> 01:29:29.720
Ja, die Idee ist sozusagen,

01:29:29.720 --> 01:29:32.720
Class-Based Views ist halt

01:29:32.720 --> 01:29:34.920
in Django problematisch, weil man

01:29:34.920 --> 01:29:37.060
erbt von ganz vielen Dingen und die Dinge

01:29:37.060 --> 01:29:39.040
erben wieder von ganz viel und oft hat man das Problem,

01:29:39.040 --> 01:29:41.080
dass man nicht weiß, welche Methode muss man denn

01:29:41.080 --> 01:29:43.280
jetzt überschreiben oder welche

01:29:43.280 --> 01:29:45.020
darf man auf gar keinen Fall überschreiben und wann

01:29:45.020 --> 01:29:47.080
passiert eigentlich was? Jochen ändert da an dieser Stelle seine Meinung auch.

01:29:47.120 --> 01:29:49.100
Immer, ne, wie seine Popposen, ne, weil

01:29:49.100 --> 01:29:50.380
ab und zu reden wir immer drüber.

01:29:50.380 --> 01:29:53.120
Nein, okay,

01:29:53.120 --> 01:29:55.160
nicht ganz. Aber, äh, also ich mag

01:29:55.160 --> 01:29:56.660
Class-Based Views in Django immer noch sehr gerne.

01:29:56.660 --> 01:29:59.120
Ja, also ich finde Class-Based

01:29:59.120 --> 01:30:01.000
Views im Prinzip auch nicht schlecht, nur die sind schon

01:30:01.000 --> 01:30:03.000
sehr kompliziert und quasi so

01:30:03.000 --> 01:30:05.080
Vererbungs-Hierarchien sind halt auch etwas. Ja, aber dann machst du

01:30:05.080 --> 01:30:07.080
halt einfach keine Vererbung, sondern erbst halt einfach nur von einem View

01:30:07.080 --> 01:30:08.680
und dann hast du aber eine wunderschöne

01:30:08.680 --> 01:30:10.080
Interface.

01:30:10.080 --> 01:30:13.160
Also wenn du den Form-View nimmst, der erbt

01:30:13.160 --> 01:30:14.980
halt von fünf unterschiedlichen Sachen und das

01:30:14.980 --> 01:30:16.220
ist halt echt cool. Ja, dann halt kein Form-View.

01:30:17.120 --> 01:30:18.700
Ja gut, okay, klar, aber

01:30:18.700 --> 01:30:20.980
sozusagen die Class-Based Views sind halt so

01:30:20.980 --> 01:30:22.640
komplizierte Vererbungs-Hierarchie und

01:30:22.640 --> 01:30:24.660
man braucht dann halt sowas wie

01:30:24.660 --> 01:30:27.000
Classy Class-Based Views. Irgendwie gibt es so eine schöne

01:30:27.000 --> 01:30:28.380
Seite, wo man dann halt sehen kann.

01:30:28.380 --> 01:30:30.580
Und

01:30:30.580 --> 01:30:32.980
es ist halt vielleicht einfach ein bisschen

01:30:32.980 --> 01:30:34.980
viel und deswegen sind viele auf

01:30:34.980 --> 01:30:36.980
der, ne, ich verwende nur

01:30:36.980 --> 01:30:38.900
Funktionen als Views-Seite. Oh ja, man hat dann

01:30:38.900 --> 01:30:41.160
If-Request-Message-Post und sowas

01:30:41.160 --> 01:30:42.960
und boah. Ja, hat

01:30:42.960 --> 01:30:44.980
dann auch Nachteile, klar. Und

01:30:44.980 --> 01:30:46.220
letztlich die Frage, gibt es was dazwischen? Und

01:30:46.220 --> 01:30:47.100
äh, genau.

01:30:47.120 --> 01:30:49.020
Es gab dann mal irgendwann von Tom Christie

01:30:49.020 --> 01:30:50.800
Vanilla-Views, sozusagen,

01:30:50.800 --> 01:30:52.900
um halt diese ausufernde

01:30:52.900 --> 01:30:54.160
Vererbungs-Hierarchie in den Griff zu kriegen.

01:30:54.160 --> 01:30:56.920
Aber das ist halt ein bisschen sehr wenig.

01:30:56.920 --> 01:30:59.180
Und dann war halt sozusagen die Idee hinter Neapolitan

01:30:59.180 --> 01:31:01.040
war halt, sagen wir mal, ja, es muss ein bisschen mehr

01:31:01.040 --> 01:31:03.040
sein als Vanilla. Und also das ist quasi das,

01:31:03.040 --> 01:31:04.820
wenn man das nicht kennt, also hier ist das immer,

01:31:04.820 --> 01:31:06.540
wie heißt das ganz schrecklich, der Name? Fürst Pückler

01:31:06.540 --> 01:31:08.340
Eis oder so.

01:31:08.340 --> 01:31:10.600
Und ich glaube, die

01:31:10.600 --> 01:31:12.940
internationale, der Name

01:31:12.940 --> 01:31:13.740
dafür ist Neapolitan.

01:31:13.740 --> 01:31:15.720
Und

01:31:15.720 --> 01:31:17.120
deswegen, es war halt sozusagen die Idee, es ist

01:31:17.120 --> 01:31:18.740
ein bisschen mehr als Vanilla, aber nicht sehr viel mehr.

01:31:18.740 --> 01:31:21.060
Ja. Interessant.

01:31:21.060 --> 01:31:23.060
Also ich kann immer empfehlen,

01:31:23.060 --> 01:31:25.000
quasi Themenwechsel, anderer Pick,

01:31:25.000 --> 01:31:26.900
was ich auch vorhin schon erwähnt habe,

01:31:26.900 --> 01:31:28.940
Material für MK-Docs, finde ich

01:31:28.940 --> 01:31:30.780
ein super cooles Package, wo man

01:31:30.780 --> 01:31:33.120
wirklich einfach tolle Dokumentationen

01:31:33.120 --> 01:31:34.500
bauen kann, was

01:31:34.500 --> 01:31:36.860
doch meiner Erfahrung nach viel zu selten

01:31:36.860 --> 01:31:38.900
gemacht wird. Mit was ist die, war das auch Markdown?

01:31:38.900 --> 01:31:40.440
Genau.

01:31:40.440 --> 01:31:42.980
Und dann kann man die

01:31:42.980 --> 01:31:45.060
Dokumentation mit in seinem Repo haben.

01:31:45.060 --> 01:31:47.060
Ich habe das so häufig schon mitgekriegt in kurzen Projekten.

01:31:47.120 --> 01:31:48.980
Dass es überall verteilt war. Manchmal schon was

01:31:48.980 --> 01:31:51.160
im Readme-File, dann gab es noch irgendwie eine Confluence-Seite.

01:31:51.160 --> 01:31:53.080
Manches war in den Jira-Tickets

01:31:53.080 --> 01:31:54.160
irgendwie dokumentiert.

01:31:54.160 --> 01:31:56.900
Und das, finde ich, hat so

01:31:56.900 --> 01:31:58.900
wenig Einstiegshürden, um

01:31:58.900 --> 01:32:00.860
so eine schöne webbasierte

01:32:00.860 --> 01:32:03.420
Oberfläche für seine Dokumentation

01:32:03.420 --> 01:32:04.760
zu gestalten.

01:32:04.760 --> 01:32:06.020
Mag ich auch. Würde ich auch

01:32:06.020 --> 01:32:09.260
bevorzugen gegenüber Sphinx oder sowas. Finde ich schöner auch, ja.

01:32:09.260 --> 01:32:10.860
Ja.

01:32:10.860 --> 01:32:12.420
Ja, nee, ich finde das auch super.

01:32:12.420 --> 01:32:14.820
Also ich verwende es vor allen Dingen

01:32:14.820 --> 01:32:16.540
eben bei Fast-API-Geschichten,

01:32:16.540 --> 01:32:17.100
weil es halt,

01:32:17.120 --> 01:32:17.520
aber

01:32:17.520 --> 01:32:20.160
ja, ja, nee, das ist schon toll.

01:32:20.160 --> 01:32:22.240
Okay, was könnte ich denn?

01:32:22.240 --> 01:32:24.040
Okay, ich picke mal was ganz anderes.

01:32:24.040 --> 01:32:26.800
Du hast ja eben schon mit Rezepten so ein Buch

01:32:26.800 --> 01:32:29.360
irgendwie da reingeguckt.

01:32:29.360 --> 01:32:30.840
Ja, wundervoll, das

01:32:30.840 --> 01:32:33.320
Ottolenghi-Flavor, das Gemüse-

01:32:33.320 --> 01:32:33.620
Kochbuch.

01:32:33.620 --> 01:32:36.860
Und zwar gibt's

01:32:36.860 --> 01:32:39.040
ein schönes,

01:32:39.040 --> 01:32:40.100
wenn man auf dem Mac ist,

01:32:40.100 --> 01:32:42.800
gibt's eine sehr, sehr schöne App,

01:32:42.800 --> 01:32:43.540
die nennt sich

01:32:43.540 --> 01:32:45.800
Paprika Receipt Manager

01:32:45.800 --> 01:32:46.920
und

01:32:47.120 --> 01:32:49.840
genau, das verwende ich seit einiger Zeit

01:32:49.840 --> 01:32:50.880
und finde das ganz, ganz toll.

01:32:50.880 --> 01:32:52.180
Hast du das nicht schon mal gesagt?

01:32:52.180 --> 01:32:53.860
Habe ich das schon mal gepickt? Oh nein!

01:32:53.860 --> 01:32:56.360
Ich weiß nicht, ob du das gepickt hast, aber wir hatten es schon ein paar Mal.

01:32:56.360 --> 01:32:58.720
Ah ja, okay, kann sein. Ich sage immer das Gleiche.

01:32:58.720 --> 01:33:01.020
Ja, ich

01:33:01.020 --> 01:33:02.640
ertappe mich auch dabei.

01:33:02.640 --> 01:33:05.040
Aber es ist gut, dass ihr das noch mal gesagt habt,

01:33:05.040 --> 01:33:06.200
weil ich hatte es nicht mehr auf dem Schirm.

01:33:06.200 --> 01:33:08.900
Also ich finde, manchmal muss man einige schöne Sachen

01:33:08.900 --> 01:33:09.920
noch mal ein paar Mal öfter sagen.

01:33:09.920 --> 01:33:11.940
Man kann Dinge auch öfter sagen, ja, okay.

01:33:11.940 --> 01:33:14.200
Wer weiß, wer immer bis zum Ende von jeder Folge bleibt

01:33:14.200 --> 01:33:15.820
und wenn wir gerade so spannende Folgen haben,

01:33:15.820 --> 01:33:16.880
wir manchmal haben wir,

01:33:17.120 --> 01:33:18.340
spannende Folgen, dann

01:33:18.340 --> 01:33:20.480
wer weiß, wie viele Leute am Ende noch übrig sind.

01:33:20.480 --> 01:33:23.480
Genau.

01:33:23.480 --> 01:33:24.800
Ja.

01:33:24.800 --> 01:33:27.580
Dann ganz vielen herzlichen Dank an der Lena,

01:33:27.580 --> 01:33:28.020
dass du da warst.

01:33:28.020 --> 01:33:30.760
Danke, dass ihr mich angeladen habt.

01:33:30.760 --> 01:33:33.140
Und ja, bleibt uns gewogen,

01:33:33.140 --> 01:33:34.940
schaltet uns weiter rein, morgens, abends und so weiter

01:33:34.940 --> 01:33:36.740
und wir wünschen euch eine wunderschöne gute Zeit

01:33:36.740 --> 01:33:37.340
und bis demnächst.

01:33:37.340 --> 01:33:39.760
Und hoffentlich bis in gar nicht mal allzu langer Zeit.

01:33:39.760 --> 01:33:41.020
Ja, diesmal lassen wir uns nicht so viel Zeit.

01:33:41.020 --> 01:33:44.000
Ja, wir haben auch so ein paar Sachen, Ideen.

01:33:44.000 --> 01:33:45.080
Gut, bis dann, tschüss.
