WEBVTT

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

00:00:05.600 --> 00:00:08.860
Ja, wir nehmen wieder abends auf, Ausnahmsweise, muss ja auch mal sein.

00:00:09.400 --> 00:00:13.840
Schön, dass ihr wieder eingeschaltet habt. Was machen wir heute? Wir wollten ein bisschen was über Pakete besprechen.

00:00:14.740 --> 00:00:17.200
Der Jochen ist natürlich wieder dabei und wir haben wieder einen Gast. Hi Jochen.

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

00:00:20.320 --> 00:00:20.500
Hi.

00:00:20.980 --> 00:00:21.200
Hallo.

00:00:21.320 --> 00:00:21.900
Ich bin der Dominik.

00:00:23.400 --> 00:00:23.800
Ja.

00:00:23.800 --> 00:00:23.900
Ja.

00:00:24.520 --> 00:00:24.880
Ja.

00:00:25.680 --> 00:00:26.040
Ja.

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

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

00:00:31.940 --> 00:00:34.400
Nee, ich bin zu irgendwie nicht viel gekommen

00:00:34.400 --> 00:00:36.540
und habe auch keine Newsletter oder sonst irgendwas gelesen.

00:00:36.740 --> 00:00:37.260
Ja, okay.

00:00:38.840 --> 00:00:40.800
Also es kam tatsächlich der Copilot

00:00:40.800 --> 00:00:42.240
auf GitHub heute raus zum Coden.

00:00:42.340 --> 00:00:43.280
Das fand ich ja ganz interessant.

00:00:43.600 --> 00:00:45.220
Das ist jetzt keine Python-News, aber...

00:00:45.220 --> 00:00:47.680
Ja, man kann sich da anmelden, irgendwie eintragen

00:00:47.680 --> 00:00:49.320
in so einer Testerliste.

00:00:49.740 --> 00:00:51.820
Es gibt auch ein VS Code Plugin für die Leute, die das nutzen.

00:00:53.040 --> 00:00:53.960
Was macht das denn?

00:00:55.000 --> 00:00:56.160
Das ist ein Copilot für GitHub,

00:00:56.160 --> 00:00:57.740
der, wenn man Docstring schreibt,

00:00:57.740 --> 00:00:59.560
automatisch die Funktion baut, der für

00:00:59.560 --> 00:01:01.560
verschiedene Sprachen funktioniert. Sieht

00:01:01.560 --> 00:01:03.540
ziemlich nice aus. Also so die Demo,

00:01:03.640 --> 00:01:05.520
wenn das mal richtig gut funktioniert, irgendwie mit

00:01:05.520 --> 00:01:07.120
Machine Learning dahinter wahrscheinlich so ein bisschen,

00:01:07.620 --> 00:01:09.600
bleibt einfach ein coolen Docs-Ding und der

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

00:01:11.780 --> 00:01:13.440
Ja, ich habe das irgendwie, ich habe nur so

00:01:13.440 --> 00:01:15.260
ein Animated

00:01:15.260 --> 00:01:17.520
GIF auf Twitter oder so gesehen,

00:01:17.660 --> 00:01:19.540
wo da jemand bezeichnet Learn, was er gemacht hat und das

00:01:19.540 --> 00:01:21.640
sah schon gut aus, aber

00:01:21.640 --> 00:01:23.460
ehrlich gesagt, ich würde mir jetzt nicht trauen, dass ich

00:01:23.460 --> 00:01:25.580
sage, okay, das tut jetzt genau das, was ich gerne hätte.

00:01:25.700 --> 00:01:27.400
Das heißt, man muss den Code dann zumindest nochmal

00:01:27.400 --> 00:01:29.100
lesen. Ja, ich glaube, lesen muss man es natürlich schon.

00:01:29.220 --> 00:01:31.280
Aber es ist ja relativ super, um wahrscheinlich bekannte

00:01:31.280 --> 00:01:33.220
Patterns so zu verstehen. Und auch für

00:01:33.220 --> 00:01:35.220
Sprachen, die man vielleicht noch nicht so gut kann, dass man halt so

00:01:35.220 --> 00:01:37.260
grundsätzliche Konzepte da sehr schnell mitlernen

00:01:37.260 --> 00:01:38.960
kann. Das muss auch super interessant sein.

00:01:39.040 --> 00:01:40.820
Außerdem wird man gezwungen, Dokumentationen zu schreiben.

00:01:42.040 --> 00:01:43.380
Am Anfang, das ist vielleicht auch gar nicht

00:01:43.380 --> 00:01:45.420
so doof. Also es ist halt die Frage,

00:01:45.560 --> 00:01:47.220
wohin das hinschaut, wenn das halt nur KI-gesteuert ist,

00:01:47.280 --> 00:01:49.040
irgendwann, je nachdem, wie gut die Qualität

00:01:49.040 --> 00:01:51.420
heute ist, hier und da zu schreiben, was dann dabei rauskommt.

00:01:51.580 --> 00:01:52.320
Ja, das ist

00:01:52.320 --> 00:01:55.080
die durchschnittliche GitHub-Code-Qualität.

00:01:55.080 --> 00:01:56.300
Ich meine, wenn das jetzt, also

00:01:56.300 --> 00:01:57.960
kann ja eine Verbesserung sein.

00:01:58.660 --> 00:02:00.500
Ja, genau. Also ich finde es wirklich interessant

00:02:00.500 --> 00:02:01.720
und es sah auch echt top aus.

00:02:02.780 --> 00:02:04.140
Documentation-Driven-Development.

00:02:04.920 --> 00:02:05.700
Irgendwie so, ja.

00:02:07.040 --> 00:02:08.260
Specification-Driven-Development.

00:02:09.000 --> 00:02:10.500
Ja, also diese Beispiele auf der Seite vom

00:02:10.500 --> 00:02:12.520
Co-Piloten da, die sahen echt schick aus, auch in

00:02:12.520 --> 00:02:13.220
Python, die es da gab.

00:02:13.940 --> 00:02:16.640
Okay, ja, cool. Das ist auf jeden Fall eine Neuigkeit, ja.

00:02:19.440 --> 00:02:20.300
Ja, haben wir noch was?

00:02:20.400 --> 00:02:22.400
Ich glaube, was hast du gesagt? Python 306?

00:02:22.520 --> 00:02:24.520
Ja, egal. Ja, ist heute vor drei

00:02:24.520 --> 00:02:25.500
Tagen oder so rausgekommen.

00:02:26.300 --> 00:02:30.520
aber ich weiß ehrlich gesagt nicht mehr, was der Unterschied ist, weil mich die Wachsend gerickt

00:02:30.520 --> 00:02:34.300
waren. Voll gut, nur so eine Erinnerung, dass man das jetzt mal dann installieren könnte.

00:02:35.300 --> 00:02:38.520
Aber ansonsten. Nicht, was passiert. Dann würden wir doch direkt

00:02:38.520 --> 00:02:42.480
darauf vorgekommen. Oder fällt dir noch was ein, Ronny? Ist doch eigentlich eine gute Überleitung, so GitHub

00:02:42.480 --> 00:02:46.240
Packages. Stimmt. Packages, was ist denn das? Ein Package?

00:02:47.440 --> 00:02:50.520
Genau, das ist das Thema. Packaging.

00:02:51.620 --> 00:02:54.120
Was ist das? Wie macht man das denn? Wie spricht man das aus? Ganz wichtig.

00:02:54.120 --> 00:02:58.220
ein Paket. Also ihr wollt irgendwas machen wie ein Paket schreiben, ein Modul schreiben.

00:02:58.320 --> 00:03:02.140
Was ist ein Modul? Und das Veröffentlichen, vielleicht ist Veröffentlichen

00:03:02.140 --> 00:03:05.900
eine der Sachen, die man damit machen will mit einem Paket? Oder Wiederbenutzen vielleicht?

00:03:07.000 --> 00:03:10.400
Ja, selbst wenn man das nur irgendwie, wenn man einen Code miteinander teilen

00:03:10.400 --> 00:03:13.820
will, ist es wahrscheinlich schon eine ganz gute Idee unter Umständen das halt als Paket

00:03:13.820 --> 00:03:17.100
zu tun und nicht direkt als Repository.

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

00:03:21.300 --> 00:03:23.520
Ja, also

00:03:23.520 --> 00:03:25.340
es gibt unterschiedliche Arten von

00:03:25.340 --> 00:03:27.440
Paketen. Das ist vielleicht schon mal so

00:03:27.440 --> 00:03:29.020
ein grundsätzliches Ding, mit dem man anfangen kann.

00:03:29.740 --> 00:03:31.320
Also es gibt halt zum Beispiel, also oder

00:03:31.320 --> 00:03:33.440
weiß nicht, wo wir damit anfangen, oder mit der Geschichte

00:03:33.440 --> 00:03:35.720
von Packaging.

00:03:35.720 --> 00:03:37.480
Ja, okay, ich bin gespannt. Ich hätte gedacht, es gibt noch

00:03:37.480 --> 00:03:38.420
DCPIP, aber tschuldigung.

00:03:38.880 --> 00:03:41.320
Da gibt es auch Pakete.

00:03:43.800 --> 00:03:45.640
Vielleicht nur so ganz kurz, es ist halt leider verwirrend,

00:03:45.720 --> 00:03:47.620
es ist kompliziert und es ist komisch und es ist

00:03:47.620 --> 00:03:48.800
alles nicht so einfach in Python leider.

00:03:48.800 --> 00:03:50.980
Das hat glaube ich angefangen alles

00:03:50.980 --> 00:03:52.820
1998 mit Bistutils

00:03:52.820 --> 00:03:55.240
und

00:03:55.240 --> 00:03:57.520
das ist auch in der Standardbibliothek, ist da immer noch

00:03:57.520 --> 00:03:59.460
drin. Also es geht eigentlich darum, wie gibt ihr

00:03:59.460 --> 00:04:01.140
denn euer Programm irgendwem,

00:04:01.460 --> 00:04:02.440
der es dann ausführen möchte?

00:04:03.640 --> 00:04:04.820
Ja, wie kann man

00:04:04.820 --> 00:04:07.520
Code so verpacken,

00:04:07.740 --> 00:04:09.560
dass man das irgendwo anders dann halt einfach nur

00:04:09.560 --> 00:04:11.300
das Paket installiert und nicht den kompletten

00:04:11.300 --> 00:04:12.180
Repository.

00:04:12.320 --> 00:04:16.000
Oder der weiß

00:04:16.000 --> 00:04:17.240
gar nicht, was für einen Computer der hat oder

00:04:17.240 --> 00:04:19.640
verschiedene Herausforderungen.

00:04:19.860 --> 00:04:21.800
Genau, und dann irgendwann kamen halt Setup-Tools

00:04:21.800 --> 00:04:23.660
dazu, damit

00:04:23.660 --> 00:04:24.860
hat man dann zum ersten Mal...

00:04:24.860 --> 00:04:27.660
Wenn wir jetzt schon mal wieder bei Python-Podcast noch ein bisschen

00:04:27.660 --> 00:04:29.040
einsteigen, was ist denn Distutils?

00:04:29.780 --> 00:04:31.400
Genau, das ist halt so ein Ding, um

00:04:31.400 --> 00:04:32.700
zum Beispiel,

00:04:33.720 --> 00:04:34.980
ja, wenn man jetzt in einem

00:04:34.980 --> 00:04:37.500
Verzeichnis ist, wo man den Code hat, daraus irgendwas zu

00:04:37.500 --> 00:04:39.100
bauen, was man dann als Paket weitergeben kann.

00:04:40.900 --> 00:04:41.680
Und da

00:04:41.680 --> 00:04:43.500
kommen auch an so ein paar von den Begriffen, meine ich

00:04:43.500 --> 00:04:45.540
jedenfalls her, sowas wie S-Dist zum Beispiel

00:04:45.540 --> 00:04:47.480
oder BDist, aber ich weiß nicht,

00:04:47.540 --> 00:04:48.560
ob es da schon wirklich dabei war.

00:04:49.560 --> 00:04:51.800
Also S-Dist ist halt Source-Distribution

00:04:51.800 --> 00:04:53.200
und

00:04:53.200 --> 00:04:55.300
sagt eigentlich im Grunde, dass man halt nur

00:04:55.300 --> 00:04:57.000
den Code irgendwie ins Paket packt,

00:04:57.260 --> 00:04:59.260
also den Source ins Paket packt und dann halt

00:04:59.260 --> 00:05:01.420
auf dem Zielsystem halt eventuell noch,

00:05:01.620 --> 00:05:03.280
wenn da Extensions, zum Beispiel C-Extensions

00:05:03.280 --> 00:05:05.340
oder so drin sind, muss man die dann halt

00:05:05.340 --> 00:05:06.920
noch bauen. Also es ist halt noch nicht gebaut,

00:05:07.120 --> 00:05:09.140
es sind nicht die pyc-Files, sondern

00:05:09.140 --> 00:05:10.660
es sind nur tatsächlich die

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

00:05:12.840 --> 00:05:15.160
und weil

00:05:15.160 --> 00:05:17.020
die PYC-Files, das hängt auch von

00:05:17.020 --> 00:05:19.320
Interpreter-Versionen ab und so.

00:05:20.320 --> 00:05:21.380
Und dann gibt es halt die

00:05:21.380 --> 00:05:23.500
BDIS, also die Build Distribution

00:05:23.500 --> 00:05:24.720
Pakete.

00:05:25.560 --> 00:05:27.360
Und das sind halt irgendwie TAR-Balls

00:05:27.360 --> 00:05:29.280
vor allen Dingen gewesen oder manchmal auf Windows

00:05:29.280 --> 00:05:30.700
glaube ich auch ZIP-Files, weiß nicht genau.

00:05:32.020 --> 00:05:33.720
Aber es ist noch kein richtiges Paketformat.

00:05:33.820 --> 00:05:35.500
Und dann kamen irgendwann Setup-Tools dazu

00:05:35.500 --> 00:05:37.400
und weiß nicht, irgendwann

00:05:37.400 --> 00:05:39.880
Anfang der Nullerjahre, keine Ahnung wann genau.

00:05:40.700 --> 00:05:41.740
Und da war das Ziel

00:05:41.740 --> 00:05:42.980
halt dann so ein Paketformat zu haben.

00:05:43.080 --> 00:05:44.440
Das hatte man dann mit X auch.

00:05:45.160 --> 00:05:48.380
aber das war es, was auch mehr oder weniger ein Zipfel war

00:05:48.380 --> 00:05:50.460
und inzwischen sind es Wheels

00:05:50.460 --> 00:05:51.700
das ist auch mehr oder weniger ein Zipfel

00:05:51.700 --> 00:05:54.880
aber

00:05:54.880 --> 00:05:56.600
so ein bisschen

00:05:56.600 --> 00:05:58.380
sind die Dinge schon anders, also Wheels sind jetzt

00:05:58.380 --> 00:06:00.660
deutlich schneller, kann man deutlich schneller auspacken

00:06:00.660 --> 00:06:01.820
und verwenden als

00:06:01.820 --> 00:06:03.700
X, X werden eigentlich nicht mehr verwendet

00:06:03.700 --> 00:06:06.680
dann gab es irgendwie eine Zeit, in der ganz viel rumgeforkt

00:06:06.680 --> 00:06:08.600
worden ist und dann sind Dinge

00:06:08.600 --> 00:06:10.420
auch wieder zurück nach Setup Tools gegangen

00:06:10.420 --> 00:06:12.480
und Setup Tools ist aber nie Teil der

00:06:12.480 --> 00:06:13.500
Standardbibliothek geworden

00:06:13.500 --> 00:06:18.020
Distutils war es dann aber auch schon immer schon lange

00:06:18.020 --> 00:06:19.880
so dass heute ist es halt so

00:06:19.880 --> 00:06:22.300
es gibt halt Dinge, die macht Distutils

00:06:22.300 --> 00:06:23.420
wenn man ein Paket baut

00:06:23.420 --> 00:06:26.200
es gibt Dinge, da benutzt man Setup-Tools für

00:06:26.200 --> 00:06:27.700
was ein bisschen komisch ist, weil man

00:06:27.700 --> 00:06:30.320
das ist halt nicht in der Standardbibliothek, man muss dafür Setup-Tools installieren

00:06:30.320 --> 00:06:32.380
und Setup-Tools hat dann wiederum Plugins

00:06:32.380 --> 00:06:34.560
für bestimmte Sachen, wie zum Beispiel wenn man Wheels bauen will

00:06:34.560 --> 00:06:36.360
dann gibt es halt das Wheels-Paket

00:06:36.360 --> 00:06:38.480
das man dann noch installieren kann und das bringt dann halt

00:06:38.480 --> 00:06:39.900
ein Plugin für Setup-Tools mit

00:06:39.900 --> 00:06:42.060
womit man dann halt auch Wheels bauen kann

00:06:42.060 --> 00:06:44.580
Ja, okay

00:06:44.580 --> 00:06:47.000
Das klingt aber so, als geht das halt nicht

00:06:47.000 --> 00:06:48.500
out of the box und da brauchen wir schon noch andere Sachen

00:06:48.500 --> 00:06:50.580
Ohne C-Compiler geht das wahrscheinlich dann nicht

00:06:50.580 --> 00:06:52.680
Doch, also wenn man

00:06:52.680 --> 00:06:54.080
zum Beispiel einfach nur

00:06:54.080 --> 00:06:57.020
reine Python, also wenn der

00:06:57.020 --> 00:06:58.720
Code, den man geschrieben hat, einfach nur

00:06:58.720 --> 00:07:00.440
Python-Code ist, dann

00:07:00.440 --> 00:07:02.560
braucht man eigentlich sonst nichts zu machen

00:07:02.560 --> 00:07:04.740
dann ist auch eine Source-Distribution

00:07:04.740 --> 00:07:06.140
im Grunde schon

00:07:06.140 --> 00:07:07.240
ausreichend

00:07:07.240 --> 00:07:10.460
aber wenn man jetzt halt C-Extensions dabei hat oder sonst

00:07:10.460 --> 00:07:40.440
und Jochen unterhalten sich über die Programmiersprache Python

00:07:40.460 --> 00:07:41.900
auf einer Maschine mit M1 oder so,

00:07:42.580 --> 00:07:44.560
damit ich das mal da bauen kann, weil ansonsten kann man

00:07:44.560 --> 00:07:46.620
halt keine Wheels bauen. Das geht halt nicht. Das kannst du nicht auf einer

00:07:46.620 --> 00:07:48.720
Intel-Maschine

00:07:48.720 --> 00:07:48.960
machen.

00:07:51.160 --> 00:07:52.640
Und das ist alles so ein bisschen hässlich.

00:07:53.020 --> 00:07:53.640
Und, ah ja, Gott.

00:07:55.500 --> 00:07:55.840
Ja.

00:07:56.740 --> 00:07:57.800
Es ist kompliziert, leider.

00:07:58.380 --> 00:08:00.460
Okay, dann habe ich Wheels gebaut und die kann ich

00:08:00.460 --> 00:08:02.420
dann irgendwie auf PyPI stellen und

00:08:02.420 --> 00:08:04.520
das wäre heute der Weg. Aber nicht nur die

00:08:04.520 --> 00:08:06.180
Wheels, sondern auch Source-Distribution

00:08:06.180 --> 00:08:08.360
und Build-Distribution kann man auch auf

00:08:08.360 --> 00:08:09.680
PyPI stellen.

00:08:10.460 --> 00:08:13.140
und passiert auch oft. Und oft muss man es dann auch selber

00:08:13.140 --> 00:08:14.820
kompilieren noch, wenn es halt keine Wheels gibt.

00:08:14.920 --> 00:08:17.040
Zum Beispiel, was mir eben,

00:08:17.180 --> 00:08:18.960
ich habe jetzt auch hier so ein M1 weg und das

00:08:18.960 --> 00:08:21.020
passiert regelmäßig, dass ich irgendwie Pandas oder

00:08:21.020 --> 00:08:23.100
NumPy und dann ein Großteil des Zeugs unten

00:08:23.100 --> 00:08:25.160
drunter muss halt dann noch kompiliert werden

00:08:25.160 --> 00:08:27.080
und das dauert halt relativ lang. Zum Beispiel, wenn

00:08:27.080 --> 00:08:29.320
jetzt dann sowas wie Python 3.9.6

00:08:29.320 --> 00:08:30.840
irgendwie rausgekommen ist,

00:08:31.200 --> 00:08:33.020
dann gibt es halt für Pandas und NumPy noch keine

00:08:33.020 --> 00:08:35.080
Wheels und dann wird dann halt schön selber

00:08:35.080 --> 00:08:37.100
kompiliert, was dann halt mal ein paar Minuten

00:08:37.100 --> 00:08:37.520
dauern kann.

00:08:37.520 --> 00:08:40.000
und

00:08:40.000 --> 00:08:43.160
einem zur Verzweiflung treibt,

00:08:43.320 --> 00:08:45.220
wenn irgendwelche Details in dieser Compile-Pipeline

00:08:45.220 --> 00:08:47.240
und irgendwann, wenn der Vortragskompiler nicht richtig

00:08:47.240 --> 00:08:49.080
ist oder keine Ahnung, irgendwas

00:08:49.080 --> 00:08:50.100
bei der Emulation von

00:08:50.100 --> 00:08:53.320
bei der, bei der, das Intel-Prozessor

00:08:53.320 --> 00:08:54.880
nicht richtig funktioniert oder so und dann hat man

00:08:54.880 --> 00:08:56.940
sehr, sehr komische Fehlermeldungen aus den Tiefen

00:08:56.940 --> 00:08:58.640
von irgendwelchen Compiler-Toolchains.

00:08:58.700 --> 00:09:00.520
Ja, also tatsächlich auf

00:09:00.520 --> 00:09:03.180
anderen Systemen bauen zu

00:09:03.180 --> 00:09:05.220
wollen ist dann, oder an neuen Versionen

00:09:05.220 --> 00:09:06.540
ist dann vielleicht immer nicht ganz so einfach.

00:09:06.540 --> 00:09:08.580
haben. Aber das Gute ist, dass

00:09:08.580 --> 00:09:10.540
man ja tatsächlich auch, wenn man jetzt, vor allem wenn man

00:09:10.540 --> 00:09:12.600
jetzt mal anfängt, dass man ja dann doch eher in der

00:09:12.600 --> 00:09:14.580
reinen Python-Welt bleibt und dass man dann das auch

00:09:14.580 --> 00:09:16.540
relativ entspannt einfach

00:09:16.540 --> 00:09:18.920
ohne irgendwelche großen Probleme

00:09:18.920 --> 00:09:20.680
die Packages erstens bauen kann

00:09:20.680 --> 00:09:22.600
und zweitens dann auch die dann auch wieder leicht

00:09:22.600 --> 00:09:23.320
installieren kann.

00:09:25.580 --> 00:09:26.580
Also man kann sich relativ

00:09:26.580 --> 00:09:28.580
viel von diesem Complexities-Overhead sparen, indem man

00:09:28.580 --> 00:09:30.780
quasi keine externen Libraries

00:09:30.780 --> 00:09:31.820
verwendet oder sowas.

00:09:32.460 --> 00:09:34.400
Genau, ja. Also reines

00:09:34.400 --> 00:09:36.480
Python ist eigentlich relativ

00:09:36.480 --> 00:09:38.440
einfach dann. Also das Einzige, was

00:09:38.440 --> 00:09:40.180
halt dann mit in den

00:09:40.180 --> 00:09:42.380
Build Distributions drin ist,

00:09:42.420 --> 00:09:43.400
sind halt die PyC-Files.

00:09:44.240 --> 00:09:45.780
Die was? PyC.

00:09:46.520 --> 00:09:48.340
Ansonsten musst du die halt noch einmal von

00:09:48.340 --> 00:09:50.480
Py nach PyC verwandeln, aber das ist auch alles...

00:09:51.600 --> 00:09:52.380
Das merkt man heutzutage

00:09:52.380 --> 00:09:52.860
gar nicht mehr.

00:09:55.000 --> 00:09:56.420
Und dann hat man

00:09:56.420 --> 00:09:58.440
so ein Paket und dann hat man das auf PyPI und dann kann

00:09:58.440 --> 00:09:59.600
jeder das

00:09:59.600 --> 00:10:02.100
laden. Ja. Über

00:10:02.100 --> 00:10:03.840
PIP oder sowas. Genau.

00:10:03.840 --> 00:10:04.120
Ja.

00:10:06.480 --> 00:10:09.300
Ja, und die ganze Dokumentation

00:10:09.300 --> 00:10:10.840
dazu, ich habe

00:10:10.840 --> 00:10:13.080
mich ehrlich gesagt nicht wirklich

00:10:13.080 --> 00:10:15.060
vorbereitet, aber ich habe einmal

00:10:15.060 --> 00:10:15.440
geguckt,

00:10:18.420 --> 00:10:19.480
was gibt es denn,

00:10:20.320 --> 00:10:21.060
habe ich irgendwelche Bücher

00:10:21.060 --> 00:10:22.780
zufällig, wo was drinsteht über Packaging

00:10:22.780 --> 00:10:25.000
und da gab es irgendwie ein Buch

00:10:25.000 --> 00:10:26.900
Python Expert Programming, da war ein bisschen was drin,

00:10:26.960 --> 00:10:28.780
ein Kapitel und

00:10:28.780 --> 00:10:31.260
ansonsten

00:10:31.260 --> 00:10:35.160
ja, hier klingeln

00:10:35.160 --> 00:10:37.180
Dinge. Das ist immer sowas,

00:10:37.320 --> 00:10:39.200
Telefon auf Flugmodus stellen.

00:10:40.080 --> 00:10:40.520
Ja, ja.

00:10:40.520 --> 00:10:43.120
Wir müssen das alte QP mit dem Hintergrund,

00:10:43.140 --> 00:10:43.740
du kennst das noch.

00:10:45.260 --> 00:10:46.080
Oh ja, das ist lange her.

00:10:48.160 --> 00:10:49.420
Was sind hier der Flugmodus?

00:10:50.040 --> 00:10:50.540
Da ist er doch.

00:10:50.720 --> 00:10:50.820
So.

00:10:52.840 --> 00:10:53.060
Ja.

00:10:56.200 --> 00:10:56.600
Genau.

00:10:56.600 --> 00:10:57.460
Also die

00:10:57.460 --> 00:11:00.340
autoritative Quelle für Dokumentation über

00:11:00.340 --> 00:11:01.820
dieses ganze Packaging-Thema

00:11:01.820 --> 00:11:02.660
ist

00:11:02.660 --> 00:11:05.460
packaging.python.org

00:11:05.460 --> 00:11:07.580
also die Python Packaging

00:11:07.580 --> 00:11:09.840
Authority, PyPA nennt die sich auch.

00:11:10.820 --> 00:11:11.560
Und da kann man

00:11:11.560 --> 00:11:13.520
das alles, also die ganzen Details, die ganzen fiesen

00:11:13.520 --> 00:11:15.360
Details, die stehen da alle drin. Und

00:11:15.360 --> 00:11:17.220
was mich sehr gefreut hat, das ist

00:11:17.220 --> 00:11:19.420
genauso aufgebaut wie

00:11:19.420 --> 00:11:21.560
es gab da ja, das hatten wir das letzte Mal

00:11:21.560 --> 00:11:22.100
auch schon von

00:11:22.100 --> 00:11:25.460
documentation.divio.com

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

00:11:27.340 --> 00:11:29.020
Also es gibt auch einen schönen

00:11:29.020 --> 00:11:31.200
Vortrag eben

00:11:31.200 --> 00:11:32.440
von Daniele

00:11:32.440 --> 00:11:35.080
Proshida über

00:11:35.080 --> 00:11:37.540
wie schreibt man eigentlich

00:11:37.540 --> 00:11:39.580
Dokumentationen sinnvollerweise und der teilt das halt

00:11:39.580 --> 00:11:41.520
auf in, naja, es gibt halt

00:11:41.520 --> 00:11:43.620
unterschiedliche Quadranten und

00:11:43.620 --> 00:11:45.060
unterschiedliche Zielrichtungen und

00:11:45.060 --> 00:11:47.320
dann schreibt man halt Tutorials, How-to-Guides,

00:11:47.420 --> 00:11:49.700
Explanations oder Reference-Documentation

00:11:49.700 --> 00:11:51.540
und das kann man alles mit

00:11:51.540 --> 00:11:51.900
Pleasure.

00:11:53.320 --> 00:11:55.480
Er hat mit dem Vortrag Programming for Pleasure gemacht.

00:11:55.540 --> 00:11:57.440
Genau, das war dieses Jahr, das war glaube ich hier

00:11:57.440 --> 00:11:59.740
wo er über Dokumentationen Vortrag gemacht hat,

00:11:59.760 --> 00:12:00.660
war 2017 oder so.

00:12:01.200 --> 00:12:04.500
Kann man sich auch angucken, haben wir letztes Mal schon verlinkt in der

00:12:04.500 --> 00:12:08.160
JagoCon Europe Episode, sehr empfehlenswert.

00:12:08.340 --> 00:12:10.260
Und was ich halt gesehen habe, ist, dass Pipey

00:12:10.260 --> 00:12:14.820
hält sich genau da dran. Da sieht man halt, genau, sie machen Tutorials,

00:12:14.860 --> 00:12:17.640
dann machen sie How-To-Guides und dann machen sie irgendwie Discussions

00:12:17.640 --> 00:12:20.840
und dann gibt es dann halt irgendwie auch noch eine Referenz-Dokumentation.

00:12:21.580 --> 00:12:24.300
Also sie haben das genau so aufgeteilt und sich daran orientiert,

00:12:24.340 --> 00:12:25.180
das fand ich irgendwie...

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

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

00:12:33.940 --> 00:12:35.020
Genau, braucht man das alles gar nicht.

00:12:35.240 --> 00:12:36.340
So ein Quatsch, Dokumentation.

00:12:38.040 --> 00:12:38.900
Ich versuche tatsächlich

00:12:38.900 --> 00:12:41.000
alle Sachen, die ich wahrscheinlich wieder vergesse,

00:12:41.780 --> 00:12:43.060
so aufzuschreiben, dass

00:12:43.060 --> 00:12:44.960
da auch jemand anders, der das vielleicht liest,

00:12:45.060 --> 00:12:46.640
dann auch noch machen könnte.

00:12:46.640 --> 00:12:47.980
Man ist selber in einem halben Jahr und freut sich.

00:12:47.980 --> 00:12:48.400
Ja, genau.

00:12:50.260 --> 00:12:51.120
Das ist immer ganz nett.

00:12:51.820 --> 00:12:54.540
Man ist auch schneller beim zweiten Mal, wenn man halt einfach seine eigene Doku lesen kann

00:12:54.540 --> 00:12:56.480
und sich nicht immer komplett von neuem irgendwo

00:12:56.480 --> 00:12:57.060
einarbeiten muss.

00:12:57.360 --> 00:13:00.520
Ich finde tatsächlich, dass man auch mit inneren Dokumentationen sehr viel gewinnen kann.

00:13:00.520 --> 00:13:30.500
Ja.

00:13:30.520 --> 00:13:31.060
ein bisschen faul.

00:13:32.620 --> 00:13:34.560
Aber das ist eigentlich gar nicht das Thema.

00:13:35.260 --> 00:13:35.600
Ja, aber

00:13:35.600 --> 00:13:37.220
ich meine immer

00:13:37.220 --> 00:13:40.580
ja, also wobei, ich weiß nicht,

00:13:40.640 --> 00:13:42.560
bei Dokumentationen innerhalb von

00:13:42.560 --> 00:13:44.340
Source Code oder Kommentare

00:13:44.340 --> 00:13:46.640
in Source Code finde ich immer ein bisschen schwierig.

00:13:46.800 --> 00:13:48.320
Also es kommt darauf an, was es ist. Manchmal auch natürlich

00:13:48.320 --> 00:13:50.340
stellen, wo das total sinnvoll ist, aber manchmal ist es halt auch echt,

00:13:50.820 --> 00:13:52.480
weil das tendiert auch dazu, dann irgendwie so

00:13:52.480 --> 00:13:54.440
auseinanderzulaufen. Also warum man so

00:13:54.440 --> 00:13:56.360
bestimmte Sachen macht, die irgendwie komisch aussehen, dass das vielleicht

00:13:56.360 --> 00:13:57.320
manchmal gar nicht so schlecht ist.

00:13:57.320 --> 00:13:59.380
Nee, genau, genau. Durchaus sinnvoll.

00:13:59.380 --> 00:13:59.660
aber

00:13:59.660 --> 00:14:02.240
ja, von

00:14:02.240 --> 00:14:03.700
wie heißt der noch?

00:14:07.120 --> 00:14:07.520
Dingsdar

00:14:07.520 --> 00:14:08.640
Dingsdar

00:14:08.640 --> 00:14:10.360
CleanCode

00:14:10.360 --> 00:14:11.840
Uncle Bob

00:14:11.840 --> 00:14:15.100
der sagt ja immer, das erste was er macht, wenn du durch Code gehst, ist halt

00:14:15.100 --> 00:14:16.100
die ganzen Kommentare entscheiden

00:14:16.100 --> 00:14:19.620
weil sie verwirren nur

00:14:19.620 --> 00:14:21.220
weil, ja

00:14:21.220 --> 00:14:22.920
aber es kommt halt

00:14:22.920 --> 00:14:25.340
drauf an, also ich meine, es gibt halt so die Fälle

00:14:25.340 --> 00:14:27.360
wo es klar ist, dass es verwirrend ist, aber es gibt

00:14:27.360 --> 00:14:28.880
halt auch die Fälle, wo es total sinnvoll ist

00:14:28.880 --> 00:14:31.560
Ich finde, das kann sehr viel Vertrauen schaffen.

00:14:31.720 --> 00:14:33.060
Also wenn ich ein Package mir angucke

00:14:33.060 --> 00:14:35.380
und ich überlege,

00:14:35.440 --> 00:14:37.660
ob ich das nutzen möchte und vielleicht auch produktiv nutzen möchte

00:14:37.660 --> 00:14:39.400
und da ist halt gar nichts dokumentiert,

00:14:39.480 --> 00:14:41.500
dann habe ich direkt schon mal so ein großes Fragezeichen im Kopf,

00:14:41.580 --> 00:14:42.440
ob ich das wirklich nutzen möchte.

00:14:42.440 --> 00:14:44.580
Wenn das gut strukturiert ist, gut dokumentiert ist,

00:14:44.620 --> 00:14:45.740
dass das lesbarer Code ist,

00:14:46.320 --> 00:14:48.520
vernünftig aufgeräumt ist, das macht schon echt viel aus.

00:14:49.100 --> 00:14:49.220
Ja.

00:14:49.980 --> 00:14:52.320
Ein bisschen moderner Stil. Wir haben ja alle so einen gewissen Taste

00:14:52.320 --> 00:14:52.860
mittlerweile.

00:14:55.060 --> 00:14:55.420
Ja.

00:14:57.080 --> 00:14:58.040
Ja, aber wir

00:14:58.040 --> 00:15:00.660
Wir sind gerade bei Dokumentation gelandet,

00:15:00.780 --> 00:15:02.280
aber wir sind ja über Packaging

00:15:02.280 --> 00:15:02.960
dahin gekommen.

00:15:05.080 --> 00:15:06.000
Wir haben jetzt gesagt,

00:15:06.140 --> 00:15:07.500
Setup-Tools des Utils,

00:15:08.960 --> 00:15:09.760
PIP,

00:15:10.920 --> 00:15:12.300
es gibt noch irgendwie dann so bestimmte Sachen,

00:15:12.400 --> 00:15:13.840
die man dann braucht, was wie eine Setup-Pi,

00:15:14.120 --> 00:15:16.740
oder ich habe gesehen, man kann sowas auch mit Poetry und dann Pi-Project-Hummel

00:15:16.740 --> 00:15:18.080
jetzt so ein bisschen basic

00:15:18.080 --> 00:15:18.940
einrichten.

00:15:20.600 --> 00:15:22.900
Das ist doch mal...

00:15:22.900 --> 00:15:24.240
Ja, also wie man jetzt

00:15:24.240 --> 00:15:26.160
zum Beispiel die Metadaten zu einem

00:15:26.160 --> 00:15:27.300
Paket.

00:15:27.320 --> 00:15:29.840
Ah, Moment, man braucht Metadatentime-Paket natürlich.

00:15:30.000 --> 00:15:31.720
Ja, ja, also zum Beispiel so was simples wie

00:15:31.720 --> 00:15:32.880
wie soll das Paket heißen?

00:15:33.040 --> 00:15:34.720
Das muss man ja irgendwo hinschreiben.

00:15:35.740 --> 00:15:37.720
Und da gibt es halt mehrere Methoden.

00:15:40.340 --> 00:15:41.780
Ja, das, was man,

00:15:41.940 --> 00:15:43.480
ich glaube, das ist auch das älteste Setup-Py.

00:15:44.080 --> 00:15:45.740
Also da ruft man halt Setup auf und

00:15:45.740 --> 00:15:47.500
irgendwie die ganzen Parameter sind im Grunde alles

00:15:47.500 --> 00:15:49.700
mehr oder weniger Argumente

00:15:49.700 --> 00:15:50.260
dieser Funktion.

00:15:52.580 --> 00:15:53.800
Das ist sehr dynamisch und so.

00:15:53.880 --> 00:15:55.560
Da kann man natürlich tolle Sachen machen, da kann man dann

00:15:55.560 --> 00:15:57.400
so Sachen reinschreiben, wie man holt sich

00:15:57.400 --> 00:15:59.140
die Version von dem Paket

00:15:59.140 --> 00:16:01.460
aus irgendeiner Init-Py in dem Paket

00:16:01.460 --> 00:16:02.380
selber oder solche Sachen.

00:16:03.280 --> 00:16:04.140
Aber auf der anderen Seite

00:16:04.140 --> 00:16:06.040
macht das halt

00:16:06.040 --> 00:16:09.300
der Infrastruktur drunter

00:16:09.300 --> 00:16:10.940
das sehr, sehr schwer, dass das so dynamisch ist.

00:16:12.140 --> 00:16:12.860
Und...

00:16:12.860 --> 00:16:15.180
Bei Project Home ist das ja auch ähnlich.

00:16:15.320 --> 00:16:17.340
Es geht ja mit Poetry, wenn man damit arbeitet, auch so

00:16:17.340 --> 00:16:19.300
Bildbefehle. Und da kann man ja auch die

00:16:19.300 --> 00:16:21.480
Version direkt reinschreiben und einen kleinen Doxing reinschreiben

00:16:21.480 --> 00:16:23.020
und den Namen reinschreiben und so ein bisschen

00:16:23.020 --> 00:16:24.900
sich überlegen, was denn da

00:16:24.900 --> 00:16:26.220
stehen soll in dem Paket.

00:16:26.500 --> 00:16:29.160
Ja, ich weiß jetzt gar nicht so ganz genau, wie das bei Poetry

00:16:29.160 --> 00:16:31.240
dann tatsächlich darunter funktioniert. Also ich habe es schon benutzt,

00:16:31.680 --> 00:16:32.980
aber tatsächlich ist das für mich so ein bisschen

00:16:32.980 --> 00:16:35.020
eine Blackbox irgendwie. Poetry

00:16:35.020 --> 00:16:37.100
tut dann irgendwas und dann fällt ein Paket

00:16:37.100 --> 00:16:39.260
raus. Also der

00:16:39.260 --> 00:16:43.160
Standardweg, wie man das mit

00:16:43.660 --> 00:16:45.140
Setup-Tools

00:16:45.140 --> 00:16:47.280
macht, ist dann setup.cfg

00:16:47.280 --> 00:16:51.140
wo man dann halt so

00:16:51.140 --> 00:16:52.640
statische Metadaten drin hat

00:16:52.640 --> 00:16:55.020
und keine Setup.py mehr verwendet.

00:16:55.080 --> 00:16:57.000
Das ist auch das, was empfohlen wird. Also die ganzen Leute,

00:16:57.100 --> 00:16:58.880
die sich da um dieses Python-Packaging-Ding

00:16:58.880 --> 00:17:00.960
kümmern, die sagen alle, oh mein Gott, bitte, bitte,

00:17:01.000 --> 00:17:02.960
bitte verwendet Setup.cfg,

00:17:03.060 --> 00:17:04.520
das macht uns das Leben so viel einfacher.

00:17:05.060 --> 00:17:07.000
Setup.py ist für uns ein Riesenproblem

00:17:07.000 --> 00:17:09.000
eigentlich. Also ich glaube, Setup.cfg

00:17:09.000 --> 00:17:11.160
ist viel davon, ist auch in PyProject.toml

00:17:11.160 --> 00:17:12.740
da gewandert. Genau, also

00:17:12.740 --> 00:17:14.980
PyProject.toml ist mehr oder weniger ein neues Format

00:17:14.980 --> 00:17:17.120
dafür, ja. Und das ist halt die aktuellste

00:17:17.120 --> 00:17:19.100
Art, wie man die Metadaten

00:17:19.100 --> 00:17:21.020
sozusagen erfasst. Und das ist halt auch

00:17:21.020 --> 00:17:22.460
Standard, ich glaube das ist

00:17:22.460 --> 00:17:22.820
PEP

00:17:22.820 --> 00:17:26.040
518 oder sowas,

00:17:26.240 --> 00:17:27.240
glaube ich.

00:17:28.660 --> 00:17:30.360
Ja, also das wandert jetzt alles in

00:17:30.360 --> 00:17:32.340
PyProjectHummel rein und dann kann man das mit

00:17:32.340 --> 00:17:34.360
Poetry, wertet das dann halt irgendwie aus und baut das dann.

00:17:34.780 --> 00:17:36.460
Ob Poetry dann nochmal Setup-Tools

00:17:36.460 --> 00:17:38.600
unten drunter verwendet, weiß ich jetzt ehrlich gesagt gar nicht.

00:17:39.060 --> 00:17:39.880
Aber es gibt dann auch mehr Tools.

00:17:39.880 --> 00:17:41.780
Also Poetry

00:17:41.780 --> 00:17:43.740
gibt es, es gibt aber auch, ich glaube das ist

00:17:43.740 --> 00:17:45.820
habe ich in letzter Zeit

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

00:17:49.140 --> 00:17:49.960
Oh, Flit?

00:17:49.960 --> 00:17:53.360
und es liest halt auch PyProjectHummel aus

00:17:53.360 --> 00:17:54.820
und baut halt Pakete

00:17:54.820 --> 00:17:57.480
und vor allen Dingen benutzt es halt

00:17:57.480 --> 00:17:59.200
nicht, glaube ich, nicht SetupTools,

00:17:59.300 --> 00:18:01.320
sondern macht das alles selber und es benutzt auch

00:18:01.320 --> 00:18:03.220
nicht Vine, um dann hinterher die Pakete

00:18:03.220 --> 00:18:04.440
hochzuladen, sondern macht das auch selber.

00:18:04.820 --> 00:18:06.260
Das ist halt so eine komplett integrierte Geschichte.

00:18:07.380 --> 00:18:09.360
Was heißt Flit? Das Symbol ist ein

00:18:09.360 --> 00:18:11.160
Kolibri. Ich frage mich, ob das auch Flit tut.

00:18:12.400 --> 00:18:13.420
Ich weiß jetzt nicht, wo der Name

00:18:13.420 --> 00:18:14.420
herkommt. Keine Ahnung.

00:18:15.320 --> 00:18:17.440
Also ein einfaches Modul, um Packages auf PyPy

00:18:17.440 --> 00:18:18.460
zu bekommen.

00:18:18.460 --> 00:18:20.640
Kenne ich auch nicht.

00:18:21.060 --> 00:18:21.560
Klingt spannend.

00:18:21.760 --> 00:18:24.060
Ich habe es jetzt letztens davon gehört,

00:18:24.920 --> 00:18:26.000
also ich hatte schon mal vorher davon gehört,

00:18:26.080 --> 00:18:27.080
aber jetzt nochmal ausführlicher

00:18:27.080 --> 00:18:29.720
in einer Podcast-Episode

00:18:29.720 --> 00:18:31.560
Talk Python to Me, wo

00:18:31.560 --> 00:18:33.600
nicht Talk Python to Me, haha, falsch,

00:18:34.000 --> 00:18:35.180
Test & Code, glaube ich,

00:18:36.260 --> 00:18:38.000
Brian Ocken, der hatte

00:18:38.000 --> 00:18:38.820
da Brad Cannon

00:18:38.820 --> 00:18:41.360
zu Gast und

00:18:41.360 --> 00:18:42.400
der halt

00:18:42.400 --> 00:18:45.960
auch für diese PyPA

00:18:45.960 --> 00:18:47.980
irgendwie wesentlich zuständig

00:18:47.980 --> 00:18:48.580
ist und

00:18:48.580 --> 00:18:51.680
ja, der sagte also, er benutzt auch selber

00:18:51.680 --> 00:18:53.820
Flit und das würde ihm sehr gut gefallen,

00:18:53.940 --> 00:18:54.940
weil es halt einfach schnell

00:18:54.940 --> 00:18:57.280
und so und macht das, was es soll.

00:18:57.800 --> 00:18:58.560
Während Poetry,

00:18:58.940 --> 00:19:01.620
ich verwende ja Poetry normalerweise,

00:19:01.820 --> 00:19:03.840
aber ehrlich gesagt so manchmal, ich hatte das jetzt auch

00:19:03.840 --> 00:19:05.580
ich glaube in dem Stream,

00:19:05.800 --> 00:19:06.960
wo ich da so Live-Sachen

00:19:06.960 --> 00:19:09.020
gerade irgendwie entwickle,

00:19:09.800 --> 00:19:10.880
da habe ich

00:19:10.880 --> 00:19:12.860
ich habe dann irgendwann mal das

00:19:12.860 --> 00:19:15.740
Virtual-End-Fact schmeißen müssen und dann

00:19:15.740 --> 00:19:16.740
habe ich nochmal als irgendwie

00:19:16.740 --> 00:19:19.220
neu von PyPI gezogen

00:19:19.220 --> 00:19:20.760
und Pootree

00:19:20.760 --> 00:19:22.700
Update gesagt oder Install, ich weiß es gar nicht mehr genau.

00:19:23.200 --> 00:19:24.720
Und dann hat das tatsächlich geschlagene

00:19:24.720 --> 00:19:26.400
300 Sekunden

00:19:26.400 --> 00:19:27.940
Dependencies aufgelöst.

00:19:28.980 --> 00:19:30.480
Wo ich dachte so...

00:19:30.480 --> 00:19:32.560
Das passiert, seitdem es das Async macht.

00:19:33.380 --> 00:19:34.980
Ja, mir geht das an einen zu erscheinen auf die Nerven.

00:19:35.000 --> 00:19:36.880
Da ist irgendwas richtig kaputt, weil

00:19:36.880 --> 00:19:37.880
das darf nicht...

00:19:37.880 --> 00:19:40.840
Ich kann mir nicht vorstellen, wie das irgendwie...

00:19:41.840 --> 00:19:42.840
Welchen Grund es dafür

00:19:42.840 --> 00:19:43.400
geben könnte.

00:19:43.400 --> 00:19:47.000
Ich meine, so viele Pakete sind es nicht.

00:19:47.360 --> 00:19:49.500
Vielleicht 50 oder so, die da drin sind, Abhängigkeiten.

00:19:50.260 --> 00:19:51.340
Und dass das dann irgendwie,

00:19:51.680 --> 00:19:53.840
also selbst ein paar Sekunden wäre viel zu viel,

00:19:53.940 --> 00:19:55.320
die Abhängigkeiten da aufzulösen.

00:19:55.720 --> 00:19:57.180
Wie kann das sein, dass das 300 Sekunden braucht?

00:19:57.380 --> 00:19:59.320
Irgendwas ist da...

00:19:59.320 --> 00:20:01.840
Oder es braucht es halt irgendwie, wenn es ein Netzwerk macht,

00:20:01.880 --> 00:20:02.600
das kann natürlich auch sein,

00:20:02.680 --> 00:20:04.000
und PyPI überlastet ist oder so,

00:20:04.080 --> 00:20:06.040
vielleicht würde PIP auch so lange brauchen.

00:20:06.400 --> 00:20:08.040
Aber Poetry bringt ja einen eigenen Resolver mit

00:20:08.040 --> 00:20:09.060
und macht das halt nicht über PIP.

00:20:09.680 --> 00:20:11.540
Aber offenbar ist das irgendwie nicht so ganz okay.

00:20:11.540 --> 00:20:13.560
also Poetry hat mir schon so ein paar Mal

00:20:13.560 --> 00:20:15.480
irgendwie tatsächlich echt

00:20:15.480 --> 00:20:17.500
ich dachte so, okay, da ist irgendwas

00:20:17.500 --> 00:20:19.720
nicht in Ordnung, insofern

00:20:19.720 --> 00:20:21.580
Also falls ihr schon immer mal Open Source entwickeln

00:20:21.580 --> 00:20:23.220
wolltet, scheint es, es gibt da ein paar

00:20:23.220 --> 00:20:24.380
Pulverquests, die notwendig sind.

00:20:25.740 --> 00:20:27.460
Keine Ahnung, vielleicht muss ich mal reingucken, was da los ist,

00:20:27.540 --> 00:20:29.500
aber irgendwas, also das, da

00:20:29.500 --> 00:20:31.120
kriege ich auf jeden Fall, wenn ich sowas sehe, kriege ich einen Schreck,

00:20:31.280 --> 00:20:33.460
weil das finde ich ja so, oh, das ist ein Tool, auf das ich mich

00:20:33.460 --> 00:20:34.820
verlasse und das macht komische Dinge

00:20:34.820 --> 00:20:37.440
und

00:20:37.440 --> 00:20:39.260
das hat auch so, was mich auch bei

00:20:39.260 --> 00:20:40.160
Poetry so ein bisschen

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

00:20:44.380 --> 00:20:45.180
aber das hat dann doch

00:20:45.180 --> 00:20:47.260
macht auch immer wieder Probleme

00:20:47.260 --> 00:20:48.660
ist halt, dass man

00:20:48.660 --> 00:20:51.080
das gibt es bei den Setup-Tools

00:20:51.080 --> 00:20:58.340
man kann Python Setup

00:20:58.340 --> 00:21:00.100
py-develop ausführen

00:21:00.100 --> 00:21:01.560
oder halt pip-i

00:21:01.560 --> 00:21:04.340
und damit halt so eine editierbare

00:21:04.340 --> 00:21:05.700
Version von einem Paket installieren

00:21:05.700 --> 00:21:07.980
das halt, wenn man es entwickelt, super praktisch ist

00:21:07.980 --> 00:21:09.960
und das geht mit Poetry

00:21:09.960 --> 00:21:12.040
geht das nicht. Also geht einfach

00:21:12.040 --> 00:21:13.580
gar nicht. Und was meinst du mit

00:21:13.580 --> 00:21:15.580
editierbare Version installieren? Also da lädt quasi

00:21:15.580 --> 00:21:17.900
seine lokale Datei

00:21:17.900 --> 00:21:19.500
als Symblink

00:21:19.500 --> 00:21:21.440
in... Ja, ja, ja, genau.

00:21:21.560 --> 00:21:23.620
Es ist nur tatsächlich im

00:21:23.620 --> 00:21:25.400
Virtual Env landet dann halt nur so eine Art Link

00:21:25.400 --> 00:21:27.820
und sobald man den Code ändert, dann

00:21:27.820 --> 00:21:29.720
muss man halt nicht irgendwie nochmal

00:21:29.720 --> 00:21:31.760
neu das Paket installieren, sondern das ist halt

00:21:31.760 --> 00:21:33.740
dann die geänderte Version vom Code

00:21:33.740 --> 00:21:35.860
ist dann halt direkt da. Das ist tatsächlich

00:21:35.860 --> 00:21:37.760
ein ganz, ganz wichtiger Punkt, den ich auch lernen

00:21:37.760 --> 00:21:39.520
musste, wenn man mit einem Package arbeitet,

00:21:39.520 --> 00:22:09.500
und Jochen unterhalten sich über die Programmiersprache Python

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

00:22:11.720 --> 00:22:12.400
Ne, weiß ich nicht.

00:22:13.400 --> 00:22:15.540
Naja, auf jeden Fall, ich bügele

00:22:15.540 --> 00:22:17.300
das dann halt einfach nochmal, also alles mit

00:22:17.300 --> 00:22:19.320
Pip installiert und so und dann einfach manuell nochmal

00:22:19.320 --> 00:22:21.440
mit Pip dann das drüber bügeln, um diesen

00:22:21.440 --> 00:22:23.580
Sim-Link zu machen und damit kann man dann sehr, sehr

00:22:23.580 --> 00:22:25.480
entspannt und sehr cool, dann auch mit zwei

00:22:25.480 --> 00:22:27.400
verschiedenen IDEs einfach, im einen

00:22:27.400 --> 00:22:28.500
ändert man halt dann den

00:22:28.500 --> 00:22:31.540
Package, was man gerade, oder den Source-Code des Packages,

00:22:31.640 --> 00:22:33.520
im anderen hast du quasi deinen richtigen

00:22:33.520 --> 00:22:35.260
Django-Web-Server oder was auch immer

00:22:35.260 --> 00:22:37.080
dein Projekt macht und

00:22:37.080 --> 00:22:39.200
das ist sehr, sehr convenient und da muss man

00:22:39.200 --> 00:22:40.480
erst mal wissen, was man suchen muss.

00:22:43.560 --> 00:22:45.280
Also du hast auch schon mal so ein paar

00:22:45.280 --> 00:22:47.180
Pakete gebaut. Ich glaube, das hast du auch

00:22:47.180 --> 00:22:48.140
bei GitHub hochgestellt.

00:22:49.120 --> 00:22:51.300
Genau, ja. Ich habe vor ein paar

00:22:51.300 --> 00:22:51.980
Jahren die

00:22:51.980 --> 00:22:54.580
Ownership von dem Package übernommen

00:22:54.580 --> 00:22:56.640
oder Maintainership von dem Package übernommen.

00:22:57.320 --> 00:22:59.380
Das habe ich auch schon mehrfach

00:22:59.380 --> 00:23:01.200
am Rande mal erwähnt auf ein paar Blog-Einträgen

00:23:01.200 --> 00:23:03.040
und sowas. Das ist dieses wunderbare AI

00:23:03.040 --> 00:23:04.180
Django Core Package.

00:23:05.240 --> 00:23:07.280
Das ist entstanden

00:23:07.280 --> 00:23:09.260
aus. Wir hatten

00:23:09.260 --> 00:23:10.800
in der Frühzeit unsere Geschichte, also bei

00:23:10.800 --> 00:23:13.200
AI hat nichts mit künstlicher

00:23:13.200 --> 00:23:15.400
Intelligenz zu tun, etwas misleading.

00:23:17.460 --> 00:23:19.100
Haben wir gemerkt, dass wir halt irgendwie

00:23:19.100 --> 00:23:20.940
ganz praktische Sachen gebaut haben und dass man die halt

00:23:20.940 --> 00:23:22.840
irgendwie immer vom Projekt zu Projekt kopieren ist doof.

00:23:23.300 --> 00:23:25.160
Und da so, ja, machen wir mal ein Package

00:23:25.160 --> 00:23:27.420
und dann ist es halt einfacher zu installieren.

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

00:23:29.520 --> 00:23:31.440
dann ist dann halt die Jahre.

00:23:31.640 --> 00:23:33.140
Also für die verschiedenen Projekte, das heißt, du kannst in jedem

00:23:33.140 --> 00:23:35.040
Projekt einfach sagen, okay, den Kone nehme ich jetzt immer mit und habe

00:23:35.040 --> 00:23:37.260
die Basisfunktionalität. Genau, ohne dass man es halt kopieren

00:23:37.260 --> 00:23:39.440
muss und hat halt dann keine Code-Renundanzen und so was.

00:23:39.520 --> 00:23:41.140
Und wie gesagt, wenn man einen Bug fixen möchte oder irgendwas

00:23:41.140 --> 00:23:43.020
Ja, vor allem, das ist halt blöd, wenn man halt irgendwas weiterentwickelt,

00:23:43.100 --> 00:23:44.980
ein neues Feature, und dann muss das in jedem einzelnen Projekt

00:23:44.980 --> 00:23:47.200
wieder nachbauen, das ist natürlich nicht so gut. Genau, das ist sehr mühsam.

00:23:48.620 --> 00:23:49.260
Genau, und dann haben

00:23:49.260 --> 00:23:51.100
wir uns dann, dann ist da halt

00:23:51.100 --> 00:23:52.240
über Jahre dann so

00:23:52.240 --> 00:23:55.520
Einbahnstraßen-mäßig da halt Code hineingeflossen.

00:23:56.000 --> 00:23:57.240
Auch dann irgendwie gab's

00:23:57.240 --> 00:23:59.220
dann irgendwann mal diesen großen Break, wo dann wirklich

00:23:59.220 --> 00:24:00.680
alle von Python 2 weg sind.

00:24:01.100 --> 00:24:03.260
Und dann waren da noch Python 2 Sachen drin, Python 3 Sachen

00:24:03.260 --> 00:24:04.960
und dann irgendwann

00:24:04.960 --> 00:24:16.888
habe ich mir das mal zur Brust genommen ich glaube das war so 2018 ungef habe ich mal angefangen zu gucken was ist da eigentlich drin weil ich da selber auch ziemlich viel kontrib habe weil ich halt oft Sachen gebaut habe wo ich dachte ach das ist cool das w ich im n Projekt auch gerne nutzen

00:24:17.428 --> 00:24:24.848
Oder das, keine Ahnung, zum Beispiel Richtung Test-Setup oder so Sachen, die einfach das Ganze ein bisschen streamlinen und ein bisschen mehr so machen, wie ich das für richtig halte.

00:24:25.448 --> 00:24:33.867
Dann habe ich irgendwann mal angefangen zu gucken, was ist denn da eigentlich alles drin und wie gesagt, da waren Kompatibilitätsprobleme und da war anfangs noch kein Linting drin und die Dokumentation, es war nichts dokumentiert.

00:24:33.867 --> 00:25:03.848
und Jochen unterhalten sich über die Programmiersprache Python

00:25:03.867 --> 00:25:08.627
und das habe ich die letzten Jahre halt dann angefangen und habe dann da in verschiedenen Wellen und Steps

00:25:08.627 --> 00:25:12.507
ja, was gemacht. Also zum Beispiel super wichtig für mich

00:25:12.507 --> 00:25:16.788
oder ein super wichtiges Learning für mich war, dass man ein Change Log macht, allein schon für einen selbst.

00:25:16.788 --> 00:25:20.948
Ich habe keine Ahnung, was ich vor, also ich mache ungefähr

00:25:20.948 --> 00:25:25.007
alle ein bis zwei Monate einen Release, also irgendeine Art von Release.

00:25:25.068 --> 00:25:29.028
Kann mal ein Mad Release sein, wenn ich irgendwas Größeres wirklich rudimentär gemacht habe oder halt

00:25:29.028 --> 00:25:32.888
was Kleineres, aber so ein bis zwei Monate. Das heißt, da kommen einige Releases

00:25:32.888 --> 00:25:34.888
zusammen über die Zeit. Und wenn man

00:25:34.888 --> 00:25:36.928
dann mal irgendein größeres

00:25:36.928 --> 00:25:38.588
Projekt hat und das hochziehen möchte und denkt,

00:25:38.648 --> 00:25:40.688
ich brauche jetzt dieses neue Feature, das da drin ist

00:25:40.688 --> 00:25:42.888
und man nicht weiß, was man seitdem denn alles geändert

00:25:42.888 --> 00:25:44.688
hat und nicht weiß, wie man sein

00:25:44.688 --> 00:25:46.348
Projekt, dass man das aktualisieren möchte,

00:25:46.728 --> 00:25:48.747
wie man das möglicherweise kaputt macht, das ist echt blöd.

00:25:49.288 --> 00:25:50.627
Aber das geht ja dann auch direkt Richtung

00:25:50.627 --> 00:25:52.828
wie vergibt man Versionsnummern

00:25:52.828 --> 00:25:53.188
und was ist da?

00:25:55.188 --> 00:25:56.568
Semantik-Versioning, glaube ich, habe ich gehört,

00:25:56.648 --> 00:25:58.548
ist da en vogue.

00:25:59.028 --> 00:25:59.747
Macht man das noch?

00:26:00.988 --> 00:26:02.068
Ja, naja,

00:26:02.068 --> 00:26:03.948
nicht, also ich weiß halt...

00:26:03.948 --> 00:26:04.507
Wie immer lustig ist.

00:26:05.888 --> 00:26:07.388
Ich guck mal...

00:26:07.388 --> 00:26:08.968
Ich hab grad

00:26:08.968 --> 00:26:11.988
einen Artikel,

00:26:12.507 --> 00:26:14.208
der Semantic

00:26:14.208 --> 00:26:15.408
Versioning won't save you.

00:26:16.408 --> 00:26:17.988
Ja, also es kann ja zum Beispiel sein, dass man eine neue

00:26:17.988 --> 00:26:19.988
Major Version rausbringt, so von 2 auf 3

00:26:19.988 --> 00:26:21.168
oder sowas, dann gehen Dinge kaputt.

00:26:21.728 --> 00:26:22.607
Das sind wir ja vielleicht nicht.

00:26:23.148 --> 00:26:25.867
Ja, also genau, da gibt es einen sehr schönen Blogartikel

00:26:25.867 --> 00:26:26.428
von

00:26:26.428 --> 00:26:29.208
Hüneck, Heineck,

00:26:29.848 --> 00:26:31.867
Schlawack, Semantic Versioning

00:26:31.867 --> 00:26:37.328
will not save you, der ist auch jetzt, genau, der ist von Anfang März, den habe ich mich nicht erinnert.

00:26:37.768 --> 00:26:41.408
Ja, leider ist das auch alles, also ich meine, es ist vielleicht besser als nichts, aber es ist halt,

00:26:41.928 --> 00:26:43.627
es ist alles irgendwie...

00:26:43.627 --> 00:26:46.308
Vielleicht, was ist das denn? Was ist denn Semantikwürfling? Was macht man denn da?

00:26:47.848 --> 00:26:53.308
Naja, dass man sozusagen so ein bisschen, also nicht nur das hochzählt, sonst könnte man ja einfach

00:26:53.308 --> 00:26:57.028
nur noch eine Zahl hochzählen, sondern dass da halt eine Bedeutung dran hängt, dass man zum Beispiel

00:26:57.028 --> 00:26:58.107
so eine Dreiteilung hat.

00:27:00.507 --> 00:27:01.228
Macht man bei

00:27:01.228 --> 00:27:03.088
Setup-Tools auch oft so, dass man da

00:27:03.088 --> 00:27:05.007
irgendwie dann Tuples verwendet, damit das klar ist, welche

00:27:05.007 --> 00:27:07.088
und dann wird es halt, dann oft hat man dann

00:27:07.088 --> 00:27:09.488
halt irgendwie Major-Version.minor

00:27:09.488 --> 00:27:10.388
. irgendwie

00:27:10.388 --> 00:27:12.627
Patch-Release oder so

00:27:12.627 --> 00:27:15.028
und in den Patch-Releases sollten halt nur

00:27:15.028 --> 00:27:16.548
Bugs gefixt sein, minor

00:27:16.548 --> 00:27:18.928
sollte vielleicht kommen, vielleicht Features dazu,

00:27:19.107 --> 00:27:20.127
aber es wird die

00:27:20.127 --> 00:27:23.568
Abwärts-Komfortibilität nicht gebrochen und dann bei Major-Versionen

00:27:23.568 --> 00:27:24.328
kann man halt irgendwie

00:27:24.328 --> 00:27:25.867
eine neue App benutzen oder sowas.

00:27:25.988 --> 00:27:27.607
Ja, kann man es halt inkompatibel machen.

00:27:28.867 --> 00:27:30.428
Und oft sieht man das dann auch, dass Leute

00:27:30.428 --> 00:27:32.428
das dann halt in, ja,

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

00:27:34.367 --> 00:27:35.867
reinschreiben, also alles, was größer ist,

00:27:36.268 --> 00:27:38.468
größer gleich dieser meiner Version

00:27:38.468 --> 00:27:39.747
zum Beispiel, sodass halt sie

00:27:39.747 --> 00:27:42.247
kleinere Updates oder auch Features noch

00:27:42.247 --> 00:27:44.288
bekommen oder halt alle Security-Patches, aber

00:27:44.288 --> 00:27:46.288
halt nicht, dass die Kompatibilität

00:27:46.288 --> 00:27:46.948
nicht gebrochen wird.

00:27:48.188 --> 00:27:49.747
Nur das Problem ist natürlich, dass

00:27:49.747 --> 00:27:52.328
tatsächlich garantiert ist halt auch ein Bugfix

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

00:27:54.148 --> 00:27:56.548
auch verlassen hat, dass sich etwas so verhält, wie es derzeit tut

00:27:56.548 --> 00:27:58.127
und das aber ein Bug war.

00:27:58.408 --> 00:28:00.507
Das ist natürlich insofern...

00:28:01.288 --> 00:28:02.428
Ja, aber...

00:28:02.428 --> 00:28:04.148
Bei 0.9.0.20, das ist auch super.

00:28:04.708 --> 00:28:05.068
Ja.

00:28:05.928 --> 00:28:08.468
Das gab ein sehr schönes Beispiel, das war

00:28:08.468 --> 00:28:10.388
vor, ich glaube, einem Jahr,

00:28:10.607 --> 00:28:11.788
vielleicht eineinhalb Jahren, zwei Jahren,

00:28:12.228 --> 00:28:14.007
da hatte Flake 8 ein neues

00:28:14.007 --> 00:28:16.507
Patch-Release rausgebracht.

00:28:16.948 --> 00:28:18.247
Also die haben ja, glaube ich, von, weiß ich nicht,

00:28:18.247 --> 00:28:20.007
0.96 auf 0.07 oder sowas

00:28:20.007 --> 00:28:22.188
und haben da aber einen neuen Check eingebaut,

00:28:22.188 --> 00:28:24.388
der nämlich gecheckt hat, ob F-Strings Variablen

00:28:24.388 --> 00:28:26.308
enthalten. Und wenn du dann F-String ohne Variablen

00:28:26.308 --> 00:28:27.728
hast, dann ist es rausgeflogen

00:28:27.728 --> 00:28:30.488
und plötzlich sind halt dann bei diversen

00:28:30.488 --> 00:28:31.788
Projekten geht die Pipeline nicht mehr

00:28:31.788 --> 00:28:33.888
also ich hab da nichts geändert, was ist denn jetzt los?

00:28:34.127 --> 00:28:35.708
War halt mit Star-Import einfach im

00:28:35.708 --> 00:28:38.448
PIP-File und ja, blöd

00:28:38.448 --> 00:28:40.428
Tja

00:28:40.428 --> 00:28:42.228
Wie gesagt,

00:28:42.347 --> 00:28:44.408
vielleicht hätte das schon vorher das überprüfen sollen

00:28:44.408 --> 00:28:45.828
aber es war halt ein Bug und hat nicht funktioniert

00:28:45.828 --> 00:28:48.248
haben sie den Bug repariert und schon

00:28:48.248 --> 00:28:49.507
hast du auf einmal ein komplettes

00:28:49.507 --> 00:28:52.088
komplett anderes Ergebnis und plötzlich ein Breaking-Change

00:28:52.088 --> 00:28:54.268
in einer Pipeline, aber trotzdem.

00:28:56.048 --> 00:28:57.988
Ja, dafür ist dann Push wieder ganz gut,

00:28:58.088 --> 00:28:59.588
wegen der Log-File, wo es halt dann genau

00:28:59.588 --> 00:29:00.648
die Penalties print.

00:29:01.127 --> 00:29:02.668
Ja, ja, auch eben, weil

00:29:02.668 --> 00:29:05.968
falls halt irgendwie andere Dinge,

00:29:06.188 --> 00:29:07.568
also einfach um reproduzierbare

00:29:07.568 --> 00:29:09.768
Umgebungen zu bekommen und auch

00:29:09.768 --> 00:29:11.347
wenn jemand es schafft, irgendwie

00:29:11.347 --> 00:29:13.748
malicious Pakete irgendwo hinzulegen,

00:29:13.828 --> 00:29:15.648
das ist ja auch so etwas, was dann zumindest

00:29:15.648 --> 00:29:17.428
sehr überprüft wird, dass der Herrscher stimmt und so.

00:29:18.148 --> 00:29:18.268
Ja.

00:29:19.408 --> 00:29:22.028
Würde dich auch nicht davor retten, wenn da schon ein malicious Paket drin wäre,

00:29:22.088 --> 00:29:22.568
und was soll ich immer wieder erledigen?

00:29:22.568 --> 00:29:23.648
Nee, das hast du schon verloren, genau.

00:29:23.748 --> 00:29:25.208
Wenn es halt jemand später schafft, genau.

00:29:25.208 --> 00:29:25.607
Ja, ja.

00:29:26.268 --> 00:29:26.468
Ja.

00:29:27.127 --> 00:29:28.888
Aber tatsächlich bin ich jetzt auch ein großer Freund,

00:29:28.988 --> 00:29:31.148
dass ich eigentlich alle Abhängigkeiten,

00:29:31.148 --> 00:29:32.367
die ich habe, wirklich fixiere,

00:29:32.448 --> 00:29:34.728
weil ich bin da schon zu oft auf die Nase gefallen mit,

00:29:35.228 --> 00:29:37.028
weiß ich nicht, irgendwie Celery,

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

00:29:39.708 --> 00:29:41.068
die haben im Bugfix-Release irgendwie

00:29:41.068 --> 00:29:43.488
ein Attribut deprecated und rausgenommen

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

00:29:45.388 --> 00:29:46.688
und das komplette Async ist tot.

00:29:48.007 --> 00:29:49.007
Das ist halt bitter.

00:29:49.788 --> 00:29:50.648
Ja, ist schon doof.

00:29:50.648 --> 00:29:53.308
Ich habe gerade ein Problem mit einer Pipeline,

00:29:53.948 --> 00:29:54.408
weil

00:29:54.408 --> 00:29:57.367
das irgendwie so doof gebaut wird, dass da Abhängigkeiten

00:29:57.367 --> 00:29:58.928
zu Docker drin sind, dass aber

00:29:58.928 --> 00:30:01.168
das System dann doch abhängig funktionieren

00:30:01.168 --> 00:30:02.968
muss. Also das heißt, wir nehmen dann, weil wir auf einer

00:30:02.968 --> 00:30:04.288
Windows-Maschine das aufbauen müssen,

00:30:05.347 --> 00:30:07.308
PyWin mit rein und das installiert

00:30:07.308 --> 00:30:09.068
sich natürlich nicht auf der Windows-Maschine, weil das

00:30:09.068 --> 00:30:10.948
dann in den Dependencies mit drin hängt. Das heißt,

00:30:11.007 --> 00:30:12.328
ich muss in der Pipeline das Blockfile wegschmeißen.

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

00:30:16.148 --> 00:30:16.988
Verlasten, dass man halt

00:30:16.988 --> 00:30:19.127
das Dependency-Resolving vernünftig funktioniert.

00:30:19.127 --> 00:30:23.007
aber naja, da muss man halt auch wieder dann manuell pinnen, aber das geht dann schon irgendwie.

00:30:23.968 --> 00:30:26.328
Ja, aber solche Sachen, das ist halt wirklich hässlich dann, aber ja.

00:30:28.028 --> 00:30:29.708
Da gibt es keine richtig gute Lösung für, ne?

00:30:29.788 --> 00:30:33.948
Also wie baut man denn jetzt Python so zusammen, dass es immer vernünftig funktioniert,

00:30:34.148 --> 00:30:38.828
immer wieder auch in zwei Jahren noch irgendwo und das ist ein bisschen blöd irgendwie.

00:30:39.408 --> 00:30:42.328
Also auch wenn man jetzt, ich nehme jetzt noch dieses Windows-Beispiel,

00:30:42.388 --> 00:30:44.148
wenn man jetzt da eine Executable erzeugen möchte,

00:30:44.268 --> 00:30:48.088
denen man Leuten gibt, die eigentlich gar kein Python können oder auch Programmieren nicht können oder sowas,

00:30:48.088 --> 00:30:52.408
sondern die wollen einfach ein Programm haben, was sie ausführen können, was dann auf Python läuft und bestimmte Dinge tut.

00:30:53.168 --> 00:30:55.448
Das bei denen auf den Rechner zu bekommen, das ist gar nicht so einfach.

00:30:55.648 --> 00:30:59.828
Aber darum gibt es ja auch Websoftware. Das ist ja genau der Grund, dass man diesen Knatsch halt nicht mehr hat.

00:31:00.388 --> 00:31:04.088
Ja gut, aber es gibt ja auch da verschiedenste Lösungen, wie man irgendwie so ein großes Paket zusammenspült,

00:31:04.808 --> 00:31:09.948
wo man dann alles mit reinpackt und die Dependencies mit reinpackt und den Compiler mit reinpackt und so,

00:31:10.028 --> 00:31:12.347
dass das dann halt selbstständig irgendwie aufgebaut werden kann.

00:31:12.948 --> 00:31:16.468
Ja, kann man schon. Also ich meine, PyInstaller ist halt wahrscheinlich vielleicht so die populärste.

00:31:16.468 --> 00:31:17.867
es gab ja einige

00:31:17.867 --> 00:31:21.007
NUCA, PyOxidizer

00:31:21.007 --> 00:31:22.708
wir hatten ja auch schon ein paar Mal drüber

00:31:22.708 --> 00:31:25.148
inzwischen, wenn man auf die Tools

00:31:25.148 --> 00:31:26.847
guckt, das sind PyOxidizer und so

00:31:26.847 --> 00:31:28.627
das ist schon wieder alles verschwunden

00:31:28.627 --> 00:31:29.528
aus den Empfehlungen

00:31:29.528 --> 00:31:32.068
hat sich wohl dann

00:31:32.068 --> 00:31:34.388
PyInstaller ist irgendwie erstaunlich konstant

00:31:34.388 --> 00:31:36.367
ja, aber ich habe es noch nie richtig

00:31:36.367 --> 00:31:38.607
funktioniert einfach nicht so wie man will, wenn man zu viele

00:31:38.607 --> 00:31:40.867
extra Dependencies hat, das ist auch nicht schön

00:31:40.867 --> 00:31:41.168
ja

00:31:41.168 --> 00:31:45.028
kein einfaches

00:31:45.028 --> 00:31:45.648
Problem, leider

00:31:45.648 --> 00:31:47.448
Ja, aber

00:31:47.448 --> 00:31:49.548
was macht man da? Also Paket bauen?

00:31:49.688 --> 00:31:50.548
Ja, du sagst Web-Anwendung.

00:31:51.048 --> 00:31:53.507
Ja, Web-Anwendung. Oder ich meine, klar, Docker-Image dürfte

00:31:53.507 --> 00:31:54.948
schon relativ haltbar sein.

00:31:55.068 --> 00:31:57.127
Ist natürlich so ein bisschen verschwenderisch.

00:31:57.908 --> 00:31:58.888
Solange es Docker noch gibt.

00:31:59.588 --> 00:31:59.948
Ja.

00:31:59.948 --> 00:32:00.068
Ja.

00:32:03.708 --> 00:32:04.107
Aber,

00:32:04.428 --> 00:32:05.948
tja, ich habe auch keine

00:32:05.948 --> 00:32:07.788
Lösung dafür. Meine Lösung ist,

00:32:08.367 --> 00:32:09.788
nicht auf Systemen unterwegs sein, wo das

00:32:09.788 --> 00:32:10.367
ein Problem ist.

00:32:11.988 --> 00:32:13.788
Es gibt halt Leute, die halt andere Systeme nutzen,

00:32:13.788 --> 00:32:15.748
das ist ja klar und wenn die darauf

00:32:15.748 --> 00:32:17.788
relyen und wenn man von bestimmten

00:32:17.788 --> 00:32:19.768
Konzernen, die halt dann bestimmte Policies haben

00:32:19.768 --> 00:32:21.568
die man nicht verstehen muss, aber wo man das natürlich

00:32:21.568 --> 00:32:23.808
dran halten muss. Die haben bestimmt 1998

00:32:23.808 --> 00:32:25.268
Sinn gemacht, dass die jemand eingeführt hat.

00:32:25.607 --> 00:32:27.728
Ja, also die sind auch veränderungsresistent

00:32:27.728 --> 00:32:29.367
also da würden ja ganze Abteilungen sich als

00:32:29.367 --> 00:32:30.888
Renewant erweisen vielleicht

00:32:30.888 --> 00:32:33.428
aber wenn die so lange nicht gut verdienen, ist das halt

00:32:33.428 --> 00:32:35.007
nicht notwendig, da irgendwas zu ändern

00:32:35.007 --> 00:32:36.668
das ist halt dann so.

00:32:37.328 --> 00:32:39.808
Ja, aber wie gesagt

00:32:39.808 --> 00:32:41.788
also nochmal zur Versionierung zurück

00:32:41.788 --> 00:32:43.688
ich mache tatsächlich auch dieses Semantic Versioning

00:32:43.688 --> 00:33:04.808
Man kann halt damit wenigstens versuchen, dass man halt dem Nutzer, den man ja meistens nicht kennt, so ein bisschen den Pain zu nehmen, wie man mit Updates umgeht. Weil jedes Update, je nachdem wie groß das Projekt ist und auch wie stabil das Projekt ist, Stichwort Testing und sowas, kann das ja auch mit ziemlich viel Kopfzerbrechen verbunden sein, irgendwas überhaupt hochzuziehen.

00:33:04.808 --> 00:33:07.048
und bei dem habe ich

00:33:07.048 --> 00:33:08.867
jetzt halt gesagt, hey, wir machen ein Semantic Versioning

00:33:08.867 --> 00:33:10.948
und da versuche ich mich auch sehr dran zu

00:33:10.948 --> 00:33:12.587
halten, also darum habe ich jetzt auch schon in

00:33:12.587 --> 00:33:14.548
den Jahren jetzt vier

00:33:14.548 --> 00:33:15.788
Major Releases gemacht, weil

00:33:15.788 --> 00:33:18.788
Python halt irgendwie komplett alles auf drei umgestellt ist,

00:33:18.828 --> 00:33:20.847
halt ein Breaking Change, muss dann hochgehen, da kommt es halt nicht

00:33:20.847 --> 00:33:22.408
drum rum. Fühlt sich manchmal so ein bisschen

00:33:22.408 --> 00:33:24.668
verschwenderisch an, wenn man denkt,

00:33:24.788 --> 00:33:26.548
schon wieder, das ist nicht so viel Code, aber

00:33:26.548 --> 00:33:28.908
ja, und man kann halt

00:33:28.908 --> 00:33:30.908
einfach nur hoffen, dass man es den Leuten halt möglichst einfach

00:33:30.908 --> 00:33:32.888
macht, weil das Problem ist, da sitzt dann nachher

00:33:32.888 --> 00:33:37.488
am anderen Ende der Welt jemand, der möchte genau das Package verwenden oder nutzt es im schlimmsten Fall vielleicht schon

00:33:37.488 --> 00:33:40.867
und dann macht man ihm plötzlich was kaputt, der hat keine Chance, das irgendwie vernünftig zu erreichen,

00:33:41.347 --> 00:33:45.268
zumindest nicht direkt und da sollte man

00:33:45.268 --> 00:33:49.508
schon gucken, dass man das so stabil wie möglich baut.

00:33:50.468 --> 00:33:50.548
Ja.

00:33:52.428 --> 00:33:54.808
Ja, ist auf jeden Fall nett.

00:33:56.748 --> 00:33:59.708
Ich glaube, manchmal machen Leute auch so ein bisschen zu viel

00:33:59.708 --> 00:34:01.587
Google Schwurbel um, es muss

00:34:01.587 --> 00:34:03.508
backwards kompatibel sein für

00:34:03.508 --> 00:34:04.308
bis in alle Zeiten.

00:34:05.028 --> 00:34:06.847
Ich finde es vollkommen okay zu sagen,

00:34:07.568 --> 00:34:09.648
das Ding geht jetzt kaputt, wenn du das so nutzt wie vorher,

00:34:09.988 --> 00:34:11.347
aber die müssen es halt wissen.

00:34:11.508 --> 00:34:13.468
Es wäre schon nett, wenn man die

00:34:13.468 --> 00:34:14.828
Versionsnummer dann vielleicht Major ändert.

00:34:15.488 --> 00:34:17.508
Wenn jemand halt blind irgendwie drei

00:34:17.508 --> 00:34:19.708
Majors hochgeht und sich dann ärgert, dass es nicht geht,

00:34:20.367 --> 00:34:21.347
ja gut. Wie gesagt,

00:34:21.347 --> 00:34:23.268
ich meine, manche Projekte haben ja leider wirklich kein

00:34:23.268 --> 00:34:25.008
Change Log oder so ein ganz rudimentäres.

00:34:25.347 --> 00:34:27.308
Da ist man wirklich angeschmiert, weil du kannst es halt nicht wissen.

00:34:27.748 --> 00:34:29.308
Wie machst du das Change Log und wie schreibst

00:34:29.308 --> 00:34:33.288
auf, schreibst du dann vor jedem Commit oder lässt du aus den Commit-Messages automatisch dein Login?

00:34:33.347 --> 00:34:35.948
Ich mache das tatsächlich zu Fuß. Also da gibt es ganz viele Tools.

00:34:37.547 --> 00:34:41.347
Ich fand das Stand irgendwie nicht dafür, weil wie gesagt, wenn ich irgendwas

00:34:41.347 --> 00:34:45.228
mache, dann weiß ich ja, was ich mache und dann kann ich es auch einfach kurz ins Change-Logger.

00:34:45.268 --> 00:34:47.188
Es ist einfach ein Markdown-File.

00:34:47.248 --> 00:34:49.728
Es ist clean, vernünftig, deine Arbeit zu dokumentieren.

00:34:50.027 --> 00:34:55.168
Ja, und vor allem, das sind ja auch Stichpunkte. Ich meine, inzwischen habe ich Dokumentation, da kann ich gleich noch was dazu sagen.

00:34:55.808 --> 00:34:56.808
Auch ein Thema für sich.

00:34:56.808 --> 00:34:58.347
aber

00:34:58.347 --> 00:35:00.968
also ich habe einfach ein Markdown-File

00:35:00.968 --> 00:35:02.988
und da ist halt, das ist halt eine lange Liste, wo

00:35:02.988 --> 00:35:04.768
dann halt drin steht, hey, am so und sovielten

00:35:04.768 --> 00:35:06.668
habe ich diese Version released und das hat sich geändert.

00:35:07.107 --> 00:35:08.867
Ich habe da irgendwie, weiß ich, drei Rechtschreibfehler

00:35:08.867 --> 00:35:10.768
in der Dokumentation gefixt, die Funktion ist neu

00:35:10.768 --> 00:35:11.968
und die Funktion hat neun Parameter.

00:35:12.968 --> 00:35:14.668
So und dann, das ist halt, das dauert eine Minute,

00:35:14.788 --> 00:35:16.567
das zu schreiben, ich weiß ja, was ich da tue.

00:35:16.888 --> 00:35:18.748
Und wenn ich jetzt sage, ich sammle ein paar Kleinigkeiten,

00:35:18.828 --> 00:35:20.888
wo es sich nicht lohnt, ein Release zu machen, weil ich es gerade nicht so dringend

00:35:20.888 --> 00:35:22.888
brauche, dann habe ich halt einfach so ein

00:35:22.888 --> 00:35:24.788
Current, temporäres Ding

00:35:24.788 --> 00:35:26.988
oben drin stehen und dann, wenn ich halt

00:35:26.988 --> 00:35:28.888
fertig bin, dann sage ich, okay, das gebe ich

00:35:28.888 --> 00:35:30.988
dem Namen, also sprich eine Versionsnummer und dann

00:35:30.988 --> 00:35:32.908
habe ich die Sachen einfach schon zusammengeschrieben,

00:35:33.008 --> 00:35:34.668
wenn von mehreren Seiten was, oder wenn mal

00:35:34.668 --> 00:35:36.808
auch von Kollegen oder so ein Pull-Request reinkommt oder

00:35:36.808 --> 00:35:37.148
sowas.

00:35:39.148 --> 00:35:40.107
Das ist auf jeden Fall ordentlich.

00:35:42.107 --> 00:35:43.107
Also ich tatsächlich

00:35:43.107 --> 00:35:44.788
bin da halt einfach gebranntes Kind, weil ich es halt schon

00:35:44.788 --> 00:35:46.708
zu oft hatte, dass ich denke, ja kacke, kann ich das

00:35:46.708 --> 00:35:48.268
noch verwenden, kann ich es nicht verwenden so?

00:35:49.008 --> 00:35:50.808
Also ich frage mich gerade, ab wann ich mit sowas anfangen würde,

00:35:50.948 --> 00:35:52.928
weil ich würde jetzt zum Beispiel in der ursprünglichen

00:35:52.928 --> 00:35:54.988
Entwicklung jetzt damit noch nicht anfangen, ChangeDocs zu schreiben, wenn ich

00:35:54.988 --> 00:35:57.188
jetzt noch nichts habe, was richtig fertig ist und was funktioniert.

00:35:57.648 --> 00:35:59.188
Wahrscheinlich bei Person 1.0

00:35:59.188 --> 00:35:59.527
würde ich sagen.

00:36:01.067 --> 00:36:03.107
Oder sobald halt Leute anfangen, das zu verwenden.

00:36:03.748 --> 00:36:05.288
Was du natürlich auch nicht so genau weißt.

00:36:05.648 --> 00:36:07.027
Ja, sobald du was

00:36:07.027 --> 00:36:08.708
einigermaßen Nutzbares irgendwie hast.

00:36:08.988 --> 00:36:10.587
Ja, genau.

00:36:11.867 --> 00:36:12.067
Ja.

00:36:14.288 --> 00:36:14.808
Ja, ja.

00:36:16.087 --> 00:36:16.788
Ich mache das,

00:36:17.168 --> 00:36:18.847
ja, ich überlege gerade, ob ich weiß, was ich so mache.

00:36:18.847 --> 00:36:20.587
Und dann denke ich mir so, oh nein, ich breche es drauf und die kommen

00:36:20.587 --> 00:36:21.148
an die Schulzeit.

00:36:21.148 --> 00:36:42.788
Ich meine, es kommt doch 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 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.788 --> 00:36:45.248
Der Werkzeugkoffer bräuchte ich im Schrank. Da hängt auch alle möglichen

00:36:45.248 --> 00:36:47.107
Schraubenschlüssel rum. Jeder hat seinen eigenen Werkzeugkoffer

00:36:47.107 --> 00:36:48.428
mit eigenen Schraubenschlüsseln.

00:36:48.428 --> 00:36:49.627
Da tauscht man zu selten aus.

00:36:49.828 --> 00:36:51.847
Da sind aber die Farben, die hat man sich selber zusammengesucht.

00:36:52.047 --> 00:36:53.808
Man weiß selber, wo man in der Kiste was findet.

00:36:53.928 --> 00:36:56.688
Aber wenn jemand anders an diesen Werkzeugkoffer reinguckt, dann...

00:36:56.688 --> 00:36:56.847
Ja.

00:36:58.087 --> 00:37:00.388
Ich finde es eigentlich cooler, wenn man das...

00:37:00.388 --> 00:37:02.268
Ich meine, da muss es nicht auf JavaScript-Level gehen,

00:37:02.408 --> 00:37:04.367
wo jeder zwei Zeilen ein eigenes Package ist.

00:37:04.367 --> 00:37:05.388
Das ist manchmal ein bisschen krass.

00:37:05.847 --> 00:37:07.347
Aber wenn man die Sachen vielleicht auch ein bisschen...

00:37:07.347 --> 00:37:10.268
Sagt man so, würde ich jetzt das Package nicht geerbt haben,

00:37:10.347 --> 00:37:11.288
sondern würde es jetzt neu machen.

00:37:11.288 --> 00:37:13.188
und sagen, hier dieser Code, der soll irgendwie Packages,

00:37:13.627 --> 00:37:15.388
würde ich das wahrscheinlich nach gewissen Use Cases

00:37:15.388 --> 00:37:15.968
strukturieren.

00:37:16.008 --> 00:37:19.768
Das ist ja auch so ein Klassiker,

00:37:19.908 --> 00:37:20.728
das haben ganz viele Firmen.

00:37:20.908 --> 00:37:22.888
Ganz viele Firmen haben ein Paket, das heißt so wie die Firma.

00:37:23.768 --> 00:37:25.448
Oder sie haben halt ein Paket, das heißt dann

00:37:25.448 --> 00:37:26.748
irgendwie wie die Firma plus Core.

00:37:27.308 --> 00:37:28.188
Das heißt halt Core.

00:37:28.828 --> 00:37:31.748
Das ist ganz, ganz typisch.

00:37:32.567 --> 00:37:33.008
Aber wie gesagt,

00:37:33.127 --> 00:37:35.228
ich habe irgendwie ganz viele Sachen gebaut,

00:37:35.328 --> 00:37:36.288
die mir bei Unit Tests helfen.

00:37:36.468 --> 00:37:38.168
Dann würde ich sagen, hey, das ist dann jetzt das

00:37:38.168 --> 00:37:40.367
Ambient Unit Test Paket oder so.

00:37:40.367 --> 00:37:44.367
und dann alle Sachen, die haben irgendwas berechnen oder die irgendwas mit dem View-Layer zu tun haben,

00:37:44.448 --> 00:37:46.408
weil viele Projekte laufen bei Django inzwischen auch headless,

00:37:46.547 --> 00:37:49.768
das hat dann auch gewisse Dependencies, die man ja sonst nicht reinholen muss,

00:37:50.988 --> 00:37:53.047
das ist dann auch nur das ein eigenes Paket.

00:37:53.208 --> 00:37:55.508
Ich habe das jetzt mit Extensions tatsächlich gemacht,

00:37:55.607 --> 00:37:59.547
weil am Anfang war es auch so, dass auch die ganzen Dev-Dependencies wurden alle mit installiert immer,

00:38:00.027 --> 00:38:02.748
weil damals mir gar nicht so bewusst war, dass man das irgendwie trennen kann.

00:38:02.828 --> 00:38:05.047
Ich habe das dann einfach irgendwann übernommen und so ein bisschen umstrukturiert

00:38:05.047 --> 00:38:07.168
und dachte, okay, cool, funktioniert, wird schon passen.

00:38:07.168 --> 00:38:09.367
aber man kann ja tatsächlich sagen, dass man

00:38:09.367 --> 00:38:11.567
verschiedene Extensions macht, also das kennt man, wenn man

00:38:11.567 --> 00:38:13.748
das aus dem Requirements

00:38:13.748 --> 00:38:15.468
oder so, das ist so eine eckige Klammer, wo dann irgendwie

00:38:15.468 --> 00:38:17.688
bei Celery kann man es mit SQS oder mit

00:38:17.688 --> 00:38:19.748
Rabbit oder keine Ahnung welchen Extensions installieren

00:38:19.748 --> 00:38:21.508
und da kann man natürlich auch sehr schön

00:38:21.508 --> 00:38:23.607
die Dependencies wegkapseln, weil du kannst zum Beispiel sagen

00:38:23.607 --> 00:38:25.587
hey, also zum Beispiel in meinem Fall ist

00:38:25.587 --> 00:38:27.688
es jetzt, ich habe diverse Sachen, die halt nur

00:38:27.688 --> 00:38:29.508
fürs Django Template Layer interessant sind,

00:38:29.587 --> 00:38:31.488
also ein Middleware und sowas und da sind halt

00:38:31.488 --> 00:38:33.648
ein, zwei Dependencies drin, die ich in anderen Cases nicht brauche.

00:38:34.508 --> 00:38:35.728
Das heißt, ich kann einfach hingehen

00:38:35.728 --> 00:38:37.367
und sagen, hey Leute, also die ist dokumentiert,

00:38:37.448 --> 00:38:39.748
sagt, hey Leute, das ist das Standardpaket, das ist so

00:38:39.748 --> 00:38:41.748
das normale Shit, den man so mit Django machen

00:38:41.748 --> 00:38:43.768
kann und wenn ihr jetzt

00:38:43.768 --> 00:38:45.847
irgendwas spezielles Julia haben wollt, das ist

00:38:45.847 --> 00:38:47.788
hier dokumentiert und dann müsst ihr halt noch

00:38:47.788 --> 00:38:49.708
die Extension mit installieren und dann kriegen die halt

00:38:49.708 --> 00:38:50.127
auch die

00:38:50.127 --> 00:38:51.768
Penalty.

00:38:52.748 --> 00:38:55.728
Ja, das ist halt auch die Frage, bietet man den Leuten direkt

00:38:55.728 --> 00:38:57.668
das volle Rundum-Sorglos-Paket an, dass die ja nicht

00:38:57.668 --> 00:38:59.668
so viel Aufwand haben und das alles lesen müssen und

00:38:59.668 --> 00:39:01.248
alles nachinstallieren müssen oder

00:39:01.248 --> 00:39:03.107
macht man das halt sehr modular?

00:39:04.067 --> 00:39:05.188
Also ich sag mal so,

00:39:05.188 --> 00:39:35.168
und Jochen unterhalten sich über die Programmiersprache Python

00:39:35.188 --> 00:39:37.268
Sachen sonst nachher in so ein Projekt rein, die man eigentlich gar nicht

00:39:37.268 --> 00:39:37.728
haben möchte.

00:39:38.788 --> 00:39:40.208
Genau, ich habe jetzt hier gerade nochmal

00:39:40.208 --> 00:39:43.168
das letzte Paket, das ich irgendwie

00:39:43.168 --> 00:39:45.188
gebaut habe, reingeguckt.

00:39:45.567 --> 00:39:47.127
Das ist Django Fire Response.

00:39:47.948 --> 00:39:49.288
Oh, da hast du auch in deinem Stream

00:39:49.288 --> 00:39:51.388
einiges dran gearbeitet. Genau, da habe ich

00:39:51.388 --> 00:39:53.248
jetzt bis letzte Woche noch was dran gemacht.

00:39:53.268 --> 00:39:55.268
Falls ihr es noch nicht mitbekommen hattet, in der letzten Folge hatten wir

00:39:55.268 --> 00:39:57.168
erwähnt, dass der Jochen jetzt nämlich auch streamt.

00:39:57.168 --> 00:39:59.388
Relativ häufig und da könnt ihr zugucken, was der die ganze Zeit

00:39:59.388 --> 00:40:00.928
für Unsinn anstellt und wie man dann so entwickelt,

00:40:01.087 --> 00:40:01.867
wie man das sein macht.

00:40:02.748 --> 00:40:04.208
Ich finde es eigentlich, es sieht cool aus.

00:40:05.188 --> 00:40:06.668
und ja, wirklich.

00:40:06.668 --> 00:40:07.168
Danke, danke, danke.

00:40:08.127 --> 00:40:10.627
Genau, ja, technisch gar nicht so schlecht, glaube ich.

00:40:10.908 --> 00:40:12.408
Inhaltlich muss ich noch ein bisschen feilen, glaube ich.

00:40:12.428 --> 00:40:14.208
Nein, andersrum, weil ich finde auch tatsächlich, dass es inhaltlich

00:40:14.208 --> 00:40:16.288
interessant ist, was man da alles so umsetzen kann.

00:40:16.468 --> 00:40:18.008
Ich baue das gerade so ein bisschen nach, ehrlich gesagt.

00:40:19.148 --> 00:40:20.688
Also, Feilresponses fand ich sehr interessant.

00:40:20.847 --> 00:40:22.768
Ja, also, wo ich

00:40:22.768 --> 00:40:24.547
tatsächlich noch Schwierigkeiten, ich merke das, das habe ich auch heute wieder

00:40:24.547 --> 00:40:26.567
gemerkt, tatsächlich, was mir

00:40:26.567 --> 00:40:28.728
schwerfällt und was ich nicht so gedacht hätte, nicht erwartet hätte,

00:40:29.188 --> 00:40:30.627
also, wenn ich irgendwie so

00:40:30.627 --> 00:40:32.547
an den Projekten rumentwickle und ich

00:40:32.547 --> 00:40:34.408
weiß aber, das können sich Leute

00:40:34.408 --> 00:40:36.668
nachher angucken, dann tendiere ich dazu zu sagen,

00:40:36.867 --> 00:40:38.728
so, ah, jetzt gut, jetzt müsste ich

00:40:38.728 --> 00:40:40.208
da jetzt mal tief graben oder irgendwie

00:40:40.208 --> 00:40:42.488
versuchen rauszukriegen, das wird voll langweilig und ich muss

00:40:42.488 --> 00:40:44.627
ganz viel probieren und ich habe absolut keine Ahnung, ob ich damit

00:40:44.627 --> 00:40:46.448
irgendwie eine halbe Stunde fertig bin oder so und jetzt

00:40:46.448 --> 00:40:48.208
kann es sein, dass sich Leute einfach eine halbe Stunde lang

00:40:48.208 --> 00:40:50.688
fürchterlich langweilen und es ist

00:40:50.688 --> 00:40:52.788
fruchtlos und dann, also das

00:40:52.788 --> 00:40:54.708
merkt man, weil normalerweise würde mir das halt

00:40:54.708 --> 00:40:55.828
nichts ausmachen, mir macht das ja Spaß,

00:40:55.968 --> 00:40:58.627
und dann probiere ich halt rum und wenn es

00:40:58.627 --> 00:40:59.908
halt geht, super, wenn es nicht geht, naja.

00:40:59.988 --> 00:41:02.547
Also ich muss sagen, also mir macht das dann auch Spaß, weil dieses Rumprobieren,

00:41:02.547 --> 00:41:04.468
das kriege ich dann ja mit und da lerne ich auch

00:41:04.468 --> 00:41:06.347
mal was bei und ich glaube gerade dann, wenn man halt nicht

00:41:06.347 --> 00:41:07.988
alles so perfekt vorher schon weiß,

00:41:08.408 --> 00:41:10.468
sondern es so ein bisschen rausknobeln muss und man ist ja quasi

00:41:10.468 --> 00:41:12.248
mit live dabei, das ist ein bisschen vielleicht wie ein Podcast,

00:41:12.708 --> 00:41:14.468
durch dieses rausknobeln, das du ja

00:41:14.468 --> 00:41:16.288
dann machst, dann knobelt man selber so ein bisschen rein

00:41:16.288 --> 00:41:18.367
und man kommt halt tiefer in die Thematik rein

00:41:18.367 --> 00:41:20.268
und man hat ein tieferes Verständnis für die

00:41:20.268 --> 00:41:22.348
Zusammenhänge und das ist unheimlich wertvoll

00:41:22.348 --> 00:41:24.208
dann, deswegen sollte man das auch so tun.

00:41:24.388 --> 00:41:26.388
Ja, das ist tatsächlich vielleicht eine interessante Geschichte,

00:41:26.547 --> 00:41:28.308
dass man genau dabei Leuten halt zuzutun,

00:41:28.527 --> 00:41:29.487
aber wenn man das macht oder

00:41:29.487 --> 00:41:31.948
für mich war das überraschenderweise so,

00:41:31.948 --> 00:42:01.928
und Jochen unterhalten sich über die Programmiersprache Python

00:42:01.948 --> 00:42:03.648
selber kurz draufdrücken, dann hast du einen

00:42:03.648 --> 00:42:06.308
großen, sensierten Teil, dann kannst du wieder freischalten

00:42:06.308 --> 00:42:07.487
und dann, okay, geht wieder.

00:42:08.527 --> 00:42:10.468
Ja, genau, wird sich schon

00:42:10.468 --> 00:42:12.007
irgendeine Methode finden. Kennt ihr das aus

00:42:12.007 --> 00:42:14.388
Starship Troopers, wo es dann kurz diesen Zensur-Python gibt und in den Hintergrund

00:42:14.388 --> 00:42:15.367
werden die Kühe dann zu den Elfen gegessen?

00:42:15.367 --> 00:42:17.828
Ja, und hinten werden die Gedärme fliegen, genau.

00:42:18.228 --> 00:42:19.168
Ja, das stimmt.

00:42:20.168 --> 00:42:21.067
Das ist eine gute Idee.

00:42:22.007 --> 00:42:24.228
Da fliegen noch nicht genug Gedärme in dem Stream.

00:42:24.688 --> 00:42:25.348
Das ist wahr.

00:42:28.107 --> 00:42:29.828
Genau, da habe ich ja dieses Django

00:42:29.828 --> 00:42:31.047
FireResponse-Paket gebaut.

00:42:31.428 --> 00:42:33.708
Da habe ich etwas verwendet, was ich jetzt vielleicht dann

00:42:33.708 --> 00:42:35.607
auch nur aus Spaß

00:42:35.607 --> 00:42:36.808
habe ich

00:42:36.808 --> 00:42:39.948
MBDev, was in der Data Science-Welt

00:42:39.948 --> 00:42:41.627
so ein bisschen verbreitet hat.

00:42:41.627 --> 00:42:43.188
Vielleicht nochmal ganz kurz, das hast du auch schon mal

00:42:43.188 --> 00:42:45.627
erklärt, aber MBDev ist quasi entwickeln mit dem

00:42:45.627 --> 00:42:47.268
Notebook, aber das Notebook quasi

00:42:47.268 --> 00:42:49.948
das bei dem Paket automatisch mit den Dokumentationen

00:42:49.948 --> 00:42:51.527
und so erzeugen kann. Genau, also das

00:42:51.527 --> 00:42:53.648
eigentliche Ding, was das so interessant macht, ist, dass man

00:42:53.648 --> 00:42:55.047
so ein bisschen Literature Programming

00:42:55.047 --> 00:42:57.748
machen kann und halt Dokumentationen,

00:42:57.748 --> 00:42:59.848
Code und Tests irgendwie

00:42:59.848 --> 00:43:00.928
direkt zusammenstehen hat.

00:43:01.708 --> 00:43:03.648
Und daraus dann halt sozusagen aus den Notebooks

00:43:03.648 --> 00:43:05.668
wird dann das Paket erzeugt

00:43:05.668 --> 00:43:07.448
oder das Modul, also der Source-Code

00:43:07.448 --> 00:43:09.168
erzeugt und

00:43:09.168 --> 00:43:11.567
aus dem Source-Code wird dann ein Paket gebaut

00:43:11.567 --> 00:43:13.688
und das geht auch tatsächlich, ich habe jetzt nochmal nachgeguckt, weil ich

00:43:13.688 --> 00:43:15.627
es gar nicht mehr wusste, aber ja, das macht das per

00:43:15.627 --> 00:43:17.748
Setup.py und da hat

00:43:17.748 --> 00:43:18.708
man halt auch eben

00:43:18.708 --> 00:43:21.007
da schreibt man halt rein

00:43:21.007 --> 00:43:23.547
extra Require

00:43:23.547 --> 00:43:25.587
zum Beispiel und

00:43:25.587 --> 00:43:27.648
kann dann halt, das sind einfach

00:43:27.648 --> 00:43:29.748
und Dict und dann kann man da beliebige Dinge reinschreiben.

00:43:29.908 --> 00:43:31.567
Zum Beispiel, was ich jetzt da nur drinstehen habe, ist halt

00:43:31.567 --> 00:43:33.648
Dev und dann Dev Requirements, aber man kann halt

00:43:33.648 --> 00:43:35.688
auch eben alle möglichen optionalen

00:43:35.688 --> 00:43:37.507
Geschichten mit angeben, die man dann halt installiert oder nicht.

00:43:37.948 --> 00:43:39.348
Und da wäre es zum Beispiel so,

00:43:39.627 --> 00:43:41.527
dieses Django File Response-Dings hat selber praktisch

00:43:41.527 --> 00:43:42.888
keine Abhängigkeiten,

00:43:43.668 --> 00:43:45.248
aber wenn ich jetzt

00:43:45.248 --> 00:43:47.708
die Dev Requirements da mit reinnehmen würde,

00:43:48.228 --> 00:43:49.587
dann wäre das ziemlich übel,

00:43:49.688 --> 00:43:51.507
weil dann würde der ganze NBDev-Kram mitkommen,

00:43:51.607 --> 00:43:53.248
zum Beispiel. Es würden

00:43:53.248 --> 00:43:55.248
Jupyter Notebooks mitkommen, es würde Pandas mitkommen, es würde

00:43:55.248 --> 00:43:57.228
NumPy mitkommen, es würde irgendwie so

00:43:57.228 --> 00:44:00.808
das halbe Deadline-Unternehmensumgang mitkommen.

00:44:00.808 --> 00:44:04.888
Ja, und auf dem Web-Server hast du, wo du das Django verwenden willst, hast du das ja gar nicht.

00:44:05.208 --> 00:44:09.567
Und plötzlich wird dann wahrscheinlich irgendjemand da vor einer Konsole sitzen und denkt sich,

00:44:09.888 --> 00:44:12.208
warum kommt da jetzt ein Fortran-Compiler mit?

00:44:13.027 --> 00:44:15.348
Und warum dauert das eine halbe Stunde, bis das kompiliert ist?

00:44:15.987 --> 00:44:17.848
Ja, genau.

00:44:18.027 --> 00:44:18.547
Nicht so gut.

00:44:19.428 --> 00:44:20.867
Aber vielleicht noch mal kurz zur NBDEV.

00:44:21.607 --> 00:44:25.808
Wie baut man denn quasi sein normales Notebook in ein NBDEV um, damit es halt dann auch als Paket...

00:44:25.808 --> 00:44:27.348
mit.

00:44:27.888 --> 00:44:29.728
Muss ich da quasi ein anderes Notebook nehmen

00:44:29.728 --> 00:44:31.007
oder kann ich einfach Jupyter Notebook nehmen?

00:44:31.087 --> 00:44:33.648
Das ist Jupyter Notebook, aber das einzige,

00:44:34.047 --> 00:44:35.768
was man da braucht, ist im Grunde

00:44:35.768 --> 00:44:37.428
dieses, man muss

00:44:37.428 --> 00:44:39.448
mbdev installieren und dann halt mbdev

00:44:39.448 --> 00:44:40.968
build lib und dann hat man so ein paar

00:44:40.968 --> 00:44:43.607
Metaanweisungen

00:44:43.607 --> 00:44:45.527
sozusagen für mbdev in dem Notebook selber.

00:44:45.828 --> 00:44:47.547
Das heißt, das ist eine Extension für das eigentliche Notebook

00:44:47.547 --> 00:44:49.708
und wo man dann quasi ein bisschen anders strukturiert,

00:44:49.788 --> 00:44:50.367
als man das macht?

00:44:50.367 --> 00:44:52.507
Das ist keine Extension, sondern es liest es einfach nur.

00:44:53.087 --> 00:44:54.268
Und wenn man da sowas

00:44:54.268 --> 00:44:56.228
reinschreibt wie Kommentar und dann Export

00:44:56.228 --> 00:44:58.148
oder Default Export.

00:44:58.468 --> 00:45:00.168
Diese Sachen werden dann ausgewertet

00:45:00.168 --> 00:45:02.087
und werden dann benutzt, um dann daraus

00:45:02.087 --> 00:45:04.367
zum Beispiel die Python-Module zu erzeugen.

00:45:05.408 --> 00:45:06.328
Also es ist

00:45:06.328 --> 00:45:07.848
nicht mal irgendwie ein

00:45:07.848 --> 00:45:09.948
Jupyter-Plugin oder sowas.

00:45:10.027 --> 00:45:12.027
Das heißt, man muss einfach richtig seine Zellen vom

00:45:12.027 --> 00:45:13.987
Typ her definieren im Jupyter-Notebook und

00:45:13.987 --> 00:45:16.067
dann Docs hinschreiben.

00:45:16.468 --> 00:45:17.928
Und das schreibt dann halt den Source-Code dann raus.

00:45:18.268 --> 00:45:18.367
Okay.

00:45:20.168 --> 00:45:21.367
Also ich fand es eigentlich ganz nett.

00:45:21.728 --> 00:45:22.688
Ich finde das sehr spannend. Also es ist sehr cool.

00:45:22.688 --> 00:45:24.948
Ich benutze auch relativ viele Notebooks zum Entwickeln.

00:45:25.468 --> 00:45:26.928
Also gerade auch so Django, so IO-Sachen

00:45:26.928 --> 00:45:28.867
oder Modellsachen, Funktionen,

00:45:28.888 --> 00:45:29.268
Methoden.

00:45:30.468 --> 00:45:32.547
Die kann man einfach super schnell dann testen. Die gehen halt an,

00:45:32.728 --> 00:45:34.948
Django schnell auf und dann kann man testen.

00:45:35.127 --> 00:45:36.888
Ich mache das tatsächlich, das haben wir aber auch beim

00:45:36.888 --> 00:45:38.828
letzten Mal, als ich bei euch eingeladen war, schon mal drüber gesprochen.

00:45:39.268 --> 00:45:40.448
Ich mache das tatsächlich so, dass

00:45:40.448 --> 00:45:42.867
ich das sich oft mit dem Debugger

00:45:42.867 --> 00:45:43.848
entwickle.

00:45:44.067 --> 00:45:45.388
Ja, das ist auch eine Option.

00:45:46.567 --> 00:45:48.587
Das mache ich nicht so oft, aber

00:45:48.587 --> 00:45:50.288
das wollte ich mir auf jeden Fall auch nochmal angucken.

00:45:50.867 --> 00:45:52.027
Du benutzt ja auch PyCharm.

00:45:52.688 --> 00:45:54.248
und das ist, glaube ich, sehr komfortabel.

00:45:55.047 --> 00:45:56.487
Man muss sich auf jeden Fall abgewöhnen,

00:45:56.547 --> 00:45:58.388
STRG-S zu drücken, weil dann

00:45:58.388 --> 00:46:00.408
speichert ihr die Datei und dann fliegt ihr lieber raus.

00:46:01.007 --> 00:46:02.648
Aber ich finde, das ist

00:46:02.648 --> 00:46:04.688
eigentlich ganz cool, vor allem wenn man

00:46:04.688 --> 00:46:06.007
so viele Funktionen und

00:46:06.007 --> 00:46:08.448
irgendwie externen Daten

00:46:08.448 --> 00:46:10.308
und sowas bekommt, wo man dann oft, okay,

00:46:10.367 --> 00:46:11.888
da muss ich mir auf die dritte Array-Stelle zugreifen,

00:46:11.987 --> 00:46:14.547
du weißt, es ist da irgendwo, du weißt

00:46:14.547 --> 00:46:16.348
nicht genau, wo es ist und da macht man

00:46:16.348 --> 00:46:18.408
normalerweise viele Runden und das ist dann einfach angenehm,

00:46:18.468 --> 00:46:19.468
wenn du dann direkt einfach

00:46:20.127 --> 00:46:21.627
in diesem Evaluate-Expression

00:46:21.627 --> 00:46:23.968
einfach die Sachen da zusammen klopfst und dann direkt auf den Knopf drückst

00:46:23.968 --> 00:46:24.948
und weißt, jo, läuft, passt.

00:46:25.768 --> 00:46:27.987
Ja, das muss ich auch wieder in den Land sprechen.

00:46:28.087 --> 00:46:30.007
Das geht auch in anderen Entwicklungsumgebungen

00:46:30.007 --> 00:46:31.908
tatsächlich ganz gut, wenn man die richtig

00:46:31.908 --> 00:46:32.848
einträgt.

00:46:33.808 --> 00:46:35.448
Das haben wir so ein bisschen gefummelt, weshalb man halt

00:46:35.448 --> 00:46:37.168
den Debugger halt so laufen hat, wie man das gerne hätte.

00:46:37.708 --> 00:46:39.708
Aber hast du da schon diesen Debugger, den wir

00:46:39.708 --> 00:46:40.708
letztes Mal vorgestellt haben,

00:46:40.908 --> 00:46:43.627
gesehen? Und zwar

00:46:43.627 --> 00:46:45.127
Kodo, oder wie hieß der? Kodo App?

00:46:45.728 --> 00:46:47.587
Kodo App, genau. Das ist ein neuer

00:46:47.587 --> 00:46:49.748
Dango-Debugger, der

00:46:49.748 --> 00:46:51.748
relativ coole Sachen machen kann, wie Visualisierung

00:46:51.748 --> 00:46:53.448
der Code-Pathes und sowas. Cool.

00:46:53.928 --> 00:46:55.728
Relativ geil, müssen wir schauen. Ist aber nicht für Python.

00:46:57.527 --> 00:46:57.808
Ja.

00:46:59.888 --> 00:47:01.668
Ja, aber das wäre auch auf jeden Fall

00:47:01.668 --> 00:47:03.828
genau, also das habe ich mir auch zum Ziel gesetzt.

00:47:04.027 --> 00:47:05.828
Ich meine, normalerweise benutze ich ja immer Vim oder so,

00:47:06.308 --> 00:47:07.668
aber das eben jetzt mal explizit

00:47:07.668 --> 00:47:09.148
nicht zu machen, sondern im Stream halt

00:47:09.148 --> 00:47:11.288
versuche ich jetzt, zum Beispiel habe ich jetzt immer eher

00:47:11.288 --> 00:47:12.168
VS Code benutzt.

00:47:13.428 --> 00:47:14.968
Einfach nur, um das halt auch so ein bisschen

00:47:14.968 --> 00:47:17.487
zu lernen. Oder halt auch PyCharm würde ich auch

00:47:17.487 --> 00:47:19.567
auf jeden Fall machen. Ja, also, ach so, was du auch

00:47:19.567 --> 00:47:21.268
noch dabei machen solltest.

00:47:21.388 --> 00:47:23.468
Vielleicht ist so ein bisschen so die Konfigurationsteilung, ein bisschen so die Magie

00:47:23.468 --> 00:47:25.127
zeigt, wie man das Tool dann jeweils benutzt.

00:47:25.487 --> 00:47:27.348
Das ist, glaube ich, auch nochmal sehr lehrreich. Also vielleicht kurz

00:47:27.348 --> 00:47:29.328
darauf eingehe ich so, wie man es

00:47:29.328 --> 00:47:31.328
danach macht. Kann ich mir einfach mal vornehmen,

00:47:31.428 --> 00:47:32.468
das zu versuchen zu verwenden.

00:47:32.968 --> 00:47:35.127
Je mehr man halt neue Sachen lernt,

00:47:35.188 --> 00:47:35.708
die man noch nicht lernt.

00:47:37.968 --> 00:47:39.228
Ja, okay,

00:47:39.328 --> 00:47:39.948
ich werde es mal versuchen.

00:47:41.527 --> 00:47:41.828
Ja, ja.

00:47:45.648 --> 00:47:47.228
Ja, das ist schon richtig. Man muss einfach ab und zu mal

00:47:47.228 --> 00:47:47.808
Dinge ausprobieren.

00:47:47.808 --> 00:47:48.627
Ja, stimmt.

00:47:49.567 --> 00:47:54.007
Ja, wenn man sonst immer noch bei seinen Sachen bleibt, dann wird man darin auch ein bisschen besser, aber was neue Sachen ist schon spannend

00:47:54.007 --> 00:47:58.027
Ja, oft sowas wie Programmieren oder sowas kann ja auch für einige Leute neu sein

00:47:58.027 --> 00:48:04.248
Ja, eigentlich bin ich schon fast zu lange dafür dabei, um das nochmal zu erzählen, aber ja, ist noch wahr

00:48:04.248 --> 00:48:06.987
Das Gefühl geht auch nicht weg

00:48:06.987 --> 00:48:14.728
Ja, okay, man hat halt von allen Sachen immer keine Ahnung, aber irgendwie hat man dann doch mehr Ahnung hinterher, so Rückblicken von einigen Sachen, die man eigentlich gar nicht wissen wollte

00:48:14.728 --> 00:48:29.795
Aber so da vorne ist immer der Berg wird immer gr anstatt kleiner das ist so ein bisschen das Problem Ja wei nicht was mir zu zunehmender Erfahrung auff ist oft muss ich gar nicht also was mir heute leichter f oder der Unterschied zwischen heute und

00:48:29.795 --> 00:48:31.675
den Zeiten, wo ich halt wenig Erfahrung hatte, war halt,

00:48:32.015 --> 00:48:33.915
ich hatte früher immer mehr das Gefühl,

00:48:33.995 --> 00:48:35.795
bewusst Dinge zu tun oder bewusst irgendwie Sachen

00:48:35.795 --> 00:48:37.835
auszuprobieren. Und heute muss ich

00:48:37.835 --> 00:48:39.375
eigentlich nur, denke ich mir so, okay,

00:48:39.755 --> 00:48:41.755
ich habe keine Ahnung, wie genau es passieren wird, aber

00:48:41.755 --> 00:48:43.615
irgendwie in der nächsten halben Stunde wird mir schon irgendwas

00:48:43.615 --> 00:48:45.735
einfallen. Und dann bin ich halt da rum und dann hinterher

00:48:45.735 --> 00:48:47.735
denke ich so, okay, das war es, aber keine Ahnung, ich weiß gar nicht,

00:48:47.735 --> 00:49:17.715
und Jochen unterhalten sich über die Programmiersprache Python

00:49:17.735 --> 00:49:19.375
neben den Seiten des Packages steht und dann

00:49:19.375 --> 00:49:21.635
einen Bug hat, beziehungsweise auch

00:49:21.635 --> 00:49:23.455
irgendwie so ein gewisses Maintenance machen muss, zum Beispiel

00:49:23.455 --> 00:49:25.555
gibt es eine neue Dango-Version und man wird dann inkompatibel,

00:49:25.615 --> 00:49:27.655
das passiert ja leider immer wieder mal

00:49:27.655 --> 00:49:29.515
und das ist tatsächlich auch

00:49:29.515 --> 00:49:31.475
eine Sache, dass wenn man

00:49:31.475 --> 00:49:33.515
so ein Package in die Welt setzt, ich nehme jetzt mal

00:49:33.515 --> 00:49:35.635
extra dieses Wort, dass man

00:49:35.635 --> 00:49:37.695
halt da schon ein bisschen im Kopf behalten sollte,

00:49:37.835 --> 00:49:39.655
wie gehe ich denn damit um mit der Maintenorship?

00:49:39.795 --> 00:49:41.775
Also wenn man sagt, ich mache das jetzt für mich, mal zum Ausprobieren,

00:49:41.855 --> 00:49:43.495
das nutzt eh keiner. Ich suche immer noch kurz

00:49:43.495 --> 00:49:45.455
den Übergang von der Dusche, aber okay, du bist für

00:49:45.455 --> 00:49:46.175
ein Maintenorship, ja.

00:49:47.735 --> 00:49:50.795
wegen Bugs und Problemen.

00:49:50.795 --> 00:49:52.395
Ja, gerade, wie lange man darüber nachdenken sollte.

00:49:52.655 --> 00:49:52.795
Genau.

00:49:54.255 --> 00:49:56.515
Und das ist tatsächlich

00:49:56.515 --> 00:49:58.475
auch eine Sache, das merke ich

00:49:58.475 --> 00:50:00.395
halt auch oft, dass ich halt vor allem in älteren Projekten,

00:50:00.455 --> 00:50:02.235
die ich habe, dass ich da halt ein sehr cooles Package

00:50:02.235 --> 00:50:04.215
verwendet habe, würde ich heute nicht mehr machen,

00:50:04.275 --> 00:50:06.255
aber ich habe halt den Code so gebaut, dass es halt funktioniert.

00:50:06.795 --> 00:50:08.235
Und dieses Package ist halt irgendwann mal hart

00:50:08.235 --> 00:50:09.895
abandoned worden, also dass dann wirklich die Leute

00:50:09.895 --> 00:50:12.055
einfach kein Interesse mehr daran haben.

00:50:12.175 --> 00:50:14.075
Also die dann nicht mal mehr das Interesse haben, zu sagen,

00:50:14.175 --> 00:50:16.175
hey, ich schreibe einfach

00:50:16.175 --> 00:50:19.915
sorry, ich weiß nicht, bin jetzt irgendwie Gärtner und ich mache kein Programmieren mehr,

00:50:20.335 --> 00:50:22.035
kann ich nicht helfen, sondern es einfach kommt gar nichts mehr,

00:50:22.375 --> 00:50:23.635
obwohl die Leute halt immer noch aktiv sind.

00:50:23.835 --> 00:50:25.355
Also man kann es ja auch sehen, was Leute so machen.

00:50:25.935 --> 00:50:29.395
Mir ist halt immer wieder sehr ärgerlich und ich glaube, dass wenn man so ein Paket in die Welt setzt,

00:50:29.655 --> 00:50:33.435
dann man irgendwann merkt, okay, ich habe jetzt den Fokus verloren und das nutzt aber vielleicht noch irgendwer.

00:50:33.755 --> 00:50:37.695
Ich glaube, das Erste, was man machen kann, ist halt, dass man irgendwo Prominenten im Möglichen hat,

00:50:37.795 --> 00:50:39.335
dass den Leuten das Feedback geben können.

00:50:39.435 --> 00:50:42.095
Also offensichtlich ist es einfach bei GitHub die Issues.

00:50:42.095 --> 00:50:44.015
wie kann man übrigens auch sehr schön über die

00:50:44.015 --> 00:50:45.415
zum Beispiel SetupPyodot oder

00:50:45.415 --> 00:50:47.455
ProjectSetupTommel direkt verlinken

00:50:47.455 --> 00:50:49.975
in PyPy, das wird direkt

00:50:49.975 --> 00:50:51.935
in das ChangeLog und so kann man alles perfekt verlinken,

00:50:52.035 --> 00:50:53.175
dass die Leute gar nicht lange suchen müssen.

00:50:53.835 --> 00:50:55.615
Und dass man dann auf jeden Fall Leuten, die das halt nutzen,

00:50:55.715 --> 00:50:57.875
die Möglichkeit gibt, dass sie Feedback geben.

00:50:57.995 --> 00:51:00.035
Also zum Beispiel, ich habe die ersten zwei Issues bekommen

00:51:00.035 --> 00:51:01.795
tatsächlich mit Übersetzungen, weil halt

00:51:01.795 --> 00:51:03.335
in dem Package halt ein paar

00:51:03.335 --> 00:51:05.755
Models, die ich da bereitstelle, waren halt auf Deutsch,

00:51:05.835 --> 00:51:07.735
weil die meisten Projekte, die wir nutzen, sind halt auf Deutsch.

00:51:07.795 --> 00:51:10.195
Und es ist halt nicht aufgefallen, dass da der Übersetzungshelper

00:51:10.195 --> 00:51:11.715
fehlt. Und das war dann

00:51:11.715 --> 00:51:13.955
für die Leute halt echt super ärgerlich, weil die halt das irgendwie nutzen

00:51:13.955 --> 00:51:15.635
wollten. Wahrscheinlich haben die Blog-Artikel von mir gelesen,

00:51:15.715 --> 00:51:17.395
weil dann so, ja Mist, in dem Projekt ist alles auf

00:51:17.395 --> 00:51:19.635
Sprache X und das plötzlich auf Deutsch.

00:51:19.975 --> 00:51:21.375
Wenn der gut anslät, dann kommt irgendein unteren raus.

00:51:21.635 --> 00:51:23.795
Genau, und das hat mich

00:51:23.795 --> 00:51:25.695
dann total gefreut. Es kam auch direkt ein Podcast hinterher,

00:51:25.735 --> 00:51:27.835
hey, hier so und so, und hab dann auch die Übersetzung nachgezogen

00:51:27.835 --> 00:51:29.095
und alles super. Also,

00:51:29.555 --> 00:51:31.535
hätte ich sonst niemals rausgefunden, weil bis die irgendwie

00:51:31.535 --> 00:51:33.755
die Webseite irgendwie mich anonym

00:51:33.755 --> 00:51:35.855
anschreiben oder mich über LinkedIn suchen oder keine Ahnung

00:51:35.855 --> 00:51:37.695
was, ist das ein riesen Overhead und so. Einfach

00:51:37.695 --> 00:51:39.555
kennt halt jeder, ist schnell gemacht und

00:51:39.555 --> 00:51:41.455
das ist, glaube ich, so ein kleiner

00:51:41.455 --> 00:51:43.075
kleiner Convenience, die man dann

00:51:43.075 --> 00:51:45.195
seinen Usern irgendwie bereitstellen kann,

00:51:45.235 --> 00:51:46.955
weil es kostet ja auch nichts, das ist ja schnell gemacht.

00:51:47.575 --> 00:51:48.775
Und wie gesagt, das andere mit der

00:51:48.775 --> 00:51:50.835
Metaindership, wenn man halt wirklich sagt,

00:51:50.935 --> 00:51:52.135
okay, ich gebe das jetzt auf,

00:51:52.975 --> 00:51:54.875
es gibt ja so, entweder so

00:51:54.875 --> 00:51:56.815
Projekte, so wie Jazzband oder sowas, da gab es

00:51:56.815 --> 00:51:58.315
noch in der DjangoCon einen schönen Vortrag dazu,

00:51:58.655 --> 00:52:00.855
wenn das wirklich ein größeres Projekt ist, dass man die da einfach abgeben

00:52:00.855 --> 00:52:02.815
kann und sagen kann, hey, sorry, ich bin raus

00:52:02.815 --> 00:52:04.435
hier mit dem Kram, aber das nutzen noch Leute,

00:52:05.195 --> 00:52:06.075
bitte kümmert euch drum.

00:52:07.595 --> 00:52:08.635
Und auf der anderen Seite,

00:52:08.735 --> 00:52:10.495
dass man natürlich auch dann notfalls auch andere Leute

00:52:10.495 --> 00:52:11.955
einfach befördern kann und einfach

00:52:11.955 --> 00:52:13.555
sagen kann, hier

00:52:13.555 --> 00:52:15.635
das,

00:52:16.675 --> 00:52:18.375
also ich habe jetzt im Interesse und ich muss das reparieren

00:52:18.375 --> 00:52:20.395
und sage, gut, ich habe selber keine Zeit, dann ach halt,

00:52:20.955 --> 00:52:22.555
ist immer noch besser, wenn es gar keiner macht.

00:52:24.135 --> 00:52:24.455
Ja,

00:52:24.495 --> 00:52:26.535
ist ja gar nicht so einfach, also gerade bei Leuten, die halt

00:52:26.535 --> 00:52:28.395
for pleasure entwickeln,

00:52:28.555 --> 00:52:30.415
da muss man sich halt auch überlegen,

00:52:30.555 --> 00:52:32.335
will man nicht auch mal was Neues machen oder sowas,

00:52:32.375 --> 00:52:33.835
dann ist das schon klar, dass das schon schwierig ist,

00:52:34.175 --> 00:52:35.915
immer an den alten Sachen die irgendwie so mitzuschleppen.

00:52:36.295 --> 00:52:38.375
Aber das ist ja oft, also bei mir ist das keine

00:52:38.375 --> 00:52:40.175
bewusste Entscheidung, sondern das ist ja so,

00:52:40.175 --> 00:53:10.155
und so.

00:53:10.175 --> 00:53:10.935
auch anstrengend.

00:53:11.435 --> 00:53:12.735
Welche Größe du hast irgendwann.

00:53:13.655 --> 00:53:14.855
Das kann auch sehr overhelming werden.

00:53:15.035 --> 00:53:17.675
Das Leben von Leuten ändert sich ja auch oft.

00:53:17.895 --> 00:53:19.435
Also Situationen oder sowas.

00:53:20.515 --> 00:53:21.935
Wenn da irgendwie dann die

00:53:21.935 --> 00:53:23.975
Prioritäten sich privat verschieben und die Leute dann nicht

00:53:23.975 --> 00:53:26.115
mehr von morgens bis abends dann noch in ihrer Freizeit

00:53:26.115 --> 00:53:28.395
partizipieren können, dann...

00:53:28.395 --> 00:53:30.075
Ja, absolut. Ich meine, das ist natürlich ein Problem.

00:53:30.215 --> 00:53:31.855
Es hat ja auch Carlton Gibson, glaube ich,

00:53:31.935 --> 00:53:34.075
macht gefühlt jede zweite Jungle Corner einen hervorragenden Vortrag

00:53:34.075 --> 00:53:34.535
zu dem Thema.

00:53:36.035 --> 00:53:37.735
Das ist natürlich ein Problem, aber

00:53:37.735 --> 00:53:40.115
ich sage, es gibt halt relativ einfache Möglichkeiten,

00:53:40.175 --> 00:53:42.195
die zwingend natürlich nicht bei jedem zutreffen

00:53:42.195 --> 00:53:43.995
wenn einer wirklich sagt, hey ich habe es

00:53:43.995 --> 00:53:46.055
im Beruf gewechselt oder ich bin weggezogen oder keine Ahnung

00:53:46.055 --> 00:53:47.895
was und habe meinen GitHub Account geschlossen

00:53:47.895 --> 00:53:50.055
das war es jetzt für mich, okay kann immer

00:53:50.055 --> 00:53:52.095
passieren, aber ich sage eben in meisten

00:53:52.095 --> 00:53:54.095
Fällen ist es wahrscheinlich oft, dass

00:53:54.095 --> 00:53:56.115
Leute noch irgendwie latent am Ball bleiben

00:53:56.115 --> 00:53:58.315
und da gibt es halt ganz einfache

00:53:58.315 --> 00:54:00.215
Wege, das Problem zumindest für einen selbst

00:54:00.215 --> 00:54:01.735
irgendwie zu lösen.

00:54:01.875 --> 00:54:03.995
Ja, ich sage mal so, es ist schon schön, wenn man halt so ein paar Issues irgendwie

00:54:03.995 --> 00:54:05.875
nicht die größten nicht offen lässt

00:54:05.875 --> 00:54:08.215
sondern zumindest ein Team findet, das dann Lust hat

00:54:08.215 --> 00:54:10.115
wenn man gerade wirklich viele Leute hat, die dann

00:54:10.115 --> 00:54:12.175
was benutzen, dass denen halt wenigstens mal

00:54:12.175 --> 00:54:14.155
deren Pull-Request-Merch oder denen die Möglichkeit gibt,

00:54:14.215 --> 00:54:16.195
dass sie selber Sachen merchen können, also die Interesse

00:54:16.195 --> 00:54:18.275
dann haben. Ich meine, klar kann man auch einfach forken

00:54:18.275 --> 00:54:20.015
und dann irgendwie ein neues Package machen und sowas, aber

00:54:20.015 --> 00:54:22.355
es ist halt

00:54:22.355 --> 00:54:23.915
natürlich schon schön, damit das alles irgendwie ein bisschen

00:54:23.915 --> 00:54:25.535
zentralisiert ist, aber ja.

00:54:25.675 --> 00:54:27.855
Aber die Jazzband hast du ja erwähnt, das ist glaube ich eine ganz gute Möglichkeit,

00:54:27.975 --> 00:54:28.475
das zu tun, ja?

00:54:31.095 --> 00:54:32.115
Ja, ja, da bin ich

00:54:32.115 --> 00:54:34.135
jetzt, ach, naja, da hat sich da letztes Mal auch was

00:54:34.135 --> 00:54:35.955
getan, da bin ich jetzt auch mal da beigetreten.

00:54:36.155 --> 00:54:36.655
Aha, cool.

00:54:38.075 --> 00:54:39.995
Und dann, weil ich habe mich gesehen in dem

00:54:39.995 --> 00:54:41.815
Projekt, an dem ich momentan gerade da rumschraube.

00:54:42.395 --> 00:54:43.875
Da habe ich diverse Geschichten, die in Jasmine

00:54:43.875 --> 00:54:45.535
drin sind, reingewendert.

00:54:46.695 --> 00:54:47.795
Sozusagen, damit ich die

00:54:47.795 --> 00:54:49.515
anpassen kann und eigentlich

00:54:49.515 --> 00:54:51.895
kann ich das ja auch dann einfach so machen vielleicht.

00:54:52.115 --> 00:54:53.215
Einfach direkt, ja. Cool.

00:54:53.775 --> 00:54:55.935
Cool. Dann löst du quasi

00:54:55.935 --> 00:54:58.015
dein Problem und hilfst aber noch ganz

00:54:58.015 --> 00:54:59.775
vielen. Genau. Ja, gut.

00:55:00.175 --> 00:55:01.955
Vielleicht mache ich auch demjenigen, der dann die

00:55:01.955 --> 00:55:03.915
nächste Release baut, Kopfschmerzen. Das kann

00:55:03.915 --> 00:55:04.235
auch sein.

00:55:06.315 --> 00:55:07.515
Aber ja, mal schauen.

00:55:07.775 --> 00:55:08.695
Ist auf jeden Fall interessant.

00:55:08.695 --> 00:55:11.495
Das ist ja vielleicht auch eine kleine Verbesserung

00:55:11.495 --> 00:55:12.735
Ja, ja

00:55:12.735 --> 00:55:13.715
Ja

00:55:13.715 --> 00:55:16.135
Tja, was haben wir denn

00:55:16.135 --> 00:55:18.995
Was gibt es denn noch so für Dinge, die wir

00:55:18.995 --> 00:55:21.175
über Paket-Ding

00:55:21.175 --> 00:55:22.995
irgendwie erzählen sollten

00:55:22.995 --> 00:55:24.635
Habt ihr irgendwie

00:55:24.635 --> 00:55:27.235
also habt ihr irgendwelche Tools

00:55:27.235 --> 00:55:29.015
die ihr bevorzugt verwendet, also Flit

00:55:29.015 --> 00:55:30.995
Okay, kann das ihr jetzt nicht, hab ich auch nicht

00:55:30.995 --> 00:55:32.775
Werd ich dann demnächst mal ausprobieren, mal gucken

00:55:32.775 --> 00:55:33.215
Ja, ja

00:55:33.215 --> 00:55:36.995
Ja, Poetry

00:55:36.995 --> 00:55:39.495
verwende ich meistens,

00:55:39.635 --> 00:55:41.295
aber... Ja, tatsächlich, so zum

00:55:41.295 --> 00:55:43.335
normalen lokalen Verwalten schon, zum Bauen.

00:55:44.355 --> 00:55:45.355
Du verwendest pipenv,

00:55:45.435 --> 00:55:47.395
aber das ist nur für die...

00:55:48.375 --> 00:55:49.515
Genau, nur für die Requirements

00:55:49.515 --> 00:55:51.235
oder Logfile. Ja, genau.

00:55:52.175 --> 00:55:52.615
Tatsächlich,

00:55:53.235 --> 00:55:54.935
das Package, das

00:55:54.935 --> 00:55:57.335
schiebe ich noch mehr oder weniger genauso hoch, wie

00:55:57.335 --> 00:55:59.255
das damals 2012 war, also so eine ganz

00:55:59.255 --> 00:56:01.355
fiese Set, also das heißt fies, aber aufgeräumt ist sie

00:56:01.355 --> 00:56:03.655
aber eine sehr angestaubte Setup-Pi.

00:56:03.655 --> 00:56:04.495
Setup-Pi, ja.

00:56:04.495 --> 00:56:11.595
und ja, dann auch, ich baue da auch ein Wheel draus, weil das für, also ich selbst bin ja tatsächlich ein Windows-Nutzer,

00:56:11.735 --> 00:56:18.555
das wird jetzt auch ein bisschen populärer, aber wieder beim Coden, aber tatsächlich ist das mit den Wheels sehr, sehr angenehm,

00:56:18.635 --> 00:56:21.235
weil die Sachen sich einfach alle installieren lassen und man da keinen Knatsch mehr hat.

00:56:23.015 --> 00:56:25.975
PyCurl ist aktuell mein einziger Endgegner, wenn ich das installieren möchte.

00:56:28.575 --> 00:56:32.235
Aber genau, von daher, das habe ich mir aber auch aufgeschrieben.

00:56:32.235 --> 00:56:34.235
und der

00:57:02.235 --> 00:57:04.315
wie Entwickler das machen und das erinnerte mich

00:57:04.315 --> 00:57:06.235
jetzt gerade daran, ist halt, dass sie irgendwann mal

00:57:06.235 --> 00:57:08.255
sich damit beschäftigt haben und dann haben sie ein Setup

00:57:08.255 --> 00:57:10.355
für Wi-Fi geschrieben und das kopieren sie halt

00:57:10.355 --> 00:57:12.295
Projekt von Projekt zu Projekt immer weiter.

00:57:13.075 --> 00:57:14.035
Das Problem ist halt

00:57:14.035 --> 00:57:15.795
sozusagen aus

00:57:15.795 --> 00:57:18.835
Infrastruktursicht dann, ja, Abwärtskompatibilität

00:57:18.835 --> 00:57:20.155
ist halt super wichtig,

00:57:20.395 --> 00:57:22.175
weil es

00:57:22.175 --> 00:57:24.095
sind halt oft viele Dinge immer noch im Einsatz,

00:57:24.215 --> 00:57:26.175
die von irgendwann an und dazu mal kopiert

00:57:26.175 --> 00:57:28.515
worden sind. Das heißt, man kann die Abwärtskompatibilität

00:57:28.515 --> 00:57:30.155
nicht mehr brechen, weil ansonsten bricht ganz

00:57:30.155 --> 00:57:32.275
ganz viel, ganz, ganz viele Dinge

00:57:32.275 --> 00:57:33.555
und dessen

00:57:33.555 --> 00:57:35.995
Vorschlag war auch eher

00:57:35.995 --> 00:57:38.015
SetupCFG zu verwenden

00:57:38.015 --> 00:57:40.015
und dann halt auch mal, oder irgendein

00:57:40.015 --> 00:57:42.315
Projekt-Template oder so, oder eben ein Tool,

00:57:42.795 --> 00:57:43.815
was einem das halt abnimmt.

00:57:44.495 --> 00:57:46.015
Das klingt aber auch alles schon

00:57:46.015 --> 00:57:47.775
wirklich, also ganz im ganzen Packaging-Ding,

00:57:47.915 --> 00:57:49.995
so gordischer Knoten. Ja, das ist

00:57:49.995 --> 00:57:52.095
wirklich gemein. Ich meine, was will man machen, wenn du

00:57:52.095 --> 00:57:54.075
ja, ein Großteil der Pakete

00:57:54.075 --> 00:57:55.835
da draußen verwenden halt uralte Geschichten

00:57:55.835 --> 00:57:57.915
und du kannst es nicht mehr ändern, weil wenn du es änderst, dann

00:57:57.915 --> 00:57:59.935
brichst du all die Pakete. Ja, wegschmeißen, neu machen,

00:57:59.935 --> 00:58:01.815
auf Features verzichten, vielleicht braucht man die alle gar nicht.

00:58:05.055 --> 00:58:06.215
Ich habe das wesentliche

00:58:06.215 --> 00:58:06.675
konzentriert.

00:58:07.655 --> 00:58:09.995
Ja, genau, ich habe auch einmal so ein

00:58:09.995 --> 00:58:11.875
Cookie-Cutter-Template verwendet, also es gibt ja auch

00:58:11.875 --> 00:58:13.635
Python-Package

00:58:13.635 --> 00:58:17.935
Cookie-Cutter-Template

00:58:17.935 --> 00:58:18.735
von...

00:58:18.735 --> 00:58:21.755
Genau, und das

00:58:21.755 --> 00:58:23.375
fand ich auch ganz nett, aber...

00:58:23.375 --> 00:58:24.295
Der übrigens auch auf Twitch streamt.

00:58:26.415 --> 00:58:27.875
Ja, ja, richtig, genau, das habe ich mir

00:58:27.875 --> 00:58:28.195
auch schon

00:58:28.195 --> 00:58:30.395
auch ein bisschen angeguckt.

00:58:30.635 --> 00:58:31.115
Genau, fand ich auch gut.

00:58:33.135 --> 00:58:34.795
Was ich auch ganz interessant finde,

00:58:34.875 --> 00:58:35.295
apropos

00:58:35.295 --> 00:58:36.855
Projektsetup,

00:58:38.395 --> 00:58:40.335
der Code, der

00:58:40.335 --> 00:58:42.515
jetzt in meinem Package drin ist, der ist natürlich

00:58:42.515 --> 00:58:43.615
auch logischerweise getestet.

00:58:44.255 --> 00:58:45.615
Am Anfang war nicht so viel getestet.

00:58:46.895 --> 00:58:48.095
Inzwischen ist er getestet.

00:58:49.095 --> 00:58:50.095
Zumindest Großteils.

00:58:50.215 --> 00:58:52.455
Die Sachen, die ich halt tatsächlich nutze, die sind jetzt auch getestet.

00:58:53.495 --> 00:58:54.495
Und am Anfang war es auch so,

00:58:54.495 --> 00:58:56.135
dass diese Testfiles dann

00:58:56.135 --> 00:58:58.335
einfach mit in dem Package gebundelt wurden.

00:58:59.135 --> 00:58:59.835
Also die

00:58:59.835 --> 00:59:02.195
Metatests quasi, also die Sachen, die das Testen

00:59:02.195 --> 00:59:04.055
sich nachher ausliefere, mir ist dann nachher mal aufgefallen,

00:59:04.175 --> 00:59:05.935
die muss ich ja gar nicht mit ausliefern, weil das

00:59:05.935 --> 00:59:07.955
interessiert einfach keinen. Also ich meine,

00:59:08.055 --> 00:59:09.995
vielleicht ist es doch, weil die wissen wollen, ob ich vernünftig

00:59:09.995 --> 00:59:12.155
das abgedeckt habe, aber eigentlich liefere

00:59:12.155 --> 00:59:14.095
ich eine Datenmenge aus, die eigentlich nichts mit der

00:59:14.095 --> 00:59:15.455
eigentlichen Funktionalität zu tun hat.

00:59:16.115 --> 00:59:17.955
Und das war für mich so der erste

00:59:17.955 --> 00:59:20.035
Erkenntnispunkt, also sollte man mal reingucken,

00:59:20.115 --> 00:59:22.015
wie das damals mal irgendwie strukturiert hat, weil

00:59:22.015 --> 00:59:24.015
da kann man nämlich auch einstellen, welche Dateien dann

00:59:24.015 --> 00:59:25.795
von diesem Bundler gefunden werden sollen.

00:59:26.135 --> 00:59:56.115
und Jochen unterhalten sich über die Programmiersprache Python

00:59:56.135 --> 00:59:57.235
ausschließend hat, aber

00:59:57.235 --> 00:59:59.875
ja, die kleinen Hürden.

00:59:59.995 --> 01:00:01.375
Das ist auch eine der häufigsten Sachen,

01:00:01.655 --> 01:00:03.675
wenn man so, oder wie mir passiert,

01:00:03.795 --> 01:00:05.935
wenn man so eine Git-Action-Pipeline hat,

01:00:05.975 --> 01:00:07.035
die halt auch testet und so,

01:00:07.475 --> 01:00:09.775
das lokal funktioniert alles und dann macht man

01:00:09.775 --> 01:00:11.655
einen Push und dann geht die Pipeline kaputt und dann sagt man,

01:00:11.695 --> 01:00:13.655
hä, warum? Und ja, ganz oft ist es halt,

01:00:13.735 --> 01:00:15.775
weil in den Dev-Requirements irgendwas drin war,

01:00:15.835 --> 01:00:17.875
was man halt tatsächlich gebraucht hat, aber dann in den Produktions-

01:00:17.875 --> 01:00:20.175
Requirements nicht mehr und dann...

01:00:20.175 --> 01:00:21.575
Ich würde sagen, fast besser als andersrum,

01:00:21.635 --> 01:00:23.715
weil dann fällt es einem ja direkt auf und dann kann man es einbauen.

01:00:23.995 --> 01:00:25.835
Das ist wahr. Dafür sind ja Pipelines

01:00:25.835 --> 01:00:27.495
dann auch da oder dann die E-Mail-E-Mail kommt,

01:00:27.575 --> 01:00:28.955
dass das schon wieder kaputt gegangen ist oder so.

01:00:29.795 --> 01:00:30.455
Ja, ja, ja.

01:00:30.815 --> 01:00:31.595
Das ist ja ganz praktisch.

01:00:33.595 --> 01:00:34.475
Stichwort Pipelines.

01:00:35.075 --> 01:00:35.315
Ja.

01:00:36.035 --> 01:00:38.555
Hatten wir ja auch im Vorfeld noch drüber gesprochen.

01:00:39.115 --> 01:00:41.175
Was ja bei GitHub sehr, sehr cool ist,

01:00:41.215 --> 01:00:44.355
sind ja diese Travis-Matrizen,

01:00:44.795 --> 01:00:46.635
wo man, ich glaube, Travis ist das Richtige, ne?

01:00:46.755 --> 01:00:47.215
Kann sein, ja.

01:00:48.235 --> 01:00:49.515
Ja, die Tox-File, genau.

01:00:49.615 --> 01:00:50.615
Und Travis nutzt das dann.

01:00:50.735 --> 01:00:51.415
Man kann da einstellen,

01:00:51.495 --> 01:00:53.055
wie viele verschiedene Python-Versionen das einmal durchdauert.

01:00:53.055 --> 01:00:54.295
Genau, mit welchen Django-Versionen

01:00:54.295 --> 01:00:56.175
und dann kann man halt relativ simpel

01:00:56.175 --> 01:00:58.275
in so einer Art YAML-Datei, glaube ich, ist das,

01:00:58.615 --> 01:01:00.275
kann man dann halt eingeben

01:01:00.275 --> 01:01:02.475
und sagen, okay, ich unterstütze explizit

01:01:02.475 --> 01:01:04.575
Python 3.6.

01:01:05.235 --> 01:01:06.495
Genau, gehe ich durch und dann

01:01:06.495 --> 01:01:08.695
halt mit der und der Django-Version, da baut er dann eine Matrix auf

01:01:08.695 --> 01:01:10.495
und testet halt wirklich die Sachen gegeneinander

01:01:10.495 --> 01:01:12.575
durch und das ist halt sehr cool, weil auch wieder so eine

01:01:12.575 --> 01:01:14.515
Sache, man kann in der Setup oder wie auch immer

01:01:14.515 --> 01:01:16.595
man sein Projekt Meta deklariert, kann man

01:01:16.595 --> 01:01:18.455
halt auch explizit angeben, welche Django und Python

01:01:18.455 --> 01:01:20.395
oder was auch immer Versionen

01:01:20.395 --> 01:01:22.395
man unterstützt. Also ich bin ab 3.8

01:01:22.395 --> 01:01:23.715
und 3.2.

01:01:24.295 --> 01:01:24.935
Ja.

01:01:54.295 --> 01:01:56.635
mit dieser Matrix, gibst du die Sachen halt einfach ein,

01:01:57.715 --> 01:01:58.355
Problem gelöst,

01:01:58.455 --> 01:02:00.175
läuft. Da muss man sich ja nicht mal weiter drum kümmern.

01:02:00.255 --> 01:02:02.295
Das ist halt echt cool. Das bin ich auch

01:02:02.295 --> 01:02:04.175
tatsächlich, dadurch, dass wir intern

01:02:04.175 --> 01:02:05.895
GitLab nutzen,

01:02:06.135 --> 01:02:08.175
weiß ich gar nicht genau, wie das funktioniert. Das ist so

01:02:08.175 --> 01:02:09.735
ein Newscast, den man halt im normalen

01:02:09.735 --> 01:02:12.295
Geschäft vielleicht nie hat. Also was ich auch sehr cool finde, sind diese ganzen,

01:02:12.455 --> 01:02:13.955
wenn wir jetzt bei GitHub schon sind,

01:02:14.035 --> 01:02:16.155
sind die ganzen GitHub Actions, das habe ich bei GitLab noch nicht

01:02:16.155 --> 01:02:17.795
so hinbekommen. Und zwar kann ich ja aus

01:02:17.795 --> 01:02:20.035
Code Actions

01:02:20.035 --> 01:02:21.975
generieren, zum Beispiel, indem ich Tags in den Code

01:02:21.975 --> 01:02:24.095
reinschreibe. Und dann kann ich ja

01:02:24.095 --> 01:02:26.055
daraus dann bestimmte Dinge machen. Also ich könnte zum Beispiel

01:02:26.055 --> 01:02:27.895
direkt Issues erzeugen aus To-Do's oder aus

01:02:27.895 --> 01:02:30.015
Issues hier oder Fix-Me's,

01:02:30.055 --> 01:02:32.015
die halt irgendwo im Code drin stehen und habe halt

01:02:32.015 --> 01:02:33.955
dann direkt die Issues damit offen und das finde ich halt

01:02:33.955 --> 01:02:35.915
sehr nice, weil man halt dann das dann auch schließen

01:02:35.915 --> 01:02:37.615
kann, wenn man das richtig konfiguriert

01:02:37.615 --> 01:02:40.115
und dann halt quasi gar nicht mehr seinen Code verlassen

01:02:40.115 --> 01:02:41.975
muss, um halt einen vernünftigen Issue-Tracker

01:02:41.975 --> 01:02:43.875
auch zu haben, wo sind denn die Issues, wo sind denn noch

01:02:43.875 --> 01:02:45.975
was zu tun oder halt zu warten, wenn jemand anders

01:02:45.975 --> 01:02:47.995
kann halt direkt sehen, oh ja, da ist jetzt noch das Fix-Me

01:02:47.995 --> 01:02:49.895
offen, da muss ich jetzt einfach mal kurz gucken, dass ich

01:02:49.895 --> 01:02:51.875
dann vielleicht was dazu beitragen kann. Das ist schon

01:02:51.875 --> 01:02:53.875
sehr, sehr schön gemacht. Ja, das ist echt

01:02:53.875 --> 01:02:54.055
cool.

01:02:55.975 --> 01:02:57.755
Ja, wo du Pipelines sprachst, Pipelines sind

01:02:57.755 --> 01:02:59.655
eigentlich die Hölle, dass man irgendwie auf

01:02:59.655 --> 01:03:01.875
Produktionsumgebung da kommen kann, wenn man eine einigermaßen

01:03:01.875 --> 01:03:04.015
komplexe Infrastruktur dann irgendwann da hat

01:03:04.015 --> 01:03:04.755
und bauen muss.

01:03:06.035 --> 01:03:07.695
Also ich habe da Jammelhölle im Moment

01:03:07.695 --> 01:03:09.555
von mehreren Jammelfights, ich glaube

01:03:09.555 --> 01:03:11.515
es sind neun, die

01:03:11.515 --> 01:03:13.735
über 2000 Zeilen jeweils lang sind,

01:03:13.875 --> 01:03:15.855
wo halt dann über irgendwelche Skripte passieren,

01:03:15.955 --> 01:03:17.155
die gemixt sind aus

01:03:17.155 --> 01:03:19.775
PowerShell und Bash und halt Python

01:03:19.775 --> 01:03:21.895
und dann passieren da

01:03:21.895 --> 01:03:23.595
komische Dinge und Wurzling,

01:03:23.595 --> 01:03:25.735
tolles Version. Ich habe auch Semantic Versioning eingebaut

01:03:25.735 --> 01:03:27.395
und ich wollte halt einfach die Version bekommen.

01:03:27.535 --> 01:03:29.255
Und da der Punkt, wo ich die Versionsnummer

01:03:29.255 --> 01:03:31.155
pinne, meine PyProjekt Hummel war

01:03:31.155 --> 01:03:33.435
oder ist, da habe ich mir gedacht, okay, ich

01:03:33.435 --> 01:03:34.775
parse die einfach und benutze die weiter.

01:03:35.315 --> 01:03:37.995
Dann habe ich meine Version geändert von 0.9.9

01:03:37.995 --> 01:03:39.495
auf 0.9.10, weil

01:03:39.495 --> 01:03:41.775
es ging immer noch nicht weiter. Und bumm.

01:03:42.155 --> 01:03:43.495
Jetzt sind wir eine Pipeline auseinandergeflogen,

01:03:43.555 --> 01:03:44.955
weil ich einfach den Regex falsch geparsed hatte.

01:03:45.135 --> 01:03:47.295
Aber solche Kleinigkeiten halt, dass halt so was

01:03:47.295 --> 01:03:49.435
ist, ja. Das ist halt lustig, aber

01:03:49.435 --> 01:03:51.375
solche kleinen Sachen, die führen immer zu,

01:03:51.375 --> 01:03:53.335
dass ein Pipeline läuft, die manchmal ziemlich lange

01:03:53.335 --> 01:03:55.255
gedauert. Anderthalb Stunden oder länger.

01:03:56.715 --> 01:03:57.335
Ja, das

01:03:57.335 --> 01:03:59.115
klingt nach einem Problem, ehrlich gesagt.

01:03:59.895 --> 01:04:00.935
Ja, das ist nicht lustig.

01:04:01.095 --> 01:04:03.255
Man hat halt auch irgendwelche Regeln von außen, die man gar nicht

01:04:03.255 --> 01:04:04.895
beeinflussen kann, in denen man sich halten muss.

01:04:06.295 --> 01:04:06.695
Ja.

01:04:07.295 --> 01:04:09.355
Man muss irgendwelche Türen aufmachen,

01:04:09.555 --> 01:04:11.255
da ein Kabel zwischenhängen, dann die Türe so wieder

01:04:11.255 --> 01:04:13.455
zumachen, dass nur das Kabel durchpasst und dann

01:04:13.455 --> 01:04:14.975
da durchrufen mit so

01:04:14.975 --> 01:04:17.295
Flüstertüten und dann am Ende muss man das alles

01:04:17.295 --> 01:04:18.855
wieder abhängen. So was, ja.

01:04:19.895 --> 01:04:20.475
Ja, ja.

01:04:21.115 --> 01:04:21.475
Furchtbar.

01:04:21.475 --> 01:04:27.035
Ja, also das ist auch irgendwie, ja, so wirklich gelöst ist das alles noch nicht auch irgendwie.

01:04:27.375 --> 01:04:29.715
Ich weiß nicht, ob der Produktionsrelease auch so eine Art Package ist.

01:04:29.975 --> 01:04:33.695
Also vielleicht, also das ist halt so, was wir halt zum Beispiel machen müssen ist,

01:04:33.795 --> 01:04:36.215
wir haben ja keine richtige Staging-Umgebung oder so.

01:04:36.635 --> 01:04:41.235
Das heißt, was wir machen ist, wir müssen quasi einmal Produktionsversionen komplett nachbauen

01:04:41.235 --> 01:04:43.075
und dann da ein Update drauf machen.

01:04:43.135 --> 01:04:45.555
Weil, wenn wir halt direkt eine neue Version bauen, dann kann es ja sein,

01:04:45.615 --> 01:04:48.255
dass das anders ist als Produktionen zu updaten.

01:04:48.255 --> 01:04:52.195
und damit uns halt da nichts schief geht, müssen wir halt erstmals nachbauen.

01:04:52.255 --> 01:04:54.895
Das dauert halt dann immer doppelt so lange, weil er zweimal neu bauen muss.

01:04:55.495 --> 01:04:57.975
Und dann muss er am Ende, weil wir halt Budget und so,

01:04:58.015 --> 01:04:59.755
muss er halt die ganze Station-Gegend erstmal wieder abreißen,

01:04:59.875 --> 01:05:01.115
bevor er anfängt zu bauen.

01:05:01.915 --> 01:05:03.035
Deswegen dauert das halt auch alles immer so lange.

01:05:05.275 --> 01:05:09.095
Aber ja, das ist halt vielleicht auch was mit Paketierung zu tun.

01:05:10.055 --> 01:05:12.235
Ist das nicht so ganz public in dem Fall, aber...

01:05:12.235 --> 01:05:14.215
Also ich glaube, wir hatten es ja vorhin ganz kurz schon angerissen.

01:05:14.215 --> 01:05:16.395
Ich glaube, eine Sache, die, wenn man so ein Package baut,

01:05:16.395 --> 01:05:18.315
die wirklich so ein bisschen

01:05:18.315 --> 01:05:20.495
ja, unterm Radar läuft, weil es halt

01:05:20.495 --> 01:05:22.515
irgendwie niemand so gerne macht, ist halt einfach, dass man die Doku

01:05:22.515 --> 01:05:23.175
schreibt, also

01:05:23.175 --> 01:05:26.435
es gab ja jetzt, glaube ich, letztes oder vorletztes JungleCon

01:05:26.435 --> 01:05:28.255
diesen schönen Vortrag, Docs are didn't happen

01:05:28.255 --> 01:05:30.335
das war in Kopenhagen, ich glaube das war

01:05:30.335 --> 01:05:31.555
vorletztes Mal

01:05:31.555 --> 01:05:34.195
das ist einfach, ich habe es halt auch gemerkt, dass

01:05:34.195 --> 01:05:36.655
also selbst in meiner eigenen Firma

01:05:36.655 --> 01:05:38.335
wo ich ja echt jetzt keine weiten Wege

01:05:38.335 --> 01:05:40.315
zu den Leuten habe, ja, wenn ich sage, hey

01:05:40.315 --> 01:05:41.735
da ist das drin, nutzt das mal

01:05:41.735 --> 01:05:44.015
das ist halt eine Blackbox, ne

01:05:44.015 --> 01:05:45.695
dagegen. Also selbst wenn du dann irgendwie

01:05:45.695 --> 01:05:48.175
doch mal jemand irgendwie den Code reintraut und da mal rumguckt,

01:05:48.735 --> 01:05:50.155
wenn da halt nicht ordentlich dokumentiert

01:05:50.155 --> 01:05:51.435
ist, ich meine vielleicht mal irgendwo ein

01:05:51.435 --> 01:05:53.895
kurzer Docstring oder so,

01:05:53.955 --> 01:05:55.895
ist schon schwierig. Also da wirklich mal

01:05:55.895 --> 01:05:57.755
das irgendwie zusammenzuschreiben, das habe ich

01:05:57.755 --> 01:05:59.795
tatsächlich auch im letzten Quartal

01:05:59.795 --> 01:06:01.795
relativ viel gemacht und habe da mal bei Read the Docs

01:06:02.355 --> 01:06:03.735
da so ein bisschen Markdown

01:06:03.735 --> 01:06:05.475
mit Zphinx gepublished, also

01:06:05.475 --> 01:06:07.095
Zphinx kompliertes Markdown.

01:06:09.055 --> 01:06:09.535
Und da geht...

01:06:09.535 --> 01:06:11.855
Auch übrigens ein bisschen nervig mit RestructureTest, geht das

01:06:11.855 --> 01:06:13.255
immer besser? Ja, ich

01:06:13.255 --> 01:06:15.555
Ich komme mit dem Dokumentformat irgendwie nicht.

01:06:15.875 --> 01:06:18.455
Nein, das ist schlecht, aber Sphinx macht das halt sehr ungern mit Markdown.

01:06:18.635 --> 01:06:21.295
Ich weiß, ich habe da mehrere, ich habe da so ein paar Adapter.

01:06:21.295 --> 01:06:23.655
Man kann das halt ineinander konvertieren, genau.

01:06:23.795 --> 01:06:24.855
Ich habe so ein paar Adapter eingebaut.

01:06:25.915 --> 01:06:28.235
Musste ich auch ein bisschen googeln, aber inzwischen geht das jetzt ganz gut.

01:06:28.395 --> 01:06:29.495
Das bin ich ganz happy damit.

01:06:29.635 --> 01:06:30.875
Der war zwischen mich kaputt, der Adapter, ja.

01:06:31.555 --> 01:06:33.475
Ja, genau.

01:06:33.675 --> 01:06:36.535
Nein, aber das ist tatsächlich, da ist sehr, sehr viel, also dieses Dokumentieren

01:06:36.535 --> 01:06:40.055
und auch wenn man vielleicht nicht nur einfach sagt, dass es die Methode und die gibt,

01:06:40.055 --> 01:06:42.515
sondern wenn man vielleicht auch so ein bisschen den Kontext herstellen möchte,

01:06:42.515 --> 01:06:44.235
so eine Art How-to, das wäre wahrscheinlich eher ein How-to,

01:06:44.315 --> 01:06:45.975
wie du vorhin bei deiner, bei dem,

01:06:46.295 --> 01:06:48.215
also dass du sagst, hey, guck mal, ich habe diesen Use-Case, ich möchte

01:06:48.215 --> 01:06:50.415
mir Daten anonymiasieren, habe ich hier irgendwie einen Rapper, der hilft

01:06:50.415 --> 01:06:52.615
dir, oder wenn du irgendwie E-Mails testen möchtest,

01:06:52.695 --> 01:06:54.475
da habe ich hier eine fancy Klasse oder ein Mix-In,

01:06:54.535 --> 01:06:56.335
das hilft dir, dass man die Leute

01:06:56.335 --> 01:06:57.755
auch ein bisschen abholt und erklärt, warum

01:06:57.755 --> 01:07:00.295
willst du das überhaupt nutzen, also welches

01:07:00.295 --> 01:07:02.375
Problem löse ich für dich? Wenn du dann

01:07:02.375 --> 01:07:04.215
nur sagst, so sieht der Code aus, dann

01:07:04.215 --> 01:07:06.375
hilft den Leuten das halt nicht. Wo ich das am liebsten mache

01:07:06.375 --> 01:07:08.295
und wie es irgendwie am besten auch funktioniert, dass das dann

01:07:08.295 --> 01:07:10.415
nicht nur aus meinem Kopf kommt, ist, wenn man das halt tatsächlich

01:07:10.415 --> 01:07:14.535
im Art-Pair-Programming macht, wenn man halt dann gemeinsam mit seinem Team oder mit anderen Leuten drauf guckt

01:07:14.535 --> 01:07:18.475
und denen das quasi erklärt, was man da gebaut hat oder warum man das gebaut hat, weil dann fallen einem

01:07:18.475 --> 01:07:22.315
erstens so die ganzen Bugs auf, die man sonst übersieht, wenn man da irgendwie immer nur selber

01:07:22.315 --> 01:07:26.535
mit seinen eigenen vier Augen drauf schaut. Und dann halt

01:07:26.535 --> 01:07:30.475
am Ende, wenn man das den Leuten halt erklärt, kann man halt direkt das dann als Docstring dann auch so reinschreiben,

01:07:30.595 --> 01:07:34.315
was das dann halt macht. Das macht meistens relativ viel Sinn. Und man merkt halt, dass nochmal der Name, den man da

01:07:34.315 --> 01:07:38.555
verwendet hat, irgendwie Quatsch ist. Und das macht man dann noch ein bisschen hübscher. Und dann so kommt man auf eine relativ gute

01:07:38.555 --> 01:07:42.815
Qualität, glaube ich. Das ist aber dann wirklich essentiell, dass man mit anderen Leuten das gemeinsam

01:07:42.815 --> 01:07:46.075
macht. Das ist auf jeden Fall eine gute Idee.

01:07:47.835 --> 01:07:50.655
Aber dann ist auch die Dokumentation in Ordnung. Also was ich

01:07:50.655 --> 01:07:54.755
bei Dokumentation oft merke, das finde ich sehr nervig, da habe ich auch noch keine Lösung für gefunden,

01:07:55.175 --> 01:07:58.815
die ist halt irgendwie hyperschnell veraltet. Das heißt, wenn ich mir irgendwie Mühe gebe, dass ich so detailliert

01:07:58.815 --> 01:08:02.555
aufschreibe, was denn da irgendwie gemacht werden muss, damit das dann läuft, dann muss ich dann

01:08:02.555 --> 01:08:06.575
ein oder zwei Wochen da nochmal Zeit reinstecken. Wenn ich nicht jeden Tag irgendwie dann zehn Minuten

01:08:06.575 --> 01:08:08.755
wieder die Doku anpasse, die ist halt dann nach diesen zwei Wochen

01:08:08.755 --> 01:08:10.575
einfach nicht mehr benutzbar.

01:08:11.135 --> 01:08:12.575
So, das ist irgendwie ein bisschen blöd.

01:08:12.635 --> 01:08:14.615
Und das führt halt auch dann dazu, dass man nicht

01:08:14.615 --> 01:08:16.635
so Lust hat, dann das immer zu

01:08:16.635 --> 01:08:18.555
machen ordentlich, weil... Also da hatte ja

01:08:18.555 --> 01:08:20.675
der Kalten Gibson jetzt bei dieser

01:08:20.675 --> 01:08:22.475
DjangoCon einen Vortrag bezüglich

01:08:22.475 --> 01:08:24.955
wie dieses Static Dynamic Websites,

01:08:25.375 --> 01:08:26.495
Static Dynamic Pages

01:08:26.495 --> 01:08:28.455
hieß es, glaube ich. Ja, mit einem Zwings und...

01:08:28.455 --> 01:08:30.575
Genau, ich habe vergessen, wie das Package heißt, das er gebaut hat.

01:08:31.195 --> 01:08:32.195
Müsste man mal nachschauen.

01:08:32.275 --> 01:08:33.715
Benutzt das dann einfach doch Zwings irgendwie?

01:08:33.975 --> 01:08:35.995
Also die Idee dahinter ist, dass du quasi

01:08:35.995 --> 01:08:38.815
über Django Markdown,

01:08:38.895 --> 01:08:40.515
also du schreibst Markdown

01:08:40.515 --> 01:08:41.875
und das wird dann als Django HTML

01:08:41.875 --> 01:08:44.475
Template gerendert, rausgerendert.

01:08:44.595 --> 01:08:45.815
Und da... Hast du das nicht auch die Django Docs,

01:08:45.935 --> 01:08:48.155
die Dokumentation, die tatsächlich in diesem Format

01:08:48.155 --> 01:08:50.015
irgendwie selber ist? Möglich, möglich.

01:08:50.435 --> 01:08:52.015
Auf jeden Fall, der hat das da halt ein Package draus gemacht

01:08:52.015 --> 01:08:54.115
und das ist halt, also ich glaube

01:08:54.115 --> 01:08:56.055
ein Problem, das man damit lösen kann, ist halt

01:08:56.055 --> 01:08:58.075
genau, also jetzt nicht Docstrings, weil die musst

01:08:58.075 --> 01:09:00.055
du halt, die sind eh im Code, aber wenn du halt

01:09:00.055 --> 01:09:01.995
diese, zum Beispiel so eine How-to-Dokumentation,

01:09:02.095 --> 01:09:03.255
bei mir läuft das halt irgendwie,

01:09:03.995 --> 01:09:05.935
ja, es ist halt schon irgendwie im Code drin, aber

01:09:05.935 --> 01:09:08.075
ist auch jetzt irgendwie separat gehostet und

01:09:08.075 --> 01:09:10.255
wenn du jetzt, bei Pactis ist es eh schwierig,

01:09:10.335 --> 01:09:11.935
weil die laufen ja nirgendwo, wenn du zum Beispiel

01:09:11.935 --> 01:09:13.755
sagst, ich möchte jetzt irgendwie Dokumentation für

01:09:13.755 --> 01:09:15.995
meine eigene Seite, also zum Beispiel ich möchte irgendwie

01:09:15.995 --> 01:09:17.855
die Business-Logik und die Technik und irgendwie sehr

01:09:17.855 --> 01:09:20.055
detailliert das aufschreiben, muss ich vielleicht auch, wenn es irgendwelche

01:09:20.055 --> 01:09:21.075
Compliance-Sachen gibt.

01:09:21.715 --> 01:09:23.695
Wie hingehen das nochmal mit dem Backup oder so, ja. Genau,

01:09:23.835 --> 01:09:25.815
dass du die Sachen dann einfach direkt im Code,

01:09:25.895 --> 01:09:27.855
im gleichen Repo, im gleichen Commit machen kannst und

01:09:27.855 --> 01:09:29.815
dann zum Beispiel auch einfach da ein

01:09:29.815 --> 01:09:32.035
Linting reinbauen kannst, sagst du, Moment mal, du hast da was angefasst,

01:09:32.155 --> 01:09:33.955
du hast das

01:09:33.955 --> 01:09:35.555
Markdown nicht dazu angepasst.

01:09:35.935 --> 01:09:37.455
Das sind, glaube ich, sehr, sehr coole Use Cases.

01:09:37.615 --> 01:09:39.655
Dafür, wenn man da halt wirklich, wenn das wirklich

01:09:39.655 --> 01:09:41.835
wichtig ist, also du hast

01:09:41.835 --> 01:09:43.855
halt dann die Nähe von Dokumentation,

01:09:43.915 --> 01:09:45.635
die sich eigentlich weit weg anfühlt, das ist irgendwo

01:09:45.635 --> 01:09:47.855
ein Marktanteil, die irgendwo umliegt und die irgendwo gehostet

01:09:47.855 --> 01:09:49.755
ist, dass du dann wirklich ins Projekt

01:09:49.755 --> 01:09:51.615
reinbringst. Ich habe es noch nicht ausprobiert

01:09:51.615 --> 01:09:53.715
tatsächlich, aber ich könnte mir vorstellen, dass das

01:09:53.715 --> 01:09:55.815
genau für solche Use Cases, also für sehr große

01:09:55.815 --> 01:09:57.715
Projekte, wo man das machen muss,

01:09:57.755 --> 01:09:59.255
das vielleicht so ein bisschen dann

01:09:59.255 --> 01:10:01.595
näher bringt und damit auch die Motivation erhöht,

01:10:01.635 --> 01:10:03.495
dass man es da wirklich tut. Also ich war ja echt Fan

01:10:03.495 --> 01:10:05.675
auch von diesen autogenerierten Swing Stocks,

01:10:05.675 --> 01:10:07.235
Autodoc aus den Docs-Sinks heraus und so,

01:10:07.275 --> 01:10:09.435
dass du einen halt so ein bisschen dazu zwingst, den Docs-Sinks aktuell

01:10:09.435 --> 01:10:11.475
zu halten. Aber noch besser sieht das

01:10:11.475 --> 01:10:13.295
tatsächlich, jetzt muss ich noch kurz für Jochen und Lasse

01:10:13.295 --> 01:10:15.515
brennen, dieses NBDEV aus, weil man in Notebooks

01:10:15.515 --> 01:10:17.255
halt das Markdown auch direkt mit

01:10:17.255 --> 01:10:19.155
reinschreiben kann, wenn das ordentlich aussieht.

01:10:19.215 --> 01:10:21.035
Mein Notebook hat was, was ordentlich aussieht,

01:10:21.515 --> 01:10:23.055
ja, und was dann automatisch dann

01:10:23.055 --> 01:10:25.235
zur Dokumentation von diesem Code führt, das dann

01:10:25.235 --> 01:10:27.295
irgendwie aus einem Guss hat. Das ist schon irgendwie

01:10:27.295 --> 01:10:29.275
sehr charmant für bestimmte Sachen.

01:10:29.435 --> 01:10:31.495
Ja, gerade wenn man, glaube ich, so Pakete

01:10:31.495 --> 01:10:33.135
neu entwickelt, irgendwie das dann hinterher nochmal

01:10:33.135 --> 01:10:34.455
angucken will, das ist schon schön.

01:10:34.455 --> 01:10:36.475
Ja, ich sage mal

01:10:36.475 --> 01:10:38.595
gerade bei Data Science

01:10:38.595 --> 01:10:40.455
Geschichten ist es besonders schön, weil

01:10:40.455 --> 01:10:42.515
das halt, zum Beispiel man hat

01:10:42.515 --> 01:10:43.955
ja oft dann irgendwelche Visualisierungen

01:10:43.955 --> 01:10:45.535
Visualisierung ist natürlich besonders

01:10:45.535 --> 01:10:48.635
Das hast du ja sonst eigentlich, weiß ich nicht, wenn du jetzt irgendwie ein Django-Paket

01:10:48.635 --> 01:10:50.155
hast oder so, hast du das im Grunde kaum

01:10:50.155 --> 01:10:52.355
Insofern ist es da nicht so schlimm, wenn man das halt

01:10:52.355 --> 01:10:54.555
im Notebook hat und auch

01:10:54.555 --> 01:10:56.455
wenn du bei so Data Science Geschichten, wenn jemand

01:10:56.455 --> 01:10:58.115
eine Visualisierung verbessern möchte, dann

01:10:58.115 --> 01:11:00.635
kannst du halt da in einem Pull-Request direkt

01:11:00.635 --> 01:11:02.615
den Unterschied in der Visualisierung sehen

01:11:02.615 --> 01:11:04.735
und direkt im Notebook und musst halt nicht

01:11:04.735 --> 01:11:06.495
erst das Paket bauen,

01:11:06.815 --> 01:11:08.235
also den Pull-Request dann bauen,

01:11:08.535 --> 01:11:10.795
angucken, dann die Visualisierung anzeigen,

01:11:10.875 --> 01:11:12.735
erstmal bis dahin kommen. So was ist halt direkt da.

01:11:12.895 --> 01:11:14.055
Dafür ist es halt total super.

01:11:14.675 --> 01:11:16.375
Wenn man das jetzt gar nicht braucht, dann

01:11:16.375 --> 01:11:18.535
hilft es einem nicht so sehr,

01:11:18.615 --> 01:11:19.655
auch wenn es sonst auch ganz nett ist.

01:11:20.215 --> 01:11:22.475
Ich habe jetzt gerade nochmal geguckt, ich glaube das Paket ist

01:11:22.475 --> 01:11:24.195
Django Sphinx View

01:11:24.195 --> 01:11:26.555
von Carlton Gibson.

01:11:28.735 --> 01:11:30.755
Ja, ich finde das auch

01:11:30.755 --> 01:11:32.855
auch total interessant. Es gibt ja so diverse Ansätze.

01:11:33.295 --> 01:11:34.795
Den kannte ich jetzt auch noch gar nicht mehr, war das

01:11:34.795 --> 01:11:37.435
auch überhaupt nicht klar, dass die Django-Dokumentation

01:11:37.435 --> 01:11:38.935
das so macht, dass das halt irgendwie

01:11:38.935 --> 01:11:41.415
nur

01:11:41.415 --> 01:11:43.015
JSON ist, was im Grunde aus Sphinx rausfällt

01:11:43.015 --> 01:11:45.095
und dann man halt noch dynamische

01:11:45.095 --> 01:11:47.295
Geschichten mit dazu machen kann.

01:11:48.215 --> 01:11:49.035
Aber das ist auf jeden Fall

01:11:49.035 --> 01:11:50.715
auch eine sehr interessante Geschichte. Markdown, dann den

01:11:50.715 --> 01:11:51.995
Mistparser, dann das Ganze

01:11:51.995 --> 01:11:54.855
in Restructured Text, das Ganze

01:11:54.855 --> 01:11:56.755
dann wieder dynamisch vielleicht serven,

01:11:56.755 --> 01:11:57.855
ist sehr interessant.

01:11:57.855 --> 01:11:59.855
MBDev finde ich interessant

01:11:59.855 --> 01:12:01.635
ich finde voll interessant, was in dieser

01:12:01.635 --> 01:12:03.555
Vue.js, Vue.js mache ich auch so ein bisschen

01:12:03.555 --> 01:12:05.895
versuche ich auch reinzukommen, was die da machen

01:12:05.895 --> 01:12:07.915
die nehmen ja VuePress

01:12:07.915 --> 01:12:09.895
beziehungsweise VitePress jetzt

01:12:09.895 --> 01:12:11.815
genau, das ist auch total

01:12:11.815 --> 01:12:13.975
toll, das sieht super aus

01:12:13.975 --> 01:12:14.615
bitte?

01:12:15.135 --> 01:12:15.955
excuse me, Vite

01:12:15.955 --> 01:12:19.655
das ist auch so blöd, wenn man dann

01:12:19.655 --> 01:12:21.595
irgendwie, da habe ich auf irgendeinem

01:12:21.595 --> 01:12:22.995
Vue Meetup

01:12:22.995 --> 01:12:25.675
einen Vortrag über VitePress

01:12:25.675 --> 01:12:26.715
gehalten und dann

01:12:26.715 --> 01:12:28.535
mit der White Press gesagt oder sowas

01:12:28.535 --> 01:12:39.643
und dann kam die erste Frage und jemand sagte dann Viet Ich habe es gerade gestern halbe Stunde lang jedes Mal falsch gesagt Aber genau so ist das halt

01:12:40.203 --> 01:12:41.502
Und das ist aber auch

01:12:41.502 --> 01:12:43.383
voll toll, weil was

01:12:43.383 --> 01:12:45.462
daran super ist, ist, dass man direkt sieht,

01:12:45.522 --> 01:12:47.263
wenn man was an der Dokumentation ändert oder so,

01:12:47.323 --> 01:12:48.482
das ist halt sofort alles live.

01:12:49.062 --> 01:12:51.002
Mit Sphinx und so, das ist ja dann doch eher so,

01:12:51.102 --> 01:12:52.743
man muss das erstmal dann irgendwie bauen.

01:12:53.263 --> 01:12:55.303
Das dauert alles ein bisschen, bis dann auf einer Webseite ist,

01:12:55.303 --> 01:12:55.723
das dauert nochmal.

01:12:56.582 --> 01:12:59.323
Während bei VitePress oder so, das ist halt sofort da.

01:12:59.323 --> 01:13:00.723
und man editiert es quasi live.

01:13:02.962 --> 01:13:03.402
Aber

01:13:03.402 --> 01:13:05.143
so das rundum

01:13:05.143 --> 01:13:07.143
sorglos Ding für alles gibt es irgendwie nicht.

01:13:07.303 --> 01:13:09.263
Es gibt so diverse, sehr interessante

01:13:09.263 --> 01:13:11.703
Geschichten, die so in Teil-Communities

01:13:11.703 --> 01:13:12.843
irgendwie so

01:13:12.843 --> 01:13:15.402
entwickelt worden sind.

01:13:15.902 --> 01:13:17.062
Also ich würde auch fast sagen,

01:13:17.383 --> 01:13:18.902
Beatpress irgendwie,

01:13:19.102 --> 01:13:20.863
das ist schon nett für Markdown-Sachen,

01:13:21.323 --> 01:13:23.243
Markdown-Sachen hosten oder hochladen, aber das

01:13:23.243 --> 01:13:24.703
generiert halt immer noch nicht seinen Content.

01:13:24.982 --> 01:13:26.502
Den muss man halt immer noch selber schreiben.

01:13:26.502 --> 01:13:28.402
Aber man kriegt ihn damit

01:13:28.402 --> 01:13:29.042
sehr gut aussehen.

01:13:29.203 --> 01:13:32.002
Die Vue-Dokumentation ist ja

01:13:32.002 --> 01:13:34.203
VuePress, weil das kann halt auch mal ein bisschen mehr.

01:13:36.462 --> 01:13:38.183
Und das ist eigentlich, das ist auch

01:13:38.183 --> 01:13:39.723
alles Markdown, mehr oder weniger.

01:13:40.502 --> 01:13:42.402
Das sieht schon sehr schick aus, muss man sagen.

01:13:43.582 --> 01:13:44.482
Gerade auch im Vergleich

01:13:44.482 --> 01:13:46.243
zu Django-Dokumentationen. Django-Dokumentationen ist jetzt

01:13:46.243 --> 01:13:48.383
deutlich mehr und deutlich umfangreicher und vollständiger.

01:13:49.243 --> 01:13:49.343
Aber

01:13:49.343 --> 01:13:52.082
die Vue-Dokumentation sieht schon besser aus.

01:13:53.743 --> 01:13:54.183
Und

01:13:54.183 --> 01:13:56.223
das sind ja auch so kleine Animationen

01:13:56.223 --> 01:13:57.922
und diese ganzen Geschichten, die halt bei Vue so drin sind.

01:13:57.922 --> 01:13:59.982
Ja, also relativ einfach, dass

01:13:59.982 --> 01:14:01.663
alles mit direkt auch als Paket kommt.

01:14:02.042 --> 01:14:03.143
Dann funktioniert das einfach.

01:14:04.843 --> 01:14:06.022
Das ist sowieso ein bisschen das Problem

01:14:06.022 --> 01:14:07.883
von Dango-Sachen, dass das immer so sehr

01:14:07.883 --> 01:14:09.163
statische Seiten sind immer.

01:14:10.163 --> 01:14:11.743
Ja, aber nicht unbedingt.

01:14:12.522 --> 01:14:13.863
Also wenn man das halt hätte, das macht man

01:14:13.863 --> 01:14:15.243
zum Beispiel wieder nicht, aber das ist halt dann

01:14:15.243 --> 01:14:17.723
unheimlich der Overhead, das dann halt in die Projekte dann alles

01:14:17.723 --> 01:14:19.703
mal reinzubringen und man muss halt eigentlich an mehreren Stellen

01:14:19.703 --> 01:14:21.743
gleichzeitig die Sachen bauen und das

01:14:21.743 --> 01:14:23.683
wird dann alles so ein bisschen, man verliert halt Features,

01:14:23.803 --> 01:14:25.763
die man vielleicht möchte oder so, das ist

01:14:25.763 --> 01:14:27.823
alles noch nicht so. Ja, man hat halt

01:14:27.823 --> 01:14:30.863
immer Entscheidungen zu treffen, für welchen Case man was lieben möchte.

01:14:33.183 --> 01:14:34.243
Das ist allerdings wahr.

01:14:35.183 --> 01:14:37.223
Ja, Pakete. Hast du noch was, Ronny?

01:14:39.123 --> 01:14:42.303
Also tatsächlich, ich habe bis noch so zwei, drei Kleinigkeiten,

01:14:42.683 --> 01:14:45.102
die mir jetzt aufgefallen sind, als ich da, wie gesagt,

01:14:45.183 --> 01:14:48.323
jetzt so ein bisschen Streamlining gemacht habe bei dem Package.

01:14:48.743 --> 01:14:51.482
Das eine ist, ich habe angefangen, bei allem, was ich anfasse,

01:14:51.582 --> 01:14:53.283
jetzt nochmal Type Hinting zu nutzen.

01:14:53.683 --> 01:14:55.183
Es ist ja so, mit der Konto, wer es diskutiert hat,

01:14:55.183 --> 01:14:56.102
ob es gut oder schlecht ist.

01:14:56.102 --> 01:14:58.323
Also ganz radikal, jedes Argument in jeder einzelnen

01:14:58.323 --> 01:15:00.163
Methode. Ja, also es ist

01:15:00.163 --> 01:15:01.823
immer ein bisschen schwierig, wenn du halt

01:15:01.823 --> 01:15:04.243
Klassen hast, die aus einem eigenen Scope

01:15:04.243 --> 01:15:06.243
kommen, weil du halt dann super schnell in den Circular Imports rennst.

01:15:06.763 --> 01:15:07.982
Da ist es dann so, dass ich zum Beispiel sage,

01:15:08.062 --> 01:15:10.283
okay, wenn ich jetzt, keine Ahnung, ein User

01:15:10.283 --> 01:15:12.223
Query Set habe, dass ich dann nicht sage, das gibt ein User

01:15:12.223 --> 01:15:14.223
Query Set zurück, sondern es gibt einfach nur Query Set

01:15:14.223 --> 01:15:15.863
zurück. Also das abstrakte Django-Ding.

01:15:16.462 --> 01:15:18.203
Aber ich finde das halt super

01:15:18.203 --> 01:15:20.183
praktisch, also vor allem...

01:15:20.183 --> 01:15:20.763
Was ist falsch?

01:15:22.422 --> 01:15:24.283
Also wenn du halt eine...

01:15:24.283 --> 01:15:25.922
Ja, ist halt der Vater.

01:15:26.102 --> 01:15:28.223
Also es ist ja so ein Typ Curricet

01:15:28.223 --> 01:15:30.703
Ja, weißt du, ja, na, ist dann nur die Base

01:15:30.703 --> 01:15:33.042
Ja, aber das ist schon, glaube ich,

01:15:33.123 --> 01:15:34.602
auch, wie man das

01:15:34.602 --> 01:15:36.522
man sollte halt irgendwie die Abstraktion

01:15:36.522 --> 01:15:38.542
von der halt abhängen und die dann halt auch

01:15:38.542 --> 01:15:40.763
Also im Endeffekt, wenn ich halt nix zurückgebe

01:15:40.763 --> 01:15:42.623
also nicht halbhinter, dann weiß jemand nix

01:15:42.623 --> 01:15:44.522
Wenn ich weiß, da kommt ein Curricet zurück, dann weiß ich

01:15:44.522 --> 01:15:45.663
immerhin schon mal Edits keine Liste

01:15:45.663 --> 01:15:47.343
Ja, aber okay, aber das ist schon besser

01:15:47.343 --> 01:15:50.623
Also man macht das ja in sowas wie TypeScript

01:15:50.623 --> 01:15:52.562
oder sowas so relativ detailliert, dass man

01:15:52.562 --> 01:15:54.323
irgendwelche Interfaces dann dafür baut, ne

01:15:54.323 --> 01:15:56.163
und die dann halt dann die Typen exenten, die man

01:15:56.163 --> 01:15:58.383
aber auch verwenden muss, weil ansonsten ist das ja falsch.

01:15:58.462 --> 01:16:00.283
Also wenn du jetzt ein User-Query-Set hast, weil vielleicht

01:16:00.283 --> 01:16:02.303
hast du ein Custom-Query-Set, wo du irgendwas

01:16:02.303 --> 01:16:03.962
Besonderes dran gemacht hast, irgendeine Methode, die

01:16:03.962 --> 01:16:05.902
andere Query-Sets nicht können oder so.

01:16:06.203 --> 01:16:07.982
Und wenn du dann halt sagst, das ist nur ein Query-Set und dann

01:16:07.982 --> 01:16:09.703
kommt da irgendeine Methode, die Query-Sets gar nicht können,

01:16:09.823 --> 01:16:12.183
das wäre irgendwie seltsam dann. Und das müsste eigentlich

01:16:12.183 --> 01:16:13.123
auch gelintet werden, finde ich.

01:16:13.602 --> 01:16:16.042
Also du hast recht, es ist nicht ganz trennscharf.

01:16:16.562 --> 01:16:18.343
Dadurch, dass ich das Problem mit den Circular-Imports

01:16:18.343 --> 01:16:19.922
noch nicht gelöst habe und ich auch gar nicht weiß,

01:16:19.962 --> 01:16:21.183
ob es eine Lösung gibt,

01:16:22.363 --> 01:16:24.022
habe ich mich jetzt einfach dafür entschieden, ich gebe

01:16:24.022 --> 01:16:26.002
dem Nutzer halt einfach

01:16:26.002 --> 01:16:27.263
einen Ticken mehr

01:16:27.263 --> 01:16:29.143
Informationen mit.

01:16:29.143 --> 01:16:29.643
Eine Verantwortung.

01:16:31.663 --> 01:16:33.643
Meistens finde ich es eh, also sehr sinnvoll ist es

01:16:33.643 --> 01:16:35.703
vor allem eh bei trivialen Datentypen,

01:16:35.823 --> 01:16:37.723
weil du halt dann, ob das jetzt irgendwie Decimal oder Float

01:16:37.723 --> 01:16:39.723
oder ein Integer oder sowas ist, das macht ja schon

01:16:39.723 --> 01:16:41.763
schnell irgendwie die Berechnung kaputt.

01:16:43.383 --> 01:16:43.902
Aber ich finde das

01:16:43.902 --> 01:16:45.962
tatsächlich praktisch, wenn du vor allem, wenn man so Helper-Methoden

01:16:45.962 --> 01:16:47.823
oder irgendwie Sachen hat, also wo

01:16:47.823 --> 01:16:49.522
andere dann meinen Code nutzen,

01:16:49.962 --> 01:16:51.522
das ist ja total praktisch, dass dir dann direkt die

01:16:51.522 --> 01:16:53.962
Ideen anzeigt, so sorry, da stimmt irgendwas.

01:16:54.022 --> 01:16:55.982
Genau, das ist, finde ich, auch das Wichtigste an diesen Type-Links in Python,

01:16:56.123 --> 01:16:58.263
dass du halt tatsächlich, wenn du den Lint richtig konfiguriert hast,

01:16:58.683 --> 01:17:00.022
während dem Schreiben siehst,

01:17:00.123 --> 01:17:02.002
findest du da irgendeinen Arch-Boss und das ist wirklich praktisch.

01:17:02.363 --> 01:17:04.143
Aber ich benutze es auch tatsächlich meistens nur für

01:17:04.143 --> 01:17:06.102
komplexe Dinge, also wo es fraglich ist

01:17:06.102 --> 01:17:07.783
oder wo du noch nicht genau weißt, was es ist. Dann sage ich halt direkt,

01:17:07.843 --> 01:17:10.263
das ist jetzt explizit und die anderen Sachen, die gehen halt einfach so durch.

01:17:10.902 --> 01:17:11.723
Also tatsächlich

01:17:11.723 --> 01:17:12.982
auf der

01:17:12.982 --> 01:17:15.962
PyCologne, das ist ein Python-Meetup

01:17:15.962 --> 01:17:18.462
in Köln, das monatlich stattfindet,

01:17:19.042 --> 01:17:19.902
da hatte

01:17:19.902 --> 01:17:22.002
der Organisator mal irgendwann gesagt,

01:17:22.002 --> 01:17:23.442
dass er inzwischen jetzt übergegangen ist,

01:17:23.442 --> 01:17:29.522
dass er quasi in jeder Funktion, die er schreibt, das erzwingt, dass man die Keyword-Arguments nimmt.

01:17:29.643 --> 01:17:33.462
Das geht ganz einfach, indem man zum Beispiel aus einer Methode, das ist dann irgendwie von einer Klasse,

01:17:33.562 --> 01:17:38.643
da ist dann nur der erste Typ ist immer, nicht Typ, die erste Variable ist immer self.

01:17:38.962 --> 01:17:41.542
Dann machst du Komma, Sternchen, Komma und danach deine anderen.

01:17:41.723 --> 01:17:47.243
Und dieses Sternchen sagst du ihm quasi, es kommt hier quasi kein normales Argument.

01:17:47.482 --> 01:17:48.643
Dahinter kommen die Keyword-Argument.

01:17:48.643 --> 01:17:52.982
Das heißt, es ist verboten, dass du sagst, ich gebe den ersten Parameter normal rein.

01:17:53.442 --> 01:17:54.803
Habt ihr verstanden, was ich meine?

01:17:54.982 --> 01:17:57.502
Ja, also kein normales Argument gibt so ein Keyword-Argument.

01:17:57.562 --> 01:18:00.763
Genau. Und das finde ich jetzt, also bei manchen Sachen ist es natürlich Unsinn.

01:18:00.922 --> 01:18:04.582
Ich meine, wenn du eine Sache hast und das auch klar ist, aber insbesondere bei so Methoden

01:18:04.582 --> 01:18:07.502
oder wenn man mal irgendwie dann doch mal so vor so einer Funktion steht,

01:18:07.602 --> 01:18:09.462
wo dann irgendwie doch mal so drei, vier, fünf Sachen reingehen,

01:18:09.683 --> 01:18:11.283
was ja irgendwie auch so ein bisschen unlesbar ist,

01:18:11.942 --> 01:18:14.623
da den User zu erzwingen, vor allem wenn da mal einer hinkommt

01:18:14.623 --> 01:18:16.203
und das irgendwie ein bisschen refactoren möchte,

01:18:16.522 --> 01:18:19.183
dann ist er auf jeden Fall sichergestellt, dass niemand aus Versehen,

01:18:19.343 --> 01:18:21.922
also zum Beispiel wenn man die Reihenfolge tauscht und man möchte irgendwas da vorne rein,

01:18:21.922 --> 01:18:24.363
dann kann man das einfach machen, weil es ist der Keyword-Argument

01:18:24.363 --> 01:18:25.883
Aber das schluckt ja nicht das

01:18:25.883 --> 01:18:27.982
mit dem ständigen Rest einfach weg dann? Ich überlege gerade, wo

01:18:27.982 --> 01:18:29.323
der dann rausfällt

01:18:29.323 --> 01:18:32.223
Also der

01:18:32.223 --> 01:18:34.062
Argument wird ja wegschlucken, die würden einfach nicht mehr

01:18:34.062 --> 01:18:36.022
auftauchen, aber die werden halt nicht in den Keywords dann gemappt

01:18:36.022 --> 01:18:37.843
Nee, der macht dann tatsächlich einen Fehler

01:18:37.843 --> 01:18:39.163
Der wirft bei ganz, das darfst du nicht

01:18:39.163 --> 01:18:41.982
Also das ist sehr praktisch, weil ansonsten, das wäre ja blöd

01:18:41.982 --> 01:18:43.883
wenn das passiert, was du sagst. Tatsächlich sagt ihr dann

01:18:43.883 --> 01:18:45.942
Sorry, da müssen Keyword-Arguments drin sein

01:18:45.942 --> 01:18:47.763
Und das

01:18:47.763 --> 01:18:50.082
finde ich, wie gesagt, es gibt Methoden, da macht das keinen Sinn

01:18:50.082 --> 01:18:51.703
Aber wenn das irgendwas

01:18:51.703 --> 01:18:53.902
sehr, sehr wichtig ist oder sehr, sehr ähnliche

01:18:53.902 --> 01:18:55.602
Variablen reinkommen. Dass man zum Beispiel,

01:18:55.683 --> 01:18:57.843
weiß ich nicht, du hast irgendwie User 1 und User 2 oder sowas,

01:18:58.163 --> 01:18:59.343
die irgendwie eine andere Semantik haben,

01:18:59.843 --> 01:19:01.482
aber halt vom gleichen Typ sind und das

01:19:01.482 --> 01:19:03.942
einfach dann dir trotzdem zu Ende rechnen würde, was du da tust.

01:19:04.343 --> 01:19:05.823
Da finde ich das echt nett, wenn man das

01:19:05.823 --> 01:19:07.863
macht. Einfach, weil

01:19:07.863 --> 01:19:09.002
du halt dem

01:19:09.002 --> 01:19:11.803
weiteren User, ob das du bist oder

01:19:11.803 --> 01:19:13.863
jemand anders, mehr Semantik erzwingst.

01:19:16.343 --> 01:19:17.143
Ja, also

01:19:17.143 --> 01:19:19.303
exklusiv nur Keyword-Arguments erlaubt.

01:19:19.383 --> 01:19:21.243
Gibt es nicht doch irgendwie ein Parameter für, ich habe da irgendwie

01:19:21.243 --> 01:19:23.163
Es gibt da irgendwas mit dem Slash, ich weiß es nicht mehr genau.

01:19:24.163 --> 01:19:25.303
Aber ich weiß es jetzt auch nicht mehr genau.

01:19:25.402 --> 01:19:27.062
Es gibt also Position-Only-Arguments, es gibt

01:19:27.062 --> 01:19:29.363
auch Keyword-Only-Arguments mit dem Stern.

01:19:30.042 --> 01:19:31.343
Ja, aber genau.

01:19:31.542 --> 01:19:33.542
Also ich würde

01:19:33.542 --> 01:19:35.442
jetzt sagen, wenn man viele Argumente hat,

01:19:35.643 --> 01:19:37.343
dann ist erstmal, also ich würde sagen,

01:19:37.442 --> 01:19:39.542
naja, es gibt schon mal Fälle, wo das gut ist,

01:19:39.843 --> 01:19:41.303
oder wo man das halt einfach braucht,

01:19:41.462 --> 01:19:43.502
aber wenn es jetzt so deutlich mehr als drei

01:19:43.502 --> 01:19:45.402
werden, dann denke ich mir schon so, okay, kann man das

01:19:45.402 --> 01:19:47.343
nicht vielleicht irgendwie anders machen, weil das kann sich

01:19:47.343 --> 01:19:49.042
ja eh keiner merken. Also ich meine, wenn die

01:19:49.042 --> 01:19:50.902
Idee das vervollständigt, okay, dann geht es vielleicht, aber

01:19:50.902 --> 01:19:52.863
ansonsten...

01:19:52.863 --> 01:19:54.902
Wenn man ja immer durchpipen muss durch irgendwie mehrere Ebenen.

01:19:55.163 --> 01:19:57.123
Was ich dann oft sehe, ist halt

01:19:57.123 --> 01:19:59.183
irgendwie, oder wo ich denke,

01:19:59.343 --> 01:20:01.022
da macht es dann nicht mehr so viel Sinn, ist halt, du hast

01:20:01.022 --> 01:20:03.022
eine Riesenliste, wo dann Leute dann anfangen,

01:20:03.163 --> 01:20:05.042
okay, Funktion geht auf, Klammer auf

01:20:05.042 --> 01:20:06.062
und dann kommt dann halt irgendwie so

01:20:06.062 --> 01:20:08.922
eine Riesenliste von Zeug, ja, dann

01:20:08.922 --> 01:20:10.843
Klammer zu und dann kommen erstmal 100 Zeilen

01:20:10.843 --> 01:20:12.922
Überprüfung, was man denn da bekommen hat

01:20:12.922 --> 01:20:15.022
und Fehlerbehandlung, wenn

01:20:15.022 --> 01:20:16.883
das irgendwie nicht so richtig zusammenpasst und so

01:20:16.883 --> 01:20:18.263
und ich denke so, ja, okay,

01:20:18.263 --> 01:20:21.462
Das kann man bestimmt in die besser machen.

01:20:22.502 --> 01:20:23.763
Ja, aber

01:20:23.763 --> 01:20:25.863
ja, es ist schon

01:20:25.863 --> 01:20:27.263
interessant, ja, überhaupt diese ganze

01:20:27.263 --> 01:20:29.383
Teilpainting-Geschichte oder so, da bin ich auch noch nicht so richtig

01:20:29.383 --> 01:20:31.363
Ich mag es natürlich, wenn die

01:20:31.363 --> 01:20:33.223
IDE mir hilft und irgendwie Dinge vorschlägt

01:20:33.223 --> 01:20:35.223
oder unterkringelt, wo ich einen Fehler gemacht habe.

01:20:35.263 --> 01:20:35.902
Kann Wim das auch?

01:20:37.582 --> 01:20:38.283
Gutes Linting?

01:20:40.343 --> 01:20:41.462
Ich weiß es gar nicht.

01:20:41.522 --> 01:20:43.062
Ich habe das nie wirklich verwendet, glaube ich.

01:20:43.062 --> 01:20:44.542
Also irgendwer aus dem Offline bestimmt ja.

01:20:45.582 --> 01:20:47.183
Bestimmt, ja. Ich habe das jetzt aber gar nicht

01:20:47.183 --> 01:20:48.683
darin verwendet bisher.

01:20:49.663 --> 01:20:51.243
Ja, ich habe das auch selber, benutze ich das

01:20:51.243 --> 01:20:53.323
fast nie, weil ich würde sagen,

01:20:53.402 --> 01:20:55.102
es macht ja eigentlich auch, also wäre jetzt mein

01:20:55.102 --> 01:20:57.062
Bauchgefühl nur dann Sinn, wenn man Pakete

01:20:57.062 --> 01:20:59.163
schreibt, die dann halt irgendwie von anderen Leuten verwendet

01:20:59.163 --> 01:21:01.143
werden und das mache ich eigentlich auch nicht so richtig

01:21:01.143 --> 01:21:02.522
häufig. Daher,

01:21:02.663 --> 01:21:05.223
ja, ich habe das, aber müssen wir mal eine Sendung

01:21:05.223 --> 01:21:07.183
zu machen und muss ich mich damit beschäftigen, das wollte ich

01:21:07.183 --> 01:21:09.143
auch schon immer mal tun. Das ist wirklich ein guter Grund, das mal zu

01:21:09.143 --> 01:21:09.542
machen, ja.

01:21:12.923 --> 01:21:15.263
Ja, und sonst, was ich auch ganz praktisch

01:21:15.263 --> 01:21:16.862
finde, wie gesagt, man kann halt über diese

01:21:16.862 --> 01:21:19.542
über die Package-Metadaten

01:21:19.542 --> 01:21:21.362
kann man halt super viele praktische Sachen

01:21:21.362 --> 01:21:23.303
mitgeben und da die PyPy-Seite halt wirklich

01:21:23.303 --> 01:21:25.002
die gibt da unendlich viel vor und

01:21:25.002 --> 01:21:27.243
viele Packages, die man so sieht, die nutzen das alles gar nicht,

01:21:27.303 --> 01:21:29.283
was sehr schade ist. Also nicht nur, dass du halt dann

01:21:29.283 --> 01:21:31.082
direkt an vorgegebener Stelle den Bug-Tracker,

01:21:31.623 --> 01:21:33.343
das Repo, den Maintainer,

01:21:33.462 --> 01:21:35.082
keine Ahnung was mitgeben kannst, du kannst halt auch

01:21:35.082 --> 01:21:37.002
diese Badges nehmen, wo du dann zum Beispiel

01:21:37.002 --> 01:21:39.022
sagst, hey, hier, das ist die aktuelle PyPy-Version

01:21:39.022 --> 01:21:41.203
oder der Bild läuft durch oder meine Docs funktionieren

01:21:41.203 --> 01:21:43.183
und es gibt ganz unendlich viele Sachen,

01:21:43.303 --> 01:21:45.082
unendlich viele Tools, die man da einfach anbinden

01:21:45.082 --> 01:21:46.843
kann und damit kann man halt,

01:21:47.263 --> 01:21:49.123
wenn man halt mal ein Package macht und auch gerne möchte, dass Leute

01:21:49.123 --> 01:21:51.143
das nutzen, kann man halt sehr viel

01:21:51.143 --> 01:21:52.743
ja, ist einfach

01:21:52.743 --> 01:21:55.002
auf die Seite. Du hast ein bisschen Convenience

01:21:55.002 --> 01:21:57.143
dazu. Genau, Convenience und auch die Leute

01:21:57.143 --> 01:21:59.042
einfach so ein bisschen so, hey, guck mal, ich weiß, was ich hier tue,

01:21:59.203 --> 01:22:00.942
ich habe hier irgendwie an alles gedacht. Auch bei

01:22:00.942 --> 01:22:03.163
diesen, da gibt es auch so Metadaten, wo du zum Beispiel sagen kannst,

01:22:03.223 --> 01:22:04.883
in welchem Status befindet sich das?

01:22:04.942 --> 01:22:06.902
Ist das gerade eine Alpha, ist das eine Beta, ist das

01:22:06.902 --> 01:22:09.123
Production-ready so? Da kannst du

01:22:09.123 --> 01:22:10.982
genau auflisten, welche Dependencies,

01:22:11.062 --> 01:22:12.783
was ich vorhin schon meinte, bei der Matrix,

01:22:13.123 --> 01:22:15.062
die und die Python-Version unterstütze ich, die und die Django-Version

01:22:15.062 --> 01:22:17.002
unterstütze ich. Ist halt super praktisch, wenn halt

01:22:17.002 --> 01:22:19.102
jemand kommt, der einfach gerade ein bisschen browset bei Python

01:22:19.102 --> 01:22:21.002
und einfach sucht, okay, ich möchte mein Problem lösen,

01:22:21.343 --> 01:22:22.982
welches Package geht denn für mich? Ich habe vielleicht

01:22:22.982 --> 01:22:25.022
eine Nebenbedingung, weiß ich nicht, ich bin noch auf Django 2 oder

01:22:25.022 --> 01:22:27.042
sowas und kann nicht so ohne weiteres hochgehen

01:22:27.042 --> 01:22:28.902
und dann einfach siehst, ach cool, dann zerstützt das,

01:22:28.962 --> 01:22:30.522
steht da, da muss man nicht irgendwie sich lange durch Dokus

01:22:30.522 --> 01:22:32.643
durchgraben oder weiß der Geier,

01:22:32.703 --> 01:22:34.263
aber es ist einfach super convenient und

01:22:34.263 --> 01:22:36.823
da gibt es sehr viel, ich mache das tatsächlich immer so,

01:22:36.923 --> 01:22:38.942
dass wenn ich irgendein Package gefunden habe,

01:22:39.002 --> 01:22:40.982
dass das sehr ausführlich nutzt, dann gucke ich mir GitHub

01:22:40.982 --> 01:22:42.263
an und klau dann da die Sachen

01:22:42.263 --> 01:22:44.163
und schaue es mir ab,

01:22:44.163 --> 01:22:45.862
was man alles machen kann.

01:22:46.042 --> 01:22:47.843
Also ein gut geklautes Hype gewonnen.

01:22:48.203 --> 01:22:48.902
Ja, auf jeden Fall.

01:22:48.962 --> 01:22:51.723
Das wollte ich eben noch sagen, das habe ich dann

01:22:51.723 --> 01:22:52.323
vergessen.

01:22:55.602 --> 01:22:56.703
Inzwischen mache ich das auch meistens so,

01:22:56.743 --> 01:22:57.962
dass ich dann halt die Tests in einem Verzeichnis habe

01:22:57.962 --> 01:22:59.082
und das kommt halt nicht mit ins Paket.

01:23:00.803 --> 01:23:02.303
Ich lese mir oft,

01:23:02.383 --> 01:23:03.902
wenn ich jetzt wirklich verstehen will,

01:23:04.022 --> 01:23:05.623
was irgendwie Software macht,

01:23:05.703 --> 01:23:07.602
dann fange ich oft mit den Tests an, mir die anzugucken.

01:23:07.723 --> 01:23:09.703
Aber da mache ich sowieso einen Checkout von dem

01:23:09.703 --> 01:23:11.823
Repository, dass ich dann

01:23:11.823 --> 01:23:13.183
in das Paket selber reingucke.

01:23:13.183 --> 01:23:15.343
eigentlich auch nicht.

01:23:16.482 --> 01:23:18.123
Insofern, genau, ich mache das inzwischen

01:23:18.123 --> 01:23:20.143
auch so, dass die Tests halt nicht mehr in dem Paket mit drin sind.

01:23:23.723 --> 01:23:24.082
Ja.

01:23:25.883 --> 01:23:28.102
Ja, man kann schöne Sachen im Paket machen.

01:23:28.582 --> 01:23:29.923
Auf jeden Fall. Habt ihr noch was?

01:23:30.402 --> 01:23:32.002
Ja, also ein großer Teil, den wir jetzt

01:23:32.002 --> 01:23:34.022
nicht haben, aber vielleicht machen wir den dann auch mal irgendwann anders,

01:23:34.123 --> 01:23:34.982
weil es jetzt auch gar nicht so,

01:23:35.522 --> 01:23:38.002
das betrifft ja auch eher wieder so den Data Science

01:23:38.002 --> 01:23:39.002
Teil

01:23:39.002 --> 01:23:41.962
Conda, das ist natürlich auch wieder eigene

01:23:41.962 --> 01:23:43.522
Pakete. Im Grunde auch

01:23:43.522 --> 01:23:45.243
ein eigener Teil wäre halt sowas wie

01:23:45.243 --> 01:23:46.902
bau ich ein Binary, einfach

01:23:46.902 --> 01:23:49.783
ein Executable-Ding irgendwie bauen kann.

01:23:50.663 --> 01:23:50.843
Das

01:23:50.843 --> 01:23:53.562
hätte man jetzt auch hier noch machen können,

01:23:53.862 --> 01:23:55.582
aber ich bin nicht vorbereitet.

01:23:55.902 --> 01:23:56.402
Keine Ahnung.

01:23:56.883 --> 01:23:58.703
Ich muss das Ganze nochmal angucken, wie das so funktioniert.

01:23:59.102 --> 01:24:01.423
Ich habe gerade benutzt, Leute. Also ich bin kein Fan davon

01:24:01.423 --> 01:24:02.123
persönlich, aber

01:24:02.123 --> 01:24:05.283
es nimmt sehr viel Kontrolle, die ich nicht

01:24:05.283 --> 01:24:07.303
abgeben möchte, immer ab. Das muss man immer so

01:24:07.303 --> 01:24:07.902
im Zaum halten.

01:24:08.823 --> 01:24:11.102
Ach so. Wieso?

01:24:11.102 --> 01:24:14.143
relativ intrusiv. Das heißt, man kann es nicht einfach so

01:24:14.143 --> 01:24:15.763
daneben in den Rest packen.

01:24:16.323 --> 01:24:17.862
Also ich muss zum Beispiel, um es mit PyEnv

01:24:17.862 --> 01:24:19.703
zu benutzen, als PyEnv zu funktionieren,

01:24:19.783 --> 01:24:21.883
mal so ein bisschen rumhacken, dass das vernünftig geht.

01:24:22.042 --> 01:24:24.022
Ja, manchmal funktioniert es halt

01:24:24.022 --> 01:24:25.183
auch nicht mehr richtig, das stimmt schon.

01:24:25.663 --> 01:24:27.602
Oder es macht halt irgendwelche Pfade kaputt oder

01:24:27.602 --> 01:24:29.923
schreibt sich in irgendwelche Systemkonflikte rein,

01:24:29.962 --> 01:24:31.962
wo es eigentlich gar nichts zu suchen hat, wo man es dann wieder rauslöschen

01:24:31.962 --> 01:24:34.163
muss und so. Ja, anstrengend.

01:24:35.522 --> 01:24:35.883
Genau,

01:24:36.062 --> 01:24:37.683
aber ist auf jeden Fall auch noch eine interessante

01:24:37.683 --> 01:24:40.022
Geschichte. Ja, ansonsten

01:24:41.102 --> 01:24:41.542
und

01:24:41.542 --> 01:24:42.343
ne, war's nicht.

01:24:43.743 --> 01:24:44.962
Fällt mir jetzt auch nichts mehr ein.

01:24:46.482 --> 01:24:46.643
Ja.

01:24:47.123 --> 01:24:49.143
Ja, ich glaube, eine Sache, die ist noch ganz cool,

01:24:49.243 --> 01:24:50.623
also ich habe tatsächlich gemerkt, dass

01:24:50.623 --> 01:24:53.143
selbst wenn ich, also wenn ich Code schreibe, dann bemühe

01:24:53.143 --> 01:24:55.002
ich mich dann ja auch, dass der ordentlich ist, dass der getestet ist

01:24:55.002 --> 01:24:56.962
und so weiter, aber sobald man dann anfängt,

01:24:57.002 --> 01:24:58.843
den in Package zu legen, fallen einem sofort noch

01:24:58.843 --> 01:25:01.143
10 Use Cases ein, die man eigentlich noch mit abdecken

01:25:01.143 --> 01:25:02.962
sollte und die Codequalität

01:25:02.962 --> 01:25:05.283
ist auf jeden Fall nachher immer nochmal 20-30%

01:25:05.283 --> 01:25:07.223
besser gefühlt, wenn ich das wirklich Package-Ready

01:25:07.223 --> 01:25:09.203
gemacht habe. Einfach, weil man dann

01:25:09.203 --> 01:25:11.383
und denkt, ach komm, du hast so ein Spezial

01:25:11.383 --> 01:25:12.743
für dein Projekt, ja, das weiß ich nicht,

01:25:13.143 --> 01:25:14.803
du hast so ein separates User-Model,

01:25:14.883 --> 01:25:16.323
das lasse ich einfach so nachdenken.

01:25:16.423 --> 01:25:19.283
Nee, das funktioniert nicht so. Das muss man nochmal sauberziehen

01:25:19.283 --> 01:25:21.343
und geradeziehen. Also das kann

01:25:21.343 --> 01:25:23.143
tatsächlich sehr, sehr pädagogisch wertvoll sein,

01:25:23.303 --> 01:25:24.803
einfach die Sachen mal

01:25:24.803 --> 01:25:27.002
zu versuchen auszulagern,

01:25:27.062 --> 01:25:28.102
weil man irgendwas Cooles gebaut hat.

01:25:29.183 --> 01:25:29.942
Ja, auf jeden Fall.

01:25:31.942 --> 01:25:33.323
Ja, wollen wir

01:25:33.323 --> 01:25:34.163
noch Pics machen?

01:25:34.223 --> 01:25:35.383
Habt ihr Pics der Woche?

01:25:36.303 --> 01:25:37.743
Ja, okay.

01:25:37.743 --> 01:25:46.942
Dann fange ich direkt an. Allerdings ist es kein Paket oder Software, sondern es ist ein Artikel, ist aber auch lang.

01:25:47.522 --> 01:25:54.542
Viel Spaß mit. Auch von Hinex Subclassing in Python Redux.

01:25:55.442 --> 01:25:57.042
Ich weiß nicht, ob wir den jetzt irgendwie...

01:25:57.042 --> 01:25:57.982
Den kannst du nochmal wiederholen, bitte.

01:25:59.723 --> 01:26:01.602
Subclassing in Python Redux.

01:26:01.962 --> 01:26:02.143
Ja.

01:26:02.143 --> 01:26:04.323
am 22. Juni rausgekommen.

01:26:04.462 --> 01:26:06.502
Das ist jetzt, also gefühlt noch gar nicht so lange her,

01:26:06.582 --> 01:26:08.562
vielleicht eine Woche oder, ja, müsste eigentlich

01:26:08.562 --> 01:26:09.763
etwas mehr als eine Woche vielleicht sogar.

01:26:09.982 --> 01:26:11.643
Ja, ich glaube eine Woche, zwei Tage, Jochen.

01:26:12.002 --> 01:26:14.323
Kann sein. Ist auf jeden Fall sehr interessant,

01:26:14.502 --> 01:26:16.602
genau, schöner, langer Artikel,

01:26:16.743 --> 01:26:18.582
wo er irgendwie so seine Erfahrungen über die

01:26:18.582 --> 01:26:20.542
letzten paar Jahre viel beschreibt

01:26:20.542 --> 01:26:22.362
und was alles nicht funktioniert. Er verlinkt auch

01:26:22.362 --> 01:26:23.663
viele sehr interessante Quellen.

01:26:24.462 --> 01:26:25.602
Und genau, das ist so,

01:26:26.263 --> 01:26:28.062
die Erfahrung habe ich auf jeden Fall auch schon gemacht,

01:26:28.203 --> 01:26:29.522
dass wenn man Interfaces so,

01:26:29.522 --> 01:26:47.683
auch wenn man Libraries schreibt, so definiert, dass sie darauf basieren, dass man dann irgendwie von den Sachen erbt, die man da geschrieben hat, dann hat man so am Anfang das Gefühl, das ist voll gut und dann irgendwann denkt man sich, oh mein Gott, was habe ich getan? Das ist schrecklich. Ich komme da nicht wieder raus.

01:26:48.703 --> 01:26:50.183
Und ja,

01:26:50.883 --> 01:26:52.723
beschreibt er, also das ist

01:26:52.723 --> 01:26:53.283
auf jeden Fall,

01:26:53.663 --> 01:26:56.082
die Zeit nehmen wir mal so einen langen, dunklen Nachmittag.

01:26:56.163 --> 01:26:56.743
Jetzt ist gerade Sommer.

01:26:56.743 --> 01:26:59.303
Zeit hat, dich das mal durchlesen

01:26:59.303 --> 01:27:01.643
und da ist viel lehrreiches

01:27:01.643 --> 01:27:03.502
Zeug drin. Sehr, sehr gut.

01:27:03.843 --> 01:27:04.343
Guter Artikel.

01:27:05.243 --> 01:27:06.123
Okay, interessant.

01:27:09.883 --> 01:27:11.183
Ronny, hast du auch einen

01:27:11.183 --> 01:27:13.323
Pick der Woche? Ein Modul, das du

01:27:13.323 --> 01:27:13.862
wahrscheinlich möchtest?

01:27:16.423 --> 01:27:17.643
Ich glaube tatsächlich

01:27:17.643 --> 01:27:19.163
gerade nicht aus dem FF.

01:27:19.862 --> 01:27:21.283
Oder irgendein Talk oder irgendwas

01:27:21.283 --> 01:27:21.902
Interessantes?

01:27:23.323 --> 01:27:25.462
Ja gut, ich meine, Dominik hat es ja

01:27:25.462 --> 01:27:27.542
gerade schon irgendwie fünfmal angesprochen, dieser erste

01:27:27.542 --> 01:27:28.982
Talk von der DjangoCon mit dem

01:27:28.982 --> 01:27:31.803
Programming for Pleasure.

01:27:32.163 --> 01:27:32.683
Ach ja, okay.

01:27:33.223 --> 01:27:35.263
Ich meine, das war so schön heretisch.

01:27:38.303 --> 01:27:39.843
Das hat auf jeden Fall

01:27:39.843 --> 01:27:41.223
sehr, sehr viel Spaß gemacht, den zu hören.

01:27:42.203 --> 01:27:42.623
Ich glaube,

01:27:43.062 --> 01:27:45.522
der Talk ist so meta, den kann man sich auch gut anhören,

01:27:45.582 --> 01:27:47.383
wenn man selbst nicht so tief

01:27:47.383 --> 01:27:48.602
im Coding drin ist.

01:27:48.982 --> 01:27:50.623
Das wäre vielleicht auch nochmal ganz interessant.

01:27:50.923 --> 01:27:52.862
Es passt jetzt zwar nicht so richtig da rein, aber wie war denn

01:27:52.862 --> 01:27:54.362
die DjangoCon, wie ist das eigentlich

01:27:54.362 --> 01:27:56.323
aus Sicht,

01:27:57.102 --> 01:27:58.323
ihr wart ja irgendwie Sponsor,

01:27:58.402 --> 01:28:00.562
als Firma, wie war das

01:28:00.562 --> 01:28:02.123
eigentlich sozusagen aus dem

01:28:02.123 --> 01:28:03.402
Blickwinkel?

01:28:04.623 --> 01:28:06.362
Ja, es ist schon, also wir haben uns alle

01:28:06.362 --> 01:28:08.502
immer, also wir haben mit ein paar wenigen

01:28:08.502 --> 01:28:10.263
Leuten im Büro geguckt, also

01:28:10.263 --> 01:28:12.442
ein paar Leute haben von zu Hause geschaut, ein paar wenige Leute waren im Büro

01:28:12.442 --> 01:28:14.062
und Corona und so ist ja alles nicht so einfach

01:28:14.062 --> 01:28:16.303
und haben uns natürlich

01:28:16.303 --> 01:28:18.522
alle immer schon gefreut, wenn dann unser nagelneues

01:28:18.522 --> 01:28:20.542
Promo-Video dann da über ein Bildschirm

01:28:20.542 --> 01:28:21.082
gelaufen ist

01:28:21.082 --> 01:28:24.123
und ja, ist auf jeden Fall auch

01:28:24.123 --> 01:28:26.082
cool, also irgendwie da das mit zu unterstützen,

01:28:26.263 --> 01:28:26.902
da irgendwie ein bisschen

01:28:26.902 --> 01:28:29.862
was zurückgeben zu können, weil ich meine,

01:28:30.102 --> 01:28:31.843
wir nutzen ja schon Dango irgendwie sehr, sehr viel

01:28:31.843 --> 01:28:32.683
und

01:28:32.683 --> 01:28:35.402
ja, ansonsten,

01:28:35.542 --> 01:28:37.982
man kriegt da halt so ein paar Möglichkeiten,

01:28:38.183 --> 01:28:39.803
du kannst dann irgendwie einen Job auf

01:28:39.803 --> 01:28:41.582
einem Slack posten, du kriegst einen Kanal,

01:28:41.803 --> 01:28:44.002
den du dann bearbeiten kannst, das haben wir tatsächlich

01:28:44.002 --> 01:28:46.123
gar nicht so wirklich gemacht,

01:28:47.343 --> 01:28:47.663
weil

01:28:47.663 --> 01:28:49.263
ja,

01:28:49.263 --> 01:28:49.362
ja,

01:28:49.442 --> 01:28:52.602
wir hatten da irgendwie

01:28:52.602 --> 01:28:54.942
gar nicht so drüber nachgedacht, sage ich mal.

01:28:55.183 --> 01:28:56.823
Also, weil es war immer so, ja klar, wir sind im Slack

01:28:56.823 --> 01:28:58.002
und dann schreibst du mit den Leuten und

01:28:58.002 --> 01:29:00.843
ein paar Leute haben sich noch gefragt wegen den Bewerbungen,

01:29:00.942 --> 01:29:02.562
wie es denn damit aussieht und wie es denn ist

01:29:02.562 --> 01:29:04.783
mit, wenn man halt

01:29:04.783 --> 01:29:07.102
irgendwie kein Deutsch kann und mit Remote und alles mögliche.

01:29:07.623 --> 01:29:08.743
Aber da haben halt

01:29:08.743 --> 01:29:10.542
manche Firmen, haben da halt dann richtig Party gemacht

01:29:10.542 --> 01:29:12.203
in ihrem Kanal und richtig dann da

01:29:12.203 --> 01:29:14.243
den Kanal bearbeitet und

01:29:14.243 --> 01:29:16.303
ist eigentlich auch ganz cool, weil das da so ein bisschen

01:29:16.303 --> 01:29:18.163
ein anderes Element dazu gibt, weil das ja

01:29:18.163 --> 01:29:19.303
es ist irgendwie,

01:29:20.522 --> 01:29:22.082
also ich weiß gar nicht, wer das war,

01:29:22.082 --> 01:29:40.723
und das ist schon ganz cool, weil das ist irgendwie auch eine ganz coole App,

01:29:40.763 --> 01:29:42.482
mit den Leuten so auch jetzt als Firma

01:29:42.482 --> 01:29:44.323
zu interagieren, ohne dass man jetzt irgendwie so direkt mit der

01:29:44.323 --> 01:29:46.143
Mega-Werbe-Call oder sowas kommt und so

01:29:46.143 --> 01:29:47.442
hey, ich will euch was verkaufen.

01:29:48.723 --> 01:29:50.442
Von daher denke ich mal, also wir haben

01:29:50.442 --> 01:30:20.423
und Jochen unterhalten sich über die Programmiersprache Python

01:30:20.442 --> 01:30:22.723
Ich tippe mal, dass dieses Hybrid-Ding

01:30:22.723 --> 01:30:23.582
wird auch einfach bleiben.

01:30:24.663 --> 01:30:26.843
Ja, vor allem, ich meine,

01:30:26.942 --> 01:30:29.283
es waren glaube ich 700 Leute

01:30:29.283 --> 01:30:30.343
oder so im Slack, habe ich gesehen.

01:30:30.482 --> 01:30:32.823
Normalerweise sind Django-Cons auf 300 irgendwas begrenzt

01:30:32.823 --> 01:30:35.082
oder 400 oder so. Super für Leute, die halt gerne

01:30:35.082 --> 01:30:36.883
irgendwie quasi denen das Geld geben möchten

01:30:36.883 --> 01:30:39.042
und gerne dabei sein möchten, aber eh nicht können,

01:30:39.102 --> 01:30:40.803
weil die halt irgendwo ganz weit weg wohnen

01:30:40.803 --> 01:30:42.902
oder keine Kohle haben oder keinen Urlaub kriegen oder so.

01:30:43.423 --> 01:30:45.002
Und die Leute einfach mitzunehmen

01:30:45.002 --> 01:30:46.823
und trotzdem teilhaben zu lassen,

01:30:46.902 --> 01:30:47.522
ist halt schon cool.

01:30:47.522 --> 01:31:17.502
Ja, stimmt.

01:31:17.522 --> 01:31:19.462
lassen. Manchmal ist es weniger Commitment,

01:31:19.562 --> 01:31:20.902
es ist mehr so Leaching

01:31:20.902 --> 01:31:23.542
und es gibt natürlich auch die Ausnahmen

01:31:23.542 --> 01:31:25.522
mit Leuten, die eigentlich gerne was machen

01:31:25.522 --> 01:31:27.423
würden, aber sich nicht trauen rauszugehen. Das ist halt

01:31:27.423 --> 01:31:28.042
immer so schwierig.

01:31:28.482 --> 01:31:31.462
An welcher Seite setzt du da

01:31:31.462 --> 01:31:33.383
jetzt an? Ich habe noch nicht so

01:31:33.383 --> 01:31:34.823
rausgefunden, was denn da die ideale

01:31:34.823 --> 01:31:37.203
Hybridform von ist, wie man das machen kann,

01:31:37.263 --> 01:31:39.362
ob es verschiedene Sachen dazu geben muss. Aber ich glaube also

01:31:39.362 --> 01:31:41.283
jetzt bei der Jungle-Community, glaube ich, gibt es so viele Leute,

01:31:41.362 --> 01:31:43.143
die da wirklich Spaß dran haben. Die Tickets sind ja auch eigentlich immer

01:31:43.143 --> 01:31:45.263
ausverkauft, also die For-Or-Tickets. Da muss man

01:31:45.263 --> 01:31:47.502
sich, glaube ich, keine Sorgen machen, dass man sich da selbst kannibalisiert.

01:31:47.522 --> 01:31:48.823
also das kann ich mir jetzt nicht vorstellen

01:31:48.823 --> 01:31:51.082
ich meine beim DagoMeter

01:31:51.082 --> 01:31:52.042
jetzt

01:31:52.042 --> 01:31:55.502
werden wir auch, ich meine es ist frei so wie es mit Corona

01:31:55.502 --> 01:31:57.582
und so weiter geht, aber ist es auch

01:31:57.582 --> 01:31:59.602
der Plan, dass wir jetzt vielleicht beim übernächsten Mal

01:31:59.602 --> 01:32:01.163
auch wieder das im Büro machen

01:32:01.163 --> 01:32:03.042
am nächsten Mal müssen wir mal schauen, wie das so klappt

01:32:03.042 --> 01:32:05.582
aber dass man auch sagt

01:32:05.582 --> 01:32:07.663
komm, wir stellen auf jeden Fall einfach eine Cam

01:32:07.663 --> 01:32:09.502
auf und wenn jemand Lust hat, sich irgendwie

01:32:09.502 --> 01:32:11.163
remote zuzuschalten, dann machen wir das halt

01:32:11.163 --> 01:32:13.743
ich weiß noch nicht, ob das gut funktioniert, ob das irgendwie doof ist

01:32:13.743 --> 01:32:15.383
ob dann vielleicht alle Leute eh sagen, boah geil

01:32:15.383 --> 01:32:17.163
vor Ort Bier trinken

01:32:17.163 --> 01:32:19.102
mit Leuten reden,

01:32:19.283 --> 01:32:20.482
socialisen.

01:32:21.522 --> 01:32:23.283
Das ist viel besser, das braucht man gar nicht.

01:32:23.402 --> 01:32:25.423
Aber ich glaube, die Möglichkeit würde ich jetzt einfach schon

01:32:25.423 --> 01:32:27.362
anbieten, weil wie gesagt, für manche Leute, die dann halt

01:32:27.362 --> 01:32:29.143
irgendwo von weiter weg kommen oder

01:32:29.143 --> 01:32:31.062
wenn jemand in der Eifel oder sowas,

01:32:31.183 --> 01:32:33.383
also jetzt hier, Kölner Raum, Eifel ist ja

01:32:33.383 --> 01:32:33.582
irgendwie so.

01:32:36.442 --> 01:32:37.343
Ist dann halt teilweise vor allem

01:32:37.343 --> 01:32:39.263
abends schwierig, hin und zurück zu kommen, wenn du nicht

01:32:39.263 --> 01:32:40.383
extra ein Auto fährst oder so.

01:32:41.203 --> 01:32:43.602
Und einfach die Leute noch mitzunehmen,

01:32:43.663 --> 01:32:45.542
wenn die da Spaß dran haben, das fände ich

01:32:45.542 --> 01:32:47.002
schon gut, das möglich zu machen. Wie gesagt,

01:32:47.002 --> 01:32:49.283
und hat gesagt, wir müssen mal gucken, welchen Modus wir nachher dann tatsächlich fahren,

01:32:49.462 --> 01:32:53.703
aber ich tippe mal, dass wir wahrscheinlich auf Hybrid gehen.

01:32:55.022 --> 01:32:56.923
Du warst auch in Berlin beim Django Meter Pass, wird sich.

01:32:57.462 --> 01:33:01.683
Ja, genau. Ich bin vom Philipp, der ist jetzt seit Januar der Organisator davon,

01:33:01.763 --> 01:33:06.643
angeschrieben worden über LinkedIn, habe mich gefunden und hatte mich nach ein bisschen Austausch gefragt

01:33:06.643 --> 01:33:08.323
und haben uns direkt sehr gut verstanden.

01:33:08.923 --> 01:33:11.723
Und dann habe ich einen Gastvortrag gemacht

01:33:11.723 --> 01:33:13.942
und habe ein

01:33:13.942 --> 01:33:16.343
kleines, persönliches, very strongly

01:33:16.343 --> 01:33:18.102
opinionated Best-of der Dungocon

01:33:18.102 --> 01:33:22.183
zum Besten gegeben.

01:33:22.303 --> 01:33:23.703
Ich dachte, du hättest über Packages geredet, schade.

01:33:24.042 --> 01:33:24.123
Nein.

01:33:25.362 --> 01:33:28.002
Und einfach quasi kurz erzählt, was die Talks sind

01:33:28.002 --> 01:33:30.143
und einfach den Leuten

01:33:30.143 --> 01:33:32.082
einfach so, hey, wenn du dich für dieses Thema interessierst,

01:33:32.123 --> 01:33:33.602
dann kann dieser Vortrag für dich interessant sein.

01:33:34.343 --> 01:33:36.243
Vorträge, die so ein bisschen mir vorbeigegangen

01:33:36.243 --> 01:33:37.862
sind, habe ich dann auch relativ offen

01:33:37.862 --> 01:33:39.962
gesagt, dass das bei mir persönlich vorbeigegangen ist, aber

01:33:39.962 --> 01:33:41.803
und mir ging es auch gar nicht darum, zu sagen,

01:33:41.883 --> 01:33:44.082
irgendwer ist doof oder so, sondern das waren wirklich so meine Eindrücke,

01:33:44.183 --> 01:33:45.383
die ich quasi beim

01:33:45.383 --> 01:33:48.123
davor sitzen, acht Stunden am Tag

01:33:48.123 --> 01:33:50.143
mir aufgenommen habe

01:33:50.143 --> 01:33:51.823
und einfach dann so, ja,

01:33:52.002 --> 01:33:54.022
keine Ahnung, also zum Beispiel gab es einen Talk

01:33:54.022 --> 01:33:55.883
über diese Interactive Shells, das ist

01:33:55.883 --> 01:33:57.942
einfach nicht meine Welt gewesen. Ich habe

01:33:57.942 --> 01:33:59.203
noch nie andersweise

01:33:59.203 --> 01:34:01.663
mit diesen Sachen arbeiten müssen und

01:34:01.663 --> 01:34:03.862
mehr als irgendwie mal mit der Django Shell

01:34:03.862 --> 01:34:05.923
mal kurz ein Model irgendwie aus der Datenbank gucken, habe ich halt noch

01:34:05.923 --> 01:34:07.803
nicht gemacht, so ungefähr, ja. Und dann

01:34:07.803 --> 01:34:09.883
irgendwie zu sagen, ich will da irgendwie Betriebssystem drauf installieren

01:34:09.883 --> 01:34:11.962
oder sowas. Es war

01:34:11.962 --> 01:34:13.723
einfach sehr weit weg. Das nicht heißt, dass

01:34:13.723 --> 01:34:15.803
der Talk schlecht war oder sowas. Das hat mich halt

01:34:15.803 --> 01:34:17.923
der Webentwickler einfach nicht

01:34:17.923 --> 01:34:19.743
abgeholt, was ja auch total legitim ist. Es ist ja auch schön,

01:34:19.843 --> 01:34:21.562
dass das breiten Wissen ist, aber das ist

01:34:21.562 --> 01:34:23.163
im Endeffekt das, was ich dann da

01:34:23.163 --> 01:34:25.542
so ein bisschen erzählt habe einfach.

01:34:26.383 --> 01:34:27.883
So, hey, wenn ihr euch dafür interessiert,

01:34:27.942 --> 01:34:29.623
ist das cool und so, dass man halt dann,

01:34:30.002 --> 01:34:31.263
weil wenn man nicht dabei war,

01:34:31.783 --> 01:34:33.723
dann trotzdem vielleicht

01:34:33.723 --> 01:34:35.743
so ein paar Ideen hat, wenn es dann irgendwann mal auf YouTube kommt.

01:34:35.823 --> 01:34:37.602
Ich glaube, die wollten, dass die so nächste Woche mal online

01:34:37.602 --> 01:34:39.663
stellen, die Talks. Ich weiß gar nicht, ob die das schon gemacht haben.

01:34:39.663 --> 01:34:41.143
einen Monat, das müsste ja genau

01:34:41.143 --> 01:34:42.683
dieses Wochenende sein.

01:34:43.522 --> 01:34:45.203
Wann war die JungleCon? 2. Juni oder so?

01:34:45.502 --> 01:34:47.402
2. bis 6. Juni, ja. Genau, und jetzt haben wir ja

01:34:47.402 --> 01:34:48.683
morgen. Ja, morgen ist es weiter.

01:34:49.843 --> 01:34:51.343
Genau, mal gucken. Ich werde das auf jeden Fall

01:34:51.343 --> 01:34:53.062
dann auch noch in die Show Notes packen, wenn

01:34:53.062 --> 01:34:55.582
sich das dann geben soll.

01:34:55.602 --> 01:34:57.143
Sehr interessant. Achso, ich habe auch noch

01:34:57.143 --> 01:34:59.143
einen Pick der Woche. Und zwar, ich weiß nicht,

01:34:59.183 --> 01:35:00.243
ob ihr TLDR kennt.

01:35:01.123 --> 01:35:03.143
Das gibt es auch auf PyPy und das ist eigentlich so ein

01:35:03.143 --> 01:35:04.923
Shell-Tool. Ihr kennt bestimmt

01:35:04.923 --> 01:35:07.042
Linux Command, um sich die

01:35:07.042 --> 01:35:09.163
Mainpages anzugucken von einem. Was macht denn das?

01:35:09.163 --> 01:35:11.723
und TLDR geht einen bisschen anderen Weg, ist aber sehr, sehr geil.

01:35:11.923 --> 01:35:13.243
Also ich stehe im Moment total drauf.

01:35:13.743 --> 01:35:15.022
Du kannst einfach das Gleiche machen wie bei Man.

01:35:15.102 --> 01:35:16.582
Das heißt, du gibst TLDR, du kommst mal ein

01:35:16.582 --> 01:35:19.002
und es zeigt dir nicht die Man-Patches an, sondern

01:35:19.002 --> 01:35:21.383
die häufigsten vier oder fünf Use-Cases,

01:35:21.502 --> 01:35:22.723
wie man das Ding benutzt.

01:35:22.723 --> 01:35:23.803
Ah, okay, das ist super.

01:35:23.942 --> 01:35:26.723
Das ist echt geil, weil du siehst halt direkt, wie man das benutzen kann, wenn man das benutzen will

01:35:26.723 --> 01:35:28.883
und musst nicht erst mal irgendwie in den Man-Patches gucken,

01:35:28.982 --> 01:35:30.743
wie war das und was heißt denn der Parameter.

01:35:30.843 --> 01:35:31.942
Nee, du siehst halt direkt irgendwie,

01:35:32.743 --> 01:35:34.502
wie ging das jetzt nochmal mit dem Grab oder

01:35:34.502 --> 01:35:36.683
mit dem Find und dann weißt du direkt, ah, so benutzt man das.

01:35:36.763 --> 01:35:37.683
Ah, total super und

01:35:37.683 --> 01:35:38.243
Cool.

01:35:39.062 --> 01:35:41.602
Gehe ich auch ein Short auf einer kleinen Seite, das ist auch meistens wirklich nur

01:35:41.602 --> 01:35:43.082
passt alles auf eine Seite, kannst du angucken.

01:35:43.663 --> 01:35:44.703
Mega geil, kann ich echt empfehlen.

01:35:45.402 --> 01:35:47.042
Das habe ich gefunden als Teil über die

01:35:47.042 --> 01:35:49.002
modernen Linux-Commands oder sowas.

01:35:49.123 --> 01:35:49.843
Kennt ihr das?

01:35:51.123 --> 01:35:53.703
Das heißt tatsächlich

01:35:53.703 --> 01:35:54.623
Modern Linux,

01:35:55.343 --> 01:35:57.423
muss ich kurz gucken, ja genau, Modern Unix, Entschuldigung, nicht Linux,

01:35:57.643 --> 01:35:58.462
es gibt ja einen Unterschied,

01:35:59.042 --> 01:36:01.482
von Ibrahimdiv und das ist

01:36:01.482 --> 01:36:03.482
sehr schön, gibt es die verschiedensten

01:36:03.482 --> 01:36:04.283
Erweiterungen.

01:36:04.283 --> 01:36:06.263
Genau, das habe ich, genau, Watt, Exa, ja, ja.

01:36:06.263 --> 01:36:08.263
Genau, genau, genau. Da ist auch das TLDR dabei.

01:36:09.062 --> 01:36:10.723
Und viele tolle Implementierungen

01:36:10.723 --> 01:36:11.823
auch in Rust und so, aber das ist

01:36:11.823 --> 01:36:14.602
sehr nice, wenn man modernen Linux mag,

01:36:14.703 --> 01:36:15.423
UDUX mag.

01:36:16.143 --> 01:36:18.423
Ja, das TLDR ist auch auf PyPy tatsächlich und

01:36:18.423 --> 01:36:20.683
kann sich einfach nicht schnell ziehen

01:36:20.683 --> 01:36:21.143
und macht Spaß.

01:36:22.022 --> 01:36:24.462
Ja, sehr cool. Wunderbar. Muss ich mir auch mal angucken.

01:36:25.402 --> 01:36:25.683
Vor allem.

01:36:26.223 --> 01:36:27.923
Ja, ich glaube, wir sind am Ende für diese Folge.

01:36:29.042 --> 01:36:30.203
Vielen Dank, dass du wieder da warst, Ronny.

01:36:30.502 --> 01:36:31.303
Vielen Dank für die Einladung.

01:36:31.303 --> 01:36:32.203
Hat viel Spaß gemacht.

01:36:33.143 --> 01:36:34.743
Ja, und ich würde sagen,

01:36:34.743 --> 01:36:37.203
hört uns, wann ihr uns hören wollt, bleibt uns gewogen

01:36:37.203 --> 01:36:39.383
morgens, mittags, abends, nachts beim Fahrradfahren

01:36:39.383 --> 01:36:41.283
passt trotzdem ein bisschen auf

01:36:41.283 --> 01:36:42.883
und bleibt gesund und

01:36:42.883 --> 01:36:44.183
ja, bis zum nächsten Mal.

01:36:44.183 --> 01:36:45.902
Alles klar. Tschüss. Tschüss. Ciao.
