WEBVTT

00:00:00.000 --> 00:00:04.300
Ja, hallo, liebe Hörerinnen und Hörer, willkommen beim Python-Podcast in der 34. Episode heute.

00:00:05.660 --> 00:00:08.900
Ja, wir nehmen wieder abends auf, ausnahmsweise, muss ja auch mal sein.

00:00:09.440 --> 00:00:10.480
Entschuldigung, dass ich wieder eingeschaltet habe.

00:00:10.900 --> 00:00:13.860
Was machen wir heute? Wir wollten ein bisschen was über Pakete besprechen.

00:00:15.020 --> 00:00:16.500
Der Jochen ist natürlich wieder dabei und wir haben wieder einen Gast.

00:00:16.900 --> 00:00:17.240
Hi, Jochen.

00:00:18.040 --> 00:00:18.400
Hallo.

00:00:18.560 --> 00:00:20.080
Und der Gast ist heute wieder der Ronny. Hi, Ronny.

00:00:20.320 --> 00:00:20.540
Hi.

00:00:21.020 --> 00:00:21.240
Hallo.

00:00:21.360 --> 00:00:21.920
Ich bin der Dominik.

00:00:23.460 --> 00:00:23.820
Ja.

00:00:24.580 --> 00:00:24.940
Ja.

00:00:25.720 --> 00:00:26.080
Ja.

00:00:26.480 --> 00:00:29.260
Ja, ich weiß nicht, ob wir wieder Struktur machen wollten, ein bisschen News oder so.

00:00:30.000 --> 00:00:31.200
Habt ihr News?

00:00:32.160 --> 00:00:34.420
Nee, ich bin zu irgendwie nicht viel gekommen

00:00:34.420 --> 00:00:36.560
und habe auch keine Newsletter oder sonst irgendwas gelesen.

00:00:36.760 --> 00:00:37.880
Daher nicht viel.

00:00:38.860 --> 00:00:42.280
Also es kam tatsächlich der Copilot auf GitHub heute raus zum Coden.

00:00:42.380 --> 00:00:43.320
Das fand ich ja ganz interessant.

00:00:43.720 --> 00:00:47.080
Das ist jetzt keine Python-News, aber man kann sich da anmelden,

00:00:47.160 --> 00:00:49.340
irgendwie eintragen in so einer Testerliste.

00:00:49.780 --> 00:00:51.860
Es gibt auch ein VSCode-Plugin für die Leute, die das nutzen.

00:00:53.120 --> 00:00:53.980
Was macht das denn?

00:00:55.040 --> 00:00:57.780
Das ist ein Copilot für GitHub, der, wenn man Docstring schreibt,

00:00:57.900 --> 00:00:59.840
automatisch die Funktion baut, der für verschiedene

00:00:59.840 --> 00:01:01.940
Sprachen funktioniert. Sieht ziemlich

00:01:01.940 --> 00:01:03.860
nice aus. Also so die Demo, aber wenn

00:01:03.860 --> 00:01:05.560
das mal richtig gut funktioniert, irgendwie mit

00:01:05.560 --> 00:01:07.160
Machine Learning dahinter wahrscheinlich so ein bisschen,

00:01:07.600 --> 00:01:09.820
vielleicht einfach einen coolen Dockstring und der baut

00:01:09.820 --> 00:01:11.400
die ganze Funktion so zusammen, wie er es für richtig hält.

00:01:11.820 --> 00:01:14.060
Ja, ich habe das irgendwie, ich habe nur so ein

00:01:14.060 --> 00:01:15.900
Animated GIF

00:01:15.900 --> 00:01:17.860
auf Twitter oder so gesehen, wo da

00:01:17.860 --> 00:01:19.780
jemand bezeichnet Learn was gemacht hat und das sah

00:01:19.780 --> 00:01:21.680
schon gut aus, aber

00:01:21.680 --> 00:01:23.740
ehrlich gesagt, ich würde mir jetzt nicht trauen, dass ich sage,

00:01:23.900 --> 00:01:25.620
okay, das tut jetzt genau das, was ich gerne hätte.

00:01:25.620 --> 00:01:27.800
Das heißt, man muss den Code dann zumindest nochmal lesen.

00:01:27.900 --> 00:01:29.980
Ja, ich glaube, lesen muss man es natürlich schon, aber es ist ja relativ

00:01:29.980 --> 00:01:32.240
super, um wahrscheinlich bekannte Patterns so zu verstehen

00:01:32.240 --> 00:01:34.060
und auch für Sprachen, die man vielleicht noch

00:01:34.060 --> 00:01:36.100
nicht so gut kann, dass man halt so grundsätzliche Konzepte

00:01:36.100 --> 00:01:37.520
da sehr schnell mitlernen kann.

00:01:38.140 --> 00:01:39.980
Das muss auch super interessant sein, außerdem wird man gezwungen,

00:01:40.060 --> 00:01:41.560
Dokumentationen zu schreiben, direkt

00:01:41.560 --> 00:01:43.720
am Anfang, das ist vielleicht auch gar nicht so doof.

00:01:44.740 --> 00:01:46.020
Also es ist halt die Frage, wohin das hinschaut,

00:01:46.080 --> 00:01:47.640
wenn das halt nur KI-gesteuert ist, irgendwann

00:01:47.640 --> 00:01:49.780
je nachdem, wie gut die Qualität der Leute ist,

00:01:49.840 --> 00:01:51.660
hier und da zu schreiben, was dann dabei rauskommt, weiß ich nicht.

00:01:51.660 --> 00:01:54.000
Ja, das ist die durchschnittliche

00:01:54.000 --> 00:01:55.940
GitHub-Code-Qualität, ich meine, wenn das

00:01:55.940 --> 00:01:57.780
jetzt, also kann ja eine Verbesserung

00:01:57.780 --> 00:01:59.720
sein. Ja, genau. Also ich finde es

00:01:59.720 --> 00:02:01.760
wirklich interessant und es sah auch echt top aus.

00:02:02.840 --> 00:02:04.180
Documentation-Driven-Development

00:02:04.180 --> 00:02:05.260
oder... Irgendwie so.

00:02:07.100 --> 00:02:08.280
Specification-Driven-Development.

00:02:09.060 --> 00:02:09.920
Ja, also diese Beispiele

00:02:09.920 --> 00:02:11.820
auf der Seite vom Co-Piloten da, die sahen echt

00:02:11.820 --> 00:02:13.260
schick aus, auch in Python, die es da gab.

00:02:14.000 --> 00:02:15.740
Okay, ja, cool. Das ist auf jeden Fall

00:02:15.740 --> 00:02:16.680
eine Neuigkeit, ja.

00:02:19.460 --> 00:02:20.340
Ja, haben wir noch was?

00:02:20.440 --> 00:02:21.660
Ich glaube, was hast du gesagt?

00:02:21.660 --> 00:02:22.840
Python 306, ja, egal.

00:02:23.180 --> 00:02:25.540
Ja, ist vor drei Tagen oder so rausgekommen.

00:02:25.940 --> 00:02:28.640
aber ich weiß ehrlich gesagt

00:02:28.640 --> 00:02:29.780
nicht mal, was der Unterschied ist.

00:02:29.860 --> 00:02:32.800
Voll gut, nur so eine Erinnerung,

00:02:32.880 --> 00:02:34.340
dass man das jetzt mal dann installieren könnte.

00:02:35.340 --> 00:02:36.100
Aber ansonsten.

00:02:36.740 --> 00:02:38.560
Nichts Großes passiert. Dann würden wir doch direkt

00:02:38.560 --> 00:02:40.460
zur Folge kommen, oder fällt dir noch was ein, Ronny?

00:02:40.920 --> 00:02:42.500
Ist doch eigentlich eine gute Überleitung, so GitHub

00:02:42.500 --> 00:02:43.680
Packages. Stimmt.

00:02:44.760 --> 00:02:46.260
Was ist denn das, ein Package?

00:02:47.500 --> 00:02:48.380
Genau, das ist das Thema, ne?

00:02:50.820 --> 00:02:51.140
Packaging.

00:02:51.660 --> 00:02:52.940
Was ist das? Wie macht man das denn?

00:02:52.980 --> 00:02:54.180
Wie spricht man das aus? Ganz wichtig.

00:02:55.140 --> 00:03:05.920
Ein Paket. Also ihr wollt irgendwas machen wie ein Paket schreiben, ein Modul schreiben. Was ist ein Modul? Und das Veröffentlichen, vielleicht ist Veröffentlichen eine der Sachen, die man damit machen will mit einem Paket? Oder Wiederbenutzen vielleicht?

00:03:06.980 --> 00:03:17.120
Ja, selbst wenn man das nur irgendwie, wenn man einen Code miteinander teilen will, ist es wahrscheinlich schon eine ganz gute Idee, unter Umständen das halt als Paket zu tun und nicht direkt als Repository.

00:03:17.880 --> 00:03:21.340
Das heißt, da können bestimmte Dinge dazu, sowas wie eine Bauanleitung oder sowas?

00:03:22.740 --> 00:03:24.620
Ja, also es gibt unterschiedliche

00:03:24.620 --> 00:03:26.100
Arten von Paketen.

00:03:26.680 --> 00:03:28.580
Das ist vielleicht schon mal so ein grundsätzliches Ding, mit dem man

00:03:28.580 --> 00:03:30.740
anfangen kann. Also es gibt halt zum Beispiel

00:03:30.740 --> 00:03:32.640
oder ich weiß nicht, wo wir damit

00:03:32.640 --> 00:03:33.800
anfangen, oder mit der Geschichte von

00:03:33.800 --> 00:03:36.500
Packaging. Ja, okay, ich bin gespannt.

00:03:36.720 --> 00:03:38.460
Ich hätte gesagt, es gibt noch DCP-IP, aber Entschuldigung.

00:03:38.880 --> 00:03:39.200
Ja,

00:03:39.540 --> 00:03:42.240
da gibt es auch Pakete, ja.

00:03:43.840 --> 00:03:44.740
Vielleicht nur so ganz kurz,

00:03:44.800 --> 00:03:46.440
es ist halt leider verwirrend, es ist kompliziert

00:03:46.440 --> 00:03:48.580
und es ist komisch und es ist alles nicht so einfach in Python

00:03:48.580 --> 00:03:50.440
leider. Das hat glaube ich

00:03:50.440 --> 00:03:52.180
angefangen alles irgendwie 1998 mit

00:03:52.180 --> 00:03:52.840
Distutils

00:03:52.840 --> 00:03:56.240
und das ist auch

00:03:56.240 --> 00:03:57.800
in der Standardbibliothek, ist da immer noch drin.

00:03:58.340 --> 00:04:00.360
Also es geht eigentlich darum, wie gebt ihr denn euer Programm

00:04:00.360 --> 00:04:02.100
irgendwem, der es dann ausführen

00:04:02.100 --> 00:04:04.300
möchte? Ja, wie

00:04:04.300 --> 00:04:05.840
kann man Code irgendwie,

00:04:06.160 --> 00:04:08.180
ja, wie kann man Code so verpacken, dass man das

00:04:08.180 --> 00:04:10.300
irgendwo anders dann halt einfach nur das Paket

00:04:10.300 --> 00:04:12.220
installiert und nicht den kompletten, das komplette Repository.

00:04:12.360 --> 00:04:14.300
Ja, oder vielleicht, wenn man noch nicht mal Python hat

00:04:14.300 --> 00:04:16.320
oder so, oder der weiß dann gar nicht,

00:04:16.380 --> 00:04:18.180
was für einen Computer der hat oder verschiedene

00:04:18.180 --> 00:04:20.280
Herausforderungen. Genau,

00:04:20.400 --> 00:04:22.280
Und dann irgendwann kamen halt Setup-Tools dazu.

00:04:23.500 --> 00:04:24.740
Damit hat man dann zum ersten Mal...

00:04:24.740 --> 00:04:26.600
Vielleicht ganz kurz noch, wenn wir jetzt schon mal wieder

00:04:26.600 --> 00:04:28.000
bei Python-Podcast noch ein bisschen einsteigen.

00:04:28.080 --> 00:04:29.060
Was ist denn DistroTilt?

00:04:29.820 --> 00:04:32.720
Genau, das ist halt so ein Ding, um zum Beispiel,

00:04:33.780 --> 00:04:35.780
ja, wenn man jetzt in einem Verzeichnis ist,

00:04:35.780 --> 00:04:37.740
wo man den Code hat, daraus irgendwas zu bauen,

00:04:37.820 --> 00:04:39.120
was man dann als Paket weitergeben kann.

00:04:40.940 --> 00:04:43.200
Und da kommen auch an so ein paar von den Begriffen,

00:04:43.380 --> 00:04:44.080
meine ich jedenfalls, her.

00:04:44.200 --> 00:04:47.040
Sowas wie S-Dist zum Beispiel oder B-Dist.

00:04:47.100 --> 00:04:48.600
Aber ich weiß nicht, ob es da schon wirklich dabei war.

00:04:48.700 --> 00:04:49.180
Ach so, ja.

00:04:49.560 --> 00:04:51.880
Es ist halt Source Distribution

00:04:51.880 --> 00:04:53.220
und

00:04:53.220 --> 00:04:55.580
sagt eigentlich im Grunde, dass man halt nur den

00:04:55.580 --> 00:04:57.580
Code irgendwie ins Paket packt, also den

00:04:57.580 --> 00:04:59.520
Source ins Paket packt und dann halt auf

00:04:59.520 --> 00:05:01.640
dem Zielsystem halt eventuell noch, wenn

00:05:01.640 --> 00:05:03.620
da Extensions, zum Beispiel C-Extensions oder so

00:05:03.620 --> 00:05:05.540
drin sind, muss man die dann halt noch

00:05:05.540 --> 00:05:06.960
bauen. Also es ist halt noch nicht gebaut.

00:05:07.160 --> 00:05:09.580
Es sind nicht die PYC-Files, sondern es sind nur

00:05:09.580 --> 00:05:10.660
tatsächlich die

00:05:10.660 --> 00:05:12.880
.py-Files.

00:05:14.700 --> 00:05:15.380
Und weil die

00:05:15.380 --> 00:05:17.040
PYC-Files, das hängt auch von

00:05:17.040 --> 00:05:19.360
der Interpreter-Version ab und so,

00:05:19.560 --> 00:05:33.760
Und dann gibt es halt die BDIS, also die Build Distribution Pakete, genau, und das sind halt irgendwie TAR-Balls vor allen Dingen gewesen oder manchmal auf Windows, glaube ich, auch ZIP-Files, weiß nicht genau, aber es ist noch kein richtiges Paketformat.

00:05:33.760 --> 00:05:48.420
Und dann kamen irgendwann Setup-Tools dazu und weiß nicht, irgendwann Anfang der Nullerjahre, keine Ahnung wann genau, und da war das Ziel halt dann so ein Paketformat zu haben, das hatte man dann mit X auch, aber das war es, was auch mehr oder weniger ein ZIP-File war.

00:05:48.420 --> 00:05:50.500
und inzwischen sind es Wheels,

00:05:50.640 --> 00:05:51.720
das ist auch mehr oder weniger der Fall.

00:05:54.600 --> 00:05:54.960
Aber

00:05:54.960 --> 00:05:56.640
so ein bisschen

00:05:56.640 --> 00:05:58.400
sind die Dinge schon anders, also Wheels sind jetzt

00:05:58.400 --> 00:06:00.700
deutlich schneller, kann man deutlich schneller auspacken

00:06:00.700 --> 00:06:02.520
und verwenden als X.

00:06:02.580 --> 00:06:03.720
X werden eigentlich nicht mehr verwendet.

00:06:04.380 --> 00:06:06.700
Dann gab es irgendwie eine Zeit, in der ganz viel rumgeforkt

00:06:06.700 --> 00:06:08.640
worden ist und dann sind Dinge

00:06:08.640 --> 00:06:10.460
auch wieder zurück nach Setup Tools gegangen

00:06:10.460 --> 00:06:12.520
und Setup Tools ist aber nie Teil der

00:06:12.520 --> 00:06:13.540
Standardbibliothek geworden.

00:06:16.020 --> 00:06:16.620
Distutils

00:06:16.620 --> 00:06:18.040
war es dann aber schon immer schon lange.

00:06:18.420 --> 00:06:42.020
So dass heute ist es halt so, es gibt halt Dinge, die macht Distu-Shills, wenn man ein Paket baut. Es gibt Dinge, da benutzt man Setup-Tools für, was ein bisschen komisch ist, weil das ist halt nicht in der Schaltebibliothek, man muss dafür Setup-Tools installieren. Und Setup-Tools hat dann wiederum Plugins für bestimmte Sachen, wie zum Beispiel, wenn man Wheels bauen will, dann gibt es halt das Wheels-Paket, das man dann noch installieren kann und das bringt dann halt ein Plugin für Setup-Tools mit, womit man dann halt auch Wheels bauen kann.

00:06:43.340 --> 00:06:44.600
Ja, okay.

00:06:45.260 --> 00:06:47.040
Das klingt aber so, als geht das halt nicht

00:06:47.040 --> 00:06:48.520
out of the box. Und da brauchen wir schon noch andere Sachen.

00:06:48.780 --> 00:06:50.600
Ohne C-Compiler geht das wahrscheinlich dann nicht?

00:06:51.700 --> 00:06:52.700
Doch, also wenn man

00:06:52.700 --> 00:06:54.120
zum Beispiel einfach nur

00:06:54.120 --> 00:06:57.060
reine Python, also wenn der

00:06:57.060 --> 00:06:58.760
Code, den man geschrieben hat, einfach nur

00:06:58.760 --> 00:07:00.480
Python-Code ist, dann

00:07:00.480 --> 00:07:02.600
braucht man eigentlich sonst nichts zu machen.

00:07:02.700 --> 00:07:04.780
Dann ist auch eine Source-Distribution

00:07:04.780 --> 00:07:07.280
im Grunde schon ausreichend.

00:07:08.420 --> 00:07:09.040
Aber wenn man

00:07:09.040 --> 00:07:10.720
jetzt halt C-Extensions dabei hat oder sonst irgendwas,

00:07:10.720 --> 00:07:12.540
was komplett werden muss, dann braucht man halt irgendwie

00:07:12.540 --> 00:07:14.120
so einem Compiler und

00:07:14.120 --> 00:07:15.420
muss halt

00:07:15.420 --> 00:07:18.780
ja, dass dann halt auch da

00:07:18.780 --> 00:07:20.820
Setup-Tools kein Konzept von

00:07:20.820 --> 00:07:22.780
Cross-Compiling hat, muss man halt auch

00:07:22.780 --> 00:07:24.840
für alle Architekturen, für die man Wheels bauen will

00:07:24.840 --> 00:07:26.780
zum Beispiel, auch tatsächlich eine

00:07:26.780 --> 00:07:28.800
Maschine da haben, die die Plattform

00:07:28.800 --> 00:07:30.820
halt, also eine Maschine der entsprechenden

00:07:30.820 --> 00:07:31.540
Plattform da haben.

00:07:32.940 --> 00:07:34.620
Was halt auch unter Umständen so ein bisschen doof war.

00:07:34.680 --> 00:07:36.520
Das war jetzt zu der Zeit, wo auf Apple Silicon

00:07:36.520 --> 00:07:38.580
umgestellt wurde, haben ganz viele Leute plötzlich

00:07:38.580 --> 00:07:40.640
gesucht nach, irgendwie habe ich irgendwo einen SSA-Zugang

00:07:40.640 --> 00:07:41.920
auf eine Maschine mit M1 oder so.

00:07:42.540 --> 00:07:44.100
damit ich das mal da bauen kann, weil

00:07:44.100 --> 00:07:46.200
ansonsten kann man halt keine Wheels bauen. Das geht halt nicht. Das kannst du nicht

00:07:46.200 --> 00:07:48.760
auf einer Intel-Maschine

00:07:48.760 --> 00:07:49.000
machen.

00:07:51.200 --> 00:07:52.240
Und das ist alles so ein bisschen

00:07:52.240 --> 00:07:53.660
hässlich. Und, ah ja, Gott.

00:07:55.540 --> 00:07:55.880
Ja.

00:07:56.760 --> 00:07:57.840
Es ist kompliziert, leider.

00:07:58.420 --> 00:08:00.180
Okay, dann habe ich Wheels gebaut und

00:08:00.180 --> 00:08:02.020
die kann ich dann irgendwie auf PyPI stellen

00:08:02.020 --> 00:08:03.860
und habe ein Paket.

00:08:03.980 --> 00:08:06.200
Aber nicht nur die Wheels, sondern auch Source-Distribution

00:08:06.200 --> 00:08:08.160
und Build-Distribution kann man auch

00:08:08.160 --> 00:08:09.700
auf PyPI stellen.

00:08:10.840 --> 00:08:12.200
Und passiert auch oft.

00:08:12.260 --> 00:08:13.860
Und oft muss man es dann auch selber kompilieren noch,

00:08:13.920 --> 00:08:15.220
wenn es halt keine Wheels gibt zum Beispiel.

00:08:16.640 --> 00:08:18.080
Ich habe jetzt auch hier so ein

00:08:18.080 --> 00:08:19.960
M1-Mac und das passiert regelmäßig, dass

00:08:19.960 --> 00:08:21.780
ich irgendwie Pandas oder NumPy und dann

00:08:21.780 --> 00:08:23.880
ein Großteil des Zeugs unten drunter muss halt dann

00:08:23.880 --> 00:08:25.880
noch kompiliert werden und das dauert halt

00:08:25.880 --> 00:08:27.860
relativ lang. Zum Beispiel, wenn jetzt man sowas

00:08:27.860 --> 00:08:29.700
installiert wie Python 3.9.6 irgendwie,

00:08:29.860 --> 00:08:32.060
wenn es gerade mal rausgekommen ist, dann gibt es halt für Pandas

00:08:32.060 --> 00:08:33.940
und NumPy noch keine Wheels und dann

00:08:33.940 --> 00:08:35.560
wird dann halt schön selber kompiliert,

00:08:36.300 --> 00:08:37.560
was dann halt mal ein paar Minuten dauern kann.

00:08:39.960 --> 00:08:40.840
Auf dem M1.

00:08:41.120 --> 00:08:43.200
Ja, und einen zur Verzweiflung treibt,

00:08:43.300 --> 00:08:45.240
wenn irgendwelche Details in dieser Compile-Pipeline

00:08:45.240 --> 00:08:47.480
und irgendwann der Vortragskompiler nicht richtig ist

00:08:47.480 --> 00:08:49.820
oder keine Ahnung, irgendwas bei der Emulation

00:08:49.820 --> 00:08:54.420
des Intel-Prozessors nicht richtig funktioniert oder so.

00:08:54.520 --> 00:08:56.480
Und dann kriegt man sehr, sehr komische Fehlermeldungen

00:08:56.480 --> 00:08:58.700
aus den Tiefen von irgendwelchen Compiler-Toolchains.

00:08:58.760 --> 00:08:59.100
Ja, okay.

00:08:59.520 --> 00:09:03.400
Ja, also tatsächlich auf anderen Systemen bauen zu wollen,

00:09:03.560 --> 00:09:06.560
an neuen Versionen, ist dann vielleicht immer nicht ganz so einfach.

00:09:07.080 --> 00:09:07.320
Nee.

00:09:07.680 --> 00:09:09.440
Aber das Gute ist, dass man tatsächlich auch,

00:09:09.440 --> 00:09:11.400
wenn man jetzt, vor allem wenn man jetzt eigentlich mal anfängt,

00:09:11.520 --> 00:09:13.320
dass man ja dann doch eher in der reinen Python-Welt

00:09:13.320 --> 00:09:15.520
bleibt und dass man dann das auch relativ

00:09:15.520 --> 00:09:16.580
entspannt einfach

00:09:16.580 --> 00:09:18.940
ohne irgendwelche großen Probleme

00:09:18.940 --> 00:09:21.380
die Packages erstens bauen kann und zweitens dann

00:09:21.380 --> 00:09:23.360
auch die dann auch wieder leicht installieren kann.

00:09:25.600 --> 00:09:27.720
Also man kann sich relativ viel von diesem Komplexitäts-

00:09:27.720 --> 00:09:28.960
Overhead sparen, indem man quasi

00:09:28.960 --> 00:09:31.240
keine externen Libraries verwendet

00:09:31.240 --> 00:09:33.340
oder sowas, ja. Genau, ja.

00:09:33.800 --> 00:09:35.040
Also reines Python, das

00:09:35.040 --> 00:09:37.300
ist eigentlich relativ einfach dann, ja.

00:09:37.580 --> 00:09:38.940
Also das Einzige, was halt dann

00:09:38.940 --> 00:09:40.180
mit in den

00:09:40.180 --> 00:09:42.740
Build Distributions drin, das sind halt die

00:09:42.740 --> 00:09:43.980
PYC-Files und

00:09:43.980 --> 00:09:46.980
PYC, also ansonsten

00:09:46.980 --> 00:09:48.860
muss die halt noch einmal von PY nach

00:09:48.860 --> 00:09:50.220
PYC verwandelt werden, aber das ist auch alles

00:09:50.220 --> 00:09:53.060
das merkt man heutzutage gar nicht mehr.

00:09:55.060 --> 00:09:56.880
Und dann hat man so ein Paket

00:09:56.880 --> 00:09:58.500
und dann hat man das auf PyPI und dann kann

00:09:58.500 --> 00:10:00.940
jeder das laden

00:10:01.580 --> 00:10:02.740
über PIP oder

00:10:02.740 --> 00:10:03.360
sowas.

00:10:07.400 --> 00:10:09.340
Ja, und die ganze Dokumentation

00:10:09.340 --> 00:10:10.860
dazu, ich habe

00:10:10.860 --> 00:10:13.120
mich ehrlich gesagt nicht wirklich

00:10:13.120 --> 00:10:15.080
vorbereitet, aber ich habe einmal

00:10:15.080 --> 00:10:15.460
geguckt,

00:10:18.440 --> 00:10:19.340
was gibt es

00:10:19.340 --> 00:10:21.100
denn, habe ich irgendwelche Bücher

00:10:21.100 --> 00:10:22.820
zufällig, wo was drinsteht über Packaging

00:10:22.820 --> 00:10:25.040
und da gab es irgendwie ein Buch

00:10:25.040 --> 00:10:26.940
Python Expert Programming, da war ein bisschen was drin,

00:10:27.000 --> 00:10:28.840
ein Kapitel und

00:10:28.840 --> 00:10:31.820
ansonsten

00:10:31.820 --> 00:10:35.200
ja, hier klingeln

00:10:35.200 --> 00:10:37.240
Dinge, das ist immer so was,

00:10:37.240 --> 00:10:39.240
Telefon auf Flugmodus stellen.

00:10:39.520 --> 00:10:41.360
Das ist ja immer eine Checkliste

00:10:41.360 --> 00:10:43.140
machen. Wird das ICQ-Bimmel im Hintergrund?

00:10:43.280 --> 00:10:43.560
Du kennst das.

00:10:45.080 --> 00:10:46.120
Oh ja, das ist lange her.

00:10:48.200 --> 00:10:49.440
Was sind hier der Flugmodus?

00:10:50.060 --> 00:10:50.560
Da ist er doch.

00:10:50.560 --> 00:10:50.840
So.

00:10:52.860 --> 00:10:53.040
Ja.

00:10:55.960 --> 00:10:57.520
Genau. Also die

00:10:57.520 --> 00:11:00.240
autoritative Quelle für Dokumentation

00:11:00.240 --> 00:11:01.860
über dieses ganze Packaging-Thema

00:11:01.860 --> 00:11:02.700
ist

00:11:02.700 --> 00:11:05.880
packaging.python.org, also die

00:11:05.880 --> 00:11:08.180
Python Packaging Authority,

00:11:08.280 --> 00:11:09.880
PyPA nennt die sich auch.

00:11:10.840 --> 00:11:12.880
Und da kann man das alles, also die ganzen Details,

00:11:13.000 --> 00:11:14.680
die ganzen fiesen Details, die stehen da alle drin.

00:11:15.200 --> 00:11:16.760
Und was mich sehr gefreut hat,

00:11:16.920 --> 00:11:18.840
das ist genauso aufgebaut

00:11:18.840 --> 00:11:20.420
wie, es gab da ja,

00:11:20.500 --> 00:11:22.120
das hatten wir das letzte Mal auch schon von,

00:11:23.280 --> 00:11:26.320
documentation.divio.com

00:11:26.320 --> 00:11:26.540
Ja.

00:11:27.380 --> 00:11:29.060
Sozusagen, also es gibt auch einen schönen

00:11:29.060 --> 00:11:30.900
Vortrag

00:11:30.900 --> 00:11:32.440
eben von Daniele

00:11:32.440 --> 00:11:34.100
Pruschida

00:11:34.100 --> 00:11:35.660
über... Der ist schon wieder.

00:11:36.040 --> 00:11:38.160
Der ist schon wieder, genau. Wie schreibt man eigentlich Dokumentationen

00:11:38.160 --> 00:11:39.760
sinnvollerweise? Und der teilt das halt auf.

00:11:40.000 --> 00:11:42.140
Naja, es gibt halt unterschiedliche

00:11:42.140 --> 00:11:44.120
Quadranten und unterschiedliche

00:11:44.120 --> 00:11:46.180
Zielrichtungen. Und dann schreibt man halt

00:11:46.180 --> 00:11:48.120
Tutorials, How-To-Guides, Explanations oder

00:11:48.120 --> 00:11:49.720
Reference-Documentation.

00:11:50.460 --> 00:11:51.920
Und das macht man alles mit Pleasure?

00:11:53.380 --> 00:11:54.180
Er hat mit dem

00:11:54.180 --> 00:11:56.100
Vortrag Programming for Pleasure gemacht. Genau, das war

00:11:56.100 --> 00:11:57.480
dieses Jahr. Das war, glaube ich, hier

00:11:57.480 --> 00:12:00.280
wo er über Dokumentationen Vortrag gemacht hat, war 2017

00:12:00.280 --> 00:12:02.180
oder so. Kann man sich auch angucken.

00:12:02.580 --> 00:12:04.080
Haben wir letztes Mal schon verlinkt.

00:12:04.100 --> 00:12:08.200
in der JagoCon Europe-Episode sehr empfehlenswert.

00:12:08.200 --> 00:12:12.980
Und was ich halt gesehen habe, ist, dass Pipey A hält sich genau da dran.

00:12:13.160 --> 00:12:14.860
Da sieht man halt, genau, sie machen Tutorials,

00:12:14.900 --> 00:12:17.700
dann machen sie How-To-Guides und dann machen sie irgendwie Discussions

00:12:17.700 --> 00:12:20.900
und dann gibt es dann halt irgendwie auch noch eine Referenzdokumentation.

00:12:21.560 --> 00:12:24.340
Also sie haben das genau so aufgeteilt und sich daran orientiert.

00:12:24.440 --> 00:12:25.220
Das fand ich irgendwie...

00:12:25.220 --> 00:12:27.120
Muss ich auch mal machen für meine Dokumentation.

00:12:28.240 --> 00:12:30.200
Dokumentation ist auch sowas, was ich irgendwie zu wenig tue.

00:12:31.160 --> 00:12:33.400
Ja, du sagst ja auch immer, guter Coach spricht für sich selbst.

00:12:34.000 --> 00:12:35.060
Genau, braucht man das alles gar nicht.

00:12:35.280 --> 00:12:36.380
So ein Quatsch, Dokumentation.

00:12:38.060 --> 00:12:38.940
Ich versuche tatsächlich,

00:12:39.080 --> 00:12:41.040
alle Sachen, die ich wahrscheinlich wieder vergesse,

00:12:41.820 --> 00:12:42.940
so aufzuschreiben,

00:12:43.040 --> 00:12:45.000
dass da auch jemand anders, der das vielleicht liest,

00:12:45.100 --> 00:12:46.420
dann auch noch machen könnte.

00:12:46.420 --> 00:12:48.020
Meistens ist man schon selber in einem halben Jahr und freut sich drüber.

00:12:48.020 --> 00:12:48.440
Ja, genau.

00:12:50.300 --> 00:12:51.140
Das ist immer ganz nett.

00:12:51.860 --> 00:12:53.220
Man ist auch schneller beim zweiten Mal,

00:12:53.260 --> 00:12:54.580
wenn man halt einfach seine eigene Doku lesen kann

00:12:54.580 --> 00:12:57.100
und sich nicht immer komplett von neuem irgendwo einarbeiten muss.

00:12:57.400 --> 00:12:59.540
Ich finde tatsächlich, dass man auch mit inneren Dokumentationen

00:12:59.540 --> 00:13:00.560
sehr viel gewinnen kann.

00:13:01.260 --> 00:13:03.580
Ich habe mir mal irgendwo mal abgeguckt,

00:13:03.700 --> 00:13:05.240
dass wenn man, sage ich mal, eine Methode hat,

00:13:05.280 --> 00:13:08.000
die vielleicht 20, 30 Zeilen irgendwie relativ viel macht,

00:13:08.080 --> 00:13:09.620
also du hast ein If und eine Schleife und keine Ahnung was,

00:13:10.040 --> 00:13:11.140
dass man mit so Pünktchen arbeitet,

00:13:11.220 --> 00:13:13.480
dass man sagt so, okay, hier mache ich jetzt das Punkt, Punkt, Punkt

00:13:13.480 --> 00:13:14.880
und wenn das zutrifft, Punkt, Punkt, Punkt

00:13:14.880 --> 00:13:16.660
und irgendwann kommst du halt zu dem Punkt, wo es halt vorbei ist

00:13:16.660 --> 00:13:19.660
und dann passiert dieses und dann passiert jenes.

00:13:19.960 --> 00:13:21.940
Das heißt, du kannst es halt mehr oder weniger wie so ein Buch lesen,

00:13:22.020 --> 00:13:23.380
also genau den Pfad, der dich interessiert.

00:13:24.200 --> 00:13:25.260
Habe ich mir irgendwann mal abgeguckt

00:13:25.260 --> 00:13:26.720
und das mache ich eigentlich öfters mal,

00:13:27.160 --> 00:13:29.080
ohne dass man jetzt da so einen fetten Dockstring drüber schreibt,

00:13:29.160 --> 00:13:30.040
weil ich finde, der liest sich irgendwie.

00:13:30.120 --> 00:13:31.100
Man ist ja irgendwie so ein bisschen faul.

00:13:33.700 --> 00:13:34.620
Eigentlich gar nicht das Thema.

00:13:38.940 --> 00:13:40.620
Ja, also wobei, ich weiß nicht,

00:13:40.680 --> 00:13:42.980
bei Dokumentationen innerhalb von Sourcecode

00:13:42.980 --> 00:13:46.680
oder Kommentare in Sourcecode finde ich immer ein bisschen schwierig.

00:13:46.840 --> 00:13:47.640
Also es kommt darauf an, was es ist.

00:13:47.720 --> 00:13:49.340
Manchmal auch natürlich stellen, wo das total sinnvoll ist.

00:13:49.420 --> 00:13:50.380
Aber manchmal ist es halt auch echt,

00:13:50.860 --> 00:13:53.300
weil das tendiert auch dazu, dann irgendwie so auseinanderzulaufen.

00:13:53.580 --> 00:13:55.140
Also warum man so bestimmte Sachen macht,

00:13:55.220 --> 00:13:56.000
die irgendwie komisch aussehen,

00:13:56.040 --> 00:13:57.360
dass das vielleicht manchmal gar nicht so schlecht sieht.

00:13:57.640 --> 00:13:59.420
Nee, das ist genau, genau, durchaus sinnvoll.

00:13:59.420 --> 00:14:23.740
Aber, ja, von, na, wie heißt er noch, Dingsda, Clean Code, Uncle Bob, der sagt immer, das Erste, was er macht, wenn er durch Code geht, ist halt die ganzen Kommentare entfernen, weil sie verwirren nur, weil, ja, aber es kommt halt drauf an.

00:14:23.740 --> 00:14:28.920
Also ich meine, es gibt halt so die Fälle, wo es klar ist, dass es verwirrend ist, aber es gibt halt auch die Fälle, wo es total sinnvoll ist.

00:14:29.520 --> 00:14:31.600
Ich finde, das kann sehr viel Vertrauen schaffen.

00:14:31.760 --> 00:14:42.600
Also wenn ich ein Package mir angucke, also jetzt in externer Sicht, und ich überlege, ob ich das nutzen möchte und vielleicht auch produktiv nutzen möchte und da ist halt gar nichts dokumentiert, dann habe ich direkt schon mal so ein großes Fragezeichen im Kopf, ob ich das wirklich nutzen möchte.

00:14:42.660 --> 00:14:48.560
Ja, wenn das gut strukturiert ist, gut dokumentiert ist, das lesbarer Code ist, vernünftig aufgeräumt ist, das macht schon echt viel aus.

00:14:49.800 --> 00:14:52.900
Bisschen moderner Stil. Wir haben ja alle so einen gewissen Taste mittlerweile.

00:14:53.740 --> 00:14:57.760
Ja, aber

00:14:57.760 --> 00:15:00.380
wir sind gerade bei Dokumentation

00:15:00.380 --> 00:15:02.320
gelandet, aber wir sind ja über Packaging

00:15:02.320 --> 00:15:03.760
dahin gekommen und

00:15:03.760 --> 00:15:06.040
ja, also okay, wir haben jetzt gesagt,

00:15:06.040 --> 00:15:07.540
okay, Setup-Tools des Utils,

00:15:08.100 --> 00:15:09.780
PIP,

00:15:10.560 --> 00:15:12.140
es gibt noch irgendwie dann so bestimmte

00:15:12.140 --> 00:15:13.880
Sachen, die man dann braucht, was wie eine Setup-Pi

00:15:13.880 --> 00:15:15.880
oder ich habe gesehen, man kann sowas auch mit Poetry und

00:15:15.880 --> 00:15:18.120
dann Pi-Project Hummel jetzt so ein bisschen basic

00:15:18.120 --> 00:15:18.980
einrichten.

00:15:20.320 --> 00:15:22.040
Ja, das ist doch mal...

00:15:22.940 --> 00:15:27.380
Ja, also wie man jetzt zum Beispiel die Metadaten zu einem Paket ...

00:15:27.380 --> 00:15:29.880
Ah, Moment, man braucht Metadaten zu einem Paket natürlich.

00:15:30.080 --> 00:15:31.760
Ja, ja, also zum Beispiel so was Simples wie,

00:15:31.840 --> 00:15:32.920
wie soll das Paket heißen?

00:15:33.080 --> 00:15:34.760
Das muss man ja irgendwo hinschreiben.

00:15:35.760 --> 00:15:38.380
Und da gibt es halt mehrere Methoden.

00:15:40.360 --> 00:15:43.520
Ja, das, was man, ich glaube, das ist auch das älteste Setup-Py.

00:15:44.120 --> 00:15:45.500
Also da ruft man halt Setup auf

00:15:45.500 --> 00:15:47.520
und irgendwie die ganzen Parameter sind im Grunde alles

00:15:47.520 --> 00:15:50.300
mehr oder weniger Argumente dieser Funktion.

00:15:52.640 --> 00:16:10.980
Das ist sehr dynamisch und so. Da kann man natürlich tolle Sachen machen. Da kann man dann so Sachen reinschreiben, wie man holt sich die Version von dem Paket irgendwie aus irgendeiner Init-PY in dem Paket selber oder solche Sachen. Aber auf der anderen Seite macht das halt der Infrastruktur darunter, dass es sehr, sehr schwer ist, dass das so dynamisch ist.

00:16:13.620 --> 00:16:26.260
Bei Project Hummel ist das ja auch ähnlich, es geht ja mit Poetry, wenn man damit arbeitet, auch so Bildbefehle und da kann man ja auch die Version direkt reinschreiben und einen kleinen Doxing reinschreiben und den Namen reinschreiben und so ein bisschen sich überlegen, was denn da stehen soll in dem Paket.

00:16:26.320 --> 00:16:37.380
Ja, ich weiß jetzt gar nicht so ganz genau, wie das bei Poetry dann tatsächlich darunter funktioniert, also ich habe es schon benutzt, aber tatsächlich ist das für mich so ein bisschen eine Blackbox irgendwie, Poetry tut dann irgendwas und dann fällt ein Paket raus.

00:16:38.820 --> 00:16:45.380
Also der Standardweg, wie man das mit Setup-Tools macht,

00:16:45.460 --> 00:16:52.680
ist dann setup.cfg, wo man dann halt so statische Metadaten drin hat

00:16:52.680 --> 00:16:55.060
und keine Setup-UI mehr verwendet.

00:16:55.100 --> 00:16:56.100
Das ist auch das, was empfohlen wird.

00:16:56.100 --> 00:16:59.240
Also die ganzen Leute, die sich da um dieses Python-Packaging-Ding kümmern,

00:16:59.320 --> 00:17:03.000
die sagen alle, oh mein Gott, bitte, bitte, bitte verwendet setup.cfg,

00:17:03.100 --> 00:17:04.560
das macht uns das Leben so viel einfacher.

00:17:04.960 --> 00:17:07.560
Setup-UI ist für uns ein Riesenproblem eigentlich.

00:17:07.840 --> 00:17:09.720
Also ich glaube, Setup-Chief-G ist viel

00:17:09.720 --> 00:17:11.680
davon ist auch in PyProject-Hummel dann gewandert.

00:17:12.160 --> 00:17:13.720
Genau, also PyProject-Hummel ist

00:17:13.720 --> 00:17:15.540
mehr oder weniger ein neues Format dafür, ja.

00:17:15.760 --> 00:17:17.660
Und das ist halt jetzt die aktuellste Art, wie man

00:17:17.660 --> 00:17:19.900
die Metadaten sozusagen erfasst.

00:17:20.520 --> 00:17:21.540
Und das ist halt auch Standard, ich glaube,

00:17:21.640 --> 00:17:22.840
das ist PEP

00:17:22.840 --> 00:17:26.080
518 oder sowas.

00:17:26.520 --> 00:17:27.260
Irgendwie, glaube ich.

00:17:28.720 --> 00:17:29.700
Ja, also das

00:17:29.700 --> 00:17:31.460
wandert jetzt alles in PyProject-Hummel rein

00:17:31.460 --> 00:17:33.540
und dann kann man das mit Poetry, wertet das dann halt

00:17:33.540 --> 00:17:35.560
irgendwie aus und baut das dann. Ob Poetry

00:17:35.560 --> 00:17:37.580
dann nochmal Setup-Tools unten drunter verwendet, weiß ich

00:17:37.580 --> 00:17:39.520
jetzt ehrlich gesagt gar nicht. Aber es gibt dann auch

00:17:39.520 --> 00:17:40.300
mehr Tools. Also

00:17:40.300 --> 00:17:43.420
Poetry gibt es. Es gibt aber auch, ich glaube,

00:17:43.540 --> 00:17:45.840
das habe ich in letzter Zeit

00:17:45.840 --> 00:17:46.960
viel Gutes drüber gehört, ist Flit.

00:17:49.200 --> 00:17:50.000
Oh, Flit?

00:17:50.380 --> 00:17:51.680
Und es liest halt auch

00:17:51.680 --> 00:17:53.400
PyProject Hummel aus

00:17:53.400 --> 00:17:54.860
und baut halt Pakete.

00:17:55.600 --> 00:17:57.540
Und vor allen Dingen benutzt es halt

00:17:57.540 --> 00:17:59.420
nicht, glaube ich, nicht Setup-Tools, sondern

00:17:59.420 --> 00:18:01.600
macht das alles selber. Und es benutzt auch nicht

00:18:01.600 --> 00:18:03.720
Vine, um dann hinterher die Pakete hochzuladen,

00:18:03.720 --> 00:18:05.540
sondern macht das auch selber. Das ist halt so eine komplett

00:18:05.540 --> 00:18:06.300
integrierte Geschichte.

00:18:07.040 --> 00:18:09.120
Was heißt flit? Das Symbol

00:18:09.120 --> 00:18:10.860
ist ein Kolibri. Ich fragte mich, ob das auch flit

00:18:10.860 --> 00:18:13.000
tut. Ich weiß jetzt

00:18:13.000 --> 00:18:14.440
nicht, wo der Name herkommt. Keine Ahnung.

00:18:15.400 --> 00:18:16.900
Also ein einfaches Modul, um Packages

00:18:16.900 --> 00:18:18.480
auf PyPy zu bekommen.

00:18:19.860 --> 00:18:20.700
Kenne ich auch noch nicht.

00:18:21.100 --> 00:18:22.800
Klingt spannend. Ich habe es jetzt letztens

00:18:22.800 --> 00:18:24.080
davon gehört,

00:18:25.040 --> 00:18:26.560
also ich hatte schon mal vorher davon gehört, aber jetzt nochmal

00:18:26.560 --> 00:18:28.860
ausführlicher in einer

00:18:28.860 --> 00:18:30.380
Podcast-Episode irgendwie

00:18:30.380 --> 00:18:32.600
Talk Python to me, wo, nee, nicht

00:18:32.600 --> 00:18:34.900
Talk Python to me, haha, falsch. Test & Code, glaube

00:18:34.900 --> 00:18:36.940
ich, von Brian Ocken

00:18:36.940 --> 00:18:38.860
der hatte da Brad Cannon

00:18:38.860 --> 00:18:40.760
zu Gast

00:18:40.760 --> 00:18:42.420
und der halt

00:18:42.420 --> 00:18:43.760
irgendwie da

00:18:43.760 --> 00:18:46.500
halt auch für diese Pipe EA irgendwie

00:18:46.500 --> 00:18:48.600
wesentlich zuständig ist und

00:18:48.600 --> 00:18:51.040
ja, der sagte also

00:18:51.040 --> 00:18:52.960
er benutzt auch selber Flit und das

00:18:52.960 --> 00:18:54.980
wird ihm sehr gut gefallen, weil es halt einfach schnell

00:18:54.980 --> 00:18:57.040
und so und macht das, was

00:18:57.040 --> 00:18:58.600
es soll, während Poetry

00:18:58.600 --> 00:19:01.140
ich verwende ja Poetry

00:19:01.140 --> 00:19:03.020
normalerweise, aber ehrlich gesagt so manchmal

00:19:03.020 --> 00:19:04.720
ich hatte das jetzt auch, ich glaube

00:19:04.720 --> 00:19:06.400
in dem Stream, wo ich da so

00:19:06.400 --> 00:19:08.500
Live-Sachen gerade irgendwie

00:19:08.500 --> 00:19:10.100
entwickle, da

00:19:10.100 --> 00:19:12.400
habe ich, ich habe dann

00:19:12.400 --> 00:19:14.360
irgendwann mal das Virtual

00:19:14.360 --> 00:19:16.000
N-Fax schmeißen müssen und dann habe ich

00:19:16.000 --> 00:19:17.120
nochmal als irgendwie neu

00:19:17.120 --> 00:19:20.160
von PyPI gezogen und

00:19:20.160 --> 00:19:22.260
Pootree irgendwie Update gesagt oder Install, ich weiß es

00:19:22.260 --> 00:19:24.040
gar nicht mehr genau und dann hat das irgendwie tatsächlich

00:19:24.040 --> 00:19:26.400
geschlagene 300 Sekunden

00:19:26.400 --> 00:19:27.980
irgendwie Dependencies aufgelöst.

00:19:28.720 --> 00:19:30.020
Ja. So, wo ich dachte so.

00:19:30.540 --> 00:19:32.140
Das passiert seitdem es das Async

00:19:32.140 --> 00:19:34.100
macht. Ja, mir geht das

00:19:34.100 --> 00:19:36.240
einstellen auf die Nerven. Da ist irgendwas richtig

00:19:36.240 --> 00:19:38.340
kaputt, weil das darf nicht, also das kann

00:19:38.340 --> 00:19:40.200
ich mir, ich kann mir nicht vorstellen,

00:19:40.400 --> 00:19:42.340
wie das irgendwie, welchen

00:19:42.340 --> 00:19:44.060
Grund es dafür geben könnte. Also ich meine,

00:19:44.320 --> 00:19:46.400
ich weiß nicht, so viele

00:19:46.400 --> 00:19:48.360
Pakete sind es nicht, vielleicht 50 oder so,

00:19:48.460 --> 00:19:49.540
die da drin sind, Abhängigkeiten.

00:19:50.280 --> 00:19:52.320
Und dass das dann irgendwie, also selbst

00:19:52.320 --> 00:19:53.860
ein paar Sekunden wäre viel zu viel,

00:19:53.980 --> 00:19:56.260
die Abhängigkeiten da aufzulösen. Wie kann das sein,

00:19:56.300 --> 00:19:58.300
dass das 300 Sekunden braucht? Das ist irgendwie, irgendwas ist

00:19:58.300 --> 00:20:00.460
da, oder es braucht

00:20:00.460 --> 00:20:02.320
es halt irgendwie, wenn es ein Netzwerk macht, das kann natürlich

00:20:02.320 --> 00:20:04.400
auch sein und PyPI überlastet ist oder so, vielleicht

00:20:04.400 --> 00:20:06.080
würde PIP auch so lange brauchen.

00:20:06.440 --> 00:20:08.340
Aber Pochi bringt ja einen eigenen Resolver mit und macht

00:20:08.340 --> 00:20:10.540
das halt nicht über PIP. Aber offenbar

00:20:10.540 --> 00:20:12.360
ist das irgendwie nicht so ganz okay. Also Pochi hat

00:20:12.360 --> 00:20:13.600
mir schon so ein paar Mal

00:20:13.600 --> 00:20:16.420
tatsächlich echt, ich dachte so,

00:20:16.600 --> 00:20:17.880
okay, da ist irgendwas nicht

00:20:17.880 --> 00:20:20.240
in Ordnung. Insofern...

00:20:20.240 --> 00:20:21.860
Falls ich schon immer mal Open Source entwickeln wollte,

00:20:22.100 --> 00:20:24.400
scheint es, als gibt es da ein paar Pull-Requests, die notwendig sind.

00:20:25.780 --> 00:20:26.260
Keine Ahnung,

00:20:26.340 --> 00:20:28.100
vielleicht muss ich mal reingucken, was da los ist, aber irgendwas,

00:20:28.380 --> 00:20:30.320
also da kriege ich auf jeden Fall, wenn ich

00:20:30.320 --> 00:20:31.160
sowas sehe, kriege ich einen Schreck.

00:20:32.320 --> 00:20:34.660
Oh, das ist ein Tool, auf das ich mich verlasse und das macht komische

00:20:34.660 --> 00:20:34.880
Dinge.

00:20:37.340 --> 00:20:38.340
Und das hat auch so,

00:20:38.440 --> 00:20:40.200
was mich auch bei Poetry so ein bisschen

00:20:40.200 --> 00:20:44.400
wo ich auch dachte, ach, das ist nicht so schlimm,

00:20:44.520 --> 00:20:46.420
aber das hat dann doch, macht auch

00:20:46.420 --> 00:20:47.960
immer wieder Probleme, ist halt,

00:20:48.400 --> 00:20:50.480
dass da halt, das gibt's bei den

00:20:50.480 --> 00:20:51.120
Setup-Tools,

00:20:54.000 --> 00:20:56.660
gibt's

00:20:56.660 --> 00:20:58.360
Setup, man kann Python Setup

00:20:58.360 --> 00:21:00.640
py-develop ausführen oder halt

00:21:00.640 --> 00:21:01.600
pip-i

00:21:01.600 --> 00:21:03.800
und damit halt so eine

00:21:03.800 --> 00:21:05.720
editierbare Version von einem Paket installieren.

00:21:05.980 --> 00:21:07.980
Das halt, wenn man das entwickelt, halt super praktisch ist.

00:21:08.880 --> 00:21:10.000
Und das geht mit Poetry

00:21:10.000 --> 00:21:11.840
geht das nicht. Also geht

00:21:11.840 --> 00:21:13.600
einfach gar nicht. Und was meinst du mit

00:21:13.600 --> 00:21:15.620
editierbare Version installieren? Also das lädt quasi

00:21:15.620 --> 00:21:17.940
seine lokale Datei

00:21:17.940 --> 00:21:19.580
als Symbolink

00:21:19.580 --> 00:21:21.480
Ja, ja, ja, genau.

00:21:21.600 --> 00:21:23.440
Es ist nur in den, tatsächlich

00:21:23.440 --> 00:21:25.440
im Virtual Env landet dann halt nur so eine Art Link

00:21:25.440 --> 00:21:27.460
und sobald man den Code ändert,

00:21:27.660 --> 00:21:29.580
dann muss man halt nicht irgendwie

00:21:29.580 --> 00:21:31.300
nochmal neu das Paket installieren, sondern

00:21:31.300 --> 00:21:34.700
sondern die geänderte Version vom Code ist dann halt direkt da.

00:21:35.320 --> 00:21:37.280
Das ist tatsächlich ein ganz, ganz wichtiger Punkt,

00:21:37.320 --> 00:21:38.060
den ich auch lernen musste.

00:21:38.340 --> 00:21:40.520
Wenn man mit einem Package arbeitet, dann denkt man erst mal,

00:21:40.640 --> 00:21:42.340
ja, cool, du hast ja meist den Code irgendwo,

00:21:42.520 --> 00:21:43.600
oder oft fängt man ja an, dass man denkt,

00:21:43.640 --> 00:21:44.880
ah, ich habe jetzt was gebaut in meinem Projekt,

00:21:44.920 --> 00:21:46.880
ich würde das gerne irgendwie generalisieren

00:21:46.880 --> 00:21:48.160
oder vielleicht anderen Leuten zur Verfügung stellen,

00:21:48.260 --> 00:21:49.600
was auch immer die Motivation sein könnte.

00:21:50.140 --> 00:21:51.780
Und dann merkt man, ja gut, jetzt habe ich das,

00:21:52.420 --> 00:21:53.440
jetzt muss ich es ein bisschen anpassen.

00:21:53.560 --> 00:21:54.460
Ja, wie teste ich das denn jetzt?

00:21:54.460 --> 00:21:55.260
Das ist ja jetzt ein eigenes Projekt,

00:21:55.380 --> 00:21:56.660
das ist ja jetzt nicht Standalone,

00:21:56.740 --> 00:21:58.920
das ist ja kein Django-Projekt in meiner Welt.

00:21:59.300 --> 00:22:00.100
Was macht man denn dann?

00:22:00.180 --> 00:22:04.280
Also dieses pip-e, das ist tatsächlich sehr, sehr cool und sehr einfach.

00:22:04.460 --> 00:22:08.800
Also ich nutze in den meisten Projekten pipenv einfach, weil, ja, weil.

00:22:09.340 --> 00:22:11.360
Ich habe gehört, Portree sei besser, keine Ahnung.

00:22:11.780 --> 00:22:12.440
Nö, weiß ich nicht.

00:22:13.440 --> 00:22:16.440
Naja, auf jeden Fall, ich bügele das dann halt einfach dann nochmal,

00:22:16.600 --> 00:22:20.000
also alles mit pipenv installiert und so und dann einfach manuell nochmal mit pip

00:22:20.000 --> 00:22:22.140
dann das drüber bügeln, um diesen Sim-Link zu machen.

00:22:22.560 --> 00:22:24.740
Und damit kann man dann sehr, sehr entspannt und sehr cool,

00:22:24.900 --> 00:22:27.000
dann auch mit zwei verschiedenen IDEs einfach.

00:22:27.000 --> 00:22:28.220
Auch im einen ändert man halt dann

00:22:28.220 --> 00:22:30.760
das Package erstmal gerade oder den

00:22:30.760 --> 00:22:32.440
Source Code des Packages, im anderen hast du quasi

00:22:32.440 --> 00:22:34.620
deinen richtigen Django-Web-Server

00:22:34.620 --> 00:22:36.200
oder was auch immer dein Projekt macht.

00:22:36.940 --> 00:22:38.360
Und das ist sehr, sehr

00:22:38.360 --> 00:22:40.520
convenient und da muss man auch erstmal wissen, was man suchen muss.

00:22:43.600 --> 00:22:44.180
Also du

00:22:44.180 --> 00:22:46.220
hast auch schon mal so ein paar Pakete gebaut, ich glaube

00:22:46.220 --> 00:22:48.180
auch, das hast du auch bei GitHub hochgestellt.

00:22:49.160 --> 00:22:50.220
Genau, ja, ich habe

00:22:50.220 --> 00:22:52.080
vor ein paar Jahren die

00:22:52.080 --> 00:22:54.480
Ownership von dem Package

00:22:54.480 --> 00:22:56.320
oder Maintainership von dem Package

00:22:56.320 --> 00:22:57.760
übernommen. Das

00:22:57.760 --> 00:23:00.320
habe ich auch schon mehrfach am Rande mal erwähnt

00:23:00.320 --> 00:23:02.160
auf ein paar Blog-Einträgen und sowas. Das ist dieses

00:23:02.160 --> 00:23:04.200
wunderbare AI Django Core Package.

00:23:05.280 --> 00:23:05.520
Das

00:23:05.520 --> 00:23:07.840
ist entstanden aus,

00:23:08.820 --> 00:23:10.140
wir hatten in der Frühzeit unsere

00:23:10.140 --> 00:23:12.000
Geschichte, also bei AIM Innovation, deshalb AI,

00:23:12.140 --> 00:23:13.940
hat nichts mit künstlicher Intelligenz zu tun,

00:23:14.280 --> 00:23:15.420
etwas misleading,

00:23:16.860 --> 00:23:18.120
haben wir

00:23:18.120 --> 00:23:20.080
gemerkt, dass wir halt irgendwie ganz praktische Sachen gebaut

00:23:20.080 --> 00:23:22.080
haben und dass man die halt irgendwie immer vom Projekt zu Projekt

00:23:22.080 --> 00:23:23.340
kopieren ist doof. Und

00:23:23.340 --> 00:23:25.700
da so, ja, machen wir mal ein Package und dann

00:23:25.700 --> 00:23:27.460
ist es halt einfacher zu installieren.

00:23:27.740 --> 00:23:29.380
Und hat man auch ein bisschen, wenn man mal einen Bug gefixt hat,

00:23:29.760 --> 00:23:31.680
und dann ist dann halt die Jahre...

00:23:31.680 --> 00:23:33.760
Also für die verschiedenen Projekte, das heißt, du kannst in jedem Projekt einfach sagen,

00:23:33.840 --> 00:23:36.040
okay, den Code nehme ich jetzt immer mit und hab die Basis-Funktionalität

00:23:36.040 --> 00:23:37.780
dann... Genau, ohne dass man es halt kopieren muss und

00:23:37.780 --> 00:23:39.840
hat halt dann keine Code-Renundanzen und sowas. Und wie gesagt,

00:23:39.920 --> 00:23:41.940
wenn man mal einen Bug fixen möchte oder irgendwas... Ja, vor allem, das ist halt

00:23:41.940 --> 00:23:43.820
blöd, wenn man halt irgendwas weiterentwickelt, ein neues Feature, und dann

00:23:43.820 --> 00:23:45.640
muss man das in jedem einzelnen Projekt wieder nachbauen,

00:23:45.720 --> 00:23:47.220
das ist natürlich nicht so gut. Genau, das ist sehr mühsam.

00:23:48.680 --> 00:23:49.840
Genau, und dann haben wir uns dann,

00:23:50.420 --> 00:23:51.660
dann ist da halt über Jahre

00:23:51.660 --> 00:24:11.540
dann so Einbahnstraßen-mäßig da halt Code hineingeflossen, auch dann irgendwie gab es dann irgendwann mal diesen großen Break, wo dann wirklich alle von Python 2 weg sind und dann waren da noch Python 2 Sachen drin, Python 3 Sachen und dann irgendwann habe ich mir das mal zur Brust genommen, ich glaube das war so 2018 ungefähr, habe ich mal angefangen zu gucken, was ist da eigentlich drin, weil ich da selber

00:24:11.540 --> 00:24:13.200
aber auch ziemlich viel contributed habe, weil ich halt

00:24:13.200 --> 00:24:15.480
oft Sachen gebaut habe, wo ich dachte, ach, das ist cool,

00:24:15.540 --> 00:24:16.920
das würde ich im nächsten Projekt auch gerne nutzen.

00:24:17.480 --> 00:24:19.500
Oder das, keine Ahnung, zum Beispiel Richtung

00:24:19.500 --> 00:24:21.240
Test-Setup oder so Sachen, die einfach

00:24:21.240 --> 00:24:23.520
das Ganze ein bisschen streamlinen und ein bisschen

00:24:23.520 --> 00:24:24.900
mehr so machen, wie ich das für richtig halte.

00:24:25.480 --> 00:24:27.480
Dann habe ich irgendwann mal angefangen zu gucken, was ist denn da eigentlich

00:24:27.480 --> 00:24:29.880
alles drin? Und wie gesagt, da waren Kompatibilitätsprobleme

00:24:29.880 --> 00:24:31.440
und da war anfangs noch kein

00:24:31.440 --> 00:24:33.240
Linting drin und die Dokumentation, es war nichts

00:24:33.240 --> 00:24:35.340
dokumentiert, es gab keine Dock-Strings,

00:24:35.980 --> 00:24:37.820
es gab überhaupt keine Art von Dokumentation,

00:24:37.940 --> 00:24:39.480
also es war auch einfach nichts,

00:24:39.600 --> 00:24:41.440
also man wusste halt, was drin ist oder man hat

00:24:41.440 --> 00:24:43.520
halt im Code rumgesucht, aber war halt irgendwie

00:24:43.520 --> 00:24:45.600
überhaupt nicht wirklich irgendwie

00:24:45.600 --> 00:24:47.560
freundlich und in dem Zuge, dass ich halt

00:24:47.560 --> 00:24:49.520
dann angefangen habe, ein paar Blogartikel zu schreiben, weil ich das

00:24:49.520 --> 00:24:51.680
auch irgendwie ganz cool fand, weil ich dachte, hey, wenn ich das Problem

00:24:51.680 --> 00:24:53.640
mal gelöst habe, das interessiert vielleicht auch jemand anders,

00:24:54.180 --> 00:24:55.580
dachte ich, ja gut, das ist halt irgendwie, ich kann

00:24:55.580 --> 00:24:57.520
da zwar einen Artikel drüber schreiben, aber eigentlich ist das

00:24:57.520 --> 00:24:59.520
so ein bisschen eine Frechheit, wenn man das so lässt, weil das

00:24:59.520 --> 00:25:01.620
halt nie, also in dem Zustand eigentlich nicht dafür da war,

00:25:01.660 --> 00:25:03.280
dass man das wirklich nach außen irgendwie gibt.

00:25:03.940 --> 00:25:05.520
Und das habe ich über die letzten Jahre halt dann angefangen

00:25:05.520 --> 00:25:07.500
und habe dann da in verschiedenen Wellen

00:25:07.500 --> 00:25:09.520
und Steps, ja,

00:25:09.600 --> 00:25:11.240
was gemacht. Also zum Beispiel

00:25:11.240 --> 00:25:12.540
super wichtig für mich,

00:25:13.340 --> 00:25:15.500
oder ein super wichtiges Learning für mich war, dass man einen Change-Log

00:25:15.500 --> 00:25:16.840
macht, allein schon für einen selbst.

00:25:17.220 --> 00:25:19.260
Ich habe keine Ahnung, was ich vor,

00:25:19.340 --> 00:25:20.980
also ich mache ungefähr

00:25:20.980 --> 00:25:23.560
alle ein bis zwei Monate einen Release,

00:25:23.700 --> 00:25:25.340
also irgendeine Art von Release. Kann mal

00:25:25.340 --> 00:25:27.320
Mad-Release sein, wenn ich irgendwas Größeres

00:25:27.320 --> 00:25:29.060
wirklich rudimentär gemacht habe oder halt

00:25:29.060 --> 00:25:31.340
was Kleineres, aber so ein bis zwei

00:25:31.340 --> 00:25:33.320
Monate, das heißt, da kommen einige Releases zusammen

00:25:33.320 --> 00:25:35.300
über die Zeit und wenn man dann

00:25:35.300 --> 00:25:37.280
mal irgendein größeres Projekt

00:25:37.280 --> 00:25:39.420
hat und das hochziehen möchte und denkt, ja komm, ich brauche

00:25:39.420 --> 00:25:41.340
ist dieses neue Feature, das da drin ist, und man nicht

00:25:41.340 --> 00:25:43.280
weiß, was man seitdem denn alles geändert hat

00:25:43.280 --> 00:25:45.160
und nicht weiß, wie man dann sein Projekt,

00:25:45.280 --> 00:25:47.520
dass man das aktualisieren möchte, wie man das möglicherweise

00:25:47.520 --> 00:25:48.780
kaputt macht, das ist echt blöd.

00:25:49.220 --> 00:25:50.660
Aber das geht ja dann auch direkt Richtung,

00:25:51.080 --> 00:25:53.140
wie vergibt man Versionsnummern und was ist,

00:25:53.160 --> 00:25:54.640
da gibt es ja auch... Ja, genau, da sind wir ja, genau.

00:25:55.260 --> 00:25:57.020
Semantic Versioning, glaube ich, habe ich gehört, ist da

00:25:57.020 --> 00:25:58.580
en vogue.

00:25:59.060 --> 00:25:59.780
Macht man das noch?

00:26:01.000 --> 00:26:03.420
Ja, naja, nicht, also ich wusste es halt...

00:26:03.980 --> 00:26:04.540
Wie man lustig ist?

00:26:05.860 --> 00:26:07.420
Ich guck mal...

00:26:07.420 --> 00:26:09.020
Ich habe gerade

00:26:09.020 --> 00:26:12.020
einen Artikel,

00:26:12.580 --> 00:26:14.720
Semantic Versioning

00:26:14.720 --> 00:26:15.420
won't save you.

00:26:16.460 --> 00:26:18.680
Ja, also es kann ja zum Beispiel sein, dass man eine neue Major-Version

00:26:18.680 --> 00:26:20.340
rausbringt, so von 2 auf 3 oder sowas,

00:26:20.380 --> 00:26:22.640
dann gehen Dinge kaputt. Das sind wir ja vielleicht nicht.

00:26:23.200 --> 00:26:24.300
Ja, also genau, da gibt es

00:26:24.300 --> 00:26:26.480
einen sehr schönen Blog-Artikel von

00:26:26.480 --> 00:26:28.540
Hüneck,

00:26:28.720 --> 00:26:30.360
Hüneck, Schlaback,

00:26:31.120 --> 00:26:32.660
Semantic Versioning will not save you.

00:26:33.260 --> 00:26:34.320
Der ist auch jetzt, genau,

00:26:34.380 --> 00:26:36.040
der ist von Anfang März,

00:26:36.300 --> 00:26:38.260
den habe ich mich nicht erinnert. Ja, leider

00:26:38.260 --> 00:26:40.540
ist das auch alles, also ich meine, es ist vielleicht besser als

00:26:40.540 --> 00:26:42.480
nix, aber es ist halt, es ist alles

00:26:42.480 --> 00:26:44.580
irgendwie. Vielleicht, was ist das denn?

00:26:44.620 --> 00:26:46.340
Was ist denn Semantik-Versioning? Was macht man denn da?

00:26:47.880 --> 00:26:48.580
Naja, dass man

00:26:48.580 --> 00:26:50.760
sozusagen so ein bisschen,

00:26:50.920 --> 00:26:52.440
also nicht nur das hochzählt,

00:26:52.660 --> 00:26:54.740
sonst könnte man ja einfach nur noch eine Zahl hochzählen,

00:26:54.840 --> 00:26:56.480
sondern dass da halt eine Bedeutung dran hängt,

00:26:56.540 --> 00:26:58.140
dass man zum Beispiel so eine Dreiteilung hat.

00:27:00.680 --> 00:27:02.600
Macht man bei Setup-Tools auch oft so,

00:27:02.640 --> 00:27:04.420
dass man da irgendwie dann Tuples verwendet, damit das

00:27:04.420 --> 00:27:06.360
klar ist, welche. Und dann wird es halt

00:27:06.360 --> 00:27:08.180
dann oft hat man dann halt irgendwie Major

00:27:08.180 --> 00:27:10.500
Version Punkt Minor Punkt irgendwie

00:27:10.500 --> 00:27:12.660
Patch Release oder so.

00:27:13.520 --> 00:27:14.560
Und in den Patch Releases

00:27:14.560 --> 00:27:16.600
sollten halt nur Bugs gefixt sein. Minor

00:27:16.600 --> 00:27:18.420
sollte vielleicht kommen, vielleicht

00:27:18.420 --> 00:27:20.100
Features dazu, aber es wird die

00:27:20.100 --> 00:27:22.360
Abwärtskompatibilität nicht gebrochen und dann

00:27:22.360 --> 00:27:24.360
bei Major Versionen kann man halt irgendwie

00:27:24.360 --> 00:27:25.900
eine neue App benutzen oder sowas.

00:27:26.020 --> 00:27:27.640
Ja, kann man es halt inkompatibel machen.

00:27:28.720 --> 00:27:30.460
Und oft sieht man das dann auch, dass Leute

00:27:30.460 --> 00:27:32.460
das dann halt in, ja,

00:27:32.500 --> 00:27:34.400
wenn sie halt ihre Abhängigkeiten definieren, dann so

00:27:34.400 --> 00:27:35.880
reinschreiben, also alles, was größer ist,

00:27:36.300 --> 00:27:38.500
größer gleich dieser meiner Version

00:27:38.500 --> 00:27:39.780
zum Beispiel, sodass halt sie

00:27:39.780 --> 00:27:42.280
keine Updates oder Features noch

00:27:42.280 --> 00:27:44.320
bekommen oder halt alle Security-Patches, aber

00:27:44.320 --> 00:27:46.340
halt nicht, dass die Kompatibilität

00:27:46.340 --> 00:27:46.980
nicht gebrochen wird.

00:27:48.220 --> 00:27:49.780
Nur das Problem ist natürlich, dass

00:27:49.780 --> 00:27:52.360
tatsächlich garantiert ist halt auch ein Bugfix

00:27:52.360 --> 00:27:54.180
kann natürlich die Kompatibilität brechen, wenn man sich

00:27:54.180 --> 00:27:56.040
darauf verlassen hat, dass sich etwas so verhält, wie es

00:27:56.040 --> 00:27:58.160
jetzt halt tut und das aber ein Bug war.

00:27:58.380 --> 00:28:00.100
Ja, das ist natürlich insofern

00:28:00.100 --> 00:28:01.800
ja, aber

00:28:01.800 --> 00:28:04.180
bei 0.9.7.0.20, das ist auch super.

00:28:04.400 --> 00:28:24.860
Ja, das gab ein sehr schönes Beispiel, das war vor, ich glaube, einem Jahr, vielleicht eineinhalb Jahren, zwei Jahren, da hatte Flake 8 ein neues Patch-Release rausgebracht, also die haben ja, glaube ich, von 0.96 auf 0.97 oder sowas und haben da aber einen neuen Check eingebaut, der nämlich gecheckt hat, ob F-Strings Variablen enthalten.

00:28:24.960 --> 00:28:26.520
Und wenn du dann S-String oder Variablen hast,

00:28:26.580 --> 00:28:27.760
dann ist es rausgeflogen.

00:28:28.480 --> 00:28:30.840
Und plötzlich sind halt dann bei diversen Projekten

00:28:30.840 --> 00:28:31.800
geht die Pipeline nicht mehr.

00:28:32.140 --> 00:28:33.920
Dann so, ich hab da nichts geändert, was ist denn jetzt los?

00:28:34.100 --> 00:28:36.720
War halt mit Star-Import einfach im PIP-File.

00:28:37.420 --> 00:28:38.480
Und ja, blöd.

00:28:40.080 --> 00:28:40.440
Tja.

00:28:41.700 --> 00:28:43.660
Wie gesagt, vielleicht hätte das schon vorher

00:28:43.660 --> 00:28:45.060
das überprüfen sollen, aber es war halt ein Bug

00:28:45.060 --> 00:28:45.840
und hat nicht funktioniert.

00:28:46.160 --> 00:28:47.100
Haben die den Bug repariert

00:28:47.100 --> 00:28:51.160
und schon hast du auf einmal ein komplett anderes Ergebnis

00:28:51.160 --> 00:28:53.500
und plötzlich ein Breaking-Change in deiner Pipeline.

00:28:53.500 --> 00:28:54.300
Aber trotzdem.

00:28:54.960 --> 00:28:57.100
Ja, dafür ist dann

00:28:57.100 --> 00:28:58.720
Pult wieder ganz ruhig, wegen der Log-File,

00:28:58.880 --> 00:29:00.680
wo es halt dann genau die Dependencies print.

00:29:01.180 --> 00:29:02.700
Ja, ja, auch eben, weil

00:29:02.700 --> 00:29:04.980
falls halt irgendwie

00:29:04.980 --> 00:29:06.800
andere Dinge, also einfach um

00:29:06.800 --> 00:29:08.900
reproduzierbare Umgebungen zu bekommen

00:29:08.900 --> 00:29:10.920
und auch wenn jemand es schafft,

00:29:11.080 --> 00:29:13.140
irgendwie malicious Pakete

00:29:13.140 --> 00:29:14.600
irgendwo hinzulegen, das ist ja auch so etwas,

00:29:14.600 --> 00:29:16.400
was dann zumindest sehr überprüft wird,

00:29:16.520 --> 00:29:18.340
dass der Hash stimmt und so, ja.

00:29:19.120 --> 00:29:20.620
Er würde dich auch nicht davor retten,

00:29:20.660 --> 00:29:22.080
wenn da schon ein malicious Paket drin wäre.

00:29:22.280 --> 00:29:23.680
Nee, dann hast du schon verloren, genau.

00:29:23.800 --> 00:29:25.260
wenn es halt jemand später schafft, genau.

00:29:26.900 --> 00:29:27.980
Aber tatsächlich bin ich

00:29:27.980 --> 00:29:29.360
jetzt auch ein großer Freund, dass ich

00:29:29.360 --> 00:29:31.620
eigentlich alle Abhängigkeiten, die ich habe,

00:29:31.700 --> 00:29:33.620
wirklich fixiere, weil ich bin da schon zu oft

00:29:33.620 --> 00:29:34.760
auf die Nase gefallen mit,

00:29:35.280 --> 00:29:37.040
weiß ich nicht, irgendwie Celery,

00:29:37.400 --> 00:29:39.660
das Monitoring-Tool Flower hat eine Abhängigkeit zur Tornado,

00:29:39.740 --> 00:29:41.100
die haben im Bugfix-Release irgendwie

00:29:41.100 --> 00:29:43.520
ein Attribut deprecated und rausgenommen

00:29:43.520 --> 00:29:45.420
und plötzlich steht man dann da und nichts mehr geht

00:29:45.420 --> 00:29:46.700
und das komplette Async ist tot.

00:29:48.040 --> 00:29:49.040
Und das ist halt bitter.

00:29:49.820 --> 00:29:50.500
Ja, ist schon doof.

00:29:50.880 --> 00:29:52.240
Ich habe gerade ein Problem mit

00:29:52.240 --> 00:29:53.360
auch einer Pipeline,

00:29:53.980 --> 00:29:56.080
weil das irgendwie so doof

00:29:56.080 --> 00:29:57.940
gebaut wird, dass da Abhängigkeiten zu Docker

00:29:57.940 --> 00:29:59.860
drin sind, dass aber das System

00:29:59.860 --> 00:30:01.960
dann doch abhängig funktionieren muss. Also das heißt,

00:30:02.020 --> 00:30:04.120
die nehmen dann, weil wir auf einer Windows-Maschine das aufbauen

00:30:04.120 --> 00:30:06.100
müssen, PyWin mit rein

00:30:06.100 --> 00:30:08.020
und das installiert sich natürlich nicht auf

00:30:08.020 --> 00:30:09.900
der Windows-Maschine, weil das dann in den Dependencies

00:30:09.900 --> 00:30:11.900
mit drin hängt. Das heißt, ich muss in der Pipeline das Log-File

00:30:11.900 --> 00:30:12.860
wegschmeißen. Toll.

00:30:14.140 --> 00:30:15.400
Hätte man sich auch direkt sparen können.

00:30:16.180 --> 00:30:18.380
Verlassen, dass dann halt das Dependency-Resolving

00:30:18.380 --> 00:30:19.400
vernünftig funktioniert, aber

00:30:19.400 --> 00:30:22.100
naja, da muss man halt doch wieder dann manuell pinnen.

00:30:22.240 --> 00:30:23.040
aber das geht dann schon irgendwie.

00:30:24.000 --> 00:30:25.720
Ja, aber solche Sachen, das ist halt wirklich hässlich dann.

00:30:27.900 --> 00:30:29.600
Da gibt es keine richtig gute Lösung für.

00:30:29.780 --> 00:30:31.840
Also wie baut man denn jetzt Python so zusammen,

00:30:31.960 --> 00:30:33.980
dass es immer vernünftig funktioniert,

00:30:34.180 --> 00:30:36.040
immer wieder auch in zwei Jahren noch irgendwo

00:30:36.040 --> 00:30:38.880
und das ist ein bisschen blöd irgendwie.

00:30:40.040 --> 00:30:40.640
Also auch wenn man jetzt,

00:30:40.980 --> 00:30:42.360
ich nehme jetzt noch dieses Windows-Beispiel,

00:30:42.440 --> 00:30:44.180
wenn man jetzt eine Executable erzeugen möchte,

00:30:44.180 --> 00:30:46.740
den man Leuten gibt, die eigentlich gar kein Python können

00:30:46.740 --> 00:30:48.140
oder auch programmieren nicht können oder sowas,

00:30:48.200 --> 00:30:49.540
sondern die wollen einfach ein Programm haben,

00:30:49.960 --> 00:30:51.640
was sie ausführen können, was dann auf Python läuft

00:30:51.640 --> 00:30:53.520
und bestimmte Dinge tut. Das

00:30:53.520 --> 00:30:55.460
bei denen auf den Rechner zu bekommen, das ist gar nicht so einfach.

00:30:55.680 --> 00:30:57.020
Aber darum gibt es ja auch Web-Software.

00:30:57.400 --> 00:30:59.440
Das ist ja genau der Grund, dass man diesen Knatsch halt

00:30:59.440 --> 00:31:01.520
nicht mehr hat. Ja gut, aber es gibt ja auch

00:31:01.520 --> 00:31:03.320
da verschiedenste Lösungen, wie man irgendwie so ein großes

00:31:03.320 --> 00:31:05.440
Paket zusammenschnürt, wo man dann alles

00:31:05.440 --> 00:31:06.600
mit reinpackt und

00:31:06.600 --> 00:31:09.760
die Dependencies mit reinpackt und den Compiler mit reinpackt

00:31:09.760 --> 00:31:11.260
und so, dass das dann halt selbstständig

00:31:11.260 --> 00:31:13.460
irgendwie aufgebaut werden kann. Ja, kann man

00:31:13.460 --> 00:31:15.480
schon. Also ich meine, PyInstaller ist halt wahrscheinlich

00:31:15.480 --> 00:31:17.380
vielleicht so die populärste. Es gab

00:31:17.380 --> 00:31:18.920
ja einige. Nuka. Es gab dann

00:31:18.920 --> 00:31:21.400
Nuka, PyOxidizer. Wir

00:31:21.400 --> 00:31:22.700
hatten da ja auch schon ein paar Mal drüber.

00:31:23.640 --> 00:31:25.400
Inzwischen, wenn man auf die Tools guckt,

00:31:25.520 --> 00:31:27.280
das sind Pi-Oxidizer und so, das ist schon wieder

00:31:27.280 --> 00:31:29.520
alles verschwunden aus den Empfehlungen.

00:31:30.000 --> 00:31:31.780
Das hat sich wohl

00:31:31.780 --> 00:31:33.600
dann... Pi-Installer ist irgendwie

00:31:33.600 --> 00:31:34.400
erstaunlich konstant.

00:31:34.800 --> 00:31:37.380
Ich habe es noch nie richtig... Funktioniert einfach

00:31:37.380 --> 00:31:39.260
nicht so, wie man will, wenn man zu viele externe Dependencies

00:31:39.260 --> 00:31:40.280
hat. Das ist auch nicht schön.

00:31:41.000 --> 00:31:41.180
Ja.

00:31:43.940 --> 00:31:45.320
Kein einfaches Problem,

00:31:45.320 --> 00:31:45.620
leider.

00:31:47.000 --> 00:31:49.320
Ja, aber was macht man da? Also Paket

00:31:49.320 --> 00:31:50.560
bauen? Ja, du sagst Web-Anwendung.

00:31:51.060 --> 00:31:52.580
Ja, Web-Anwendung, oder ich meine, klar,

00:31:52.680 --> 00:31:54.760
Docker-Image dürfte schon relativ haltbar

00:31:54.760 --> 00:31:56.460
sein, ist auch, ist natürlich so ein bisschen

00:31:56.460 --> 00:31:58.440
verschwenderisch groß alles. Solange es

00:31:58.440 --> 00:31:59.980
Docker noch gibt, ne? Ja.

00:32:01.540 --> 00:32:01.900
Ja.

00:32:03.760 --> 00:32:04.680
Aber, tja,

00:32:05.100 --> 00:32:06.440
ja, nee, ich habe auch keine Lösung dafür.

00:32:07.160 --> 00:32:07.840
Meine Lösung ist,

00:32:08.040 --> 00:32:10.400
nicht auf Systemen unterwegs sein, wo das ein Problem ist.

00:32:11.700 --> 00:32:12.720
Gut, aber es gibt halt

00:32:12.720 --> 00:32:14.320
Leute, die halt andere Systeme nutzen, das ist ja klar.

00:32:14.560 --> 00:32:16.280
Ja, ich verstehe das. Wenn die darauf relien,

00:32:16.280 --> 00:32:18.220
und wenn man von bestimmten Konzernen,

00:32:18.420 --> 00:32:20.220
die halt dann bestimmte Policies haben, die man nicht

00:32:20.220 --> 00:32:22.240
verstehen muss, aber wo man das natürlich daran halten muss.

00:32:22.680 --> 00:32:24.180
Die haben bestimmt 1998 Sinn

00:32:24.180 --> 00:32:25.280
gemacht, dass die jemand eingeführt hat.

00:32:25.640 --> 00:32:27.760
Ja, also die sind auch veränderungsresistent,

00:32:27.880 --> 00:32:29.860
da würde ja die ganze Abteilung sich als Renonant

00:32:29.860 --> 00:32:31.980
erweisen vielleicht, aber

00:32:31.980 --> 00:32:34.200
solange die gut verdienen, ist das halt nicht notwendig

00:32:34.200 --> 00:32:36.380
da irgendwas zu ändern, das ist halt

00:32:36.380 --> 00:32:36.660
dann so.

00:32:38.420 --> 00:32:40.120
Ja, aber wie gesagt, also

00:32:40.120 --> 00:32:41.820
nochmal zur Versionierung zurück,

00:32:41.820 --> 00:32:43.700
ich mache tatsächlich auch die Semantic Versioning,

00:32:44.000 --> 00:32:45.760
man kann halt damit wenigstens versuchen,

00:32:46.000 --> 00:32:46.860
dass man halt dem

00:32:46.860 --> 00:32:50.140
Nutzer, den man ja meistens nicht kennt, so ein bisschen

00:32:50.140 --> 00:32:52.060
wenn die, ja, den Pain

00:32:52.060 --> 00:32:53.880
zu nehmen, wenn man halt, wie man mit Updates umgeht,

00:32:53.900 --> 00:32:55.960
weil jedes Update, je nachdem, wie groß das Projekt ist und

00:32:55.960 --> 00:32:57.720
auch, wie stabil das Projekt ist, so

00:32:57.720 --> 00:32:59.120
Stichwort Testing und sowas,

00:33:00.040 --> 00:33:01.900
kann das ja auch ziemlich, mit ziemlich

00:33:01.900 --> 00:33:03.920
viel Kopfzerbrechen verbunden sein, irgendwas

00:33:03.920 --> 00:33:05.480
überhaupt hochzuziehen und

00:33:05.480 --> 00:33:07.880
bei dem habe ich jetzt halt gesagt, hey, wir

00:33:07.880 --> 00:33:09.800
machen jetzt Semantic Versioning und da

00:33:09.800 --> 00:33:11.540
versuche ich mich auch sehr dran zu halten, also

00:33:11.540 --> 00:33:13.760
darum habe ich jetzt auch schon in den Jahren jetzt

00:33:13.760 --> 00:33:15.820
vier Major Releases gemacht, weil

00:33:15.820 --> 00:33:17.760
Python hat irgendwie komplett

00:33:17.760 --> 00:33:19.560
alles auf drei umgestellt, ist halt ein Breaking Change,

00:33:19.680 --> 00:33:21.180
musst du halt hochgehen, da kommst du halt nicht drum rum.

00:33:21.600 --> 00:33:23.760
Fühlt sich manchmal so ein bisschen verschwenderisch an,

00:33:24.260 --> 00:33:25.620
wenn man denkt, schon wieder, das ist

00:33:25.620 --> 00:33:26.580
nicht so viel Code, aber

00:33:26.580 --> 00:33:29.700
man kann halt einfach nur hoffen, dass man

00:33:29.700 --> 00:33:31.420
es den Leuten halt möglichst einfach macht, weil

00:33:31.420 --> 00:33:33.620
das Problem ist, da sitzt dann nachher am

00:33:33.620 --> 00:33:35.580
anderen Ende der Welt jemand, der möchte genau das Package

00:33:35.580 --> 00:33:37.520
verwenden oder nutzt es im schlimmsten Fall vielleicht schon

00:33:37.520 --> 00:33:39.740
und dann macht man ihm plötzlich was kaputt, der hat keine Chance

00:33:39.740 --> 00:33:41.700
irgendwie vernünftig zu erreichen, zumindest

00:33:41.700 --> 00:33:43.680
nicht direkt und

00:33:43.680 --> 00:33:46.140
da sollte man ja schon

00:33:46.140 --> 00:33:47.040
gucken, dass man das

00:33:47.040 --> 00:33:49.540
ja, so stabil wie möglich baut.

00:33:50.420 --> 00:33:50.580
Ja.

00:33:52.500 --> 00:33:53.100
Ja, ja.

00:33:53.920 --> 00:33:54.820
Ja, ist auf jeden Fall nett.

00:33:55.160 --> 00:33:56.100
Ja, also ich wollte gerade sagen, also

00:33:56.100 --> 00:33:59.740
ich glaube, manchmal machen die Leute auch so ein bisschen zu viel

00:33:59.740 --> 00:34:01.620
Schwurbel um, es muss

00:34:01.620 --> 00:34:03.540
backwards kompatibel sein für

00:34:03.540 --> 00:34:04.340
bis in alle Zeiten.

00:34:05.020 --> 00:34:06.880
Absolut. Ich finde es vollkommen okay zu sagen,

00:34:07.600 --> 00:34:09.660
das Ding geht jetzt kaputt, wenn du das so nutzt wie vorher.

00:34:09.960 --> 00:34:11.360
Aber die müssen es halt wissen.

00:34:11.360 --> 00:34:12.580
So, ich meine, wäre halt einfach...

00:34:12.580 --> 00:34:14.860
Ja, es wäre schon nett, wenn man halt die Versionsnummer dann vielleicht major ändert.

00:34:15.180 --> 00:34:18.300
Genau, also wenn jemand halt blind irgendwie drei Majors hochgeht

00:34:18.300 --> 00:34:20.880
und sich dann ärgert, dass es nicht geht, ja gut.

00:34:21.120 --> 00:34:23.780
Wie gesagt, ich meine, manche Projekte haben ja leider wirklich kein Change-Log

00:34:23.780 --> 00:34:25.040
oder so ein ganz rudimentäres.

00:34:25.380 --> 00:34:27.340
Da ist man wirklich angeschmiert, weil du kannst es halt nicht wissen.

00:34:27.780 --> 00:34:29.760
Wie machst du das Change-Log und wie schreibst du das dann auf?

00:34:29.800 --> 00:34:31.140
Schreibst du dann vor jedem Commit

00:34:31.140 --> 00:34:33.340
oder lässt du aus den Commit-Messages automatisch dein Log kriegen?

00:34:33.400 --> 00:34:34.740
Ich mache das tatsächlich zu Fuß.

00:34:34.880 --> 00:34:35.960
Also da gibt es ganz viele Tools.

00:34:37.560 --> 00:34:40.300
Ich fand das Stand irgendwie nicht dafür,

00:34:40.400 --> 00:34:41.640
weil wie gesagt, wenn ich irgendwas mache,

00:34:41.720 --> 00:34:42.720
dann weiß ich ja, was ich mache

00:34:42.720 --> 00:34:45.260
und dann kann ich es auch einfach kurz ins Change-Logger.

00:34:45.280 --> 00:34:47.220
Das ist einfach ein Markdown-File.

00:34:47.260 --> 00:34:49.760
Disziplin, vernünftig deine Arbeit zu dokumentieren.

00:34:50.040 --> 00:34:52.140
Ja, und vor allem, das sind ja auch Stichpunkte.

00:34:52.260 --> 00:34:54.120
Ich meine, inzwischen habe ich eine Dokumentation,

00:34:54.200 --> 00:34:55.200
da kann ich gleich noch was dazu sagen.

00:34:55.840 --> 00:34:56.840
Auch ein Thema für sich.

00:34:58.060 --> 00:35:01.000
Aber ich habe einfach ein Markdown-File

00:35:01.000 --> 00:35:03.800
und das ist halt eine lange Liste, wo dann halt drinsteht,

00:35:03.880 --> 00:35:05.740
hey, am so und sovielten habe ich diese Version released

00:35:05.740 --> 00:35:06.680
und das hat sich geändert.

00:35:07.120 --> 00:35:08.900
Ich habe da irgendwie, weiß ich, drei Rechtschreibfehler

00:35:08.900 --> 00:35:10.800
in der Dokumentation gefixt, die Funktion ist neu

00:35:10.800 --> 00:35:12.000
und die Funktion hat neun Parameter.

00:35:12.680 --> 00:35:37.180
So, und dann, das ist halt, das dauert eine Minute, das zu schreiben. Ich meine, ich weiß ja, was ich da tue. Und wenn ich jetzt sage, ich sammle ein paar Kleinigkeiten, wo es sich nicht lohnt, ein Release zu machen, weil ich es gerade nicht so dringend brauche, dann habe ich halt einfach so ein current, temporäres Ding oben drin stehen und dann, wenn ich halt fertig bin, dann sage ich, okay, das gebe ich dem Namen, also sprich eine Versionsnummer und dann habe ich die Sachen einfach schon zusammengeschrieben, wenn von mehreren Seiten was, oder wenn mal auch von Kollegen oder so ein Pull-Request reinkommt oder sowas.

00:35:39.060 --> 00:35:40.140
Das ist auf jeden Fall ordentlich.

00:35:42.040 --> 00:35:43.140
Also ich tatsächlich

00:35:43.140 --> 00:35:45.160
bin da halt einfach gebranntes Kind, weil ich es halt schon zu oft

00:35:45.160 --> 00:35:46.940
hatte, dass ich denke, ja kacke, kann ich das jetzt noch

00:35:46.940 --> 00:35:48.280
verwenden, kann ich es nicht verwenden so.

00:35:49.020 --> 00:35:50.840
Also ich frage mich gerade, ab wann ich mit sowas anfangen würde,

00:35:50.980 --> 00:35:52.960
weil ich würde jetzt zum Beispiel in der ursprünglichen

00:35:52.960 --> 00:35:54.800
Entwicklung jetzt damit noch nicht anfangen, Change.org zu schreiben,

00:35:54.860 --> 00:35:56.860
wenn ich jetzt noch nichts habe, was richtig fertig ist und was

00:35:56.860 --> 00:35:59.220
funktioniert. Wahrscheinlich bei Person 1.0

00:35:59.220 --> 00:36:00.140
würde ich auch. Irgendwie so, ne, ja.

00:36:01.020 --> 00:36:02.820
Oder sobald halt Leute anfangen, das zu

00:36:02.820 --> 00:36:04.940
verwenden irgendwie. Was du natürlich auch nicht so genau

00:36:04.940 --> 00:36:06.900
weißt, also. Ne. Ja, sobald

00:36:06.900 --> 00:36:08.740
du was einigermaßen Nutzbares irgendwie hast,

00:36:08.840 --> 00:36:10.640
vielleicht. Ja. Genau.

00:36:11.860 --> 00:36:21.140
Ja, ich überlege gerade, ob ich was nicht so mache und denke mir so, oh nein, ich breche trauernd die Komplimente.

00:36:23.620 --> 00:36:35.960
Ich meine, es kommt auch immer darauf an, wenn das halt so ein Mini-Ding ist, also gut, selbst das kann irgendwie an eine zentrale Stelle eingebunden sein, aber zum Beispiel jetzt das Package, an dem ich jetzt arbeite, das ist halt eigentlich, das ist halt so eine Toolbox.

00:36:35.960 --> 00:36:42.820
Und ich bin eigentlich gar kein großer Fan, dass man so diese, sagt, hey, hier ist so ein Haufen von Zeug, das du so querbeet in dein Projekt einsetzen kannst.

00:36:42.820 --> 00:36:56.920
Wie so der Werkzeugkoffer bei euch im Schrank. Da hängt auch alle möglichen Schraubenschlüssel rum. Jeder hat seinen eigenen Werkzeugkoffer mit eigenen Schraubenschlüsseln. Tauscht man zu selten aus. Und da sind aber die Farben, die hat man sich selber zusammengesucht und man weiß selber, wo man in der Kiste was findet. Aber wenn jemand anders da in diesen Werkzeugkoffer reinguckt, dann, ja.

00:36:57.420 --> 00:37:16.020
Genau, also ich finde es eigentlich cooler, wenn man das, ich meine, da muss es nicht auf JavaScript-Level gehen, wo die quasi jeder zwei Zeilen ein eigenes Package ist, das ist manchmal ein bisschen krass, aber wenn man die Sachen vielleicht auch ein bisschen, also sagt man so, würde ich jetzt das Package nicht geerbt haben, sondern würde es jetzt neu machen, dann würde man sagen, hier dieser Code, der soll irgendwie Packages, würde ich das wahrscheinlich nach gewissen Use Cases strukturieren.

00:37:16.020 --> 00:37:18.380
Also auch nicht mehr Core nennen, sondern tatsächlich den Funktionalitätsgebiet.

00:37:18.700 --> 00:37:20.280
Das ist ja auch so ein Klassiker, das haben ganz

00:37:20.280 --> 00:37:22.240
viele Firmen. Ganz viele Firmen haben ein Paket, das

00:37:22.240 --> 00:37:24.140
heißt so wie die Firma. Oder

00:37:24.140 --> 00:37:26.280
sie haben halt ein Paket, das heißt dann irgendwie wie die Firma

00:37:26.280 --> 00:37:28.220
plus Core oder das heißt halt Core

00:37:28.220 --> 00:37:29.360
oder so. Das ist

00:37:29.360 --> 00:37:31.780
ja, das ist ganz, ganz typisch.

00:37:32.420 --> 00:37:34.060
Aber wie gesagt, zum Beispiel

00:37:34.060 --> 00:37:36.020
ich habe irgendwie ganz viele Sachen gebaut, die mir bei Unit-Tests

00:37:36.020 --> 00:37:37.820
helfen. Dann würde ich sagen, hey, das ist dann jetzt

00:37:37.820 --> 00:37:40.100
das Ambient-Unit-Test-Paket

00:37:40.100 --> 00:37:41.780
oder so. Und dann alle Sachen, die haben irgendwas

00:37:41.780 --> 00:37:43.860
berechnen oder die irgendwas mit dem View-Layer

00:37:43.860 --> 00:37:45.940
zu tun haben, weil viele Projekte laufen bei Django inzwischen

00:37:45.940 --> 00:37:47.920
auch Headless so, das hat dann auch gewisse

00:37:47.920 --> 00:37:49.800
Dependencies, die man ja sonst nicht reinholen muss.

00:37:51.020 --> 00:37:51.640
Das ist dann auch

00:37:51.640 --> 00:37:53.980
ein eigenes Paket. Und ich habe das jetzt mit

00:37:53.980 --> 00:37:56.100
Extensions tatsächlich gemacht, weil am Anfang

00:37:56.100 --> 00:37:57.560
war es auch so, dass auch die ganzen

00:37:57.560 --> 00:37:59.580
Dependencies wurden alle mit installiert immer,

00:38:00.060 --> 00:38:01.880
weil damals mir gar nicht so bewusst war,

00:38:01.920 --> 00:38:03.860
dass man das irgendwie trennen kann. Ich habe das dann einfach irgendwann übernommen

00:38:03.860 --> 00:38:05.960
und so ein bisschen umstrukturiert und dachte, okay, cool,

00:38:06.240 --> 00:38:08.040
funktioniert, wird schon passen. Aber man

00:38:08.040 --> 00:38:09.860
kann tatsächlich sagen, dass man verschiedene

00:38:09.860 --> 00:38:11.760
Extensions macht. Also das kennt man, wenn man das

00:38:11.760 --> 00:38:14.020
aus dem Requirements oder so

00:38:14.020 --> 00:38:15.480
ist, so eine enge Klammer, wo dann irgendwie

00:38:15.480 --> 00:38:17.400
bei Celery kann man es mit SQS oder

00:38:17.400 --> 00:38:19.780
mit Revit oder keine Ahnung welchen Extensions installieren

00:38:19.780 --> 00:38:21.540
und da kann man natürlich auch sehr schön

00:38:21.540 --> 00:38:23.360
die Dependencies wegkapseln, weil du kannst zum Beispiel

00:38:23.360 --> 00:38:25.480
sagen, hey, also zum Beispiel in meinem Fall

00:38:25.480 --> 00:38:27.520
ist es jetzt, ich habe diverse Sachen, die halt

00:38:27.520 --> 00:38:29.540
nur fürs Django Template Layer interessant sind,

00:38:29.620 --> 00:38:31.520
also ein Middleware und sowas und da sind halt

00:38:31.520 --> 00:38:33.640
ein, zwei Dependencies drin, die ich in anderen Cases nicht brauche.

00:38:34.520 --> 00:38:35.760
Das heißt, ich kann einfach hingehen

00:38:35.760 --> 00:38:37.400
und sagen, hey Leute, also steht es dokumentiert

00:38:37.400 --> 00:38:39.300
und sage, hey Leute, das ist das Standardpaket,

00:38:39.380 --> 00:38:41.520
das ist so das normale Shit, den man so mit Django

00:38:41.520 --> 00:38:43.580
machen kann und wenn

00:38:43.580 --> 00:38:45.480
ihr jetzt irgendwas Spezielles Julia haben wollt,

00:38:45.560 --> 00:38:47.500
das ist hier dokumentiert und da müsst ihr

00:38:47.500 --> 00:38:49.000
halt noch die Extension mit installieren und dann

00:38:49.000 --> 00:38:50.180
kriegen die halt auch die

00:38:50.180 --> 00:38:51.860
Dependency.

00:38:52.800 --> 00:38:55.540
Ja, das ist halt auch die Frage, bietet man den Leuten

00:38:55.540 --> 00:38:57.320
direkt das volle Rundum-Sorglos-Paket an,

00:38:57.360 --> 00:38:59.260
dass die ja nicht so viel Aufwand haben und das alles lesen müssen

00:38:59.260 --> 00:39:01.280
und alles nachinstallieren müssen oder

00:39:01.280 --> 00:39:03.120
machen wir das halt sehr modular?

00:39:04.100 --> 00:39:05.240
Also ich sag mal so,

00:39:05.980 --> 00:39:07.320
du kannst ja theoretisch

00:39:07.320 --> 00:39:08.800
auch einfach alles installieren, wenn du es willst.

00:39:08.900 --> 00:39:11.080
Das ist relativ zentral. Steht das auch am Anfang, hey, das gibt es

00:39:11.080 --> 00:39:12.880
und wenn du nicht so genau weißt, dann kannst du einfach alles nehmen.

00:39:13.400 --> 00:39:15.520
Aber ich finde es halt schön den Leuten, die halt

00:39:15.520 --> 00:39:17.480
mehr Kontrolle haben wollen, die zum Beispiel sagen wollen,

00:39:17.560 --> 00:39:19.740
hey, ich achte drauf, welche Unterdependencies

00:39:19.740 --> 00:39:21.460
in mein Projekt reinkommen, weil ich halt keinen Knatsch

00:39:21.460 --> 00:39:22.300
haben möchte oder sowas.

00:39:23.460 --> 00:39:25.420
Denen halt die Möglichkeit zu geben. Und dann auch

00:39:25.420 --> 00:39:26.560
ganz wichtig, dass man die ganzen

00:39:26.560 --> 00:39:28.980
Build-Dependencies, die man

00:39:28.980 --> 00:39:31.200
wirklich nur auf Meta-Ebene,

00:39:31.240 --> 00:39:33.240
also wenn du am Package arbeitest, dass man die halt

00:39:33.240 --> 00:39:35.460
rausnimmt, weil das bringt halt unendlich viele Sachen

00:39:35.460 --> 00:39:37.500
sonst nachher in so ein Projekt rein, den man eigentlich gar nicht haben

00:39:37.500 --> 00:39:39.340
möchte. Genau, ich habe

00:39:39.340 --> 00:39:40.220
jetzt hier gerade nochmal

00:39:40.220 --> 00:39:43.220
das letzte Paket, das ich irgendwie

00:39:43.220 --> 00:39:45.220
gebaut hat und reingeguckt.

00:39:45.600 --> 00:39:47.140
Das ist Django Fire Response.

00:39:47.960 --> 00:39:49.320
Oh, da hast du auch in deinem Stream

00:39:49.320 --> 00:39:51.420
einiges dran gearbeitet. Genau, da habe ich

00:39:51.420 --> 00:39:53.280
jetzt, bis letzte Woche habe ich da noch was dran gemacht.

00:39:53.300 --> 00:39:55.300
Falls ihr es noch nicht mitbekommen hattet, in der letzten Folge hatten wir

00:39:55.300 --> 00:39:56.860
erwähnt, dass der Jochen jetzt nämlich auch streamt.

00:39:57.360 --> 00:39:59.420
Relativ häufig. Und da könnt ihr zugucken, was der die ganze Zeit

00:39:59.420 --> 00:40:00.980
für uns anstellt und wie man dann so entwickelt,

00:40:01.140 --> 00:40:02.680
wie man das live macht. Ja.

00:40:03.000 --> 00:40:04.240
Ich finde es eigentlich, es sieht cool aus.

00:40:05.860 --> 00:40:06.700
Und ja, wirklich.

00:40:06.700 --> 00:40:08.420
Danke, danke, danke. Genau.

00:40:08.680 --> 00:40:10.660
Ja, technisch gar nicht so schlecht, glaube ich.

00:40:10.920 --> 00:40:12.440
Inhaltlich muss ich noch ein bisschen feilen, glaube ich.

00:40:12.460 --> 00:40:14.220
Nein, andersrum, weil ich finde auch tatsächlich, dass es inhaltlich

00:40:14.220 --> 00:40:16.320
sehr spannend ist, was man da alles so umsetzen kann.

00:40:16.480 --> 00:40:18.040
Ich baue das gerade so ein bisschen nach, ehrlich gesagt.

00:40:18.760 --> 00:40:20.320
Ich habe... Also Final Responses fand ich

00:40:20.320 --> 00:40:21.660
sehr interessant, den möchte ich auch mal bauen, ja.

00:40:21.920 --> 00:40:24.180
Also wo ich tatsächlich noch Schwierigkeiten... Ich merke das, das habe ich

00:40:24.180 --> 00:40:26.120
heute wieder gemerkt, tatsächlich,

00:40:26.340 --> 00:40:28.060
was mir schwerfällt und was ich nicht so gedacht hätte,

00:40:28.100 --> 00:40:30.080
nicht erwartet hätte, also wenn ich

00:40:30.080 --> 00:40:32.140
irgendwie so an den Projekten rumentwickle und

00:40:32.140 --> 00:40:34.260
ich weiß aber, das können sich

00:40:34.260 --> 00:40:36.080
Leute nachher angucken, dann tendiere ich

00:40:36.080 --> 00:40:38.300
dazu zu sagen so, ah, jetzt gut,

00:40:38.380 --> 00:40:40.000
jetzt müsste ich da jetzt immer tief graben oder

00:40:40.000 --> 00:40:42.280
irgendwie versuchen rauszukriegen, das wird voll langweilig

00:40:42.280 --> 00:40:44.280
und ich muss ganz viel probieren. Und ich habe absolut keine Ahnung,

00:40:44.380 --> 00:40:46.220
ob ich damit irgendwie in einer halben Stunde fertig bin oder so.

00:40:46.300 --> 00:40:48.220
Und jetzt kann es sein, dass sich Leute einfach eine halbe Stunde lang

00:40:48.220 --> 00:40:49.180
fürchterlich langweilen.

00:40:50.220 --> 00:40:51.240
Und es ist fruchtlos.

00:40:52.240 --> 00:40:54.240
Also das merken, weil normalerweise

00:40:54.240 --> 00:40:55.860
würde mir das halt nichts ausmachen. Mir macht das ja Spaß,

00:40:56.120 --> 00:40:58.180
das zu entwickeln. Und dann probiere ich halt rum

00:40:58.180 --> 00:40:59.920
und wenn es halt geht, super. Wenn es nicht geht, naja.

00:41:00.020 --> 00:41:02.020
Ich muss sagen, also mir macht das auch Spaß, weil dieses

00:41:02.020 --> 00:41:03.300
Rumprobieren, das kriege ich dann ja mit.

00:41:03.840 --> 00:41:06.060
Und da lerne ich auch mal was bei. Und ich glaube, gerade dann, wenn man

00:41:06.060 --> 00:41:08.020
halt nicht alles so perfekt vorher schon weiß,

00:41:08.440 --> 00:41:09.860
sondern das so ein bisschen rausknobeln muss.

00:41:09.860 --> 00:41:11.620
Und man ist ja quasi mit live dabei. Das ist ein bisschen

00:41:11.620 --> 00:41:13.820
vielleicht wie am Podcast, durch dieses Rausknobeln,

00:41:13.900 --> 00:41:15.780
das du ja dann machst, dann knobelt man selber

00:41:15.780 --> 00:41:17.580
so ein bisschen rein und man kommt halt tiefer

00:41:17.580 --> 00:41:19.940
in die Thematik rein und man hat ein tieferes Verständnis

00:41:19.940 --> 00:41:21.880
für die Zusammenhänge und das ist unheimlich

00:41:21.880 --> 00:41:24.000
wertvoll dann. Deswegen sollte man sowas, glaube ich,

00:41:24.000 --> 00:41:26.080
tun, ja. Ja, das ist tatsächlich vielleicht eine interessante

00:41:26.080 --> 00:41:27.980
Geschichte, dass man genau da bei Leuten

00:41:27.980 --> 00:41:29.520
halt so, aber wenn man das macht oder

00:41:29.520 --> 00:41:31.980
für mich war das überraschenderweise so,

00:41:32.260 --> 00:41:34.060
dass ich das Gefühl habe, oh, jetzt muss ich aber weiter

00:41:34.060 --> 00:41:35.880
oder oh, da sehen Leute, dass ich keine Ahnung

00:41:35.880 --> 00:41:37.660
habe oder weiß ich nicht, irgendwie so ein

00:41:37.660 --> 00:41:39.940
Ego-Ding, dass ich nicht so

00:41:39.940 --> 00:41:41.840
richtig los werde und da ist mir jetzt schon ein paar Mal

00:41:41.840 --> 00:41:43.880
aufgefallen, okay, da habe ich dann irgendwas übersprungen oder

00:41:43.880 --> 00:41:45.960
dann bin ich nicht so, mache ich das nicht so, wie ich das normalerweise

00:41:45.960 --> 00:41:48.100
machen würde. Also ich weiß eine Lösung.

00:41:48.920 --> 00:41:49.840
Also du hast ja so ein tolles Pult,

00:41:49.900 --> 00:41:51.700
da kannst du so bestimmte Einwendungen machen. Ich würde so

00:41:51.700 --> 00:41:53.800
einen Button dann einfügen, den kannst du zumindest später

00:41:53.800 --> 00:41:55.880
runterschalten, wo dann einfach so fett zensort auf dem

00:41:55.880 --> 00:41:57.100
Bildschirm steht, so ein schwarzer Balken,

00:41:57.240 --> 00:41:59.720
dann wird das, was du gerade programmierst, einfach kurz sensiert und

00:41:59.720 --> 00:42:01.220
der Ton gestrambelt, dann gehst du so

00:42:01.220 --> 00:42:03.680
selber kurz draufdrücken, dann hast du einen

00:42:03.680 --> 00:42:05.760
kurzen sensierten Teil, dann kannst du

00:42:05.760 --> 00:42:07.520
wieder freischalten, dann, okay, geht wieder.

00:42:08.540 --> 00:42:09.600
Ja, genau,

00:42:09.780 --> 00:42:11.420
wird sich schon irgendeine Methode finden.

00:42:11.580 --> 00:42:13.360
Kennt ihr das aus Starship Troopers, wo es dann kurz diesen

00:42:13.360 --> 00:42:15.780
Send-Out-Biken gibt und in den Hintergrund werden die Kühe dann von den Elfen vergessen?

00:42:15.780 --> 00:42:17.880
Ja, und hinten wie so die Gedärme fliegen, genau.

00:42:18.280 --> 00:42:19.200
Ja, das stimmt.

00:42:20.160 --> 00:42:21.120
Das ist eine gute Idee.

00:42:22.040 --> 00:42:23.400
Da fliegen noch nicht genug Gedärme

00:42:23.400 --> 00:42:25.380
in dem Stream, das ist wahr.

00:42:28.080 --> 00:42:29.560
Genau, da habe ich ja dieses

00:42:29.560 --> 00:42:31.100
Django-Fire-Response-Paket gebaut.

00:42:31.460 --> 00:42:33.720
Da habe ich etwas verwendet, was ich jetzt vielleicht dann

00:42:33.720 --> 00:42:35.640
auch nur aus Spaß

00:42:35.640 --> 00:42:36.860
habe ich

00:42:36.860 --> 00:42:39.180
ein MBDev, was in der Data Science

00:42:39.180 --> 00:42:40.680
welther so ein bisschen

00:42:40.680 --> 00:42:43.100
verbreiteter ist. Vielleicht nochmal ganz kurz, das hast du auch schon

00:42:43.100 --> 00:42:45.020
einmal kurz erklärt, aber NBDEF ist quasi

00:42:45.020 --> 00:42:47.280
entwickeln mit dem Notebook, aber das Notebook quasi

00:42:47.280 --> 00:42:49.180
das bei dem Paket automatisch

00:42:49.180 --> 00:42:51.080
mit den Dokumentationen und so erzeugen kann. Genau,

00:42:51.260 --> 00:42:53.080
also das eigentliche Ding, was das so interessant

00:42:53.080 --> 00:42:55.100
macht, ist, dass man so ein bisschen Literate Programming

00:42:55.100 --> 00:42:56.960
machen kann und halt

00:42:56.960 --> 00:42:59.040
Dokumentation, Code und

00:42:59.040 --> 00:43:00.960
Tests irgendwie direkt zusammenstehen hat

00:43:00.960 --> 00:43:03.140
und daraus dann halt sozusagen

00:43:03.140 --> 00:43:04.900
aus den Notebooks wird dann das Paket

00:43:04.900 --> 00:43:07.040
erzeugt oder das Modul, also der

00:43:07.040 --> 00:43:08.420
Source-Code erzeugt

00:43:08.420 --> 00:43:10.520
und aus dem

00:43:10.520 --> 00:43:12.320
Source Code wird dann ein Paket gebaut und das

00:43:12.320 --> 00:43:14.340
geht auch tatsächlich, ich habe jetzt nochmal nachgeguckt, weil ich es gar nicht mehr wusste,

00:43:14.520 --> 00:43:16.300
aber ja, das macht das per Setup.py

00:43:16.300 --> 00:43:18.280
und da hat man halt auch

00:43:18.280 --> 00:43:20.100
eben, da

00:43:20.100 --> 00:43:21.660
schreibt man halt rein, extra

00:43:21.660 --> 00:43:24.200
Extras Require zum Beispiel

00:43:24.200 --> 00:43:26.260
und kann dann

00:43:26.260 --> 00:43:28.240
halt, das ist einfach nur ein Dikt und

00:43:28.240 --> 00:43:30.180
dann kann man da beliebige Dinge reinschreiben, halt zum Beispiel

00:43:30.180 --> 00:43:32.100
was ich jetzt da nur drin stehen habe, ist halt Dev und dann

00:43:32.100 --> 00:43:34.220
Dev Requirements, aber man kann halt auch eben

00:43:34.220 --> 00:43:36.120
eben alle möglichen optionalen Geschichten mit

00:43:36.120 --> 00:43:38.140
angeben, die man dann halt installiert oder nicht und

00:43:38.140 --> 00:43:39.920
da wäre es zum Beispiel so, also dieses

00:43:39.920 --> 00:43:41.980
Django-File-Disponse-Dings hat selber praktisch keine

00:43:41.980 --> 00:43:42.920
Abhängigkeiten,

00:43:43.700 --> 00:43:45.280
aber wenn ich jetzt

00:43:45.280 --> 00:43:47.740
die Dev-Requirements da mit reinnehmen würde,

00:43:48.260 --> 00:43:50.100
dann wäre das ziemlich übel, weil dann würde

00:43:50.100 --> 00:43:51.920
der ganze Envy-Dev-Kram mitkommen zum Beispiel.

00:43:52.360 --> 00:43:54.220
Es würden Jupiter-Notebooks mitkommen,

00:43:54.320 --> 00:43:55.920
es würde Pandas mitkommen, es würde Nam-Pi mitkommen,

00:43:56.460 --> 00:43:57.600
es würde irgendwie so das

00:43:57.600 --> 00:44:00.260
halbe Deadline-Universum

00:44:00.260 --> 00:44:01.520
mitkommen, was du normalerweise

00:44:01.520 --> 00:44:03.700
auf dem Web-Server hast, wo du Django

00:44:03.700 --> 00:44:05.660
verwenden willst, hast du es ja gar nicht. Und plötzlich

00:44:05.660 --> 00:44:07.500
wird dann wahrscheinlich irgendjemand

00:44:07.500 --> 00:44:09.600
vor einer Konsole sitzen und denken sich,

00:44:09.940 --> 00:44:11.840
warum kommt da jetzt ein Fortran-Compiler

00:44:11.840 --> 00:44:13.900
mit Telefon drin? Und warum dauert

00:44:13.900 --> 00:44:15.380
das eine halbe Stunde, bis das kompiliert ist?

00:44:16.060 --> 00:44:17.880
Ja, genau.

00:44:18.060 --> 00:44:18.580
Nicht so gut.

00:44:19.460 --> 00:44:20.900
Aber vielleicht noch mal kurz zur NBDEV.

00:44:21.640 --> 00:44:23.640
Wie baut man denn quasi sein normales Notebook

00:44:23.640 --> 00:44:25.800
in ein NBDEV um, damit es halt dann auch als Paket

00:44:25.800 --> 00:44:27.700
nutzbar ist?

00:44:28.120 --> 00:44:29.760
Muss ich da quasi ein anderes Notebook nehmen

00:44:29.760 --> 00:44:31.040
oder kann ich einfach ein Jupyter-Notebook nehmen?

00:44:31.120 --> 00:44:33.760
Das ist ein Jupyter-Notebook, aber das Einzige,

00:44:33.760 --> 00:44:35.800
was man da braucht, ist im Grunde

00:44:35.800 --> 00:44:38.260
man muss MBDev installieren

00:44:38.260 --> 00:44:40.060
und dann halt MBDev build lib

00:44:40.060 --> 00:44:43.640
und dann hat man so ein paar Metaanweisungen

00:44:43.640 --> 00:44:45.480
sozusagen für MBDev in dem Notebook selber.

00:44:45.480 --> 00:44:47.580
Das heißt, das ist eine Extension für das eigentliche Notebook

00:44:47.580 --> 00:44:49.740
und wo man dann quasi ein bisschen anders strukturiert,

00:44:49.840 --> 00:44:50.060
als man nach vorne machen würde?

00:44:50.060 --> 00:44:51.180
Nee, das ist keine Extension,

00:44:51.360 --> 00:44:52.520
sondern das liest es einfach nur.

00:44:52.920 --> 00:44:55.440
Und wenn man da sowas reinschreibt wie Kommentar

00:44:55.440 --> 00:44:58.180
und dann Export oder Default Export,

00:44:58.500 --> 00:45:00.200
also diese Sachen werden dann ausgewertet

00:45:00.200 --> 00:45:01.480
und werden dann benutzt,

00:45:01.560 --> 00:45:04.380
um dann daraus zum Beispiel die Python-Module zu erzeugen.

00:45:05.460 --> 00:45:07.020
Also es ist nicht mal irgendwie

00:45:07.020 --> 00:45:09.480
ein Jupyter-Plugin

00:45:09.480 --> 00:45:11.140
oder sowas. Das heißt, man muss einfach richtig

00:45:11.140 --> 00:45:13.580
seine Zellen vom Typ her definieren im Jupyter-Notebook

00:45:13.580 --> 00:45:14.680
und dann Docs hinschreiben.

00:45:14.680 --> 00:45:17.180
Dann wird das gelesen von der MBDF und das schreibt dann halt

00:45:17.180 --> 00:45:17.960
den Source-Code dann raus.

00:45:20.200 --> 00:45:21.400
Also ich fand's eigentlich ganz nett.

00:45:21.640 --> 00:45:22.720
Ich find's auch sehr spannend, also sehr cool.

00:45:22.860 --> 00:45:24.980
Ich benutze auch relativ viele Notebooks zum Entwickeln.

00:45:25.500 --> 00:45:27.420
Also gerade auch so Django, so I.O. Sachen oder sowas

00:45:27.420 --> 00:45:29.300
oder Modellsachen, Funktionen, Methoden.

00:45:30.520 --> 00:45:31.580
Die kann man einfach super schnell

00:45:31.580 --> 00:45:33.440
dann testen. Die gehen halt an, Django-Shell auf

00:45:33.440 --> 00:45:35.000
und dann kann man testen.

00:45:35.180 --> 00:45:36.920
Ich mache das tatsächlich, das haben wir aber auch beim

00:45:36.920 --> 00:45:38.840
letzten Mal, als ich bei euch eingeladen war, schon mal drüber gesprochen,

00:45:39.340 --> 00:45:40.480
ich mache das tatsächlich so, dass

00:45:40.480 --> 00:45:42.900
ich das öfters ich oft mit dem Debugger

00:45:42.900 --> 00:45:45.540
entwickle. Ja, das ist auch eine interessante Option.

00:45:45.540 --> 00:45:47.940
Ja, auf jeden Fall. Das mache ich

00:45:47.940 --> 00:45:49.660
nicht so oft, aber das wollte ich mir auf jeden Fall

00:45:49.660 --> 00:45:51.620
auch nochmal angucken. Du nützt ja auch

00:45:51.620 --> 00:45:53.660
PyCharm, ne? Das ist, glaube ich,

00:45:53.660 --> 00:45:54.580
sehr komfortabel. Ja.

00:45:55.080 --> 00:45:57.420
Man muss sich auf jeden Fall abgewöhnen, STRG-S zu drücken.

00:45:57.680 --> 00:45:59.440
Ja. Weil dann speichert ihr die Datei

00:45:59.440 --> 00:46:01.300
und dann fliegt der Debugger raus. Ja. Aber

00:46:01.300 --> 00:46:03.300
ich finde, das ist eigentlich ganz cool.

00:46:03.400 --> 00:46:05.960
Also vor allem, wenn man so viele Funktionen

00:46:05.960 --> 00:46:09.200
und so irgendwie externen Daten und sowas bekommt,

00:46:09.520 --> 00:46:10.200
wo man dann oft irgendwie,

00:46:10.260 --> 00:46:11.920
okay, da muss ich mir auf die dritte Area-Stelle zugreifen.

00:46:12.020 --> 00:46:14.260
Das sind Sachen, die man halt, du weißt, es ist da irgendwo,

00:46:14.380 --> 00:46:15.540
du weißt nicht genau, wo es ist.

00:46:15.820 --> 00:46:17.400
Und da macht man dann normalerweise viele Runden

00:46:17.400 --> 00:46:18.440
und das ist dann einfach angenehm,

00:46:18.480 --> 00:46:21.640
wenn du dann direkt einfach in diesem Evaluate-Expression

00:46:21.640 --> 00:46:22.940
einfach die Sachen da zusammenklopfst

00:46:22.940 --> 00:46:24.200
und dann direkt auf den Knopf drückst und weißt,

00:46:24.280 --> 00:46:25.240
jo, läuft, passt, nice.

00:46:25.960 --> 00:46:28.040
Ja, da muss ich auch wieder ein Land zerbrechen,

00:46:28.100 --> 00:46:30.040
das geht auch in anderen Entwicklungsumgebungen

00:46:30.040 --> 00:46:32.860
tatsächlich ganz gut, wenn man die richtig einstellt.

00:46:33.400 --> 00:46:34.980
Das haben wir so ein bisschen gefummelt,

00:46:35.060 --> 00:46:36.640
bis man halt den Debugger so laufen hat,

00:46:36.680 --> 00:46:37.200
wie man das gehen hätte.

00:46:37.740 --> 00:46:39.540
Aber hast du da schon diesen Debugger,

00:46:39.580 --> 00:46:42.420
den wir letztes Mal vorgestellt haben, gesehen?

00:46:43.460 --> 00:46:44.620
Und zwar Kodo, oder wie hieß der?

00:46:44.780 --> 00:46:45.160
Kodo-App?

00:46:45.740 --> 00:46:46.880
Kodo-App, genau.

00:46:47.240 --> 00:46:48.340
Das ist ein neuer Django-Debugger,

00:46:49.320 --> 00:46:51.000
der relativ coole Sachen machen kann,

00:46:51.080 --> 00:46:53.160
wie Visualisierung der Code-Pathes und sowas.

00:46:53.240 --> 00:46:53.500
Cool.

00:46:53.980 --> 00:46:54.880
Relativ geil, musst du mal schauen.

00:46:54.980 --> 00:46:55.740
Ist aber nicht für Python.

00:46:58.200 --> 00:46:58.520
Ja.

00:46:58.520 --> 00:47:02.360
Ja, aber das wäre auch auf jeden Fall, genau.

00:47:02.540 --> 00:47:03.840
Also das habe ich mir auch zum Ziel gesetzt.

00:47:04.080 --> 00:47:05.860
Ich meine, normalerweise benutze ich ja immer Vim oder so.

00:47:06.360 --> 00:47:08.160
Aber das eben jetzt mal explizit nicht zu machen,

00:47:08.240 --> 00:47:10.240
sondern im Stream halt versuche ich jetzt,

00:47:10.320 --> 00:47:12.200
zum Beispiel habe ich jetzt immer eher VS Code benutzt.

00:47:13.480 --> 00:47:16.180
Einfach nur, um das halt auch so ein bisschen zu lernen.

00:47:16.300 --> 00:47:18.140
Oder halt auch PyCharm würde ich auch auf jeden Fall machen.

00:47:18.340 --> 00:47:21.280
Ja, also ach so, was du auch noch dabei machen solltest,

00:47:21.420 --> 00:47:22.820
vielleicht ist so ein bisschen so die Konfiguration zeigen,

00:47:22.880 --> 00:47:25.140
ein bisschen so die Magie zeigen, wie man das Tool dann jeweils benutzt.

00:47:25.460 --> 00:47:26.520
Das ist, glaube ich, auch noch mal sehr lehrreich.

00:47:26.520 --> 00:47:27.960
Also vielleicht kurz darauf eingehst,

00:47:28.160 --> 00:47:29.780
so wie man es da so nachmacht.

00:47:30.160 --> 00:47:32.520
Kann ich mir einfach mal vornehmen, das zu versuchen zu verwenden.

00:47:32.540 --> 00:47:34.680
weil dann, also je mehr man halt neue Sachen

00:47:34.680 --> 00:47:35.780
lernt, die man noch nicht lernt.

00:47:38.000 --> 00:47:39.980
Ja, okay, ich werde es mal versuchen.

00:47:41.580 --> 00:47:41.860
Ja, ja.

00:47:45.700 --> 00:47:46.420
Ja, das ist schon richtig.

00:47:46.500 --> 00:47:48.240
Man muss einfach ab und zu mal Dinge ausprobieren, das ist

00:47:48.240 --> 00:47:48.860
ganz wichtig.

00:47:50.360 --> 00:47:52.120
Ja, wenn man sonst immer noch bei seinen Sachen bleibt, dann wird man darin

00:47:52.120 --> 00:47:54.040
auch ein bisschen besser, aber was neue Sachen ist, ist schon spannend.

00:47:54.680 --> 00:47:56.400
Ja, ja, oft. So was wie Programmieren oder

00:47:56.400 --> 00:47:58.020
sowas kann ja auch für einige Leute neu sein.

00:47:58.920 --> 00:47:59.940
Ja, eigentlich bin ich schon fast

00:48:00.280 --> 00:48:01.960
zu lange dafür dabei, um das so noch zu erzählen.

00:48:02.120 --> 00:48:04.260
Aber ja, ist noch wahr.

00:48:05.960 --> 00:48:07.000
Das Gefühl geht auch nicht weg.

00:48:07.540 --> 00:48:07.800
Ja, okay.

00:48:08.920 --> 00:48:10.440
Ja, man hat halt von allen Sachen immer keine Ahnung.

00:48:10.620 --> 00:48:12.480
Aber irgendwie hat man dann doch mehr Ahnung hinterher,

00:48:12.560 --> 00:48:13.620
so Rückblicken von einigen Sachen,

00:48:13.800 --> 00:48:14.760
die man eigentlich gar nicht wissen wollte.

00:48:14.920 --> 00:48:16.820
Aber so da vorne ist immer,

00:48:17.020 --> 00:48:18.400
der Berg wird immer größer anstatt kleiner.

00:48:18.520 --> 00:48:19.200
Das ist so ein bisschen das Problem.

00:48:19.460 --> 00:48:22.200
Ja, weiß nicht, was mir bei so zunehmender Erfahrung auffällt,

00:48:22.300 --> 00:48:23.080
ist oft,

00:48:23.090 --> 00:48:24.610
muss ich gar nicht mehr so

00:48:24.610 --> 00:48:27.290
oder was mir heute leichter fällt

00:48:27.290 --> 00:48:29.190
oder ich sag mal so, der Unterschied zwischen heute und

00:48:29.190 --> 00:48:31.270
den Zeiten, wo ich halt wenig Erfahrung

00:48:31.270 --> 00:48:33.250
hatte, war halt, ich hatte früher immer mehr

00:48:33.250 --> 00:48:35.110
das Gefühl, bewusst Dinge zu tun oder

00:48:35.110 --> 00:48:37.330
bewusst irgendwie Sachen auszuprobieren. Und heute

00:48:37.330 --> 00:48:39.130
muss ich eigentlich nur, denke ich mir so,

00:48:39.250 --> 00:48:41.210
okay, ich habe keine Ahnung, wie genau es

00:48:41.210 --> 00:48:42.930
passieren wird, aber irgendwie in der nächsten halben Stunde wird

00:48:42.930 --> 00:48:44.810
mir schon irgendwas einfallen. Und dann probiere ich halt einfach rum

00:48:44.810 --> 00:48:47.250
und dann hinterher denke ich so, okay, das war's, aber keine Ahnung.

00:48:47.350 --> 00:48:49.210
Ich weiß gar nicht, ich habe mir jetzt gar nicht genau überlegt, was ich

00:48:49.210 --> 00:48:50.770
da tue, sondern es passiert irgendwie.

00:48:51.210 --> 00:48:53.210
Das passt mit dem Blogartikel, den du mir letztens geschickt hast,

00:48:53.350 --> 00:48:55.410
wo du sagtest, wie lange sollte man eigentlich

00:48:55.410 --> 00:48:57.290
über Probleme nachdenken? Und die Antwort war eigentlich

00:48:57.290 --> 00:48:58.110
so, ja, eigentlich gar nicht.

00:48:59.050 --> 00:49:00.590
Genau, würde ich auch inzwischen

00:49:00.590 --> 00:49:03.210
sagen, eigentlich lieber, wenn man

00:49:03.210 --> 00:49:05.370
nicht direkt weiterkommt, halt einfach was anderes machen.

00:49:05.950 --> 00:49:06.870
Später nochmal drauf zurückkommen.

00:49:06.890 --> 00:49:08.610
Duschen gehen, es fällt einem wie Schuppen von den Augen.

00:49:09.830 --> 00:49:11.690
Aber das ist ja auch direkt eine gute Überleitung.

00:49:12.070 --> 00:49:12.210
Ja.

00:49:12.430 --> 00:49:15.150
Weil bei Packages ist ja auch oft das Problem,

00:49:15.310 --> 00:49:17.010
dass wenn man entweder auf der

00:49:17.010 --> 00:49:18.990
gebenden oder auf der nebenen Seite des Packages steht

00:49:18.990 --> 00:49:20.350
und dann einen Bug hat,

00:49:20.870 --> 00:49:22.970
beziehungsweise auch irgendwie so eine gewisse Maintenance machen

00:49:22.970 --> 00:49:24.770
muss, zum Beispiel gibt es eine neue Dango-Version und man wird

00:49:24.770 --> 00:49:26.350
inkompatibel, das passiert ja leider

00:49:26.350 --> 00:49:28.890
immer wieder mal und das ist

00:49:28.890 --> 00:49:30.970
tatsächlich auch eine Sache,

00:49:31.090 --> 00:49:33.010
dass wenn man so ein Package in die Welt setzt,

00:49:33.130 --> 00:49:34.190
ich nehme jetzt mal extra dieses Wort,

00:49:35.350 --> 00:49:36.810
dass man halt da schon ein bisschen im Kopf

00:49:36.810 --> 00:49:39.010
behalten sollte, wie gehe ich denn damit um

00:49:39.010 --> 00:49:41.050
mit der Maintenorship, also wenn man sagt, ich mache das jetzt für mich

00:49:41.050 --> 00:49:42.490
und mal zum Ausprobieren, das nutzt eh keiner.

00:49:42.710 --> 00:49:44.850
Ich suche immer noch kurz den Übergang von der Dusche,

00:49:44.950 --> 00:49:46.230
aber okay, du bist für ein Maintenorship, ja.

00:49:48.190 --> 00:49:50.730
Nee, wegen Bugs und Problemen.

00:49:50.850 --> 00:49:52.430
Ja, wie lange man nur dran nachdenken sollte.

00:49:52.690 --> 00:49:52.830
Genau.

00:49:54.310 --> 00:49:57.090
Und das ist tatsächlich auch eine Sache,

00:49:57.250 --> 00:49:58.950
das merke ich halt auch oft,

00:49:59.030 --> 00:50:00.870
dass ich halt vor allem in älteren Projekten, die ich habe,

00:50:00.930 --> 00:50:03.230
dass ich da halt ein sehr cooles Package verwendet habe.

00:50:03.410 --> 00:50:04.250
Würde ich heute nicht mehr machen,

00:50:04.310 --> 00:50:06.310
aber ich habe den Code so gebaut, dass es halt funktioniert.

00:50:06.830 --> 00:50:08.910
Und dieses Package ist halt irgendwann mal hart abandoned worden.

00:50:08.910 --> 00:50:12.090
Also, dass da wirklich die Leute einfach kein Interesse mehr daran haben.

00:50:12.250 --> 00:50:14.270
Also, die nicht mal mehr das Interesse haben, zu sagen so,

00:50:14.290 --> 00:50:17.690
hey, ich schreibe einfach sorry, ich weiß ich nicht,

00:50:17.950 --> 00:50:19.970
ich bin jetzt irgendwie Gärtner und ich mache kein Programmieren mehr,

00:50:20.390 --> 00:50:22.070
kann ich nicht helfen, sondern es einfach kommt gar nichts mehr.

00:50:22.390 --> 00:50:23.670
Obwohl die Leute halt immer noch aktiv sind.

00:50:23.870 --> 00:50:25.390
Also man kann es ja auch sehen, was Leute so machen.

00:50:25.990 --> 00:50:26.990
Und das ist halt immer wieder sehr ärgerlich.

00:50:27.090 --> 00:50:29.450
Und ich glaube, dass wenn man so ein Paket in die Welt setzt,

00:50:29.690 --> 00:50:32.130
und man irgendwann merkt, okay, ich habe jetzt den Fokus verloren

00:50:32.130 --> 00:50:33.470
und das nutzt aber vielleicht noch irgendwer.

00:50:33.790 --> 00:50:34.970
Ich glaube, das Erste, was man machen kann,

00:50:35.030 --> 00:50:37.750
ist halt, dass man irgendwo prominent eine Möglichkeit hat,

00:50:37.850 --> 00:50:39.370
dass man den Leuten Feedback geben kann.

00:50:39.370 --> 00:50:42.130
Also offensichtlich ist es einfach bei GitHub, die Issues.

00:50:42.450 --> 00:50:44.050
Die kann man übrigens auch sehr schön über die,

00:50:44.190 --> 00:50:46.750
zum Beispiel Setup Highlight oder Project Setup Tommel,

00:50:46.830 --> 00:50:49.390
direkt verlinken in PyPy,

00:50:49.450 --> 00:50:50.010
dass die Leute direkt,

00:50:50.190 --> 00:50:50.990
über das Change-Log und so,

00:50:51.050 --> 00:50:51.970
kann man alles perfekt verlinken,

00:50:52.030 --> 00:50:53.210
dass die Leute gar nicht lange suchen müssen.

00:50:53.850 --> 00:50:55.030
Und dass man dann auf jeden Fall Leuten,

00:50:55.150 --> 00:50:55.670
die das halt nutzen,

00:50:55.730 --> 00:50:56.610
die Möglichkeit gibt,

00:50:57.190 --> 00:50:57.930
dass sie Feedback geben.

00:50:58.030 --> 00:50:58.350
Also zum Beispiel,

00:50:58.410 --> 00:51:00.070
ich habe die ersten zwei Issues bekommen,

00:51:00.210 --> 00:51:01.310
tatsächlich mit Übersetzungen,

00:51:01.430 --> 00:51:04.250
weil halt in dem Package halt ein paar Models,

00:51:04.330 --> 00:51:04.890
die ich da bereitstelle,

00:51:04.970 --> 00:51:05.790
waren halt auf Deutsch,

00:51:05.870 --> 00:51:06.810
weil die meisten Projekte,

00:51:06.870 --> 00:51:07.190
die wir nutzen,

00:51:07.250 --> 00:51:07.790
sind halt auf Deutsch.

00:51:07.850 --> 00:51:08.550
Und es ist halt nicht aufgefallen,

00:51:08.590 --> 00:51:10.510
dass da der Übersetzungshelfer fehlt.

00:51:10.850 --> 00:51:13.150
Und das war dann für die Leute halt echt super ärgerlich,

00:51:13.190 --> 00:51:14.230
weil die halt das irgendwie nutzen wollten.

00:51:14.230 --> 00:51:19.670
Wahrscheinlich haben die Blog-Artikel von mir gelesen, weil dann so, ja Mist, in dem Projekt ist alles auf Sprache X und das plötzlich auf Deutsch.

00:51:19.990 --> 00:51:21.410
Wenn der gut translatet, dann kommt irgendein Unsinn raus.

00:51:21.730 --> 00:51:42.530
Genau, und das hat mich dann total gefreut, es kam auch direkt ein Pull-Request hinterher, hey, hier so und so, und hab dann auch die Übersetzung nachgezogen und alles super, ne, also hätte ich sonst niemals rausgefunden, weil bis die irgendwie dann über die Webseite irgendwie mich anonym anschreiben oder mich über LinkedIn suchen oder keine Ahnung was, ist das ein riesen Overhead und so, einfach kennt halt jeder, ist schnell gemacht und das ist, glaube ich, so ein kleiner Convenience,

00:51:42.530 --> 00:51:44.650
die man dann seinen Usern irgendwie

00:51:44.650 --> 00:51:46.690
bereitstellen kann, weil es kostet ja auch nichts, es ist ja echt schnell

00:51:46.690 --> 00:51:48.530
gemacht. Und wie gesagt, das andere

00:51:48.530 --> 00:51:50.630
mit der Maintenorship, wenn man halt wirklich

00:51:50.630 --> 00:51:52.190
sagt, okay, ich gebe das jetzt auf,

00:51:53.010 --> 00:51:53.650
es gibt ja so

00:51:53.650 --> 00:51:56.490
entweder so Projekte, so wie Jazzband oder sowas,

00:51:56.550 --> 00:51:58.350
da gab es noch mit der DjangoCon einen schönen Vortrag dazu,

00:51:58.690 --> 00:52:00.510
wenn das wirklich ein größeres Projekt ist, dass man die da einfach

00:52:00.510 --> 00:52:02.590
abgeben kann und sagen kann, hey, sorry, ich bin

00:52:02.590 --> 00:52:04.470
raus hier mit dem Kram, aber das nutzt noch Leute,

00:52:05.250 --> 00:52:06.130
bitte kümmert euch drum.

00:52:07.630 --> 00:52:08.670
Und auf der anderen Seite,

00:52:08.770 --> 00:52:10.550
dass man natürlich auch dann notfalls auch andere Leute

00:52:10.550 --> 00:52:12.070
einfach befördern kann und einfach

00:52:12.070 --> 00:52:13.590
sagen kann, hier

00:52:13.590 --> 00:52:15.650
das,

00:52:16.690 --> 00:52:18.410
also ich habe da jetzt irgendwie Interesse und ich muss das reparieren

00:52:18.410 --> 00:52:20.430
und sage, gut, ich habe selber keine Zeit, dann mach halt.

00:52:20.970 --> 00:52:22.290
Ist immer noch besser, als wenn es gar keiner

00:52:22.290 --> 00:52:22.590
macht.

00:52:24.190 --> 00:52:26.230
Ja, ist ja gar nicht so einfach. Also gerade bei Leuten,

00:52:26.390 --> 00:52:28.450
die halt for pleasure entwickeln,

00:52:28.590 --> 00:52:30.470
da muss man sich halt auch überlegen,

00:52:30.610 --> 00:52:32.370
will man nicht auch mal was Neues machen oder sowas?

00:52:32.430 --> 00:52:33.870
Dann ist das schon klar, dass das schon schwierig ist.

00:52:34.190 --> 00:52:35.950
Immer an den alten Sachen, die irgendwie so mitzuschleppen.

00:52:36.350 --> 00:52:38.170
Aber das ist ja oft, also bei mir ist das

00:52:38.170 --> 00:52:40.210
keine bewusste Entscheidung, sondern das ist ja so,

00:52:40.310 --> 00:52:42.530
es ist halt einfach nur viel Zeugs inzwischen

00:52:42.530 --> 00:52:43.450
und

00:52:43.450 --> 00:52:46.530
ich würde das ja schon gerne alles noch machen.

00:52:46.830 --> 00:52:48.730
Ja, also manchmal möchte man halt auch mal

00:52:48.730 --> 00:52:49.930
in den Garten gehen oder sowas.

00:52:51.030 --> 00:52:52.730
Nein, das hatte ich jetzt gar nicht gesagt.

00:52:52.890 --> 00:52:53.950
Nein, nein, also das ist ja kein großer Wille.

00:52:54.590 --> 00:52:56.050
Aber dass man halt irgendwie,

00:52:56.470 --> 00:52:58.550
dass man dann vielleicht wenigstens noch ab und zu auf GitHub

00:52:58.550 --> 00:53:00.530
guckt, wenn jetzt einer sagt, hey, geht nicht mehr, dass man dann

00:53:00.530 --> 00:53:02.710
sagt, ja gut, dass man den Leuten vielleicht kommuniziert

00:53:02.710 --> 00:53:03.310
einfach so, hey, sorry.

00:53:03.310 --> 00:53:05.250
Dann würden wir nicht sagen, wir lesen wahrscheinlich noch

00:53:05.250 --> 00:53:06.350
so Nachrichten oder so.

00:53:07.270 --> 00:53:09.350
Aber es ist auch die Frage, wenn du irgendwie 5000 am Tag kriegst

00:53:09.350 --> 00:53:10.990
oder so, das ist wahrscheinlich dann auch anstrengend.

00:53:11.090 --> 00:53:12.770
Je nachdem, welche Größe du hast irgendwann.

00:53:13.690 --> 00:53:14.890
Das kann auch sehr overhelming werden.

00:53:15.070 --> 00:53:16.890
Also gerade, ich sag mal, das Leben von Leuten

00:53:16.890 --> 00:53:19.050
ändert sich ja auch oft. Also so Situationen

00:53:19.050 --> 00:53:19.470
oder sowas.

00:53:20.570 --> 00:53:23.010
Wenn da irgendwie dann die Prioritäten sich privat

00:53:23.010 --> 00:53:25.130
verschieben und die Leute dann nicht mehr von morgens bis abends

00:53:25.130 --> 00:53:26.150
dann noch in ihrer Freizeit

00:53:26.150 --> 00:53:28.430
partizipieren können, dann...

00:53:28.430 --> 00:53:30.110
Ja, absolut. Ich meine, das ist natürlich ein Problem.

00:53:30.230 --> 00:53:31.890
Es hat ja auch Carlton Gibson, glaube ich,

00:53:31.970 --> 00:53:34.590
macht gefühlt jede zweite Jungle Corner einen hervorragenden Vortrag zu dem Thema.

00:53:36.090 --> 00:53:36.830
Das ist natürlich

00:53:36.830 --> 00:53:38.790
ein Problem, aber ich sage, es gibt halt

00:53:38.790 --> 00:53:40.510
relativ einfache Möglichkeiten, die

00:53:40.510 --> 00:53:42.830
zwingend natürlich nicht bei jedem zutreffen, wenn einer wirklich

00:53:42.830 --> 00:53:44.770
sagt, hey, ich habe jetzt den Beruf gewechselt

00:53:44.770 --> 00:53:46.550
oder ich bin weggezogen oder keine Ahnung was und

00:53:46.550 --> 00:53:48.790
habe meinen GitHub-Account geschlossen, das war es jetzt

00:53:48.790 --> 00:53:50.750
für mich. Okay, kann immer passieren, aber

00:53:50.750 --> 00:53:52.630
ich sage eben, in den meisten Fällen

00:53:52.630 --> 00:53:54.990
ist es wahrscheinlich oft, dass Leute noch irgendwie

00:53:54.990 --> 00:53:56.950
latent am Ball bleiben und

00:53:56.950 --> 00:53:58.670
da gibt es halt ganz einfache Wege,

00:53:59.010 --> 00:54:00.790
das Problem zumindest für einen selbst irgendwie zu lösen.

00:54:01.910 --> 00:54:02.750
Ja, ich sage mal so, es ist schon

00:54:02.750 --> 00:54:04.030
schön, wenn man halt so ein paar Issues irgendwie

00:54:04.030 --> 00:54:06.670
die größten nicht offen lässt, sondern zumindest

00:54:06.670 --> 00:54:08.730
ein Team findet, das dann Lust hat, wenn man gerade

00:54:08.730 --> 00:54:10.810
wirklich viele Leute hat, die dann was benutzen,

00:54:11.410 --> 00:54:13.010
dass denen halt wenigstens mal deren Pull-Request-Merch

00:54:13.010 --> 00:54:14.650
oder denen die Möglichkeit gibt, dass die selber

00:54:14.650 --> 00:54:16.590
Sachen merchen können oder die Interesse dann haben.

00:54:17.030 --> 00:54:18.730
Klar kann man auch einfach forken und dann irgendwie

00:54:18.730 --> 00:54:20.050
ein neues Package machen und sowas, aber

00:54:20.050 --> 00:54:22.790
es ist halt natürlich schon

00:54:22.790 --> 00:54:24.850
schön, damit das alles irgendwie ein bisschen zentralisiert ist.

00:54:24.850 --> 00:54:26.790
Aber die Jazzband hast du ja erwähnt,

00:54:26.830 --> 00:54:28.530
das ist glaube ich eine ganz gute Möglichkeit, das zu tun, ja?

00:54:31.090 --> 00:54:32.290
Ja, ja, da bin ich jetzt,

00:54:32.350 --> 00:54:34.750
da hat sich halt im letzten Mal auch was getan, da bin ich jetzt

00:54:34.750 --> 00:54:35.990
auch mal da beigetreten.

00:54:37.150 --> 00:54:39.230
Und dann, weil ich habe

00:54:39.230 --> 00:54:41.050
nämlich gesehen in dem Projekt, in dem ich momentan gerade

00:54:41.050 --> 00:54:43.050
da rumschraube, da habe ich diverse

00:54:43.050 --> 00:54:45.590
Geschichten, die in Jasmine drin sind, reingewendert.

00:54:46.750 --> 00:54:47.150
Sozusagen,

00:54:47.290 --> 00:54:49.110
damit ich die anpassen kann.

00:54:49.170 --> 00:54:51.190
Und eigentlich kann ich das ja auch dann einfach

00:54:51.190 --> 00:54:51.950
so machen vielleicht.

00:54:52.810 --> 00:54:53.210
Cool.

00:54:54.870 --> 00:54:56.970
Dann löst du quasi dein Problem

00:54:56.970 --> 00:54:58.270
und hilfst aber noch ganz vielen.

00:54:58.850 --> 00:55:01.090
Ja, gut, das vielleicht mache ich auch

00:55:01.090 --> 00:55:02.650
demjenigen, der dann die nächste Release baut,

00:55:02.790 --> 00:55:04.290
Kopfschmerzen. Das kann auch sein.

00:55:06.390 --> 00:55:07.570
Aber ja, mal schauen.

00:55:07.830 --> 00:55:08.790
Ist auf jeden Fall interessant.

00:55:09.770 --> 00:55:11.510
Ist vielleicht auch eine kleine Verbesserung.

00:55:12.330 --> 00:55:12.710
Ja, ja.

00:55:15.150 --> 00:55:16.130
Tja, was haben wir denn?

00:55:17.410 --> 00:55:18.190
Was gibt es denn noch

00:55:18.190 --> 00:55:19.890
so für Dinge, die wir über

00:55:19.890 --> 00:55:21.950
Packaging irgendwie

00:55:21.950 --> 00:55:22.970
erzählen sollten?

00:55:24.110 --> 00:55:24.670
Habt ihr irgendwie

00:55:24.670 --> 00:55:27.730
irgendwelche Tools, die ihr

00:55:27.730 --> 00:55:29.870
bevorzugt verwendet? Also Flit, okay, kanntet ihr jetzt

00:55:29.870 --> 00:55:31.030
nicht. Habe ich auch nicht.

00:55:31.390 --> 00:55:32.810
Werde ich dann demnächst mal ausprobieren. Mal gucken.

00:55:32.810 --> 00:55:33.890
Das ist irgendwie voll gut.

00:55:36.290 --> 00:55:37.030
Ja, Poetry

00:55:37.030 --> 00:55:39.910
verwende ich meistens, aber

00:55:39.910 --> 00:55:41.910
Ja, tatsächlich so zum normalen

00:55:41.910 --> 00:55:43.370
lokalen Verwalten schon und zum Bauen.

00:55:44.390 --> 00:55:46.090
Du verwendest pipenv, aber das ist nur

00:55:46.090 --> 00:55:47.630
für die

00:55:47.630 --> 00:55:49.570
Genau, nur für die Requirements.

00:55:50.350 --> 00:55:51.250
Ja, genau.

00:55:52.210 --> 00:55:54.430
Tatsächlich, das Package,

00:55:54.550 --> 00:55:56.170
das schiebe ich noch

00:55:56.170 --> 00:55:57.870
mehr oder weniger genauso hoch, wie das damals

00:55:57.870 --> 00:55:59.930
2012 war, also so eine ganze fiese Set, also

00:55:59.930 --> 00:56:01.750
das heißt fies, aber aufgeräumt ist sie aber eine

00:56:01.750 --> 00:56:03.710
sehr angestaubte Setup-High.

00:56:05.230 --> 00:56:08.710
Und ja, dann auch, ich baue da auch ein Wheel draus,

00:56:08.790 --> 00:56:11.630
weil das für, also ich selbst bin ja tatsächlich ein Windows-Nutzer.

00:56:11.810 --> 00:56:13.750
Das wird jetzt auch ein bisschen populärer.

00:56:14.030 --> 00:56:15.330
Aber wieder beim Coden.

00:56:15.490 --> 00:56:18.590
Aber tatsächlich ist es mit den Wheels sehr, sehr angenehm,

00:56:18.670 --> 00:56:20.190
weil die Sachen sich einfach alle installieren lassen

00:56:20.190 --> 00:56:21.270
und man da keinen Knatsch mehr hat.

00:56:23.030 --> 00:56:24.690
PyCurl ist aktuell mein einziger Endgegner.

00:56:25.010 --> 00:56:26.010
Wenn ich das installieren möchte.

00:56:28.610 --> 00:56:32.270
Aber genau, von daher, das habe ich mir aber auch aufgeschrieben.

00:56:32.390 --> 00:56:33.670
Ich meine, gut, dass du das gesagt hast.

00:56:33.770 --> 00:56:35.690
das werde ich dann in ihrem Nachgang mal anschauen, weil

00:56:35.690 --> 00:56:37.790
ich hatte eh schon immer mal überlegt, ich würde da gerne

00:56:37.790 --> 00:56:39.690
was machen, aber wie du schon auch gesagt hast, es gibt

00:56:39.690 --> 00:56:41.790
so viele Wege, die nach oben führen und wenn ich jetzt gerade keinen

00:56:41.790 --> 00:56:43.790
unbedingten Druck habe, was

00:56:43.790 --> 00:56:45.810
zu ändern, dann ist mir dann auch so eine Sache,

00:56:45.890 --> 00:56:47.750
die auf der To-Do-List dann gerne mal ein bisschen nach hinten rutscht.

00:56:48.170 --> 00:56:49.470
Ja, ja, auch in diesem, auch in

00:56:49.470 --> 00:56:51.570
der Episode mit Brad Cannon, der meinte halt so,

00:56:51.590 --> 00:56:53.410
eines der Hauptprobleme, die sie so haben,

00:56:53.630 --> 00:56:55.710
auch irgendwie, also der

00:56:55.710 --> 00:56:57.630
Grund, warum das alles so zersplittert und kompliziert

00:56:57.630 --> 00:56:58.710
ist, ist halt auch, dass

00:56:58.710 --> 00:57:00.610
der Haupt

00:57:00.610 --> 00:57:03.550
Weg, wie Entwickler das machen und

00:57:03.550 --> 00:57:05.550
das erinnerte mich jetzt gerade daran, ist halt, dass

00:57:05.550 --> 00:57:07.310
sie irgendwann mal sich damit beschäftigt haben

00:57:07.310 --> 00:57:09.510
und dann haben sie ein Setup-Wi-Fi geschrieben und

00:57:09.510 --> 00:57:11.450
das kopieren sie halt Projekt von Projekt

00:57:11.450 --> 00:57:13.590
zu Projekt immer weiter. Und das Problem

00:57:13.590 --> 00:57:15.510
ist halt sozusagen

00:57:15.510 --> 00:57:17.430
aus Infrastruktursicht dann,

00:57:17.670 --> 00:57:19.290
ja, Abwärtskompatibilität ist halt

00:57:19.290 --> 00:57:20.630
super wichtig, weil

00:57:20.630 --> 00:57:23.410
es sind halt oft viele Dinge

00:57:23.410 --> 00:57:25.350
immer noch im Einsatz, die von irgendwann an oder

00:57:25.350 --> 00:57:27.350
dazu mal kopiert worden sind. Das heißt, man

00:57:27.350 --> 00:57:29.290
kann die Abwärtskompatibilität nicht mehr brechen, weil

00:57:29.290 --> 00:57:30.690
ansonsten bricht ganz, ganz viel,

00:57:31.370 --> 00:57:33.530
ganz, ganz viele Dinge und dessen

00:57:33.530 --> 00:57:35.450
ja, Vorschlag

00:57:35.450 --> 00:57:37.470
war auch eher SetupCFG

00:57:37.470 --> 00:57:39.150
zu verwenden und dann halt auch mal

00:57:39.150 --> 00:57:41.270
oder irgendein Projekt-Template oder so

00:57:41.270 --> 00:57:43.450
oder eben ein Tool, was einem das halt

00:57:43.450 --> 00:57:45.430
abnimmt, ja. Das klingt aber

00:57:45.430 --> 00:57:47.230
auch alles schon wirklich, also ganz im ganzen

00:57:47.230 --> 00:57:49.070
Packaging-Ding, ne, so gordischer Knoten.

00:57:49.230 --> 00:57:51.290
Ja, das ist wirklich gemein, ja, ich meine, was will man

00:57:51.290 --> 00:57:53.090
machen, wenn du, ja,

00:57:53.290 --> 00:57:55.470
ein Großteil der Pakete da draußen verwenden halt uralte

00:57:55.470 --> 00:57:57.330
Geschichten und du kannst es nicht mehr ändern, weil

00:57:57.330 --> 00:57:59.090
wenn du es änderst, dann brichst du all die Pakete.

00:57:59.230 --> 00:58:01.310
Wegschmeißen, neu machen, auf Features verzichten, vielleicht braucht man

00:58:01.310 --> 00:58:01.850
die alle gar nicht.

00:58:03.530 --> 00:58:06.230
Ich habe das Wesentliche

00:58:06.230 --> 00:58:06.710
konzentriert.

00:58:07.650 --> 00:58:09.990
Ja, aber genau, ich habe auch einmal so ein

00:58:09.990 --> 00:58:11.910
Cookie-Cutter-Template verwendet, also es gibt ja auch

00:58:11.910 --> 00:58:13.670
Python-Package

00:58:13.670 --> 00:58:18.230
Cookie-Cutter-Template von

00:58:18.230 --> 00:58:20.090
Pied Denny. Genau.

00:58:20.850 --> 00:58:22.250
Und das fand ich

00:58:22.250 --> 00:58:24.330
auch ganz nett, aber... Der übrigens auch auf Twitch streamt.

00:58:24.770 --> 00:58:26.010
Bitte? Der übrigens auch auf Twitch

00:58:26.010 --> 00:58:28.230
streamt. Ja, ja, richtig, genau. Das habe ich mir auch schon

00:58:28.230 --> 00:58:30.070
so ein bisschen

00:58:30.070 --> 00:58:31.150
angeguckt. Genau, fand ich auch gut.

00:58:32.630 --> 00:58:33.470
Ja, okay.

00:58:33.490 --> 00:58:34.850
Was ich auch ganz interessant finde,

00:58:34.930 --> 00:58:36.890
apropos Projektsetup,

00:58:37.990 --> 00:58:42.150
der Code, der jetzt in meinem Package drin ist,

00:58:42.170 --> 00:58:43.650
der ist natürlich auch logischerweise getestet.

00:58:44.070 --> 00:58:45.650
Also am Anfang war nicht so viel getestet.

00:58:45.670 --> 00:58:46.690
Logischerweise, natürlich, Ronny.

00:58:46.930 --> 00:58:50.130
Inzwischen ist er getestet, zumindest Großteils.

00:58:50.250 --> 00:58:51.470
Also die Sachen, die ich halt tatsächlich nutze,

00:58:51.550 --> 00:58:52.490
die sind jetzt auch getestet.

00:58:53.410 --> 00:58:54.550
Und am Anfang war es auch so,

00:58:54.610 --> 00:58:58.370
dass diese Testfiles dann einfach mit in dem Package gebandelt wurden.

00:58:59.010 --> 00:59:01.130
Also die Metatests quasi,

00:59:01.290 --> 00:59:02.950
also die Sachen, die das testen, was ich nachher ausliefere,

00:59:03.210 --> 00:59:05.390
mir ist dann nachher mal aufgefallen, die muss ich ja gar nicht mit ausliefern.

00:59:05.510 --> 00:59:06.770
Weil das interessiert einfach keinen.

00:59:07.770 --> 00:59:09.290
Vielleicht ist es ja doch, weil die

00:59:09.290 --> 00:59:10.850
wissen wollen, ob ich vernünftig das abgedeckt habe.

00:59:11.270 --> 00:59:13.130
Aber eigentlich liefere ich eine Datenmenge aus,

00:59:13.230 --> 00:59:15.510
die eigentlich nichts mit der eigentlichen Funktionalität zu tun hat.

00:59:16.190 --> 00:59:17.370
Und das war

00:59:17.370 --> 00:59:18.590
für mich so der erste Erkenntnispunkt.

00:59:19.110 --> 00:59:21.050
Sollte man mal reingucken, wie das damals mal irgendwie

00:59:21.050 --> 00:59:23.270
strukturiert hat, weil da kann man nämlich auch einstellen,

00:59:23.350 --> 00:59:25.250
welche Dateien dann von diesem Bundler gefunden

00:59:25.250 --> 00:59:27.030
werden sollen. Da habe ich mich mir direkt,

00:59:27.130 --> 00:59:29.350
als ich dann diesen besagten Bug mit den Übersetzungen

00:59:29.350 --> 00:59:31.470
gefixt habe und natürlich

00:59:31.470 --> 00:59:33.670
dann auch das erste Mal eine Pro-Datei

00:59:33.670 --> 00:59:35.570
in dem Projekt hatte, die waren

00:59:35.570 --> 00:59:37.410
natürlich nicht mit eingeschlossen. Das heißt,

00:59:37.450 --> 00:59:39.350
ich bandele das Ding wunderbar und dann

00:59:39.350 --> 00:59:41.350
klappt es halt nicht. Ich sage, das hat doch gerade lokal noch

00:59:41.350 --> 00:59:43.470
funktioniert. Ich bin auf die Idee gekommen, ich gucke mal

00:59:43.470 --> 00:59:45.250
in das Package rein, das installierte, ob das

00:59:45.250 --> 00:59:47.510
weil ich hatte es natürlich auch vorher mit Minus E installiert,

00:59:47.670 --> 00:59:49.270
also um es zu testen, da ging es mir natürlich

00:59:49.270 --> 00:59:51.350
und ja, also wenn man da

00:59:51.350 --> 00:59:53.310
irgendwie mal neue Dateiformate dazu baut, dann muss man

00:59:53.310 --> 00:59:55.370
die auch nochmal explizit angeben, je nachdem wie man es

00:59:55.370 --> 00:59:57.250
hat, ob man halt einschließend oder ausschließend hat, aber

00:59:57.250 --> 00:59:58.490
ja.

00:59:58.990 --> 01:00:01.170
mit den kleinen Hürden. Ja, das ist auch eine der häufigsten

01:00:01.170 --> 01:00:02.850
Sachen, die, wenn man so

01:00:02.850 --> 01:00:05.290
oder wie mir passiert, wenn man so ein GitHub-Action-Pipeline

01:00:05.290 --> 01:00:07.070
hat, die halt auch testet und so,

01:00:07.510 --> 01:00:09.110
das lokal funktioniert alles

01:00:09.110 --> 01:00:11.170
und dann macht man Push und dann geht die Pipeline

01:00:11.170 --> 01:00:13.190
kaputt und dann sagt man, hä, warum? Und ja, ganz oft

01:00:13.190 --> 01:00:15.190
ist es halt, weil in den Dev-Requirements

01:00:15.190 --> 01:00:16.970
irgendwas drin war, was man halt tatsächlich gebraucht hat,

01:00:17.050 --> 01:00:19.110
aber dann in den Produktions-Requirements nicht mehr und

01:00:19.110 --> 01:00:21.210
dann... Also ich würde sagen, war fast besser

01:00:21.210 --> 01:00:23.130
als andersrum, weil dann fällt es einem ja direkt auf und dann kann man

01:00:23.130 --> 01:00:24.710
es einbauen und so. Ja, das ist wahr.

01:00:25.070 --> 01:00:27.130
Dafür sind ja Pipelines dann auch da oder dann die E-Mail

01:00:27.130 --> 01:00:28.970
immer bekommt, dass das schon wieder kaputt gegangen ist oder so.

01:00:28.990 --> 01:00:32.310
da ist ja ganz praktisch

01:00:32.310 --> 01:00:33.270
ja

01:00:33.270 --> 01:00:34.530
Stichwort Pipelines

01:00:34.530 --> 01:00:37.970
hatten wir auch im Vorfeld

01:00:37.970 --> 01:00:39.830
noch drüber gesprochen, was ja bei

01:00:39.830 --> 01:00:41.970
GitHub sehr sehr cool ist, sind ja diese

01:00:41.970 --> 01:00:44.390
Travis Matrizen

01:00:44.390 --> 01:00:45.810
wo man, ich glaube Travis

01:00:45.810 --> 01:00:46.790
ist das Richtige, oder?

01:00:48.290 --> 01:00:49.570
Ja, die Tox-File, genau

01:00:49.570 --> 01:00:50.690
und Travis nutzt das dann

01:00:50.690 --> 01:00:53.090
Man kann da einstellen, wie viele verschiedenen Python-Versionen das einmal durchtragen

01:00:53.090 --> 01:00:55.490
Genau, mit welchen Django-Versionen und dann kann man halt

01:00:55.490 --> 01:00:57.750
relativ simpel in so einer Art YAML-Datei

01:00:57.750 --> 01:00:58.330
glaube ich ist das

01:00:58.330 --> 01:01:00.310
kann man dann halt eingeben

01:01:00.310 --> 01:01:02.530
und sagen, okay, ich unterstütze explizit

01:01:02.530 --> 01:01:04.610
Python 3.6.

01:01:05.270 --> 01:01:06.250
Genau, gehe ich durch

01:01:06.250 --> 01:01:08.090
und dann halt mit der und der Django-Version, da baut er dann

01:01:08.090 --> 01:01:10.170
eine Matrix auf und testet halt wirklich die Sachen

01:01:10.170 --> 01:01:11.850
gegeneinander durch. Und das ist halt sehr cool, weil

01:01:11.850 --> 01:01:14.050
auch wieder so eine Sache, man kann in der Setup oder

01:01:14.050 --> 01:01:16.090
wie auch immer man sein Projekt Meta deklariert,

01:01:16.410 --> 01:01:18.150
kann man halt auch explizit angeben, welche Django

01:01:18.150 --> 01:01:19.690
und Python oder was auch immer

01:01:19.690 --> 01:01:21.990
Versionen man unterstützt. Also ich bin ab

01:01:21.990 --> 01:01:23.750
3.8 und 3.2.

01:01:25.330 --> 01:01:25.650
Ja.

01:01:26.250 --> 01:01:28.230
Ich habe immer keine Lust auf Backward Compat.

01:01:28.330 --> 01:01:30.070
Ich will immer die neuen Features drin haben.

01:01:30.310 --> 01:01:31.470
Das Coole ist halt ...

01:01:31.470 --> 01:01:32.590
Das nutzt aber auch keiner, deswegen ist es auch egal.

01:01:33.810 --> 01:01:36.110
Das Coole an dieser Matrix ist halt,

01:01:36.130 --> 01:01:37.870
dass man halt erstens die Sachen halt

01:01:37.870 --> 01:01:39.930
sicherstellt. Also das, was man

01:01:39.930 --> 01:01:41.890
angibt, das geht. Das geht dann auch wirklich.

01:01:42.030 --> 01:01:43.670
Das ist halt sehr, sehr praktisch, weil wie schnell ist es,

01:01:43.770 --> 01:01:45.590
dass man sich bei, weiß ich, vor allem wenn man so

01:01:45.590 --> 01:01:47.790
Django-Admin-Extensions oder sowas baut, da erinnert sich ja so schnell

01:01:47.790 --> 01:01:49.710
mal irgendwas und dass dann plötzlich in irgendeiner

01:01:49.710 --> 01:01:51.410
Version irgendwas kaputt geht, der noch nicht da ist.

01:01:52.050 --> 01:01:53.750
Und das manuell zu testen, ist ja

01:01:53.750 --> 01:01:55.670
verrückt. Aber mit dieser Matrix gibst du

01:01:55.670 --> 01:01:56.670
die Sachen halt einfach ein.

01:01:57.750 --> 01:01:59.570
Problem gelöst, läuft. Da muss man sich ja nicht

01:01:59.570 --> 01:02:01.030
mal weiter drum kümmern. Das ist halt echt cool.

01:02:01.530 --> 01:02:03.230
Das bin ich auch tatsächlich, dadurch, dass

01:02:03.230 --> 01:02:05.550
wir intern GitLab

01:02:05.550 --> 01:02:07.370
nutzen, weiß ich gar nicht genau, wie das

01:02:07.370 --> 01:02:09.330
funktioniert. Das ist so ein Newscase, den man halt im

01:02:09.330 --> 01:02:11.310
normalen Verfahrensbereich nie hat. Also was ich auch

01:02:11.310 --> 01:02:13.310
sehr cool finde, sind diese ganzen, wenn wir jetzt

01:02:13.310 --> 01:02:15.070
bei GitHub schon sind, dann sind die ganzen GitHub-Actions,

01:02:15.190 --> 01:02:17.210
das habe ich bei GitLab noch nicht so hinbekommen. Und zwar

01:02:17.210 --> 01:02:18.810
kann ich ja aus Code

01:02:18.810 --> 01:02:21.250
Actions generieren, zum Beispiel, indem ich

01:02:21.250 --> 01:02:22.530
Tags in den Code reinschreibe.

01:02:23.230 --> 01:02:25.230
Und dann kann ich ja daraus dann bestimmte Dinge

01:02:25.230 --> 01:02:27.170
machen. Also ich könnte zum Beispiel direkt Issues erzeugen aus

01:02:27.170 --> 01:02:29.250
To-Do's oder aus Issues

01:02:29.250 --> 01:02:31.270
oder Fix-Me's, die halt irgendwo im Code drin stehen

01:02:31.270 --> 01:02:33.230
und habe halt dann direkt die Issues damit offen

01:02:33.230 --> 01:02:35.150
und das finde ich halt sehr nice, weil man halt dann das

01:02:35.150 --> 01:02:37.190
direkt auch schließen kann, wenn man das richtig

01:02:37.190 --> 01:02:39.290
konfiguriert und dann halt quasi gar nicht

01:02:39.290 --> 01:02:41.050
mehr seinen Code verlassen muss, um halt

01:02:41.050 --> 01:02:43.250
einen vernünftigen Issue-Tracker auch zu haben, wo sind denn die Issues,

01:02:43.370 --> 01:02:45.230
wo sind denn da noch was zu tun oder halt zu

01:02:45.230 --> 01:02:47.230
warten, wenn jemand anders kann halt direkt sehen, oh ja, da ist

01:02:47.230 --> 01:02:49.230
jetzt noch das Fix-Me offen, da muss ich jetzt einfach mal

01:02:49.230 --> 01:02:51.090
kurz gucken, dass ich da vielleicht was zu

01:02:51.090 --> 01:02:52.810
beitragen kann. Das ist schon sehr, sehr schön gemacht.

01:02:53.210 --> 01:02:54.110
Ja, das ist echt cool.

01:02:56.130 --> 01:02:58.370
Ja, wo du Pipelines sprachst, Pipelines sind eigentlich die Hölle,

01:02:58.530 --> 01:03:00.510
dass man irgendwie auf Produktionsumgebungen

01:03:00.510 --> 01:03:02.490
da kommen kann, wenn man eine einigermaßen komplexe

01:03:02.490 --> 01:03:04.290
Infrastruktur dann irgendwann da hat und

01:03:04.290 --> 01:03:04.810
bauen muss.

01:03:06.030 --> 01:03:07.890
Also ich habe da Jammelhölle im Moment von

01:03:07.890 --> 01:03:09.850
mehreren Jammelfiles, ich glaube es sind

01:03:09.850 --> 01:03:12.190
neun, die über

01:03:12.190 --> 01:03:14.230
2000 Zeilen jeweils lang sind, wo halt

01:03:14.230 --> 01:03:16.050
dann über irgendwelche Skripte passieren, die

01:03:16.050 --> 01:03:18.150
gemixt sind aus PowerShell

01:03:18.150 --> 01:03:20.190
und Bash und halt Python und

01:03:20.190 --> 01:03:22.150
dann passieren da komische

01:03:22.150 --> 01:03:24.210
Dinge und Versioning, tolles Versioning,

01:03:24.250 --> 01:03:26.370
Ich habe auch Semantic-Versioning eingebaut und ich wollte halt

01:03:26.370 --> 01:03:28.450
einfach die Version bekommen. Und da der Punkt, wo ich

01:03:28.450 --> 01:03:30.250
die Versionsnummer pinne, meine

01:03:30.250 --> 01:03:31.990
Pipe-Projekt-Hummel war oder ist,

01:03:32.610 --> 01:03:34.510
da habe ich mir gedacht, okay, ich passe die einfach und benutze

01:03:34.510 --> 01:03:36.470
die dann weiter. Und dann habe ich meine Version

01:03:36.470 --> 01:03:38.390
geändert von 0.9.9 auf

01:03:38.390 --> 01:03:40.410
0.9.10, weil es ging immer noch nicht

01:03:40.410 --> 01:03:41.890
weiter. Und bumm.

01:03:42.210 --> 01:03:44.370
Jetzt wäre eine Pipeline erst noch aneinandergeflogen, weil ich einfach den Rack-Ex

01:03:44.370 --> 01:03:46.310
falsch gepasst hatte. Aber solche Kleinigkeiten halt,

01:03:46.750 --> 01:03:47.690
dass halt sowas weg ist.

01:03:48.530 --> 01:03:50.350
Das ist halt lustig, aber solche kleinen Sachen,

01:03:50.810 --> 01:03:52.270
die führen halt immer dazu, dass eine Pipeline läuft, die

01:03:52.270 --> 01:03:53.690
manchmal ziemlich lange dauert.

01:03:54.250 --> 01:03:55.290
anderthalb Stunden oder länger.

01:03:56.810 --> 01:03:57.950
Ja, das klingt nach

01:03:57.950 --> 01:03:59.150
ein Problem, ehrlich gesagt.

01:03:59.690 --> 01:04:01.810
Ja, das ist nicht lustig und man hat

01:04:01.810 --> 01:04:03.910
halt auch irgendwelche Regeln von außen, die man gar nicht beeinflussen kann,

01:04:04.050 --> 01:04:05.130
die man sich halten muss und

01:04:05.130 --> 01:04:07.810
ja, man muss

01:04:07.810 --> 01:04:09.850
irgendwelche Türen aufmachen, da ein

01:04:09.850 --> 01:04:11.770
Kabel zwischenhängen, dann die Türe so wieder zumachen, dass nur

01:04:11.770 --> 01:04:13.510
das Kabel durchpasst und dann

01:04:13.510 --> 01:04:15.810
da durchrufen mit so Flüstertüten

01:04:15.810 --> 01:04:17.850
und dann am Ende muss man das alles wieder abhängen.

01:04:18.350 --> 01:04:18.910
Sowas, ja.

01:04:19.970 --> 01:04:21.510
Ja, ja. Furchtbar.

01:04:21.510 --> 01:04:23.530
Ja, also das ist auch

01:04:23.530 --> 01:04:25.770
irgendwie, ja, so wirklich gelöst

01:04:25.770 --> 01:04:27.070
ist das alles noch nicht auch irgendwie.

01:04:27.410 --> 01:04:29.770
Ich weiß nicht, ob der Produktionsrelease auch so eine Art Package ist.

01:04:30.030 --> 01:04:31.790
Also vielleicht, also das ist

01:04:31.790 --> 01:04:33.730
halt so, was wir halt zum Beispiel machen müssen, ist

01:04:33.730 --> 01:04:35.790
wir haben ja keine richtige Staging-

01:04:35.790 --> 01:04:37.610
Umgebung oder so. Das heißt, was wir machen ist,

01:04:37.670 --> 01:04:39.910
wir müssen quasi einmal Produktionsversionen

01:04:39.910 --> 01:04:40.930
komplett nachbauen

01:04:40.930 --> 01:04:43.710
und dann da ein Update drauf machen. Weil, wenn wir

01:04:43.710 --> 01:04:45.590
halt direkt eine neue Version bauen, dann kann es ja sein,

01:04:45.670 --> 01:04:47.750
dass das anders ist, als Produktion

01:04:47.750 --> 01:04:49.730
zu updaten. Und damit uns

01:04:49.730 --> 01:04:51.410
halt da nichts schief geht, müssen wir halt

01:04:51.410 --> 01:04:53.410
erstmals nachbauen. Das dauert halt dann immer doppelt so lange.

01:04:53.530 --> 01:04:54.950
Oder zweimal neu bauen musst.

01:04:55.570 --> 01:04:57.150
Und dann musst du am Ende, weil wir halt

01:04:57.150 --> 01:04:59.790
Budget und so, musst du halt die ganze Station-Gegend erstmal wieder abreißen,

01:04:59.890 --> 01:05:01.170
bevor du die Zone anfängst zu bauen.

01:05:01.930 --> 01:05:03.090
Deswegen dauert das halt auch alles immer so lange.

01:05:05.350 --> 01:05:05.890
Aber ja,

01:05:05.950 --> 01:05:07.350
das ist halt vielleicht auch was mit

01:05:07.350 --> 01:05:09.130
Paketierung zu tun.

01:05:10.090 --> 01:05:11.510
Ist das nicht so ganz public in dem Fall, aber

01:05:11.510 --> 01:05:13.830
Also ich glaube, wir hatten es ja vorhin ganz kurz

01:05:13.830 --> 01:05:15.590
schon angerissen. Ich glaube, eine Sache, die, wenn man

01:05:15.590 --> 01:05:17.550
so ein Package baut, die

01:05:17.550 --> 01:05:19.190
wirklich so ein bisschen, ja,

01:05:19.390 --> 01:05:21.490
unterm Radar läuft, weil es halt irgendwie niemand so gerne macht,

01:05:21.570 --> 01:05:22.910
ist halt einfach, dass man die Doku schreibt.

01:05:23.130 --> 01:05:43.890
Also es gab ja jetzt, glaube ich, letztes oder vorletztes JungleCon, diesen schönen Vortrag, Docs are didn't happen. Ich glaube, das war in Kopenhagen, ich glaube, das war vorletztes Mal. Das ist einfach, ich habe es halt auch gemerkt, dass jetzt, also selbst in meiner eigenen Firma, wo ich ja echt jetzt keine weiten Wege zu den Leuten habe, wenn ich sage, hey, da ist das drin, nutzt das mal, das ist halt eine Blackbox.

01:05:43.890 --> 01:06:07.130
Also selbst wenn du dann irgendwie, dass sich dann doch mal jemand irgendwie den Code reintraut und da mal rumguckt, wenn da halt nicht ordentlich dokumentiert ist, ich meine vielleicht mal irgendwo ein kurzer Docstring oder so, ist schon schwierig. Also da wirklich mal das irgendwie zusammenzuschreiben, das habe ich jetzt tatsächlich auch im letzten Quartal relativ viel gemacht und habe da mal bei Read the Docs da so ein bisschen Markdown mit Sphinx gepublished, also Sphinx kompliertes Markdown.

01:06:09.170 --> 01:06:12.250
Auch ein bisschen nervig mit Restructure-Test geht das immer besser.

01:06:12.250 --> 01:06:15.590
Ja, ich komme mit dem Dokumentformat irgendwie nicht.

01:06:15.930 --> 01:06:18.490
Nein, das ist recht, aber Sphinx macht das halt sehr ungern mit Markdown.

01:06:18.670 --> 01:06:21.350
Ich weiß, ich habe da mehrere, ich habe da so ein paar Adapter.

01:06:21.350 --> 01:06:23.690
Ja, man kann das halt ineinander konvertieren, genau.

01:06:23.830 --> 01:06:24.890
Ich habe so ein paar Adapter eingebaut.

01:06:25.970 --> 01:06:28.290
Musste ich auch ein bisschen googeln, aber inzwischen geht das jetzt ganz gut.

01:06:28.430 --> 01:06:29.550
Das bin ich ganz happy damit.

01:06:29.690 --> 01:06:30.910
Der war zwischendurch kaputt, der Adapter, ja.

01:06:31.590 --> 01:06:33.510
Ja, genau.

01:06:33.710 --> 01:06:35.350
Nein, aber das ist tatsächlich, da ist sehr, sehr viel,

01:06:35.470 --> 01:06:38.430
also dieses Dokumentieren und auch wenn man vielleicht nicht nur einfach sagt,

01:06:38.610 --> 01:06:40.090
so, das ist die Methode und die gibt,

01:06:40.090 --> 01:06:50.710
Sondern wenn man vielleicht auch so ein bisschen den Kontext herstellen möchte, so eine Art How-to, das wäre wahrscheinlich eher ein How-to, wie du vorhin bei deiner, also dass du sagst, hey, guck mal, ich habe diesen Use-Case, ich möchte wie Dartmark anonymisieren, habe ich hier irgendwie einen Rapper, der hilft dir.

01:06:51.050 --> 01:07:01.270
Oder wenn du irgendwie E-Mails testen möchtest, da habe ich hier eine Fernsehklasse oder ein Mix-In, das hilft dir, dass man die Leute auch ein bisschen abholt und erklärt, warum willst du das denn überhaupt nutzen, also welches Problem löse ich für dich.

01:07:01.590 --> 01:07:05.350
Wenn du dann nur sagst, so sieht der Code aus, dann hilft den Leuten das halt nicht.

01:07:05.350 --> 01:07:23.770
Wo ich das am liebsten mache und wie es irgendwie am besten auch funktioniert, dass das dann nicht nur aus meinem Kopf kommt, ist, wenn man das halt tatsächlich in Art Pair-Programming macht, wenn man halt dann gemeinsam mit seinem Team oder mit anderen Leuten drauf guckt und denen das quasi erklärt, was man da gebaut hat oder warum man das gebaut hat, weil dann fallen einem erstens so die ganzen Bugs auf, die man sonst übersieht, wenn man da irgendwie immer nur selber mit seinen eigenen vier Augen drauf schaut.

01:07:25.770 --> 01:07:43.070
Und dann halt am Ende, wenn man das den Leuten halt erklärt, kann man halt direkt das dann als Dockstring dann auch so reinschreiben, was das halt macht. Das macht meistens relativ viel Sinn. Und man merkt halt, dass nochmal der Name, den man da verwendet hat, irgendwie Quatsch ist und das macht man dann noch ein bisschen hübscher. Und dann so kommt man auf eine relativ gute Qualität, glaube ich. Das ist aber dann wirklich essentiell, dass man mit anderen Leuten das gemeinsam macht.

01:07:43.070 --> 01:07:45.030
Ja, also, das ist auf jeden Fall

01:07:45.030 --> 01:07:46.110
eine gute Idee.

01:07:47.850 --> 01:07:49.250
Und weil dann ist auch die Dokumentation

01:07:49.250 --> 01:07:50.710
in Ordnung. Also, was ich

01:07:50.710 --> 01:07:52.470
bei Dokumentationen oft merke, das ist,

01:07:52.950 --> 01:07:54.790
finde ich sehr nervig, habe ich auch noch keine Lösung für gefunden,

01:07:55.210 --> 01:07:56.670
die ist halt irgendwie hyperschnell veraltet.

01:07:56.870 --> 01:07:58.850
Das heißt, wenn ich mir irgendwie Mühe gebe, dass ich so detailliert

01:07:58.850 --> 01:08:01.070
aufschreibe, was denn da irgendwie gemacht werden muss,

01:08:01.110 --> 01:08:02.570
damit das dann das läuft, und dann muss ich dann

01:08:02.570 --> 01:08:04.470
ein oder zwei Wochen da nochmal Zeit reinstecken,

01:08:04.830 --> 01:08:06.810
wenn ich nicht jeden Tag irgendwie dann zehn Minuten wieder

01:08:06.810 --> 01:08:08.790
die Doku anpasse, die ist halt dann nach diesen zwei Wochen

01:08:08.790 --> 01:08:10.610
einfach nicht mehr benutzbar.

01:08:11.190 --> 01:08:12.610
So, das ist irgendwie ein bisschen blöd.

01:08:12.690 --> 01:08:14.510
Und das führt halt auch dann dazu, dass man

01:08:14.510 --> 01:08:16.450
nicht so Lust hat, dann das immer

01:08:16.450 --> 01:08:18.590
zu machen ordentlich. Also da hatte ja

01:08:18.590 --> 01:08:20.530
der Kalten Gipsen jetzt bei

01:08:20.530 --> 01:08:22.510
dieser DjangoCon einen Vortrag bezüglich

01:08:22.510 --> 01:08:25.030
wie dieses Static Dynamic Websites,

01:08:25.390 --> 01:08:26.530
Static Dynamic Pages

01:08:26.530 --> 01:08:28.390
hieß es, glaube ich. Ja, mit Zwings und

01:08:28.390 --> 01:08:30.630
Genau, ich habe vergessen, wie das Package heißt, das er gebaut hat.

01:08:31.210 --> 01:08:32.250
Müsste man mal nachschauen.

01:08:32.310 --> 01:08:33.750
Benutzt das dann einfach doch Strings irgendwie?

01:08:34.030 --> 01:08:36.050
Also die Idee dahinter ist, dass du quasi

01:08:36.050 --> 01:08:37.570
über Django

01:08:37.570 --> 01:08:40.550
Markdown, also du schreibst Markdown

01:08:40.550 --> 01:08:41.910
und das wird dann als Django HTML

01:08:41.910 --> 01:08:44.510
Template gerendert, rausgerendert

01:08:44.510 --> 01:08:46.130
und da... Hast du das nicht auch die Django-Docs, die da

01:08:46.130 --> 01:08:48.410
die Dokumentation, die tatsächlich in diesem Format irgendwie

01:08:48.410 --> 01:08:49.990
selber ist? Möglich, möglich.

01:08:50.470 --> 01:08:52.270
Auf jeden Fall, der hat das da halt ein Package draus gemacht und

01:08:52.270 --> 01:08:54.410
das ist halt, also ich glaube, ein

01:08:54.410 --> 01:08:56.330
Problem, das man damit lösen kann, ist halt genau

01:08:56.330 --> 01:08:58.370
also jetzt nicht Docstrings, weil die musst du halt

01:08:58.370 --> 01:09:00.350
die sind eh im Code, aber wenn du halt diese

01:09:00.350 --> 01:09:02.330
zum Beispiel so eine How-To-Dokumentation, bei mir

01:09:02.330 --> 01:09:04.450
läuft das halt irgendwie, ja es ist

01:09:04.450 --> 01:09:06.210
halt schon irgendwie im Code drin, aber ist auch

01:09:06.210 --> 01:09:07.870
irgendwie separat gehostet und

01:09:07.870 --> 01:09:10.310
wenn du jetzt, bei Packages ist es eh schwierig,

01:09:10.390 --> 01:09:12.150
weil die laufen ja nirgendwo, wenn das zum Beispiel sagt,

01:09:12.190 --> 01:09:13.790
ich möchte jetzt irgendwie Dokumentation für

01:09:13.790 --> 01:09:16.030
meine eigene Seite, also zum Beispiel ich möchte irgendwie

01:09:16.030 --> 01:09:18.290
die Business-Logik und die Technik und irgendwie sehr detailliert

01:09:18.290 --> 01:09:20.090
das aufschreiben, muss ich vielleicht, auch wenn es irgendwelche

01:09:20.090 --> 01:09:21.130
Compliance-Sachen gibt.

01:09:21.770 --> 01:09:23.750
Wie ging das nochmal mit dem Backup oder so, ja. Genau,

01:09:23.870 --> 01:09:25.850
und dass du die Sachen dann einfach direkt im Code,

01:09:25.950 --> 01:09:28.010
im gleichen Repo, im gleichen Commit machen kannst und dann

01:09:28.010 --> 01:09:30.130
zum Beispiel auch einfach da ein Linting

01:09:30.130 --> 01:09:32.070
reinbauen kannst, sagst ja, Moment mal, du hast da was angefasst,

01:09:32.190 --> 01:09:34.030
du hast dann das

01:09:34.030 --> 01:09:35.150
Markdown nicht dazu angepasst.

01:09:35.990 --> 01:09:38.030
Das sind, glaube ich, sehr, sehr coole Use-Cases. Dafür wäre man

01:09:38.030 --> 01:09:40.110
da halt wirklich, wenn das wirklich wichtig ist,

01:09:40.150 --> 01:09:42.810
du hast halt dann die Nähe

01:09:42.810 --> 01:09:45.190
von Dokumentation, die eigentlich sich weit weg anfühlt,

01:09:45.250 --> 01:09:47.010
das ist irgendwo ein Marktunterteil, die irgendwo umliegt

01:09:47.010 --> 01:09:48.950
und die irgendwo gehostet ist, dass du

01:09:48.950 --> 01:09:50.390
dann wirklich ins Projekt reinbringst.

01:09:50.550 --> 01:09:52.890
Ich habe es noch nicht ausprobiert tatsächlich, aber ich könnte mir

01:09:52.890 --> 01:09:55.110
vorstellen, dass das genau für solche Use Cases,

01:09:55.210 --> 01:09:56.710
also für sehr große Projekte, wo man

01:09:56.710 --> 01:09:58.530
das machen muss, das vielleicht so ein bisschen

01:09:58.530 --> 01:10:00.790
dann das näher bringt und damit auch die

01:10:00.790 --> 01:10:02.450
Motivation erhöht, dass man es auch wirklich tut.

01:10:02.590 --> 01:10:05.110
Also ich war ja echt Fan auch von diesen autogenerierten

01:10:05.110 --> 01:10:07.050
Sphinx-Docs, ja Autodoc aus den Docs-Sphinx heraus

01:10:07.050 --> 01:10:08.770
und so, dass einen halt so ein bisschen dazu zwingt,

01:10:08.810 --> 01:10:10.750
den Docsings aktuell zu halten. Aber noch

01:10:10.750 --> 01:10:12.610
besser sieht das tatsächlich, jetzt muss ich noch kurz

01:10:12.610 --> 01:10:14.530
verjochen und langsam brennen, dieses NBDEV aus, weil

01:10:14.530 --> 01:10:16.990
man in Notebooks halt das Markdown auch direkt

01:10:16.990 --> 01:10:18.830
mit reinschreiben kann, wenn das ordentlich

01:10:18.830 --> 01:10:21.070
aussieht. Man Notebook hat, was ordentlich aussieht

01:10:21.070 --> 01:10:22.910
und was dann automatisch

01:10:22.910 --> 01:10:24.750
dann zur Dokumentation von diesem Code führt,

01:10:24.830 --> 01:10:26.790
das dann irgendwie aus einem Guss hat. Das ist

01:10:26.790 --> 01:10:28.470
schon irgendwie sehr charmant für

01:10:28.470 --> 01:10:30.430
bestimmte Sachen. Gerade wenn man, glaube ich, so

01:10:30.430 --> 01:10:32.710
Pakete neu entwickelt, irgendwie das

01:10:32.710 --> 01:10:34.510
dann hinterher nochmal angucken will, das ist schon schön.

01:10:35.570 --> 01:10:36.690
Ja, ich sage mal so,

01:10:36.870 --> 01:10:38.970
gerade bei Data-Science-Geschichten

01:10:38.970 --> 01:10:41.010
ist es besonders schön, weil das halt

01:10:41.010 --> 01:10:43.050
zum Beispiel, man hat ja oft dann

01:10:43.050 --> 01:10:43.990
irgendwelche Visualisierungen.

01:10:43.990 --> 01:10:45.670
Die Visualisierung ist natürlich besonders.

01:10:45.730 --> 01:10:47.730
Das hast du ja sonst eigentlich, weiß ich nicht, wenn du jetzt

01:10:47.730 --> 01:10:50.170
ein Django-Paket hast oder so, hast du das im Grunde kaum.

01:10:50.790 --> 01:10:51.850
Insofern ist es da nicht so schlimm,

01:10:51.930 --> 01:10:53.890
wenn man das halt nicht im Notebook hat.

01:10:54.330 --> 01:10:56.190
Und auch wenn du bei so Data-Science-Geschichten,

01:10:56.270 --> 01:10:57.930
wenn jemand eine Visualisierung verbessern möchte,

01:10:58.050 --> 01:10:59.970
dann kannst du halt da in einem

01:10:59.970 --> 01:11:01.750
Pull-Request direkt den Unterschied in der

01:11:01.750 --> 01:11:04.070
Visualisierung sehen und direkt im Notebook

01:11:04.070 --> 01:11:05.570
und musst du halt nicht erst

01:11:05.570 --> 01:11:07.550
Paket bauen, also den Pull-Request

01:11:07.550 --> 01:11:09.690
bauen, den angucken, dann

01:11:09.690 --> 01:11:11.610
die Visualisierung dir anzeigen, erstmal bis dahin kommen.

01:11:12.070 --> 01:11:13.590
Das ist halt direkt da. Dafür ist es halt

01:11:13.590 --> 01:11:15.750
total super. Wenn man das jetzt gar nicht

01:11:15.750 --> 01:11:17.990
braucht, dann hilft

01:11:17.990 --> 01:11:19.710
es einem nicht so sehr, auch wenn es sonst auch ganz nett ist.

01:11:20.270 --> 01:11:21.250
Ich habe jetzt gerade nochmal geguckt.

01:11:21.530 --> 01:11:23.310
Ich glaube, das Paket ist Django

01:11:23.310 --> 01:11:25.070
Sphinx View von

01:11:25.070 --> 01:11:26.590
Carlton Gibson.

01:11:28.810 --> 01:11:29.130
Ja,

01:11:29.790 --> 01:11:31.770
ich finde das auch total interessant.

01:11:31.910 --> 01:11:32.890
Es gibt da so diverse Ansätze.

01:11:33.370 --> 01:11:34.990
Den kannte ich jetzt auch noch gar nicht mehr. War das auch

01:11:34.990 --> 01:11:37.470
überhaupt nicht klar, dass die Django-Dokumentation

01:11:37.470 --> 01:11:38.970
das so macht, dass das halt irgendwie

01:11:38.970 --> 01:11:41.190
ja,

01:11:41.350 --> 01:11:43.070
nur JSON ist, was im Grunde aus Sphinx rausfällt

01:11:43.070 --> 01:11:45.130
und dann man halt noch dynamische

01:11:45.130 --> 01:11:47.330
Geschichten mit dazu machen kann.

01:11:48.210 --> 01:11:49.170
Aber das ist auf jeden Fall auch

01:11:49.170 --> 01:11:50.770
eine sehr interessante Geschichte. Markdown, dann den

01:11:50.770 --> 01:11:52.490
Mistparser, dann das Ganze in

01:11:52.490 --> 01:11:55.070
Restructured Text, das Ganze dann

01:11:55.070 --> 01:11:56.790
wieder dynamisch vielleicht serven,

01:11:56.790 --> 01:11:57.890
ist sehr interessant.

01:11:58.770 --> 01:12:00.490
MBDev finde ich interessant. Ich finde

01:12:00.490 --> 01:12:02.290
voll interessant, was in dieser Vue.js

01:12:02.290 --> 01:12:04.550
Vue.js mache ich auch so ein bisschen, versuche ich auch

01:12:04.550 --> 01:12:06.470
reinzukommen, was die da machen, die nehmen ja

01:12:06.470 --> 01:12:08.370
VuePress beziehungsweise

01:12:08.370 --> 01:12:09.910
VitePress jetzt,

01:12:10.850 --> 01:12:12.250
genau, das ist auch total toll,

01:12:12.570 --> 01:12:13.990
das sieht super aus,

01:12:14.170 --> 01:12:16.010
bitte? Excuse me, Vite.

01:12:16.430 --> 01:12:17.750
Vite, ja, ich bin da auch,

01:12:18.270 --> 01:12:19.990
das ist auch so blöd, wenn man dann irgendwie,

01:12:19.990 --> 01:12:21.470
da habe ich auf irgendeinem

01:12:21.470 --> 01:12:23.970
Vue Meetup einen Vortrag

01:12:23.970 --> 01:12:26.070
über VitePress gehalten

01:12:26.070 --> 01:12:28.130
und dann VitePress gesagt

01:12:28.130 --> 01:12:29.950
oder sowas und dann kam die erste

01:12:29.950 --> 01:12:30.990
Frage und jemand hat gesagt, Vite.

01:12:32.290 --> 01:12:34.630
Ich hab's gerade gedacht.

01:12:34.640 --> 01:12:36.040
stundenlang jedes Mal falsch gesagt

01:12:36.040 --> 01:12:38.380
und ja, aber

01:12:38.380 --> 01:12:40.480
genau, so ist das halt und

01:12:40.480 --> 01:12:42.140
das ist aber, das ist auch voll toll, weil

01:12:42.140 --> 01:12:44.620
was daran super ist, ist, dass

01:12:44.620 --> 01:12:46.620
man direkt sieht, wenn man was an der Dokumentation

01:12:46.620 --> 01:12:48.520
ändert oder so, das ist halt sofort alles live

01:12:48.520 --> 01:12:50.600
während mit Sphinx und so, das ist ja dann doch

01:12:50.600 --> 01:12:52.260
eher so, man muss das erstmal dann irgendwie

01:12:52.260 --> 01:12:54.560
bauen und das dauert alles ein bisschen, bis

01:12:54.560 --> 01:12:56.300
dann auf der Webseite ist, dauert nochmal, also

01:12:56.300 --> 01:12:58.480
während bei Beatpress oder so,

01:12:58.520 --> 01:13:00.780
das ist halt sofort da, man editiert das quasi live,

01:13:00.880 --> 01:13:01.580
das ist halt auch

01:13:01.580 --> 01:13:03.840
ach, aber so

01:13:03.840 --> 01:13:05.940
das Rundum-sorglos-Ding

01:13:05.940 --> 01:13:07.760
für alles gibt es irgendwie nicht. Es gibt so

01:13:07.760 --> 01:13:09.320
diverse, sehr interessante

01:13:09.320 --> 01:13:11.740
Geschichten, die so in Teil-Communities

01:13:11.740 --> 01:13:12.900
irgendwie so

01:13:12.900 --> 01:13:15.760
entwickelt worden sind, aber

01:13:15.760 --> 01:13:17.440
Also ich würde auch fast sagen, also

01:13:17.440 --> 01:13:19.520
Weedpress irgendwie, also so

01:13:19.520 --> 01:13:20.920
ist schon nett für Markdown-Sachen,

01:13:21.400 --> 01:13:23.740
Markdown-Sachen husten oder hochladen, aber das generiert

01:13:23.740 --> 01:13:25.620
halt immer noch nicht deinen Content, ne? Den muss man halt immer noch

01:13:25.620 --> 01:13:27.760
selber schreiben, aber man

01:13:27.760 --> 01:13:29.760
kriegt den damit sehr gut aussehend hin, also die ganze

01:13:29.760 --> 01:13:31.720
also ich meine, die View-Dokumentation

01:13:31.720 --> 01:13:33.680
ist ja View-Press, weil das kann halt

01:13:33.680 --> 01:13:34.600
auch mal ein bisschen mehr, aber

01:13:34.600 --> 01:13:37.720
und das ist eigentlich,

01:13:37.940 --> 01:13:39.760
das ist auch alles Markdown, mehr oder weniger.

01:13:40.560 --> 01:13:41.960
Das sieht schon sehr schick aus,

01:13:42.020 --> 01:13:42.440
muss man sagen.

01:13:43.680 --> 01:13:45.280
Gerade auch im Vergleich zu Django-Dokumentationen.

01:13:45.280 --> 01:13:47.840
Django-Dokumentationen ist jetzt deutlich mehr und deutlich umfangreicher

01:13:47.840 --> 01:13:49.400
und vollständiger, aber

01:13:49.400 --> 01:13:51.540
also die Vue-Dokumentationen

01:13:51.540 --> 01:13:52.140
sieht schon besser aus.

01:13:53.820 --> 01:13:55.400
Und also das sind ja auch so kleine

01:13:55.400 --> 01:13:57.520
Animationen und diese ganzen Geschichten, die halt bei Vue

01:13:57.520 --> 01:13:59.400
so drin sind. Ja, es ist relativ

01:13:59.400 --> 01:14:01.560
einfach, dass da alles mit direkt auch als Paket

01:14:01.560 --> 01:14:03.200
kommt. Dann funktioniert das einfach.

01:14:03.680 --> 01:14:06.080
Das ist sowieso ein bisschen das Problem

01:14:06.080 --> 01:14:08.380
von Dango-Sachen, dass das immer so sehr statische

01:14:08.380 --> 01:14:09.200
Seiten sind immer.

01:14:10.180 --> 01:14:11.800
Ja, aber nicht unbedingt.

01:14:12.580 --> 01:14:14.240
Also ja, wenn man das halt hat, das macht man halt zum Beispiel

01:14:14.240 --> 01:14:16.040
wieder nicht, aber das ist halt dann unheimlicher

01:14:16.040 --> 01:14:18.380
Overhead, das dann halt in die Projekte dann alles mal reinzubringen

01:14:18.380 --> 01:14:20.220
und man muss halt eigentlich an mehreren Stellen dann gleichzeitig

01:14:20.220 --> 01:14:22.080
die Sachen bauen und das wird dann

01:14:22.080 --> 01:14:24.040
alles so ein bisschen, man verliert halt Features, die man

01:14:24.040 --> 01:14:26.240
vielleicht möchte oder so, das ist alles noch nicht

01:14:26.240 --> 01:14:28.060
so, ja, man hat halt immer

01:14:28.060 --> 01:14:30.140
Entscheidungen zu treffen, für welchen Case man was

01:14:30.140 --> 01:14:30.920
lieber möchte.

01:14:33.240 --> 01:14:34.260
Dass es allerdings war.

01:14:35.220 --> 01:14:37.060
Ja, Pakete. Jetzt hast du noch was,

01:14:37.140 --> 01:14:37.800
Ronny, du hast das noch.

01:14:39.200 --> 01:14:41.060
Also tatsächlich, ich habe

01:14:41.060 --> 01:14:42.620
jetzt noch so zwei, drei Kleinigkeiten, die

01:14:42.620 --> 01:14:45.140
mir jetzt aufgefallen sind, dass ich da, wie gesagt,

01:14:45.220 --> 01:14:46.720
jetzt so ein bisschen Streamlining gemacht habe,

01:14:46.800 --> 01:14:49.100
bei dem Package. Das eine

01:14:49.100 --> 01:14:51.080
ist, ich habe angefangen, bei allem, was ich

01:14:51.080 --> 01:14:53.060
anfasse, jetzt nochmal Type Hinting zu

01:14:53.060 --> 01:14:55.180
nutzen. Es ist ja so, wird ja kontrovers diskutiert,

01:14:55.220 --> 01:14:56.980
ob das jetzt gut oder schlecht ist. Also ganz radikal,

01:14:57.080 --> 01:14:58.580
jedes Argument in jeder einzelnen Methode.

01:14:58.580 --> 01:15:01.060
Ja, also es ist immer ein bisschen schwierig,

01:15:01.060 --> 01:15:03.080
wenn du halt Klassen hast, die aus dem eigenen

01:15:03.080 --> 01:15:05.580
Scope kommen, weil du halt dann super schnell in Circular

01:15:05.580 --> 01:15:07.640
Imports rennst. Da ist es dann so, dass ich

01:15:07.640 --> 01:15:09.660
zum Beispiel sage, okay, wenn ich jetzt, keine Ahnung,

01:15:09.760 --> 01:15:11.600
ein User-Query-Set habe, dass ich dann nicht

01:15:11.600 --> 01:15:13.560
sage, das gibt ein User-Query-Set zurück, sondern es gibt

01:15:13.560 --> 01:15:15.420
einfach nur Query-Set zurück. Also das ist das abstrakte

01:15:15.420 --> 01:15:16.840
Django-Ding, ja. Aber

01:15:16.840 --> 01:15:19.480
ich finde das halt super praktisch, also vor allem

01:15:19.480 --> 01:15:20.840
also... Aber ist das nicht falsch?

01:15:22.420 --> 01:15:23.740
Also wenn du halt

01:15:23.740 --> 01:15:25.180
eine... Ja, es ist halt

01:15:25.180 --> 01:15:27.200
der Vater, ne? Also es ist ja

01:15:27.200 --> 01:15:28.880
immer Typ Query-Set. Ja,

01:15:29.060 --> 01:15:31.520
na, ist dann nur die Base...

01:15:31.520 --> 01:15:33.360
Aber das ist schon, glaube ich, auch

01:15:33.360 --> 01:15:35.880
wie man das, man sollte halt irgendwie

01:15:35.880 --> 01:15:37.980
die Abstraktionen von der halt abhängen

01:15:37.980 --> 01:15:39.680
und die dann halt auch. Also im Endeffekt, wenn ich halt

01:15:39.680 --> 01:15:41.800
nix zurückgebe, also nicht halb hinter,

01:15:41.840 --> 01:15:43.860
dann weiß jemand nix. Wenn ich weiß, da kommt ein Query Set

01:15:43.860 --> 01:15:45.700
zurück, dann weiß ich immerhin schon mal, ey, das ist keine Liste.

01:15:45.820 --> 01:15:47.360
Ja, okay, aber das ist schon besser.

01:15:47.700 --> 01:15:49.740
Also man macht das ja

01:15:49.740 --> 01:15:51.600
in sowas wie TypeScript oder sowas so relativ

01:15:51.600 --> 01:15:53.680
detailliert, dass man irgendwelche Interfaces dann

01:15:53.680 --> 01:15:55.580
dafür baut, wo dann halt die Typen

01:15:55.580 --> 01:15:57.140
existent sind, die man aber auch verwenden muss, weil

01:15:57.140 --> 01:15:59.760
ansonsten ist das ja falsch. Also wenn du jetzt ein User Query Set hast,

01:15:59.900 --> 01:16:01.920
Vielleicht hast du ein Custom-Query-Set,

01:16:02.000 --> 01:16:03.240
wo du irgendwas Besonderes dran gemacht hast,

01:16:03.300 --> 01:16:05.700
irgendeine Methode, die andere Query-Sets nicht können.

01:16:06.040 --> 01:16:07.660
Und wenn du dann halt sagst, das ist nur ein Query-Set

01:16:07.660 --> 01:16:09.740
und dann kommt da irgendeine Methode, die Query-Sets gar nicht können,

01:16:09.880 --> 01:16:11.420
das wäre irgendwie seltsam dann.

01:16:11.600 --> 01:16:13.180
Und das müsste eigentlich auch gelintet werden, finde ich.

01:16:13.660 --> 01:16:16.100
Also du hast recht, es ist nicht ganz trennscharf.

01:16:16.680 --> 01:16:18.400
Dadurch, dass ich das Problem mit den Circular-Inputs

01:16:18.400 --> 01:16:19.260
noch nicht gelöst habe,

01:16:19.340 --> 01:16:21.220
und ich auch gar nicht weiß, was es für eine Lösung gibt,

01:16:21.800 --> 01:16:23.700
habe ich mich einfach dafür entschieden,

01:16:23.700 --> 01:16:26.040
ich gebe dem Nutzer halt einfach

01:16:26.040 --> 01:16:27.300
einen Ticken mehr

01:16:27.300 --> 01:16:29.200
Informationen mit.

01:16:29.220 --> 01:16:29.700
Verantwortung.

01:16:31.060 --> 01:16:33.500
Also meistens finde ich es eh, also sehr sinnvoll

01:16:33.500 --> 01:16:35.220
ist es vor allem eh bei trivialen

01:16:35.220 --> 01:16:36.980
Datentypen, weil du halt dann, ob es jetzt irgendwie

01:16:36.980 --> 01:16:39.160
Decimal oder Float oder ein Integer oder sowas ist,

01:16:39.200 --> 01:16:40.940
das macht ja schon, macht ja schnell irgendwie

01:16:40.940 --> 01:16:41.800
die Berechnung kaputt.

01:16:43.240 --> 01:16:45.060
Aber ich finde das tatsächlich praktisch, wenn du vor allem,

01:16:45.060 --> 01:16:46.520
wenn man so Helper-Methoden oder irgendwie

01:16:46.520 --> 01:16:49.160
Sachen hat, also wo andere dann meinen Code

01:16:49.160 --> 01:16:51.020
nutzen, ist das total praktisch, dass

01:16:51.020 --> 01:16:52.800
dir dann direkt die Idee schon anzeigt, so sorry,

01:16:53.300 --> 01:16:55.120
da stimmt irgendwas nicht. Genau, das ist, finde ich, auch das Wichtigste

01:16:55.120 --> 01:16:57.060
an diesen Type Lins in Python, dass du halt tatsächlich, wenn du

01:16:57.060 --> 01:16:58.920
den Lint richtig konfiguriert hast, während

01:16:58.920 --> 01:17:00.820
im Schreiben siehst, wenn du da irgendeinen

01:17:00.820 --> 01:17:02.680
Anspruch hast und das ist wirklich praktisch. Aber ich

01:17:02.680 --> 01:17:04.940
mündest auch tatsächlich meistens nur für komplexe

01:17:04.940 --> 01:17:06.740
Dinge, also wo es fraglich ist oder wo du nicht genau

01:17:06.740 --> 01:17:08.620
weißt, was es ist. Dann sage ich halt direkt, das ist jetzt explizit

01:17:08.620 --> 01:17:10.300
und die anderen Sachen, die gehen halt einfach so durch.

01:17:10.880 --> 01:17:11.760
Also tatsächlich

01:17:11.760 --> 01:17:14.620
auf der PyCologne,

01:17:14.800 --> 01:17:16.660
das ist ein Python-Meetup in Köln,

01:17:16.840 --> 01:17:18.500
das monatlich stattfindet,

01:17:19.100 --> 01:17:20.280
da hatte der

01:17:20.280 --> 01:17:22.420
Organisator mal irgendwann gesagt, dass er

01:17:22.420 --> 01:17:24.460
inzwischen jetzt übergegangen ist, dass er

01:17:24.460 --> 01:17:26.520
quasi in jeder Funktion, die er

01:17:26.520 --> 01:17:28.560
schreibt, das erzwingt, dass man die

01:17:28.560 --> 01:17:30.720
Keyword-Arguments nimmt. Das geht ganz einfach, indem man

01:17:30.720 --> 01:17:32.220
zum Beispiel aus einer Methode, das ist dann irgendwie

01:17:32.220 --> 01:17:34.800
von einer Klasse, da ist dann nur der erste

01:17:34.800 --> 01:17:36.700
Typ ist immer,

01:17:36.800 --> 01:17:38.680
nicht Typ, die erste Variable ist immer self.

01:17:39.020 --> 01:17:40.820
Und dann machst du Komma, Sternchen, Komma

01:17:40.820 --> 01:17:42.740
und danach deine anderen. Und dieses Sternchen

01:17:42.740 --> 01:17:44.520
sagst du dem quasi, es kommt hier

01:17:44.520 --> 01:17:46.820
quasi kein normales

01:17:46.820 --> 01:17:48.720
Argument und dahinter kommen die Keyword-Argumente.

01:17:48.840 --> 01:17:50.220
Das heißt, es ist verboten,

01:17:50.700 --> 01:17:52.680
dass du sagst, ich gebe den ersten Parameter normal

01:17:52.680 --> 01:17:54.860
rein. Habt ihr verstanden, was ich meine?

01:17:54.860 --> 01:17:56.680
Ja, also kein normales Argument

01:17:56.680 --> 01:17:58.700
gibt es nur Keyword-Argumente. Genau. Und das

01:17:58.700 --> 01:18:00.820
finde ich, also bei manchen Sachen ist es natürlich Unsinn.

01:18:00.960 --> 01:18:02.700
Ich meine, wenn du eine Sache hast, wo das auch

01:18:02.700 --> 01:18:04.640
klar ist, aber insbesondere bei so Methoden

01:18:04.640 --> 01:18:06.120
oder wenn man mal irgendwie dann doch mal so

01:18:06.120 --> 01:18:08.720
vor so einer Funktion steht, wo dann irgendwie doch mal so 3, 4, 5

01:18:08.720 --> 01:18:10.600
Sachen reingehen, was ja irgendwie auch so

01:18:10.600 --> 01:18:12.640
ein bisschen unlesbar ist. Ja. Da den

01:18:12.640 --> 01:18:14.680
User zu erzwingen, vor allem wenn da mal einer hinkommt

01:18:14.680 --> 01:18:16.260
und das irgendwie ein bisschen refactoren möchte,

01:18:16.560 --> 01:18:18.540
dann ist er auf jeden Fall sichergestellt, dass niemand

01:18:18.540 --> 01:18:20.640
aus Versehen, also zum Beispiel wenn man die Reihenfolge

01:18:20.640 --> 01:18:22.440
tauscht, man möchte irgendwas da vorne rein, dann

01:18:22.440 --> 01:18:24.400
kann man das einfach machen, weil es ist ein Keyword-Argument.

01:18:24.460 --> 01:18:27.220
Aber das schluckt ja nicht das mit dem ständigen Rest einfach weg dann?

01:18:27.300 --> 01:18:28.580
Ich überlege gerade, wo der dann rausfällt.

01:18:29.480 --> 01:18:32.000
Äh, nee, man kann auch noch ...

01:18:32.000 --> 01:18:33.340
Also der Argument wird ja wegschlucken,

01:18:33.480 --> 01:18:34.400
die würden einfach nicht mehr auftauchen,

01:18:34.480 --> 01:18:36.080
aber die werden halt nicht in den Keywords dann gemappt,

01:18:36.100 --> 01:18:36.540
die man eigentlich ...

01:18:36.540 --> 01:18:37.900
Nee, der macht dann tatsächlich einen Fehler.

01:18:38.020 --> 01:18:39.160
Der wirft da gar nichts, darf nur nicht.

01:18:39.800 --> 01:18:41.200
Also das ist sehr praktisch, weil ansonsten,

01:18:41.480 --> 01:18:43.020
das wäre ja blöd, wenn das passiert, was du sagst.

01:18:43.080 --> 01:18:43.940
Nee, tatsächlich sagt er dann,

01:18:43.980 --> 01:18:45.960
sorry, da müssen Keyword-Arguments drin sein.

01:18:46.160 --> 01:18:46.320
Okay.

01:18:46.660 --> 01:18:49.440
Und das finde ich, wie gesagt, es gibt Methoden,

01:18:49.480 --> 01:18:50.120
da macht das keinen Sinn,

01:18:50.300 --> 01:18:53.100
aber wenn das irgendwas sehr, sehr Wichtiges ist

01:18:53.100 --> 01:18:54.920
oder sehr, sehr ähnliche Variablen reinkommen.

01:18:55.080 --> 01:18:56.860
Dass man zum Beispiel, weiß ich nicht, du hast irgendwie User 1

01:18:56.860 --> 01:18:59.160
und User 2 oder sowas, die irgendwie eine andere Semantik

01:18:59.160 --> 01:19:01.140
haben, aber halt vom gleichen Typ

01:19:01.140 --> 01:19:03.040
sind und das einfach dann dir trotzdem zu Ende rechnen

01:19:03.040 --> 01:19:05.120
würde, was du da tust. Da finde ich das echt

01:19:05.120 --> 01:19:06.160
nett, wenn man das macht.

01:19:07.440 --> 01:19:08.300
Einfach, weil du halt

01:19:08.300 --> 01:19:11.080
dem weiteren User,

01:19:11.160 --> 01:19:12.900
ob du es du bist oder jemand anders, mehr

01:19:12.900 --> 01:19:13.920
Semantik erzwingst.

01:19:16.440 --> 01:19:16.760
Ja.

01:19:17.020 --> 01:19:19.040
Also explizit nur Keyword-Arguments

01:19:19.040 --> 01:19:20.740
erlaubt. Gibt es da nicht doch irgendwie ein Parameter für?

01:19:20.740 --> 01:19:22.800
Es gibt da irgendwas mit dem Slash, ich weiß es

01:19:22.800 --> 01:19:24.800
nicht mehr genau, es gibt, aber ich weiß

01:19:24.800 --> 01:19:26.920
jetzt auch nicht mehr genau, es gibt also Position-Only-Arguments,

01:19:27.040 --> 01:19:28.480
es gibt auch Keyword-Only-Arguments mit dem

01:19:28.480 --> 01:19:30.540
Stern, ja, aber

01:19:30.540 --> 01:19:32.240
genau, also ich, ja,

01:19:32.980 --> 01:19:34.720
ich würde jetzt sagen, genau, wenn man

01:19:34.720 --> 01:19:36.200
viele Argumente hat, dann ist erstmal,

01:19:36.820 --> 01:19:38.640
also ich würde sagen, naja, es gibt schon mal Fälle,

01:19:38.720 --> 01:19:40.660
wo das gut ist, aber, oder wo man

01:19:40.660 --> 01:19:42.540
das halt einfach braucht, aber wenn es jetzt so

01:19:42.540 --> 01:19:44.620
deutlich mehr als drei werden, dann denke ich mir schon

01:19:44.620 --> 01:19:46.620
so, okay, kann man das nicht vielleicht irgendwie anders machen, weil

01:19:46.620 --> 01:19:48.020
das kann sich ja eh keiner merken.

01:19:48.540 --> 01:19:50.520
Also ich meine, wenn die Idee das vervollständigt, okay, dann geht's

01:19:50.520 --> 01:19:52.280
vielleicht, aber ansonsten

01:19:52.280 --> 01:19:54.160
Wenn man ja immer durchpipen muss durch

01:19:54.160 --> 01:19:56.400
mehrere Ebenen. Was ich dann oft

01:19:56.400 --> 01:19:57.620
sehe, ist halt irgendwie,

01:19:58.620 --> 01:20:00.420
oder wo ich denke, da macht es dann nicht mehr so viel Sinn,

01:20:00.520 --> 01:20:02.380
ist halt, du hast eine Riesenliste, wo dann

01:20:02.380 --> 01:20:04.400
Leute dann anfangen, okay, Funktion geht

01:20:04.400 --> 01:20:06.120
auf, Klammer auf und dann kommt dann halt irgendwie so

01:20:06.120 --> 01:20:08.360
eine Riesenliste von

01:20:08.360 --> 01:20:10.260
Zeug, Klammer zu und dann kommen erstmal

01:20:10.260 --> 01:20:12.380
100 Zeilen Überprüfung, was man denn da

01:20:12.380 --> 01:20:13.340
bekommen hat und

01:20:13.340 --> 01:20:16.140
Fehlerbehandlung, wenn das irgendwie nicht so richtig

01:20:16.140 --> 01:20:18.280
zusammenpasst und so. Und ich denke so, ja, okay.

01:20:20.040 --> 01:20:20.660
Das kann man

01:20:20.660 --> 01:20:21.500
bestimmt irgendwie besser machen.

01:20:22.280 --> 01:20:24.180
Ja, aber ja.

01:20:25.180 --> 01:20:25.920
Ja, es ist schon

01:20:25.920 --> 01:20:28.140
interessant. Ja, überhaupt diese ganze Type-Hinting-Geschichte

01:20:28.140 --> 01:20:29.440
oder so, da bin ich auch noch nicht so richtig.

01:20:30.160 --> 01:20:32.160
Ich mag es natürlich, wenn die IDE mir hilft

01:20:32.160 --> 01:20:34.140
und irgendwie Dinge vorschlägt oder unterkringelt,

01:20:34.220 --> 01:20:35.240
wo ich es dann einen Fehler gemacht habe.

01:20:35.240 --> 01:20:35.960
Kann Wim das auch?

01:20:37.040 --> 01:20:38.320
Kann Wim das auch, gutes Linting?

01:20:40.440 --> 01:20:41.500
Ich weiß es gar nicht.

01:20:41.560 --> 01:20:43.080
Ich habe das nie wirklich verwendet, glaube ich.

01:20:43.080 --> 01:20:44.600
Also irgendwer aus dem Off-Drive bestimmt ja.

01:20:45.360 --> 01:20:47.220
Das geht bestimmt, ja. Ich habe das jetzt aber gar nicht

01:20:47.220 --> 01:20:48.740
da drin verwendet bisher.

01:20:49.700 --> 01:20:51.280
Ja, ich habe das auch selber, benutze ich das

01:20:51.280 --> 01:20:53.380
fast nie, weil ich würde sagen,

01:20:53.440 --> 01:20:55.140
es macht ja eigentlich auch, also wäre jetzt mein

01:20:55.140 --> 01:20:57.100
Bauchgefühl nur dann Sinn, wenn man Pakete

01:20:57.100 --> 01:20:59.220
schreibt, die dann halt irgendwie von anderen Leuten verwendet

01:20:59.220 --> 01:21:01.200
werden und das mache ich eigentlich auch nicht so richtig

01:21:01.200 --> 01:21:02.360
häufig, daher

01:21:02.360 --> 01:21:05.260
ja, ich habe das, aber müssen wir mal eine Sendung

01:21:05.260 --> 01:21:07.240
zu machen und muss ich mich damit beschäftigen, das wollte ich

01:21:07.240 --> 01:21:09.200
auch schon immer mal tun, das ist wirklich ein guter Grund, das mal zu

01:21:09.200 --> 01:21:09.620
machen, ja.

01:21:12.980 --> 01:21:15.320
Ja und sonst, was ich auch ganz praktisch

01:21:15.320 --> 01:21:16.880
finde, wie gesagt, man kann halt über diese,

01:21:17.160 --> 01:21:19.600
über die Projektmeta oder Package-Metadaten

01:21:19.600 --> 01:21:21.140
kann man halt super viele praktische

01:21:21.140 --> 01:21:23.020
Sachen mitgeben und da die Piper-Seite halt

01:21:23.020 --> 01:21:24.920
wirklich, die gibt da unendlich viel vor

01:21:24.920 --> 01:21:27.040
und viele Packages, die man so sieht, die nutzen das alles

01:21:27.040 --> 01:21:29.040
gar nicht, was sehr schade ist. Also nicht nur, dass du

01:21:29.040 --> 01:21:31.120
halt dann direkt an vorgegebener Stelle den Bug-Tracker,

01:21:31.680 --> 01:21:33.380
das Repo, den Maintainer,

01:21:33.520 --> 01:21:35.140
keine Ahnung was mitgeben kannst, du kannst halt auch

01:21:35.140 --> 01:21:37.080
diese Badges nehmen, wo du dann zum Beispiel

01:21:37.080 --> 01:21:39.080
dann sagst, hey, hier, das ist die aktuelle Piper-Version

01:21:39.080 --> 01:21:41.260
oder der Bild läuft durch oder meine Docs funktionieren.

01:21:41.640 --> 01:21:43.220
Es gibt ganz unendlich viele Sachen,

01:21:43.360 --> 01:21:45.140
unendlich viele Tools, die man da einfach anbinden

01:21:45.140 --> 01:21:46.880
kann und damit kann man halt,

01:21:47.320 --> 01:21:48.940
wenn man halt mal ein Package macht und auch gerne möchte,

01:21:48.940 --> 01:21:51.120
dass Leute das nutzen, kann man halt sehr viel

01:21:51.120 --> 01:21:53.840
ja, es ist einfach aufpeppen die Seite.

01:21:54.260 --> 01:21:55.440
Du hast ein bisschen Convenience dazu benutzt.

01:21:55.460 --> 01:21:57.740
Genau, Convenience und auch die Leute einfach so ein bisschen

01:21:57.740 --> 01:21:59.100
so, hey, guck mal, ich weiß, was ich hier tue.

01:21:59.280 --> 01:22:01.220
Ich habe ja irgendwie an alles gedacht. Auch bei diesen,

01:22:01.480 --> 01:22:03.220
da gibt es auch so Metadaten, wo du zum Beispiel sagen kannst,

01:22:03.280 --> 01:22:05.700
in welchem Status befindet sich das? Ist das gerade eine Alpha?

01:22:05.860 --> 01:22:07.780
Ist das eine Beta? Ist das Production-Ready?

01:22:08.560 --> 01:22:09.860
Da kannst du genau auflisten,

01:22:10.000 --> 01:22:11.840
welche Dependencies, was ich vorhin schon meinte,

01:22:11.840 --> 01:22:13.900
bei der Matrix, die und die Python-Version

01:22:13.900 --> 01:22:15.600
unterstütze ich, die und die Django-Version unterstütze ich.

01:22:15.840 --> 01:22:17.560
Ist halt super praktisch, wenn halt jemand kommt,

01:22:17.640 --> 01:22:19.780
der einfach gerade ein bisschen browset bei PyPy und einfach sucht,

01:22:19.840 --> 01:22:21.860
okay, ich möchte jetzt mein Problem lösen, welches Package

01:22:21.860 --> 01:22:23.620
geht denn für mich? Ich habe vielleicht eine Nebenbedingung,

01:22:23.680 --> 01:22:25.640
weiß ich nicht, ich bin noch auf Django 2 oder sowas und

01:22:25.640 --> 01:22:27.780
kann nicht so ohne weiteres hochgehen und dann

01:22:27.780 --> 01:22:29.660
einfach siehst, ach cool, dann zerstützt das, steht da, da muss man nicht

01:22:29.660 --> 01:22:31.760
irgendwie sich lange durch Dokus durchgraben oder

01:22:31.760 --> 01:22:33.840
weiß der Geier, aber es ist einfach super convenient

01:22:33.840 --> 01:22:35.620
und da gibt es sehr viel,

01:22:35.780 --> 01:22:37.460
ich mache das tatsächlich immer so, dass wenn ich

01:22:37.460 --> 01:22:39.820
irgendein Package gefunden habe, dass das sehr ausführlich

01:22:39.820 --> 01:22:41.720
nutzt, dann gucke ich mir GitHub an und klau

01:22:41.720 --> 01:22:43.860
dann da die Sachen und schaue es

01:22:43.860 --> 01:22:45.900
mir ab, was man da alles machen kann.

01:22:45.900 --> 01:22:47.900
Also gut geklaut ist halb gewonnen.

01:22:48.300 --> 01:22:50.420
Ja, ja, auf jeden Fall. Oh, das wollte ich eben noch

01:22:50.420 --> 01:22:52.440
sagen, das habe ich dann irgendwie vergessen.

01:22:52.940 --> 01:22:53.980
Genau, also Tests, ja.

01:22:55.680 --> 01:22:56.420
Inzwischen mache ich das auch

01:22:56.420 --> 01:22:58.420
meistens so, dass ich dann halt die Tests in einem Verzeichnis habe und das kommt halt

01:22:58.420 --> 01:22:59.120
nicht mit ins Paket.

01:23:00.880 --> 01:23:02.340
Ich lese mir oft,

01:23:02.440 --> 01:23:04.200
wenn ich jetzt wirklich verstehen will, was

01:23:04.200 --> 01:23:06.280
irgendwie Software macht, dann fange ich oft mit

01:23:06.280 --> 01:23:08.420
den Tests an, mir die anzugucken, aber da habe ich meistens

01:23:08.420 --> 01:23:10.320
sowieso einen Checkout von dem Repository,

01:23:10.320 --> 01:23:12.480
dass ich dann in das Paket

01:23:12.480 --> 01:23:13.240
selber reingucke.

01:23:14.000 --> 01:23:15.380
Nee, eigentlich auch nicht.

01:23:16.500 --> 01:23:18.160
Insofern, genau, ich mache das inzwischen

01:23:18.160 --> 01:23:20.180
auch so, dass die Tests halt nicht mehr in dem Paket mit drin sind.

01:23:23.840 --> 01:23:28.160
Ja, man kann schöne Sachen mit Paketen machen.

01:23:28.640 --> 01:23:29.960
Auf jeden Fall. Habt ihr noch was?

01:23:30.440 --> 01:23:32.220
Ja, also ein großer Teil, den wir jetzt nicht

01:23:32.220 --> 01:23:34.080
haben, aber vielleicht machen wir den dann auch mal irgendwann anders,

01:23:34.180 --> 01:23:36.120
weil es jetzt auch gar nicht so, das betrifft

01:23:36.120 --> 01:23:38.060
ja auch eher wieder so den Data Science

01:23:38.060 --> 01:23:39.040
Teil

01:23:39.040 --> 01:23:41.980
Conda. Das ist natürlich auch wieder eigene

01:23:41.980 --> 01:23:44.000
Pakete. Im Grunde auch eigener

01:23:44.000 --> 01:23:45.980
Teil wäre halt sowas wie irgendwie, baue ich

01:23:45.980 --> 01:23:46.960
ein Binary, einfach

01:23:46.960 --> 01:23:48.940
dass ich ein executable Ding

01:23:48.940 --> 01:23:49.860
irgendwie bauen kann.

01:23:50.460 --> 01:23:52.840
Das hätte man jetzt auch

01:23:52.840 --> 01:23:54.120
hier noch machen können, aber

01:23:54.120 --> 01:23:55.640
ich bin nicht vorbereitet.

01:23:56.580 --> 01:23:58.760
Müssen wir uns das Ganze nochmal angucken, wie das so funktioniert.

01:23:59.160 --> 01:24:00.840
Ich habe gerade das Benutzen, Leute. Also ich bin

01:24:00.840 --> 01:24:02.180
kein Fan davon persönlich, aber

01:24:02.180 --> 01:24:04.660
es nimmt sehr viel Kontrolle,

01:24:04.900 --> 01:24:06.440
die ich nicht abgeben möchte, immer ab.

01:24:06.600 --> 01:24:07.940
Deswegen muss man es immer so im Zaum halten.

01:24:08.840 --> 01:24:10.020
Conner. Achso.

01:24:10.720 --> 01:24:12.700
Wieso? Also es ist relativ intrusiv.

01:24:12.820 --> 01:24:14.720
Das heißt, man kann es nicht einfach so daneben

01:24:14.720 --> 01:24:16.740
den Rest packen. Also ich muss

01:24:16.740 --> 01:24:18.820
zum Beispiel, um es mit PyEnv zu benutzen

01:24:18.820 --> 01:24:20.200
und als PyEnv zu funktionieren, mal so ein bisschen

01:24:20.200 --> 01:24:21.940
rumhacken, dass das vernünftig geht.

01:24:22.100 --> 01:24:24.640
Ja, manchmal funktioniert es halt auch nicht mehr richtig,

01:24:24.740 --> 01:24:26.460
das stimmt schon. Oder es macht halt

01:24:26.460 --> 01:24:28.480
irgendwelche Pfade kaputt oder schreibt

01:24:28.480 --> 01:24:30.340
sich in irgendwelche System-Conflicts rein, wo es eigentlich

01:24:30.340 --> 01:24:32.460
gar nichts zu suchen hat, wo man es dann wieder rauslöschen muss und so.

01:24:33.000 --> 01:24:34.200
Ja, anstrengend.

01:24:35.620 --> 01:24:36.320
Genau, aber

01:24:36.320 --> 01:24:38.620
ist auf jeden Fall auch noch eine interessante Geschichte.

01:24:39.740 --> 01:24:40.420
Ja, ansonsten

01:24:41.680 --> 01:24:42.380
ne, war es nicht.

01:24:43.880 --> 01:24:44.460
Fällt mir jetzt auch

01:24:44.460 --> 01:24:45.000
nichts mehr ein.

01:24:46.480 --> 01:25:07.860
Ja, ich glaube eine Sache, die ist noch ganz cool, also ich habe tatsächlich gemerkt, dass selbst wenn ich Code schreibe, dann bemühe ich mich denen ja auch, dass der ordentlich ist, dass der getestet ist und so weiter, aber sobald man dann anfängt, den in Package zu legen, fallen einem sofort noch 10 Use Cases ein, die man eigentlich noch mit abdecken sollte und die Codequalität ist auf jeden Fall nachher immer nochmal 20-30% besser gefühlt, wenn ich das wirklich Package-ready gemacht habe.

01:25:08.600 --> 01:25:16.360
Einfach, weil man dann denkt, ach komm, irgendwie du hast so ein Spezial für dein Projekt, ja, das weiß ich nicht, du hast so ein separates User-Model, ja, ist okay, das lasse ich einfach so nachdenken.

01:25:16.460 --> 01:25:19.940
Nee, das funktioniert nicht so, das muss man nochmal sauber ziehen und gerade ziehen.

01:25:19.940 --> 01:25:28.160
Also das kann tatsächlich sehr, sehr pädagogisch wertvoll sein, einfach die Sachen mal zu versuchen auszulagern, weil man irgendwas Cooles gebaut hat.

01:25:29.220 --> 01:25:29.980
Ja, auf jeden Fall.

01:25:30.300 --> 01:25:30.420
Ja.

01:25:31.980 --> 01:25:34.220
Ja, wollen wir noch Pics machen?

01:25:34.280 --> 01:25:35.440
Habt ihr Pics der Woche?

01:25:36.400 --> 01:25:37.100
Etwas, ja.

01:25:37.500 --> 01:25:38.720
Ja, okay. Dann bitte dann.

01:25:39.700 --> 01:25:41.340
Allerdings ist es kein

01:25:41.340 --> 01:25:43.500
Paket oder keine Software, sondern

01:25:43.500 --> 01:25:45.420
es ist ein Artikel.

01:25:46.080 --> 01:25:46.980
Ist aber auch lang.

01:25:47.480 --> 01:25:48.300
Habt mal viel Spaß mit.

01:25:49.980 --> 01:25:50.380
Aufwand

01:25:50.380 --> 01:25:53.300
Subclassing in

01:25:53.300 --> 01:25:54.580
Python Redux.

01:25:55.480 --> 01:25:57.040
Ich weiß nicht, ob wir den...

01:25:57.040 --> 01:25:58.040
Du kannst das doch mal wiederholen, bitte.

01:25:59.860 --> 01:26:01.660
Subclassing in Python Redux.

01:26:02.020 --> 01:26:02.180
Ja.

01:26:02.800 --> 01:26:04.880
Am 20. Juni rausgekommen ist jetzt,

01:26:05.140 --> 01:26:07.020
also gefühlt noch gar nicht so lange her, vielleicht eine Woche

01:26:07.020 --> 01:26:09.080
oder müsste eigentlich mehr, etwas mehr

01:26:09.080 --> 01:26:10.840
als eine Woche vielleicht sogar. Ja, ich glaube eine Woche

01:26:10.840 --> 01:26:12.440
und zwei Tage, Jochen. Kann sein.

01:26:13.440 --> 01:26:14.760
Ist auf jeden Fall sehr interessant, genau.

01:26:15.660 --> 01:26:16.940
Schöner, langer Artikel, wo er

01:26:16.940 --> 01:26:18.980
irgendwie so seine Erfahrungen über die letzten

01:26:18.980 --> 01:26:20.860
paar Jahre viel beschreibt und

01:26:20.860 --> 01:26:22.620
was alles nicht funktioniert. Er verlinkt auch viele

01:26:22.620 --> 01:26:24.520
sehr interessante Quellen und

01:26:24.520 --> 01:26:26.920
genau, das ist so, die Erfahrung

01:26:26.920 --> 01:26:28.360
habe ich auf jeden Fall auch schon gemacht, dass

01:26:28.360 --> 01:26:29.580
wenn man Interfaces so,

01:26:30.980 --> 01:26:32.980
auch wenn man Libraries schreibt, so definiert,

01:26:33.080 --> 01:26:34.640
dass es halt, dass sie darauf basieren, dass man

01:26:34.640 --> 01:26:35.500
dann irgendwie

01:26:35.500 --> 01:26:38.980
von den Sachen erbt, die man da geschrieben hat,

01:26:39.440 --> 01:26:39.640
dann

01:26:39.640 --> 01:26:43.160
hat man so am Anfang das Gefühl, das ist voll gut

01:26:43.160 --> 01:26:45.140
und dann irgendwann denkt man sich, oh mein Gott, was habe ich getan?

01:26:45.520 --> 01:26:46.420
Das ist alles schrecklich.

01:26:46.920 --> 01:26:47.720
Ich komme da nicht wieder raus.

01:26:48.760 --> 01:26:50.220
Und ja,

01:26:50.940 --> 01:26:53.320
das ist auf jeden Fall,

01:26:53.720 --> 01:26:54.700
sollte man sich mal die Zeit nehmen,

01:26:54.700 --> 01:26:56.140
wenn man so einen langen, dunklen Nachmittag,

01:26:56.160 --> 01:26:56.820
jetzt ist gerade Sommer,

01:26:57.700 --> 01:26:59.340
Zeit hat, dich das mal durchlesen.

01:26:59.500 --> 01:27:02.060
Da ist viel lehrreiches Zeug drin.

01:27:03.080 --> 01:27:04.400
Sehr, sehr gut. Guter Artikel.

01:27:05.500 --> 01:27:06.220
Okay, interessant.

01:27:09.960 --> 01:27:10.820
Ronny, hast du auch

01:27:10.820 --> 01:27:12.280
einen Pick der Woche?

01:27:12.740 --> 01:27:13.920
Ein Modul, das du wahrscheinlich hast?

01:27:16.480 --> 01:27:17.180
Ich glaube

01:27:17.180 --> 01:27:18.880
tatsächlich gerade nicht aus dem

01:27:18.880 --> 01:27:20.860
MFF. Oder irgendein Talk

01:27:20.860 --> 01:27:21.980
oder irgendwas Interessantes?

01:27:23.360 --> 01:27:23.940
Ja gut, ich meine,

01:27:24.260 --> 01:27:26.880
Dominik hat es ja gerade schon irgendwie fünfmal angesprochen,

01:27:27.020 --> 01:27:29.040
dieser erste Talk von der JungleCon mit dem

01:27:29.040 --> 01:27:31.840
Programming for Pleasure.

01:27:31.840 --> 01:27:32.740
Ach ja, okay.

01:27:33.100 --> 01:27:35.300
Ich meine, das war so schön heretisch.

01:27:35.500 --> 01:27:39.900
das hat auf jeden Fall

01:27:39.900 --> 01:27:41.540
sehr, sehr viel Spaß gemacht, den zu hören und

01:27:41.540 --> 01:27:43.980
ich glaube, dass der Talk

01:27:43.980 --> 01:27:45.900
ist so meta, den kann man sich auch gut anhören, wenn man

01:27:45.900 --> 01:27:47.780
selbst nicht so tief im

01:27:47.780 --> 01:27:49.880
Coding drin ist. Das wäre vielleicht auch

01:27:49.880 --> 01:27:51.820
nochmal ganz interessant, es passt jetzt zwar nicht so richtig

01:27:51.820 --> 01:27:53.800
da rein, aber wie war denn die DjangoCon,

01:27:53.900 --> 01:27:55.320
wie ist das eigentlich aus

01:27:55.320 --> 01:27:57.900
Sicht, ihr wart ja ja irgendwie

01:27:57.900 --> 01:27:58.900
Sponsor als Firma,

01:27:59.900 --> 01:28:01.400
wie war das eigentlich sozusagen

01:28:01.400 --> 01:28:03.460
aus dem Blickwinkel?

01:28:04.840 --> 01:28:06.220
Ja, es ist schon, also wir haben uns

01:28:06.220 --> 01:28:07.680
alle immer, also wir haben mit

01:28:07.680 --> 01:28:10.180
paar wenigen Leuten im Büro geguckt,

01:28:10.300 --> 01:28:12.140
also ein paar Leute haben von zu Hause geschaut, ein paar wenige Leute waren

01:28:12.140 --> 01:28:14.120
im Büro und Corona und so ist ja alles nicht so einfach

01:28:14.120 --> 01:28:16.200
und haben uns

01:28:16.200 --> 01:28:17.920
natürlich alle immer schon gefreut, wenn dann unser

01:28:17.920 --> 01:28:19.520
nagelneues Promo-Video dann da über

01:28:19.520 --> 01:28:21.140
ein Bildschirm gelaufen ist

01:28:21.140 --> 01:28:24.140
und ja, ist auf jeden Fall auch

01:28:24.140 --> 01:28:26.120
cool, also irgendwie da das mit zu unterstützen

01:28:26.120 --> 01:28:26.920
und auch irgendwie ein bisschen

01:28:26.920 --> 01:28:29.700
was zurückgeben zu können, weil

01:28:29.700 --> 01:28:31.880
wir nutzen ja schon Dango irgendwie sehr, sehr viel

01:28:31.880 --> 01:28:55.000
Und ja, ansonsten, man kriegt da halt so ein paar Möglichkeiten. Du kannst dann einen Job-Offer im Slack posten, du kriegst einen Kanal, den du dann bearbeiten kannst. Das haben wir tatsächlich gar nicht so wirklich gemacht, weil wir hatten da irgendwie gar nicht so drüber nachgedacht, sage ich mal.

01:28:55.000 --> 01:29:24.720
Also, weil es war einfach so, ja klar, wir sind im Slack, unterschreibst du mit den Leuten und haben sich noch ein paar Leute gefragt wegen den Bewerbungen, wie es denn damit aussieht und wie es denn ist mit, wenn man halt irgendwie kein Deutsch kann und mit Remote und alles mögliche, aber da haben halt manche Firmen, haben da halt dann richtig Party gemacht in ihrem Kanal und richtig dann da den Kanal bearbeitet und ist eigentlich auch ganz cool, weil das da so ein bisschen ein anderes Element dazu gibt, weil das ja, es ist irgendwie, also ich weiß gar nicht, wer das war, ob das Lautzwurm war oder einer von denen auf jeden Fall,

01:29:24.720 --> 01:29:26.060
die hatten auf jeden Fall da richtig viel,

01:29:26.340 --> 01:29:27.420
da ging richtig viel rund.

01:29:28.320 --> 01:29:30.340
Six Feet Up ist, glaube ich, die Firma, die das

01:29:30.340 --> 01:29:31.800
gebaut hat oder so.

01:29:32.400 --> 01:29:33.440
Ich wüsste, Six Feet Under.

01:29:35.780 --> 01:29:38.140
Und das

01:29:38.140 --> 01:29:40.460
ist eigentlich schon ganz cool, weil das ist irgendwie auch eine ganz

01:29:40.460 --> 01:29:42.540
coole App, mit den Leuten so auch jetzt als Firma

01:29:42.540 --> 01:29:44.280
zu interagieren, ohne dass man jetzt irgendwie so direkt mit

01:29:44.280 --> 01:29:46.220
der Mega-Werbe-Call oder sowas kommt und sagt,

01:29:46.300 --> 01:29:47.500
hey, ich will euch was verkaufen.

01:29:48.780 --> 01:29:50.480
Von daher denke ich mal, also wir haben

01:29:50.480 --> 01:29:52.200
ja jetzt schon, das war jetzt die dritte

01:29:52.200 --> 01:29:54.140
Con-Folge, die wir gesponsert haben oder die vierte.

01:29:54.160 --> 01:29:55.700
Das war mir auch gar nicht klar. Aber wir waren diesmal

01:29:55.700 --> 01:29:57.820
ein Sponsortyp höher. Also ich glaube, wir waren jetzt Silber

01:29:57.820 --> 01:29:58.680
und davor waren wir immer Bronze.

01:30:00.460 --> 01:30:01.760
Aber tatsächlich

01:30:01.760 --> 01:30:03.680
glaube ich, würden wir das nächste Mal auch mal

01:30:03.680 --> 01:30:05.480
gucken, dass wir da dann auch ein bisschen mehr

01:30:05.480 --> 01:30:07.500
das nutzen, die Möglichkeiten, die man da bekommt.

01:30:08.420 --> 01:30:09.780
Weil wie gesagt, das ist schon cool und

01:30:09.780 --> 01:30:11.800
auch da irgendwie so einen direkten Draht zu den Leuten zu haben

01:30:11.800 --> 01:30:13.780
und ja, ich meine klar, wenn du

01:30:13.780 --> 01:30:15.800
vor Ort bist, ist eh nochmal alles anders. Da hängt ja jetzt nicht jeder

01:30:15.800 --> 01:30:16.900
zwingend am Laptop, aber

01:30:16.900 --> 01:30:19.460
das ist schon,

01:30:19.860 --> 01:30:21.440
ich denke mal auch, ich tippe mal, dass

01:30:21.440 --> 01:30:23.620
dieses Hybrid-Ding wird auch einfach bleiben.

01:30:23.920 --> 01:30:25.700
Ja, haben viele Leute gesagt, hm?

01:30:26.140 --> 01:30:28.100
Ja, vor allem, ich meine, es ist auch einfach, keine Ahnung,

01:30:28.220 --> 01:30:29.880
es waren, glaube ich, 700 Leute oder so im Slack,

01:30:29.940 --> 01:30:31.980
habe ich gesehen und normalerweise sind Django-Cons auf 300

01:30:31.980 --> 01:30:33.800
irgendwas begrenzt oder 400 oder so.

01:30:34.160 --> 01:30:35.940
Super viele Leute, die halt gerne irgendwie quasi

01:30:35.940 --> 01:30:37.720
denen das Geld geben möchten und gerne dabei sein möchten,

01:30:37.860 --> 01:30:39.800
aber eh nicht können, weil die halt irgendwo

01:30:39.800 --> 01:30:41.800
ganz weit weg wohnen oder keine Kohle haben

01:30:41.800 --> 01:30:43.660
oder keinen Urlaub kriegen oder so und

01:30:43.660 --> 01:30:45.500
die Leute einfach mitzunehmen und

01:30:45.500 --> 01:30:47.580
trotzdem teilhaben zu lassen, ist halt schon cool.

01:30:48.000 --> 01:30:48.760
Mhm, ja.

01:30:49.600 --> 01:30:51.000
Stimmt, so ein Lohlehrblick.

01:30:51.900 --> 01:30:53.140
Ich bin noch nicht so ganz sicher,

01:30:53.440 --> 01:30:55.520
ich finde das schon wichtig, diese Inklusion, aber

01:30:55.520 --> 01:30:57.640
so live treffen, ich vermisse zum Beispiel

01:30:57.640 --> 01:30:59.040
das beim Meetup, beim Django-Meetup, ne?

01:30:59.380 --> 01:31:01.400
Ich finde es viel schöner, euch da persönlich zu sehen.

01:31:01.500 --> 01:31:03.380
Absolut, also ich würde nicht sagen, dass man das

01:31:03.380 --> 01:31:05.480
nur noch macht, aber es wird immer

01:31:05.480 --> 01:31:07.600
Leute geben, wie uns drei, die da wirklich

01:31:07.600 --> 01:31:09.420
Spaß dran haben, die da gerne irgendwo hingehen,

01:31:09.860 --> 01:31:11.360
aber es gibt halt auch Leute, die halt einfach

01:31:11.360 --> 01:31:12.940
vollkommen zufrieden sind, das so auch als

01:31:12.940 --> 01:31:15.620
so ein Radio-Event oder so was,

01:31:15.740 --> 01:31:17.420
oder so ein Fernsehen halt irgendwie nebenher laufen

01:31:17.420 --> 01:31:19.520
zu lassen. Manchmal ist es weniger Commitment,

01:31:19.600 --> 01:31:21.020
es ist mehr so Leeching

01:31:21.020 --> 01:31:23.580
und die Frage ist halt, es gibt natürlich auch die Ausnahmen

01:31:23.580 --> 01:31:25.580
mit Leuten, die eigentlich gerne was machen

01:31:25.580 --> 01:31:27.480
würden, aber sich nicht trauen rauszugehen, das ist halt

01:31:27.480 --> 01:31:29.140
immer so schwierig, an welcher Seite

01:31:29.140 --> 01:31:31.660
setzt du da jetzt

01:31:31.660 --> 01:31:33.440
an und das irgendwie, ich habe noch nicht so

01:31:33.440 --> 01:31:34.860
rausgefunden, was denn da die ideale

01:31:34.860 --> 01:31:37.440
Hybridform von ist, wie man das machen kann, ob es

01:31:37.440 --> 01:31:39.400
verschiedene Sachen dazu geben muss vielleicht. Aber ich glaube also

01:31:39.400 --> 01:31:41.420
jetzt bei der Django-Community, glaube ich, gibt es so viele Leute, die

01:31:41.420 --> 01:31:43.180
da wirklich Spaß dran haben, die Tickets sind ja auch eigentlich immer

01:31:43.180 --> 01:31:45.440
ausverkauft, also die Vorort-Tickets, da muss man sich

01:31:45.440 --> 01:31:47.560
glaube ich keine Sorgen machen, dass man sich da selbst kannibalisiert,

01:31:47.680 --> 01:31:48.860
also das kann ich mir jetzt nicht vorstellen.

01:31:49.480 --> 01:31:51.260
Ich meine, beim Dago-Meetup

01:31:51.260 --> 01:31:52.120
jetzt

01:31:52.120 --> 01:31:54.880
werden wir auch, ich meine, es ist frei,

01:31:54.960 --> 01:31:56.580
wie es mit Corona und so weiter geht, aber

01:31:56.580 --> 01:31:58.900
ist es auch der Plan, dass wir jetzt vielleicht beim

01:31:58.900 --> 01:32:01.200
übernächsten Mal auch wieder das im Büro machen?

01:32:01.560 --> 01:32:03.080
Am nächsten Mal müssen wir mal schauen, wie das so klappt.

01:32:04.560 --> 01:32:05.280
Aber, dass man

01:32:05.280 --> 01:32:07.240
auch sagt, komm, wir stellen auf jeden Fall

01:32:07.240 --> 01:32:09.180
einfach eine Cam auf und wenn jemand halt Lust hat,

01:32:09.220 --> 01:32:11.160
sich irgendwie remote dazu zu schalten, dann machen wir das halt.

01:32:11.580 --> 01:32:12.980
Ich weiß auch nicht, ob das gut funktioniert,

01:32:12.980 --> 01:32:14.900
ob das irgendwie doof ist, ob dann vielleicht alle Leute eh sagen,

01:32:14.980 --> 01:32:17.220
boah, geil, vor Ort Bier trinken,

01:32:18.060 --> 01:32:18.860
keine Ahnung, mit Leuten

01:32:18.860 --> 01:32:20.560
reden, sozialisieren,

01:32:20.980 --> 01:32:22.980
das ist viel besser, das braucht man

01:32:22.980 --> 01:32:24.900
gar nicht, aber ich glaube, die Möglichkeit würde

01:32:24.900 --> 01:32:26.780
ich jetzt einfach schon anbieten, weil, wie gesagt, für manche

01:32:26.780 --> 01:32:28.780
Leute, die dann halt irgendwo von weiter weg kommen oder

01:32:28.780 --> 01:32:30.820
ja, keine Ahnung, wenn jemand in der Eifel oder

01:32:30.820 --> 01:32:32.880
sowas, also jetzt hier, ne, Kölner Raum,

01:32:32.960 --> 01:32:33.720
Eifel ist ja irgendwie so.

01:32:34.760 --> 01:32:35.520
Janz weit draußen.

01:32:36.480 --> 01:32:38.780
Ist dann halt teilweise vor allem abends ziemlich schwierig, hin und zurück zu kommen,

01:32:38.880 --> 01:32:40.420
wenn du irgendwie nicht extra ein Auto fährst oder so

01:32:40.420 --> 01:32:43.000
und einfach die Leute dann auch mitnehmen,

01:32:43.180 --> 01:32:44.640
mitzunehmen, wenn die da Spaß dran haben,

01:32:44.780 --> 01:32:46.740
das fände ich schon gut, das möglich zu machen.

01:32:46.740 --> 01:32:48.600
Wie gesagt, wir müssen mal gucken, welchen Modus wir nachher dann

01:32:48.600 --> 01:32:49.720
tatsächlich fahren, aber

01:32:49.720 --> 01:32:52.740
ich tippe mal, dass wir

01:32:52.740 --> 01:32:53.760
wahrscheinlich auf Hybrid gehen.

01:32:54.920 --> 01:32:56.680
Du warst auch in Berlin beim Django Meetup

01:32:56.680 --> 01:32:58.640
hast du erzählt. Ja genau, ich

01:32:58.640 --> 01:33:00.720
bin vom Philipp, der ist jetzt seit Januar

01:33:00.720 --> 01:33:02.580
der Organisator davon, angeschrieben worden

01:33:02.580 --> 01:33:04.000
über LinkedIn, hat mich gefunden und

01:33:04.000 --> 01:33:06.700
hatte mich nach ein bisschen Austausch gefragt

01:33:06.700 --> 01:33:08.380
und haben uns direkt sehr gut verstanden

01:33:08.380 --> 01:33:10.680
und dann habe ich

01:33:10.680 --> 01:33:11.780
einen Gastvortrag gemacht

01:33:11.780 --> 01:33:14.760
und habe ein kleines

01:33:14.760 --> 01:33:17.080
persönliches, very strongly opinionated

01:33:17.080 --> 01:33:18.140
Best of der DjangoCon.

01:33:18.480 --> 01:33:18.700
Okay.

01:33:20.500 --> 01:33:21.480
Zum Besten gegeben.

01:33:21.560 --> 01:33:22.340
Zum Besten gegeben, genau.

01:33:22.340 --> 01:33:23.760
Ich dachte, du hättest über Packages geredet, schade.

01:33:24.020 --> 01:33:24.180
Nein.

01:33:25.440 --> 01:33:28.040
Und ja, einfach quasi kurz erzählt, was die Talks sind

01:33:28.040 --> 01:33:30.600
und einfach den Leuten einfach so,

01:33:30.660 --> 01:33:32.120
hey, wenn du dich für dieses Thema interessierst,

01:33:32.180 --> 01:33:33.660
dann kann dieser Vortrag für dich interessant sein.

01:33:34.440 --> 01:33:36.460
Vorträge, die so ein bisschen mir vorbeigegangen sind,

01:33:36.520 --> 01:33:38.260
habe ich dann auch relativ offen dann gesagt,

01:33:38.340 --> 01:33:39.800
dass das bei mir persönlich vorbeigegangen ist.

01:33:39.920 --> 01:33:41.440
Aber mir ging es auch gar nicht darum,

01:33:41.520 --> 01:33:42.700
zu sagen, irgendwer ist doof oder so,

01:33:42.760 --> 01:33:44.140
sondern das waren wirklich so meine Eindrücke,

01:33:44.140 --> 01:33:48.180
die ich quasi beim Davor-Sitzen acht Stunden am Tag

01:33:48.180 --> 01:33:50.720
mir aufgenommen habe und einfach dann

01:33:50.720 --> 01:33:52.620
so, ja, keine Ahnung, also

01:33:52.620 --> 01:33:54.440
zum Beispiel gab es einen Talk über diese

01:33:54.440 --> 01:33:56.700
Interactive Shells, das ist einfach nicht meine Welt

01:33:56.700 --> 01:33:58.460
gewesen. Ich habe noch nie

01:33:58.460 --> 01:34:00.520
ansatzweise mit diesen

01:34:00.520 --> 01:34:02.580
Sachen arbeiten müssen und mehr

01:34:02.580 --> 01:34:04.620
als irgendwie mal mit der Django Shell mal kurz ein Model

01:34:04.620 --> 01:34:06.440
irgendwie aus der Datenbank holen, habe ich halt noch nicht gemacht,

01:34:06.520 --> 01:34:08.540
so ungefähr, ja. Und dann irgendwie zu sagen, ich will

01:34:08.540 --> 01:34:10.460
da irgendwie ein Betriebssystem drauf installieren oder sowas,

01:34:11.100 --> 01:34:12.600
es war einfach sehr weit

01:34:12.600 --> 01:34:14.540
weg. Was nicht heißt, dass der Talk

01:34:14.540 --> 01:34:16.460
schlecht war oder sowas, das hat mich halt als Webentwickler

01:34:16.460 --> 01:34:18.420
einfach nicht abgeholt.

01:34:18.460 --> 01:34:20.400
Was ja auch total legitim ist. Es ist ja auch schön, dass das breiten

01:34:20.400 --> 01:34:22.460
Wissen ist, aber das ist im Endeffekt

01:34:22.460 --> 01:34:24.060
das, was ich dann da so ein bisschen

01:34:24.060 --> 01:34:25.600
erzählt habe einfach.

01:34:26.460 --> 01:34:28.440
So hey, wenn ihr euch dafür interessiert, ist das cool

01:34:28.440 --> 01:34:30.180
und so, dass man halt dann, weil

01:34:30.180 --> 01:34:32.040
wenn man nicht dabei war, dann

01:34:32.040 --> 01:34:34.460
trotzdem vielleicht so ein paar Ideen

01:34:34.460 --> 01:34:36.380
hat, wenn es dann irgendwann mal auf YouTube kommt. Ich glaube, die wollten,

01:34:36.480 --> 01:34:38.200
dass die so die nächste Woche mal online stellen, die

01:34:38.200 --> 01:34:39.640
Talks. Ich weiß gar nicht, ob das schon gemacht wird.

01:34:39.640 --> 01:34:42.240
Ich glaube, ein Monat, das müsste ja genau dieses

01:34:42.240 --> 01:34:44.420
Wochenende sein. Wann war die JungleCon?

01:34:44.480 --> 01:34:46.640
2. Juni oder so? 2. bis 6. Juni, ja.

01:34:46.640 --> 01:34:48.600
Genau, und das haben wir ja. Ja, morgen ist es

01:34:48.600 --> 01:34:50.640
weiter. Also, genau, mal gucken.

01:34:50.720 --> 01:34:52.160
Ich werde das auf jeden Fall dann auch noch in die

01:34:52.160 --> 01:34:54.180
Shownotes packen, wenn sich das

01:34:54.180 --> 01:34:56.080
geben sollte. Sehr interessant.

01:34:56.600 --> 01:34:58.180
Ach so, ich habe auch noch einen Pick der Woche. Ja.

01:34:58.460 --> 01:35:00.300
Und zwar, ich weiß nicht, ob ihr TLDR kennt.

01:35:01.180 --> 01:35:02.360
Das gibt es auch auf PyPy

01:35:02.360 --> 01:35:03.720
und das ist eigentlich so ein Shell-Tool.

01:35:04.520 --> 01:35:06.300
Ihr kennt bestimmt Mand, ne? Linux-Command,

01:35:06.380 --> 01:35:08.280
um sich die Mand-Pages anzugucken

01:35:08.280 --> 01:35:10.180
von einem Command. Was macht denn das? Und TLDR

01:35:10.180 --> 01:35:11.780
geht einen bisschen anderen Weg, ist aber sehr, sehr geil.

01:35:11.960 --> 01:35:13.300
Also, ich stehe im Moment total drauf.

01:35:13.780 --> 01:35:15.360
Du kannst einfach das Gleiche machen wie bei Main, das heißt,

01:35:15.440 --> 01:35:17.900
gibst TLDR und Command-Name ein und es zeigt dir nicht

01:35:17.900 --> 01:35:20.080
die Main-Pages an, sondern die häufigsten

01:35:20.080 --> 01:35:21.780
vier oder fünf Use-Cases, wie man

01:35:21.780 --> 01:35:23.840
das Ding benutzt. Ah, okay, ja, das ist super.

01:35:24.000 --> 01:35:25.900
Das ist echt geil, weil du siehst halt direkt, wie man das benutzen

01:35:25.900 --> 01:35:27.660
kann, wenn man das benutzen will und musst nicht erst mal

01:35:27.660 --> 01:35:29.640
irgendwie in den Main-Pages gucken, wie war das und

01:35:29.640 --> 01:35:31.620
was heißt denn der Parameter? Nee, du siehst halt direkt

01:35:31.620 --> 01:35:33.820
irgendwie, wie ging das jetzt noch mal

01:35:33.820 --> 01:35:35.740
mit dem Grab oder mit dem Find und dann weißt du

01:35:35.740 --> 01:35:37.740
direkt, ah, so benutzt man das, ah, total super und

01:35:37.740 --> 01:35:39.760
cool. Richtig on short

01:35:39.760 --> 01:35:41.660
auf einer kleinen Seite, das ist auch meistens wirklich nur

01:35:41.660 --> 01:35:43.140
passt alles auf eine Seite, kannst du angucken.

01:35:43.700 --> 01:35:44.760
Mega geil, kann ich echt empfehlen.

01:35:45.460 --> 01:35:47.120
Das habe ich gefunden als Teil über die

01:35:47.120 --> 01:35:49.060
modernen Linux-Commands oder sowas.

01:35:49.180 --> 01:35:49.480
Ah, okay.

01:35:51.180 --> 01:35:52.520
Muss man vielleicht auch unbedingt nicht schon los.

01:35:52.980 --> 01:35:54.680
Das heißt tatsächlich, modern Linux,

01:35:55.400 --> 01:35:57.060
muss ich kurz gucken, ja genau, modern Unix, Entschuldigung,

01:35:57.160 --> 01:35:58.520
nicht Linux, es gibt ja einen Unterschied,

01:35:59.100 --> 01:36:00.820
von Ibrahimdiv

01:36:00.820 --> 01:36:02.960
und das ist sehr schön, gibt es die

01:36:02.960 --> 01:36:04.340
verschiedensten Erweiterungen.

01:36:04.340 --> 01:36:06.320
Okay, doch, das habe ich, genau, Watt, XR, ja, ja.

01:36:06.340 --> 01:36:08.320
Genau, genau, da ist auch TLDR dabei.

01:36:08.920 --> 01:36:10.300
Und viele, also tolle

01:36:10.300 --> 01:36:11.880
Implementierung auch in Rust und so, aber das ist

01:36:11.880 --> 01:36:14.400
ja, sehr nice, wenn man modernen Linux

01:36:14.400 --> 01:36:15.900
mag, Eudonics mag und

01:36:15.900 --> 01:36:18.440
ja, der TLDR ist auch auf PiPi tatsächlich und

01:36:18.440 --> 01:36:20.260
kann sich einfach

01:36:20.260 --> 01:36:21.200
an die Stelle ziehen und macht Spaß.

01:36:22.040 --> 01:36:24.500
Ja, sehr cool. Wunderbar. Muss ich auch mal angucken.

01:36:25.440 --> 01:36:25.840
Vorrangig.

01:36:26.280 --> 01:36:27.980
Ja, ich glaube, wir sind am Ende für diese Folge.

01:36:29.080 --> 01:36:30.280
Wir finden, dass du wieder da warst, Ronny.

01:36:30.520 --> 01:36:31.620
Vielen Dank, dass ich dir Spaß gemacht habe.

01:36:31.660 --> 01:36:32.480
Viel Spaß gemacht, ja.

01:36:32.480 --> 01:36:34.560
Ja, und ich würde euch

01:36:34.560 --> 01:36:36.540
sagen, hört uns, wann ihr uns hören wollt.

01:36:36.640 --> 01:36:38.420
Bleibt uns gewogen. Morgens, mittags, abends,

01:36:38.520 --> 01:36:39.440
nachts beim Fahrradfahren.

01:36:40.220 --> 01:36:42.560
Pass trotzdem ein bisschen auf und bleib gesund.

01:36:42.920 --> 01:36:44.220
Und ja, bis zum nächsten Mal.

01:36:44.280 --> 01:36:44.860
Ja, alles klar.

01:36:44.940 --> 01:36:45.200
Tschüss.

01:36:45.300 --> 01:36:45.960
Tschüss, ciao.
