Transkript: Was ist neu in Python 3.15? Vom Textadventure über FrozenDict bis zu Djangos CalVer

· Zurück zur Episode

Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.

Dominik

Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast.

Dominik

Lange nicht gehört, schön, dass ihr da seid.

Hi Jochen.

Jochen

Ja, halli, hallo, hallo Dominik.

Dominik

Hi Johannes.

Hallo zusammen.

Dominik

Ja, welche Episode das gerade ist, wissen wir selber nicht so genau.

Dominik

Wir haben nämlich so ein paar aufgenommen und nicht veröffentlicht und irgendwas mit 70, 71, 72.

Jochen

Irgendwie sowas.

Jochen

Wir legen das in Ex post legen wir die Einzelne.

Dominik

Ich würde sagen, wir stellen einfach um auf Calver.

Jochen

Ist das der 2610?

Das ist auch gefährlich.

Jochen

Es kann ja sein, dass dann wieder liegen bleibt, dann stimmt auch das nicht mehr.

Okay, stimmt.

Jochen

Aber das wäre auch blöd.

Jochen

Ich meine, wir reden jetzt, wir haben nämlich jetzt ein Thema, das ist aktuell und 3.15, deswegen sollte man das auch schnell veröffentlichen, sonst.

Dominik

Ja, Python 3.15 ist tatsächlich veröffentlicht.

Jochen

Genau.

Dominik

Könnt ihr spielen, habe ich gehört.

Jochen

Ja.

Dominik

Es gibt ein wundervolles Adventure, mit dem ihr das alles ausprobieren könnt.

Dominik

Ich finde, das muss man immer als allererstes sagen, weil das ziemlich cool ist.

Dominik

Obwohl es schwierig ist, also es ist ein Text-Adventure.

Dominik

Ich weiß nicht, wie lange Text-Adventures bei euch her sind.

Dominik

Oder ob ihr aus einer Zeit kommt, wo es das schon gar nicht mehr gab.

Dominik

Ist aber eigentlich eine nette Art und Weise, finde ich, jetzt so neue Sachen zu lernen.

Jochen

Ja, wie startet man das denn?

Dominik

Du musst was in der Kommandozeile eingeben.

Jochen

Also ich probiere das mal.

Jochen

UVX.

Dominik

Minus minus Python 3, 15 WhatsApp.

Dominik

Und dann, äh, ja.

Jochen

Ja, und dann gibt es so eine richtig schöne.

Dominik

Genau, so ein Foyer, mit was alles Neues in Python, was so ein paar Hacks waren, die gefixt worden sind und so.

Dominik

Und dann kann man sich selber so ein bisschen durchnavigieren.

Jochen

Es gibt eine Map F2.

Ja.

Schick.

Dominik

Toll, ne?

Dominik

Okay.

Dominik

Ja, wollen wir direkt mal anfangen mit Features oder so?

Dominik

Oder wie geht es euch erstmal so sagen?

Oder News News?

Jochen

Es gab viele News.

Jochen

Ja, viele News, aber wir konnten eigentlich kaum über alles reden.

Dominik

Ja, wir müssten auf die News aus den anderen noch nachholen, die wir noch offen hatten.

Dominik

Aber naja.

Johannes

News sind noch gezwungenermaßen immer Neuigkeiten, oder?

Johannes

Also kann sich eh nur auf die letzten paar Wochen beziehen.

Okay.

Schieß los.

Johannes

Haben wir da was?

Jochen

Also Python 3015 ist rausgekommen.

Johannes

Oh, oh, das ist ja spannender Zerma.

Jochen

Ja, ansonsten, ich glaube, also.

Dominik

Ich glaube, wir bringen uns heute auf 3.15.3.15.

Jochen

Ja.

Dominik

Was ist denn da so schönes Neues in Python 3.15 erschienen?

Johannes

Ja, da sind viele.

Johannes

Ich habe mir vorhin mal die Release-Notes durchgeschaut.

Johannes

Also abgesehen von dem Text-Adventure.

Johannes

Willst du da noch länger drüber sprechen?

Dominik

Ne, ich fand es ziemlich schwierig und ich habe es ehrlicherweise nicht ganz so weit geschmied in meine Zeit und dann habe ich auch nur die Release-Notes weitergelesen.

Dominik

Aber ich bin über die PTH-Files gestolpert, wo es ja eine Erinnerung gab, dass man nicht mehr einfach irgendwie ein Paket ausliefern kann, was arbitäre Dinge ausführt.

Johannes

Habt ihr früher Text-Adventures gespielt?

Johannes

Seid ihr so alt?

Jochen

Ja, ich schon.

Oh, Jochen, welches hast du denn gespielt?

NetHac.

Jochen

Bitte?

Jochen

NetHac zum Beispiel.

Dominik

NetHac.

Johannes

Ja, NetHac ist jetzt nicht ein Text-Adventure in dem Sinne.

Jochen

Achso, achso, du meinst Text-Adventure im Sinne von.

Jochen

Ja, ja, ja, das ist schon auch Textbasiert aber.

Ja, okay.

Jochen

Lass mal, äh, du meinst Text-Adventure tatsächlich sowas wie Sack McCracken oder so, wo man einfach nur Text aus dem Begriff hat.

Das ist auch schon grafisch.

Also ich habe

Johannes

irgendwann mal zu Weihnachten die Zorg-Adventures auf CD bekommen, da gab es schon CD-Laufwerke.

Johannes

Und die sind natürlich im Vergleich zu dem, was es dann grafisch gab, nicht ganz so beeindruckend.

Und bin da nie reingekommen.

Ich weiß nicht, das hat mich nie.

Dominik

Ja, ich fand es auch so ein bisschen.

Dominik

Also Talk habe ich tatsächlich auch mal so ein bisschen nochmal getestet, aber eher auch so Legacy, weil als ich groß wurde, da gab es schon, was gab es da schon?

Dominik

Rick Dangerous oder sowas.

Dominik

Okay.

Dominik

Und das war natürlich viel wichtiger, dass man so 64.

Johannes

Das weiß vermutlich auch niemand, was das ist.

Das ist so ein bisschen runter, oder?

Johannes

Interessanterweise gibt es auch heutzutage immer noch sehr viele Text-Adventures und genauso wie wir im goldenen Zeitalter der klassischen Musik leben, es gibt heutzutage mehr klassische Musik, als es je in der Geschichte der Menschheit gab, sind wir auch im goldenen Zeitalter der Text-Adventure.

Johannes

Es gibt viele, sagen wir mal, Enthusiasten, die spielen und herstellen und bewerten und man kann es auf H.I.O.

kann man sehr viele finden.

Johannes

Und vielleicht landen ja ein oder zwei in den Shownotes.

Dominik

Ich glaube, das kann auch in Python schreiben, oder?

Johannes

Ja, da gibt es, also es gibt tatsächlich Dialekte, die extra dafür da sind, aber es gibt natürlich auch, kann man auch in Python machen.

Johannes

Wie wir ja gesehen haben, ja, also das What's Newt ist ja, das ist ja, was Textadventure angeht, das ist ja schon luxuriös.

Dominik

Oh, ich habe gar nicht geschaut, was das geschrieben wurde, was das Text-Gepfe ist.

Grafik und das finde ich ziemlich cool.

Johannes

Nee, ist nicht Texture, hat keine Abhängigkeit.

Johannes

Hat nur Abhängigkeit zu Pyrefly.

Dominik

Ja, damit man schilde Tests machen kann für Typen.

Dominik

Es gibt nämlich ein paar neue Typen in Python 3.15.

Dominik

Oder was ist das?

Dominik

Form-Type, Type-Form?

So Dinge, die das Typen des Damen und Anfangs.

Dominik

Ich wollte mir das einfach einfügen.

Jochen

Ich finde, man kann tatsächlich mit dem ersten Ding anfangen, weil das halt auch einen Bezug dazu hat, worüber wir von einem Jahr oder so.

Dominik

Ja, da haben wir

Johannes

auch gedacht, dass

Jochen

wir geredet, ja, genau.

Jochen

Ich dachte so, genau, das Problem hatte ich und jetzt hat es irgendjemand eingebaut.

Jochen

Voll gut.

Jochen

Also es gibt jetzt einen Central Built-in-Type, wenn man nicht einen None verwenden möchte, weil man None für was anderes braucht, wenn es zum Beispiel tatsächlich ein erlaubter Wert ist, dann was macht man denn da?

Jochen

Und da gibt es jetzt was eingebautes.

Und das ist aber alles, oder?

Also ich meine, ist da noch mehr?

Jochen

Nee, dahinter.

Jochen

Mehr ist dann, also du kannst dem jetzt Namen geben und dann das eben, der Typ davon, den kannst du halt auch dann checken, aber das war es eigentlich schon, ja.

Johannes

Also so wie wenn man vorher Class Sentinel gemacht hätte und passed.

Johannes

Class Sentinel Pass.

Johannes

Das sind die drei zwei Zeiten, die sie eingefügt haben.

Jochen

Nee, nee, wie gesagt, man kann eben halt, also es ist schon ein bisschen mehr.

Jochen

Also ja, es ist nicht viel mehr, aber ja.

Okay.

Johannes

Aber das habe ich mir gedacht, das macht dich froh, weil das hatten wir

ja schon.

Jochen

Ja, ich bin inzwischen auch wieder zurück zu Nan, weil niemand, also immer versuche ich den Leuten zu erklären und warum und alle gucken mich so verständnislos an.

Jochen

Und dann so habe ich das Gefühl, wenn ich mich umdrehe oder so, dann kommen dann so Gesten so wie, ja, okay.

Jochen

Lass dir mal über sein Auto- und Sentinel-Zeugs reden.

Und dann doch None.

Jochen

Und dann verwenden sie alle einen Code und dann doch wieder None und dann sage ich dann in Code-Reviews, du musst aber hier Auto verwenden oder so.

Achso, erklär doch nochmal.

Jochen

Auto, ja, genau.

Jochen

Ich habe es aufgegeben, es funktioniert nicht.

Dominik

Jetzt kannst du den Leuten sagen, hey, Sentinel.

Johannes

Du musst einfach Pepsi661 lesen.

Johannes

Jetzt machst du halt mal und dann kennen

wir wieder.

Jochen

Ja, ich weiß nicht, vielleicht hilft es auch nicht.

Johannes

Ich finde es gut, wenn man Nerdigkeit durch Arroganz ersetzt.

Johannes

Wenn du Pepsi 661 nicht verstehst, weißt du, dann kann ich auch nicht mit dir zusammenarbeiten.

Ach ja.

Johannes

Ja, okay.

Johannes

Also es ist keine riesige Änderung, aber es ist doch irgendwie schön, dass es scheinbar mindestens noch eine andere Person gibt, die das Problem auch hat.

Johannes

Und das finde ich immer gut zu wissen, wenn man nicht der einzige ist.

Johannes

Ich habe ja schon viele so Bibliotheken geschrieben, wo ich mir gedacht habe, das wäre doch total gut, wenn sowas mal existieren würde und nur um dann herauszufinden, dass ich eigentlich der Einzige bin auf der ganzen Welt, der dieses Problem hat.

Jochen

Ja, passieren wir auch häufiger.

Jochen

Also das finde ich auch faszinierend.

Jochen

Das ist halt irgendwie, wenn man sich so überlegt, die Sachen, die irgendwie andere Leute interessieren.

Jochen

Also das betrifft sowas wie Stack Overflow Fragen und Antworten.

Jochen

Also ich habe gutes Stack Overflow, da bin ich auch seit 15 Jahren, oder noch länger nicht mehr, ja, aber irgendwie, ich habe mal eine Zeit lang da Haufen Fragen gestellt und auch Antworten gegeben.

Jochen

Und es gibt, also ich habe zum Beispiel für eine Frage Superistischen Goldbadge irgendwie gekriegt und das haben irgendwie zehntausende Leute diese Frage angeguckt.

Jochen

Und es ist, ich denke, also, warum?

Das ist wirklich echt totaler Quark.

Jochen

Oder auch Antworten, die Leute total interessant fanden, wo ich mir denke, okay.

Dominik

Ich muss nur sagen, was für eine Frage das war, Jochen.

Jochen

Ich weiß es ehrlich gesagt nicht mehr so genau.

Jochen

Aber das war wirklich das Gefallen.

Dominik

Ist das noch online, die Plattform?

Dominik

Schreibt uns

Johannes

einen Kommentar, was ihr denkt, was Jochen damals geantwortet hat.

Dominik

Ist die Plattform schon tot?

Dominik

Das ist so ein MySpace-Problem, oder?

Jochen

Ich weiß nicht, ich meine, die ist noch online, das gibt es alles noch.

Jochen

Und dann habe ich auch mal Antworten.

Jochen

Ja, so eine meiner bestbewertetste Antwort ist auch so was völlig banales.

Jochen

Und dann habe ich teilweise lange Texte oder habe ich geschrieben, super, irgendwie habe ich mir lange Gedanken drüber gemacht oder so, so drei Leute interessiert es oder irgendwie auch niemand.

Jochen

Also ja, man

kann es.

Dominik

Meine beste Antwort war irgendwas in Assembler.

Dominik

Oder war es eine Frage?

Dominik

Weiß ich nicht mehr genau.

Jochen

Ja, eine

Dominik

Nachfrage zu irgendwas, ja.

Jochen

Ganz schwer einzuschätzen, ob das Leute interessiert oder bei GitHub-Projekten ganz genauso.

Jochen

Also das beliebteste Projekt irgendwie von mir ist irgendwie so ein für so eine Kochgeschichte.

Jochen

Das haben wir mal an einem Wochenende so irgendwie gebaut und so, yay, alles super, voll gut.

Dominik

Und meine Karre, der ist online.

Dominik

Ich habe mich noch gar nicht geteilt, ne?

Dominik

Mein Recipes ist online.

Egal.

Dominik

Kann ich noch gerade drauf kochen.

Jochen

Ja, es ist immer sehr schwer.

Jochen

Also rauszukriegen, was so Leute interessiert oder was irgendwie gut ankommt oder nicht, das ist, kann man nicht.

Jochen

Also ich kann das nicht vorhersagen.

Jochen

Keine Chance.

Völlig überraschend.

Dominik

Aber dann brauchst du vielleicht nur noch ein tolles Logo wie der neue Profiler Tachion.

Dominik

Oder Terry, wie schricht man ihn aus?

Jochen

Tachion.

Dominik

Also es gibt einen neuen Python-Profiler.

Johannes

Bei solchen Wörtern bin ich gnadenlos deutsch.

Das ist egal, wie die Amerikaner oder die Briten das aussprechen, das heißt Tachion.

Tachion?

Tachion.

Dominik

Ja, was macht der denn?

Dominik

Hat den jemanden mal ausprobiert?

Nee.

Jochen

Nee, hab's auch noch nicht ausprobiert.

Jochen

Also ich meine, das ist das nicht, dass hier, äh, wie heißt er noch?

Jochen

Pablloch.

Jochen

Spielzeug von Pablo, genau.

Jochen

Und ich meine, der ist, ähm, macht es halt statistisch.

Jochen

Also normalerweise ein Profiler.

Johannes

Ja, ja, das steht ja auch in den Notizen.

Jochen

Macht aber dann, das Problem beim klassischen Profiler ist, macht halt alles auch langsamer und halt Einfluss auf das Laufzeitverhalten, was ja irgendwie doof ist, weil muss halt immer mit irgendwie alles mitschleifen.

Jochen

Und Tachion guckt sich halt nur periodisch den gesamten Call-Trace von der Applikation an und zählt dann einfach.

Jochen

Und sagen, das ist halt natürlich wesentlich weniger invasiv, das heißt, aber es ist halt, es liefert dann halt nur statistische Ergebnisse.

Jochen

Also man muss annehmen, dass wenn ich jetzt ab und zu mal mit den kompletten Calltrace von der Gesamtapplikation angucke, dass die Sachen, die halt viel Zeit verbrauchen, dann halt da auch häufig auftauchen.

Jochen

So, wenn ich das annehme, dann ja.

Dominik

Naja, also das klingt so ein bisschen so, als wäre das schon an 313, 314 irgendwie benutzt worden.

Dominik

Das wäre es dann irgendwie jetzt dann nach draußen geschafft, weil diese statistischen Optimierungen in C gab es ja schon in den letzten Python-Releases.

Johannes

Ja, und also ich meine, es gibt ja immer wieder Sachen, die sich von der Welt in die Standardbibliothek reinbewegen.

Johannes

Das ist ja jetzt nichts ganz Neues.

Johannes

Das gilt natürlich nicht für Programme, die nur eine Sekunde brauchen.

Johannes

Also es geht nur Programme, die länger laufen, weil eben diese statistische.

Johannes

Aber hier sind schöne Key-Features drin.

Johannes

No Code Modification required, also man muss gar nichts machen.

Johannes

Flexible Target Modes.

Johannes

Man kann einfach einen bestehenden Prozess sich da dran klatschen.

Johannes

Und das ist natürlich für operative Sachen total gut, wenn man irgendwo einen Django-Prozess laufen hat oder irgendwo einen was weiß ich.

Johannes

Ein Salary-Prozess oder was weiß ich, dann ist es natürlich sehr cool, wenn man da einfach sagen kann, den hier jetzt mal für die nächsten fünf Minuten überwachen, bitte.

Johannes

Das macht es schon mächtig.

Johannes

Für die Use Cases natürlich, für die man da hat.

Johannes

Also für ein Skript, was vier Sekunden braucht, statt zwei Sekunden, würde ich einen traditionellen Profiler verwenden.

Johannes

Da reicht der statistische Boden nicht aus dafür.

Johannes

Ja, das ist doch schön, aber Profiling ist natürlich auch so eine, das ist schon so eine Profisache, oder?

Würde ich sagen?

Das ist schon sowas, was.

Dominik

Und damit du sich Mikrosekunden abweichen messen kannst und dann rausfindest, ob da irgendwie so ein Attack eingefunden hat.

Johannes

Das ist natürlich für die ganz großen Profis, wenn auf einmal der SSH-Login länger dauert und man dann eine globale Verschwörung rausfindet.

Dominik

War ein netter Use Case.

Dominik

Ist mir noch nicht gekommen.

Tja.

Johannes

Ich muss auch sagen, Profiler sind so ein Tool, wo das jetzt das Gegenteil von dem, was die, was wir eben hatten.

Johannes

Da sagen alle Leute, das ist was total Tolles und wichtiges und wenn du Performance-Probleme hast, musst du ja immer sofort einen Profil auspacken.

Johannes

Mache ich eher selten.

Jochen

Ja, ich bin es auch selten.

Jochen

Also es gibt manchmal Situationen, in denen.

Jochen

Aber das Problem ist auch mal, ich brauche es so selten, dass ich mir auch nie so richtig merke, wie das alles gut funktioniert und was man da machen kann oder so, sodass es halt dann.

Dominik

Deine Nerdcredibility leidet gerade enorm.

Dominik

Bitte?

Dominik

Deine Nerd Credibility

leidet gerade.

Johannes

Nee, das liegt daran, dass unser Code halt immer schon optimal ist, Dominik.

Johannes

Deshalb brauchen wir die Notprofile.

Jochen

Ja, aber dass man so wirklich Performance Probleme hat, ist halt einfach nicht so häufig.

Jochen

Also der bei mir, so habe ich jetzt einfach nicht so.

Jochen

Ja, passiert es halt seltener.

Jochen

Ja, okay,

Johannes

Performanceprobleme habe ich schon, aber die sind dann bei mir meistens, naja, der Unterschied zwischen O von N hoch 3 und O von Log N ist halt sehr deutlich sichtbar und meistens weiß man das ja dann auch.

Johannes

Oder man findet es dann sehr schnell raus, ohne tief reinprofiern zu müssen.

Johannes

Es ist ja nicht so, dass wir Anwendungen schreiben, ja, die irgendwie ein Frame-Budget haben, die in 16 Millisekunden fertig sein müssen.

Johannes

Alle 60 Mal pro Sekunde, sondern es ist ja mehr so ein paar, wenn hier viele CSVs in dem Verzeichnis liegen, dann dauert es manchmal fünf Minuten statt nur vier Minuten.

Dominik

Aber vielleicht ist es doch relevant, ne?

Dominik

Vielleicht macht es Sinn.

Dominik

Also für alle solche Sachen ist das super.

Vielleicht, ja.

Johannes

Okay, ich habe ein cooles Feature.

Johannes

Das steht unter Interpretor Improvements.

Johannes

Ist kein Feature, es steht unter Interpreter Improvements.

Johannes

Und da brauche ich eure Hilfe, weil ich dachte, es wäre schon seit Python 3.0 so.

Johannes

Python now uses UTF-8 as the default encoding.

Dominik

Das habe ich auch gedacht, dass das schon so ist.

Johannes

Was ist daran neu?

Johannes

Ist das jetzt anders?

Johannes

Ist es nicht schon seit seit, also Python 3 gibt es jetzt auch schon seit mehreren Jahren.

Ist das nicht so?

Jochen

Ja, also hätte ich jetzt auch erwartet.

Jochen

Ich überrascht es auch, dass das irgendwie nicht default gewesen sein soll.

Jochen

Was war denn der Default?

Jochen

Auch lustig.

Jochen

Die als Beispiel in dem PEP haben sie irgendwie Open Flying Circus Txt.

Wo das wohl herkommt.

Das wäre auch interessant.

Jochen

Ja, ich weiß es nicht.

Jochen

Ehrlich gesagt, keine Ahnung, was der bisherige Default war, aber ich dachte auch, dass es bisher schon so gewesen wäre.

Da muss man die KI fragen, vielleicht weiß sie ja nicht.

Jochen

Ja, okay, kann ich leider nicht so schnell.

Jochen

Ja.

Jochen

Keine Ahnung.

Johannes

Ja, also ich, das habe ich nicht verstanden, weil ich dachte, das wäre seit Python 3.0 so.

Johannes

Das war für mich eins der großen Features, dass man auf einmal nicht mehr zwischen String und Bytes, äh auf einmal zwischen String und Bytes unterscheiden kann und dass die nicht mehr

Jochen

gemischt sind.

Jochen

Das ist Unicode, aber die Frage ist, wie die encoden wahrscheinlich

Dominik

System, Locale oder sowas?

Ich weiß nicht.

Dominik

Hier steht unter Windows meistens CP1252.

Jochen

Ja, das ist ja vor Unicode, das ist ja ein ganz altes, schreckliches Format.

Johannes

Aber das, äh, da fällt mir tatsächlich doch noch was Interessantes ein, was man sagen kann.

Johannes

Python 3 ist ja jetzt nur wenige Jahre alt.

Johannes

Und es gibt ja trotzdem immer noch so ein oder zwei große Python 2-Installationen oder Python 2-Benutzer.

Johannes

Und einer der großen, bekannten Python 2 Benutzer war Eve Online.

Johannes

Ist ein großes, ist ein großes 3D-Spiel im Weltraum.

Johannes

Und die, also die haben natürlich einen 3D-Client, ja, und der ist in irgendeiner Game Imagine geschrieben, keine Ahnung welcher.

Johannes

Aber deren Serverinfrastruktur lief lange Zeit auf Python.

Johannes

Die haben 2003 angefangen mit Stackless Python.

Johannes

Falls sich daran noch jemand erinnern kann.

Johannes

Ach, die guten alten Zeiten.

Johannes

Und die haben dieses Jahr tatsächlich einen Artikel veröffentlicht, dass sie jetzt mit der Migration anfangen.

25.08.

Johannes

noch gar nicht so lange her, haben sie veröffentlicht.

Johannes

Wir fangen jetzt an, zu Python 3 zu bewegen.

Johannes

Und das nur wie viele?

Johannes

12, 13, 14 Jahre nachdem es.

Dominik

Wahrscheinlich Hilfe von L<unk>M's sondern

Jochen

ja, aber es ist wahrscheinlich eine gute Idee.

Jochen

Ist so allmählich.

Johannes

Ja, die haben wohl sehr lange auch noch selber diesen, die mussten dann ja irgendwann anfangen, den Interpreter selber zu pflegen, weil da halt einfach Sachen nicht mehr reingekommen sind und das haben sie jetzt schon offenbar keinen Bock mehr drauf.

Johannes

Was man verstehen kann.

Also ich kann es verstehen.

Dominik

Also da geben sie Performance-Boosts an.

Jochen

Ja.

Jochen

Da ist auch einiges passiert inzwischen.

Johannes

Vielleicht finden sie auch einfach keine Programmierer mehr, die noch Python 2.

Wie Python 2 können

oder wollen will ich nicht.

Jochen

Ja, genau.

Jochen

Also ja, ansonsten, was haben wir noch?

Jochen

Wir haben noch.

Dominik

Wunderschönes Unpacking von List

Comprehension Systems.

Jochen

Das ist sehr schön.

Dominik

Das habe ich früher auch schon versucht, mal zu basteln, das ging aber nicht.

Ja, erklärt mir das mal.

Johannes

Das habe ich nicht verstanden, was sich da verändert hat.

Dominik

Du hast verschachtelte Objekte oder sowas, ne?

Eine Liste.

Dominik

Und dann möchtest du quasi die anpacken.

Dominik

Da musste man vorher immer was Kompliziertes schreiben.

Jochen

Also in der List-Comprehension zum Beispiel dann halt so eine ineinander verschachtelte List-Comprehension, wo man sich dann immer fragt, okay, was ist denn jetzt was?

Jochen

Welcher Teil bedeutet denn jetzt was?

Dominik

X verlieh in List vor X in L oder Y.

Jochen

Genau, da kann man das nachlesen und dann versteht man es wieder für die nächsten fünf Minuten und dann hat man es zwei Tage nicht benutzt und hat man es wieder vergessen, wieum man das jetzt machen musste.

Dominik

Und jetzt kann man einfach das erste Listobjekt mit dem Asterix anpecken und dann macht man einfach die äußere Liste und dann wird es einfach direkt entpackt.

Johannes

Flach.

Johannes

Also ich höre jetzt, ich habe die ganze Zeit nur Skillische gehört, aber okay.

Jochen

Ja, schon, aber ist es auch kürzer, ist es auch kürzer jetzt.

Jochen

Also mit dem, also zum Beispiel, also.

Jochen

Ja, okay,

Johannes

dieses Sternen, diese komische Sternsyntaxe besser.

Also findet ihr die wirklich besser verständlich?

Jochen

Ja, also ich finde das ist schon besser verständlich als diese doppelter Schachloten.

Of Ethertools oder sowas.

Jochen

Also ich benutze es tatsächlich, also der Hauptanwendungsfall für das ist halt Flatten.

Jochen

Du hast eine Liste von Listen und dann willst du die flatten.

Dominik

Gibt es dann nicht auch eine eigene Danku-Methode für Flattenliste irgendwie sogar?

Es gibt auch eine eigene Funktion.

Jochen

Genau.

Jochen

Und die verwende ich dann normalerweise auch, weil ich mir denke, ja, also es soll einfach klar sein, was da passiert und dann nicht halt Flatten und.

Dominik

Genau, mit der Sternchen ist das irgendwie klar.

Jochen

Ja, aber das mit dem Sternchen ist auch relativ klar, ja.

Johannes

Also ich bin am Anfang, ich habe es mir vorhin ja durchgelesen und ich bin da so drüber gestolpert, diese Syntax, was die genau bedeutet.

Johannes

Und ich glaube, dass es gerade für Einsteiger nicht einfach ist zu verstehen, was Stern L for L in Lists bedeutet.

Ja, gut, okay.

Johannes

Aber ja, okay.

Johannes

Wir werden das sehen, was wieder die Resonanz ist.

Also das ist auf jeden Fall.

Dominik

Du meinst, es gibt noch Einsteiger, die Python lernen so von der Pike an, wie wir damals.

Ich denke schon.

Dominik

Schwierig, ja wird es erstmal, wenn die ganzen Agenten.

Dominik

Ja, aber die ganzen Agenten werden dann gefragt und wenn die Agenten damit auf die Nase fallen, hä, wieso geht doch nicht in ungultigen Sundtags?

Dominik

Oh, ups, es gab ein Patch in Python.

Johannes

Na gut, dann können wir auch bei Python 2 bleiben.

Ja, wahrscheinlich schon.

Dominik

Frage, was ist da gerade aktuell schon mit drin im Skill?

Johannes

Okay, also man kann jetzt anpacken, das ist doch auch sehr schön.

Johannes

Wie steht ihr zu Lazy Imports?

Johannes

Könnt ihr mir erklären, was Lazy Imports sind?

Dominik

Erst wenn es benutzt wird, wird es importiert.

Jochen

Ja, beziehungsweise was halt passiert, wenn das, weil was halt auf Top-Level ist, wird ja direkt ausgeführt quasi.

Jochen

Und was das dann macht, also es wird ausgeführt, aber der Import wird nicht ausgeführt, sondern was importiert wird, ist ein Proxy-Objekt und nicht das eigentliche Ding, was man importiert.

Jochen

Und erst wenn da mal darauf zugreift, dann wird der echte Import ausgeführt.

Jochen

Und das braucht man halt, wenn man zum Beispiel eine große Codebasis hat, wie jetzt sowas wie zum Beispiel Instagram oder so, was hat irgendwie zig Millionen Codezahlen und.

Johannes

Oder Eve Online, 2,3 Millionen.

Jochen

Das ist ja relativ klein sogar.

Jochen

Ich weiß gar nicht, ob die das Problem überhaupt haben.

Jochen

Ja, genau, sowas habe ich, das schreibe ich an den Nachmittag, ja, ganz klar.

Jochen

Aber ja, bei Instagram war halt zum Beispiel das Problem, dass der Django-Test-Server, also wenn man jetzt halt irgendwie, man ändert Code und dann startet der neu und dann braucht er halt anderthalb Minuten zum Neustarten.

Dominik

Importe landen.

Jochen

Importe, genau.

Jochen

Das ist natürlich irgendwie doof.

Jochen

Oder was halt auch oft passiert ist, dass man halt irgendwas importiert, was halt wirklich, wirklich lange braucht.

Jochen

Also irgendwas Data Science-mäßiges, wo dann ein Modell irgendwie instanziert wird oder das halt Sekunden braucht oder also NumPy und Panassen halt auch so, die darauf brauchen auch relativ lange, wenn man die importiert.

Jochen

Oder da gibt es halt diverse Kandidaten für so, wenn man das importiert, dann hat man passiert erstmal eine Minute, also ein paar Sekunden lang nichts.

Dominik

Aber das führt jetzt natürlich dazu, dass diese Sachen dann nicht direkt im Speicher liegen, sondern erst zur Run-Time dann geladen werden dann halt.

Jochen

Ja, aber wenn.

Jochen

Gut, aber wenn das halt in einem irgendwo passiert, wo es halt egal ist, dann ist es ja okay.

Jochen

Aber wenn das halt beim Starten passiert, ist es halt doof.

Aber das dauert doch immer noch genauso lange, oder?

Johannes

Also diese Wartezeit ist ja immer noch da, die ist jetzt nur irgendwann anders, die ist später.

Nein, das dauert nicht.

Dominik

Also die Frage ist, wann, genau, wann dauert es wie lange?

Johannes

Ja, genau, die dauert, also anstatt dass es jetzt zwei Sekunden dauert und dann sehe ich den ersten Input, sehe ich den ersten Output, sehe ich quasi das erste Print und dann dauert es zwei Sekunden.

Jochen

Wenn du jetzt zum Beispiel irgendwas testen möchtest oder irgendwas entwickelst, was halt den ganzen Kram tatsächlich da gar nicht drauf zugreift, weil das halt Codepfade sind, die sowieso nur selten benutzt werden, dann kann es sein, dass du das sofort testen kannst und bist dann zufrieden und musst halt nicht warten.

Johannes

Okay, also wenn du nicht alles benutzt quasi.

Ja.

Jochen

Aber ja, entweder sehr große Codebasen oder du findest halt komische Bibliotheken, dann ist es wichtig, ansonsten.

Jochen

Naja.

So komische Bibliotheken wie NumPy oder Pandas.

Jochen

Ja, genau.

Seltsamen Kram.

Ja.

Ja, okay.

Also das hat mich jetzt nicht so, haut mich nicht so vom Hocker genauso wie das Comprehension Unpacking.

Fand ich.

Johannes

Also ich weiß, dass da immer wieder Leute drüber sprechen, ja, über dieses Lazy Importing.

Johannes

Und ich habe auch, da gibt so ganz alte Artikel, erinnere ich mich von irgendeiner Chat-Plattform, die gesagt hat, wir können Python nicht verwenden, weil unsere Imports so lange dauern.

Johannes

War bei mir nie ein Problem.

Johannes

Also an alle Hörer, ja, wenn ihr dieses Problem nicht habt, dann ist das auch in Ordnung.

Dann seid ihr trotzdem gut.

Ihr seid trotzdem gute Hörer.

Der nächste

Johannes

Eintrag, der hat mich sehr gefreut, weil das ist, was ich schon.

Johannes

Der nächste Eintrag ist etwas, was mich sehr gefreut hat, weil das habe ich schon lange vermisst.

Johannes

Und das ist Frozen Dict.

Johannes

Es gibt jetzt einen Frozen Dikt als Built-in-Type.

Dominik

Kann man nicht dran sagen.

Dominik

Ich bin jetzt mal

dran mit erklären, oder?

Johannes

Frozen Dikt ist ein Dictionary, das sich nicht verändern kann, wo sich die Keys nicht mehr verändern können.

Johannes

Und das bedeutet, dass man es selbst als Eintrag, als Key in einem Dictionary verwenden kann.

Johannes

Das hört sich seltsam an.

Johannes

Und man braucht es auch nicht so häufig, aber wenn man es braucht, ist es echt super praktisch.

Jochen

Aber Moment, war das nur die Keys oder waren das nicht auch die Keys und die Values?

Jochen

Die dürfen sie beide nicht mehr ändern.

Jochen

Oder?

Jochen

Meine ich.

Jochen

Moment.

Johannes

Ich glaube nicht.

Johannes

Ich glaube, dass es nur die Keys sind, weil du kannst zum Beispiel bei einem Set, wenn du in einem Set eine Liste drin hast, kannst du die immer noch verändern,

Jochen

die Liste.

Jochen

Ja, nee.

Jochen

All of its Keys and Values are hashable.

Johannes

Ja, okay, hashable, aber, ja, okay, da kommt man ja drum rum.

Jochen

Ja, okay, stimmt.

Achso, und Dictionaries kann man jetzt in Sets reintun.

Johannes

Also Frozen Dicts kann man in Sets reintun.

Jochen

Auch praktisch.

Johannes

Das ist tatsächlich sehr praktisch.

Dominik

Warum ist das so praktisch?

Jochen

Genau.

Johannes

Das erfordert eine gewisse Code-Komplexität.

Johannes

Du musst natürlich an eine Stelle drankommen, wo du mehrere Dictionaries hast und zu diesen Dictionaries irgendwas dazu speichern möchtest, was du nicht in das Dictionary reintun kannst.

Johannes

Das heißt, es ist schwer, jetzt irgendwie ein simples Beispiel zu sagen, was einleuchtend ist.

Johannes

Aber ich erinnere mich, dass ich immer wieder an solche Stellen komme, wo ich mir denke, ah, das ist kein Problem, das tue ich in dieses Dictionary rein und da kriegt man eben diese Meldung an Hashable Type.

Johannes

Kann ich nicht in ein Dictionary reintun.

Johannes

Und das passiert mir immer wieder.

Okay.

Johannes

Vielleicht bin ich auch der Einzige wert, der

vorhin davorbesprechung drüber gesprochen.

Dominik

Aber das ist doch dasselbe Probleme, weil das muss ja auch jetzt hier Hashable sein.

Johannes

Genau, aber jetzt kannst du einfach Frozen Dict draus machen.

Johannes

Also wenn du eine Menge von Dictionaries hast, kannst du jetzt einfach Frozen Dicts draus machen und die kannst du dann in Set tun oder die kannst du in den Dictionary tun.

Jochen

Dann ist es Hashable, genau, ja.

Jochen

Also ein Anwendungsfall, der mir so spontan einfällt, ist halt, du kannst jetzt sozusagen, wenn zum Beispiel die Argumente von irgendwelchen Funktionen oder so Frozen dickt sind anstelle von Dicts, dann kannst du plötzlich das alles cachen.

Jochen

Kannst du Funktionsaufruf cachen.

Jochen

Und ja, das ist ja manchmal vielleicht eigentlich ganz cool.

Jochen

Und oft will man das ja sogar haben, dass halt die.

Dominik

Macht das jetzt nicht der Interpreter sogar automatisch?

Nee, das ist nicht.

Jochen

Nee, automatisch nicht.

Johannes

Ist wie bei Frozen Set.

Das ist auch überraschend.

Johannes

Frozen Set gibt es ja schon lange, aber Frozen Dict ist jetzt relativ neu.

Johannes

Deduplikation ist so ein Thema, was bei mir immer wieder kommt.

Johannes

Wenn ich irgendwelche, ich habe hier einen Ordner voll JSON-Dateien, lad mal die Sachen, die, egal ob da Duplikate drin sind.

Johannes

Und dann kannst du einfach Frozen Dicks draus machen und die in ein Set reintun und dann hast du am Ende automatisch dedupliziert.

Schön, ist schön, dass das jetzt geht auf einmal.

Ja.

Ist ja ohne Steuer.

Jochen

Ich glaube, Viktor Sinner hat das, und der hat der erste versucht, ein Pap dazu zu schreiben oder vorgeschlagen hat, auf einer Mailingliste das zu machen, ist halt irgendwie über zwölf Jahre her oder so.

Jochen

Das ist ja hartnäckig geblieben.

Johannes

Das ist tatsächlich auch, also ich habe eine Weile lang diese Python-Mailing-Liste mal verfolgt und da wird schon sehr viel zerredet, da wird schon sehr viel zerdiskutiert.

Johannes

Auch Sachen, die eigentlich einleuchtend oder klein erscheinen.

Johannes

Der Anspruch an sowas ist halt sehr hoch und da darf jeder seine Stimme sagen und deshalb dauert es manchmal zwölf Jahre, bis solche Dinge, die eigentlich offensichtlich sind, die sich offensichtlich anfühlen, irgendwann in Python reinlanden.

Johannes

Aber das ist ja durchaus auch eine Stärke von Python, dass eben da Dinge drin sind, wo man hinterher sagt, ja, das ist ja offensichtlich.

Johannes

Und das sind ja oft die, die am schwierigsten rauszufinden sind.

Johannes

Dass wir tatsächlich so sind.

Johannes

Das liegt leider in der Natur der Welt, dass die Dinge, die hinterher einfach erscheinen, oft die schwierigsten sind.

Ja, Package Startup Configuration Files, PEP 829 PC-Files.

Jochen

Das habe ich mir ehrlich gesagt gar nicht genau durchgelesen.

Dominik

Das war das, was wir gerade versucht haben, Adventure als erste.

Ja, das ist ja schwierig.

Johannes

Also ich meine, wenn ihr nicht wisst, was ist, könnt ihr auch das Problem nicht lösen dazu.

Jochen

Also ich glaube, der Grund, warum das ist, es gab ja jetzt letztes Jahr auch viele Supply Chain-Attacken und halt ein Trick, den man halt machen kann, wenn man jetzt irgendwie solche Attacken auf Fighten-Applikationen durchführt, ist halt diese PTH-Geschichte, dass man halt solche Files irgendwie mit reinlegt ins Paket und dann halt Code automatisch ausgeführt wird.

Dominik

Einfach beim Paket importieren wird dann automatisch irgendeine Konfigurmethode aufgerufen, die ein arbiträres Zeug laden.

Johannes

Bei der Installation schon, oder?

Jochen

Ja, ja, ja, genau.

Johannes

Setup hast du doch sogar bei der Installation.

Jochen

Bei der Installation schon, genau, richtig, richtig.

Jochen

Also wirklich, du musst nichts machen.

Jochen

Du musst halt bloß eine von den Abhängigkeiten halt kompromittieren und dann mit der Methode kannst du halt sofort Code ausführen.

Jochen

Das ist wirklich hart.

Jochen

Und ich könnte mir vorstellen, dass das Ding jetzt dafür sorgt, dass das nicht mehr so einfach geht, vielleicht.

Dominik

Genau, weil die Art und Weise, wie man da Sachen in diesen PTH-Files definiert, sich geändert hat.

Jochen

Ja.

Johannes

Das müsste man aber, glaube ich, nochmal genauer lesen, um das zu verstehen.

Johannes

Also da bin ich nicht tief genug rein.

Dominik

8.000 Package Startup Configuration Files.

Johannes

Ja, haben wir natürlich alle schon offen und auf unserer Leseliste ist ja klar.

Dominik

Also man muss Replacing Import Lines in PTH-Files with Entry-Point-Specifications in Start-Files.

Johannes

Ja, das wollte ich auch gerade sagen, ja.

Jochen

Ja, gut.

Jochen

Okay.

Das ist das, was dadurch.

Dominik

Wir wissen ja auch warum.

Dominik

Aber da konnte man coole Sachen mitmachen.

Johannes

Ja, aber also, also ja.

Bei allen reifen Softwareprojekten findet man immer wieder so Sachen, die, wo man denkt, ja, gut, das ist für andere Menschen.

Johannes

Es gibt bestimmt jemanden, der das braucht.

Johannes

Und das gehört da mit dazu.

Sowas habe ich nie gebraucht.

Dominik

Safe by Design.

Johannes

Ja, beziehungsweise safe by never used it.

Bloß weil es eine Footgun gibt, muss ich die ja nicht in die Hand nehmen.

Keine Fremdenpakete, alles selbst gecodet.

Johannes

Ich habe andere Dinge, wo ich andere Dummheiten, die ich mache.

Johannes

Ja, sprechen wir vielleicht nochmal drüber.

Jochen

Okay, was haben wir noch?

Dominik

Experimental JIT Compiler, genau.

Ja, da

gab es noch ein bisschen Drama in 3.14, oder?

Johannes

Mit dem JIT-Compiler, den sie wieder zurückgezogen haben.

Jochen

Ja, genau, genau, genau.

Jochen

Der hat zurückgezogen, weiß ich gar nicht, aber der.

Jochen

Das Problem war halt auch irgendwie, dass.

Johannes

Es gab doch einen Bug, oder?

Johannes

Es gab doch einen Bug, der die Semantik verändert hat.

Ah, okay.

Das weiß ich nicht.

Dominik

Und das sagen diese, weil die nur Statistik benutzt haben, oder?

Dominik

Es war genau das, warum wir so ein Skill haben.

Nee, weil sie, weil es, also es war auch irgendwie so ein Reordering-Dings, weil sie irgendwas gejittet haben, was sich dann im Prozessor neu sortieren durfte und dann, also vielleicht muss man das nochmal nachlesen, die Details.

Wir sind ja sehr gut vorbereitet, deshalb ist man sowas alles auswendig.

Johannes

Und das sind zu viele technische Details, die wir den nicht zumuten wollen, deshalb ist ein Link unten in den Kommentaren.

Jochen

Aber also im Prinzip schöne Sache und ich meine, die Performance-Geschichten sehen ja gut aus, 7-8% auf Standard-Cheuten.

Johannes

11 bis 12 Prozent, also großartig, das ist einfach diese Arbeit an solchen Baustellen, die nicht glamourös ist und die nicht super sichtbar ist, die aber halt irgendwo 7% rausholt, das ist ja unglaublich viel Compute-Zeit, die da über die gesamte Welt rausfällt.

Wir hatten doch, beziehungsweise ihr zwei hattet ja schon mehrmals einen Core-Contributor hier im Podcast, die auch da was dazu sagen konnten.

Jochen

Ja, genau, der bei, ja, also PiPi, genau, aber ja, müssen wir mal wieder fragen, wie es da so aussieht.

Jochen

Ich weiß gar nicht, was mit PiPi eigentlich ist gerade.

Johannes

Ja, die haben auch eine neue Release gemacht.

Johannes

PiPi 8.0 ist auch kürzlich rausgekommen, aber das ist halt, das ist auch wieder so ein Nischenthema.

Johannes

Ich folge verschiedenen Personen auf Mastodon und da kommt auch immer wieder so Compiler-Diskussionen.

Johannes

Ah, wir haben hier das und das gemacht.

Johannes

Wie macht ihr denn das da bei euch?

Johannes

Dann stehe ich immer daneben und fühle mich wieder wie ein achtjähriger Junge, der nichts weiß und gerne mehr wissen möchte.

Jochen

Ja, also wenn man sich genau mit so Computer Science-Kram aushuben möchte, da sind solche Sachen natürlich extrem dankbar.

Johannes

Ja, und haben halt auch, wie gesagt, diesen Impact.

Johannes

Also wenn man aus einem Programm, was eine Milliarde Mal pro Tag ausgeführt wird, 7% rausholen kann, dann ist das halt mehr als wenn ich meine Startup-Time durch Lazy Loading von 12 auf 2 Sekunden reduziere.

Dominik

Naja, aber immerhin, das ist schon prozentual noch ein besserer Gewinn.

Johannes

Viel Prozent von wenig.

Johannes

Ist immer noch weniger als wenig Prozent von vielen in dem Fall.

Dominik

Vielleicht kann man ja ein bisschen vom Strom verbraucht, von den ganzen LMs wieder reduzieren.

Johannes

Ja, der nächste Eintrag heißt einfach Improved Error Messages.

Johannes

Ich meine, das ist immer gut.

Dominik

Ja, das haben wir ein paar Mal schon hintereinander gehabt und ich finde, die sind ja tatsächlich relativ lesbar und mit richtigen Vorschlägen und sowas drunter, oder?

Johannes

Was ist dieses Mal besser geworden?

Johannes

Weil die waren ja letztes Mal schon so, dass sie drauf gezeigt haben und gesagt haben, meinst du vielleicht das hier?

Dominik

Und mit Farbe, genau, und die gehen jetzt, glaube ich, sogar noch ein bisschen tiefer rein und sagen dann, hey, noch ein.

Dominik

Vielleicht hast du genau das gemeint.

Dominik

Genau, also so ein bisschen Korrekturverschwendung.

Die Beispiele

sind schon schön.

Johannes

String Object has no attribute to uppercase.

Johannes

Did you mean upper?

Johannes

Das ist doch sehr, also das ist sehr Realitätsnabel, die sagen.

Johannes

Oder auch ListObject has no attribute push, did you mean append?

Johannes

Ja.

Johannes

Das richtet sich an das Zielpublikum, würde ich sagen.

Ja, war gut.

Dominik

Das ist echt lesbar.

Dominik

Also das war am Anfang mal schwierig und jetzt geht's.

Johannes

Das sind Java und JavaScript-Fehlermeldungen, falls es jemand nicht erkannt hat.

Johannes

Sehr schön.

Jochen

Und es gibt mehr Farben.

Johannes

Mehr Farben ist immer gut.

Johannes

Wobei ich ja als Mann und ein Programmierer und ein Mathematiker und ein Nerd, ich bin ja der Meinung, dass die 16 Farben von EGA völlig ausgereicht haben.

Johannes

Mehr Farben kann ich nicht benennen.

Außer des Spektrums.

Johannes

Und eigentlich sind es nur acht und immer noch eine helle Variante davon.

Johannes

Das reicht völlig aus.

Johannes

Aber es gibt Menschen in meinem Leben, die sagen, dass Lachs eine Farbe ist und Aprikor und

Jochen

Mov und Taupe.

Wie bitte?

Jochen

Ja, also Farben halt.

Jochen

Ja, aber es gibt da auch so irgendwie Leute, die haben so den Pantonen irgendwie keine Fächer auswendig.

Jochen

Aber nee, ich nicht.

Johannes

Ja, es gibt auch so Leute, die können Hexfarben einfach so sagen.

Johannes

Die sehen irgendwo eine Farbe und sagen, ja, das ist AF2739.

Jochen

Das ist ein Rätsel, ich verstehe das nicht.

Jochen

Aber gut.

Johannes

Wie gesagt, EGA war für mich eigentlich völlig ausreichend, das reicht aus.

Ich finde

Dominik

es schon schwierig, die nächste Y und K von Cyan und Magent herauszuhören.

Dominik

Y ist Yellow und Key ist Schwarz, aber egal.

Johannes

Significant Improvements in the Standard Library.

Dominik

Ja, erstmal Type Dicks haben wir noch vergessen und die ganzen Typsachen, oder?

Johannes

Nee, steht bei mir

Jochen

nicht unter Profiling, aber da haben wir auch schon drüber geredet im Grunde.

Jochen

Tachion und es gibt jetzt noch ein Profiling Package, okay, das gab es vorher nicht.

Jochen

Aber ansonsten, ja.

Jochen

Dann genau, Typing, ja, was haben wir denn da?

Type-dikt.

Johannes

Ja, was ist denn, was ist denn Type-Dict und was ist vor allem, was ist Type Form?

Johannes

Also das, also Type-Dickt kann ich ja noch so ein kleines bisschen verstehen, dass man sagt, okay, die Keys müssen dies sein und die Values müssen das sein.

Johannes

Das war ja vorher so ein bisschen.

Johannes

Aber was sind denn Type-Formen?

Johannes

Könnt ihr mir erklären, was Type-Form ist?

Johannes

Weil ich weiß es nämlich nicht.

Jochen

Nein, ich weiß es ehrlich gesagt auch nicht.

Jochen

Ich habe hier das Beispiel, gucke ich mir an.

Jochen

Also Special Form representing the value that results from evaluating a type expression.

Jochen

Oi, das klingt ja nicht.

Dominik

Ja, ich bin auch dieses Type-Ding, das ist auch schon das, was nicht unser Python war.

Dominik

Wenn ich höre Cast von T vom Typ Typeform T, kommt ein T raus.

Dominik

Also irgendwas wird ein Typ gecastet und der Typ ist vom Typ Typeform?

Dominik

Das verstehe ich nicht.

Ich weiß nicht so genau.

Johannes

Typ Theos Anpamoson.

Jochen

Der das irgendwie neuer erklärt.

Jochen

Äh, der besser erklärt, aber ja.

Johannes

Ja, Typing ist auch so ein Ding, wo ich mich immer doof fühle, wenn da andere Leute drüber sprechen.

Dominik

Vielleicht wollen wir nochmal den Stefan fragen.

Jochen

Ja, also, aber der beschäftigt sich ja nicht mit Python-Type.

Jochen

Das müssen wir ja machen.

Dominik

Ja, achso.

Johannes

Ja, aber der kann uns vielleicht die Algebra dahinter erklären.

Jochen

Ja, vielleicht.

Johannes

Das ist ja leider auch so, ja, dass dann, wenn man da über Typen spricht, dann kommt ganz schnell so im allgemeinen Internet-Kontext, dann kommen ganz schnell so die Herskell-Leute aus der Gebüsch und sagen, haha, ohne Monaden kannst du gar nichts machen.

Ja.

Jochen

Genau, genau.

Jochen

Ich meine, aber ich überfliege gerade diesen Pep, um zu verstehen, worum es geht und hab's nicht verstanden.

Jochen

Aber wenn da so Sätze drinstehen, why not type irgendwann auf C und dann one might think that Type C would suffice for these use cases.

Jochen

However, und dann ich bin schon so, okay, nee, es ist suche für mich oberhalb meiner Geizklasse, ich muss hier was anderes machen.

Das gibt es doch nicht.

Jochen

Nee, es ist kompliziert wohl.

Jochen

Ich verstehe es nicht.

Jochen

Keine Ahnung.

Johannes

Also wir sind uns einig, dass das höhere Magie.

Dominik

Höhere Magie.

Dominik

Da gehört auch übrigens die ein paar Rejected Ideas dazu, wie dass man den Final-Dekorator instead of Close Class-Parameter reinfühlt.

Dominik

Das haben sie dann abgelehnt, weil.

Das habe ich mir auch, das denke ich mir auch.

Dominik

Ja, oder?

Dominik

Also, dass man eine Klasse nicht mehr weiter subklassen darf, weil da ein Final-Dekorator drüber ist?

Crazy.

Johannes

Ja, aber gibt's jetzt, also ich meine, kann ich ja niemand abhalten, den Python?

Dominik

Ja, also war wohl ein Vorschlag, ein ernsthafter Vorschlag

Jochen

beim Jahr macht wirklich Wahnsinn, ich weiß es nicht, aber

Dominik

was nehmt ihr denn fürs Type?

Dominik

Nimmt ihr Protokolle oder nehmt ihr Dienst oder irgendwas anderes?

Jochen

Ja, Protokolls verwende ich richtig gerne, aber.

Jochen

Oder wofür meinst du doch mal?

Dominik

Ja, zum Typen oder sowas.

Dominik

Ich finde Protokolle ganz gut.

Jochen

Ja, aber ich mache eigentlich alles, also es kommt immer so ein bisschen drauf an, was es gerade ist und man kann sich das ja auch manchmal nicht aussuchen.

Jochen

Manchmal muss man ja irgendwie erben von Dingen und so und dann macht man halt nominales Typing, weil, naja, ist halt so.

Jochen

Und genau.

Jochen

Aber ja, also ich mache ich mache alle Arten.

Jochen

Aber es ist auch alles irgendwie einfacher geworden, weil, naja, ich meine, ich, also ich habe mich damit schwer getan, als ich noch damals vor Zeiten geschrieben habe, ja.

Jochen

Und dann immer MyPi-Fehlermeldung hatte und ich so, wie was ist denn jetzt hier schief gegangen?

Jochen

So, und die LLMs schreiben das und es funktioniert einfach so.

Jochen

Und man muss eigentlich nichts mehr machen.

Dominik

Also du fragst einfach Pi Refly und sagst dann, hey, hier.

Aber machst du deinen Type-Tracks darauf machen?

Johannes

Lass du MyPi auf deine.

Jochen

Ja.

Dominik

MyPi, Johannes.

Dominik

Entweder nimmst du Tai oder Pi Refly, bitte.

Ja, natürlich.

Ich bin halt schon älter.

Jochen

Nee, ich bin benutze aber auch tatsächlich noch MyPi.

Jochen

Wirklich?

Ja.

Warum?

Johannes

Ja, wenn du es auch schon älter ist, oder?

Jochen

Es ist eine Gewohnheit.

Jochen

Liebgewonnene stimmt.

Jochen

Vielleicht sollte ich mir mal andere Sachen angucken.

Genau, ja.

Dominik

Also Tai ist, seitdem du es aus der Beta raus hast und irgendwann war so ein Dingstart im Sommer oder sowas, dann zeigt dem es ganz gut.

Dominik

Und PyRefly gibt es ja auch, ist auch recht bekannt.

Johannes

Um ganz ehrlich zu sein, benutze ich noch einen ganz anderen Type-Checker.

Keinen Type-Checker,

Johannes

den, der in PyCharm eingebaut ist.

Jochen

Ach ja, ja, nee, der ist auch gut.

Der ist auch, ja, der hat also immer mal wieder so Aussätze.

Johannes

In manchen Versionen sagt er dann auf einmal, oh, das habe ich aber in Unterstrich-Self nicht gefunden.

Ah, okay.

Dominik

Was war das so?

Dominik

PyWrite oder?

Johannes

Da sind doch aber ganz viele Type-Fehler drin, weil er die Klasse nicht erkannt hat und dann Unterstrich-Self annimmt und ah.

Ja.

Okay.

Ja, aber also separates Type-Checking mache ich eigentlich so gut wie nie.

Johannes

Und das ist auch, also für mich, ich finde, also ich finde es interessant, ja.

Johannes

Das ist so ein Type-Checking ist so ein Thema.

Johannes

Da kommen dann auch so die Graubeerte aus dem Gebüsch und sagen, haha, aber da musst du folgende Dinge tun.

Johannes

Und ich versuche das eigentlich immer zu vermeiden.

Johannes

Und wenn's, wenn es zu tief reingeht, wenn man zu weit in dieses Thema reingeht, finde ich, ist es ein Anzeichen dafür, dass man zu viel darüber nachgedacht hat.

Jochen

Naja.

Johannes

Und an der Stelle würde ich dann einfach Any.

Johannes

Also ist bei mir ist der Threshold für Any oder für Unknown oder für was auch immer man da benutzen möchte, relativ niedrig.

Johannes

Oder halt für eine Umstrukturierung, dass man halt sagt, okay, da gibt es jetzt eine Data Class dafür und dann ist es die.

Johannes

Aber sowas wie Protocols, ich finde, also ich finde das eine schöne Idee und für Bibliotheken, die eine Million Downloads haben, ist das vielleicht auch eine gute Sache, aber wie wir ja vorhin schon rausgefunden haben, ist das nicht ein Problem, was ich bedienen muss.

Jochen

Ja, ich finde allein schon bei BackTech- oder Django-Geschichten ist es oft ganz nett, wenn man sagen, also das, was ich hier reinkriege, ist halt irgendwas Kompliziertes, Komisches.

Jochen

Aber es muss halt das und das können.

Jochen

Und dafür habe ich oft Protokolls dann.

Johannes

Ja, aber also machst du das auch für dich selber, Jochen, weil ich finde, wenn man das für dich selber macht, dann das ist ja eine Abstraktion, ja.

Johannes

Es ist ja eine Abstraktion über irgendwas, wo du üblicherweise eine konkrete Klasse hast.

Johannes

Also wenn ich in so eine Situation komme, dann habe ich in meinem Programm üblicherweise eine konkrete Klasse, von der ich weiß, dass die da reinkommt.

Jochen

Nee, das weiß ich oft dann halt nicht.

Jochen

Genau.

Jochen

Ich weiß halt nicht genau, was das ist.

Jochen

Es kann halt alles Mögliche sein.

Ja, okay, gut.

Jochen

Aber ja, so wahnsinnig oft, dass sie das nicht.

Jochen

Ich lasse dann die Typen weg und dann kann man auf Auto.

Kaputt.

Nö, Any.

Johannes

Typing ist ganz einfach, schreibst du mal Any hin und dann ist alles fertig.

Kann man so einen Rust machen.

Johannes

Kein Type-Checker kann je was dagegen sagen.

Jochen

Ja.

Jochen

Ja, was haben wir noch?

Johannes

Disjoint Basis in the Type System, großartig.

Okay, wundervoll.

Johannes

Die C-API, wie oft benutzt ihr die C-AP von Python?

Nee, auch.

Also direkt?

Ja, selber.

Jochen

Selten.

Nee, gar nicht.

Eigentlich.

Don't touch it.

Oh Mann.

Johannes

Ich dachte, ich wäre der Einzige, der das nicht benutzt.

Jochen

Ja, also.

Okay.

Jochen

Gut.

Jochen

Nichts davon, Build Changes, nee, das auch nicht.

Johannes

Ja, auch das Framepoint, das ich meine, das hört sich gut an, dass man da jetzt mehr sehen kann und dass die Debugger besser funktionieren und dass das alles besser geht und so.

Das ist alles schön, aber.

Ja.

Okay.

Johannes

Ich finde es großartig, dass es Leute gibt, die sich damit befassen und die das machen für uns.

Johannes

Und damit ist das für mich schon fertig.

Johannes

So, Release Changes.

Johannes

Das ist interessant, weil Release Changes, die sind jetzt quasi am anderen Ende vom Spektrum, ja.

Das ist so ein, ja, okay, haben wir halt auch umgestellt.

Johannes

Aber die haben natürlich eine sehr große Auswirkung.

Johannes

Zum Beispiel die Official Windows 64-Bit Binaries now use the tail calling interpreter.

Auch wie Geschwindigkeit.

Dominik

Auf Windows 6.

Geschwindigkeit, ja.

Und Riesenumstellung,

Johannes

the Official Macs Binaries now install Free Threading Support by Default.

Johannes

Wenn ich das richtig lese, dann ist es, ist es noch nicht so, dass Free Threading der Default-Interpreter ist.

Jochen

Normalerweise nicht, ne?

Weil das.

Langsamer.

Johannes

Der ist langsamer, ja, und der ist ja auch noch experimental, oder?

Johannes

Der ist ja noch nicht.

Das weiß ich nicht.

Jochen

Ich dachte, es ist jetzt nicht mehr experimental.

Jochen

Das war er vorher, aber er ist noch nicht default, genau.

Jochen

Und ja.

Johannes

Und auf Mac ist er jetzt aber verfügbar.

Johannes

Also man muss ihn nicht mehr selber nachinstallieren, sondern man kann es einfach Free Threading sagen und kriegt den dann.

Johannes

Und das ist ein großer Schritt in die richtige Richtung.

Johannes

Ich meine, das ist ja was, was man Python schon seit vielen Jahren vorwirft.

Jochen

Aber ich habe das Gefühl, also ich meine, das wiederhole ich jetzt auch schon, ich weiß nicht wie oft, aber ich habe das Gefühl, dass die Leute, die das vorwerfen, die verstehen einfach gar nicht, was das ist.

Jochen

Das ist halt ein Vorwurf.

Johannes

Du bist auch nur Skillish, oder?

Jochen

Das ist einfach kein Problem, kein ernsthaftes Problem, das Leute haben normalerweise.

Jochen

Also, oder sag mal so, der Vorwurf oder dass das ein Problem wäre, kommt von ganz vielen Leuten, aber tatsächlich haben wir nur ein, also ich würde sagen, ganz, ganz wenige Leute haben dieses Problem jemals.

Jochen

Also, dass sie damit irgendwie ein Problem kriegen.

Jochen

Aber ich habe immer das Gefühl, die Leute glauben, dass sie damit ein Problem kriegen, aber tatsächlich ist das praktisch nie ein Problem.

Jochen

Also daher, ja, also es gibt, es gibt Fälle.

Jochen

Und ich würde auch sagen, ja, es ist sinnvoll, aber die sind, also wenn du zu der Gruppe von Leuten gehörst, die dieses Problem haben, das weißt du ja halt dann.

Ich benutze das immer als Ausrede.

Johannes

Ich benutze immer, ich würde ja Threading machen, aber leider in Python

Jochen

geht das ja nicht so richtig.

Darf ich nicht.

Johannes

Und ich meine, es gibt ja viele Use Cases für Threading, die jetzt auch schon gehen.

Jochen

Ja, auch schon informieren.

Die sind halt langsamer.

Jochen

Also, der Standard-Use Case für Threading, dass du halt I.O.-Multiplexen willst, das ging schon immer halbwegs okay.

Jochen

Ja, natürlich.

Johannes

Ja, oder dass du UI-End-Action hast, weil da brauchst du auch Threads, die sich die Nachrichten erzeugen können, damit du irgendwie auf Buttons hören kannst und so weiter.

Auch das ging ja schon immer und problemlos.

Johannes

Halt ein bisschen langsamer, was aber an der Stelle ja egal ist, ja.

Johannes

Also ob der Button eine Millisekunde oder zwei Millisekunden später reagiert, spielt nicht so richtig eine Rolle.

Ja.

Johannes

Umgekehrt, umgekehrt, ich glaube, da haben wir auch schon mal drüber gesprochen hier in so einem Podcast, oder Jochen?

Johannes

Ich sehe auch das Potenzial für, es gibt irgendwo so eine Library, die auf einmal irgendwas eintausend Mal schneller macht, weil du halt auf einmal alle Prozessoren verwenden kannst.

Johannes

Und vielleicht schreiben wir die nicht selber, aber ich würde die benutzen.

Jochen

Nee, aber nochmal einfach so, wie eng ist die Zielgruppe für Leute, die Free Threading wirklich haben wollen.

Jochen

Also, das heißt, du musst auf der einen Seite Python verwenden.

Jochen

Also dein Problem darf nicht so sein, dass du sagst, ah, scheiß drauf, dann mache ich das halt in C, ja.

Jochen

Also das darfst du nicht, das darf nicht kein Problem, weil das kannst du dir.

Jochen

Genau, dann brauchst du das alles nicht mehr machen, weil dann ist es egal.

Jochen

Es ist auch so, dass du nicht einfach irgendwie sowas wie NumPy oder so oder auf Hannas halt callen darfst, weil dann hast du das Problem auch nicht.

Jochen

Sondern du musst CPU verbrauchen in Python.

Jochen

Also nicht irgendwas machen, was halt CPU ist.

Johannes

Ja, also kein Problem, finde ich.

Also ich kann viel CPU verbrauchen.

Jochen

Ja, aber es muss halt auch irgendwie sinnvoll sein, ja.

Jochen

Also klar kannst du

Johannes

es, aber.

Jochen

Du musst wirklich mehrere Prozessoren verwenden möchten in Python, aber nicht sowas wie NumPy verwenden oder so.

Jochen

Oder auch keine C schreiben.

Jochen

Okay, ja gut.

Jochen

Also das ist schon sehr speziell, würde ich jetzt mal so sagen.

Jochen

Weil normalerweise nimmst du halt NumPy, wenn irgendwas schnell sein soll.

Jochen

Also es gibt da, also die Beispiele sind sowas wie, naja, ich habe halt, ich mache Transformationen auf meinen Trainingsdaten und möchte die GPUs füttern und ich komme nicht hinterher.

Jochen

Weil ich kann das nicht irgendwie in C selber machen, weil ich mache halt Dinge auf den Trainingsdaten, die halt in Python irgendwie da sind.

Jochen

Das heißt, es geht nicht in C.

Jochen

Und ich auf der anderen Seite ist es aber auch so, ich muss da wirklich schnell sein, weil ich sonst irgendwie, weil es ein Investitionsding ist, weil die GPU kostet halt 100.000 Dollar, ja, und die bin ich halt auslasten.

Jochen

So, okay, an der Stelle, ja, da gibt es Leute, die solche Probleme haben, aber ja.

Jochen

Und die müssten halt dann sonst ihren Kram halt in Rust neu schreiben oder so.

Jochen

Ja, gut, okay.

Ja, gut, das machen die ja sowieso.

Johannes

Also meine Hypothese ist weiterhin, dass es irgendwo so etwas gibt, was man mit Free-Threading dann aufschließen kann, was wir dann, wofür wir alle profitieren werden.

Aber ich sehe noch nicht, was es ist.

Ich habe noch nichts gesehen.

Johannes

Und tatsächlich ist es ja auch heutzutage bei Computern noch so, man kann ja relativ leicht inzwischen Computer mit 24 oder 32 Kernen kaufen und dann ganz viele Sachen drauf machen.

Johannes

Aber das, was das Gefühl von Leistung ist, ist immer noch die

Jochen

Single-Threaded-Porforce, die

Johannes

halt den Mauszeiger schneller bewegen lässt.

Ja und

genau, ja.

Jochen

Na gut.

Jochen

Ansonsten waren die News, oder?

Jochen

Ich war glaube ich Python 3.15 Features.

Jochen

Aber genau, eigentlich was, was, wo ich, wo ich, die Frage ist halt, wie relevant ist das eigentlich überhaupt noch alles so ein bisschen?

Jochen

Also ich meine, Python schon, aber ich habe in den letzten Jahren immer so, also mich haben neue Python-Versionen immer mehr begeistert oder so, weil ich dachte so, ah, cool, aber ich schreibe ja jetzt in letzter Zeit eigentlich gar nicht mehr so wahnsinnig wie Code selber.

Dominik

Nicht mehr schreiben, nicht mehr lesen, Jochen wird Projektmanager, habe ich gehört.

Jochen

Ja, ich habe immer noch was mit Computern zu tun, aber ich habe so das Gefühl, die Relevanz nimmt so ein bisschen ab.

Johannes

Ich glaube, also für mich das Gefühl ist, dass Python seit ein paar Versionen sehr stabil ist.

Jochen

Ja, stimmt.

Jochen

Das ist auch einfach, das ist auch ein Punkt, der zusätzlich ist, genau ist es halt einfach gut.

Dominik

Ja, sind es kleine Convenience-Sachen, die sich verbessern noch.

Ja, genau.

Johannes

Also sowas wie Frozen-Dick, ja, aber es ist jetzt auch nicht so, dass ich sage, okay, ich muss jetzt Python upgraden, damit ich Frozen Dick bekomme.

Sondern es ist mehr so ein 3-2-Version schon.

Ja, okay.

Dann nehmen wir das.

Johannes

Deshalb, also das ist für mich so ein bisschen das größte Problem.

Johannes

Es ist da nie, es ist inzwischen so vollständig und so gut und so da alles, dass, also bevor wir nicht zu Python 4 gehen, sehe ich da nicht, dass ich grundsätzlich irgendwas, dass man grundsätzlich irgendwas.

Dominik

Ja, ich meine, aber auch, es gibt da auch keine Probleme mehr hochzugehen.

Dominik

Normalerweise muss man nur warten, bis die Readers irgendwie alle kompiliert sind und dann kannst du halt hochgehen, hast du an den neuen Features und das ist gar nicht so schlimm.

Johannes

Nehmt ihr die 3.15.0 oder wartet ihr auf die Punkt 1?

Ich warte

auf die 1.

Jochen

Ich habe die schon, also Python-Podcast.de läuft schon auf Python 3.15.

Johannes

Okay, ja, das ging ja schnell.

Jochen

Aber ich habe nicht so viel tun müssen.

Jochen

Ich habe nur einem Agent gesagt.

Ja, ja, genau.

Also probiere mal aus, ob es geht, wenn da dann die tollen Paket.

Dominik

So ein paar Pakete, die müsste ich dann irgendwie extra bauen.

Dominik

Darauf habe ich keinen Bock und ich warte, bis alle meine Pakete aus meiner Clearin-Software Beloft mit T-Wheels grün sind mit Reels.

Habe ich, tatsächlich.

Johannes

Sehr gut.

Johannes

Ein Nachteil, eine Sache, die ich gar nicht mag an Python 3.15, ist, dass die letzte Version 3.14.8 war und nicht 3.14.15.

Da hätte ich eigentlich gehofft, dass man.

Kommt zumindest noch.

Johannes

Es sind noch viele meiner Versionen, die jetzt ja.

Johannes

Vielleicht schieben Sie noch ein paar Bug Quick-Releases nach, weil dann.

Johannes

Also 3.14 ist erst dann vorbei, wenn es die 2.15-Patch-Version gibt.

Sonst vorher muss man eigentlich da noch warten.

Jochen

Okay.

Jochen

Ja, das stimmt natürlich.

Johannes

In der Django Welt, wir haben ja vorher darüber gesprochen und die Hörer wissen ja auch, dass wir sehr viel Django machen.

Johannes

Geht man jetzt zu Calver über.

Johannes

Da geht man jetzt zu Calendar Versioning über.

Das wollte ich auch gerade sagen.

Johannes

Ab 2028, glaube ich, oder das ist schon 2027.

Dominik

Django macht ja eh nur mit 0, 1, 2 und dann irgendwie anderthalb Jahre Zyklus bis Stable Root.

Johannes

Aber das ist ja wie bei Ubuntu.

Johannes

Ubuntu macht ja Punkt 4 und Punkt 10.

Johannes

Mehr machen die ja nicht.

Johannes

Aber man erkennt sofort, wann es herkommt.

Johannes

Und ich glaube, dass das ein guter Schritt ist.

Johannes

Ich glaube, dass das eine gute Sache ist für so Projekte, die sehr stabil sind.

Johannes

Die sehr vollständig und sehr rund sind, dass man einfach nicht sagt, okay, irgendeine abstrakte Nummer, sondern eine von der letzten Version.

Dominik

Ich habe mich jetzt umgestellt auf KWR.

Dominik

Alle meine Sachen intern habe ich umgestellt auf KWR, weil das irgendwie, weiß ich nicht, zählt dann eh mal von 0.

Dominik

irgendwas, 0.0.255.

Johannes

Ja, okay.

Johannes

Ich mache tatsächlich, ich gehe bei internen Projekten oder bei Sachen, die ich mache, eigentlich in die andere Richtung, dass ich einfach eine Zahl habe.

Johannes

Es ist einfach nur Release 110.

Johannes

Und das hat keinen Bezug zur Zeit und auch keinen Bezug zur, das ist ein Patch oder ein Miner oder was auch immer, weil das kann ich oft gar nicht selber sagen.

Es ist, ah, muss ich, könnte man das noch als Patch Release sehen oder ist es schon 80-Teat.

Dominik

Keine Ahnung, Breaking-Changes gesehen in irgendeinem Bugfix oder sowas.

Johannes

Ja, also da bin ich ganz davon weg.

Johannes

Also entweder Calendar Versioning, dass man sagt, das ist die Version vom Sohn zu viel.

Dominik

Ja, ich finde das super, weil da weiß ich direkt, wie alt ist denn das jetzt?

Dominik

Ich weiß jetzt, okay, 26, 10, 15, es müssen was gearbeitet worden.

Dominik

Und wenn ich jetzt 2028 habe und es immer noch 20, 26, 10, dann weiß ich, oh, okay, zwei Jahre hat sich da nichts mehr bewegt.

Dominik

Okay, muss ich entweder wieder neu dran oder mag genauer gucken.

Johannes

Die Diskussion hatte ich mit einem Kollegen und ich bin tatsächlich bei einem Kunden gerade und wir arbeiten an zwei unterschiedlichen Themen von der gleichen Anwendung und er macht Calendar Versioning.

Johannes

Genauso wie du es beschreibst.

Johannes

Er sagt halt, also die Release, die ich heute gebaut habe, ist halt 2026, 10, 15.

Johannes

Ich mache Numbered Versioning, ich zähle einfach immer eine hoch.

Dominik

Ich zähle im Monat eine hoch.

Johannes

Das kann man auch einfach auch gemischte Versionen machen.

Johannes

2026, 115.

Johannes

Nee, sein Argument ist genau das, was du gesagt hast.

Johannes

Du siehst genau, von wann die kommt.

Johannes

Und mein Argument ist, du siehst genau, welcher als nächstes kommt.

Johannes

Weil nach 110 kommt 111.

Johannes

Und nach 111 kommt 112.

Johannes

Und wenn du, wenn die neueste Version 115 ist und du hast die 111 drauf, dann weißt du, dass du genau vier Versionen hinterher bist.

Johannes

Und das siehst du bei Calendar Versioning nicht.

Johannes

Da siehst du eben nur die Zeit.

Johannes

Aber du siehst nicht, welcher als nächstes kommt und du siehst auch nicht, wie viele da davor kommen.

Johannes

Und das ist so ein bisschen da.

Dominik

Du hast ja nur einen Request entfernt.

Dominik

Und nur weil ich jetzt weiß, dass da drei Schwester vorher noch sind, meinst du das wichtig?

Johannes

Ja, aber das Datum ist ja auch nur ein Request entspannt.

Dominik

Aber wenn ich jetzt zum Beispiel innerhalb von einem Tag fünf neue Versionsprüchen habe, weil ich endlich mal Zeit finde, an dem Paket zu arbeiten, dann sagt das ja auch relativ wenig darüber auf, ob wenn jemand dann für die nächsten Versionsprung ein halbes Jahr dran sitzt.

Johannes

Wie würdest du die dann in deinem Calendar-Versioning machen, wenn die alle dir den gleiche Tag?

Dominik

Ich nehme immer einen Monat und dann monatlich bis 100.000 hoch.

Johannes

Ach so, okay, gut, das ist natürlich die für die ganz Verrückten, okay.

Dominik

Naja, so verrückt ist das auch wieder nicht, aber ich brauche jetzt die Tage nicht von daher distinguieren.

Das ist irgendwie Quatsch.

Dominik

Sondern ich weiß halt einfach, okay, es gab in dem Pilos in dem Monat und dann weiß ich immer, okay, ist super.

Johannes

Dann müsste man eigentlich, eigentlich müsste man das dann schon auf die Sekunde genau machen.

Johannes

Das ist die Version.

Johannes

2600.

Dominik

Aber dann bitte nicht mit dem 24-Stunden-System, sondern mit dem 10-Stunden-System.

Dominik

Hier ist das nochmal das DC-Time-System, was du da mal im schönen Blog in Tattoo geschrieben hast.

Johannes

Ja, natürlich.

Johannes

Die Ticks.

Johannes

Welcher Tick ist jetzt gerade?

Genau, ein Ticks, bitte.

Johannes

Richtig, ordentlich.

Das finde ich schön.

Dominik

Das hätte wieder was.

Dominik

Können wir da bitte einen Generator schreiben?

Ja.

Johannes

Da kann man bestimmt nur ein UV-Plugin, das automatisch die richtige Version setzt.

Genau.

Johannes

Perfekt.

Johannes

Ich mache mich an die Arbeit.

Dominik

Weil das ist doch toll, oder?

Dominik

Dann fast alle Anforderungen erfüllt.

Naja, immer noch nicht.

Dominik

Du kannst immer nicht hochdrehen.

Johannes

Ja, siehst du immer noch nicht, welche die nächste ist.

Johannes

Egal.

Okay.

Johannes

Also das, was ich eigentlich sagen möchte, ist, es gibt andere große Projekte, die von eben solchen fortlaufenden Versionsnummern umsteigen auf Calendar Versioning, die sagen, okay, das ist die Version von so und so vielen.

Johannes

Und Django ist da ein sehr großes.

Johannes

Das hat im Wesentlichen eine Person getrieben, die das anscheinend auch schon seit längerem betrieben hat und irgendwann mit einem DEP, mit keinem, nicht mit einem PEP, sondern mit einem DEP durchgekommen ist und akzeptiert wurde.

Dominik

Wir sind übrigens auch bei Django 6, ich weiß nicht, das hat mir auch verpasst.

Jochen

Ja, 6.1.

Wir sind noch bei 5.2.

Wir sind schon bei ein bisschen hinterher.

Johannes

Ja, meine Ubuntu ist auch 24.

Dominik

Ubuntu ist 24 ist auch alt, oder?

Ja.

Johannes

Ja, zwei Jahre ungefähr.

Also ich meine, es gibt auch nicht so.

Genau.

Muss man updaten jetzt.

Johannes

Da warte ich auch auf die Punkt 1.

Ja, aber

Johannes

jetzt so 3.15 fast nicht zu sagen, oder?

Jochen

Nee, ich glaube, das ist es im Grunde.

Jochen

Ja.

Jochen

Macht ihr denn, äh, wie ist das denn bei euch?

Jochen

Macht ihr ja auch andere Sachen?

Ihr macht hauptsächlich Python oder ich, ja.

Okay.

Eigentlich, also alles.

Jochen

Weil ich bin in letzter Zeit so ein bisschen gucke auch mal so andere, weil das jetzt halt geht.

Jochen

Das finde ich.

Dominik

Ja, aber das hast doch nur Enthusiasmusjochen und gar nicht von der ästhetischen Expertise getrieben.

Dominik

Also wenn du sagst, du liest keinen Code und du schreibst keinen Code mehr, okay, was dann die Monkeys drunter schreiben, kann dir ja dann auch egal sein.

Jochen

Nee, genau, also das ist mir nicht tatsächlich nicht so richtig total egal, also so ein bisschen egal, okay.

Jochen

Aber nee, die Frage ist aber dann, aber die interessante Frage ist, was ist denn wichtig?

Jochen

Und aber es sind durchaus noch Sachen wichtig, weil man kann das auch richtig oder falsch machen oder kann auch schief gehen.

Jochen

Aber ich mache zum Beispiel, also was ich halt deutlich mehr mache jetzt, überraschend, ich hatte jetzt gar nicht so erwartet, dass das passiert ist, ist halt Rust und halt Swift.

SWIFT.

Jochen

SWIFT?

Jochen

Ja.

Wow.

Jochen

Ja, weil ich bin halt in dem Apple-Ökosystem unterwegs.

Johannes

Ein Alkoholiker, ja, okay,

Jochen

okay, okay.

Jochen

Und da ist es halt einfach die Geschichte, die am besten funktioniert, wenn man halt nativ Sachen machen möchte.

Jochen

Und da ich da nicht so viel, da ich den Code ja nicht selber verstehen muss und lesen muss und so, ist auch ein bisschen egal.

Dominik

Ich bringe dir von der nächsten Konferenz so einen Wimpel mit, den können wir noch hier aufhängen.

Jochen

Ja, aber also es ist halt, es funktioniert.

Dominik

Nicht mal immer einen Kopfäpfel bei den Jochen.

Dominik

Okay, ich dachte ja, nein, wollte ich nicht auf die Idee kommen.

Johannes

Nee, also ich mache tatsächlich meine Arbeit in Python, auch einfach, weil ich selber lesen will und weil ich es selber verstehen will.

Dominik

Ich habe ein paar Sachen Rust gemacht auch tatsächlich.

Dominik

Also oder machen lassen.

Dominik

Die gut funktionieren, aber nur.

Ich versuche seit Jahren Rust zu lernen, aber dann.

Dominik

Aber jetzt brauchst du es ja nicht mehr.

Johannes

Es gibt diesen Spruch, der heißt, ich würde dir wirklich gerne helfen, aber leider habe ich keine Lust dazu.

Johannes

Und so ist es bei mir beim Rust lernen.

Johannes

Ich würde wirklich sehr gerne Rust lernen, aber leider habe ich keine Lust drauf.

Johannes

Und da bleibe ich immer dran hängen.

Johannes

Ich lese immer das erste Kapitel von irgendwas und dann denke ich mir, das ist ja toll.

Du bist alt.

Johannes

Mal weitermachen, ja, vielleicht.

Johannes

Aber ich hoffe, ein paar neue Tricks kann ich noch lernen.

So ein alter Hund bin ich hoffentlich noch nicht.

Ja, da gehen wir aus.

Jochen

Ja, aber ich meine.

Johannes

Was bei mir jetzt ein großer Anteil ist, ist auch ein SQL, aber das liegt einfach an dem Projekt.

Johannes

Ich bin bei einem Kunden, die haben eine sehr große SQL-Datenbank.

Jochen

Ja.

Johannes

Wobei es auch sehr witzig ist.

Johannes

Es ist sehr lustig, weil für mich ist das eine sehr große SQL-Datenbank, die hat ungefähr zwei Terabyte, diese Datenbank.

Das ist groß.

Johannes

Das ist groß, ja.

Johannes

Aber wir haben da einen Experten dazu geholt, einen PostgreSQL-Experten, und der hat gesagt, ja, so ab 20 Terabyte fangen die Probleme eigentlich erst an.

Okay.

Ui.

Dominik

Wenn man sich überlegt, wie viel wäre die ganze Konversation, die du dein ganzes Leben lang gehalten hast, wenn du das in Text aufzeichnen würdest, wie viele Terabyte sind denn das?

Jochen

Nicht so viel.

Dominik

Das passt alles noch rein.

Dominik

Wahrscheinlich von der ganzen Familie und dem ganzen Haushalt und der halben Stadt.

Ja, gut, also ich

Johannes

nehme ja Video auf.

Ah ja, dann, alles mit das Plus rein.

Johannes

Unkomprimiert.

Jochen

Ja, also es ist tatsächlich nicht so viel.

Jochen

Also ich meine, Text, ja, also Text ist alles.

Jochen

Es ist ganz, also wenn man sich anguckt, wie viel ist das denn, was dafür zum Beispiel der Training der L<unk>Ms auch verwendet wird.

Jochen

Das sind halt so gut, die Schätzungen schwanken, aber es sind halt irgendwo zwischen 5 und 15 Terabyte oder sowas.

Jochen

Mehr Text findest du auf der ganzen Welt nicht.

Jochen

Also das ist nicht so viel.

Dominik

Ja, aber das ist ja halt völlig crazy.

Dominik

Du kannst ja überlegen, wie viel du davon produzierst, weiß ich, 80.000 Seiten Dinner 4 pro Monat.

Ja, gut, aber

Johannes

ich bin ja Mathematiker und ich kann dir locker Dinge hinschreiben in wenigen Zeilen, die das ganze Universum mit Zahlen füllen.

Das ist gar kein Problem.

Johannes

Überhaupt gar keine.

Johannes

Graham's Number hier.

Johannes

BB10 Tree Three, kein Problem.

Jochen

Bizi Beaver, ja.

Johannes

Ja, das ist BB.

Johannes

Da gibt es immer mal wieder neue Ergebnisse.

Johannes

Jetzt kürzlich hat man herausgefunden, dass BB10, also die Busy-Beaver-Zahl mit zehn Zuständen, ich erkläre es gleich nochmal, ist größer als Graham's Number.

Johannes

Und Graham's Number ist ja schon so eine Zahl, die ungeheuer groß ist.

Johannes

Die unvorstellbar groß ist.

Johannes

BB, die BB-Sequenz, die Busy-Beaver-Sequenz, das ist die Frage, wie viele Zustände kann eine Turing-Maschine einnehmen?

Johannes

Durch wie viele Übergänge kann eine Turing-Maschine gehen, bevor sie anhält, wenn die Turing-Maschine eine entsprechende Anzahl an Zuständen hat.

Johannes

Und das ist bei 1, 2 und 3 ist das relativ leicht ausrechenbar, weil da kann man einfach alle Touring-Maschinen angucken, die so viele Zustände haben.

Johannes

Und bei 4 und 5 gibt es auch noch Ergebnisse und BB6 ist schon unbekannt, ist schon unberechenbar und ist schon eine Zahl, die über viele Grenzen hinaus wächst, die man sich so vorstellen kann.

Johannes

Und da gibt es eben, wie gesagt, immer wieder so lustige Ergebnisse, wo dann irgendjemand welche Sachen rausfindet, die völlig unvorstellbar sind.

Johannes

Also BB10 ist größer als Graham's Number, Graham's Number ist eine sehr interessante Zahl.

Johannes

Aber aus mathematischer Sicht sind das alles sehr kleine Zahlen, weil es gibt die Tree-Sequenz.

Johannes

Das ist eine Funktion, die sagt, nach wie vielen Zügen ein bestimmtes mathematisches Spiel aufhört und Tree von 1 ist 1, das hört nach dem ersten Zug auf Tree von 2 ist 3.

Johannes

Das hat maximal drei Züge und Tree von 3 ist eine Zahl, die kann man in diesem Universum nicht hinschreiben.

Johannes

Weil wenn jede Ziffer eine Plankeinheit an Platz verbrauchen würde, würde leider dieses Universum auch immer noch nicht ausreichen, um alle Ziffern hinzuschreiben.

Johannes

Deshalb da als, also Datenmengen, Dominik, Datenmengen.

Johannes

Ich mach dir mach dir Daten, kein Problem.

Na gut.

Dominik

Hast du dafür einen Pick, Johannes?

Johannes

Ich habe einen Pick, ja.

Johannes

Ich habe einen Pick, der besteht aus drei Teilen.

Johannes

Wir haben kürzlich bei einem Projekt interne Infrastruktur gebraucht, beziehungsweise wir benutzen diese interne Infrastruktur.

Dominik

Aber die hatte nichts mit den großen Zahlen, so ich wollte nur auf Freirock nennen.

Die hatte nichts mit großen Zahlen, ne?

Große Zahlen sind nur ein Hobby.

Na gut.

Dominik

Da wollte ich dich nicht abwürgen bei den Zahlen.

Nein, nein.

Johannes

Und für diese interne Infrastruktur ist es auch sinnvoll, wenn man HTTPS benutzen kann, also verschlüsselte Verbindungen benutzen kann.

Johannes

Aber die interne Infrastruktur ist so intern, dass die nicht zu Let's Encrypt kommt.

Johannes

Und deshalb ist es schwierig, da Zertifikate zu machen, die gut funktionieren.

Johannes

Und deshalb haben wir da Lösungen dafür gesucht.

Johannes

Und mein Pick ist Lösungen für dieses Problem, nämlich Zertifikate für interne Verbindungen, die trotzdem so funktionieren, wie sie funktionieren sollen.

Und da gibt es drei Ebenen, die ich

euch habe.

Dominik

Snake Oil habe.

Johannes

Nee, Snake Oil haben wir nicht benutzt.

Johannes

Es gibt drei Ebenen, die ich euch mitpicken würde.

Johannes

Die erste ist MKZ.

Johannes

Das sind Tools für mehr oder wenige lokale Zertifikate.

Johannes

Da generiert man sich eine CA und mit dieser CA kann man dann mit einem Skript ganz einfach Zertifikate generieren, die von dieser CA signiert wurden.

Johannes

Und da kann ich mir einen beliebigen Domainnamen raussuchen.

Johannes

Und das ist sehr geschickt, wenn man das auf dem lokalen Rechner probieren möchte, weil man da eben lokal sehr schnell zukommt.

Johannes

Die nächste Stufe drüber ist Easy RSA.

Johannes

Das ist ein kleines bisschen größer, ist immer noch so ein bisschen händischer Prozess, aber ein kleines bisschen besser in der Verwaltung.

Johannes

Ein kleines bisschen mehr als nur Kommandozeilen-Skripte und der Schritt drüber, das ist tatsächlich was, was wir uns überlegt haben, was aber für uns zu groß war, ist die Small Step Step-CA.

Johannes

Das ist ein Server, der ist ACMI-kompatibel.

Johannes

Das heißt, den kann ich mit dem Certbot oder mit dem Let's Encrypt Client betreiben und den kann ich selbst betreiben.

Johannes

Das heißt, ich kann den einfach eine CA generieren lassen und kann dann meinem Sertbot sagen, hol dir bitte deine Zertifikate von diesem Server.

Johannes

Und dann habe ich da meine eigene kleine lokale Certificate Authority Welt.

Johannes

Ich habe schon viele Kunden gesehen, die größere interne Infrastruktur haben und ich bin sehr glücklich, dass es dieses Projekt gibt, Stepca.

Johannes

Und ich finde, jede Firma, die mehr als eine Handvoll Mitarbeiter hat, braucht sowas und sollte sowas betreiben.

Johannes

Mir ist es auch klar, dass das keiner tut, aber jeder sollte es tun.

Johannes

Und deshalb ist das mein Pick für diese Woche, weil wir haben nämlich damit angefangen und haben Internetzertifikate gemacht und jeder sollte das tun.

Okay.

Genau, das war gut.

Dominik

Klingt, also müsste ich das unbedingt einem Agenten zeigen, dass er erstmal einbauen soll.

Dominik

Das ist noch nicht genug zu tun auf der Flotte.

Johannes

Selber, du musst es selber machen.

Jochen

Soll ich was picken?

Dominik

Ich picke es zuerst, ich picke Traffilatura.

Kennt ihr das?

Jochen

Nee.

Dominik

Ja, ein Webkontextextraktor.

Dominik

Man kann ihn einfach auf eine URL schicken und klickt dann in den rohen Text raus.

Dominik

Und das funktioniert relativ zuverlässig für so Kleinigkeiten.

Dominik

Wenn man das braucht, sagt, hey, gib mir mal ordentlichen Text, Trafilatura, Import, Fetch-URL, GIP und dann sagst du Extrakt mal als JSON oder sowas und dann schick.

Sehr schön.

Johannes

Sehr cool.

Dominik

Cool das Attraktionsverinterface für Python.

Jochen

Ah, okay, cool, cool.

Jochen

Ja, okay, dann, was ich picken würde, ist Hurder.

Jochen

Ja, ich habe wahrscheinlich auch schon mal T-MAX gepickt.

Jochen

Also ich habe mit T-MAX habe ich dann so angefangen.

Jochen

Also was macht man?

Jochen

Also ich habe auch lange irgendwie kenne ich wirklich irgendwie so Terminal-Multiplexing-Lösungen verwendet, weil wozu?

Jochen

Aber wenn man ja so ganz viele CLI-Coding-Agents hat, dann muss man ja irgendwie, die hat man auf unterschiedlichen Rechnern, wie da das muss man ja, wie soll man diese Herde unter Kontrolle halten?

Jochen

Das ist ja ein schwieriges Thema.

Jochen

T-Max habe ich angefangen.

Jochen

Und dann diese ganzen Keyboard-Shortcuts wieder gelernt, die ich alle schon mal schon mal gelernt und wieder vergessen und schon mal gelernt und wieder vergessen hatte.

Jochen

Und dann hat mir irgendjemand gesagt, nee, nee, nehme nicht T-Max nimm Zelic.

Jochen

Und dann habe ich Zellage verwendet.

Jochen

Vielleicht habe ich das jetzt auch schon mal gepickt, habe ich auch wieder vergessen.

Dominik

Zellisch nehme ich auch noch, ja.

Jochen

Ja, und das ist auch tatsächlich eigentlich ganz nett, aber ist halt nicht auf diesen Agent-Use Case irgendwie zugeschnitten.

Jochen

Und dafür gibt es halt Hörer und das ist halt, da hast du dann halt in so einer Pain Links die ganzen Coding-Agents einfach alle untereinander und die werden dann sortiert nach, brauchen sie Input oder nicht und halt auch über mehrere Maschinen weg.

Jochen

Das heißt, ich sehe das gleiche Konsolenfenster halt, egal auf welcher Maschine ich gerade bin.

Jochen

Und kann dann halt irgendwie immer auf Ja klicken.

Jochen

Also wenn da ein grüner Bubble angezeigt wird, dann sage ich halt Ja, du darfst.

Dominik

Ich kann eine Antwort sagt immer so ja oder schau doch nochmal selbst oder was denkst denn du?

Ja.

Jochen

Genau, und das erstaunlicherweise macht mich tatsächlich produktiver, was irgendwie Fragen aufwirft, möglicherweise nach, was man, was ich da jetzt so den ganzen Tag noch tue.

Jochen

Aber ja, leider nur die Fragen, keine Antworten.

Jochen

So.

Genau, im Terror.

Jochen

Also es hat mich tatsächlich erstaunlicherweise ein bisschen produktiver gemacht und ja, kann man sich mal angucken.

Jochen

Also ich dachte, ich dachte lange Zeit, ich habe davon gehört, so soll ich es mir angucken oder nicht?

Jochen

Nee, lieber nicht.

Jochen

Und dann habe ich es mir auch mal entfunden.

Jochen

War gut.

Dominik

Okay, also bei mir ist halt so bei mir auf ein normales Terminal und dann Sally J auf einem Screen mit so einer Orchestrierung von Tabs von unterschiedlichen Szenarien, wie, keine Ahnung, meine Dev-Server alle oder einen Blick auf die Loks oder sowas.

Dominik

Und dann würde halt an dem normalen Terminal-Hörder laufen für die Multiplexen der Terminals, die ich sonst nebenbei habe.

Dominik

Also ich lasse zum Beispiel diesen Status, was du gerade erzählt hast, einfach mit in den Titel schreiben von den Tabs.

Jochen

Ja.

Das war dein Blick.

Ja, da haben wir alle Blick.

Jochen

Daraus.

Dominik

Dann sind wir für heute, glaube ich, wieder soweit.

Genau.

Dominik

Vielleicht wird diese Folge ja auch zügig.

Jochen

Ich versuche das tatsächlich mal einzukriegen, genau.

Dominik

Wir hatten letztes Jahr ein Hörertreffen geplant, das heißt, wir haben ja gar nicht in der Ort.

Dominik

Es kommt einfach mal vorbei, sag mal Bescheid.

Dominik

Wir treffen das und so.

Es ist auch einfach viel los gerade.

Dominik

Hallo Python Podcast.de.

Dominik

Nein, viel los, wie kommst du denn darauf?

Dominik

Und bleibt uns gewogen und schaltet irgendwann mal wieder rein.

Dominik

Vielleicht kommt dann noch die eine oder andere Folge raus.

Dominik

Dann schönen Tag, schönen Abend, schöne Nacht, schöne Zeit.

Dominik

Bis bald.

Dominik

Danke, Johannes.

Ja, vielen

Jochen

Dank und danke euch.

Euch auch von daher noch.

Tschüss.