WEBVTT

00:00:00.360 --> 00:00:03.760
Ja, hallo und herzlich willkommen zur 14. Folge vom Python-Podcast heute.

00:00:03.760 --> 00:00:06.060
Ja, wir haben euch uns länger nicht mehr blicken lassen.

00:00:06.060 --> 00:00:10.940
Das tut uns natürlich sehr leid, wir waren ein bisschen hektisch, haben hintereinander beide Urlaub gemacht

00:00:10.940 --> 00:00:12.900
und dann ist natürlich vorher und nachher immer sehr viel zu tun.

00:00:12.900 --> 00:00:16.340
Und wir hatten ein paar Abstimmungsprobleme, wir wollten nämlich eigentlich eine Projektmanagement-Folge machen.

00:00:16.340 --> 00:00:20.040
Das ist dann an schlechte Projektmanagement-Folge gescheitert.

00:00:20.040 --> 00:00:23.480
Ja, ich habe sieben verschiedene Termine gehabt und dann immer wieder verschoben.

00:00:23.480 --> 00:00:27.540
Aber heute machen wir deswegen eine Laber-Folge, damit wir euch nicht ganz enttäuschen.

00:00:27.540 --> 00:00:29.500
Aber wer ist wieder dabei? Das ist der Teuner bei der Christian.

00:00:29.720 --> 00:00:29.900
Hallo.

00:00:29.900 --> 00:00:31.200
Na gut, moin.

00:00:31.200 --> 00:00:33.160
Nächstes Mal vielleicht ohne Knacksen.

00:00:33.160 --> 00:00:36.460
Mal gucken, wer es denn bekommt, das werden wir hinterher rausfinden.

00:00:36.460 --> 00:00:41.380
Ja, ansonsten wieder hier aus dem Wintergarten, wird auch dabei.

00:00:41.380 --> 00:00:45.240
Ja, das ist der Jochen, ich bin der Dominik.

00:00:45.240 --> 00:00:45.900
Ja, genau.

00:00:45.900 --> 00:00:50.300
Und ja, ich weiß nicht, womit fangen wir an? Irgendwelche Neuigkeiten?

00:00:50.300 --> 00:00:52.460
Ja, genau, wir wollten wieder ein bisschen News aus der Szene erzählen.

00:00:52.460 --> 00:00:55.960
Und ihr beiden wart auf der Pycon, das habe ich ja leider nicht geschafft wegen meinem Urlaub.

00:00:55.960 --> 00:00:58.340
Aber ja, das ist bestimmt sehr spannend gewesen.

00:00:58.340 --> 00:00:59.700
Erzähl doch mal, was war da alles?

00:00:59.700 --> 00:01:00.060
Was ging jetzt los?

00:01:00.060 --> 00:01:09.060
Ja, also ich habe dummerweise auch nebenher noch so ein bisschen arbeiten müssen.

00:01:09.060 --> 00:01:15.080
Es war alles so, man muss halt eigentlich so ein bisschen Zeit dafür nehmen.

00:01:15.080 --> 00:01:17.540
Genau, es tut jetzt noch weh.

00:01:17.540 --> 00:01:22.140
Ja, aber es war schon interessant.

00:01:22.140 --> 00:01:24.380
Ich habe mir einige Dinge da angeguckt.

00:01:24.380 --> 00:01:29.260
Super fand ich zum Beispiel den Vortrag.

00:01:29.320 --> 00:01:30.740
Jetzt habe ich den Namen vergessen.

00:01:30.740 --> 00:01:37.920
Luciano Ramallo, der das Buch Fluent Python geschrieben hat.

00:01:37.920 --> 00:01:39.360
Das kann ich auch nur empfehlen.

00:01:39.360 --> 00:01:40.620
Sehr, sehr gutes Buch.

00:01:40.620 --> 00:01:46.300
Hat einen Vortrag darüber gehalten, dass vielleicht diese Unterteilung,

00:01:46.300 --> 00:01:51.020
die man klassischerweise jetzt aus der Informatik kennt,

00:01:51.020 --> 00:01:56.120
irgendwie in funktionale, objektorientierte, strukturierte Programmiersprachen

00:01:56.120 --> 00:01:59.280
nicht so komplett trifft auf das, was man heute so vorfindet.

00:01:59.280 --> 00:02:03.340
Und man sich vielleicht auch eher an den Features der Sprachen orientieren sollte oder so.

00:02:03.340 --> 00:02:06.760
Und das hat da schon einen relativ starken Punkt.

00:02:06.760 --> 00:02:12.140
Also man sollte sich mehr daran orientieren, wie die Syntax, wie die Features, was die Sprache so kann.

00:02:12.140 --> 00:02:13.840
Ja, was man mit der Sprache so machen kann, genau.

00:02:13.840 --> 00:02:17.780
Und das jetzt nicht, weil zum Beispiel Python wird halt immer in diese Skriptsprachenecke gesteckt.

00:02:17.780 --> 00:02:19.280
Und warum?

00:02:19.280 --> 00:02:22.460
Ja, es gibt eigentlich keinen besonderen Grund dafür.

00:02:22.460 --> 00:02:27.340
Man könnte es auch in die objektorientierte Programmiersprachenecke stellen.

00:02:27.340 --> 00:02:29.260
Also warum ist das jetzt so?

00:02:29.260 --> 00:02:31.400
Es gibt keine, aber C-Sharp schon eine oder so.

00:02:31.400 --> 00:02:32.500
Das ist halt nicht so richtig klar.

00:02:32.500 --> 00:02:39.580
Und ja, so ein bisschen schwingt damit ja auch dann sozusagen immer das Vorurteil mit,

00:02:39.580 --> 00:02:41.780
dass das jetzt gar keine richtige Programmiersprache ist oder so.

00:02:41.780 --> 00:02:46.100
Dann gibt es ja die Gruppe der richtigen Programmiersprachen, Java, C-Sharp und so.

00:02:46.100 --> 00:02:49.440
Und Python ist halt irgendwie so eine komische Skriptsprache.

00:02:49.440 --> 00:02:52.620
Ja, von richtigen Programmieren wird man als Python-Programmier auch immer ein bisschen schräg angeguckt.

00:02:52.620 --> 00:02:56.900
Das ist das Interessante.

00:02:56.900 --> 00:02:59.020
Das Interessante ist, dass ja jetzt aber alle,

00:02:59.220 --> 00:03:03.600
die letzten Jahre war es schon so, dass wir uns auf den Wir, also die Python-Community,

00:03:03.600 --> 00:03:08.440
und Python als Sprache sich ja über die ganzen Indizes und diese Bewertungen,

00:03:08.440 --> 00:03:11.220
von welchen Sprachen beliebter sind, immer weiter nach vorne geschoben hat.

00:03:11.220 --> 00:03:13.360
Und ich glaube, dieses Jahr hatte ich so...

00:03:13.360 --> 00:03:15.400
Ich habe gut das Verständnis daran gelehrt.

00:03:15.400 --> 00:03:19.020
Ja, also ich meine, ich habe es die letzten drei, vier Jahre beobachtet,

00:03:19.020 --> 00:03:22.580
dass Python immer bei allen Bewertungen im Prinzip unter den Top 5 ist.

00:03:22.580 --> 00:03:25.620
Und jetzt dieses Jahr hat es ein paar Mal wirklich geknackt,

00:03:25.620 --> 00:03:29.160
dass wir, ich glaube, bei drei von vieren, ich weiß nicht mehr welche, das waren auf Platz,

00:03:29.180 --> 00:03:29.760
eins sind.

00:03:29.760 --> 00:03:37.020
Das sorgte auch dafür, dass unser Branchendienst Heise nach der PyCon

00:03:37.020 --> 00:03:40.140
und nachdem sie irgendwie ihre eigene Machine Learning Konferenz hatten,

00:03:40.140 --> 00:03:44.200
sich beim Verband bei uns gemeldet hatten und meinten,

00:03:44.200 --> 00:03:47.740
sie hätten das gar nicht so richtig gemerkt, aber Python scheint ja irgendwie benutzt zu werden.

00:03:47.740 --> 00:03:50.960
Ja, das sind sehr große Leute.

00:03:50.960 --> 00:03:52.520
Wo das ja jetzt plötzlich herkäme.

00:03:52.520 --> 00:03:54.980
Auf wie kommt denn das?

00:03:54.980 --> 00:03:56.020
Ja, genau.

00:03:56.020 --> 00:03:58.980
Aber ich glaube tatsächlich, also inzwischen,

00:03:59.140 --> 00:04:00.100
ich höre das auch manchmal nochmal,

00:04:00.100 --> 00:04:04.460
auch wenn man jetzt, ich hatte heute auch ein Thema,

00:04:04.460 --> 00:04:05.760
was wir später noch aufgreifen werden,

00:04:05.760 --> 00:04:12.040
auf dem Ticker und wenn man dann wieder die Kommentare dazu durchliest,

00:04:12.040 --> 00:04:16.980
dann ist es ganz spannend, weil halt so breit gestreute Vorurteile gegenüber Python,

00:04:16.980 --> 00:04:20.100
die letzten, die das immer noch rausholen von wegen,

00:04:20.100 --> 00:04:21.740
ja, Indentation ist ja eklig.

00:04:21.740 --> 00:04:26.080
Ja, ich glaube, das wird nie weggehen,

00:04:26.080 --> 00:04:28.920
dass da irgendwer nochmal mit den Augen rollt,

00:04:29.100 --> 00:04:32.420
aber ich finde es eigentlich ganz angenehm heutzutage nicht mehr irgendwie argumentieren zu müssen

00:04:32.420 --> 00:04:33.820
einem Kunden gegenüber oder einem Projekt,

00:04:33.820 --> 00:04:36.100
ob ich jetzt Python einsetze oder nicht, das ist jetzt endlich gegessen.

00:04:36.100 --> 00:04:36.600
Ja.

00:04:36.600 --> 00:04:37.840
Nach 20 Jahren auch mal Zeit.

00:04:37.840 --> 00:04:40.000
Ja, die letzten gehen schon in Rente, haben wir gehört.

00:04:40.000 --> 00:04:41.320
Eine letzte Woche, Halloween,

00:04:41.320 --> 00:04:41.820
Ja.

00:04:41.820 --> 00:04:43.540
als nämlich der Guido hat getwittert,

00:04:43.540 --> 00:04:47.380
dass er Dropbox verlassen wird und in Rente geht, also endgültig,

00:04:47.380 --> 00:04:53.180
nachdem er ja letztes Jahr schon seinen teilweise Rückzug als benevolent dictator for life haben er gegeben.

00:04:53.180 --> 00:04:58.740
Ja, wobei das ja zwei verschiedene Dinge, also sozusagen das Thema Erwerbstätigkeit zum Lebensunterhalt,

00:04:58.740 --> 00:04:59.060
äh, ja, wobei das ja zwei verschiedene Dinge, also sozusagen das Thema Erwerbstätigkeit zum Lebensunterhalt,

00:04:59.060 --> 00:05:01.060
äh, das hängt da an den Nagel, ähm, aber den benevolent dictator... Ja, wer weiß...

00:05:01.060 --> 00:05:03.060
ähm, aber den benevolent dictator... Ja, wer weiß...

00:05:03.060 --> 00:05:03.900
ähm, aber den benevolent dictator... Ja, wer weiß...

00:05:03.900 --> 00:05:08.820
Wer weiß, ob das nicht insgesamt so ein bisschen mit der Karriere zu tun hat, dass man sich dann so insgesamt zurückzieht und dann auch im Berufsleben rausgeht.

00:05:08.820 --> 00:05:09.720
Also, woher denn?

00:05:09.720 --> 00:05:13.360
Was er als letztes gemacht hat, hat er glaube ich Typisierung gemacht in Python, oder? Irgendwie mit MyPy viel.

00:05:13.360 --> 00:05:16.560
MyPy, genau, das war sein großes Thema bei, äh, bei Dropbox gewesen.

00:05:16.560 --> 00:05:24.900
Äh, da ist der, da kommt die MyPy-Idee her, den Namen habe ich, von dem Fose habe ich gerade nicht im Kopf, ähm, aber...

00:05:24.900 --> 00:05:34.660
Ja, persönlich, ähm, Guido hat letztes Jahr beim BDFL, ähm, es war ja kein BDFL an den Nagel hängen, sondern nur einen, äh, nicht definierten, äh, langen Urlaub nehmen,

00:05:34.660 --> 00:05:44.860
und der Prozess, der ja angetreten wurde, ähm, zum Thema Core-Team und wie, äh, werden Entscheidungen ohne ihn getroffen, äh, welches Gremium kommt da zustande,

00:05:44.860 --> 00:05:54.860
auch da ist er in dem Gremium ja wieder drinne, ähm, und er ist aktiv dabei, ähm, ich glaube, natürlich hat er signalisiert, dass er jetzt dann langsam auch irgendwann mal auf seine Gesundheit auffällt,

00:05:54.860 --> 00:06:06.780
und, ähm, äh, mit seiner Energie haushalten, und, äh, aber ich habe den Eindruck nicht gewonnen, dass er jetzt, äh, schon jetzt einen Plan hat zu sagen, bis dann, und dann will er irgendwie komplett sich rausgezogen haben.

00:06:06.780 --> 00:06:11.200
Ich habe eher das Gefühl, er will es halt mit seiner Energie eben haushalten, um das noch eine Weile durchzuhalten.

00:06:11.200 --> 00:06:18.920
Ja, durchaus vernünftig, ja. Das ist ja aber dann der richtige Schritt, ne, weil dann bei Dropbox jetzt nicht mehr gebraucht wird, oder vielleicht gebraucht wird er schon, aber irgendwie...

00:06:18.920 --> 00:06:22.040
Ja, aber, also, das ist jetzt nicht mehr unbedingt machen.

00:06:22.040 --> 00:06:23.440
Ja, irgendwann wird er auch ein bisschen mehr Ruhe haben.

00:06:24.820 --> 00:06:28.780
Das wird ja schon lange jetzt, also, fast, äh, so, äh, nicht ganz 30 Jahre.

00:06:28.780 --> 00:06:29.240
Das war ja nicht 30-Jähriges.

00:06:29.240 --> 00:06:30.080
Ja, 30 Jahre.

00:06:30.080 --> 00:06:32.280
Das müssen wir mal rausfinden, wann 30-Jähriges...

00:06:32.280 --> 00:06:33.540
Ja, stimmt, das sollten wir nicht verfolgen.

00:06:33.540 --> 00:06:36.500
Jetzt finden wir eine Kerze an.

00:06:36.500 --> 00:06:47.960
Und, ähm, ja, ich habe dann nochmal auf, als ich das gelesen habe, auch auf Wikipedia geguckt, dachte mir so, so früh in Rente, das ist ja aber, das stimmt gar nicht, das ist ja auch schon tatsächlich irgendwie echt, echt lange dabei, ja.

00:06:47.960 --> 00:06:54.780
Ja, Guido macht das schon eine Weile, und, ähm, ich habe mir aber tatsächlich meinen Eindruck, wie ich in so den letzten Jahren...

00:06:54.780 --> 00:07:02.700
Ähm, ähm, wahrgenommen habe, ich habe ihn, glaube ich, äh, ich weiß nicht, wann ich ihn das letzte Mal gesehen habe, aber, ähm, der hat Spaß an Python.

00:07:02.700 --> 00:07:24.320
Der hat halt den BDFL unter anderem deswegen weggelegt, weil natürlich trotzdem diese Verantwortung für diese Größe der Community und mit allem, was halt dann immer mal in so dynamischen Community-Prozessen passiert, was halt auch unschön ist, äh, war für ihn, das ist ja im Prinzip der Move zu sagen, äh, ich will nicht, dass das dann alles, weil ich derjenige bin, der die letzte Entscheidung trifft, äh, trifft, dann zum Schluss bei mir landet und ich den ganzen Mist an der Backe habe.

00:07:24.320 --> 00:07:24.480
Mhm.

00:07:24.740 --> 00:07:36.540
Ähm, sondern, dass wir das halt dann auf mehr Schultern verteilen, was natürlich dann auch schön ist, äh, vorausdenken von natürlich Busfaktor, ähm, da ist es gut, wenn die Community sich sortiert hat, ähm, oder...

00:07:36.540 --> 00:07:38.700
Für den Teil, dass es irgendwann Magie, du meinst, mehr geben sollte.

00:07:38.700 --> 00:07:44.700
Ja, ja, das fand ich auch schön, also das mit dem Busfaktor, das, äh, ist ja auch mal so ein, vielleicht, ich weiß nicht, ob das, äh, jeder versteht, aber das...

00:07:44.700 --> 00:07:54.700
Was ist ein Busfaktor? Ich habe gerade nur gesagt BDFL, BMF, äh...

00:07:54.700 --> 00:07:57.700
Kritisch, äh, zu beeinflussen im Fortgang und...

00:07:57.700 --> 00:08:03.460
Ja, wie, wie, wie viele Leute dürfen vom Bus überfahren werden, äh, äh, bevor das Projekt dann, äh, vorbei ist.

00:08:03.460 --> 00:08:24.660
Ja, und das ist meistens eins, äh, irgendwie so für die allermeisten Projekte und, äh, manchmal will man vielleicht mehr haben als eins, weil es, äh, nicht gut wäre, wenn, wenn das, äh, so einfach zu beenden wäre und, ähm, äh, ich habe aber jetzt letztens, deswegen habe ich da kurz noch eingehakt, äh, gehört, dass jemand das anders genannt hat, weil er meinte, das klingt immer irgendwie so negativ, wenn Leute vom Bus überfahren werden und er dann...

00:08:24.660 --> 00:08:32.160
Er spricht jetzt immer vom, vom Lotto-Faktor, Leute, Leute im Lotto gewonnen, äh, gewinnen und dann halt irgendwie was anderes machen vielleicht, ja.

00:08:32.160 --> 00:08:54.520
Ich meine, das war, das war, der Faktor war bei Python, äh, zu dem Zeitpunkt eh schon nicht mehr so stark ausgeprägt, weil, ich meine, die PSF ist breit aufgestellt, das Code-Team ist breit aufgestellt, ähm, und es ist natürlich schöner, wenn man das halt dann nicht in einer Notsituation machen muss, sondern wenn es halt vorab geklärt ist, ist halt so ein bisschen wie, äh, mit seinem, ähm, Partner dann, äh, schon vorher zu klären, wer Patientenverfügung hat.

00:08:54.620 --> 00:09:24.580
Ja, so ein Notfallkoffer, ne, wenn du wirklich so eine Firma hast und dann darauf angewiesen bist, dann brauchst du einen Notfallkoffer, weil du nicht weißt, was du machen musst, wenn der Chef tatsächlich irgendwo ist, rennen, das ist natürlich so ein...

00:09:24.580 --> 00:09:36.300
Ja, sehr schön. Also, ja, also, für alle, die es noch nicht wussten, also, Python kann tatsächlich auch feste Typisierung, also, ne, wenn ihr MyPy benutzt, dann könnt ihr auch die Typen festnageln, wenn ihr möchtet. Also, mehr oder weniger könnt ihr immer noch, müsst ihr nicht, aber, äh, es wird euch wenigstens gesagt.

00:09:36.300 --> 00:09:38.880
Es gibt eine Statische Analyse dazu.

00:09:38.880 --> 00:09:39.620
Genau.

00:09:39.620 --> 00:09:39.900
Genau.

00:09:39.900 --> 00:09:42.280
Ja, aber ihr wart noch bei der PyCon, also ihr habt jetzt...

00:09:42.280 --> 00:09:44.120
PyCon.de, ja, auch gerade, ja, da waren wir gerade.

00:09:44.120 --> 00:09:54.540
Äh, genau, ja, ansonsten, ich muss jetzt nochmal so gerade überlegen, was hatte ich denn noch angeguckt, was mir gut gefallen hat, ähm, äh, oh, das muss ich jetzt, das habe ich mir dann vorgenommen, mir...

00:09:54.540 --> 00:10:03.120
...nochmal näher anzuschauen, äh, ähm, nicht, nicht nur Alphabet-Notebooks verwende ich schon ganz, äh, ganz lange, oder, äh, Jupyter-Notebooks, ähm...

00:10:03.120 --> 00:10:05.280
Du hattest einen bösen Bug in Python 3.8 übrigens.

00:10:05.280 --> 00:10:05.960
Oh, okay, ja, klar.

00:10:05.960 --> 00:10:07.040
Auf Windows aber nur, ja.

00:10:07.040 --> 00:10:24.240
Ähm, und, äh, da gibt es jetzt so eine, äh, komplette, äh, Entwicklungsumgebung eigentlich, äh, JupyterLab, die, äh, die halt auch da irgendwie diverse Fortschritte, ich habe sie mir schon mal vor irgendwie einiger Zeit angeguckt, bin dann aber bei den, äh, bei den Notebooks geliehen, aber da hat jemand...

00:10:24.500 --> 00:10:41.680
...gehalten, das war gehalten, was man damit alles so machen kann, und das sah schon sehr, sehr gut aus, also so, äh, ein Problem, zum Beispiel, was dann, vor allen Dingen gibt es da jede Menge Plugins, die man für tolle Sachen benutzen kann, halt so etwas, was ich, was ich, äh, irgendwie immer nervig finde, ist, wenn man zum Beispiel nicht so richtig Diffs sehen kann, wenn man irgendwie Sachen eincheckt, oder halt Sachen verändert an den...

00:10:41.680 --> 00:10:44.160
Du kannst ja jetzt Jupyter-Notebooks auch in VS Code öffnen, übrigens, live.

00:10:44.160 --> 00:10:44.560
Ja.

00:10:44.560 --> 00:10:45.660
In Sites, in die...

00:10:45.660 --> 00:10:47.640
Oh, okay, das, äh, muss ich mir auch mal angucken.

00:10:47.640 --> 00:10:52.880
Ja, das funktioniert leider noch nicht richtig gut mit der Dango-Stelle, zumindest habe ich das nicht, äh, vernünftig hinbekommen, aber, ja, doch, sonst.

00:10:52.880 --> 00:10:54.460
Ja, und...

00:10:54.460 --> 00:11:24.420
Aber da, da waren echt tolle Sachen dabei, da waren auch so viele interaktive Geschichten, man kann ja komplette UI-Geschichten irgendwie mitbauen, und, äh, Sachen drin, also ein Plugin ist, man kann da irgendwie Diagramme drin malen, so, weil man sich immer fragt, so, okay, wenn ich jetzt nochmal so ein Architektur-Diagramm aufmalen möchte, oder so, boah, was nehme ich denn jetzt dafür, äh, inzwischen, oft nehme ich dann irgendwie ein Online-Tool dafür, oder so, aber das geht auch alles in JupyterLab, und, ähm, ja, also das war, äh, beeindruckend, was da für Fortschritte inzwischen, äh, erzielt werden.

00:11:24.420 --> 00:11:54.380
Und ich muss mir das unbedingt wieder angucken, habe es aber noch nicht gemacht, weil Urlaub war, äh, also das fand ich, fand ich noch ziemlich gut, und, ähm, äh, was habe ich denn noch? Oh, ich habe mir noch einen, äh, Vortrag angeguckt über, äh, äh, ein, äh, ein System, das ich mal irgendwann gebaut habe, äh, irgendwie, wo jemand, äh, da stand schon im Abstract drin, irgendwie so, ja, wir treiben hier so ein Maschinen-Learning-System seit zehn Jahren produktiv, und, äh, hier mal so, was wir alles gelernt haben, und was, äh, was alles, äh, was wir alles gelernt haben.

00:11:54.380 --> 00:12:08.420
Und, äh, ja, das war tatsächlich etwas, was ich mal irgendwann mitgebaut hatte. Damals dachte ich so, oh je, ein Vortrag darüber, was ich alles falsch gemacht habe vor zehn Jahren. Aber war, war, nee, war sehr gut, äh, Spaß gemacht.

00:12:08.420 --> 00:12:11.740
Und was hast du alles falsch gemacht? Siehst du da eine Kurzversion von? Also auch alles gemacht?

00:12:11.740 --> 00:12:24.340
Ja, also was sich die Leute dann nicht mehr erklären konnten, also das war, das war auch interessant, also viele Dinge haben dann so hinterher eine andere Erklärung bekommen, weshalb das denn passiert sei, äh, aber es gab da oft irgendwie, äh,

00:12:24.340 --> 00:12:35.920
die tatsächliche Erklärung war oft eine andere, sowas wie zum Beispiel, äh, ja, warum wurde eigentlich, äh, Disco genommen als MapReduce, äh, Implementation, ja, und, äh.

00:12:35.920 --> 00:12:36.580
Was auch immer Disco ist.

00:12:36.580 --> 00:12:52.340
Das war, ja, das war auch damals schon nicht so super populär, das war so irgendwie so ein, äh, äh, Projekt gewesen von Nokia Research, äh, wo die halt, äh, ja, also dieses MapReduce-Paradigma implementiert haben, und, ich meine, wir haben, wir haben damals eine Menge Sachen ausprobiert, haben dann Hadoop ausprobiert.

00:12:54.300 --> 00:13:07.140
Ähm, und, ähm, der, äh, der Grund, warum wir dann Disco genommen haben, war, weil es das einzige Python-MapReduce-Framework war, und Hadoop war wirklich, also, äh, hätte man nehmen können, aber das war so, äh, das hat keinen Spaß gemacht.

00:13:07.140 --> 00:13:16.160
Und eigentlich, was wir vorher hatten, äh, waren selbstentwickelte Geschichte, aber es hieß halt, nee, das bitte nicht, sondern irgendwas Externes nehmen an der Stelle, weil wir nicht, äh, nochmal Infrastruktur selber bauen wollen.

00:13:16.160 --> 00:13:24.260
Das war der eigentliche Grund. Oder dann auch solche Sachen wie, warum wurde das eigentlich so aufgeteilt, oder, und, das, das ist, das, diese Probleme kennt man heute gar nicht mehr.

00:13:24.260 --> 00:13:33.180
Also, das lag, ähm, also, warum macht man das überhaupt so parallel, warum macht man das nicht auf einer großen Maschine, und der Grund damals war, dass wir da noch ganz viele 32-Bit-Rechner hatten.

00:13:33.180 --> 00:13:37.520
Und da gibt's halt dann bloß so 3-Gigabit-Hauptspeicher, und dann ist halt irgendwie Schluss.

00:13:37.520 --> 00:13:44.740
Und dann muss man das Problem halt in kleinere Dinge aufteilen, wenn man zum Beispiel Sachen tokenisieren will, und die Liste der Tokens einfach nicht mehr in den Hauptspeicher fasst, oder so.

00:13:44.740 --> 00:13:45.520
Erstmal so als Beispiel.

00:13:45.520 --> 00:13:54.220
Ähm, und dann muss man das halt plötzlich dann auf mehrere Rechner verteilen, und dann halt sowas MapReduce-artiges verwenden, äh, ja, so, ja, das ist alles.

00:13:54.220 --> 00:13:57.000
Und heute würde man das alles gar nicht mehr so machen.

00:13:57.000 --> 00:13:58.600
Und noch ein paar RAM-Riegel reinschieben.

00:13:58.600 --> 00:14:00.880
Einfach mal mehr RAM, ja.

00:14:00.880 --> 00:14:08.300
Ja, aber es war auf jeden Fall tolle, tolle Geschichte, war so ein bisschen Nostalgie, hat Spaß gemacht, ja.

00:14:08.300 --> 00:14:13.160
Das ist cool, ja, so weit würde ich auch mal kommen, dass ich auf eine Veranstaltung gehe, und irgendjemand einen Vortrag darüber hält, was ich vor 10 Jahren falsch gemacht habe.

00:14:13.160 --> 00:14:22.540
Ja, ich, ich, das ist, äh, ja, ja, also sie bauen das System, es ist jetzt auch weg, es gibt jetzt ein neues.

00:14:24.180 --> 00:14:24.540
Ausgenient.

00:14:24.540 --> 00:14:43.360
Äh, ja, was, was war noch so, äh, genau, ähm, äh, dann war noch so ein Freelancer-Panel, äh, das war irgendwie, äh, ganz, ganz interessant mal da, so, da habe ich mich auch irgendwie viel zu selten mit beschäftigt, mit dem, äh, ähm, hm?

00:14:43.360 --> 00:14:45.800
Ja, also das Freelancer-Panel wolltest du kurz erzählen.

00:14:45.800 --> 00:14:54.160
Ja, äh, was, was eigentlich so die Rahmenbedingungen von dem, von dem, was, was ich so normalerweise halt, äh, beruflich mache, angeht, und, ähm, da.

00:14:54.160 --> 00:14:56.960
Da waren einige sehr interessante Informationen dabei, ich weiß aber nicht, ob das...

00:14:56.960 --> 00:14:59.520
Die haben alle gesagt, lach das ein, die haben alle gesagt, puh, mach das alle.

00:14:59.520 --> 00:15:09.720
Ja, äh, nö, ist schon, schon nett und so, ähm, ja, ich habe auch, äh, nie so, ich habe dann auch mal einen Begriff dafür gelernt, wie das heißt, was ich mache, das heißt irgendwie Team-Augmentation.

00:15:09.720 --> 00:15:11.520
Team-Augmentation.

00:15:11.520 --> 00:15:11.760
Ja.

00:15:11.760 --> 00:15:14.180
Irgendwann ist das Augment für ein Team.

00:15:14.180 --> 00:15:23.620
Genau, man, äh, arbeitet eigentlich ganz normal in so einem Team mit, und, ähm, ja, das war mir alles gar nicht so richtig klar, und dann gibt es halt andere Dinge, die man auch machen kann, und das hat andere Probleme.

00:15:24.120 --> 00:15:34.660
Und, äh, es war nicht, war nicht, und es gibt auch tatsächlich inzwischen so, das habe ich dann aber woanders gehört, äh, ich glaube, in einem Podcast, äh, es gibt Leute, die dann komplette Teams auch ausleihen, und nicht nur, weil das ist ja auch so ein Problem, nicht?

00:15:34.660 --> 00:15:38.660
Ich meine, wenn du so, äh, einen Entwicklungsprozess, ähm...

00:15:38.660 --> 00:15:47.160
Du willst aber mal verlieren, hast auf einmal ein neues Projekt, so ein Side-Projekt, hast aber gar keine Abteilung, die das irgendwie machen kann, und merkt man, hey, du hättest irgendwie noch ein neues Projekt dabei.

00:15:47.160 --> 00:15:48.220
Genau, wie macht man das eigentlich?

00:15:48.220 --> 00:15:49.440
Das ist schon wieder richtig ein Projektmanagement.

00:15:49.440 --> 00:15:54.080
Ja, ja, ja, und dann gibt es halt eventuell die Möglichkeit, äh, oder das machen halt momentan...

00:15:54.080 --> 00:15:59.840
Äh, manche Leute wohl, dass sie dann komplette Sprints, äh, irgendwie verkaufen, und dann Teams, die schon gut zusammenarbeiten, irgendwie dann vermieten.

00:15:59.840 --> 00:16:00.920
Ja, ist ja gar nicht so blöd.

00:16:00.920 --> 00:16:03.320
Und das ist auch eigentlich nicht so blöd, das ist schon richtig, ja.

00:16:03.320 --> 00:16:07.120
Also vor allem, wenn die so gut einen Code schreiben, dass ja niemand anderes danach auch noch lesen kann und benutzen kann, dann...

00:16:07.120 --> 00:16:09.700
Ja, ja, das sollte schon dann alles so best-practice-mäßig, ähm...

00:16:09.700 --> 00:16:11.740
...ein ganz gemachtes Netz setzen und sagen, hey, cool, damit machen wir jetzt weiter.

00:16:11.740 --> 00:16:12.380
Ja.

00:16:12.380 --> 00:16:23.380
Ich glaube, du brauchst halt, äh, wenn du das ganz teamweise machst und, äh, sprintweise, brauchst du eine gewisse Mindestgröße, weil du bei dir ja dann trotzdem wieder die, das Trick zusammenführen musst, ja.

00:16:24.040 --> 00:16:24.320
Ja, ja.

00:16:24.320 --> 00:16:35.500
Also, äh, es gibt diesen alten Spruch, äh, ein Freund von mir, der ist, äh, nach dem Abi irgendwann zur IBM, äh, dass die IBMer, als sie dann in den 90ern, äh, die Informatiker nach Indien ausgelagert haben,

00:16:35.500 --> 00:16:40.660
festgestellt haben, dass sie für zwei preiswerte Inder einen teuren Deutschen brauchen, der das alles wieder zusammenzieht.

00:16:40.660 --> 00:16:41.640
Ja.

00:16:41.640 --> 00:16:48.840
Ähm, da war die Einsparung nicht so riesengroß, ähm, da muss man sich wirklich Gedanken drum machen, wie das funktioniert, ja.

00:16:48.840 --> 00:16:50.240
Ja.

00:16:50.240 --> 00:16:54.000
Ja, aber was, welche, welche, hast du dir eigentlich irgendwelche Vorträge...

00:16:54.000 --> 00:16:57.500
Hast du die angeguckt, oder, äh, nee, ich stand, nee, ich, ich stand auf dem Stand.

00:16:57.500 --> 00:17:02.740
Ich hab, äh, was hatte der Speed hergegeben? André hat gesagt, wir haben, äh...

00:17:02.740 --> 00:17:06.820
Vielleicht hat ja einer unserer Hörer verpasst, was du überhaupt machst, deswegen musst du mal erzählen, was für ein Stand das dann überhaupt war.

00:17:06.820 --> 00:17:10.580
Ja, genau, also vom Flying Circus, ähm, und auch sagt...

00:17:10.580 --> 00:17:12.700
Das ist ja auch irgendwas hier mit, äh...

00:17:12.700 --> 00:17:14.480
DevOps, DevOps as a Service sozusagen.

00:17:14.480 --> 00:17:15.060
Ja.

00:17:15.060 --> 00:17:23.380
Ähm, im Prinzip so wie, so wie, äh, Team Augmentation, was da, ähm, äh, äh, es ist zu spät, meine Kinder haben mich tot gemacht.

00:17:23.960 --> 00:17:24.320
Jochen.

00:17:24.320 --> 00:17:47.380
Was da, Jochen, äh, gerade gemeint hatte, so ein bisschen Team Augmentation, sowas in der Art machen wir, äh, für DevOps-Szenarien, dass du also als Team sagst, der ganze Ops-Kram, ich will das zwar unter Kontrolle haben und wissen, ähm, aber im Prinzip kannst du das komplette Management, äh, den ganzen Betrieb der Anwendung zu uns rüberkippen, ähm, und dann hast du bei uns da so ein DevOps-Team, was man nicht sagen sollte, ähm, aber am Ende sagt man ja wieder, doch, nur ein Silo, hm.

00:17:47.380 --> 00:17:48.420
Ja, neues Silo.

00:17:48.420 --> 00:17:50.240
Ist ein schöneres Silo als vorher.

00:17:50.240 --> 00:17:53.920
Also tatsächlich, wir sagen jetzt auch manchmal, dass man, äh, uns den...

00:17:53.920 --> 00:17:59.140
äh, die Software wieder über den Zaun werfen kann, aber, ähm, wir, wir, wir klettern dann wieder über den Zaun zurück.

00:17:59.140 --> 00:18:00.100
Ah.

00:18:00.100 --> 00:18:01.640
Ähm, genau.

00:18:01.640 --> 00:18:04.780
Ja, da haben wir einen Stand gehabt, ähm, um uns ein bisschen zu zeigen.

00:18:04.780 --> 00:18:09.120
Und, äh, ich stand im Prinzip die ganze Zeit nur auf dem Stand rum und, ähm...

00:18:09.120 --> 00:18:12.240
Warst du nicht in der Nähe von irgendeinem Hörsaal oder sowas, wo man so um die Ecke hören oder so?

00:18:12.240 --> 00:18:20.900
Naja, man könnte, ne, die waren halt immer schön zu, damit man da, äh, auch die Ruhe hat, ähm, ich hab, ähm, aber dafür irgendwie, glaube ich, zwölf Kilo Schokolade verteilt oder so.

00:18:20.900 --> 00:18:22.500
Ich muss ja gegettet werden.

00:18:23.880 --> 00:18:24.860
Schokolade, ja.

00:18:24.860 --> 00:18:53.840
Ähm, ja, die, ähm, ne, also ich war dann halt in Summe auch mehr beschäftigt mit so ein paar Metathemen, ähm, weil ich dann ja doch eher auch von der organisatorischen Seite eingebunden bin, jetzt nicht so direkt bei der PyCon.de, da werde ich dann nur manchmal gefragt, aber gerade über den Python Software Verband, ähm, da hatten wir Jahresversammlung, äh, die war ganz gut besucht eigentlich und, ähm, konnten auch neue Mitglieder gewinnen, ähm, das war eigentlich ganz spannend, weil die PyCon.de ist ja sozusagen unter der Flagge des...

00:18:53.840 --> 00:19:09.380
äh, Python Software Verbands veranstaltet, ähm, und zum einen haben wir jetzt mal nach relativ vielen Jahren sehr kontinuierlicher Arbeit, ähm, im Vorstand nochmal ein bisschen neue Gesichter gesehen, zum einen das erste Mal, ähm, eine Frau im Vorstand, ähm, das finde ich super.

00:19:09.380 --> 00:19:15.920
Wir haben immer noch keine Folge mit einem weiblichen Hörer oder einer weiblichen Hörerin, also falls ihr Lust habt, ähm, kommt vorbei und sagt Bescheid.

00:19:15.920 --> 00:19:23.800
Genau, also die Theresa, äh, Yufchiu, ähm, ich weiß immer nicht ganz genau, ob ich ihren Namen richtig ausspreche, sie ist selber sehr schnell dabei, ihn auszusprechen.

00:19:23.800 --> 00:19:53.760
Das ist ganz schwierig, ähm, also die Theresa ist jetzt mit dabei, die ist, glaube ich, in Hamburg und, ähm, die hat auch, äh, im Rahmen von dem Förderprogramm von PySV schon mehrfach, äh, mit Schülern und mit, äh, anderen Gruppen, äh, ich glaube Raspberries oder MicroPythons, äh, ähm, verbaut, genau, und der Alexander auf der Hauptorga von der PyCon.de, der hat sich jetzt auch noch, äh, bereit erklärt mitzuhelfen, ähm, wir mussten nämlich tatsächlich feststellen, dass, äh, der Python Verband in Summe mit der PyCon.de, äh,

00:19:53.760 --> 00:20:23.720
ähm, das ist einfach inzwischen ein Riesenschlachtschiff, ähm, wir haben die letzten Jahre so ein bisschen gedacht mit, äh, das kochen wir alles mal wieder ein bisschen klein, dann läuft das alles von alleine und in Wirklichkeit, da, da gibt's nichts klein zu kochen, ähm, wir haben, wir haben irgendwann mal vor drei, vier Jahren, äh, da gestanden und gemeint, äh, die Verwaltungskosten sind sehr hoch, ähm, und, ähm, tatsächlich, äh, hatten wir gedacht, der PySV ist so ein Verband, Verein mit 10.000, 20.000 Euro Umsatz pro Jahr, äh, da, das machst du irgendwie nebenbei und wenn man aber die PyCon.de und noch zwei, drei andere Veranstaltungen, die wir drin haben, äh,

00:20:23.720 --> 00:20:52.900
ähm, reinziehst, dann siehst du, dass, äh, die, der Python Verband jetzt in Deutschland kontinuierlich über eine halbe Million mehr Umsatz macht pro Jahr, ähm, ja, genau, und dann standen wir da und dachten so, oh, okay, da ist normalerweise eine Vollzeitstelle für die Verwaltung fällig, ähm, und, ähm, deswegen, äh, der Alex Händorf, der hat, der das eh, sehr viel Zeit in die PyCon.de steckt, der hat auch bei sich aus dem Team jetzt jemanden, dem wir vom Python Verband bezahlen, der das dann fast in Vollzeit tatsächlich machen wird, ähm, die Verwaltung vom Verband aufzuziehen.

00:20:53.680 --> 00:21:23.640
Ähm, das wird, glaube ich, ganz gut, weil da haben wir jetzt auch gemerkt, das ist ein Thema aus der Open Source Community an sich ja, ähm, dass, ähm, ähm, Volunteer Burnout, ähm, irgendwann mal kommt, wenn du die Leute vor allem mit irgendwelchen Kram überlastest, wir haben so ein paar Sachen mit Sponsoren, wenn du bei, mit den ganz Großen jetzt halt immer im Bett bist, ähm, da hast du ja wirklich von Microsoft und Google und Ebay und sind halt irgendwie alle dabei, weil alle mit Python arbeiten, äh, und alle wollen das sponsoren und wollen Mitarbeiter werben, äh, und dann hast du aber plötzlich so ein Glück, dass es halt, äh,

00:21:23.640 --> 00:21:37.040
das heißt, ja, bei uns im Beschaffungsprozess, ähm, folgen, füllen Sie bitte folgende 20 A4-Seiten aus, gehen Sie damit zu Ihrer Bank, lassen Sie von der bitte einen englischen Brief ausfüllen, schicken Sie es da rüber und dann müssen Sie innerhalb von sieben Tagen auf den Button drücken, sonst geht das Spiel wieder von vorne los.

00:21:37.040 --> 00:21:39.700
Das machst du abends, wenn die Kinder im Bett sind und bevor die Frau noch was braucht.

00:21:39.700 --> 00:21:53.600
Ja, genau, ja, ja, mit, mit so, mit sowas, ähm, ähm, unterhalten die einen, das ist halt was, das willst du eigentlich nicht auf Freiwillige abgießen, das willst du auf niemanden abgießen, aber erst recht nicht auf Freiwillige, genau, ähm, nee, insofern da, äh, der Verband, der

00:21:53.600 --> 00:22:23.560
steht gerade echt gut da, wir sind es auch nochmal dabei, dann zu gucken, die Aufgaben zu verteilen, das war, was die Öffentlichkeitsarbeit angeht und diese Bewerbung von dem Förderprogramm, äh, dass da nochmal ein bisschen vorangeht, ja, genau, insofern da war die parkrun.de für mich alles mehr so aus dieser, äh, eher so Verwaltungsvereinsmeierei-Perspektive, aber immerhin, ich meine, es waren 1200 Besucher, äh, das ist echt gut.

00:22:23.560 --> 00:22:39.020
Ähm, äh, erinnere, das ist diesmal deutlich, also es war halt die, äh, mit den meisten, äh, äh, ähm, meisten Publikum da und es ist kontinuierlich immer mehr geworden und jetzt ist es halt eine richtig, richtig große Veranstaltung, ne, was früher war, das alles irgendwie überschaubar und jetzt ist das echt Wahnsinn, also, ja.

00:22:39.020 --> 00:22:53.520
Ja, also ich erinnere mich, die erste Runde, die wir hatten, die erste, in Anführungszeichen, Konferenz, die, äh, die im Palten umfällt, die war halt damals von den Soap-Leuten, ähm, die war 2001 in Bielefeld, da waren wir 24 Leute, da haben wir uns an der Uni mit dem Grill getroffen.

00:22:53.520 --> 00:23:23.500
Und mal irgendwie zwei Tage lang uns Dinge gezeigt, das war eigentlich sehr cool, ähm, und damals gab es dann auch schon dieses Thema von, das zog dann auch ein und dann waren es statt 25 irgendwie 50, dann hast du irgendwie 100 und dann hast du irgendwie 150 und dann war es eine Zeit lang so immer so in der Größenordnung und ich erinnere mich, dass ich auf der ersten Python-Konferenz in den USA, so 2004, glaube ich, war, das waren dann damals 400 Leute oder so in der Größenordnung und die wuchsen auch immer weiter und dann waren es, glaube ich,

00:23:23.500 --> 00:23:50.600
in Texas unten, in Dallas, waren es plötzlich 2000 und wir haben uns immer angeguckt, weil du hast halt auch alles, was die Konferenzen an Räumlichkeiten konnten, gerade was das Internet angeht, du hast immer alles gesprengt, ähm, weil die dann immer dachten, naja, von 2000 Leuten sind mal irgendwie 10% irgendwie mit ihrem, äh, Notebook unterwegs oder brauchen WLAN und du musstest denen damals mal schon klar machen mit, nee, hier kommen jetzt 2000 Leute, die haben jeder zwei Geräte.

00:23:50.600 --> 00:23:51.520
Ja.

00:23:53.480 --> 00:24:08.960
Genau, und da sind wir jetzt im Prinzip halt auch angekommen, ich meine, mit 1200 Leuten sind wir so groß wie die Europython, ähm, die hatten, glaube ich, auch 1200, wobei da gibt es ein paar Unstimmigkeiten wohl angeblich, was die, äh, Rechnung von Köpfen und Tickets angeht, ähm, und wir hatten vor allem 800 Leute auf der Warteliste.

00:24:08.960 --> 00:24:10.640
Ja, Wahnsinn.

00:24:10.640 --> 00:24:23.460
Ähm, also das, wir werden nächstes Jahr nochmal die Location wechseln, ich meine, die neuen Termine sind schon draußen, also für alle, die, äh, nochmal hinkommen wollen, es wird nächstes Jahr wieder in, ähm, Berlin sein, ähm.

00:24:23.460 --> 00:24:53.440
Und tatsächlich die, ähm, ha, die habe ich noch, die habe ich jetzt nicht griffbereit, aber es wird wieder im Oktober sein, ähm, und es gibt schon, äh, offizielle, äh, offizielle Daten im Oktober, die Webseite gibt es gerade nicht her, aber leider nicht mehr im Kosmos, das Kosmos fand ich eigentlich sehr schön, das Personal da war auch echt angenehm, ähm, ich fand es einen guten Move, ähm, dass, äh, nur vegetarisches Essen angeboten wurde, ähm, ich finde das war auch auf der Konferenz nicht, dass man sich damit irgendwie, äh,

00:24:53.440 --> 00:25:17.240
äh, billigen Fleisch irgendwie versorgt, und, ähm, äh, das war, also das hat mich überrascht, weil ich, zwei Wochen vorher hatte ich selber darüber nachgedacht, es wäre eigentlich mal cool, wenn das jemand mal machen würde und war dann, äh, ganz positiv ange, angetan, ähm, kam nicht bei jedem gut an, ich muss auch sagen, die haben auch handwerklich leider ein paar, äh, Stellen dann daneben gegriffen, weil es einfach nicht gut gemacht gewesen war, ähm, aber die Idee fand ich auf jeden Fall gut.

00:25:17.240 --> 00:25:23.200
Ja, und nächstes Jahr wird es dann wohl, äh, noch eine etwas größere Location werden, ich glaube, da werden wir anderthalb.

00:25:23.440 --> 00:25:28.860
Oder 1.600 Leute reinlassen, ähm, aber das ist im Prinzip schon mit Ansage, dass es wieder eine Wasserliste geben wird.

00:25:28.860 --> 00:25:29.520
Mhm.

00:25:29.520 --> 00:25:34.520
Ähm, nur wir, wir kommen halt nicht, es gibt irgendwann keine, keine größeren Locations mehr.

00:25:34.520 --> 00:25:43.960
Ja, irgendwann ist halt Schluss, ne, es gibt noch, äh, ja, irgendwie am Alexanderplatz irgendwie, da wo auch der, der CCC-Kongress, äh, häufiger war, ne, aber das ist...

00:25:43.960 --> 00:25:46.500
Ja, ja, warm, warm, warm.

00:25:46.500 --> 00:25:53.100
Ähm, wir waren noch bei der Perkin.de, wir hatten ein bisschen geguckt, wie groß es wird, wo es nächstes Jahr hingeht, also es wird auf jeden Fall wieder Berlin sein.

00:25:53.540 --> 00:25:59.940
Äh, wir werden zusehen, dass wir irgendwie mehr Leute reinlassen, weil es natürlich blöd ist, wenn wir, ähm, äh, wenn wir zu viele Leute auf die Warteliste setzen müssen.

00:25:59.940 --> 00:26:05.940
Und du hast es gerade erzählt, dass das Essen, äh, trotzdem ist es sehr leckeres, wie es Teilhaftes geben sein soll, irgendwie ab und zu mal, äh, komisch geschmeckt haben soll.

00:26:05.940 --> 00:26:07.140
Ja, gut, ich meine...

00:26:07.140 --> 00:26:17.400
Ja, es, es, es gab halt vom, äh, der Anbieter hat es halt an ein paar Stellen nicht gut umgesetzt, das ist, ich glaube, am ersten Tag war das Kartoffelkarton halt nicht durch, ähm, aber das wäre bei einem, äh, Stück Fleisch genauso blöd.

00:26:17.400 --> 00:26:23.240
Ja, und das ist natürlich auch schwierig, was so, so solche Mengen irgendwie alle gleichzeitig, äh, naja, da kann man immer mal schicken.

00:26:23.440 --> 00:26:24.460
Ja, Catering ist ein Challenger.

00:26:24.460 --> 00:26:24.880
Ja.

00:26:24.880 --> 00:26:28.480
Ja, aber sie, sie versauen es auch immer wieder auf die gleiche Art und Weise.

00:26:28.480 --> 00:26:29.100
Ja.

00:26:29.100 --> 00:26:43.220
Ähm, nee, genau, also ansonsten, das war, ich fand es in Berlin eigentlich sehr angenehm, ähm, war, war vom Umfang her fand ich gut, ähm, ich habe halt auch bei mir so viele, viele interessante Gespräche gehabt.

00:26:43.220 --> 00:26:49.140
Es war jetzt ja diesmal überlagert mit der Pi Data, wird es wahrscheinlich nächstes Jahr auch wieder sein.

00:26:49.140 --> 00:26:53.100
Ähm, man merkt so ein bisschen, dass es halt, Python hat, je nach...

00:26:53.440 --> 00:27:01.680
... Generation schon fast so ein bisschen unterschiedliche Schwerpunktthemen vor, vor zehn Jahren war Web halt immer so das treibende Thema im, ähm, im Programm.

00:27:01.680 --> 00:27:12.260
Jetzt ist es, äh, alles was rund um Machine Learning, Data Science und so geht, ähm, und das ist so, es sind eigentlich jetzt zwei Konferenzen, die laufen jetzt aber zusammengefaltet, äh, in einer im Prinzip.

00:27:12.260 --> 00:27:16.960
Und, ähm, aber in Summe ist es einfach so ein extrem diverses Profil.

00:27:16.960 --> 00:27:22.020
Es ist halt nicht so, dass alle jetzt irgendwie erst A und jetzt B gemacht haben, sondern es wird halt immer mehr.

00:27:22.020 --> 00:27:23.020
Es wird halt...

00:27:23.020 --> 00:27:23.400
Man hat...

00:27:23.400 --> 00:27:27.540
Es wird halt irgendwie das eine Hauptthema, was vielleicht so 60 Prozent, äh, der Themen bestimmt.

00:27:27.540 --> 00:27:32.540
Und, aber die anderen 40 Prozent sind immer noch doppelt so groß wie das, was wir vor fünf Jahren hatten.

00:27:32.540 --> 00:27:32.900
Ja.

00:27:32.900 --> 00:27:38.840
Ähm, also da ist einfach die Diversität und worüber man mit Leuten reden kann schon, es ist fantastisch.

00:27:38.840 --> 00:27:39.880
Ja.

00:27:39.880 --> 00:27:40.440
Ja.

00:27:40.440 --> 00:27:40.780
Ja.

00:27:40.780 --> 00:27:41.820
Nee, fand ich auch.

00:27:41.820 --> 00:27:43.000
Sehr schöne Veranstaltung.

00:27:43.000 --> 00:27:43.820
Ja, sehr spannend.

00:27:43.820 --> 00:27:44.060
Ja.

00:27:44.060 --> 00:27:47.240
Also dieses Jahr versuche ich mir auch tatsächlich wieder tiefer in den Kalender reinzustreichen.

00:27:47.240 --> 00:27:48.260
Ja.

00:27:48.260 --> 00:27:51.080
Aber dieses Jahr, äh, da kam leider nichts mehr da rein.

00:27:51.080 --> 00:27:51.440
Ja.

00:27:51.440 --> 00:27:51.500
Ja.

00:27:51.500 --> 00:27:53.360
Ich meine, spannend ist ja, das ist eine...

00:27:53.360 --> 00:27:57.120
...rein englischsprachige Konferenz ist, ähm, im deutschen Raum.

00:27:57.120 --> 00:28:02.840
Und wir so ein bisschen der Europython den, äh, den Rang ablaufen an ein paar Stellen.

00:28:02.840 --> 00:28:08.000
Ähm, Deutschland liegt einfach, das haben wir in Karlsruhe gemerkt und jetzt in Berlin auch wieder,

00:28:08.000 --> 00:28:09.940
Deutschland liegt halt schön zentral.

00:28:09.940 --> 00:28:15.800
Ähm, und, ähm, das heißt, da gibt's, ist für viele der Anfahrtsweg gut kalkulierbar,

00:28:15.800 --> 00:28:20.840
als wenn's dann irgendwie mal in Spanien zu Schweden zu Edinburgh war's, glaub ich, auch mal.

00:28:20.840 --> 00:28:23.320
Schweiz war jetzt dieses Jahr, glaub ich, äh, ja ganz gut.

00:28:23.320 --> 00:28:24.900
War, und das ist Dublin angenagt, oder?

00:28:24.900 --> 00:28:26.240
Das ist nächstes Jahr.

00:28:26.240 --> 00:28:26.860
Nächstes Jahr?

00:28:26.860 --> 00:28:27.860
Ja, kann sein, weiß ich nicht.

00:28:27.860 --> 00:28:29.260
Aber diesmal, diesmal war's, glaub ich, Basel, ja.

00:28:29.260 --> 00:28:31.000
Ja, und diesmal war's Basel.

00:28:31.000 --> 00:28:32.680
Ich meine, Schweiz ist halt auch torres Pflaster.

00:28:32.680 --> 00:28:35.120
Äh, das schreckt auch immer so den einen oder anderen ab.

00:28:35.120 --> 00:28:37.060
Was war denn in Stockholm?

00:28:37.060 --> 00:28:39.320
Keine Ahnung.

00:28:39.320 --> 00:28:40.060
Wann war das denn?

00:28:40.060 --> 00:28:42.780
Es gab irgendwie eine Django-Con mal irgendwo da in der...

00:28:42.780 --> 00:28:44.200
Aber ich weiß nicht genau, wann das war.

00:28:44.200 --> 00:28:45.960
Naja.

00:28:45.960 --> 00:28:47.460
Äh, wie auch immer.

00:28:47.460 --> 00:28:51.500
Ja, ähm...

00:28:51.500 --> 00:28:53.140
Tja, was haben wir denn sonst noch an Neuigkeiten?

00:28:53.140 --> 00:28:55.240
Ähm, ähm...

00:28:55.240 --> 00:29:03.180
Ja, ist draußen, äh, genau.

00:29:03.180 --> 00:29:06.700
Es gibt ein paar ganz interessante, äh, Geschichten, die dabei sind.

00:29:06.700 --> 00:29:11.640
Ähm, ja, ist jetzt auch nicht so wahnsinnig umwerfende neue Geschichte.

00:29:11.640 --> 00:29:12.700
Es gibt ein bisschen neue Syntaxe.

00:29:12.700 --> 00:29:15.340
Ich weiß nicht, vielleicht fangen wir, äh, damit am besten mal an.

00:29:15.340 --> 00:29:17.200
Es gibt den, den, den...

00:29:17.200 --> 00:29:18.140
Walrus Operator.

00:29:18.140 --> 00:29:20.460
Eine Assignment Expression.

00:29:20.460 --> 00:29:20.820
Ja.

00:29:20.820 --> 00:29:22.380
Was ist das?

00:29:22.960 --> 00:29:28.120
Ähm, es ist eine Expression, die vorher nur ein Statement war.

00:29:28.120 --> 00:29:29.400
Hätte sein...

00:29:29.400 --> 00:29:30.440
Kein Anfänger.

00:29:30.440 --> 00:29:35.080
Ja, ähm...

00:29:35.080 --> 00:29:36.660
Also, on the fly wird etwas zugewiesen.

00:29:36.660 --> 00:29:39.120
Ja, man kann damit Zeilen sparen.

00:29:39.120 --> 00:29:39.560
Voll gut.

00:29:39.560 --> 00:29:44.360
Also, man muss nicht erst was definieren, sondern man kann quasi in der Frage was definieren.

00:29:44.360 --> 00:29:52.780
Ja, also, ein Fall, den man ganz oft hat, vielleicht ist es am einfachsten, das an dem Beispiel zu erklären, ist, dass man irgendwie sich zum Beispiel, äh, irgendein Wert auf die Frage stellt.

00:29:52.780 --> 00:29:56.520
Ein Wert aus einem Dikt oder so holt und dann damit irgendwas macht.

00:29:56.520 --> 00:30:00.980
Aber das eigentlich auch nur dann machen möchte, wenn es den, wenn das tatsächlich da drin ist.

00:30:00.980 --> 00:30:08.620
Also, was man dann üblicherweise macht, ist, man macht Sache Dikt.get, äh, und dann überprüft man halt, ob das was zurückgekommen ist, ein None war oder nicht.

00:30:08.620 --> 00:30:12.620
Und das kann man sich jetzt quasi sparen und das halt in einer Zeile hinschreiben.

00:30:12.620 --> 00:30:16.500
Und da das relativ oft auftritt, ist das, spart es halt schon ganz ordentlich Zeilen.

00:30:16.500 --> 00:30:22.760
Man kann halt, ja, eben, äh, sozusagen if und dann halt die Variable, die man zuweisen möchte.

00:30:22.780 --> 00:30:25.380
Doppelpunkt gleich und dann, äh, könnte man sowas, äh.

00:30:25.380 --> 00:30:29.020
Also, äh, keine Ahnung, Key, Doppelpunkt gleich, Dikt, Get, bla.

00:30:29.020 --> 00:30:29.800
Ja, genau.

00:30:29.800 --> 00:30:30.960
Dann.

00:30:30.960 --> 00:30:33.060
Nee, Value eher nicht Key, aber, äh, genau.

00:30:33.060 --> 00:30:40.760
Dann, äh, macht man irgendwas und in dem Fall, wenn es halt nicht drin ist, dann, äh, würde man da gar nicht reinspringen in den Block.

00:30:40.760 --> 00:30:41.120
Ja.

00:30:41.120 --> 00:30:52.600
Ein anderer Fall, wo man, äh, wo man es gut anwenden kann, sind halt Wildschleifen, wo du, ähm, irgendeine Arbeitsvariable belegst und du, ähm, äh, das einmal am Anfang halt, äh,

00:30:52.600 --> 00:30:54.160
gleich zusammenfassen kannst.

00:30:54.160 --> 00:30:57.460
Dann kannst du dann sagen, hier geht's, hier geht die nächste Runde von der Wildschleife los.

00:30:57.460 --> 00:30:57.960
Ja.

00:30:57.960 --> 00:31:04.640
Dann sagst du, Wild, X-Doppelpunkt gleich, äh, deine Expression und, ähm, das, äh.

00:31:04.640 --> 00:31:06.460
Das ist ja fast wie ein Repeat-Anteil.

00:31:06.460 --> 00:31:09.360
Ja, äh, nein.

00:31:09.360 --> 00:31:11.400
Warum nicht?

00:31:11.400 --> 00:31:14.480
Äh, weil es ja immer noch im Koffer ausgeführt wird.

00:31:14.480 --> 00:31:15.540
Das wird ja immer am Anfang gemacht.

00:31:15.540 --> 00:31:17.160
Ja, okay, also das ist tatsächlich okay.

00:31:17.160 --> 00:31:22.420
Du hast halt für den Einstieg in die, in die Schleife hast du es dann immer noch trotzdem, ähm, äh,

00:31:22.420 --> 00:31:24.360
äh, äh, muss es homogen sein.

00:31:24.360 --> 00:31:26.100
Ja.

00:31:26.100 --> 00:31:32.040
Und ansonsten, was wir auch mal bei, bei regulären Ausdrücken, ist auch oft so, dass man dann halt ein Match-Objekt zurückbekommt,

00:31:32.040 --> 00:31:33.740
wenn es halt irgendwie gematcht hat oder ansonsten halt none.

00:31:33.740 --> 00:31:39.040
Und das geht halt dann auch so, dass man das halt deutlich, äh, also ein bisschen einfacher entscheiden kann.

00:31:39.040 --> 00:31:39.480
Ja.

00:31:39.480 --> 00:31:41.360
Also, das ist für manche Fälle ganz praktisch.

00:31:41.360 --> 00:31:45.200
Es ist halt nicht so zum Teilensparen, sondern die Lesbarkeit ist manchmal halt einfach angenehmer,

00:31:45.200 --> 00:31:52.080
wenn du, ähm, momentan Dinge erst, erst an eine Variable binden, äh, musst, um sie dann auszuwerten.

00:31:52.240 --> 00:31:58.440
Ähm, und aber eigentlich würdest du es vom, vom Lesefluss her gerne zusammengeschrieben haben.

00:31:58.440 --> 00:32:01.100
In den Fällen wäre das halt was, was du gut reinlegen kannst.

00:32:01.100 --> 00:32:01.480
Ja.

00:32:01.480 --> 00:32:04.860
Also, alle sind begeistert vom neuen Assignment-Operator?

00:32:04.860 --> 00:32:05.980
Nee, das kann man nicht sagen.

00:32:05.980 --> 00:32:07.600
Nein, überhaupt nicht.

00:32:07.600 --> 00:32:09.620
Also, hört sich das gerade bei euch an?

00:32:09.620 --> 00:32:21.240
Ja, nee, es gibt, es gibt halt so drei, vier Fälle und ich glaube, das ist ein, das ist ein Ausdruck von, von dem deutschen Begriff für Maturity,

00:32:22.060 --> 00:32:26.320
Live-Type von Python, ähm, es gibt so, Python ist ja in Summe vollständig.

00:32:26.320 --> 00:32:32.580
Es gibt ja wenig Dinge, die einem so die ganze Zeit irgendwie im Weg rumstehen, dass man sagt, oh, bevor das nicht geht, kann ich Python nicht benutzen.

00:32:32.580 --> 00:32:34.100
Das würde man ja nicht hier stehen.

00:32:34.100 --> 00:32:42.220
Ähm, aber es gibt immer mal, beziehungsweise in dem einen oder anderen Fall, der dann doch auch in der Diskussion, in der Wars Operator war, lange diskutiert worden, glaube ich.

00:32:42.220 --> 00:32:42.640
Hm.

00:32:42.640 --> 00:32:44.500
Ich habe das, ich habe gerade nicht, ich weiß gerade nicht.

00:32:44.500 --> 00:32:46.420
Die dann sagte so, nö, ich mache das mal ohne mich.

00:32:46.420 --> 00:32:46.840
Ja.

00:32:46.840 --> 00:32:49.020
Ähm, möglich, ja.

00:32:49.020 --> 00:33:03.480
Ähm, und, ähm, es ist halt immer, wenn man sagt, naja, Python soll halt nachher auch gut zu lesen sein, dann ist es natürlich schön, sich über die Zeit halt auch Gedanken zu machen, ob bestimmte syntaktische Ergänzungen, äh, Sinn machen, auch wenn man sie nicht ständig braucht.

00:33:03.480 --> 00:33:13.880
Das ist ein bisschen blöd, weil ein größerer Sprachumfang heißt komplexere Interpreter, also mehr Möglichkeiten, dass irgendwas kaputt geht, gerade jetzt in dem Fall, ähm, wird, das ist jetzt ein Feature.

00:33:14.320 --> 00:33:35.700
Ähm, wo etwas, das vorher nur in Statements ging, jetzt auch in Expressions ging, das heißt, da müssen in Zukunft im Sprachdesign auch drauf aufgepasst werden, wenn am Scoping oder an ähnlichen Dingen was geändert wird, dass das dann halt auch in einem, äh, in einer Expression halt, äh, auseinanderfliegen kann, das muss man gut abwägen und, aber in Summe, offensichtlich hat man sich ja geeinigt und gesagt, das ist es uns wert.

00:33:35.700 --> 00:33:38.460
Also ich finde es aber doof, wenn ich das jetzt richtig verstanden habe.

00:33:38.460 --> 00:33:44.300
Nö, das, also ich finde es tatsächlich ganz, ganz nett, aber ich weiß auch, dass es irgendwie sehr kontrovers diskutiert wurde.

00:33:44.300 --> 00:33:46.260
Und dass es halt Leute gibt, die das hassen.

00:33:46.260 --> 00:33:52.540
Und, ähm, was auch irgendwie in gewisser Weise nachvollziehbar ist, also, äh, aber, ja, hm.

00:33:52.540 --> 00:33:58.900
Wir werden wahrscheinlich irgendwann in ein paar Jahren wissen, ob das eine super Idee war oder total doof, keine Ahnung.

00:33:58.900 --> 00:34:01.220
Ja, vielleicht schenken es jetzt wieder ganz viele Anfänger ab und so.

00:34:01.220 --> 00:34:02.260
Nö, auch nicht.

00:34:02.260 --> 00:34:14.280
Ich meine, die Gefahr ist tatsächlich immer, dass wenn, aber Python hat eigentlich, was die Lernkurve angeht, einen ganz angenehmen, äh, Vektor, dass Leute sozusagen zu früh auf zu spezielle Fälle sich einstellen.

00:34:14.280 --> 00:34:18.780
Und dann meinen, sie müssen den World Operator rechts und links an allen Ecken und Enden einsetzen.

00:34:18.780 --> 00:34:23.460
Es ist aber mehr, äh, dieses Thema, dass man halt, Python ist halt nun mal eine idiomatische Sprache.

00:34:23.460 --> 00:34:34.520
Das heißt, es ist eine Sprache, die ist daraufhin designt, dass man sich ähnlich wie eine natürliche Sprache auch so mit ihr auseinandersetzt und bestimmte Wendungen in bestimmten Situationen halt einsetzt und in bestimmten Situationen halt nicht.

00:34:34.520 --> 00:34:39.340
Ähm, deswegen gibt es halt, wenn man im Fernsehen ein Wort mit F sagt, dann irgendwann ein Piepsen.

00:34:39.340 --> 00:34:40.420
Ein Piepsen.

00:34:40.420 --> 00:34:44.260
Und in einem anderen, in einem anderen Kontext, äh, kann man das halt einsetzen.

00:34:44.260 --> 00:34:50.440
Und das ist halt, da ist Python, äh, Raymond Hettinger sagt an der Stelle immer gerne, Python ist halt eine Sprache für Erwachsene.

00:34:50.440 --> 00:34:52.700
Ähm, du musst halt wissen, was du tust.

00:34:52.700 --> 00:34:57.520
Und, ähm, so ist es auch mit allen professionellen Werkzeugen oder auch mit Power Tools.

00:34:57.520 --> 00:34:59.700
Klar kannst du dir halt in den Finger bohren.

00:34:59.700 --> 00:35:01.920
Deswegen solltest du halt wissen, was du tust.

00:35:01.920 --> 00:35:03.800
Die Bohrmaschine bitte nicht anfassen.

00:35:03.800 --> 00:35:05.060
Ja, genau.

00:35:05.060 --> 00:35:07.000
Nicht direkt auf die Hand zählen.

00:35:07.000 --> 00:35:10.160
Vielleicht auch bei anderen, die sich die Organe auslösen.

00:35:10.160 --> 00:35:11.660
Ja, ja, genau.

00:35:11.660 --> 00:35:14.240
Selber versuchen auf der Maschine.

00:35:14.240 --> 00:35:19.360
Das ist ein, ein Punkt, da, da kommen wir nachher vielleicht ganz zum Schluss, wenn wir unser Rattenloch-Thema, äh, finden.

00:35:19.360 --> 00:35:35.680
Ähm, ist tatsächlich ein Aspekt, mit dem ich halt in letzter Zeit öfter mal gehadert hatte, weil ich hab ne, äh, nen Anwendungsfall, wo ich ständig, ähm, etwas, ähm, sowohl verwenden, als auch zuweisen möchte.

00:35:35.680 --> 00:35:39.200
Und, äh, das ist halt, das ist halt schwierig.

00:35:39.200 --> 00:35:40.680
Ja, jetzt geht's.

00:35:40.680 --> 00:35:43.960
Ähm, und, äh, insofern.

00:35:44.220 --> 00:35:47.560
Ich hab nen, ganz persönlich eben nen Anwendungsfall, wo ich sag, da, da wird's dann interessant werden.

00:35:47.560 --> 00:35:55.680
Ähm, ich hab eher das Thema, dass, bevor ich halt sagen kann, in meiner Library unterstütze ich halt alles nur noch abhaltend 3-8-Aufwärts.

00:35:55.680 --> 00:35:57.720
Ähm, das wird halt noch ne Weile sein.

00:35:57.720 --> 00:36:01.140
Ich bin halt mehr in der Spanne 3-5 bis 3-8 halt momentan.

00:36:01.140 --> 00:36:03.540
Aber das ist zumindest halt am Horizont erkennbar, ja.

00:36:03.540 --> 00:36:04.420
Ja, okay.

00:36:04.420 --> 00:36:07.680
Ja, also, mit 3-8-Werden wir das mal weitermachen wollen?

00:36:07.680 --> 00:36:08.280
Ja, genau.

00:36:08.280 --> 00:36:13.780
Ähm, also, was ich, äh, wo ich doof gestolpert bin, es gibt nen blöden Bug jetzt mit Jupiter, und zwar, ähm,

00:36:14.200 --> 00:36:17.380
fliegt das unter Windows einem um die Ohren, wenn man, ähm, versucht so einen Notebook aufzumachen.

00:36:17.380 --> 00:36:18.120
Oh.

00:36:18.120 --> 00:36:19.440
Geht einfach aus bei 3-8-0.

00:36:19.440 --> 00:36:21.020
Das ist natürlich, ähm, war nicht so toll.

00:36:21.020 --> 00:36:22.400
Aber es gibt nen Fix.

00:36:22.400 --> 00:36:26.940
Äh, man kann nämlich einfach, äh, in Tornado, äh, was da, äh, wie, quer schießt,

00:36:26.940 --> 00:36:27.940
Asung.io anpassen.

00:36:27.940 --> 00:36:32.180
Also, das ist unter Tornado-Platform Asung.io, irgendwie in deren Zeit-Packages drin.

00:36:32.180 --> 00:36:41.500
Und kann da einen kleinen Codeschimpel eintragen, Import Asung.io, und dann den Event-Loop-Policy ansetzen auf, ja, den Windows-Sektor-Event-Loop.

00:36:41.500 --> 00:36:41.880
Mhm.

00:36:41.880 --> 00:36:42.780
Und dann geht's wieder.

00:36:42.780 --> 00:36:44.180
Das ist ein bisschen hakelig, aber...

00:36:44.180 --> 00:36:46.760
Ja, ich hab gehört, das soll irgendwann gefixt werden in 3-8-1 oder so.

00:36:46.760 --> 00:36:47.140
Mhm.

00:36:47.140 --> 00:36:51.720
Ähm, ja, nur für alle, die vielleicht drüber gestolpert sind und sich gewundert haben, was, äh, warum das nicht geht.

00:36:51.720 --> 00:36:55.440
Ja, das ist natürlich schon so ein bisschen bitter, wenn das dann nicht alle Notebooks auf...

00:36:55.440 --> 00:36:58.520
Oh ja, na gut, wer benutzt denn Jupyter-Notebooks auf Windows, das ist...

00:36:58.520 --> 00:37:00.200
Ja, vielleicht...

00:37:00.200 --> 00:37:02.840
Ja, nein, ich glaube, das ist tatsächlich bei einigen Menschen, um die Ahnung zu bringen, ja.

00:37:02.840 --> 00:37:08.080
Ist der Trigger gewesen, weil die Default-Policy geändert wurde fürs Asung.io und Windows, oder...

00:37:08.080 --> 00:37:08.860
Möglicherweise.

00:37:08.860 --> 00:37:10.560
Ich hab keine Ahnung über den Grund, muss ich ehrlich gestehen.

00:37:10.560 --> 00:37:14.160
Ich hab einfach nur diesen Fix gefunden und gedacht, okay, ich probier's mal aus und dann, äh...

00:37:14.160 --> 00:37:15.200
...ging's tatsächlich wieder.

00:37:15.200 --> 00:37:16.880
Also irgendwas war da mit Asung.io kaputt.

00:37:16.880 --> 00:37:20.120
Ich weiß nicht, die haben, glaube ich, bei 3.8 auch was mit Asung.io verändert bei dem Verhalten.

00:37:20.120 --> 00:37:23.260
Und da kann es gut sein, dass da irgendwas geändert worden ist.

00:37:23.260 --> 00:37:32.900
Also ich meine auch im Kopf zu haben, dass über dieses Thema, äh, welche Loops, äh, wo Default sind, dass da was passiert ist, kann halt sein.

00:37:32.900 --> 00:37:34.980
Dass da jetzt irgendwie, ja, mhm.

00:37:34.980 --> 00:37:37.920
Ja, ist was kaputt gegangen und das ging dann nicht mehr und dann, ja.

00:37:37.920 --> 00:37:38.480
Ja.

00:37:38.480 --> 00:37:39.440
Bin gespannt.

00:37:39.440 --> 00:37:44.140
Das hat ein bisschen Gehäude, äh, verursacht irgendwie online und...

00:37:44.140 --> 00:37:55.600
...ist auch noch nicht wirklich umgestiegen, weil halt viele der Data-Science-Geschichten, äh, noch nicht, äh, also ich, äh, ja, könnte gar nicht wirklich umsteigen, weil eben, wenn so lange sowas wie OpenCV und, und, und solche Sachen noch nicht wirklich...

00:37:55.600 --> 00:38:14.120
...also ich glaube, heute ist, äh, Pandas in Conda, äh, Conda Forge, äh, äh, oder auch schon in der offiziellen Conda, äh, an der Conda-Distribution mit drin, äh, irgendwie für Python 3.8, aber es gibt halt noch jede Menge Pakete, die noch nicht gebaut...

00:38:14.120 --> 00:38:23.640
...aber, äh, manche Sachen brauchen halt auch so ein bisschen mehr Aufwand und, ähm, ja, daher hänge ich da immer so ein bisschen hinterher hinter den aktuellsten, äh, Python-Versionen.

00:38:23.640 --> 00:38:44.100
Das fand ich auch spannend, da hattest du dem Thema nämlich auch hinweg, äh, nen 1-2-3-Tweets losgelassen, ähm, zum Thema Wheelbuilding, ähm, auf, äh, 3.8, dass er halt jetzt so lange die ganzen, ähm, also hinweg, äh, ist ja in der Community auch relativ gut bekannt, so um das ganze Security...

00:38:44.100 --> 00:39:14.080
...packaging, da ist er relativ aktiv und schreibt Blogposts und macht immer gute Vorträge und, ähm, ihm ist halt auch aufgefallen, dass jetzt halt wieder so eine Phase einsetzt von die ganzen Wheels sind alle noch nicht gebaut und er hat sich in seinen Deployments stark darauf verlassen, dass seine, äh, Build-Times im Prinzip relativ schlank sind, weil er halt überall Wheels einsammeln kann und jetzt geht's halt, geht halt überall die Compiler-Orgien los und du hast irgendwie eine Verzehn-, Zwanzigfachung, äh, deiner Compile-Time, ähm, da war er dann auch nicht so happy in der Kombination mit, dass die...

00:39:14.080 --> 00:39:44.060
...Release-Kadenz ja dann noch angepasst wird, wurde, ist...

00:39:44.060 --> 00:39:45.480
...es sind noch...

00:39:45.480 --> 00:39:52.880
...31 plus 30 plus 26 sind noch 57 Tage.

00:39:52.880 --> 00:39:56.540
...und dann ist es rum aus vorbei mit Preis von 2,7.

00:39:56.540 --> 00:40:03.840
Tja, eigentlich wäre es jetzt allmählich mal so an der Zeit, die Landing-Pages hochzufahren und AdWords zu buchen auf der...

00:40:03.840 --> 00:40:09.060
...Konsulting für, äh, äh, Y2K, nee, warte, ähm, Python2K...

00:40:09.060 --> 00:40:12.260
...der Streitumstellung, ja.

00:40:12.260 --> 00:40:14.040
Ja, die haben sehr viel...

00:40:14.040 --> 00:40:19.300
...Schum, ähm, die, ähm, da kannst du in zwei Jahren separate Consulting-Aufträge draus machen.

00:40:19.300 --> 00:40:20.320
Na gut.

00:40:20.320 --> 00:40:36.000
Ich meine, was tatsächlich interessant ist, aber die Aussage von Python, von der Python Software Foundation ist ja auch, ähm, wenn du von deinem Vendor im Stich gelassen bist, dann such dir halt Consultants, hier gibt's Leute, die, äh, offerieren dir auch danach noch Support für Python 2.

00:40:36.000 --> 00:40:36.380
Ja.

00:40:36.380 --> 00:40:44.020
Ähm, es ist halt nur die ganz, die, eben die Aussage mit, also kostenlosen Support von den Kernentwicklern, da ist jetzt mal endlich der Zoff abgestimmt.

00:40:44.020 --> 00:40:48.540
Die, die kümmern sich um ausreichend Dinge, die müssen sich nicht auch noch umveraltet spalten.

00:40:48.540 --> 00:40:49.700
Legacy Stuff.

00:40:49.700 --> 00:40:55.680
Ja, ja, ja, also die haben sich wirklich lange, die haben jetzt wirklich zehn Jahre, noch länger, ähm, ich, ich weiß es grad nicht.

00:40:55.680 --> 00:41:01.460
Und, also, da gibt's Consultants, die da auch beworben werden, tatsächlich, von der PSF, ähm, ja, und die pflegen immer eine Liste.

00:41:01.460 --> 00:41:03.280
Also, Jochen, wenn du da noch...

00:41:03.280 --> 00:41:04.260
Ja, ich weiß...

00:41:04.260 --> 00:41:05.140
Noch Kapazitäten frei?

00:41:05.140 --> 00:41:06.820
Kannst du dich jetzt fragen.

00:41:06.820 --> 00:41:07.520
Ja.

00:41:07.520 --> 00:41:14.000
Ähm, ich meine, ich hab selber, ich hab selber grad mein, äh, mein eines großes Projekt, ähm, mal noch schnell...

00:41:14.000 --> 00:41:43.980
...just in time auf, äh, Python 3 umgestellt, ähm, war wirklich auch erstaunt, ob der, ähm, in Summe Geschmeidigkeit, also ich meine, die, die, seit zehn Jahren die Aussage ist, schreib halt Tests für deine Sachen, äh, dann kannst du halt nämlich danach gucken, ob die Tests wieder gehen, und, ähm, also ich bin, glaube ich, jetzt bei einem Projekt, was relativ komplex ist, und, ich weiß nicht, waren es 6.000 Zeilen, 6.000 Zeilen, war ich in der Umsetzung mit, glaube ich, zehn Stunden Arbeit in Summe dabei, und dann, dann waren die Tests alle fertig.

00:41:43.980 --> 00:41:58.840
...und das tat erstmal sinnvolle Dinge, ähm, und tatsächlich, das, äh, 2-to-3-Tool hatten wir extrem viel weggefuttert, das hat gut funktioniert, und, ähm, wenn man viel I.O. macht, muss man halt eine Weile lang am Unicode rumschrauben, und dann, dann geht's halt, ja.

00:41:58.840 --> 00:42:06.300
Nee, war ich jetzt über, war, war eigentlich überrascht, äh, dass das doch ziemlich geschmeidig ging, hatte ich irgendwie mit mehr Knöchel gerechnet.

00:42:06.300 --> 00:42:13.960
Ich hab letztens, äh, hatten wir eine schöne Diskussion dafür im Channel, äh, was der Weihnachtsschnitt gegangen ist, und zwar haben sie das Rundungsverfahren geändert, und dann...

00:42:13.960 --> 00:42:24.480
...den kaufmännischen Runden irgendwie auf einmal anders, und da war auch die Frage, was dann Pi-2-3-2-2-3 macht, an der Stelle, das wusste ich auch nicht.

00:42:24.480 --> 00:42:27.500
Ja, wenn das wichtig für dich ist, dann kannst du dir das zum Glück anpassen.

00:42:27.500 --> 00:42:30.200
Ja, aber das war tatsächlich spannend.

00:42:30.200 --> 00:42:31.460
Ja, ja.

00:42:31.460 --> 00:42:43.940
Ja, 2-to-3 ist ja pluggable mit den Fixern, die da drinnen sind, ähm, also wenn man, wenn man selber wirklich eine große Code-Basis noch haben sollte, die man noch nicht mal angefasst hat, ähm, aber dann ist man, glaube ich, auch nicht derjenige, der das macht.

00:42:43.940 --> 00:42:46.100
Der, äh, Custom-Fixer schreibt.

00:42:46.100 --> 00:42:47.540
Ja.

00:42:47.540 --> 00:42:51.960
Ja, da, ähm...

00:42:51.960 --> 00:42:56.140
Ja, da hat man sich wahrscheinlich dann schon länger nicht mehr so wirklich dafür interessiert, wie das da weitergeht, irgendwie alles.

00:42:56.140 --> 00:42:57.040
Ja, ja, ja.

00:42:57.040 --> 00:42:57.880
Ja.

00:42:57.880 --> 00:43:05.780
Ja, aber es ist jetzt auch mal, ich bin mal gespannt, wie viel, äh, Schmerzen das verursachen wird. Ich meine, es gibt ja auch dann größere Institutionen, die dann noch, äh, Support anbieten.

00:43:05.780 --> 00:43:13.240
Ich glaube, äh, Red Hat hat auch irgendwie gesagt, dass sie das, dass sie, äh, einen Python-2-Fork, äh, weiter maintainen wollen, oder so.

00:43:13.920 --> 00:43:14.760
Oh, sehr gut.

00:43:14.760 --> 00:43:17.400
Ich bin umgeforgt, dann haben wir doch alle die neuen Forks, oder?

00:43:17.400 --> 00:43:18.460
Ja.

00:43:18.460 --> 00:43:22.600
Dann kann ich, dann kann ich auch in fünf Jahren nach einem Python-2-7 auf einen 3-6er-Körnel fahren.

00:43:22.600 --> 00:43:23.760
Ja.

00:43:23.760 --> 00:43:26.880
Software-Archäologie.

00:43:26.880 --> 00:43:28.100
Ja, genau.

00:43:28.100 --> 00:43:29.500
Lebende Archäologie.

00:43:29.500 --> 00:43:30.480
Ja.

00:43:30.480 --> 00:43:31.740
Sehr schön.

00:43:31.740 --> 00:43:34.880
Ähm, genau, ja, das war...

00:43:34.880 --> 00:43:38.580
Was kommt eigentlich nach Python-3-8 und 3-9? Kommt dann 3-10 oder kommt dann 4?

00:43:38.580 --> 00:43:39.640
3-10.

00:43:39.640 --> 00:43:40.380
Oh.

00:43:40.380 --> 00:43:42.120
Ich glaube, dass...

00:43:42.120 --> 00:43:43.900
Also, außer sie, außer sie ziehen das Argument.

00:43:43.900 --> 00:43:52.240
Wie, wie Linus, der sagt, ähm, Versionsnummern haben in dieser Hinsicht für mich keine Bedeutung und, äh, ich mache ab irgendeinem Cut, äh, einfach.

00:43:52.240 --> 00:43:56.620
Aber, also, die, die zweite Stelle kann ja auch zweistellig werden, das ist ja nicht das Thema.

00:43:56.620 --> 00:43:57.660
Ja.

00:43:57.660 --> 00:44:04.500
Und jetzt, wo man die Leute schon mit, ähm, von 2 zu 3 so erschreckt hat, äh, vielleicht wartet man da jetzt noch ein bisschen.

00:44:04.500 --> 00:44:06.940
Ja, ich glaube, das wäre, mag ich ja, frag ich mich nicht, wäre das ein Selbstmord.

00:44:06.940 --> 00:44:07.380
Äh.

00:44:07.380 --> 00:44:13.880
Ich meine, was bei 3-8 noch dazu kam, das ist noch ganz interessant, aber auch wieder so eine Kleinigkeit ähnlich wie beim...

00:44:13.880 --> 00:44:17.200
...Boris Operator sind die, äh, Positional Only Arguments.

00:44:17.200 --> 00:44:18.400
Oh ja, genau, ja.

00:44:18.400 --> 00:44:43.860
Ähm, bisher kann ich ja, ähm, in dieser Kombination aus Argumenten, die ich, äh, in einer bestimmten Reihenfolge ohne Namen oder mit Namen in einer beliebigen Reihenfolge und unbenahmt nach Reihenfolge und benahmt ohne Vorankündigung in diesen ganzen dynamischen Varianten, äh, zu wissen kann, kann ich momentan nicht verhindern, ähm,

00:44:43.860 --> 00:45:03.240
ähm, dass jemand mir ein Positionsargument halt auch mit Namen angibt und das gibt es jetzt tatsächlich als neues Ding, ähm, dass man, ähm, markieren kann, dass Argumente wirklich nur positional übergeben werden dürfen, ähm, wobei ich tatsächlich auch zugeben muss, zum einen, da ist mir tatsächlich der, der Syntaxanteil eher zum Abgewöhnen.

00:45:03.240 --> 00:45:05.800
Ja, also warum macht man das? Also was gibt es da für einen Grund für?

00:45:05.800 --> 00:45:08.780
Den habe ich tatsächlich gerade auch nicht begreifbar.

00:45:08.780 --> 00:45:13.780
Ich weiß es nicht so genau. Ich habe mal, äh, das war, ich habe, ähm, eben auf der, auf der PyCon war halt auch ein...

00:45:13.860 --> 00:45:43.840
Äh, äh, Talk, äh, über diese Änderungen und da hat jemand ein Beispiel gebracht irgendwie mit Potenzieren, dass das da irgendwie einen Böse beißen kann oder ich kriege es jetzt, glaube ich, auch nicht so wirklich auf die Reihe, was da das Problem war, aber im Grunde ist halt das, äh, das Blöde, dass, ähm, äh, ja, wenn du halt nicht so richtig erwartest, dass wenn du, äh, irgendwie ein Keyword-Argument, äh, halt übergibst, dass das dann halt als Positionsargument, äh, auch reinkommen kann und dann sozusagen vielleicht einfach, äh, äh,

00:45:43.860 --> 00:45:47.780
äh, Dinge in der falschen, im falschen Hals irgendwie in der Position landen, ne?

00:45:47.780 --> 00:46:06.600
Ähm, ja, was, was passiert, was passieren kann, ist, wenn du ein, äh, ich, da weiß ich aber auch nicht, was momentan der Effekt wäre, aber du kannst solche Sachen bauen, wenn du zum Beispiel halt durch, ähm, äh, Sternstern, durch Stern und Sternstern Dicts übergibst und in dem Dict ist etwas drin, was eigentlich ein Positionsargument wäre, dann könntest du das damit ersetzen.

00:46:06.600 --> 00:46:13.800
Das heißt, wenn es, äh, zwei, ja, aber, ja, aber da, da würde sich eigentlich peinlich...

00:46:13.860 --> 00:46:43.240
...gegen wehren, wenn du ein Positionsargument namens A per Position übergibst und dann im Dict nochmal ein A mit drin stehen hast als Sternstern-Keyword-Argument, ähm, das, das, da würde sich eigentlich schon gegen wehren und sagen, das geht so nicht, ähm, aber für mich ist es ein bisschen so ein Ding ähnlich wie du bei Command-Line-Tools, äh, häufig, wenn du hintergelagerte Prozesse starten möchtest, so Start-Stop-Dämmen-mäßig, und du willst an den auch noch Argumente übergeben,

00:46:43.240 --> 00:46:43.840
dann hast du mal...

00:46:43.860 --> 00:47:13.840
...einmal auf der Command-Line so ein Doppel-Minus, äh, um zu sagen, so hier ist jetzt mal das, hier ist das Ende von, von den Argumenten, die ich kriege und hier gehen die Argumente los, die in der nächsten, äh, äh, an den nächsten weitergegeben werden, äh, damit die Parse auch nicht durcheinander kommen und so in dieser Kategorie ist das für mich halt auch angesiedelt, nur diese syntaktische Auswahl, dass du dann halt neben den bisher schon Sternchen, äh, in Funktion, in der Funktionsdegradation jetzt noch einen Slash als bedeutungstragendes Element hast, ich weiß gar nicht, ob der Dopp, ist der Doppelslash auch belegt für...

00:47:13.860 --> 00:47:15.480
...für die Keyword-Arguments oder sowas, ne, ne?

00:47:15.480 --> 00:47:16.940
Ne, ich war nicht nur der Slash, ja.

00:47:16.940 --> 00:47:22.680
Aber, aber, das sieht ex... also, das, das, meine Ästhetik ist, äh, arg verletzt, ja.

00:47:22.680 --> 00:47:43.840
Ja, und wenn man, wenn man halt nicht weiß, dass das nicht spielt, ich meine, es ist sowieso, denke ich, für, für Leute, die damit anfangen, also die Stern- und Doppelstern-Geschichten sind schon so, hui, was passiert hier für magische Sachen, und jetzt aber der Slash ist auch nochmal, da kann ich, kann ich auch mir gut vorstellen, dass da Leute ein bisschen verwirrt werden, aber, naja, ich meine, die meisten Leute werden das ja auch nie zu sehen,

00:47:43.860 --> 00:47:49.260
kriegen, also das ist halt etwas, was man halt dann macht, wenn, äh, wenn man muss, aber ansonsten, ähm, ja.

00:47:49.260 --> 00:47:55.860
Ja, das ist, äh, das ist auf jeden Fall auch eine interessante Geschichte, äh, genau, dann, äh...

00:47:55.860 --> 00:47:57.000
Das nächste Ding für Python 3.8.

00:47:57.000 --> 00:47:57.520
Bitte?

00:47:57.520 --> 00:47:58.740
Das nächste Ding für Python 3.8.

00:47:58.740 --> 00:47:59.180
Ja, Python 3.8.

00:47:59.180 --> 00:48:00.080
Wir brauchen eine Chapter-Mark.

00:48:00.080 --> 00:48:08.880
Ja, äh, ich, äh, das muss ich mir so mal, ich glaube, ich habe es sowieso verpeilt, ich weiß nicht, Reaper, äh, äh, macht die Chapter-Marks manchmal an den Anfang, wenn man das irgendwie falsch einspricht.

00:48:08.880 --> 00:48:10.980
Warum haben wir eigentlich noch keinen Button, den wir irgendwie mit dem Raspberry-Store...

00:48:10.980 --> 00:48:12.980
Genau, ja, ja, ja, ich habe das auch mal vor.

00:48:13.860 --> 00:48:19.440
Äh, genau, muss ich mal irgendwie, äh, äh, muss ich mich bestätigen, vielleicht ist ja jetzt irgendwie im Jahreswechsel...

00:48:19.440 --> 00:48:22.660
Vielleicht müssen wir einen Buzzer kaufen und dann gucken wir mal so ein Interface oder...

00:48:22.660 --> 00:48:22.860
Ja.

00:48:22.860 --> 00:48:25.560
Gibt es eigentlich eine API für Reaper? Entschuldigung, knallt es auf.

00:48:25.560 --> 00:48:29.140
Ja, ja, ja, man kann da solche Dinge reinhängen, das ist, äh, das ist tatsächlich alles möglich.

00:48:29.140 --> 00:48:29.540
Ja.

00:48:29.540 --> 00:48:40.320
Ja, ähm, äh, genau, nee, äh, schöne, schöne Geschichte, also ich finde das total toll, ich weiß nicht, ob andere Leute das auch, äh, auch gut finden, äh, aber für Multiprozessing gibt es jetzt so Shared-Memory-Geschichten automatisch.

00:48:40.320 --> 00:48:43.320
Also, ähm, wenn man...

00:48:43.860 --> 00:49:13.840
Ähm, ähm, so Arbeit verteilen möchte auf mehrere, äh, äh, Prozesse, was man manchmal muss, wenn man zum Beispiel, äh, äh, ja, auch, äh, irgendwie CPU-Power haben möchte, dann geht das ja wegen GIL im Global Interpreter-Log nicht so wirklich mit Threads und, ähm, dann startet man halt mehrere Prozesse, das ist halt die Lösung dafür, dann hat man aber das Problem, dass man, wenn man jetzt, äh, eine Funktion sozusagen, also eine Funktion mit unterschiedlichen Parametern in fünf unterschiedlichen Prozessen ausgeführt haben möchte, dass man irgendwie diese Parameter, die man der Funktion übergeben kann,

00:49:13.860 --> 00:49:43.840
irgendwie in diese Prozesse reinbekommen, äh, äh, muss und da kann man natürlich, äh, einfach irgendwie die Sachen pickeln oder das funktioniert auch, äh, ich glaube, sie werden auch per Default gepickelt, ähm, aber wenn man jetzt, äh, irgendwie was übergibt, zum Beispiel halt auch gerade bei so Data Science-Geschichten, irgendwie große NumPy-Arrays oder so, die halt so groß sind, dass ich die nicht fünfmal in den Hauptspeicher packen kann, dann habe ich halt ein Problem, weil, äh, geht halt einfach nicht mehr.

00:49:43.860 --> 00:50:13.840
Und, ähm, das, äh, äh, was man dann machen konnte, ist aber eine ganz schöne Fummelei, äh, ist, man macht halt einfach, äh, ein Shared-Memory-Segment, was halt alle irgendwie auf das halt alle Prozesse zugreifen und, ähm, also man kann dann so Dinge machen, wenn man nimmt halt, äh, äh, irgendwie Struct, äh, das in der Standardbibliothek, das Modul und baut sich dann halt so eine binäre Datenstruktur zusammen in ein Shared-Memory-Segment und dann lädt man das in den Prozessen halt irgendwie, äh, greift man darauf zu und dann hat man halt

00:50:13.860 --> 00:50:18.720
auch sozusagen die Daten übergeben, ohne dass man da, äh, irgendwie, ähm, das kippeln muss.

00:50:18.720 --> 00:50:20.940
Du musst halt quasi selber klären, dann musst du wieder so...

00:50:20.940 --> 00:50:43.320
Aber das ist halt schon, äh, ja, ich würde mal sagen, dass die meisten Leute, äh, das ist schon auch ganz schön wild und würden das nicht so machen wollen und jetzt gibt's halt eine Geschichte, die halt automatisch drin ist und man muss sich selber nicht drum kümmern und, äh, wenn man die Daten, wenn man alle Prozesse, die man aufruft, die gleichen Daten verwenden sollen, dann kann man sagen, so, hier in diesem Shared-Memory-Segment ist das drin und dann kriegen die das und das ist natürlich schon ziemlich cool.

00:50:43.860 --> 00:50:44.000
Ja.

00:50:44.000 --> 00:50:48.220
Ähm, hm.

00:50:48.220 --> 00:51:12.720
Einen hab ich noch, ähm, es gibt noch ein kleines Ding, das, äh, war vielleicht der, der meisten nicht aufgefallen, es gab noch, ähm, einen, eigentlich war's ein Bug, aber, ähm, hat jetzt eine Weile gedauert und zwar Unpacking, also wenn ich, äh, Listen-Elemente, ähm, an einen, ähm, an einen Wert, äh, an, antackern möchte,

00:51:12.720 --> 00:51:13.840
also ich hab hier, äh,

00:51:13.860 --> 00:51:36.120
ich kann zum Beispiel ein Tupel haben, da sind irgendwie die Zahlen 4, 5, 6 drin und wenn ich das jetzt einem, ähm, neues Tupel zuweisen möchte, kann ich dann wieder sagen, T ist gleich 1, 2, 3 Sternen, mein bestehendes Tupel, um die dann halt schön zu vermischen, das konnte man bisher, ähm, machen, aber das konnte man nicht benutzen, wenn man eine Expression hatte, die an einen Return oder an einen Yield ging.

00:51:37.900 --> 00:51:53.820
So, äh, sehr seltenes Ding, aber das ist gerade, wenn man so, ähm, funktionale Sachen hat, Generatoren und so'n Zeug, ähm, wo man irgendwas dynamisch ausgerechnet ist, mit was Statischem verknüpfen möchte, ähm, dann sind diese Unpackings manchmal sehr, sehr angenehm und die musste man momentan immer über mehrere Zahlen verteilen jetzt.

00:51:53.820 --> 00:52:05.500
So ein bisschen, das wird auch dargestellt als, eigentlich war's irgendwie ein unintentional Behavior seit Patent 3.2 und, ähm, jetzt ist es nicht mehr, also noch eine Packung zu geben, äh, genau.

00:52:07.900 --> 00:52:13.520
Ja, äh, oh, ähm, ja, ich weiß nicht, aber ansonsten...

00:52:13.520 --> 00:52:14.620
Habt ihr noch was vergessen, Python 3.8?

00:52:14.620 --> 00:52:18.380
Ich, äh, es gibt noch die Audithooks, äh, irgendwie...

00:52:18.380 --> 00:52:19.180
Ja, was ist das denn?

00:52:19.180 --> 00:52:22.480
Ja, du kann, ähm...

00:52:22.480 --> 00:52:25.720
Was ist ein Audit? Fangen wir doch erstmal so an. Also von Python jetzt.

00:52:25.720 --> 00:52:37.360
Mhm. Du kannst halt dich irgendwo reinklingen und dann Notifizierungen kriegen, wenn so bestimmte Sachen passieren. Aber, äh, das ist jetzt natürlich so ein bisschen zu allgemein, ich weiß nicht genau, äh...

00:52:37.360 --> 00:52:37.880
Ein Giebergeist.

00:52:37.900 --> 00:52:41.940
Ja, über die Python-Runtime bauen, ne? Hört sich komisch an.

00:52:41.940 --> 00:52:45.900
Ja, ähm...

00:52:45.900 --> 00:53:07.580
Ich hab's ja tatsächlich auch noch nicht angeguckt, ähm, aber, ähm, es kann sein, dass etwas, was ich schon eine Weile haben wollte, ähm, das Spannende ist, die Hooks können nämlich zum einen halt von außen reingegeben werden, dass ich die, ähm, wenn ich jemandem eine Python-Runtime zur Verfügung stelle, so als Hosting-Provider, ähm, oder als Plattform-Provider, kann es interessant sein, dass ich die forcieren kann.

00:53:07.900 --> 00:53:34.080
Und, also ein Thema, und da ist nämlich letztens der Bug, den ich vor 14 Jahren eingesteuert hab, mir zugemacht worden mit, das geht jetzt irgendwie anders, und da muss ich mal reinschauen, war, ähm, dass Python zum Beispiel, wenn ihm der Speicher ausgeht, kriegst du, kriegt dein Python-Programm halt einen, äh, Memory-Error, ähm, dass er keinen Speicher mehr alle zitieren kann, und dann kannst du sozusagen nochmal versuchen, sinnvolle Dinge zu tun.

00:53:34.080 --> 00:53:37.760
Und das Problem ist, ähm, es gibt einige Programme, gerade so Server.

00:53:37.900 --> 00:54:07.720
Die laufen, ähm, und haben, und der Memory-Error ist halt keine System-Exception, sondern es ist halt eine Exception, das heißt, die wird von einem normalen Try-Accept, äh, auf Exception auch abgefangen, ähm, und wenn du halt einen Server hast und deine Anwendung, äh, läuft in Speicher-Probleme, äh, das klingt lustig, ja, dann kriegt der Main-Loop halt für den, keine Ahnung, für die HTTP-Anfrage, was auch immer, kriegt der Main-Loop halt dann einmal einen Memory-Error, äh,

00:54:07.720 --> 00:54:07.880
äh,

00:54:07.880 --> 00:54:37.860
und wirft einen 500er-Fehler dem Client gegenüber und nimmt die nächste Anfrage entgegen, und, ähm, wenn sich aber ein Programm halt dermaßen in die Ecke manövriert hat, die räumen ja normalerweise nicht ordentlich in sich auf, und da wäre es mir lieber, wenn ich halt von außen eben, äh, so, sowas beobachten könnte und sagen kann, hey, in dem Fall mach bitte, mach den Python einfach, äh, den Prozess einfach aus, lass ihn neu starten von Supervisor, System D oder wem auch immer, ähm, weil besser wird's nicht mehr, ähm, also da haben wir halt...

00:54:37.860 --> 00:55:07.200
Nee, einfach nur, wenn der Sprecher halt voll ist, ähm, das, das kommt halt auch bei den, auch bei größeren Kisten halt mal vor, bei Java ist das immer noch ein bisschen härter, da gibt's ein ähnliches Problem mit diesen, äh, wie, wie der Heap alloziiert wird, und, ähm, die, äh, bei Python ist es halt so, das brauchst du nicht konfigurieren, aber wenn er oben am Limit anschlägt, dann hast du so ein halbgares Programm, das reagiert meistens halt in irgendwelchen Health-Checks auch gerade noch so von, ich bin einsatzfähig, aber wenn's irgendwas Sinnvolles tun soll, fliegt's halt ständig auf die Nase, ähm,

00:55:07.200 --> 00:55:07.840
ähm, da haben wir halt auch, ähm,

00:55:07.840 --> 00:55:09.660
da haben wir uns lange mit rumgeschlagen, ähm,

00:55:09.660 --> 00:55:11.740
und da kam jetzt irgendwie die Info mit,

00:55:11.740 --> 00:55:13.640
hey, das könnt ihr jetzt irgendwie von außen steuern,

00:55:13.640 --> 00:55:16.000
ähm, aber ich glaub, das sind nicht die Audit-Hooks,

00:55:16.000 --> 00:55:18.040
das ist irgendwas in der Nähe noch, ja.

00:55:18.040 --> 00:55:20.240
Ja, ich, ich weiß nicht,

00:55:20.240 --> 00:55:21.820
also man kann hier, also ich hab

00:55:21.820 --> 00:55:23.180
hier auch grad noch in den, äh,

00:55:23.180 --> 00:55:25.720
Papp geguckt, was man da, also man kann

00:55:25.720 --> 00:55:27.600
in sehr vielen Stellen sozusagen

00:55:27.600 --> 00:55:29.820
sich, äh, so ein, so ein

00:55:29.820 --> 00:55:31.740
Hook setzen, wo man dann sagt, okay, äh, wenn, wenn

00:55:31.740 --> 00:55:33.780
das passiert, dann möchte ich benachrichtigt werden und dann irgendwie

00:55:33.780 --> 00:55:35.940
drauf reagieren, und das,

00:55:35.940 --> 00:55:37.780
ähm, ja, aber ich

00:55:37.780 --> 00:55:38.760
hab's mir ehrlich gesagt auch noch nicht so genau gemacht.

00:55:38.760 --> 00:55:39.880
Direkt E-Mail an den Admin.

00:55:39.880 --> 00:55:40.980
Ja.

00:55:40.980 --> 00:55:45.820
Tja, äh, genau, ansonsten, ich weiß nicht

00:55:45.820 --> 00:55:47.800
so genau, haben wir noch irgendwas

00:55:47.800 --> 00:55:49.080
in 3.8, was, äh,

00:55:49.080 --> 00:55:50.740
irgendwie interessant wäre?

00:55:50.740 --> 00:55:55.580
Na? I don't know.

00:55:55.580 --> 00:55:56.840
Nö, ich glaub, also,

00:55:56.840 --> 00:55:59.880
nee, beim drüberfliegen waren das jetzt so die Sachen, die ich mir

00:55:59.880 --> 00:56:01.080
rausgesucht hatte, ja.

00:56:01.080 --> 00:56:03.740
Ja gut, dann können wir die Liste auch wieder

00:56:03.740 --> 00:56:04.700
abhaken. Genau, so, ja.

00:56:04.700 --> 00:56:07.480
Python 3.8 irgendwie durch,

00:56:07.720 --> 00:56:10.400
ähm, ja, ähm,

00:56:10.400 --> 00:56:12.000
dann hat man noch

00:56:12.000 --> 00:56:12.840
den Core Sprint.

00:56:12.840 --> 00:56:15.920
Oh ja, du wolltest noch was erzählen von einem Core Sprint.

00:56:15.920 --> 00:56:17.680
Erstmal vielleicht kurz, äh, was ist ein Core Sprint?

00:56:17.680 --> 00:56:19.940
Also geht's um die, die Core-Developer sind das

00:56:19.940 --> 00:56:22.100
eigentliche große, die Gurus,

00:56:22.100 --> 00:56:23.840
ne, von Python, die Entwicklerteams, die am Kern

00:56:23.840 --> 00:56:25.260
der Sprache arbeiten, ist das richtig?

00:56:25.260 --> 00:56:27.880
Ja, genau, und, ähm,

00:56:27.880 --> 00:56:29.860
also typischerweise, äh, die nutzen

00:56:29.860 --> 00:56:31.780
halt schon auch die Gelegenheit, äh, wenn sie können,

00:56:31.780 --> 00:56:33.440
dass sie sich mal treffen, und, ähm,

00:56:33.440 --> 00:56:35.400
diesmal war's jetzt vom,

00:56:35.400 --> 00:56:37.660
das ist jetzt vier Wochen her, 9. bis 13. September,

00:56:37.660 --> 00:56:39.580
äh, schon auch relativ

00:56:39.580 --> 00:56:41.460
lang, fünf Tage, vier Tage,

00:56:41.460 --> 00:56:43.580
äh, haben sich 34 Leute getroffen,

00:56:43.580 --> 00:56:46.140
große Gruppe, äh, viele Langzeit-Leute,

00:56:46.140 --> 00:56:47.800
aber das Kernteam hat sich auch in den letzten

00:56:47.800 --> 00:56:50.060
Jahren, äh, extrem gut diversifiziert,

00:56:50.060 --> 00:56:51.320
ähm, also viele

00:56:51.320 --> 00:56:53.160
Leute auch aus unterschiedlichen Ländern,

00:56:53.160 --> 00:56:55.260
unterschiedlichen Hintergründen, das ist, ähm,

00:56:55.260 --> 00:56:57.560
eigentlich gut gewesen, und, ähm, die haben einen Haufen

00:56:57.560 --> 00:56:59.640
Pull-Requests verarbeitet, 120 Stück

00:56:59.640 --> 00:57:01.280
haben sie, äh, gesagt,

00:57:01.280 --> 00:57:03.700
und da wurde dann auch der

00:57:03.700 --> 00:57:05.660
Python 3.9 Release Schedule und jetzt die

00:57:05.660 --> 00:57:07.600
neue Zwölf-Monats-Kadenz, äh, beschlossen,

00:57:07.600 --> 00:57:10.300
mhm, und, ähm,

00:57:10.300 --> 00:57:11.700
da machen sie auch viele

00:57:11.700 --> 00:57:13.480
mal eine Infrastruktur, also der Bug-Tracker

00:57:13.480 --> 00:57:15.380
wird nochmal angeguckt und, ähm,

00:57:15.380 --> 00:57:17.860
äh, solche Dinge, ähm,

00:57:17.860 --> 00:57:19.660
und ein, zwei

00:57:19.660 --> 00:57:21.440
Sachen, die sind mir aber dann konkret nochmal

00:57:21.440 --> 00:57:23.840
genauer aufgefallen, das eine ist, äh,

00:57:23.840 --> 00:57:25.600
es wird mal wieder am Grill rumgedoktert,

00:57:25.600 --> 00:57:27.900
mhm, ähm,

00:57:27.900 --> 00:57:29.820
das, ich weiß nicht, ob wir den im, im

00:57:29.820 --> 00:57:30.620
Cast schon hatten,

00:57:30.620 --> 00:57:33.440
so ein bisschen, ja, ja,

00:57:33.440 --> 00:57:35.500
kurz anreichen für alle Menschen, die

00:57:35.500 --> 00:57:37.100
das als erstes hören oder so,

00:57:37.540 --> 00:57:39.460
äh, das ist der Global Interpreter Lock, äh,

00:57:39.460 --> 00:57:41.000
und das ist halt, um, äh,

00:57:41.000 --> 00:57:43.260
äh, zu verhindern, dass nicht-synchronisierte

00:57:43.260 --> 00:57:45.380
Datenstrukturen auf C-Ebene, äh,

00:57:45.380 --> 00:57:47.420
sich auf den Füßen rumdrehen, treten, und das ist

00:57:47.420 --> 00:57:49.520
der Grund, warum halt der, äh,

00:57:49.520 --> 00:57:51.260
immer nur ein Statement, äh,

00:57:51.260 --> 00:57:53.480
äh, verarbeitet werden kann gleichzeitig,

00:57:53.480 --> 00:57:55.540
ähm, und ich mit Multithreading

00:57:55.540 --> 00:57:57.340
in Python halt auch immer nur eine

00:57:57.340 --> 00:57:58.440
CPU auslasten kann.

00:57:58.440 --> 00:58:01.440
Und, ähm, Jochen hatte jetzt

00:58:01.440 --> 00:58:03.440
gerade schon gesagt, dass es ja jetzt, äh,

00:58:03.440 --> 00:58:05.520
besseres Shared Memory Management auf der einen Seite

00:58:05.520 --> 00:58:07.480
gibt, ähm, und das, äh,

00:58:07.480 --> 00:58:09.320
äh, ist mir nämlich dann beim Durchgucken

00:58:09.320 --> 00:58:11.760
von dem, äh, Sprint auch aufgefallen,

00:58:11.760 --> 00:58:13.360
das scheint noch in, die Arbeit scheint

00:58:13.360 --> 00:58:15.560
noch in eine andere Richtung zu gehen, äh,

00:58:15.560 --> 00:58:17.500
nämlich, dass man, um, um den

00:58:17.500 --> 00:58:19.700
Gildung rumzugehen, äh,

00:58:19.700 --> 00:58:21.460
mehrere Python-Interpreter in

00:58:21.460 --> 00:58:23.820
einer, äh, in einem C-Prozess

00:58:23.820 --> 00:58:24.960
haben kann.

00:58:24.960 --> 00:58:27.380
Und bisher, das ging bisher

00:58:27.380 --> 00:58:29.620
auch schon, der Interpreter war, äh,

00:58:29.620 --> 00:58:31.140
selber ein Objekt, was man, äh,

00:58:31.140 --> 00:58:33.440
ich weiß gar nicht, ob man es, ob man tatsächlich

00:58:33.440 --> 00:58:35.600
mehrere Interpreter starten konnte,

00:58:35.600 --> 00:58:37.420
äh, die Ecke fasse ich einfach zu selten

00:58:37.420 --> 00:58:39.460
an, ähm, aber

00:58:39.460 --> 00:58:41.500
auf jeden Fall arbeiten sie jetzt dran, dass

00:58:41.500 --> 00:58:43.100
es so umgearbeitet wird,

00:58:43.100 --> 00:58:45.480
dass mehrere Interpreter im Prozess

00:58:45.480 --> 00:58:47.500
jeder seinen eigenen Global Interpreter

00:58:47.500 --> 00:58:49.540
lockt kriegt. Und ich meine, das ist

00:58:49.540 --> 00:58:50.300
von der Arbeit her

00:58:50.300 --> 00:58:53.520
relativ logisch, was da zu tun

00:58:53.520 --> 00:58:55.500
ist. Es ist ein C-Programm, da gibt's

00:58:55.500 --> 00:58:57.280
halt, wenn man nicht aufpasst, globalen Scope,

00:58:57.280 --> 00:58:59.020
äh, globale Variablen,

00:58:59.020 --> 00:59:01.260
und die müssen sie jetzt im Prinzip einmal komplett

00:59:01.260 --> 00:59:03.420
alle wegputzen, dass alle Daten, die irgendwas

00:59:03.420 --> 00:59:05.640
mit dem Interpreter zu tun haben, ähm,

00:59:05.640 --> 00:59:07.320
nicht im, äh, nicht

00:59:07.360 --> 00:59:09.240
globale Variablen sind, sondern dass die alle an

00:59:09.240 --> 00:59:11.300
eine, äh, Interpreterinstanz dran getackert

00:59:11.300 --> 00:59:13.460
werden. Äh, und dann haben wir

00:59:13.460 --> 00:59:15.160
nämlich tatsächlich die Chance, äh,

00:59:15.160 --> 00:59:17.340
Python-Code in einem Prozess

00:59:17.340 --> 00:59:18.800
über mehrere Threads

00:59:18.800 --> 00:59:21.160
parallel auszuführen. Und wenn man dann nämlich wieder

00:59:21.160 --> 00:59:23.100
das, die Techniken ins Spiel bringt,

00:59:23.100 --> 00:59:25.160
zum Thema, äh, äh, Shared Memory,

00:59:25.160 --> 00:59:27.360
dann geht das

00:59:27.360 --> 00:59:29.380
vielleicht sogar tatsächlich auch ganz gut leichtgewichtig.

00:59:29.380 --> 00:59:31.340
Und das klingt

00:59:31.340 --> 00:59:33.220
jetzt nach so einem ganz interessanten

00:59:33.220 --> 00:59:35.320
Kunstgriff, anstatt den Inter-,

00:59:35.320 --> 00:59:37.180
den Gil loszuwerden oder

00:59:37.180 --> 00:59:39.360
den Interpreter an der Stelle da weiter aufzubohren,

00:59:39.360 --> 00:59:41.120
einfach zu sagen, komm, dann, äh,

00:59:41.120 --> 00:59:42.960
mehrere Interpreter parallel, äh,

00:59:42.960 --> 00:59:45.080
wir dröseln die Datenstrukturen so auf,

00:59:45.080 --> 00:59:47.080
und dann kann halt, äh, jeder Interpreter

00:59:47.080 --> 00:59:49.020
in unterschiedlichen Prozessen, äh, Threads

00:59:49.020 --> 00:59:51.180
laufen, und siehe da, wir sind

00:59:51.180 --> 00:59:52.860
in der Lage, mit einem Prozess mehr CPUs

00:59:52.860 --> 00:59:54.840
auszulasten. Also das wär, das wär tatsächlich

00:59:54.840 --> 00:59:57.100
nochmal, find ich, ein interessanter Ansatz.

00:59:57.100 --> 00:59:59.360
Ja, ne, das klingt, äh,

00:59:59.360 --> 01:00:00.860
klingt tatsächlich sehr interessant. Ja, gerade wo jetzt

01:00:00.860 --> 01:00:02.840
die Kerne so mehr zunehmen, ne, irgendwie in der Zukunft.

01:00:02.840 --> 01:00:05.040
Jaja, das ist natürlich auch so ein, äh, ja,

01:00:05.040 --> 01:00:07.060
so ein Dauerthema,

01:00:07.060 --> 01:00:09.160
wobei, ich meine, die, die, die Fälle, wo man

01:00:09.160 --> 01:00:11.020
das wirklich, wirklich braucht, sind auch eher

01:00:11.020 --> 01:00:13.340
so, äh, äh, beschränkt,

01:00:13.340 --> 01:00:15.120
äh, würd ich mal sagen, weil die meisten Leute ja nicht,

01:00:15.120 --> 01:00:17.100
äh, also, ich mein, dass man CPU

01:00:17.100 --> 01:00:19.360
und, also, dass man I.O. multiplexen

01:00:19.360 --> 01:00:21.140
will, äh, irgendwie, das kommt schon

01:00:21.140 --> 01:00:23.000
häufig vor, aber dass man das gleichzeitig

01:00:23.000 --> 01:00:25.120
mit viel CPU-Verbrauch macht, ist, äh,

01:00:25.120 --> 01:00:27.020
also wenn ich grad einen Datenbank-Server schreibt

01:00:27.020 --> 01:00:29.060
oder so, ähm, würd ich jetzt

01:00:29.060 --> 01:00:30.260
sagen, gar nicht so super häufig.

01:00:30.260 --> 01:00:33.000
Ähm. Ne, du willst ja immer eigentlich auch

01:00:33.000 --> 01:00:34.420
über mehr Prozesse skalieren können.

01:00:34.420 --> 01:00:36.940
Ja, klar, natürlich, ähm, ja,

01:00:36.940 --> 01:00:41.000
ähm, äh, genau, ich glaub, der, der

01:00:41.000 --> 01:00:42.860
Grund, warum das mit dem, mit dem GIL halt so

01:00:42.860 --> 01:00:44.600
ein Problem ist, auch da irgendwie das, wie, wie

01:00:44.600 --> 01:00:47.040
Python den Hauptspeicher, äh,

01:00:47.040 --> 01:00:48.920
verwaltet, äh, ist da, ist da so ein riesen

01:00:48.920 --> 01:00:51.440
Problem, weil das Reference-Counting,

01:00:51.440 --> 01:00:52.900
man müsste das alles irgendwie locken

01:00:52.900 --> 01:00:55.040
eigentlich, also, ich hab, das ist jetzt auch so,

01:00:55.040 --> 01:00:56.880
was ich mal darüber gehört hab,

01:00:56.880 --> 01:00:58.720
aber, äh, schon wieder ein bisschen her,

01:00:58.720 --> 01:01:01.020
ähm, äh, und das kann man

01:01:01.020 --> 01:01:02.000
natürlich machen, man kann irgendwie

01:01:02.000 --> 01:01:04.860
vor jeder Operation, die man irgendwie beim

01:01:04.860 --> 01:01:06.820
Reference-Counting macht, äh, sagen, okay,

01:01:06.820 --> 01:01:08.800
äh, wir locken das jetzt hier,

01:01:08.800 --> 01:01:10.820
oder da halt irgendwie, ähm,

01:01:10.820 --> 01:01:12.820
äh, ähm,

01:01:12.820 --> 01:01:14.780
äh, äh, ja,

01:01:14.780 --> 01:01:16.740
sozusagen den, den, den Zugriff dann exklusiv

01:01:16.740 --> 01:01:18.800
machen, damit sich da irgendwie nichts, äh,

01:01:18.800 --> 01:01:20.940
äh, überschreibt, aber

01:01:20.940 --> 01:01:22.860
dann wird halt, äh, wenn man das

01:01:22.860 --> 01:01:24.660
einfach so macht, glaub ich, wird das, wird Python

01:01:24.660 --> 01:01:25.540
40 Mal so langsam.

01:01:25.540 --> 01:01:28.780
Und dann haben irgendwelche Leute sehr unheilige Dinge

01:01:28.780 --> 01:01:30.680
getan und rumgetrickst und haben es auf Faktor

01:01:30.680 --> 01:01:32.220
20 irgendwie runtergekriegt oder so,

01:01:32.220 --> 01:01:34.860
wovon schon niemand geglaubt hat, dass das möglich wäre.

01:01:34.860 --> 01:01:36.700
Und, äh,

01:01:36.700 --> 01:01:38.740
äh, aber das ist halt so das Problem,

01:01:38.740 --> 01:01:40.280
man kann es halt nicht, äh,

01:01:40.280 --> 01:01:42.740
also, mit der Art, wie das

01:01:42.740 --> 01:01:44.580
Haupt-, wie das Speichermanagement, also mit

01:01:44.580 --> 01:01:46.360
Reference-Counting funktioniert, ähm,

01:01:46.360 --> 01:01:49.060
geht das halt wohl nicht gut und, äh,

01:01:49.060 --> 01:01:50.760
ja, die einzige gute Möglichkeit, also

01:01:50.760 --> 01:01:52.380
wie es halt weiterhin schnell bleiben kann, ist,

01:01:52.380 --> 01:01:54.600
dass man sagt, nee, es gibt nur einen,

01:01:54.600 --> 01:01:56.480
äh, einen Thread, der halt

01:01:56.480 --> 01:01:58.620
irgendwie daran Dinge am Reference-Counting

01:01:58.620 --> 01:02:00.700
ändern kann. Ja, und dafür braucht man halt

01:02:00.700 --> 01:02:02.700
den Gil irgendwie, aber ja,

01:02:02.700 --> 01:02:04.500
also das mit den mehreren Interpretern, das klingt auch sehr

01:02:04.500 --> 01:02:06.640
interessant, also da bin ich mal, äh, bin ich mal gespannt,

01:02:06.660 --> 01:02:09.060
weil, äh, das ist ja auch mal so ein

01:02:09.060 --> 01:02:10.940
Standard-Argument, äh, was an Python halt

01:02:10.940 --> 01:02:12.720
nicht so, nicht so toll ist gegenüber anderen

01:02:12.720 --> 01:02:13.940
und, ähm, ja.

01:02:13.940 --> 01:02:16.400
Was aber auch für den, für den Alltag

01:02:16.400 --> 01:02:18.740
real kein Problem ist.

01:02:18.740 --> 01:02:20.040
Nicht wirklich, nein.

01:02:20.040 --> 01:02:22.700
Also, ja. Und das ist ja auch das,

01:02:22.700 --> 01:02:24.740
gerade das Tooling über Multiprocessing ist

01:02:24.740 --> 01:02:26.660
halt inzwischen extrem geschmeidig geworden,

01:02:26.660 --> 01:02:28.860
sowohl, also auf der einen Seite halt für I.O.,

01:02:28.860 --> 01:02:30.500
Multiplexing ist Async I.O.

01:02:30.500 --> 01:02:33.080
extrem angenehm geworden und, ähm,

01:02:33.080 --> 01:02:34.720
mit Multiprocessing und so

01:02:34.720 --> 01:02:36.540
Prozesse stoppen, ähm, dass das

01:02:36.540 --> 01:02:38.820
tut meistens, äh,

01:02:38.820 --> 01:02:40.860
der, äh, tut

01:02:40.860 --> 01:02:43.000
vor allem auf eine Art und Weise, wo man weniger

01:02:43.000 --> 01:02:45.040
scharf

01:02:45.040 --> 01:02:46.880
nachdenken muss. Threats haben halt das Problem,

01:02:46.880 --> 01:02:48.900
das wissen wir seit 20 Jahren, ähm,

01:02:48.900 --> 01:02:51.040
dass du dir ganz schnell halt in den Fuß schießt

01:02:51.040 --> 01:02:52.920
und, äh, Dinge passieren,

01:02:52.920 --> 01:02:55.040
die du nicht willst und wenn du es halt über Subprozesse

01:02:55.040 --> 01:02:56.700
äh, auftrennst, hast du eine klare

01:02:56.700 --> 01:02:58.640
I.O.-Grenze und wenn du Async I.O. machst,

01:02:58.640 --> 01:03:00.580
dann hast du halt, äh, eben das Thema,

01:03:00.580 --> 01:03:02.520
dass du selber bestimmst, wann du, äh,

01:03:02.520 --> 01:03:04.500
die Kontrolle über deinen, ähm, deinen

01:03:04.500 --> 01:03:05.900
Korruptfahrt abgibst und wann nicht, ja.

01:03:06.540 --> 01:03:06.700
Ja.

01:03:06.700 --> 01:03:10.620
Ja, also. Ich glaube, das ist nochmal so eine eigene

01:03:10.620 --> 01:03:12.660
Folge irgendwie, Async und Shedding in Python,

01:03:12.660 --> 01:03:14.120
da haben wir auch gar nicht genug für gemacht.

01:03:14.120 --> 01:03:16.500
Das ist auch jedes Mal, glaube ich, mindestens eine

01:03:16.500 --> 01:03:18.520
Folge wahrscheinlich komplett. Das ist

01:03:18.520 --> 01:03:20.620
ein alles ziemlich fetter, äh, Brocken.

01:03:20.620 --> 01:03:22.720
Ja, was mir auffällt, ist, dass man

01:03:22.720 --> 01:03:24.360
bei Async wahrscheinlich, ähm,

01:03:24.360 --> 01:03:26.860
tatsächlich dann, wenn man das in der, äh,

01:03:26.860 --> 01:03:28.620
hier nochmal rausholen, äh,

01:03:28.620 --> 01:03:30.240
möchte, was, glaube ich, wirklich eine gute Idee ist,

01:03:30.240 --> 01:03:32.300
dann müssten wir uns wahrscheinlich was einfallen lassen, um

01:03:32.300 --> 01:03:34.600
Code-By-Spiele während in den

01:03:34.600 --> 01:03:35.920
Stream irgendwie einzubetten.

01:03:36.540 --> 01:03:38.640
Ja, da, genau, das ist natürlich auch so eine,

01:03:38.640 --> 01:03:40.600
so eine Sache, wie man, wie, wie kriegt man das eigentlich

01:03:40.600 --> 01:03:42.580
gut hin? Da habe ich auch schon mal drüber nachgedacht, aber

01:03:42.580 --> 01:03:44.620
auch noch keine Lösung gefunden. Ich meine,

01:03:44.620 --> 01:03:46.640
ja, man könnte natürlich auch irgendwie eine Videogeschichte

01:03:46.640 --> 01:03:48.760
dazu machen, aber das ist halt auch irgendwie

01:03:48.760 --> 01:03:50.260
alles. Ja, ich höre meinen Meinungs-

01:03:50.260 --> 01:03:52.900
Ja, genau.

01:03:52.900 --> 01:03:54.640
Ich hätte noch Video-Einbänden irgendwo auf der, äh,

01:03:54.640 --> 01:03:56.220
Frontscheibe von meinem Wagen. Ja.

01:03:56.220 --> 01:03:58.600
Ja, genau. Nee, das, das widerspricht

01:03:58.600 --> 01:04:00.440
irgendwie so dem, wie es benutzt wird, ja.

01:04:00.440 --> 01:04:02.520
Ich weiß es, ich weiß es auch nicht.

01:04:02.520 --> 01:04:04.440
Ja. Muss man mal überlegen. Aber

01:04:04.440 --> 01:04:06.380
prinzipiell wäre das natürlich schon eine interessante

01:04:06.380 --> 01:04:08.880
Geschichte, dass man das halt, äh,

01:04:08.880 --> 01:04:10.740
irgendwie dabei hätte, also zumindest

01:04:10.740 --> 01:04:12.480
irgendwie in den Shownotes auf der Webseite oder so.

01:04:12.480 --> 01:04:14.620
So augmentiert. Ja, ich glaube, das Bonus ist, glaube ich,

01:04:14.620 --> 01:04:16.560
vielleicht ausreichend, ne? Wenn jemand nachschauen will, wie das denn geht,

01:04:16.560 --> 01:04:18.620
dann haben wir dann so ein als Mini-Tutorial

01:04:18.620 --> 01:04:20.240
drin. Wenn sich jemand dann die Mühe macht, mich das

01:04:20.240 --> 01:04:22.060
mitzudokumentieren von uns, dann,

01:04:22.060 --> 01:04:24.520
ja, reicht ja.

01:04:24.520 --> 01:04:26.500
Also, Dings sind ja dabei. Also, ich würde sagen, das

01:04:26.500 --> 01:04:28.680
passt. Ich weiß, jeder andere an meiner Seite schreibt uns gerne.

01:04:28.680 --> 01:04:30.440
Also, wir sind immer auf euer Feedback. Ja. Oder vielleicht

01:04:30.440 --> 01:04:32.180
hat jemand schon mal was gesehen, wo man das, äh,

01:04:32.180 --> 01:04:33.880
wo das gut gemacht wurde, dann

01:04:33.880 --> 01:04:36.420
Also, ich habe tatsächlich, also, das ist so irgendwie so das Level,

01:04:36.420 --> 01:04:38.480
wo, auf dem ich jetzt noch nicht so ganz angekommen bin, dass ich

01:04:38.480 --> 01:04:40.460
halt große Probleme habe, immer noch so zu verstehen,

01:04:40.460 --> 01:04:42.360
wann benutze ich denn jetzt was und was ist denn jetzt überhaupt

01:04:42.360 --> 01:04:44.140
ein Sweat und wann nehme ich den, wann nehme ich jetzt irgendwie

01:04:44.140 --> 01:04:45.980
Async und vielleicht doch

01:04:45.980 --> 01:04:48.280
irgendwie anderer Taskmanager oder sowas dazwischen.

01:04:48.280 --> 01:04:49.980
Das ist noch nicht so ganz angekommen.

01:04:49.980 --> 01:04:52.420
Und ich glaube, das wäre auf jeden Fall nochmal spannend zu verstehen,

01:04:52.420 --> 01:04:54.540
warum, wieso, weshalb ich denn jetzt welche Technik anlesse

01:04:54.540 --> 01:04:56.140
und wann das so Best Practice ist für

01:04:56.140 --> 01:04:57.240
was überhaupt.

01:04:57.240 --> 01:05:00.040
Ja, auf jeden Fall. Ja.

01:05:00.040 --> 01:05:01.660
Eigene Folge. Ja.

01:05:01.660 --> 01:05:03.700
Ja.

01:05:03.720 --> 01:05:05.640
Ja, der letzte, der letzte Punkt, der mir beim

01:05:05.640 --> 01:05:07.600
Sprint aufgefallen war, war, dass

01:05:07.600 --> 01:05:09.300
Guido, jetzt schließt sich so für heute

01:05:09.300 --> 01:05:11.000
wahrscheinlich so der Themenkreis ein bisschen,

01:05:11.000 --> 01:05:13.740
dass Guido nämlich angefangen hat,

01:05:13.740 --> 01:05:16.080
eins der eben kernbefindlichsten

01:05:16.080 --> 01:05:17.480
Bauteile von Python, nämlich

01:05:17.480 --> 01:05:19.340
der Parser-Generator für Python selber,

01:05:19.340 --> 01:05:21.560
äh, wo er tatsächlich

01:05:21.560 --> 01:05:23.080
sich damals, ähm,

01:05:23.080 --> 01:05:25.620
89, 90 und dann

01:05:25.620 --> 01:05:27.420
über die 90ern weg, ähm,

01:05:27.420 --> 01:05:29.700
das Herzstück der Sprache,

01:05:29.700 --> 01:05:31.300
der Programmierung einer Sprache,

01:05:31.300 --> 01:05:33.560
nämlich Parser, Compiler

01:05:33.560 --> 01:05:35.720
Interpreter, ähm,

01:05:35.720 --> 01:05:37.740
dass, äh, er damals halt selbst

01:05:37.740 --> 01:05:39.500
eingebaut hatte und, ähm,

01:05:39.500 --> 01:05:41.660
er wohl die letzten Jahre immer mal angesprochen

01:05:41.660 --> 01:05:43.620
wurde auf, äh, einen ganz spezifischen

01:05:43.620 --> 01:05:45.520
Typ von Parser,

01:05:45.520 --> 01:05:47.940
nämlich Generator, nämlich den sogenannten Pack-Parser,

01:05:47.940 --> 01:05:49.780
ähm, da hat er sich

01:05:49.780 --> 01:05:51.600
dran gemacht, tatsächlich dieses Stück komplett nochmal

01:05:51.600 --> 01:05:53.300
auseinanderzunehmen, neu, äh,

01:05:53.300 --> 01:05:54.780
äh, neu aufzubauen,

01:05:54.780 --> 01:05:57.280
ähm, weil das wohl tatsächlich dann

01:05:57.280 --> 01:05:59.820
Einfluss hat auf die später mal, äh,

01:05:59.820 --> 01:06:01.420
Parsing-Performance auf der einen Seite,

01:06:01.420 --> 01:06:03.440
aber auch welche Sprachkonstrukte sich

01:06:03.440 --> 01:06:05.420
eigentlich wie elegant, äh, definieren

01:06:05.420 --> 01:06:07.500
lassen, mit wie viel, äh,

01:06:07.500 --> 01:06:09.540
Hacks man eigentlich die Sprache definieren

01:06:09.540 --> 01:06:11.320
muss, um, äh, dem Parser

01:06:11.320 --> 01:06:13.380
dazu zu zwingen, äh, dass er

01:06:13.380 --> 01:06:14.980
tut, was man will, ähm,

01:06:14.980 --> 01:06:17.700
und da hat er eine ganze Reihe von Blogposts,

01:06:17.700 --> 01:06:19.500
äh, schon zugeschrieben, die entstehen gerade

01:06:19.500 --> 01:06:21.660
noch, aber er hat immerhin beim, äh,

01:06:21.660 --> 01:06:23.240
schon mal eine Gesamt, äh,

01:06:23.240 --> 01:06:25.400
Übersicht aller, ich glaub, acht oder zehn

01:06:25.400 --> 01:06:27.500
vorhandenen und geht immer, geht er recht

01:06:27.500 --> 01:06:29.300
detailliert in der Anwendung durch,

01:06:29.300 --> 01:06:31.460
in der Motivation und auch wie das ganz konkret für Python

01:06:31.460 --> 01:06:33.420
aussieht, was er da wie zusammensetzt,

01:06:33.420 --> 01:06:35.340
das ist ein sehr spannend zu lesendes Thema

01:06:35.340 --> 01:06:37.680
und, äh, das hat mich halt

01:06:37.680 --> 01:06:39.500
vor allem deshalb beschäftigt, weil ich die letzten Wochen

01:06:39.500 --> 01:06:41.640
immer so ein bisschen wieder mit dem Thema zu tun

01:06:41.640 --> 01:06:43.580
hatte, ähm, für einen bestimmten

01:06:43.580 --> 01:06:44.600
Anwendungsfall

01:06:44.600 --> 01:06:47.720
Python nativ zu benutzen mit, äh,

01:06:47.720 --> 01:06:49.040
oder mit einer DSL

01:06:49.040 --> 01:06:51.480
und, äh, wenn man DSLs macht, äh,

01:06:51.480 --> 01:06:53.160
eine externe oder eine eingebettete,

01:06:53.160 --> 01:06:55.380
eine Domain-Specific Language,

01:06:55.380 --> 01:06:57.480
ähm, also es gibt ein Projekt,

01:06:57.480 --> 01:06:59.280
ähm, von mir, das ist das

01:06:59.280 --> 01:07:00.900
Bateau, das ist so ein Deployment-Werkzeug,

01:07:00.900 --> 01:07:03.400
ähm, und da hat, da gibt es,

01:07:03.400 --> 01:07:05.320
da gibt es sowohl einen deklarativen

01:07:05.320 --> 01:07:07.560
Anteil von wie definiere ich,

01:07:07.560 --> 01:07:09.300
wie mein, meine Anwendung

01:07:09.300 --> 01:07:10.840
deployed werden soll im Allgemeinen,

01:07:10.840 --> 01:07:13.220
äh, und dann auch so einen imperativen von,

01:07:13.220 --> 01:07:15.360
ja, wie kommt denn jetzt die Datei auf die Platte und so

01:07:15.360 --> 01:07:17.560
und, ähm, da habe ich mich

01:07:17.560 --> 01:07:19.420
damals dafür entschieden, dass ich das innerhalb

01:07:19.420 --> 01:07:21.500
von Python mache mit einer reinen API

01:07:21.500 --> 01:07:23.560
und, äh, Python ist ja

01:07:23.560 --> 01:07:25.480
keine Sprache, in der Domain-Specific

01:07:25.480 --> 01:07:27.480
Languages so eine große Rolle

01:07:27.480 --> 01:07:29.460
spielen, also in, in Ruby ist

01:07:29.460 --> 01:07:31.680
das ganz typisch, da ist die Syntax, äh,

01:07:31.680 --> 01:07:33.180
dafür geeignet, dass du das so,

01:07:33.380 --> 01:07:35.120
äh, dir zurechtlegst, dass du im Prinzip

01:07:35.120 --> 01:07:36.960
etwas hast, das sieht dir kaum noch nach Ruby aus

01:07:36.960 --> 01:07:38.860
und du musst aber keinen eigenen Parser

01:07:38.860 --> 01:07:41.540
schreiben, weil du das Ruby so, äh,

01:07:41.540 --> 01:07:43.420
sozusagen gezüchtet hast,

01:07:43.420 --> 01:07:45.400
äh, dass es dann wie was anderes aussieht

01:07:45.400 --> 01:07:47.420
und es kommt auch aus den funktionalen

01:07:47.420 --> 01:07:48.900
Sprachen, aus, ähm,

01:07:48.900 --> 01:07:51.560
Lisp und Scheme, die haben alle ja so Makros,

01:07:51.560 --> 01:07:53.340
äh, wie auch C, wo du dir dann so

01:07:53.340 --> 01:07:55.020
komplexe Makros definieren kannst, dass du

01:07:55.020 --> 01:07:57.540
im Prinzip die drunterliegende

01:07:57.540 --> 01:07:59.120
Sprache nicht mehr wiedererkennst und das ist

01:07:59.120 --> 01:08:01.460
in Python aber gar nicht so üblich, ähm,

01:08:01.460 --> 01:08:03.160
in Python gibt es eher solche,

01:08:03.360 --> 01:08:05.660
so, da nennt man die dann Domain-Specific Libraries,

01:08:05.660 --> 01:08:07.580
ähm, SQL Alchemy ist so ein Beispiel,

01:08:07.580 --> 01:08:09.280
ähm, die dir dann einfach

01:08:09.280 --> 01:08:10.720
eine sehr fluffige API

01:08:10.720 --> 01:08:13.280
liefern, die man, äh, benutzen kann

01:08:13.280 --> 01:08:15.340
und du nicht das Gefühl hast,

01:08:15.340 --> 01:08:17.640
Brüche zu haben zwischen dem, was du gerade

01:08:17.640 --> 01:08:19.360
trinkst. Also den Anspruch, irgendwie so eine,

01:08:19.360 --> 01:08:21.520
weiß nicht, Grammatik zu entwickeln, um die Probleme,

01:08:21.520 --> 01:08:23.300
die ein bisschen komplexer sind, in einfacherer

01:08:23.300 --> 01:08:24.460
Logik zu beschreiben.

01:08:24.460 --> 01:08:27.380
Ja, und dass du halt auch wenig Brüche hast,

01:08:27.380 --> 01:08:29.400
äh, äh, man nennt das halt,

01:08:29.400 --> 01:08:31.580
ähm, ähm, in der Informatik

01:08:31.580 --> 01:08:33.340
ein Impedance Mismatch, wenn du halt

01:08:33.340 --> 01:08:35.560
bei SQL Alchemy, wenn du SQL

01:08:35.560 --> 01:08:37.560
hast, äh, dann ist das halt so

01:08:37.560 --> 01:08:39.260
eine, ja, deklarative

01:08:39.260 --> 01:08:41.500
Sprache, äh, und wenn du

01:08:41.500 --> 01:08:43.220
dann aber mit

01:08:43.220 --> 01:08:45.520
dir diese Statements dynamisch

01:08:45.520 --> 01:08:47.420
zusammenbauen möchtest, dann hast du halt

01:08:47.420 --> 01:08:49.560
irgendwann nur noch, ja, ich kann irgendwelche Strings

01:08:49.560 --> 01:08:51.420
generieren, aber dann hast du keine Ahnung mehr,

01:08:51.420 --> 01:08:53.400
ob die jetzt syntaktisch korrekt sind, ob sie beim Quoting

01:08:53.400 --> 01:08:55.180
was kaputt geht und das nennt man halt

01:08:55.180 --> 01:08:57.620
einen, einen Impedance Mismatch,

01:08:57.620 --> 01:08:58.060
also ein,

01:08:58.060 --> 01:09:01.460
die Audio-Techniker können das bestimmt auf Deutsch übersetzen,

01:09:01.460 --> 01:09:03.320
ähm, äh, wenn du halt nicht, nicht passend

01:09:03.320 --> 01:09:04.580
eine Widerstände anschließt, das

01:09:04.580 --> 01:09:07.420
hat keinen guten Sound, ähm,

01:09:07.420 --> 01:09:08.920
und, ähm,

01:09:08.920 --> 01:09:11.600
dafür sind, äh, dafür nehmen viele

01:09:11.600 --> 01:09:13.080
Umgebungen Domain-Specific,

01:09:13.080 --> 01:09:15.280
Embedded Domain-Specific Languages, also

01:09:15.280 --> 01:09:17.280
die du in die eigentliche Programmiersprache

01:09:17.280 --> 01:09:19.260
halt einbetten kannst und in Python sind

01:09:19.260 --> 01:09:21.440
die Libraries eher so das Thema, wie SQL Alchemy,

01:09:21.440 --> 01:09:23.400
oder auch Requests, äh, bei denen

01:09:23.400 --> 01:09:25.440
einfach die API so geschmeidig gemacht ist,

01:09:25.440 --> 01:09:27.420
äh, dass du das Gefühl hast, äh,

01:09:27.420 --> 01:09:29.380
äh, du kannst konzeptionell und

01:09:29.380 --> 01:09:31.160
syntaktisch, äh, so wie du es runtertippst,

01:09:31.160 --> 01:09:33.020
auf einer Ebene arbeiten und hast dann nicht ständig,

01:09:33.300 --> 01:09:35.400
äh, Übersetzungsverluste dazwischen.

01:09:35.400 --> 01:09:37.320
Und, ähm, da gibt es

01:09:37.320 --> 01:09:39.140
tatsächlich inzwischen eine Reihe von, ähm,

01:09:39.140 --> 01:09:41.040
die Pack-Parser kommen halt genau aus diesem,

01:09:41.040 --> 01:09:42.900
äh, aus dem Umfeld von,

01:09:42.900 --> 01:09:45.240
ähm, du kannst eine

01:09:45.240 --> 01:09:47.480
Sprache, eine Meta-Sprache modellieren,

01:09:47.480 --> 01:09:49.300
äh, die dann wiederum sich

01:09:49.300 --> 01:09:51.120
in, äh, Python

01:09:51.120 --> 01:09:52.860
zum Beispiel schnell

01:09:52.860 --> 01:09:55.240
selber parsen lässt und ich hatte auch gesehen,

01:09:55.240 --> 01:09:57.600
es gibt Pack-Libraries

01:09:57.600 --> 01:09:59.260
für Python, die

01:09:59.260 --> 01:10:01.280
dann wiederum mit dem Python, was du

01:10:01.280 --> 01:10:02.280
halt hast,

01:10:03.280 --> 01:10:03.880
interagieren können.

01:10:03.880 --> 01:10:07.480
Ähm, das ist ja erstmal so ein bisschen

01:10:07.480 --> 01:10:09.220
Brain-Fuck-Niveau und, äh,

01:10:09.220 --> 01:10:10.740
da bin ich aber dann tatsächlich, ähm,

01:10:10.740 --> 01:10:13.160
weil ich mich gerade mit diesem BSL-Thema jetzt beschäftigt hatte,

01:10:13.160 --> 01:10:15.620
darauf angesprungen, ähm, dass die Pack-Parser

01:10:15.620 --> 01:10:17.440
und das, wie du das gerade anfasst, wohl doch

01:10:17.440 --> 01:10:19.260
irgendwie interessant sein müssen. Ähm,

01:10:19.260 --> 01:10:21.340
da gibt es auch ein paar Doktorarbeiten zum Thema, wie kann ich

01:10:21.340 --> 01:10:22.200
eigentlich schnell

01:10:22.200 --> 01:10:25.280
Sprachfeatures mal entwickeln

01:10:25.280 --> 01:10:27.700
und testen und experimentieren und, äh,

01:10:27.700 --> 01:10:29.180
genau das ist was, wo ich gerade davor stehe,

01:10:29.180 --> 01:10:31.240
will ich eine, eine verballhornte

01:10:31.240 --> 01:10:33.180
Form von Python haben, die irgendwie so ein bisschen

01:10:33.180 --> 01:10:35.600
Python ist, aber nicht, oder will ich's, äh,

01:10:35.600 --> 01:10:37.080
irgendwie eine ganz neue Sprache mal

01:10:37.080 --> 01:10:38.820
ausprobieren? Ähm,

01:10:38.820 --> 01:10:41.100
genau. Das, das war eine schöne Anregung,

01:10:41.100 --> 01:10:42.540
die ich mir aus dem Core-Sprint mitgenommen habe.

01:10:42.540 --> 01:10:45.040
Ja. Ja, warum denn, aber warum

01:10:45.040 --> 01:10:46.460
muss das eigentlich, ich meine, ähm,

01:10:46.460 --> 01:10:48.360
wenn ich da so ein anderes, ähm,

01:10:48.360 --> 01:10:49.920
populäres, äh,

01:10:49.920 --> 01:10:52.560
DevOps-Tool

01:10:52.560 --> 01:10:54.500
betrachte, so Ansible,

01:10:54.500 --> 01:10:56.740
da wird ja YAML verwendet.

01:10:56.740 --> 01:10:59.020
Äh, warum reicht, reicht

01:10:59.020 --> 01:11:01.180
das nicht aus, oder ist das, äh,

01:11:01.180 --> 01:11:02.960
ich meine, deklarativ ist das, äh,

01:11:03.080 --> 01:11:04.720
klar, man kann natürlich nicht so viel damit machen, das ist

01:11:04.720 --> 01:11:06.920
natürlich, äh. Genau, also, ähm,

01:11:06.920 --> 01:11:08.500
wir, wir machen das jetzt, also, Bateau ist

01:11:08.500 --> 01:11:10.760
interessanterweise ziemlich

01:11:10.760 --> 01:11:12.580
glatt genauso alt wie Ansible. Ich glaube,

01:11:12.580 --> 01:11:14.660
die Repos sind beide, äh, irgendwie

01:11:14.660 --> 01:11:16.620
mit zwei Wochen Versatz angefangen

01:11:16.620 --> 01:11:18.060
worden, ähm, also irgendwann

01:11:18.060 --> 01:11:20.500
2011, 2012, und, äh,

01:11:20.500 --> 01:11:22.700
wir kamen damals von schon einem

01:11:22.700 --> 01:11:24.600
deklarativen Format, wo wir ständig das Problem

01:11:24.600 --> 01:11:26.440
hatten, ähm, dass wir

01:11:26.440 --> 01:11:28.640
die deklarativen

01:11:28.640 --> 01:11:30.680
Formate, also, YAML ist ja

01:11:30.680 --> 01:11:32.980
jetzt erstmal noch kein, ist ja ein Datenformat,

01:11:32.980 --> 01:11:34.840
und noch kein Format, äh, also, insofern

01:11:34.840 --> 01:11:36.800
ist es natürlich deklarativ, weil Daten

01:11:36.800 --> 01:11:39.220
sozusagen in sich deklarativ sind, ähm,

01:11:39.220 --> 01:11:40.960
aber, ähm,

01:11:40.960 --> 01:11:42.660
da wird dann teilweise halt

01:11:42.660 --> 01:11:44.680
eine Finite State Machine

01:11:44.680 --> 01:11:46.780
mit beschrieben, also

01:11:46.780 --> 01:11:48.360
tu das, tu das, tu das,

01:11:48.360 --> 01:11:50.900
ähm, hat teilweise auch selber wieder

01:11:50.900 --> 01:11:53.140
Eigenschaften von der Programmiersprache,

01:11:53.140 --> 01:11:54.540
ähm, mit

01:11:54.540 --> 01:11:56.780
Schleifenbildung und solchen Dingen, und was,

01:11:56.780 --> 01:11:58.580
was, wo mir so ein bisschen

01:11:58.580 --> 01:12:01.240
immer wieder die Fingernägel hochrollen,

01:12:01.240 --> 01:12:02.880
ist halt, dass da drin

01:12:02.880 --> 01:12:04.920
dann auch noch Ginger-Templates abgesenkt

01:12:04.920 --> 01:12:05.180
werden.

01:12:05.180 --> 01:12:08.880
Und das, das haut mir so ein bisschen

01:12:08.880 --> 01:12:10.320
dem

01:12:10.320 --> 01:12:12.500
Pferd die Krone aus dem Fass, also,

01:12:12.500 --> 01:12:15.580
das ist einfach,

01:12:15.580 --> 01:12:16.960
da hat man dann so viel

01:12:16.960 --> 01:12:18.620
aneinander gestrickt, und, ähm,

01:12:18.620 --> 01:12:20.740
wenn man so in der DevOps-Community rumhört, ist halt

01:12:20.740 --> 01:12:22.700
auch so ein bisschen eigentlich die Aussage mit YAML

01:12:22.700 --> 01:12:24.200
ist so das unvermeidbare Übel,

01:12:24.200 --> 01:12:26.940
ähm, aber so richtig cool finden kann es eigentlich keiner,

01:12:26.940 --> 01:12:28.860
ähm, und, ähm, deswegen

01:12:28.860 --> 01:12:30.540
hatte ich mich damals entschieden zu sagen, nee, mach ich nicht,

01:12:30.540 --> 01:12:32.480
ich mach etwas, wo ich in Palten,

01:12:32.780 --> 01:12:34.680
deklarativ arbeiten kann, und aber immer, wenn es

01:12:34.680 --> 01:12:36.200
sein muss, kann ich die volle

01:12:36.200 --> 01:12:38.640
Sprachpower von Palten halt wieder rausholen, und

01:12:38.640 --> 01:12:40.700
dem Ding meinen Willen aufzwingen,

01:12:40.700 --> 01:12:40.840
ja.

01:12:40.840 --> 01:12:44.800
Naja, das ist halt, äh,

01:12:44.800 --> 01:12:46.160
ja, ja,

01:12:46.160 --> 01:12:48.680
ist natürlich dann schwieriger, irgendwelche

01:12:48.680 --> 01:12:50.540
Voraussagen darüber zu machen, was das denn dann

01:12:50.540 --> 01:12:52.660
tut, weil, äh, bei YAML kann ich

01:12:52.660 --> 01:12:54.600
das vielleicht dann noch so halbwegs, oder so, aber wenn ich

01:12:54.600 --> 01:12:54.780
jetzt...

01:12:54.780 --> 01:12:58.180
Das ist in die Tasche gelogen, weil

01:12:58.180 --> 01:13:00.620
YAML ist halt eben nur eine Oberflächenstruktur,

01:13:00.620 --> 01:13:02.660
und die tiefe Struktur drinnen,

01:13:02.680 --> 01:13:04.540
wenn das YAML selber wieder die Komplexität hat

01:13:04.540 --> 01:13:05.800
von Schleifen und solchen Dingen,

01:13:05.800 --> 01:13:08.320
und sich dann noch kombiniert mit Jinja,

01:13:08.320 --> 01:13:10.380
ähm, wo dann manchmal,

01:13:10.380 --> 01:13:12.620
je nach Werkzeug, nicht klar ist, ob das Jinja

01:13:12.620 --> 01:13:14.660
als, aus dem Jinja

01:13:14.660 --> 01:13:16.380
fällt dann das YAML raus, oder

01:13:16.380 --> 01:13:18.560
äh, das, was da dann auf der

01:13:18.560 --> 01:13:20.720
jeweiligen Zeile steht, kommt erst dann später zur Laufzeit

01:13:20.720 --> 01:13:22.800
ins Jinja rein, und dann, da können

01:13:22.800 --> 01:13:24.880
sich auch ganz fiese, äh, Kombinationen

01:13:24.880 --> 01:13:26.960
draus ergeben, und, ähm,

01:13:26.960 --> 01:13:28.560
nee, also für uns war da die,

01:13:28.560 --> 01:13:30.780
die Frage eher, das ein bisschen leichtgewichtiger

01:13:30.780 --> 01:13:32.580
zu halten, aber, weil

01:13:32.580 --> 01:13:34.880
auch das ist wieder sozusagen ein Rückgriff

01:13:34.880 --> 01:13:36.200
jetzt auf den Walrus Operator,

01:13:36.200 --> 01:13:38.720
weil Python inzwischen ja syntaktisch relativ

01:13:38.720 --> 01:13:40.240
vielfältig ist, ähm,

01:13:40.240 --> 01:13:42.560
ist da die Lesbarkeit irgendwann schon

01:13:42.560 --> 01:13:44.840
auch das Problem, wenn es zu komplex

01:13:44.840 --> 01:13:46.700
wird, und, ähm, wir haben

01:13:46.700 --> 01:13:48.640
so an der einen Stelle eben das Thema, dass wir eine Syntax

01:13:48.640 --> 01:13:50.980
brauchen, ähm, bräuchten,

01:13:50.980 --> 01:13:52.600
3.8 könnte es jetzt,

01:13:52.600 --> 01:13:54.560
wo ich gleichzeitig etwas, äh,

01:13:54.560 --> 01:13:56.760
mit einer Expression, äh, mir ranziehe

01:13:56.760 --> 01:13:57.560
und zuweise,

01:13:57.560 --> 01:14:00.520
und dann weiterverarbeite, das wäre

01:14:00.520 --> 01:14:02.480
ganz nett, aber, ähm, da überlege ich

01:14:02.480 --> 01:14:04.480
tatsächlich gerade auch eben, ob sowas wie ein

01:14:04.480 --> 01:14:06.620
Pack, äh, der sich gut integriert

01:14:06.620 --> 01:14:08.400
in die Laufzeit, äh, von dem,

01:14:08.400 --> 01:14:10.320
äh, von dem Python, was da ist,

01:14:10.320 --> 01:14:12.580
nicht die Gelegenheit gibt, da nochmal auch, äh,

01:14:12.580 --> 01:14:14.460
über eine Sprache nachzudenken, die das eigentlich

01:14:14.460 --> 01:14:15.760
besser kann. Hm.

01:14:15.760 --> 01:14:18.220
Interessant. Ja, auf jeden Fall interessant.

01:14:18.220 --> 01:14:20.260
Also auf jeden Fall sehr komplex, das war jetzt ja kein

01:14:20.260 --> 01:14:22.320
ganz Anfänger-Thema, wenn ich das so sagen darf.

01:14:22.320 --> 01:14:23.800
Viele wasseranfallen, die man ganz gut versteht.

01:14:23.800 --> 01:14:26.200
War das die, war das die, äh, das war keine

01:14:26.200 --> 01:14:27.960
Einstellungsvoraussetzung, ja, oder?

01:14:27.960 --> 01:14:29.720
Nein, das war, das war so,

01:14:29.720 --> 01:14:32.380
dass wir nur Anfänger, Anfänger,

01:14:32.380 --> 01:14:34.660
die das genau besonders besser interessiert

01:14:34.660 --> 01:14:36.260
und mehr interessiert, das, was du gerade erzählt hast.

01:14:36.260 --> 01:14:38.420
Ach, die Mischung macht's doch offensichtlich.

01:14:38.420 --> 01:14:39.740
Ja, ja, ja, absolut.

01:14:39.740 --> 01:14:42.420
Falls ihr nicht wisst, was Jinzer ist, müsst ihr das einfach mal googeln,

01:14:42.420 --> 01:14:43.600
das ist eine kleine Template-Sprache.

01:14:43.600 --> 01:14:48.460
Ja, ja, das ist, äh,

01:14:48.460 --> 01:14:50.480
ja, das ist halt auch wieder so ein ganz

01:14:50.480 --> 01:14:52.320
eigenes Feld, ich glaube, also ich meine, ich würde

01:14:52.320 --> 01:14:54.220
sogar fast sagen, das ist, äh,

01:14:54.220 --> 01:14:56.280
auch eines der, der Dinge, für die Python viel

01:14:56.280 --> 01:14:58.600
benutzt wird, halt so Infrastrukturen hochziehen,

01:14:58.600 --> 01:15:00.420
ich glaube, äh, bei, bei

01:15:00.420 --> 01:15:02.140
Facebook ist, äh, ist Python,

01:15:02.280 --> 01:15:03.580
halt sozusagen die

01:15:03.580 --> 01:15:06.760
Sprache für alle Services, die irgendwelche, äh,

01:15:06.760 --> 01:15:08.260
operativen Geschichten, äh,

01:15:08.260 --> 01:15:10.080
machen hintendran und so,

01:15:10.080 --> 01:15:12.280
und, äh, es gibt ja noch diverse, es gibt

01:15:12.280 --> 01:15:14.320
Ansible, wird ja auch viel benutzt, oder halt,

01:15:14.320 --> 01:15:16.240
äh, OpenStack und, ach, weiß der Teufel,

01:15:16.240 --> 01:15:18.320
ganz viele Sachen, ähm,

01:15:18.320 --> 01:15:19.380
ja,

01:15:19.380 --> 01:15:22.380
aber es ist nicht so ein richtig einfaches Problem,

01:15:22.380 --> 01:15:23.020
irgendwie.

01:15:23.020 --> 01:15:26.320
Ja.

01:15:26.320 --> 01:15:28.820
Ja.

01:15:28.820 --> 01:15:30.460
Ja.

01:15:30.460 --> 01:15:32.180
Ja, was haben wir denn

01:15:32.180 --> 01:15:34.000
Ja, habt ihr noch was auf der Liste, haben wir heute noch was auf der Liste?

01:15:34.000 --> 01:15:35.460
Ja, meine Liste ist gerade unten angeschlagen.

01:15:35.460 --> 01:15:37.840
Ja, gut. Äh,

01:15:37.840 --> 01:15:40.120
hatten wir noch, wir könnten noch irgendwelche Dinge picken,

01:15:40.120 --> 01:15:42.120
zum Beispiel, könnten wir noch machen. Ja, der Fick der Woche

01:15:42.120 --> 01:15:44.120
sind natürlich dran, oder, äh, der Monat muss ja fast

01:15:44.120 --> 01:15:45.400
im Quartal lagen, solange wir

01:15:45.400 --> 01:15:46.880
den Teufel gebraucht haben.

01:15:46.880 --> 01:15:49.120
Wir versprochen wieder ein bisschen

01:15:49.120 --> 01:15:51.360
äh, äh, ja.

01:15:51.360 --> 01:15:54.000
Ja, ähm,

01:15:54.000 --> 01:15:56.000
ich hab eine ganz nette Geschichte gesehen,

01:15:56.000 --> 01:15:58.000
ich, ähm, normalerweise, also, wäre es ja Software,

01:15:58.000 --> 01:16:00.220
aber das, äh, äh, da hab ich

01:16:00.220 --> 01:16:02.160
jetzt grad nix, ähm, aber,

01:16:02.160 --> 01:16:04.240
äh, eine andere, eine andere Geschichte,

01:16:04.240 --> 01:16:06.440
die auch ganz, äh, äh,

01:16:06.440 --> 01:16:08.200
äh, nett ist, finde ich, ist, es gibt

01:16:08.200 --> 01:16:09.520
jetzt ein Django-Forum.

01:16:09.520 --> 01:16:11.320
Äh,

01:16:11.320 --> 01:16:14.100
ja, überhaupt, Django ist auch ganz, ganz

01:16:14.100 --> 01:16:16.080
interessant, gibt's jetzt, äh, bald wahrscheinlich

01:16:16.080 --> 01:16:18.240
irgendwie, äh, eine neue

01:16:18.240 --> 01:16:20.060
Version, und da gibt's auch so Async,

01:16:20.060 --> 01:16:21.980
genau, ja, ja. Async Django 3.

01:16:21.980 --> 01:16:24.060
Äh, Async, äh, erste Schritte dahin,

01:16:24.060 --> 01:16:26.160
ähm, und das, das

01:16:26.160 --> 01:16:28.140
wird auch alles, äh, das wird auch alles

01:16:28.140 --> 01:16:30.160
noch sehr spannend, und, äh, es gibt jetzt

01:16:30.160 --> 01:16:32.140
halt auch ein, äh, ein, ein,

01:16:32.140 --> 01:16:34.280
ein Forum, wo man sich austauschen

01:16:34.280 --> 01:16:36.360
kann, und das tatsächlich ziemlich,

01:16:36.360 --> 01:16:38.020
äh, nett aussieht, muss ich sagen.

01:16:38.020 --> 01:16:40.160
Also, das, äh, äh, da

01:16:40.160 --> 01:16:41.480
sind, ähm, ja, ja,

01:16:41.480 --> 01:16:44.140
ja, viele der, der, äh,

01:16:44.140 --> 01:16:46.200
ja, Leute, die da viel

01:16:46.200 --> 01:16:48.100
machen im Projekt, äh, unterwegs,

01:16:48.100 --> 01:16:50.120
und, äh, es gibt viele interessante Diskussionen, ich war

01:16:50.120 --> 01:16:52.280
sehr überrascht, äh, was da alles so geht,

01:16:52.280 --> 01:16:53.640
weil normalerweise ist ja immer Forum

01:16:53.640 --> 01:16:56.120
vielleicht irgendwie nicht etwas, wo

01:16:56.120 --> 01:16:58.120
man jetzt unbedingt, äh, hin will, aber da,

01:16:58.120 --> 01:17:00.080
das ist, war, war echt toll, und, äh, also,

01:17:00.080 --> 01:17:01.460
wenn man sich mit Django beschäftigt, und da,

01:17:02.120 --> 01:17:04.320
Spaß dran hat, dann kann man sich das mal angucken, das ist, äh,

01:17:04.320 --> 01:17:05.400
wirklich nett, ja.

01:17:05.400 --> 01:17:08.760
Okay. Äh, ich hatte, äh,

01:17:08.760 --> 01:17:10.320
gehört an einen, tatsächlich an einem der Django Cars,

01:17:10.320 --> 01:17:12.320
hat irgendjemand, äh, Text-Blob erwähnt, das fand ich irgendwie

01:17:12.320 --> 01:17:14.720
ganz interessant, äh, das ist irgendwie für, äh,

01:17:14.720 --> 01:17:16.380
ähm, ja, Sprachanalyse sehr,

01:17:16.380 --> 01:17:18.420
sehr wichtig, irgendwie auf NRTK aufgesetzt,

01:17:18.420 --> 01:17:20.480
und macht dann irgendwie so Tags

01:17:20.480 --> 01:17:22.680
an, äh, ja, setzt Satzteile

01:17:22.680 --> 01:17:24.200
dran, und Sentimentanalyse, und

01:17:24.200 --> 01:17:26.100
Tokenisierung nett, und sowas.

01:17:26.100 --> 01:17:28.340
Da wollte ich nochmal ein bisschen tiefer

01:17:28.340 --> 01:17:30.340
reingucken, das sah sehr, sehr spannend aus, und, äh,

01:17:30.340 --> 01:17:32.100
das soll wohl ganz cool

01:17:32.100 --> 01:17:34.100
auch funktionieren für, ja, größere

01:17:34.100 --> 01:17:36.220
Text-Operationen, wahrscheinlich

01:17:36.220 --> 01:17:37.720
eher mit Englisch, aber, ja.

01:17:37.720 --> 01:17:40.020
Das ist mein Pick der Woche.

01:17:40.020 --> 01:17:41.880
Text-Blob, okay.

01:17:41.880 --> 01:17:44.380
Christian? Hast du auch

01:17:44.380 --> 01:17:46.160
einen? Die Woche ist zu neu, ich

01:17:46.160 --> 01:17:46.920
hab noch keinen Pick.

01:17:46.920 --> 01:17:52.000
Ah, nee, ähm, ich glaub,

01:17:52.000 --> 01:17:53.560
die Packs letzte Woche waren mein Pick.

01:17:53.560 --> 01:17:56.140
Ja, äh, ja, das liegt auch mal

01:17:56.140 --> 01:17:57.860
angucken, ja. Ein ganzes Pack, statt

01:17:57.860 --> 01:17:59.900
einen Packs aufpassen. Ja, äh, genau.

01:17:59.900 --> 01:18:02.080
Ja, ähm,

01:18:02.080 --> 01:18:03.660
dann sind wir tatsächlich wieder am Ende dieser Folge

01:18:03.660 --> 01:18:06.100
angelangt, dieser wunderschönen, ähm, wo auch

01:18:06.100 --> 01:18:08.100
immer ihr gerade seid, wo auch immer ihr uns gehört habt,

01:18:08.100 --> 01:18:10.120
oder, ne, schönen Tag, schönen Abend, schöne Nacht,

01:18:10.120 --> 01:18:12.200
und, äh, so weiter.

01:18:12.200 --> 01:18:14.140
Bleibt uns gewogen, habt viel

01:18:14.140 --> 01:18:15.880
Spaß, kommt gut rein, wir hören uns.

01:18:15.880 --> 01:18:17.960
Ach so, bevor ich das vergesse, ich wollte noch fragen,

01:18:17.960 --> 01:18:19.920
wenn ihr Fragen habt, oder sowas, ne, wir wollten

01:18:19.920 --> 01:18:21.960
ja nächstes Mal eine große Frage-Folge machen, wo wir

01:18:21.960 --> 01:18:23.820
den Jochen löchern, und, ähm, ganz

01:18:23.820 --> 01:18:25.840
einfach eine Frage stellen, die in einer Minute alle

01:18:25.840 --> 01:18:28.320
antworten, falls ihr da irgendwelche habt, dann, äh,

01:18:28.320 --> 01:18:30.060
schickt die bitte. Ich kann

01:18:30.060 --> 01:18:31.180
dann immer noch hinterhertreten.

01:18:32.080 --> 01:18:35.040
Mich löchern, ja, das ist eine gute Idee.

01:18:35.040 --> 01:18:36.420
Ja, genau, ja, das machen wir.

01:18:36.420 --> 01:18:39.020
Und, ähm, deswegen, wenn ihr Fragen habt, einfach raus damit.

01:18:39.020 --> 01:18:41.140
Ach so, und falls ihr, ähm, noch eine andere

01:18:41.140 --> 01:18:42.940
Geschichte, ähm, wir wollten nämlich auch mal was über

01:18:42.940 --> 01:18:45.160
die Standard-Library machen, also so ein bisschen erzählen,

01:18:45.160 --> 01:18:46.880
was es so gibt. Ja, das war auch eine Anregung,

01:18:46.880 --> 01:18:48.820
die wir per Mail bekommen haben, und das war eigentlich,

01:18:48.820 --> 01:18:50.920
fanden wir ganz gut, äh, die Idee, und da

01:18:50.920 --> 01:18:52.340
vielleicht können wir da einfach mal so durchgehen, weil

01:18:52.340 --> 01:18:54.800
da sind ja viele verborgene Schätze eigentlich drin,

01:18:54.800 --> 01:18:56.940
äh, die man mal irgendwie näher betrachten könnte.

01:18:56.940 --> 01:18:58.720
Und falls ihr auch da irgendwie einen Wunsch habt, was wir denn

01:18:58.720 --> 01:19:00.560
besonders mal benutzen sollen, also auch raus damit.

01:19:00.560 --> 01:19:01.360
Das, äh, ja.

01:19:02.680 --> 01:19:03.460
Ja, vielen Dank, Tony,

01:19:03.460 --> 01:19:04.360
dass du da warst, vielen Dank, Christian.

01:19:04.360 --> 01:19:05.740
Sehr gerne, jederzeit wieder.

01:19:05.740 --> 01:19:07.320
Wieder sehr schön, ich hab wieder viel gelernt heute.

01:19:07.320 --> 01:19:10.540
Ja, bleibt uns gewogen.

01:19:10.540 --> 01:19:12.800
Dann hoffen wir einfach mal, dass wir es ein bisschen schneller

01:19:12.800 --> 01:19:13.840
demnächst wieder hinkriegen.

01:19:13.840 --> 01:19:15.900
Ja, wir werden uns diesmal nicht wieder zweieinhalb Monate

01:19:15.900 --> 01:19:16.320
Zeit lassen.

01:19:16.320 --> 01:19:18.880
Alles klar, gut.

01:19:18.880 --> 01:19:20.380
Ja, bis dann. Tschüss.
