Transcript: Bytes und Strings
Full episode transcript. Timestamps refer to the audio playback.
Ja, hallo, liebe Hörerinnen und Hörer, willkommen bei einem Python-Podcast, Episode 62 heute.
Hi, Jochen.
Ja, hallo, Dominik, herzlich willkommen und hallo, Johannes.
Hi, Johannes.
Hallo zusammen.
Mal wieder, ja.
Ja, mal wieder. Wir wollten heute wieder über ein weiteres Kapitel unseres wundervollen Buches sprechen.
Ja.
Und ja, mal wieder, wir sind tatsächlich ein bisschen spät dran in diesem Jahr.
Ja, wir wollten eigentlich auch noch andere Dinge machen, das hat nicht so richtig funktioniert.
Ja, das sind noch ein paar Episoden.
Wir hatten eine Pause, kreative Pause.
Ja, und da sind noch andere Episoden noch in der Warner-Aktion.
Die kommt aber, die kommt wahrscheinlich tatsächlich vorher, denke ich mal.
Ja, die ist vorher erschienen?
Nein, ja, wir werden sehen.
Ja.
Ja, was ist denn das Kapitel heute?
Johannes hat es ganz gelesen, habe ich gehört.
Ich habe es gelesen, ja, extra heute Mittag noch.
Ja, gut.
Also ich meine, vor Wochen schon.
Ja, wollen wir vielleicht ein bisschen News machen oder so?
Wir haben auch noch so ein paar.
Aber ich wollte kurz sagen, was?
Um was es heute geht.
Ja, okay.
Ach so, ja, dann muss der Johannes es wohl sagen.
Es geht um Bytes und Strings.
Okay, cool.
Cool.
Alle Datentypen ein bisschen.
Und wie heißt das Buch?
Fluent.
Das ist Fluent Python.
Fluent Python, genau.
Ja.
Meine Kinder sind immer beeindruckt, wenn ich ihnen das dicke Buch zeige, wie viel da drinstehen muss.
Ja.
Dass man so große und lange Bücher überhaupt lesen kann.
Ja, das ist auch schon die dritte Episode über dieses Buch, die wir machen.
Das ist ja Premiere.
In diesem Buch, da stecken auch noch ein paar Episoden drin.
Ja, aber so viel.
So viel Content haben wir noch aus keinem Buch gezogen bisher.
Ja, ja.
Also von, hä?
Ich habe hier noch ein paar andere dicke Bücher.
Da ist auch noch Python in a Nutshell und, ja.
Wie dick ist Python in a Nutshell?
Nicht ganz so dick wie Fluent Python, aber ähnlich.
Aber dann ist es eine sehr große Nussschale.
Ja.
Eine Walnuss im wahrsten Sinne des Wortes.
Das ist mehr so der Öltanker unter den Nussschalen, ja.
Das ist.
Es gibt auch noch dieses schöne neue Tango Buch.
Tango 5, dies, das.
Tango 5 by Example.
Ja, ich habe nur noch E-Books und das ist geschickt,
weil die liegen nicht so vorwurfsvoll rum auf dem Schreibtisch.
Ja, das ist natürlich ein Vorteil.
Aber der Nachteil ist, also ich habe auch ganz viele E-Books.
Der Nachteil ist so ein bisschen,
also ich gucke tatsächlich in die physischen Bücher häufiger rein
als in meine E-Books.
Ja, also E-Books.
Also tatsächlich, dann hast du irgendeine Sammlung,
die vergammelt in irgendeinem Ordner.
Und dann?
Also so als Nachschlagewerk, I don't know.
Also es gibt ganz wenige Bücher, die ich als Nachschlagewerk benutze.
Ansonsten tatsächlich Buch aus dem Regal holen,
aufschlagen, reingucken.
Ja, du bist halt analog.
Okay.
Jetzt hast du dich datiert, Dominik.
Jetzt wissen wir alle, dass du alt bist.
Ja, bei Musik ist das auch so.
Da mache ich auch analog Zeug.
Ja.
Kein Computer?
Ja, manchmal auch.
Also ich bin ja auch manchmal modern.
Oder so beides gleich, den Wechsel oder das Sample oder so, ja.
Ah.
Aber schon analoge Sims, das ist schon nice.
Ja, aber wir schweifen ab.
Ja.
Ja, genau.
Aber vielleicht wollen wir ja zuerst mal so ein bisschen,
ich könnte jetzt hier mal so eine Kapitelmarke für News einfügen.
Ja.
Und...
Ja.
Ach, jetzt hat es die Kapitelmarke hier an den Anfang gesetzt.
Was ist denn das?
Schon wieder alles kaputt hier.
Ja, wir haben schon ein Problem mit der Software, Jochen.
Ja, ja.
Nach 62 Episoden sind wir ja immer noch Profis.
Ihr wisst gar nicht, wie lange wir zwischendurch brauchen,
um das Audiosetup hinzubekommen.
Ja, heute auch schon wieder.
Es war jedes Mal.
Ja.
Jedes Mal.
Jedes Mal mit neuen, tollen Dingen, die wir rausfinden
über das Audiosetup.
Ja.
Und wir machen noch nebenbei eigenes, was es nicht kann.
Heute hatten wir ein Echo.
Vielleicht hat dein Mischpult einfach zu viele Kanäle, Jochen.
Ja.
Ja, aber diesmal war ich da.
Diesmal bin ich ja schuld, wenigstens.
Ja, das war wieder was Neues.
Ja.
Wenn man ein Echo hört, ist Johannes schuld.
Ja, weil wenn man viele Kanäle hat und viele Rechner und viele Personen,
dann hat man irgendwie eine kombinatorische Explosion
von vieler Quellen.
Und dann treten halt auch immer mal wieder neue, lustige Sachen auf.
So ist es halt.
Du könntest vielleicht ein Echo...
Das ist ja fast schon die Überleitung zur Softwareentwicklung, Jochen.
Du könntest auch so ein Federhall-Modul da reinbauen,
dass das auch so wirklich so nach...
Ja.
Da kann man dann einen Unterschied...
Können wir auch.
Wir können auch noch ein paar hinzufügen.
Das geht.
Und das ist immer...
Drück nicht drauf, Jochen.
Tu es nicht.
Ja.
Genau.
Also, äh...
Richtig.
Ah, der News.
News, genau.
Es ist nämlich tatsächlich einiges passiert.
Es ist halt immer die Frage, letztes Mal...
Die letzten Episoden von News sind so ein bisschen egal.
Seit über zwei Monaten.
Aber tatsächlich...
Ja, aber News haben doch die Eigenschaft, dass sie neu sind.
Also kannst du nix von...
Es bezieht sich nur auf die letzten zwei Wochen.
Ja, genau.
Also so ganz uralte Sachen werde ich jetzt auch nicht nehmen.
Aber ich denke, es gibt so ein paar Sachen,
die sollte man vielleicht schon mal erwähnt haben.
Also zum Beispiel, äh, ich weiß nicht, äh,
Tailwind 4 ist raus.
Ja.
Genau, das ist vielleicht ein...
Das ist super.
Ja?
Ja.
Also ich wollte jetzt keine, äh...
Ach so, okay.
Ich bin kein Freund von Tailwind.
Ich sag's jetzt ganz einfach.
So, ich bin kein Freund von Tailwind.
Ja, äh, du machst auch...
Was war das, äh, als CSS?
Ich wollte jetzt nicht sagen.
Ein semantisches CSS.
Sogenanntes semantisches CSS.
Ach, das machst du auch.
Ich verstehe den Vorteil von Tailwind nicht,
wo man eine, wo man eine CSS-Deklaration
von Color Red durch eine Klasse Color Red ersetzt.
Dafür brauch ich kein CSS.
Der, der Vorteil...
Das bringt überhaupt gar nichts.
Doch.
Also, ich meine, der Vorteil ist natürlich schon irgendwie,
dass du, du kannst halt irgendwie ins Internet gehen.
Äh, so, äh, mit der, wenn man so alt ist wie wir,
mit einer Krücke und dann einfach per Copy und Paste
irgendwelche Sachen in dein eigenes HTML pasten
und es funktioniert einfach so.
Das ist der Vorteil.
Aber es ist nicht besser als Inline-Styles.
Ja, doch.
Ja, doch.
Die ganzen Vorteile von CSS sind weg.
Nach, also, ja...
Dass du Cascading hast,
dass du, dass du, äh,
dass du sie ändern kannst,
dass du sie semantisch benennst,
dass du sie nicht wissen musst,
was der Style ist,
was, was der bedeutet,
das ist alles weg.
Aber ich habe so eine schöne Utility-Sicht
auf kleine Komponenten,
die lesbar sind,
die genau das machen, was sie sollen.
Und das ist viel, viel hübscher als Inline-Styles.
Nee, ist genau das Gleiche.
Nee, ist das gleiche.
Inline-Styles sind total...
Wir driften schon wieder ab.
Wir driften schon wieder.
Ja, ja.
Ich starte hiermit eine Umfrage unter den Zuhörern,
ob sie wissen wollen,
äh, was wir von Tailwind halten.
Und dann machen wir...
Wollen wir das nicht dann, äh,
machen wir mal mit dem Frontend-Podcast,
den wir irgendwann mal treffen wollten,
das gemeinsam tun?
Ja, das können wir auch gerne machen.
Hätte wahrscheinlich höhere Chancen.
Das wäre gut.
Dann sollen die sich mal erklären.
Da, das, das...
Erklären sie sich.
Da wird die Wahrscheinlichkeit auch größer,
dass das dann tatsächlich irgendwie...
Irgendwen interessiert.
...um die Biotele-Rand, äh, herum passiert.
Weil was, was mit Tailwind-CSS passiert.
Äh, genau.
Aber, ja.
Also, ich bin auch, äh,
eher momentan auf der,
auf der semantischen CSS-Seite unterwegs.
Ja, aber, genau, dafür...
Ah, ja, vielleicht können wir da auch gleich nochmal...
Ja, okay, aber es ist auf jeden Fall da
und das macht einige Dinge besser.
Okay, was haben wir noch?
Wir hatten noch, äh, ah, genau.
Was ist halt, wo ich finde,
das muss man halt schon mal irgendwie erwähnen.
Und ich höre, ich höre das auch mal in anderen Podcasts
und ich höre da immer so viel Mist.
Da dachte ich, na gut,
da muss man auch mal was zu sagen,
dass das irgendwie, äh, äh,
was da wirklich passiert ist.
Irgendwie DeepSeek zum Beispiel ist irgendwie...
Ach so, Sprachmodelle, ja.
Ja, LLMs, ähm, da ist...
Was ist das denn, Jochen?
Was ist denn DeepSeek?
Ja, da ist halt, äh, irgendwie so ein,
so ein Modell oder Gewichte sind herausgefallen
aus einem, äh, chinesischen...
Die haben die alle selber generiert.
Hedgefonds.
Gewichte, ja.
Wahrscheinlich, aber, ähm, genau.
Und zwar, äh, sehr lustig irgendwie, äh,
also das, das Foundation-Model ist halt am,
haben sie veröffentlicht am 24. Dezember 2024.
Ein Weihnachtsgeschenk.
Ja, und zwar völlig kommentarlos.
Und, äh, das hat tatsächlich relativ viel Aufsehen erregt,
weil es halt...
Es ist ein sehr, sehr gutes Modell, muss man sagen.
Also wirklich, wirklich gut.
Und es war auch sehr billig.
Und es ist schnell.
Ja, aber da, da, genau.
Da würde ich dann halt eher, eher so mal, nochmal, also,
weil das hört man immer, aber da, oder ich weiß nicht,
wie, wie, wie, wie, oder wo ist die Quelle dafür,
dass das besonders billig ist?
Ja, DeepSeek selber, die haben, die haben gesagt,
es hat nur 5 Millionen dabei.
Ja, gut, aber ich meine, die haben natürlich unter Umständen
auch eine gewisse Motivation zu sagen, was sie sagen, ne,
insofern.
Die haben die falschen Sachen geklaut, das ist ja fürchterlich.
Ja, das fand ich ja das Allerlustigste,
dass sich dann OpenAI drüber aufgeregt hat,
dass sie das, dass sie die Modelle verändert haben.
Ja.
Da hat jemand Daten genommen, die ihm nicht zugestanden sind.
Ah, das ist zum ersten Mal in der Geschichte von LLMs passiert.
Ja, das ist, das ist lustig, ne, so irgendwie,
das, was OpenAI macht, ist ja im Grunde irgendwie
so dicke Bücher nehmen, so wie Flunenpaiten oder sowas,
das runterdestillieren in ein Modell.
Ohne Lizenz.
Modellgewichte destillieren und jetzt beschweren sie sich
darüber, dass jemand anderes ihre Modellgewichte
genommen hat.
Und die destilliert hat in ein anderes Modell.
Das geht gar nicht.
Das geht natürlich auch gar nicht.
Also als Dieb bei einem anderen Dieb klauen geht halt einfach nicht.
Ja, das ist keine Ehre mehr.
Keine Ehre unter Verbrechern.
Ja.
Wobei man jetzt sagen muss, also diese, diese,
diesen Zungenschlag finde ich auch immer komisch,
wenn man jetzt sagt, das ist irgendwie alles geklaut.
Ich mir denke so, ja, aber irgendwie,
wie kann man das dann damit, also weil ich,
also ich finde, man muss sich entscheiden.
Also entweder man fand diese Coffee-Rite-Geschichte
ja schon immer irgendwie scheiße.
Also so fand ich,
schon immer Kacke.
Das war einfach, ist einfach totaler Müll.
Ja, also was zur Hölle?
Und ja, also Information will halt irgendwie frei sein
und irgendwie jeder soll sich auf den Quellen
irgendwie unabhängig informieren können.
Ja, das sollte eigentlich schon gehen.
Es gab doch mal diese T-Shirts,
das ist das Swat-Thing,
you wouldn't understand.
Ja.
You wouldn't download a car.
Jetzt ging es um die J-Store.
Ach, die Geschichte, ja, mit Aaron Schwarz.
Ja, das ist halt.
Ja, aber auch vorher schon,
mit Aaron Schwarz.
Ja, das ist halt.
Ja, aber auch vorher schon mit Aaron Schwarz.
Ja, das ist halt.
Ja, aber auch vorher schon mit Aaron Schwarz.
Ja, das ist halt.
Mit Pirate Bay und mit Film runterladen
und Musik runterladen und so weiter.
Ja, klar.
Johann, das, also für mich erklärt sich das durch,
ich bin auch so einer, ja,
ich bin auch so einer,
Information muss frei sein
und wenn man eine offene Lizenz dran machen kann,
umso besser.
Und ich kenne auch einige Leute aus der Szene
und das ist generell so.
Ja, aber ich meine,
das ganze GPL-Dings,
das macht man ja nur deswegen,
weil es ein,
weil irgendwie die Welt so verrückt ist, ja.
Das ist ja nicht deswegen,
weil man Lizenzen so geil findet.
Ja, doch, Lizenzen sind doch.
Ja, aber GPL ist ein bisschen.
Aber das Problem ist,
das Problem ist doch,
oder das Schöne,
das Ironische an der Sache ist doch,
dass es ja eigentlich
die multinationalen Konzerne sind,
die sich immer für Copyright regeln
und je drakonischer,
desto besser ausgesprochen haben.
Ja.
Und jetzt machen sie genau das Gleiche.
Ja, weil sie entdeckt haben,
dass ihr Geschäftsmodell darin hängt,
dass man damit Geld verdienen kann.
Das ist so ein bisschen
das Open-Source-Problem, ne?
Ich meine, tolle Sachen machen
und die für alle veröffentlichen
und aber dann dafür nicht bezahlt werden,
können sich halt nur Leute leisten,
die eigentlich eh schon
einen guten, luxuriösen,
privilegierten Lebensmittel fahren.
Ja, na ja, aber ich finde halt,
also was mir halt nicht gefällt,
ist, dass diese Argumentation
aus der Ecke immer inkonsistent ist.
Also das gefällt mir einfach ästhetisch nicht.
Ich weiß jetzt nicht,
ob es auch ethisch schlimm ist,
aber ästhetisch, finde ich, geht das nicht,
weil man kann nicht auf der einen Seite sagen,
irgendwie man darf sich halt
aus freizugänglichen Quellen informieren können
und dann auf der anderen Seite sagen,
ja, aber du darfst jetzt meine Daten nicht benutzen,
um dein Modell zu trainieren.
Das ist einfach ein Widerspruch.
Das geht nicht.
Ja, und vor allen Dingen
mit der gleichen Argumentation
könntest du auch Google verbieten,
seine Webseiten zu indizieren.
Ja, wurde ja auch schon.
Ja, kann man versuchen,
aber das ist ja aus meiner Sicht,
das ist ja offensichtlich absurd, ja.
Aber man könnte doch zum Beispiel
sowas machen wie Robots.txt.
Ja, wie die Zeitungen.
Ja, gut, das machen Leute ja auch,
das kann man auch so tun.
Also wenn ich jetzt hingehe und sage,
okay, wenn ich da irgendeinen LLM-Crawler
von so einer Firma sehe,
dann sage ich dem halt,
nö, du kriegst hier nichts.
Oder was auch Leute ja machen ist,
dass sie dann halt so
quasi so endlos Strom von Sinn
und endlosen Tokens irgendwie erzeugen,
um da Rechenzeit zu verbrennen
auf der anderen Seite.
Und möglichst langsam.
Ja.
Dass der möglichst lange da festhängt.
Also quasi so die moderne Variante
der guten alten Teergrube.
Ja, aber.
Jetzt ist halt so ein bisschen die Frage, ne.
Es gibt ja,
vielleicht der Frühruhrbericht sagen so,
ja, da kommt jemand in meinen Laden rein,
macht überall Fotos
und nimmt alles mit nach draußen
und das ist eigentlich meins.
Und dass der meinen Laden betreten hat,
der ist ja einfach durch die Tür gegangen.
Ich würde eher sagen,
das ist sowas wie,
da stellt sich jemand auf den Markt
und schreit irgendwie so laut,
wie er kann allen Leuten ins Gesicht,
was er da macht.
Und dann hat das halt jemand gehört.
Genau.
Und ja, das ist so der Punkt.
Da kannst du mit dem Urheberrecht
halt nichts machen, denke ich mir.
Ja, genau.
Das ist der entscheidende Unterschied.
Das Urheberrecht schützt ja die drei Vs
irgendwie so vervielfältigen,
verändern, verbreiten.
Ja, aber nichts davon ist betroffen,
wenn ich jetzt halt irgendwie
den Text von irgendeiner Bewerberseite nehme
und dann ein Modell drauf trainiere.
Ja, also die Frage ist halt,
was zum Beispiel
mit wissenschaftlichen Veröffentlichungen ist.
Sind die schon allgemein recht oder nicht?
Nein, aber.
Aber wenn ich jetzt die lese,
also nochmal,
also ich meine im Grunde
dein neuronales Netz und Gehirn
ist ja auch sowas.
Ja, du dürftest das ja,
also durch Lesen
kann man keine Urheberrechtsverletzung begehen.
In meinem Verständnis halt.
Das geht einfach nicht.
Oh Jochen, jetzt hast du aber
eine schlimme Dose aufgemacht,
weil jetzt kommen die Rechteinhaber drauf,
dass wenn du das in dein Gehirn einliest,
hast du es vervielfältigt.
Hast du eine Nutzungsgebühr bezahlt beim Lesen.
Ja, aber das ist ja offensichtlich absurd.
Das kann man doch nicht vertreten, sowas.
Und was mich ärgert,
ist halt, dass Leute quasi
so Leute, von denen ich dachte,
dass es meine Freunde wären,
jetzt online irgendwie
offenbar diese Ansicht vertreten,
dass halt irgendwie Dinge lesen
eine Urheberrechtsverletzung ist,
was totaler Quatsch ist.
Das ärgert mich immer so ein bisschen.
Das ist zwar eine schöne Unterhaltung,
aber ich habe das Gefühl,
wir driften schon wieder
so ein kleines bisschen ab.
Oh, ist das in diesem Podcast
schon mal vorgekommen?
Ja, dann aus unserer Weise.
Ich glaube, in Episode 3
ist es mal vorgekommen.
Ja, ist das echt?
Oh ja.
Gut, dann ist ja nicht so schlimm.
Wenn das nicht so häufig vorkommt.
Dann ist es trotzdem interessant.
Ja, aber genau.
Also ich finde es halt genau.
Aber ja, klar.
Natürlich ist es irgendwie absurd,
wenn sich jetzt OpenAI
über DeepSeek beschwert.
Also ich glaube, die Frage ist,
natürlich hat jeder Konzern
Interesse daran,
so viel Geld wie möglich zu verdienen
mit irgendwas, was er denkt,
was er kontrollieren kann.
Was aber die andere Seite
der Medaille ist,
ist, ob es ein öffentliches Interesse
gibt an so etwas
wie einem allgemein
verfügbaren Sprachmodell.
Einfach weil diese,
ich sage mal,
Schöpfungshöhe von diesen Dingern
doch schon so massiv ist
und die so einen,
also für mich Value-Brand.
Die Schöpfungshöhe sogar hoch ist.
Aber Jochen,
die viel wichtigere Frage ist doch,
ist das Modell wirklich besser
und billiger?
Nein, es ist gut.
Also genau.
Hast du es denn ausprobiert?
Ja, also naja,
ich habe es momentan nicht geschafft.
Mit meiner Hardware
kriege ich es nicht hin,
gerade so.
Leider, leider.
Aber es gibt ja AP-Zugang.
Ja, genau.
Da habe ich es natürlich
schon ausprobiert.
Und das ist tatsächlich gut, ja.
Ja, ist das okay.
Und die Empfehlung,
die ich gehört habe,
die ja auch den Aktienmarkt
irritiert hat,
um es mal so zu sagen,
ist ja,
dass man sich keine Grafikkarte
kaufen soll,
sondern lieber AMD-Prozessoren,
was natürlich eine sehr schöne Ironie ist.
Ja, also.
Die AMD-Prozessoren sind,
die man sich kaufen soll.
Also ich,
ja, die AMD-Prozessoren,
gut,
ja, also natürlich Hauptspeicher
ist für die Dinger,
wenn du die halt
komplett laufen lassen willst,
brauchst du halt viel Hauptspeicher.
Genau.
Und auf einem ordentlichen,
also ich habe so verschiedene Artikel gesehen,
wo sich die Leute
Rechner zusammenbauen
zwischen 2.000 und 6.000 Dollar.
Ja.
Was ja nicht viel ist
für so ein System.
Ja, ja.
Und dann kriegst du irgendwo
zwischen drei und fünf Token pro Sekunde,
was auch nicht viel ist.
Ja.
Aber auch nicht schlecht.
Ja, du kriegst auch noch ein bisschen,
du kannst,
du kannst das Ding wohl,
also das Original-Ding kriegst du
mit ein bisschen Trickserei
und Quantisierung
kriegst du das, glaube ich,
auf einem Mac-Studio
mit 192 GB RAM zum Laufen.
Und da kriegst du mehr
als vier bis fünf Tokens pro Sekunde.
Da kriegst du halt ordentlich.
Ja, okay.
Das liegt ja daran,
dass die Macs
so eine spezielle,
spezielle Speicher-Architektur haben.
Ja, genau.
Du kannst die GPU benutzen.
Aber, also ich meine,
das Problem ist doch,
dass du Macs nur bis 192 GB kaufen kannst.
Ja, das ist auch,
und das ist irgendwie
eine Verdasseljahre gekostet, ja.
Das sieht sich irgendwie
da so um.
Ich habe es gesagt,
Exponential-Kurve
und eine SD-Karte
kriegst du für einen Terabyte,
kriegst du für einen Apple-9.
Genau.
Und so ein AMD-Prozessor
mit vier Prozessor-Dingern,
Prozessor-Sockeln drin,
da kannst du ja
einen Terabyte-Speicher reintun
für den gleichen Preis.
Ja.
Und da hast du dann
gewisse Limitationen
einfach nicht mehr.
Ja, das ist schon richtig.
Ich habe auch heute
irgendwie gesehen
auf einem Postgres-News-Kletter,
so, was machen wir jetzt
eigentlich mit den Monster-Rechnern,
die wir bauen können?
Da hatte jemand auch so,
es gibt irgendwie
diese Epic-AMD-Dinger,
da hast du halt
irgendwie 768 Threads
irgendwie auf zwei Sockeln
und 10 Terabyte Hauptspeicher
für gar nicht mal
so wahnsinnig viel Geld.
Und das ist wirklich absurd,
was da gerade geht.
Also, aber ja.
Ach ja.
Aber manche Leute
brauchen das halt.
Also, ich meine,
es ist doch schön,
dass es das gibt.
Ja.
So schön, dass das geht.
Genau.
Also, nee,
das Ding ist gut.
Aber jetzt diese ganzen
Gerüchte,
die da so im Umlauf sind,
also einmal,
also ich würde sagen,
so dieses,
dass das jetzt billiger ist
oder so,
das sagt jetzt irgendwie diebsig,
aber also,
ich kann das nicht unabhängig,
also ich habe nichts gesehen,
wo ich sagen würde,
da hat das jemand
unabhängig überprüft.
Wenn die Leute fragen,
die sich auskennen,
sagen die,
das liegt genau
auf den Scaling-Kurven drauf.
Da ist nichts mit.
Das ist überhaupt
kein Stück billiger
als irgendwas anderes, ja.
Also, das liegt ganz genau
Das muss sicherlich
eine geschönte Zahl sein,
dass du sagst,
hier, ha, ha,
wir haben das hier
nach da trainiert.
Die Zahl ist richtig,
aber wenn man sich anguckt,
womit würde man rechnen,
wie viel man ausgeben muss
jetzt sozusagen,
dann liegt das genau da drauf.
Das ist nicht irgendwie billiger.
Ja, okay.
Ja, also,
zum Beispiel Anthropic
hat tatsächlich
hat tatsächlich Zahlen
dazu veröffentlicht,
also der Chef von Anthropic,
da irgendwie
Dario Amodei oder so,
der hat auch tatsächlich
veröffentlicht,
wie viel sie,
wie viel es gekostet hat.
Also,
net 3,5, glaube ich,
zu trainieren
in einem Blogpost,
um halt klarzumachen,
ja, das ist nicht billiger,
also, das jetzt
ist nicht billiger gewesen
als das,
was sie gemacht haben.
Sie haben irgendwie
35 Millionen bezahlt,
aber der Witz ist halt,
das war irgendwie
zehn Monate her oder so
und in der Zeit
sind die Preise eben so gefallen,
dass es jetzt halt billiger ist.
Ja.
Und, ja.
Eine schöne Ironie,
finde ich,
an der ganzen Geschichte,
dass diese Firma Diebsieg
sehr viel Engineering
da reingesteckt hat,
um die billigere Hardware,
weil sie die nicht importieren dürfen,
weil die Amerikaner gesagt haben,
das geht nicht,
dass man da solche Dinge betreibt
und deshalb dürfen die das nicht
und deshalb können die nicht
und dann haben sie gesagt,
wir machen es trotzdem
und es hat geklappt
und es ist auch keine Überraschung
für jemanden,
der sich da fünf Minuten
damit beschäftigt.
Ja, also es gibt da diesen
Technical Report,
den sie da veröffentlicht haben
und da sind einige wirklich
gute Tricks dabei und so
und das ist wirklich
solides Engineering,
also kann man sich nicht beschränken.
Einfach um die Exportbeschränkung rum.
Ja.
Top.
Allererste Klasse.
Ja, aber jetzt was,
genau, also das erste Modell,
das wir veröffentlicht haben,
also das war sozusagen
halt in der Fachwelt,
sag ich mal,
durchaus sehr viel Aufmerksamkeit erregt
und da war dann
nach ein paar Wochen auch klar,
das ist wirklich,
wirklich gut, das Modell
und dann kam ja jetzt
irgendwann so Ende,
war so Mitte bis Ende Januar,
ich weiß gar nicht mehr wann,
kam halt irgendwie R1,
wo sie dann so ein Marketing-Bus
drum gemacht haben.
Und das ist aber wirklich,
also das ist jetzt keine Kunst,
also von einem guten Foundation-Modell.
Einen guten Marketing-Bus machen
ist schon eine schöne Sache.
Ja, das ist eine schöne Kunst,
aber das Modell war jetzt kein,
das Modell selber war nicht,
das war nicht aufsehenderregend eigentlich.
Ja, aber Marketing halt.
Aber das Marketing schon,
also sie wussten halt,
okay, irgendwie,
wir haben ein Modell,
das ziemlich gut ist
und jetzt haben sie halt
dann draußen halt irgendwie
eine Geschichte gemacht,
die halt dann auch irgendwie
durch alle Nachrichten gegangen ist
und Nvidia hat irgendwie
so und so viele Milliarden
an Aktienwert verloren.
Also ja,
man könnte natürlich jetzt vermuten,
dass irgendjemand
möglicherweise
das so ein bisschen reingedreht hat
oder viel Geld verdient hat.
Wer denn?
Ja, ich weiß auch nicht.
Ich würde jetzt erwarten,
es könnte irgendwie
so ein Hedgefonds sein zum Beispiel.
Weiß nicht.
Nur so eine Idee.
Aber shorten die?
Shorten die irgendwelche?
Ja, ich meine,
was machen die da?
Das ist wie zu riskant.
Nein.
Also ich weiß es nicht.
Auf jeden Fall
ist das natürlich schon
so ein bisschen
verdächtig
und ja,
auch wenn man
auch da wieder,
wenn man Leute
Leute fragt,
die es ja mit auskennen,
sagen die so,
warum fällt eigentlich
der Nvidia Aktienkurs?
Also ich meine,
klar, natürlich,
es ist eine Blase.
Ja, das ist auch,
muss auch irgendwie
dem klar sein.
Was?
Du hast doch nicht
ernsthaft angenommen,
dass das da irgendein
Fundamentaldatensammenhang gäbe.
Ja, ja, natürlich nicht.
Also insofern,
dass das eine Blase ist,
ist schon richtig
und dass man dadurch
natürlich irgendwie
dann eine Chance sieht,
da irgendwie Luft
auf dieser Blase zu lassen.
Okay.
Ja, das ist ja auch irgendwie,
sehr wenig überraschend,
aber tatsächlich
der Bedarf an Compute,
wenn man jetzt quasi
aus dieser ganzen Geschichte
mitnimmt,
es ist einfacher,
als wir dachten,
irgendwie solche Modelle
zu bauen
und es ist irgendwie
einfacher,
sie zu betreiben,
es ist einfacher,
sie zu trainieren
und dann ist die Konsequenz
eigentlich nicht,
wir brauchen,
wir brauchen weniger,
also wir irgendwie,
wir verkaufen jetzt
weniger Chips,
sondern die Konsequenz
ist natürlich,
wenn man jetzt das
aus so einer ökonomischen
Perspektive betrachtet,
dann werden natürlich
viel mehr Chips verkauft,
weil.
Ja, aber von wem, Jochen,
das ist doch die Frage,
die müssen jetzt nicht mehr
unbedingt die teuren
von Nvidia sein.
Ja, weiß ich nicht,
aber für Nvidia
ist das auf jeden Fall auch gut.
Also sagen wir mal so,
aus ökonomischer Sicht
macht das keinen Sinn,
dass der Aktienkurs
von Nvidia fällt,
wenn irgendwie man jetzt sieht,
dass man mit Computer,
dass man mit halt
irgendwie Chips mehr machen kann.
Aber Jochen,
du glaubst doch nicht,
dass das Brauchen eines Wahls
irgendwas mit ökonomischen
Ratio zu tun hätte.
Nee, natürlich nicht.
Hast du welche gekauft, Jochen?
Hast du Nvidia gekauft?
Ah.
Hast du die geshortet?
Ich kann nicht genug Marketing
was generieren,
um da irgendwas,
nee, keine.
Jetzt diese Podcast-Episode,
die löst sich aus.
Keine Aktienempfehlungen
von Podcastern,
bitte irgendwie.
Nee, ich habe da,
ich habe da nichts gekauft
und nichts verkauft.
Das ist auch vielleicht doof, ja.
Also müsste man
vielleicht eigentlich machen.
Ja, bei den Steuern,
die man jetzt zahlen muss, ja.
Ja, aber also genau.
Also irgendwie.
Aber also du glaubst nicht,
dass Nvidia Mehrwert ist
als die gesamte deutsche Wirtschaft zusammen.
Ja, finde ich irgendwie komisch.
Glaubst du nicht?
Nee.
Ja, okay gut.
Ich glaube es auch nicht.
Ja, aber interessanter Weg
jetzt aus diesem Wissen
irgendwie Geld zu machen,
das hat Diebsig irgendwie geschafft
und ja, ich meine,
das haben sie wirklich gut gemacht.
Also man muss mal anerkennend sagen,
ist irgendwie eine,
und ich habe,
und dann hat jemand auf Mastodon
oder so hat jemand
eine ganz interessante Geschichte gepostet
und das fand ich auch total super.
Er meinte so, okay,
das ist also,
hm, Diebsig hat,
das ist ja ganz gut gemacht.
Lass mal überlegen,
gibt es vielleicht noch
irgendwelche anderen Firmen,
die halt auch total überbewertet sind
oder wo es eine Blase ist.
Nein.
Und man vielleicht so etwas Ähnliches
machen könnte.
Zum Beispiel,
was ja auch immer so ein Problem ist,
hatten wir es gerade schon von Open Source,
ist schwer, schwer ein Geschäft zu,
also wie kann man damit Geld verdienen?
Hm, vielleicht so.
Also wenn man sich jetzt
so etwas überlegt wie SAP,
verdient einen Haufen Geld
für, ja, was eigentlich genau,
ist ein bisschen unklar.
Aber irgendwie,
so wirklich,
ja, ich meine,
okay, das ist jetzt grob vereinfacht.
Ich habe ehrlich gesagt keine Ahnung von SAP,
aber ich würde sagen,
das ist halt eine relationelle Datenbank
und ein bisschen Frontend drumherum.
Ja, aber so viel mehr ist da nicht.
Und vieles davon ist wahrscheinlich
auch gar nicht so gut.
Und wie wäre es denn,
wenn jetzt ein Hedgefonds hingehen würde
und würde mich dafür bezahlen,
doch mal sowas zu bauen,
was ich...
Dich spezifisch, okay.
Ja, oder...
Das ist der eigentliche Trick an der Geschichte.
Ja.
Verstehe.
Oder sonst irgendwen.
Keine Ahnung.
Gut, dafür bezahlen.
Du musst dir sagen,
würde jemand für dich gut bezahlen.
Ja, das halt in Open Source nachzubauen.
Und dann Weihnachten 2025
wirft man halt das Ding irgendwie raus.
Ja, man zeigt aber vorher.
Hat vorher,
natürlich müsste man irgendwie
so ein paar Leerverkäufe machen,
so Tatting.
Und dann,
sagen wir hier so,
SAP-Kunden,
ihr habt den Ding,
das macht genau das Gleiche
und ihr müsst die ganzen Lizenzgebühren
nicht bezahlen.
Das Problem ist halt,
dass das so Customized ist
an die ganzen Schnittstellen,
die es da gibt.
Ach, Dominik,
nur in deiner Realität.
Ja, okay.
Ja, natürlich.
Lass mich doch von deiner Realität
nicht die Worte sagen.
Wirklichkeit verderben.
So einfach ist es wahrscheinlich
natürlich nicht alles, klar.
Aber, also, ja.
Ich glaube,
der einzige Verkaufsfaktor ist,
dass die ganzen,
was sind das,
Silos der ganzen Matrix-Konzerne
von Finance,
über HR,
über was auch immer,
alle ihr eigenes Modul haben,
um ihre Kostenrechnung
ganz wundervoll
auf irgendwelchen Charts
ausgeben zu lassen.
Ja, und es hat nur
wenige Millionen gekostet.
Genau.
Ja.
Okay.
Das heißt, Mighty.
Nochmal zurück zum Thema News.
Das kann man aber schon nachbauen.
Glaube ich, hoffentlich.
Ja, ich glaube auch.
Hast du Lust?
Naja.
Aber, ja, also.
Es gibt einen Grund,
warum du da nicht
viel mit zu tun haben willst.
Ja, klar.
Es ist halt auch irgendwie langweilig,
aber.
Ja, Jochen hat halt noch nicht
die richtigen Investoren gefunden.
Genau.
Ich meine, natürlich Langeweile.
35 Millionen geben dafür.
Das geht,
das geht besser,
wenn man irgendwie
sich das Glas Wasser
dann irgendwie
in einem goldenen Wasserhahn
irgendwie holt.
Das macht dann, ja.
Ich weiß es nicht.
Keine Ahnung.
Ja, aber ich fand die Idee
auf jeden Fall interessant.
Und dann dachte ich so,
ach, das musste man ja,
das muss man mal
wieder mal machen hier.
Ja.
Genau.
News.
Das war diese Leipzig-Geschichte.
Also, ja, es ist interessant.
Also, ich,
insgesamt ist es natürlich
auch eine tolle, tolle Geschichte,
dass es halt irgendwie,
also, ich meine,
ich glaube,
diese Vorhersage von Jan LeCun,
der, der, der jetzt bei Meta
Dinge macht oder so,
dass er sagt,
ja, so auf lange Sicht
werden die Open-Source-Geschichten
gewinnen, ist richtig.
Jetzt natürlich,
irgendwie diepstigt das Modell,
das ist kein Open-Source,
das hat alles überhaupt
gar nichts mit Open-Source zu tun.
Ja, also,
in den Medien hört man immer so,
oh, ein Open-Source-Modell.
Nein, natürlich nicht.
Alles Quatsch.
Ja, Trainingsdaten sind nicht Open-Source,
die Algorithmen,
der ganze Kram ist alles nicht Open-Source.
Ja, aber man kann jetzt natürlich
dieses Modell in Open-Source-Software
verwenden.
Ja, und man konnte es halt auch benutzen.
Es war halt frei verfügbar einfach.
Genau.
Also, es war nicht nur per Schnittstelle
über so ein Projekt.
Keine komische Lizenz, ja.
Also, Lama hat ja immer noch
diese eigenartige Lizenz,
so, du darfst es verwenden.
Es sei denn, du bist Google,
dann nicht.
Aber, ja.
Ja, aber das,
also, das hat mich jetzt noch nie gestört
an der Lama-Lizenz-Vereinbarung.
Bist du nicht Google?
Da bin ich weit davon enttäuscht,
von den 700 Millionen-Maus.
Ja.
Genau.
Wie auch immer.
Ja, wie auch immer.
Genau, das,
ja, das war so die eine Geschichte.
Oh, ja, dann,
also, überhaupt,
ich meine,
das wird jetzt,
es gibt da noch so ein paar
Geschichten,
also, OpenAI
verliert irgendwie
beständig Leute.
Also,
das ist auch irgendwie etwas,
was ich irgendwie
interessant finde.
Also, irgendwie,
also, Sam Altman,
also, ich meine,
ihr habt Sam Altman verloren?
Nein, nein.
Fast.
Fast hätte er
noch mal Glück gehabt,
dass das nicht passiert ist.
Fast hätte er einen Elonist
auch gekriegt.
Ja.
Also,
ja, also,
Alec Redford ist jetzt auch weg.
Und,
die Leute,
also,
es haben schon mal,
also, die ersten,
also,
die Leute,
die Anthropic gegründet haben,
oder halt Dario,
hat halt irgendwie versucht,
die waren doch auch,
die kommen doch auch von OpenAI alle.
Ja, die kommen auch alle von OpenAI.
Das sind die Leute,
die Chachapiti ursprünglich mal gebaut haben.
Und,
die haben aber auch schon mal versucht,
Sam Altman feuern zu lassen.
Es hat nicht geklappt,
dann mussten sie alle gehen.
Und,
ja,
dann haben das nochmal wieder Leute versucht.
Die haben,
es hat auch wieder nicht geklappt,
dann mussten wieder alle gehen.
Und,
es gehen immer noch irgendwie,
diese Leute,
ja.
Ist ein Modell,
kann man machen.
Ja.
Ja,
aber ich meine,
was ich gut finde,
ist halt,
dass es halt wirklich irgendwie
ganz ordentlichen Wettbewerb gibt.
ich muss auch sagen,
die Anthropic-Geschichten,
zum Beispiel zum Programmieren,
finde ich,
ist so nicht so das beste Modell,
momentan.
Und,
ja,
es funktioniert alles super.
Genau,
dann aber auch interessant,
die Neu-
OpenAI-Modelle
O3 oder so,
da gab es große Erfolge
bei irgendwie
AGI und
Frontier Math Benchmarks
und so. Also das ist schon...
Ja, ich glaube, der Trick ist
halt tatsächlich, dass man das
so verknüpft mit so einer Art persistenter
Datenbank, auf
die das zugreifen kann, das Ding.
Persistente Datenbank?
Ja. Was ist das denn? Keine Ahnung.
So ein Sprachmodell darf bei dir auf die Datenbank
zugreifen und sich daran erinnern, was es in der letzten
oder vorletzten Session da abgelegt hat.
Und so eine Transaktion
da machen und von da
weitermachen. Also dass quasi das
Consciousness gesaved werden
kann, was es da hat. Und die Frage,
was halt dann Consciousness dann heißt und was
davon Memory ist und was
an
Prozessen drumherum notwendig
ist, um das zu einem Consciousness
zu machen. Also sowas wie
Reasoning über Zusammenhänge, die man hat
oder Neubilden von Informationen
anhand der Informationen, die man dann schon gespeichert
hat. Aus so einem, ich sag mal Dialoggespräch
und ich würde sagen, jedes Dialoggespräch ist
eine eigene Entität.
Das ist so ein bisschen wie
wenn man mit sich selber einen inneren
Dialog hält.
Die Anfänge von so einer
Subjekt-Objekt-Beziehung. Und ich finde, das geht schon sehr
in die Richtung, wo man was draus bauen kann.
Und so eine Initialzündung
von... Okay, ich finde, das sind so zwei
Aspekte. Also der eine wäre sowas wie dieses
Model-Context-Protokoll von
Anthropic, wo du halt sozusagen
dem Modell irgendwie Dinge geben kannst.
Oder halt, du kannst immer auch Zugriff auf
deinen Rechner geben oder was auch immer.
Du kannst eine Datenbank anbinden.
Das ist die eine Geschichte, dass du halt nicht
immer dieses Retrieval-Augmented-Generation
machen musst, sondern dass du halt dem
Modell sagen kannst, also hier ist eine
Datenbank, die kannst du fragen und hier ist irgendwie sonst was.
Okay, gut, aber es hat natürlich
die Stelle für dasselbe. Ob du jetzt Rack machst oder
nicht, ist fast egal.
Ja, genau.
Also macht inhaltlich keinen großen
Unterschied. Das andere, diese
Reasoning-Modelle, das ist
halt irgendwie, das ist halt so eine Kombination von
irgendwie
dem, ja, Token-Generieren,
was halt alle
Modelle da irgendwie machen. Das musst du
erklären, was du damit meinst?
Naja, dass du halt einfach Next-Token-Prediction machst.
Okay. Das macht ihr alle? Ja.
Aber der Unterschied jetzt zu den
Reasoning-Modellen ist halt, dass man jetzt sagt, okay,
man generiert...
Autsch.
Äh, generiert halt so Chains
of Thought, und zwar jede Menge. Ja.
Und wählt dann halt die, die irgendwie
in sich konsistent aussehen, aus, als
das könnte die Antwort sein. Ja.
Das heißt, man kombiniert irgendwie so eine Art Suche,
also irgendwas, wie wir
im Schach irgendwie, wo man halt auch Varianten
sucht. Ja, jetzt sind wir halt nämlich in einem Graph drin.
Und diese Graphen haben quasi ja auch States,
die irgendwas machen. Und
jetzt kann man vielleicht hingehen und kann
das kuratiert
hardcoden, in verschiedenen
Szenarien, das nicht durch das LLM machen lassen,
sondern so verschiedene kuratierte Szenarien
vorgeben, die ein State sind
und zwischen denen man sich hin und her bewegen kann.
Und dann kommt man
wieder auf noch einen Schritt weiter.
Ja, keine Ahnung. Also ich würde
sagen, man kann jetzt halt irgendwie traden zwischen...
Also ich würde jetzt überlegen,
wo man die...
Wo man Computer ausgeben möchte, zu
Inference-Time oder bei Trainingszeit.
Und für ein optimales Ergebnis muss man
halt irgendwie wahrscheinlich ein bisschen mehr
Computer in Inference-Zeit
verlagern und halt
ein bisschen mehr Suche machen.
Aber dass das so gut
funktioniert, ist halt eine Überraschung. Also das war halt auch
nicht klar, dass das geht. Und ja,
es macht aber einen riesen
Unterschied. Und ich meine,
der Arc-AGI-Benchmark ist halt komisch
benannt, weil er hat nichts mit AGI zu tun.
Aber ja,
das kriegen Leute auch immer in den falschen Hals.
ja, Frontier-Math ist aber auch...
Ja, oder auch super interessant, wie heißt
das Ding?
Dieser Coding-Benchmark,
äh...
Ah, ich hab's
vergessen. Aber
das sind auf jeden Fall irgendwie... Sie haben echte
Pull-Requests genommen, gegen Projekte
wie zum Beispiel Django ist da halt auch mit drin,
aber halt auch noch so ein paar andere.
Scikit-Learn ist auch drin. Und haben
dann geguckt, wie viele von den
offenen Pull-Requests würde sozusagen
ein LLM
halt lösen.
Und da kommen die
guten... Also es gab immer schon spezialisierte Modelle,
die ganz gut abschneiden, aber das ist halt irgendwie...
Ja, es ist halt auch nicht so
einfach, die irgendwie laufen zu lassen.
Und ja, aber die
normalen LLMs waren halt da nie
so wirklich gut. Bis jetzt auch die
Reising-Modelle, die sind alle auch super. Also die kommen auch schon da
auf fast 50% oder sowas.
Und das ist natürlich schon krass. Also irgendwie...
Ja.
Ja, das ist auch nicht so schlecht.
Ja.
Äh, genau.
Oh, dann was wir...
Dann haben wir eine Mail gekriegt.
Das reicht auch gerade noch so.
Äh, PyCon Austria
ist jetzt irgendwie.
Oh ja, wir sollen das... Und wir sollen das ankündigen.
Das ist am 6. und 7. April
2025.
Äh, Hochschule
Burgenland in Eisenstadt.
Ja, genau.
Kann man sich mal ansehen.
Ähm...
Was haben wir noch?
Äh...
Wir müssen mal eine ganze LLM-Folge mal wieder machen.
Ja, ja, ja. Ich hab mir da auch schon so ein paar Sachen
aufgeschrieben. Genau. Da brauchen wir halt noch irgendeinen Gast.
Ja.
Wenn sich da irgendjemand berufen fühlt oder so.
Genau. Wir suchen da jemanden.
Oder jemanden kennt.
Oder jemanden kennt, den man mal fragen könnte.
Dann, äh, wär das wahrscheinlich ganz nett.
Da gibt's auch so viele Tools und Dinge, über die man mal reden müsste.
Also gerade dieses ganze Thema, äh,
Programmieren mit LLMs finde ich halt sehr interessant.
Ich mach das ja auch viel.
Und, ähm, ja, das, äh...
Ja, und da kann man auf unterschiedliche Arten, kann man das tun.
Ja.
Genau. Und da kann man auch mal die ganzen Tools angucken
und sowas. Ja.
Ich hab noch zwei News-Items, die ja allerdings in eine ganz andere...
Richtung gehen. Okay.
Der, das erste Item ist,
dass, äh, Microsoft
bei Nature eine Veröffentlichung
eingereicht hat. Mhm.
Wo sie, äh, sagen, sie haben
einen, äh,
Quantencomputer mit topologischen
Qubits. Oha.
Gefunden.
Hm. Okay. Und, äh,
das ist wohl eine andere Art, äh, Qubits zu machen,
die stabiler ist. Und das ist
aber, also da ist sehr viel,
sehr viel,
sehr viele Worte drin, die man sich mal von einem LLM
an erklären lassen müsste.
Special kind of Qubit
built using non-Abelian
Anions, which are excitations that
can exist in a two-dimensional medium.
Ähm, würdest du
kurz was dazu sagen, bitte, lieber Johannes?
Nee, ich kann da gar nichts dazu sagen.
Was ist denn überhaupt topologische
Quanten? Keine Ahnung. Äh, es war
einfach nur in der Veröffentlichung, dass es einen
Durchbruch gab in dieser Art Quantencomputer.
Ah, okay. Und das, äh, hat
auch einige, einige Wellen erzeugt.
Ja, also Quantencomputer wäre schon voll cool, aber
ich, also alle bisherigen Durchbrüche
waren nicht so richtig
Durchbrüche, ehrlich gesagt. Ja, sind, sind noch nicht,
sind noch nicht so weit gekommen. Und, äh, ja.
Aber es wird Zeit, dass man zu
Postquanten-Kryptografie wechselt.
Ja, das wird man vielleicht machen. Der hat auch einen tollen Namen,
dieser Typ, der heißt Majorana.
Majorana. Ja, das, äh, das
liegt daran, dass das, äh, das ist so ein,
das ist tatsächlich der,
irgendein Autor, der
Das hätte jemand so viel gekifft.
Majorana Zero Modus.
Egal. Das zweite
News-Item ist tatsächlich wesentlich
spezifischer für Python
und ist auch erst zwei Wochen alt,
ungefähr.
Äh, und zwar gibt
es, äh, einen PR, der jetzt gerade,
äh, durch die Review
geht. Und, äh,
da wird ein Tail-Calling-Interpreter
äh, umgesetzt. Ah, ja, ja. Ja, das
ist cool. Was das genau ist, ist,
spielt auch keine richtig große Rolle. Tail-Call-Optimization
ist so eine Möglichkeit,
um, äh, Stack-Frames zu eliminieren,
wenn man weiß, dass man nicht mehr dahin zurückkehrt.
Das Wichtige daran ist,
neun bis fünfzehn Prozent,
äh, Geschwindigkeits-
Improvement. Ja. Das ist schon, das ist
schon massiv. Das ist massiv, ja, richtig.
John Haberman war das, oder Josh Haberman?
Äh, Ken Jin
war das. Aha.
Und, äh, ist schon, ist,
äh, es ist jetzt schon gemerged und, äh,
wird mit drei Vierzehn veröffentlicht.
Noch nicht in den, nicht in den
Default-Sachen, also man muss das, äh,
beim Konfigurieren, beim Compilen,
äh, gibt's dann einen Schalter, den man
Und, und das funktioniert irgendwie auch nur bei
neueren Compilern. Das ist auch leider der Grund, warum
sie es nicht, äh, äh, äh,
per Default anmachen, weil du brauchst halt wirklich
neue Compiler-Personen. Es gibt nur bei LLVM. Ja.
Weil der C-Standard, äh,
in dem C-Standard gibt's so Sachen, die das nicht,
äh, können.
Der C-Standard, äh,
der braucht immer Register bei so einem,
bei so einem Funktionsaufruf und, äh,
deshalb wurde das auf Ebene von
der LLVM-IL, ja, also
dieser Intermediate Representing,
der Presentation gemacht. Und da kann man das
nämlich wegeliminieren. Da gibt's so ein, vielleicht, das heißt
Must-Tale, äh,
das sind alles technische Details. Das Interessante
ist, dass da wirklich einfach
mit einem, mit einer neuen Umsetzung
einfach 10 Prozent, 10, 15 Prozent
mehr Performance rauskommen. Und das ist schon,
das ist schon fantastisch. Ja.
Ja, voll gut.
Stimmt.
Ja, ansonsten,
genau,
hab ich jetzt, glaub ich, gar nichts. Ich muss mal
scrollen, da ist so viel Zeugs, aber
...
Das Alter ist schon vorbei, ist nicht mehr
in Höhe. Ja, also wir haben auch,
das sollte, da sollten wir vielleicht auch einfach was zu
sagen, äh, zu dem, zu dem,
wir hatten mal aufgerufen, ob, äh,
Leute, äh, sich melden könnten, die Interesse
drin haben, irgendwie so ein Hörertreffen mal. Ja,
da gab's relativ viel. Und da gab's relativ viel
Feedback tatsächlich und, also,
sagen wir mal so ausreichend genug, dass wir das
jetzt wohl tatsächlich ernsthaft ins Auge fassen müssen.
Ähm, ja. Keine Ausrede mehr.
Und das ist ... Ja, aber es ist ja leider nicht in Süddeutschland,
deshalb ist es eigentlich auch egal, ob man das
macht, oder? Ja, du kommst ...
Genau. Das ist eingeflogen.
Wir können ja mal gucken. Also, ich würde,
würde denken, dass es gut wäre, das irgendwann zu
machen, wenn es ein bisschen wärmer ist, dass man auch irgendwo
draus gehen kann, wo es irgendwie
schön ist. So Mai, Juni. Irgendwie so,
genau, genau.
Äh, und, äh, dann ...
Agree. Brauchen wir noch eine, eine
Location irgendwie, und dann müssen wir den, den Johannes
irgendwie ... Was wollen wir denn, ähm,
also, ich würde eher so, äh, Erwachsenenzeit
nehmen, also, irgendwie so Mittags anfangen.
Ah, okay. Anstatt abends. Ah, die
sollte Erwachsenenzeit.
Ja. Ja. Und dann kann man
sich doch irgendwie ein schönes, was Grünes raussuchen,
oder? Muss ja nicht jetzt so ... Ja. Ja.
Ja, klingt voll gut.
Ja, aber, und wir können auch schon mal
sagen, es wird wahrscheinlich eher so Rheinland,
das heißt Köln, Düsseldorf. Ah, Düsseldorf
wird ... Ja.
Ja. Kleiner Spoiler. Ja.
Ja, okay. Ja. Ja, aber es waren viele Leute, die
hier sagten, die kommen hier vorbei, und dann deswegen machen wir das einfach
hier. Ja.
Mhm. Genau.
Ja, also, aber dann, das waren
dann auch schon alle News, die ich so hatte, glaube ich.
Ja.
Ja, war ja einiges.
Wolltest du nicht noch irgendwas erzählen von der, äh,
Voskonten? Ach, Voskonten. Ja, genau,
doch, ja, äh,
könnte ich, äh, genau, auch. Ja, äh,
und, ähm, ja, warte, da mach ich mal
am besten mal eine Kapitelmarke und sag hier mal, äh ...
Ja, äh, Peikon Web war auch noch.
Ach so, genau, da kannst du ja mal was erzählen.
Dann nenn ich die Kapitelmarke einfach Konferenzen
nachher. Ja. Ja, so viel
kann ich dazu eigentlich gar nicht erzählen.
War, war interessant. War interessant? Ja.
Okay, wie viele Leute waren denn ungefähr da?
Boah, schwer zu sagen.
200? Okay.
Also, waren nicht so riesig groß.
Wo, wo fand das denn statt in Berlin?
In Berlin, ähm, ach so, ähm,
CC, irgendwie so ein
Center, das war relativ draußen in, äh,
wer ist das da?
Viertel, Moment, ich muss
mal kurz schauen. Ja, in irgendeinem
Viertel in Berlin. oder so, ja.
Okay, ja. Also, genau, irgendein Haus
in irgendeinem Viertel in Berlin
war, also,
war nicht so groß wie. Ist ja eine genaue Beschreibung.
Ja, genau.
Ja, ich, wir können die Konferenz einfach
verlinken, dann kann man da nachgucken. Ja.
Okay. War, war eine interessante Sache dabei.
Fand ich ganz gut. Aber wie war so die
Atmosphäre? Ich meine, PyCon Web klingt
für mich jetzt nach Webentwicklung und da
gab's da irgendwelche interessanten, also
ich meine, klar, also. Vielen Dank, ich hab
ja viel über UUIDs gelernt.
Ah, okay. Hm. Ja. Das find ich
gut. Über die neuen, oder?
Äh, sieben oder acht, ja.
Ja, das sind die neuen.
Okay, ich hab immer noch nicht so richtig verstanden, wofür man die
unbedingt braucht, aber gut. Ja, dann,
wenn du den Talk hörst, dann weißt du. Ja, jetzt mal auf die PyCon Web
gehen. Okay, gut, dann, äh,
genau, dann muss ich mir den wohl mal angucken.
Ja, ich hab's tatsächlich umgestellt in
Dango auch jetzt auf sieben, glaube ich,
ja. Ja. Ist leider
eine extra Lip und man muss so ein klein, bei Dango
geht's nicht einfach so, aber man
kann das quasi dann mit einem anderen Import
versehen und dann funktioniert's als sieben und
die sind auch dann geordnet und so.
Das ist sehr, sehr schön.
Ah. Ja.
Genau, ich war jetzt am Anfang
Februar, ähm, auf der
FOSDEM in Brüssel und, ähm, ja,
nee, das war auch ziemlich cool irgendwie,
das war riesig, also,
ähm, ja,
das ist immer so ein bisschen, also es ist einfach, es ist
irgendwie zu viel, also man, es sind
einfach wahnsinnig viele Leute, ich weiß nicht, wie viele da waren,
aber es könnten so 10.000 gewesen sein
ungefähr und das
findet halt statt immer auf diesem Campus der,
ähm, Freien Universität
Brüssel irgendwie und
der ist halt auch dann komplett voll.
Es gibt halt, ich weiß nicht, wie viele Tracks, äh,
keine Ahnung, viele.
30 oder so? Ja.
Es ist halt, also
allein sich das Programm anzugucken ist halt
schon ein Ding der Unmöglichkeit,
weil, äh, es ist irgendwie,
sobald man einmal durch alle
Talks durchgescrollt hat für den Tag und
dann mal geguckt hat, sind die Talks, die man sich angucken
wollte, schon vorbei, weil es dauert einfach zu lange.
Und, äh. Hast du einen Sitzplatz bekommen irgendwo?
Ja, ja, doch. Also, klar,
es war schon auch sehr voll, also, das
ist, äh, aber, äh,
gerade bei, äh,
bei den großen Sälen, ähm,
kam man eigentlich meistens dann doch noch
irgendwie rein. Manchmal musste man ein bisschen früher da sein.
Ja, ja, ja,
es war wahnsinnig voll. Es war, aber es war auf der anderen Seite
auch wieder gut zu sehen, dass halt irgendwie,
äh, also oft hatte man ja jetzt das Gefühl, auch
gerade nach Covid, dass, ähm,
dass
einfach Sachen irgendwie leerer waren,
ne, so, äh, dass nicht mehr so viele Leute
zu irgendwelchen Veranstaltungen gehen und das alles
irgendwie so ein bisschen, ja, und
dann, also, bei der, bei der Subscriber
war das zum Beispiel auch so, dass man sagt, ja, also, es sind gerade
so viele Leute, dass sich das halt irgendwie so halbwegs
lohnt, aber es sind deutlich weniger
als bei der letzten Konferenz vor Covid
und bei Meetups hört man das auch immer,
so viele haben auch zugemacht oder bei manchen
ist es halt so, naja, da kommen jetzt ein bisschen weniger
als vor Covid, aber es kommen wieder welche
und jetzt bei der FOSDEM war das halt so,
äh, so,
einfach, man, man geht da hin und dann
stehen einem Leute auf den Füßen,
weil es halt so voll ist, also, es war einfach, und man
kommt in die Säle nicht rein, weil es halt irgendwie,
weil da Riesenschlangen davor sind.
Also, da geht wieder einiges, also, das ist halt, war
richtig, ähm, da war richtig
was los, genau.
Den Python-Deathroom hat Marc-André gemacht, oder?
Genau, ja, das war
am Sonntag, das war halt
am Wochenende, Samstag, Sonntag, Sonntag war
Python-Deathroom in so einem, ja,
Hörsaal da und
da waren einige sehr coole Talks dabei,
ähm, ich hab da nicht alle gesehen,
also, gerade morgens war ich halt noch
irgendwie nicht da,
äh, und dann so
ab mittags hab ich so drei, vier gesehen,
glaube ich,
ähm. War das auch Hybrid? Also, das finde ich
ja zum Beispiel bei den Großen, ne, Europice und
Funnel ist immer toll, da konnte man dann,
während man einen Talk gerade
auf dem Telefon weiterguckte, auf dem Nachhauseweg
ins Hotelzimmer, auf dem Hotelfernseher
zu Ende gucken, dann kurz in die Sauna gehen
und dann zum Talk auf dem Gang wieder dabei
sein drüben. Ja, das, das
geht da schon, das geht da auch, also, es gibt
einen Stream von allen
Tracks, sozusagen. Ja, genau,
das ist cool. Äh, genau, also,
aber das ist alles sehr weitläufig da, das
heißt, man kann da nicht, also, das hab ich, auf der Karte,
also, Brüssel ist irgendwie viel, äh,
weitläufiger, als ich jetzt gedacht hätte,
also, Brüssel, auch keine so riesige Stadt,
bisschen größer als Düsseldorf vielleicht, aber nicht so
wahnsinnig viel größer, und Düsseldorf ist ja so eine Stadt,
da kann man einfach mal so, so, in einer
Dreiviertelstunde so von Osten nach
Westen oder Süden nach Norden durchlaufen.
Was? Ja, also,
durch den Kern. Also, du wohnst
hier halt auch im Zentrum, das ist ja in jede Richtung
einmal, das ist dann schon anderthalb, aber, ja, okay.
Ja, okay, also, ich meine jetzt, also, wenn man
eine Achse durchläuft, dann, das dauert
gar nicht so lang, das sind halt drei, vier Kilometer, mehr nicht.
Naja, also, ich brauche, wenn ich auf die andere
Reihenseite brauche, brauche ich anderthalb Stunden.
Nee, das brauche ich nicht. Doch, von mir aus schon.
Ach so, ja, gut, okay, okay, ja, ja, okay, aber du bist ja
noch nicht am, ja, okay.
Ich bin nicht mal im Ostrand, ich kann damals
zu Johannes hochlaufen, hat doch mal eine anderthalb Stunden
gedauert. Ja, äh, okay.
Ja, gut, es hängt dann auch noch ein bisschen
davon ab, aber sowas so, also, mein, mein,
mein Gefühl für Städte, die ungefähr so groß sind
wie Düsseldorf, sagt mir halt, ich kann da irgendwie
hinlaufen, wenn ich da irgendwo in der Nähe wohne.
Das sollte kein Problem sein. Ja.
Und das ist in Brüssel aber falsch.
Also, das sah auf der Karte aus so, irgendwie,
das ist da genau in der Nähe, und dann war das
halt aber zu Fuß 40 Minuten.
Und das war... Das geht ja noch. Ja, aber...
Also, ich, in Berlin musste ich tatsächlich 40 Minuten
mit der S-Bahn fahren.
Ja, also, genau,
klar, in Berlin ist natürlich, Berlin ist auch riesig,
aber da, das wäre mir klar gewesen,
dass Berlin sehr weitläufig ist, das weiß ich, aber
Brüssel war mir jetzt nicht so, und das,
das, das irgendwie Öffentlich-Verkehrssystem in Brüssel
ist auch irgendwie, ja, so ein bisschen
komisch, aber, äh, ja,
und man braucht auch sehr lange da. Aber,
äh, genau, also, da kann man nicht einfach irgendwie mal
kurz ins Hotel oder in die Sauna und dann
wieder zurück oder so, das ist, da dauert...
Du hast dir einfach ein falsches Hotel ausgesucht. Ja.
Sieht das sonst aus? Ja, gut. Vielleicht.
Ja, aber, genau, also,
äh, ja, also, ich hab da auch ein, genau,
in dem, äh,
einen Talk, äh, gehalten über, über,
über mein, äh, Resümee,
äh, irgendwie, Side-Project.
Django-Resümees. Django-Resümee.
Ja, wir machen gerade unsere CVs
schick. Genau, weil
das muss man ja so,
auf und zu machen, oder, äh,
so, wenn, ja.
Kann man schon mit Voucher-Token, äh, direkt einmal
aufrufen für, das ist dann eine Woche gültig, und dann kann man
sich das alles schon angucken, die ganzen Projekte und sowas, ja?
Ja, genau, genau, das
ist da auch drin, aber im Wesentlichen ist es
halt irgendwie so ein JSON-Field,
wo der ganze Kram halt drinsteht. Jochen schreibt
sogar die ganzen Token mit ins JSON-Field rein, da steht
einfach alles in dem JSON-Field drin, hätte ich jetzt gar nicht
so erwartet. Ja. Alle Plugins
so, einfach ein JSON-Field, alles rein, papp.
Ja. Fand ich ein bisschen seltsam. Postgres,
als MongoDB verwenden. Ja.
Ja, genau. Aber, also, die Idee ist,
äh, ist sozusagen... Ein bisschen schneller.
Ja.
Genau, und man macht halt immer nur eine
Query, äh, pro,
wenn man eine Webseite rendert,
weil man muss immer nur dieses eine Ding aus der Datenbank holen,
fertig. Ähm,
na ja, aber der eigentliche Grund, warum ich das an der Stelle
so gemacht hab und nicht irgendwie
quasi so, äh, in Normalform
so normalisiert irgendwie,
äh, in der Datenbank, äh,
äh, schreibe, wie man das vielleicht normalerweise
tun würde, ist, dass ich gern hätte,
dass man das durch Plugins erweitern kann.
Und wenn man jetzt ein Plugin
schreibt, das halt eigene Tabellen mitbringt
und so, dann wird es schnell sehr eklig,
weil da muss man sich überlegen, okay, jetzt müssen
die Daten ja da irgendwie aus den Tabellen rausgeholt
werden. Jetzt muss irgendwie das Hauptding irgendwie
wissen, wie all diese Tabellen sind, oder den muss man
halt irgendwie, dann muss man dagegen joinen
oder, äh, das wird alles sehr komisch.
Ja, aber da muss man halt auch eine Liste pflegen mit, äh,
offiziell supporteten Plugins, sodass die alle
auch identische Keys nicht haben, sondern dass die...
Ja, das, das muss man vielleicht nicht, aber, also,
man kann man wahrscheinlich auch irgendwie automatisch machen,
aber das ist...
Das ist halt dann schwierig.
Äh, während wenn halt man sagt, also,
äh, wenn du Plugins schreibst,
dann, äh, ist sozusagen die Anforderung,
dass das etwas sein, also, die Daten
müssen halt etwas sein, was man nach
JSON serialisieren kann und wieder, äh,
ja, so, dann
war's, reicht das eigentlich schon.
Äh, und, äh, ja,
dann muss man halt sonst nichts machen und
kann einfach den Namen des Plugins nehmen und
darunter halt die ganzen Daten speichern.
Ich hab ja gesehen, Name Collision, zweimal das gleiche
Plugin-Clown gleich nennt. Ja, das geht natürlich nicht.
Wenn es nicht blüht. Aber, ähm,
aber das ist, da hast du ja... Das Problem hast du ja immer.
Kontrolle drüber, wenn du, wenn du das halt
verwendest, dann, wenn du dann zwei Plugins mit dem
gleichen Namen nimmst, okay, dann, naja, hast du halt
einen Fuß geschossen. Aber, ja,
genau, das ist so, äh, ja.
Und es macht halt so HTMX
Zeugs und, äh, solche
Dinge.
Äh, genau, und ich hab so ein bisschen,
ich hab eine Demo, äh, gemacht mit, ähm,
so Code-Generierung
über LLMs.
Und, äh,
äh, genau, die hat auch so halb
funktioniert, insofern eigentlich ganz gut.
Ähm, äh, wo ich einfach
so Few-Shot-Learning mache, also ich packe halt,
äh, quasi die Plugins, die es
gibt, in Kontext von einem LLM
und sag dann... Gib mal ein neues Plugin.
Gib mal ein neues Plugin für ein neues Prompt.
Und, äh,
dann, äh, kommt da halt
irgendwie Kram von einem LLM zurück
und, äh, den schreibe ich dann halt auch
in eine Datenbank und kann das aber auch live
direkt testen, wie es so halt so aussieht.
Und, ja, das hat eigentlich ganz gut funktioniert.
Ich fand das Projekt interessant. Das hat so verschiedene Aspekte
gleichzeitig. Du hast ja, also dieses Plugin-System hat auch so ein
Auto-Crud und so.
Ähm, ja, das war, war,
also, äh, in der Lehre technisch interessant. Ich fand's
nicht so einfach zu benutzen. Vielleicht bin ich auch zu doof
dafür. Ja, ist es auch nicht. Es ist alles
immer experimentell. Also, ich meine, man kann
ja mal, äh, einfach drauf gucken, das ausprobieren.
Ich hab überlegt, ob ich's forken soll und dann hab ich's, äh,
anders implementiert. Ja.
Ist ja auch, ist ja auch okay. Genau.
Dann hat mir irgendjemand gesagt, es gibt so ein
Standard-JSON-Schemer
für Resume,
Resumes. Aha. Das würde ich auch
gerne kennen. Genau. Da, äh,
da muss ich mal gucken, ob ich da nicht dann Import oder Export
dahin irgendwie auch reinbaue, weil das
wäre natürlich vielleicht auch interessant. Da gibt's auch dann schon jede Menge
fertige Templates, um das
halt irgendwie aussehen zu lassen.
Hm, muss ich mal gucken. Oder ob ich das irgendwie einbaue,
das, das weiß ich noch nicht, ähm.
Das würde sich aber mit deiner Plugin-Architektur
jetzt beißen. Nö, das könnte man
ja auch so machen. Als Sub-Keys von
dem, ja, okay, verstehe. Ein Plugin dafür machen.
Genau. Ja. Mhm.
Mhm. Ja, okay.
Ja.
Ja, mal schauen. Genau.
Das, äh, das war, das war eigentlich
ganz... Das ist auch jetzt tatsächlich der perfekte
Zeitpunkt, so den Mietaufruf zu bringen wieder, ne?
Äh, Miet? Den Mietaufruf.
Hm? Man kann uns gerade mieten.
Ja, sollten wir auf jeden Fall an der Stelle machen.
Uns kann man mieten, den Jochen kann man mieten und den
Dominik kann man mieten. Ja. Dominik,
dich kann man inzwischen auch mieten. Ja, mich kann man auch
wieder. Ja, das ist ja richtig, das, genau, das konnten
wir bisher ja gar nicht announcen, aber jetzt schon.
Ja, doch, ja, man konnte mich auch schon vorher ein bisschen mieten,
aber jetzt auch wieder richtig.
Und den Johannes kann man auch mieten. Ja.
Wir sind alle mietbar. Und ich hab sogar noch mehr Leute,
die man mieten kann. Wir sind sogar eine richtig große
Mietgilde.
Ist das, ist quasi ne, ne,
ne WG.
Ja, also ich würd schon sagen, ist ein gutes Projektteam, was, äh,
ordentlich, äh, Dampf jetzt auch mal draufkriegt und
halt nicht nur so ne, so ein paar kleine
Männchen, sondern ordentlich.
Ja. Also wenn ihr, wenn ihr, liebe
Zuhörer, ein Projekt habt, dann
mietet uns.
Genau.
Ja, ansonsten,
genau, was ist, äh, was ich da noch gesehen hab,
an vor,
da gab's einen von Thibaut Collat
über die Zukunft von Django.
Ich wollt grad sagen, das ist doch der Mensch, der ist in Django,
die, äh, Presidency?
Der ist jetzt, genau, Präsident der Django Software Foundation.
Apropos Django,
da gibt's doch jetzt auch bald wieder so ne Konferenz.
Ja, genau, die ist am,
irgendwann Ende April. Was ist denn da? Ende April?
Ist das ein inoffizielles
Hörer-Eintreffen? Ist die Woche
nach Ostern. Ja.
Also wir werden alle da sein,
daher, ja, wünschen wir das.
Könnte man. Und es ist in Dublin.
In Dublin, oh ja, cool, cool, cool.
Ja. Und ich darf kein Bier trinken.
Fürchterlich. Naja.
Aber in Dublin, gibt's in Dublin
irgendein Bier, was man trinken müsste?
Ja, ich hab kein Bier, weiß nicht.
Irischer Wein, hab ich gehört.
Nein, du gehst in jeden Pub und da gibt's on tap
einfach die leckersten Sachen und die ganzen Craft-Biere
und alles fresh und, ja.
Ah ja, okay. Wundervoll. Ja, Cider kriegst
du auch, aber, genussweise steh ich
nicht drauf, brauch ich nicht. Aber andere leckere
on tap Sorten. Aber Django gibt's auch.
Ja, und da ist der eigentliche Grund, warum wir da hingehen.
Ja. Und die Natur ist so schön
grün da, ist ja schon gutes Wetter.
So hört man zumindest, ja.
Ja, genau, das wird
Ja, ist nicht auch
die
Europython
zum gleichen Zeitpunkt? Nein.
Die Pycon.de ist leider zum
gleichen Zeitpunkt. Pycon.de, genau.
Und Pycon.data.
Pycon.de und Pydata.
Genau, ist zum gleichen Zeitpunkt in
Darmstadt, glaube ich.
Ja, aber,
genau, können wir leider nicht hin. Aber wir können uns halt nicht zerreißen.
Ja.
Äh,
genau, ja, äh, also
Zukunft Django war, war ganz
interessant, ähm,
weil, äh,
ja, da war so halt, das waren hauptsächlich so Statistiken
zu, wie viele Leute verwenden
das, was hätten sie gern, wie
verlagert sich das irgendwie von,
äh, irgendwie als von den Framework
verwenden zu API-Geschichten
und so Dinge. Und, ähm,
ja, war ganz, war ganz nett. Was man ja
glaube ich sieht ist, dass, äh, drüben über
den Teich, ähm, super viel mehr
Menschen und Firmen auch Django einsetzen
als hier. Ja. Dass man das vielleicht mal
so, da Aktivität machen
könnte in der Richtung, was so Marketing angeht.
Da, äh, hatte er auch mal
einen Blogpost zu jetzt letztens, das war, kam
in dem Vortrag zwar nicht vor, aber das war, fand ich auch sehr interessant,
welche Regierungs, äh,
äh, Seiten denn irgendwie Django verwenden
und so. Und das war
halt überall irgendwie, relativ viel.
Nur in einem, einem,
äh, analogen Dorf,
irgendwie auf der Weltkarte halt nicht.
Welches könnte das wohl sein?
Das, das globale Funkloch sozusagen
irgendwie, ja? Wo könnte das wohl sein?
Ja, das war nämlich genau hier. Also hier
gab's einfach gar keine, hier gibt's einfach keine
Django-Projekte irgendwie
in öffentlicher, äh,
Hand oder so. Tja. Was,
äh, ja, keine Ahnung,
boah, das liegt, das ist schon wieder ein Quatsch.
Ja. Ja. Aber
irgendwie geht das hier. Wundert einen doch nicht, oder?
Weil man immer noch Fuck schicken muss für bestimmte Sachen.
Naja.
Ähm, aber anders. Ja, aber hast du nicht mitgekriegt,
Dominik, dass die Bundesbank
jetzt keine Faxe mehr entgegennimmt
seit 1.1.25?
Nein, echt nicht. Keine entgegen.
Soweit ist es, soweit ist es fortgeschritten
mit der Digitalisierung. Wir haben ihr Fax
abgeschaltet. Die Zukunft ist jetzt. Wir sind im Neuland
angekommen. Ja.
Ja, 2025 schon.
Ja. Doch gar nicht so schlecht.
So langsam. Es ging durch die Presse.
Tja, oder jemand anders hat sich überlegt,
dann macht der Faxgerät auf der anderen Seite ein Element,
dann kann man sich die Antworten ausdrucken lassen.
Yay.
Ja. Genau. Ah, dann
einen Vortrag, den ich richtig cool fand.
Der war total super. Hätte ich gar nicht so erwartet.
Ich saß da irgendwie nur, weil ich nicht rauskam,
weil es so voll war, aber
Wie ist das? Das ist immer das Bessere in Konferenzen.
Die Talks, die sehen total toll aus von außen,
sind aber total langweilig und die Talks,
da denkt man so, hä? Und dann sind die total spannend
und alles dazwischen.
Da hatte jemand irgendwie tatsächlich in PyScript
irgendwie
ja, so irgendwas
sehr Excel-mäßiges nachgebaut.
Und das hat tatsächlich
richtig gut funktioniert.
Das sah auch noch gut aus? Das sah auch gut aus.
Das war total faszinierend.
Also wirklich so komplettes Spreadsheet-Geschichte
im Browser und es war schnell.
Und alles in Py...
Also die ganze Logik war halt in Python geschrieben
und dann halt
sozusagen über PyScript irgendwie
ja, oder ich weiß es gar nicht mehr,
ob es Pyodide war. Ne, ich glaube es war PyScript
tatsächlich.
Not too bad.
Also, ja, cool.
Auf die, die wäre ich jetzt auch noch nicht gekommen, ja.
Ja.
Ähm, genau.
Ja, also Forstheim war
eine coole Konferenz, sehr voll.
Ja.
Hat da auch jemand dann irgendwann
einen Post geschrieben, habe ich jetzt letztens
so, ja, also immer wenn jetzt
gerade irgendwie aus aktuellem
Anlass, haben wir ja irgendwie so ein bisschen Schwankungen,
was so die weltpolitische Lage angeht und
da in Europa
ist ja dann immer so, dass so, oh nein,
irgendwie, wir sind ja auch
was Technologie angeht und so
total abgehängt und keine Ahnung und Hilfe, Hilfe.
Dabei ist das ja
irgendwie auch Quatsch, ja, also ich meine,
klar, okay, was jetzt den
Börsenwert von manchen Unternehmen
angeht oder so, okay, ja, klar,
da kann man halt nicht mithalten, aber auf der anderen Seite, naja,
also, ich meine, wie viel realer
Wert ist denn da tatsächlich, das ist auch ein bisschen unklar,
wenn man jetzt aber sich anguckt, wie sieht
es denn aus, was jetzt Open-Source-Projekte
angeht, ne, was ist denn da, also wenn man jetzt auf so
eine Veranstaltung wie die FOSDEM geht oder so, dann
ist, also, ich meine, ein Großteil der
Projekte sozusagen, die
die Infrastruktur dafür bilden, was dann halt
in Amerika halt diesen Riesenmarkt
macht, ne, ist alles,
das ist alles diese, es ist alles Open-Source
Infrastruktur-Software
und da ist ein europäischer Entwickler
ist da halt, sind da halt irgendwie
eigentlich sehr, sehr gut vertreten,
ne, also das ist halt. Ja, nur das Problem
ist halt, dass da keiner Geld für bezahlt. Ja,
aber also, sag mal, das Potenzial wäre halt da, also
es ist halt irgendwie, also
es ist nicht so, dass das hier nicht geht oder so, sondern
es geht und es passiert,
es ist halt bloß nicht so, dass damit so wahnsinnig viel Geld
verdient wird. Ja, genau, aber die Leute nutzen das halt
alle und sagen halt,
ja, we first.
Ja. Ja.
Das ist blöd.
Ja, aber, aber das sind
alles Dinge, an denen man ja was machen könnte
und so, ne, also das ist ja nichts, wo man jetzt,
also wenn jetzt das in der Situation wäre,
dass man halt gerne da mitspielen würde, aber
man hat nicht mal einen Fuß in der Tür oder so,
das wäre ganz schlecht, aber so
eigentlich hat man eigentlich schon beide Füße in der Tür.
Eigentlich wäre es schöner, wenn es ein Gegenmodell gäbe, ne, also wenn es
tatsächlich irgendwie, tatsächlich
öffentliche Institutionen gäbe, die das
weitermachen würden und das halt nicht nur
auf diesem kommerziellen, wir machen das
nächste Aktienunternehmen draus
funktionieren würde.
Ja, genau. Aber, äh, genau,
also es gibt auch den,
es gibt ja so Tech-Serverely,
Community-Funds oder sowas,
also einer von denen bezahlt jetzt auch
irgendwie Hugo von Kermenade,
von Kermenade, äh,
als, äh, also europäischer,
ich glaube sogar deutscher, irgendwie,
äh, als
Python-Entwickler, äh,
sozusagen, der ist ja jetzt auch Release-Manager, glaube ich,
für 3.14, 3.15,
das ist schon mal ganz gut,
äh, es gibt ja jetzt, ja,
keine Ahnung, in Frankreich passieren auch lustige
Sachen. Naja,
ja, ähm, genau,
hm.
Wir hatten auch noch ein Thema, glaube ich.
Ja, wir hatten auch noch ein Thema.
Was? Oh je, ich habe es vergessen.
Moment, ich mache mal eine Kapitelmarke,
irgendwie, äh, Thema.
Also, wenn wir jetzt noch
eine Minute
off-topic reden, dann haben wir
die Stunde vorher off-topic.
Ja, okay. Ah, gut, aber
dann, ja, Johannes, willst
du vielleicht etwas erzählen über, äh,
Strings und Bites?
Ja, ich muss sagen,
die, die ersten beiden
Kapitel, die wir gelesen haben, die waren ja sehr
voll. Ja. Und die
waren auch sehr breit.
Und im Vergleich dazu
ist dieses Kapitel
nicht so interessant.
Und, äh, das ist sowohl gut,
gut, das ist sowohl gut als auch
schlecht, das ist sowohl
gut als auch schlecht, weil
dieses Thema sollte eigentlich
langweilig sein. Eigentlich
sollte man über dieses Thema gar nicht so viel sagen,
müssen.
Weil eigentlich sollte das alles
funktionieren. Und in Python 3,
meiner Meinung nach,
ist das auch so.
Was ist denn nochmal das Thema? Unico?
Viele Sachen, viele Sachen sehr gut.
Äh, genau. Es geht um Strings
und Bites. Und, ähm,
das große Problem
an Strings und Bites ist, dass die nicht
das Gleiche sind.
Früher, in der guten alten Zeit, als es
nur ASCII gab, da
war das das Gleiche. Da war ein String halt
eine Abfolge von Bites.
Ganz genau genommen
ist ASCII ja nur 7-Bit-breit.
Also, man hätte das dann sogar,
also gab es dann diese Encodings mit 7-Bits.
Das ist aber auch eine schreckliche
Vorstellung.
Wenn man nur ASCII verwendet,
dann sind Bites und Strings
das Gleiche. Ja, weil ich einfach sagen kann,
okay, also ein String ist halt eine Abfolge von
Bites und alle Zeichen, die es gibt, die sind da drin.
Ja.
Jetzt stellt sich raus, die Welt ist größer als Amerika
und nicht alle sprechen Englisch.
Und selbst die, die Englisch sprechen,
die haben manchmal Akzente in ihren Namen oder
wollen Äs und Ös und Üs
anzeigen oder scharfe Ässe
oder C-Mit-C-D-I-E
oder I mit und ohne Punkt
oder dies und das und jenes.
Ja, ich habe auch so ein
Gleich-F6 in meinem Namen.
Ja, stimmt.
Ich habe extra nur einen ASCII-Namen,
da haben meine Eltern drauf geachtet.
Ja, das sollte man schon machen.
Genau.
Und das Problem ist,
aus historischer Sicht
gab es halt die Computer in den USA
und da gab es ASCII drauf
und ASCII hat geschickterweise nur 7 Bit.
Das heißt, da sind noch 128 Zeichen
frei und die kann man dann halt irgendwie
verwenden und dann haben sich die Leute Code-Pages
ausgedacht. Die Menschen,
die alt genug sind, die können sich noch an
CP-850 erinnern oder an
CP-437, das man einstellen musste,
damit der Norton-Commander richtig
angezeigt wurde.
Unter DOS.
Und jetzt wissen alle Leute,
wie alt ich bin.
Und das war
ganz schrecklich, weil man musste immer
darauf achten, dass man die richtige Code-Page
hatte, weil es halt einfach nur
128 vorbelegte Zeichen
und 128 Zeichen
extra gab.
Und um dem Ganzen ein Ende zu setzen,
haben sich schlaue Menschen
zusammengesetzt und haben sich das Unicode-Konsortium
genannt und haben gesagt, wisst ihr was,
wir brauchen einfach mehr Zeichen.
Alle.
Achso, ich wollte gerade
an der Stelle
macht immer irgendjemand diesen Witz.
Nee, nee, es heißt nicht
Unicode, sondern
das heißt
Unicodes Monster.
Ja, das Unicode-Konsortium
hat dann das Monster gebaut und das Monster
ist
1,15 Millionen
Zeichen groß und verschlinkt
alles, was es nur so finden kann.
Das Ziel,
das Unicode-Konsortiums ist es,
alle Schriftzeichen, die es in Verwendung
gibt, abbildbar
zu machen.
Und sie machen das, indem sie
sagen, jedes Schriftzeichen, was es gibt, das wird
in eine große Tabelle reingeschrieben. Die Tabelle
hat eben diese prinzipiell möglichen
1,1 Millionen Zeichen
und da
schreiben wir dann noch eine Beschreibung rein, was das ist und was das
bedeutet und was für eine Sorte das ist,
weil da tun sich dann ganz viele coole
Probleme auf, die man da kriegen kann.
Aber das ist schon mal gut,
diese Tabelle zu haben. Das Problem ist
jetzt, es sind mehr als 255,
das heißt, die passen nicht in ein Byte rein.
Und da
fangen die ganzen Probleme an, weil
das Problem ist, man muss die irgendwie,
wenn man sie speichern möchte, Unicode-Zeichen
in Bytes reinkriegen.
Und da
gibt es leider auch aus historischer Sicht
viele, viele, viele
verschiedene Möglichkeiten,
die zu kodieren. Und
die inzwischen am weitesten verbreitete heißt
UTF-8.
Ich weiß gar nicht, was das
heißt, aber das ist ein sehr
schlauer Trick.
Das kann sein.
Es gibt auch
UTF-16, es gibt auch UCS-2,
es gibt auch
diverse Varianten davon und dann
muss man doch wissen, ob die Little-Indian sind
oder Big-Indian und ob die ein Byte-Order-Mark haben
oder nicht.
Und das ist alles ganz wundervoll und
eigentlich will man sich damit gar nicht beschäftigen.
Und
Unicode-Transformation-Format.
Okay.
Es ist ganz interessant, sich anzusehen, wie es funktioniert.
Da gibt es ein sehr interessantes Video von
Numberphile, wie sie das erklären.
Das ist so ein bisschen ein Hack.
Da werden so Bits an der vorderen Stelle gesetzt,
damit es mit ASCII-kompatibel ist und
damit man mehrere haben kann.
Und UTF-8 kann bis zu
4 Byte pro
Zeichen verwenden und damit
kriegt man dann die gesamten Unicode-Sachen
abgedeckt.
Und das ist alles
sehr schön. Und das Fazit
dieses ganzen Kapitels ist eigentlich,
man sollte immer UTF-8 verwenden.
Und
inzwischen ist es
tatsächlich so, dass man fast überall
UTF-8 verwenden kann.
Auch für Chinesisch?
Ja, auch für Chinesisch und auch für Japanisch und auch für Koreanisch
und auch für
Thailändisch und auch für Klingonisch.
Wichtig.
Wenn du den richtigen Font hast,
kannst du Klingonische,
Schriftzeichen haben.
Du kannst die auf jeden Fall mit Unicode-Code-Points
darstellen. Ein Unicode-Code-Point
ist jetzt nicht mehr nur ein Byte,
wo halt eine Zahl von 0 bis
255 drinsteht, sondern es ist eigentlich
eine Zahl. Und die Zahl,
die geht eben von 0,
das ist das Null-Byte,
bis, keine Ahnung, dort hinaus.
Ich weiß jetzt nicht, wie weit es geht. Es ist eine komische
Zahl, die mir nicht
bekannt vorkommt, irgendwie 1,15 Millionen.
Das
bedeutet aber, dass ich diese Unicode-Code-Points
nicht einfach so abspeichern kann, sondern wenn ich sie irgendwo
in der Datei speichern will, muss ich sie irgendwie kodieren.
Und Python 2
hat aber keine Unterscheidung gemacht
zwischen Strings und Bytes.
Weil wenn man aus Amerika
kommt, so wie Guido van Rossum,
dann macht es halt keinen Unterschied,
weil dann nimmt man nur ASCII und alles andere spielt
keine Rolle.
Und das war meiner Meinung nach,
ist das eine der größten
Unfeinheiten an Python,
und zwar, dass es keine Unterscheidung gibt
zwischen Strings und Bytes.
Es gab damals schon diese Encode- und Decode-Funktionen,
aber die haben nicht den Datentyp verändert,
sondern die haben nur die Bits verändert.
Und
das war meiner Meinung nach
einfach nicht sehr sauber
und nicht sehr fein.
Seit Python 3, seit den wenigen Jahren,
die es Python 3 gibt,
gibt es da eine strikte Trennung zwischen Bytes und Strings.
Und Bytes ist eben das, was
in Dateien drin ist und im Speicher drin ist.
Und
Strings ist das, wo
Zeichen drin sind.
Es gibt noch einen dritten Datentyp, der heißt
ByteArray. Bytes ist nicht mutable
und ByteArray ist mutable.
Wenn man das braucht, dann muss man halt da den entsprechenden
Typ wählen. Das ist tatsächlich
ein Detail.
Wichtig ist,
es gibt eigentlich nur
vier Sachen, die wichtig sind an dieser Stelle.
Die vier Bytes?
Nein, die vier Funktionen, die wichtig sind.
Die erste heißt Encode.
Und jetzt ist
die Preisfrage.
Geht Encode von Unicode
CodePoints nach Bytes oder von Bytes
nach Unicode CodePoints?
Weil es könnte eigentlich beides sein.
Encode geht zu Bytes.
Encode geht zu Bytes.
Also von Unicode, von Strings
zu Bytes. Es könnte aber auch andersrum
sein.
Und Decode geht
entsprechend andersrum. Das heißt, wenn ich einen String
habe, wo Unicode CodePoints drinstehen,
dann kann ich Encode sagen
und dann kriege ich da einen ByteString raus.
Mit einem gewissen Encoding.
Und umgekehrt, wenn ich Bytes habe,
dann kann ich Decode sagen, mit einem gewissen
Encoding. Und dann kriege ich da
einen Unicode String raus. Wenn das
funktioniert.
Weil diese Encodings, die sind
frickelig und die sind fitzelig und manche
funktionieren und manche funktionieren nicht.
Und
wenn man es mit dem falschen
Encoding dekodiert,
dann kann es sein,
dass es funktioniert und es ist trotzdem falsch.
Und das ist
was ganz Schlimmes.
Ja. Und das sorgt dann dafür,
dass irgendwelche
Fragezeichen in Namen drin sind
oder irgendwelche. Ja, diese komische
schwarze Raute mit den Fragezeichen. Ja, genau.
Genau. Oder
bestimmte Sachen, die man, wenn man mit
UTF-8 dekodiert,
dann ist da so ein
XAE drin
oder irgendwie sowas. Ja, das sind so
diese Zeichenkombinationen.
Ganz gemeine Leute tun die ja in ihren
Benutzernamen rein.
Einfach, um
die Entwickler auf Trab zu halten.
Das sind die ersten beiden Funktionen,
Encode und Decode. Und die gehen von
Unicode-Strings zu Bytes
und zurück. Und
da gibt es ganz viel Gefitzel mit
irgendwelchen Encodings und
die müssen richtig sein. Und das eigentliche
Fazit von diesem ganzen Kapitel ist,
UTF-8. Nehmt überall UTF-8. Wenn das
möglich ist, einfach immer UTF-8 nehmen, weil
damit geht alles.
Das ist nicht das optimale Encode,
ja, das kann sein, dass man da
mehr Platz verbraucht. Aber ganz ehrlich, für
Textdaten heutzutage, meistens so.
Ist doch wurscht.
So ein bisschen wurscht ist es.
Ja, ne. Also ein bisschen wurscht
ist es schon. Green IT sollte man ja auch
bedenken. Da muss man natürlich Datensparsamkeit
immer als ganz besonderes. Ja, das ist schon richtig.
Das ist schon richtig, aber Text
Dateien werden nicht
den Großteil deiner
Datengröße ausmachen. Das ist
meiner Meinung nach.
Wenn du in so einen Use Case kommst,
dann musst du eh Experte werden auf diesem
Gebiet und dann reicht es nicht,
die 25 Seiten in Fluent Python
zu lesen. Ne, ja.
Die zweiten zwei
Funktionen, die an dieser Stelle ganz wichtig sind,
weil sie mit Strings und Bytes ganz natürlich
zu tun haben,
sind Read und Write. Also
Open auf eine Datei mit
Read-Modus und Open auf eine Datei mit
Write-Modus.
Und standardmäßig in Python ist es ja so,
wenn ich ein Open sage, im
R-Modus, also nicht im RB-Modus,
sondern im R-Modus,
dann bedeutet das, lies mir diese Datei
bitte als UTF-8
kodierte Text
ein.
Und dann habe ich da auch diese ganzen
Komfortfunktionen drauf, die ich da haben möchte.
Also Readlines und Read und Readline und so weiter.
Die mir alle direkt
Strings geben, die automatisch dieses
Decoding machen. Und die auch
das Byte-Order-Mark automatisch
behandeln. Also wenn, das ist
dann alles schon gemacht,
wenn es eine UTF-8-Datei ist.
Wenn ich eine Datei habe, die nicht UTF-8
ist,
dann komme ich wieder in Teufelsküche, weil dann muss ich
wieder das Encoding wissen, dann muss ich wieder das
richtige Encoding wählen und dann muss ich wieder mich mit
solchen Decode-Error
rumschlagen.
Die vierte Richtung ist jetzt das Schreiben von Dateien.
Auch hier, wenn ich eine Datei öffne
im W-Modus, nicht im WB-Modus.
Im W-Modus
dann bedeutet das,
das ist eine UTF-8-kodierte Textdatei
ohne Byte-Order-Mark.
Und das ist die
richtige Wahl, ja, das ist das Richtige.
In den allermeisten Fällen
funktioniert das.
Wenn ich
eine Datei im RB- oder im
WB-Modus öffne, dann ist das
der sogenannte Binary-Mode, da kriege ich dann immer
Bytes raus. Das heißt, wenn ich da drauf ein
Read mache, dann kriege ich Bytes raus.
Wenn ich ein Write mache, kriege ich auch Bytes raus.
So.
Das sind die wichtigen Dinge, die man
sich hier merken muss.
Encode, um aus
Strings Bytes zu machen. Decode, um aus
Bytes Strings zu machen mit allen Dingen, die da
passieren können. Dateien lesen und Dateien
schreiben mit den richtigen Encodings.
Alles andere, was jetzt noch dazukommt,
sind irgendwelche,
ich möchte jetzt keine starken Worte
wählen, aber das sind beschissene Legacy-Warzen,
die man da jetzt sich reinholt.
Weil man halt
irgendwie das Encoding rausfinden
muss. Dann gibt es eine Package, das heißt Chartered,
der untersucht mit
Heuristiken, welche Zeichen da drin sind,
ob das,
welches Encoding das sein könnte und das
funktioniert manchmal und manchmal funktioniert es nicht.
Und unter Windows
ist alles ganz schrecklich,
weil eins von den Encodings
des Konsolen-Encoding ein anderes ist
als die ganzen anderen und es ist nicht
UTF-8.
Und das macht einen Unterschied,
wenn man auf der Standardausgabe schreibt,
ob die Standardausgabe auf die Konsole geht
oder ob das in eine Datei umgeleitet wird.
Und das ist alles ganz schrecklich.
Und das eigentliche
Fazit, was ich aus dem Kapitel ziehe, ist,
ich bin heilfroh, dass ich ein Linux-Betriebssystem
habe, weil da ist UTF-8 eingestellt und
da funktioniert UTF-8 und alles ist
UTF-8 und
fertig. Das macht
alles viel einfacher.
Ja.
Ja.
I agree.
Und das ist eigentlich das Fazit
aus dem ganzen Kapitel. Einfach UTF-8 verwenden
und das ist an fast allen Stellen möglich
und wenn man es nicht verwenden kann, dann ist
es halt blöd und man muss sich damit befassen.
Warum sind denn nochmal so
komische Skorpione immer an dem Buch?
Ja, das sind halt unterschiedliche
Hinweise.
Also da gibt es, also Skorpion
ist glaube ich das, was einen irgendwie beißen kann.
Genau, das wollte ich gerade fragen.
In dem Kapitel gibt es mehrere
Skorpione. Das liegt halt einfach an dieser
Geschichte, von der ich jetzt gerade einen kurzen
Abriss gegeben habe mit 1000 verschiedenen
Codepages und
vielen verschiedenen Encodings und
Mojibake und
ganz vielen tollen Phänomenen.
Also die Erklärung zu Skorpion ist,
this element indicates a warning
or caution.
Genau, dann gibt es den Raben.
This element signifies a general note
und es gibt irgendwie ein Lemuren
oder sowas. This element
signifies a tip or suggestion.
Da musst du gemunkied, ja.
Also dieses Kapitel
ist voll mit Skorpionen.
Hier vorsichtig.
Oh, vorsichtig. Und hier, wenn du die Falsch-Code-Page
eingestellt hast, oh, vorsichtig.
Und ja, es gibt da
tatsächlich so ein paar Dinge,
die einen in den Stiefel kriechen können.
Da ist wirklich, also
auch sowas, da gibt es ja so fiese Sachen
wie zum Beispiel Unicode-Normalisierung.
Oh ja, das ist auch
ein ganz wundervolles Thema.
Ganz wundervolles Thema.
Und was ist das?
Da ist man nicht neugierig geworden.
Jochen, willst du das erklären oder
mach du mal, Jochen.
Ich brauche eine kurze Pause, weil das halte ich sonst
nicht aus. Naja, also es gibt halt
unterschiedliche Arten,
manche Zeichen zu schreiben
und die sind
dann, sehen genau gleich aus,
aber die sind halt anders kodiert
und dann... Du meinst ein L und ein
I und ein oder ein E?
Ja. Ein E mit
einem Axon drauf. Ja, zum Beispiel sowas, genau.
Ja, und
dann ist halt die Frage... Was für Arten gibt's denn, Jochen?
Wie kann man das denn darstellen?
NKFD und N...
Ich weiß es nicht mehr genau.
Ja, okay, aber das ist ja nur
diese Normalisierung. Ja.
Das darunterliegende Problem ist, dass es
zwei verschiedene Möglichkeiten, dieses E mit dem
Axon darzustellen. Ja, ja, genau.
Das gibt's als Zeichen. Es gibt ein Zeichen,
das heißt E mit Axon, was auch immer
du da drauf hast. Oder mit zwei Zeichen.
Und es gibt E
und dann gibt's ein zweites Zeichen, kombinierende
Axon mit dem davorgehenden
Ding dazu. Genau.
Und auch da gibt's natürlich Leute, die sich da
eine große Freude draus gemacht haben und da gibt's
ganz viele schöne Salgo-
Textgeneratoren, die einfach sagen, hier,
was passiert denn, wenn wir drei von
diesen Axons drauf tut? Oder fünf?
Oder zehn? Oder hundert?
Und dann ist der Text kaum
noch lesbar und
der Abstieg in den Wahnsinn
ist vollzogen.
Ja, ja, ja, letztlich
genau. Also,
ja, das ist dann da, wo man immer landet
halt. Und...
Die richtigen Hacker-Namen. Ja, genau.
Da kann man nämlich auch viel
wirklich
auch security-relevanten Unsinn betreiben.
Wenn man jetzt zum Beispiel sich überlegt, dass man
halt, also
wann ist denn jetzt sowas...
Wann sind denn zwei Strings irgendwie gleich?
Wenn ich jetzt auf irgendwie sowas checke, wie
ist der Benutzername so und so? Oder ist das halt
irgendwie diese oder jene Stadt? Oder irgendwie
wenn ich halt solche Vergleiche habe,
dann kann ich ja
eventuell, also da muss ich ja sicher
gehen, dass das halt
irgendwie...
dass ich da nichts übersehe, sozusagen.
Das heißt, wenn ich da
nicht normalisierte Sachen miteinander
vergleiche, dann können halt wilde Dinge
passieren. Das heißt,
bei all diesen Sachen, wo ich halt sicher
sein muss, dass das halt klappt, muss ich halt
auch nochmal zusätzlich zu
irgendwie, ich muss es als Unicode-String haben,
auch nochmal gucken, dass die
Normalisierung halt
auf beiden Seiten gleich
ist. Weil ansonsten
kann mir halt jemand ein
U für ein O vormachen oder so
und dann habe ich ein Problem unter Umständen.
Ja.
Oder ein kyrillisches
A für ein lateinisches
A. Das ist ja der Klassiker.
Ja. Dass es da diese
Zeichen gibt, die gleich aussehen, aber nicht
gleich sind. Ja. Und
da, das ist echt
sehr schwierig. Und noch schlimmer ist sortieren.
Ah, sortieren. Oh Gott. Ja, ja.
Und Groß- und Kleinschreibung ist noch
genauso schlimm, weil die hängen von
der Lokal, von der Lokal ab.
Da gibt es das klassische
Beispiel. Türkisch hat ein I
mit einem Punkt und ein I ohne Punkt.
Und
entsprechend gibt es da von Klein- und
Großvarianten. Das heißt, wenn ich
einen Text habe, der ein kleines I mit einem
Punkt obendrauf enthält, also ein normales
I, ja, aus unserer Perspektive
und ich
möchte den in einen großgeschriebenen
String umwandeln, dann würde ich
als Deutscher, würde da
ein großgeschriebenes I
ohne Punkt drüber
hinmachen. Und es ist auf Türkisch
aber falsch. Auf Türkisch ist es so, dass
wenn ich ein I, ein kleines
I mit einem Punkt habe, dann muss das ein großes I
mit einem Punkt obendrauf werden.
Und es gibt wohl tatsächlich so einen Fall,
wo eine SMS übertragen wurde und SMS
ist ja auch so ein Legacy-System
mit ganz vielen
Ecken und Kanten,
wo eben eine SMS übertragen
wurde und offensichtlich durch ein System
wegnormalisiert wurde, wo dann ein
Mann an seine Frau geschrieben hat
und die ist dann irgendwie ausgetickt, weil er geschrieben
hat, dass er bei einer anderen ist, anstatt
dass er nach Hause kommt. Irgendwie sowas
passiert da. Also es gibt tatsächlich
Real-World-Auswirken. Die Katze war. Auch Sortierung.
Und auch Sortierung ist genauso.
Sortierung ist auch
lokal abhängig. Also das kommt
darauf an, wo ich bin, wie ich
Zeichen sortiere. Zum Beispiel auf Deutsch
wird das Ä traditionell
nach dem A einsortiert.
Auf Schwedisch werden die
kanonisch nach dem Z einsortiert.
Und
das heißt, wenn ich sortieren
und kleine Großschreibungen machen will,
dann muss ich
wissen, wo ich bin.
Ja.
Und es gibt noch mehr coole Sachen.
Kann man das nicht auch noch irgendwie einen Weg finden,
wie man das mit der Zeitzone abhängig machen könnte?
Ich sehe da noch
Potenzial für
es komplizierter zu machen.
Mal ganz davon
abgesehen, dass es in vielen asiatischen Sprachen
diesen Unterschied zwischen Groß- und Kleingeschriebenen
gar nicht gibt. Da gibt es ja keine Groß- und
Kleingeschriebenenzeichen. Aber Groß- und
Kleingeschriebenenzeichen ist noch schlimmer, weil
es gibt in manchen Sprachen
auch abhängig von der Locale
Strings. Die kann ich
nicht upper und
danach wieder lower machen. Da kommt nicht der gleiche String raus.
Deutsch ist
zum Beispiel so eine Sprache und ist auch
abhängig von der Locale. Je nachdem, ob ich
in der Schweiz bin oder in
Deutschland, wird das unterschiedlich behandelt.
Wenn ich einen String mit einem scharfen S
groß mache,
dann wird das ja ein Doppel-S.
Es gab doch mal ein großes scharfes S, oder?
Es gibt ein großes scharfes S, ja.
Das wäre meiner Meinung nach
auch die richtige Lösung. Aber in der Schweiz,
wird kanonisch das Doppel-S
verwendet, auch wenn es das große, scharfe S gibt.
Und wenn du diesen String wieder
klein machst, dann sind es
zwei kleine S.
Und dann kommt auch nicht das
gleiche wieder raus. Und das ist ja auch ein semantischer Unterschied.
Ja. Semantischer Unterschied,
der sich aus dem Kontext ergibt. Das heißt, das
kannst du gar nicht technisch lösen.
Das heißt, mit Unicode
und mit Unicode-Strings sind nicht alle
Probleme gelöst, die Menschen haben.
Und das ist so, ach, die doofen Menschen,
die haben halt Probleme, die sie nicht in den Computer rein tun.
Lassen.
Auch mit Unicode
sind solche Probleme nicht gelöst.
Und die Lösung dafür ist im Wesentlichen,
ja, darfst du halt nicht machen.
Kannst du nicht machen.
Wenn du Strings groß machen willst,
lieber nicht.
Wenn du
Roundtripping haben willst, zwischen Upper
und Lower, geht halt nicht. Kriegst du nicht wieder raus.
Wenn du Strings vergleichen willst, musst du
diese,
sagen wir mal, mittelmäßig coolen
Encodings verwenden. Da gibt es übrigens
vier, Jochen, die auch im Buch
vorkommen.
NFC und NFD.
Das heißt
eigentlich Normalized Format C
und Normalized Format D.
Warum das jetzt ausgerechnet C und D sind,
weiß ich nicht. In meinem Kopf ist
das Compact und
die
Disassociated
irgendwie so.
Compact ist das Format, was
möglichst wenige Zeichen erzeugt.
Und D, also das,
äh, Decomposed vielleicht.
Decomposed ist das Format, was
möglichst atomare
Zeichen erzeugt. Also da wäre
dann halt das E mit dem Axon zwei Zeichen
und in dem anderen wäre es halt mit einem Zeichen.
Und dann
gibt es noch normalisierende
Varianten davon, wo dann solche coolen
Spezialsachen
weggemacht werden, wie das My zum Beispiel.
Das My gibt es in zwei Varianten.
Einmal als die
SI-Einheit, My für Mikrometer.
Und einmal als das Griechische, den Griechenbuchstaben.
My und Om ist auch
so ein Zeichen, also ein großes
Omega. Und manche von
den Varianten normalisieren das weg und manche
von den Varianten normalisieren das nicht weg.
Die
Lösung für dieses Problem
ist, darfst du einfach nicht machen.
Mach's einfach nicht.
Ich erinnere mich an diese ganzen Details
nicht mehr. Vor einem Jahr
ungefähr habe ich das halt dann irgendwann mal
eingebaut, weil es halt eine Relevanz hatte.
Und da habe ich das dann auch getestet.
Und beim Schreiben
dieser Tests ist mir dann irgendwann so, dachte ich mir so,
oh mein Gott, also eigentlich fallen mir
jetzt noch 20 Situationen ein
früher, wo ich das auch mal besser
hätte testen sollen, wo ich es nicht getan
habe. Schnell vergessen und verdrängen, sonst
aber da gibt es
so viele komische Sachen, die passieren
können. Also, ja.
Ja, es gibt ein
Repository auf GitHub,
das heißt Big List of Naughty Strings.
Ach ja.
Eine neue Rainbow.
Ja, darf man auch nicht
auf seine Weihnachtswunschliste schreiben.
Ja, es sind
erstaunlich viele und es sind erstaunlich
üble Sachen drin und ich habe auch schon
einen PR dagegen gestellt, aber der
ist, glaube ich, unmaintained, die Liste, weil
mein schöner PR mit dem großen
scharfen S wurde leider nicht genommen.
Ja, so ist es halt.
Aber ein großes scharfes S ist schon
sehr naughty.
Das ist sehr naughty, aber man muss
umgehen können damit.
Ja.
Ja, ja.
German character sharp S,
which becomes SS when uppercased.
So changes from one character to two ASCII
characters.
Ich glaube auch, der Grund,
warum Python 2 das nicht
konnte, also ich, weil
Ich meine, Java hatte von Anfang an
ein ordentliches Unicode irgendwie.
Der lag aber einfach da.
Ja, aber hatten die nicht auch UCS2 am Anfang?
Äh, das kann sein.
UCS2, um kurz
unsere Hörer abzuholen,
UCS2 ist einfach
ein Textzeichen
zu zwei Byte.
Und da muss man
auch Big Engine und Little Engine sagen,
okay, das ist ein Detail.
Dann braucht man mal ein Marker vorne dran.
Genau. Die geneigten Zuhörer
werden bemerken, dass zwei
Byte 16 Bit sind.
Das sind ungefähr 65.000 Zeichen.
Das ist weniger als 1,1
Millionen. Das heißt,
das ist so ein
Fix, der nicht
weit hilft.
Und die ganze Windows
Welt, das war ja alles mit UCS2.
Da gibt es diese ganzen Windows-Funktionen,
die gibt es in normal und in unterstrich W
für Wide.
Oh, okay. Hilft aber alles nichts,
weil es war halt UCS2 und das ist
meh.
Und dann hat man jede Menge Null-Bytes
in seinen Dateien drin und das
ist nicht so cool.
Na gut, kann man gut zippen.
Ja, okay, also auf jeden Fall,
ich glaube, Java hat am Anfang auch UCS2,
die sind inzwischen auch auf UTF-8 umgestiegen.
Ja, aber sie hatten schon
auf jeden Fall dieses quasi Konzept,
dass sie intern Unicode
hatten und dann nach außen irgendwie
encodieren, decodieren. Aber ich
meine, das hatten sie nur deswegen, weil
Java halt ein Stück jünger ist als Python
und vorher war das gar nicht
standardisiert, sozusagen.
Vier Jahre. Kurz nach der Standardisierung
hat Java, ist Java damit
halt dann, sozusagen
konnte das direkt verwenden und Python halt noch nicht,
weil es halt älter ist. Aber da müssen wir noch mal
die Timeline. Ja, müssen wir natürlich mal, aber ich
hab das so im Hinterkopf. Python ist doch 91
und Java ist 95 und Unicode
ist 96.
Das kann nicht in Java 1 drin gewesen sein.
Vielleicht ist es seit Java 2. Ich meine, es gab ja
da auch einen großen
Versionssprung.
Ich weiß es.
Also ich hatte ja mal
meine erste
Programmiersprache an der Uni, das war Java
tatsächlich und wir haben da noch die
Mein Beileid.
Ja, auch zwei sehr dicke Bücher
kommt also, also zwei
Bücher von dem Format von Flo und
Patten. Das war einmal
irgendwie Java irgendwie
von, ich weiß gar nicht.
Java in der Nutshell. Nee, nicht in der Nutshell, sondern
irgendwie Language oder sowas.
Und dann die Sprachspezifikation,
was halt im Wesentlichen die,
ja, Grammatik war.
Ja, also 2000 Seitenbücher
und das war, meine ich,
da war, das war schon Unicode.
Aber,
ja, und das muss kurz nach
Ja gut, du bist halt auch so ein junger Programmierer,
der nur Unicode kennt.
Ja.
Also das mit dem Unicode war nicht so schlecht, aber
ansonsten, da waren einige Dinge, die ich
das Public Static Void Main-Dings,
das hab ich nie so richtig, also da, das fand ich
eher so ein bisschen, hm, was ist denn da los?
Ja.
Ja, meine erste, meine Uni-Programmiersprache
war C. Wir haben direkt mit C angefangen.
Ach, das war nicht die
ideale Sprache für Programmieranfänger.
Ja.
Kann man auch nicht sagen.
Hat für einen gewissen
Ausfilterungseffekt
gesorgt.
Sehr schön.
Aber dein, das ist ja echt schön, das Depot, was du da geteilt hast,
sowas wie Strings for Spanish
Fools to use cat on a file,
Hings with Crash.
Big List of Naughty Strings.
Lesen Sie es in den Shownotes nach.
Strings just make course, I'm going to reinterpret
Worldview.
Eine interessante Sache,
die tatsächlich in dem Kapitel vorkommt,
die so als Frage gestellt wird,
als so ein bisschen so eine
Sidebar, würde ich sagen.
Wie stellt Python
denn intern eigentlich diese
Unicode-Strings dar?
Und die Antwort darauf ist,
ja, brauchst du gar nicht wissen.
Der Parlamentierungsdetail.
Und das ist auch, also,
das ist eigentlich die richtige Antwort.
Es wird dann trotzdem erklärt, ja, das ist wie
Integer und der wählt
so eine optimierte Darstellung. Und wenn es
nur
solche Zeichen sind, dann ist es ein
Byte-String und wenn es andere ist, jedenfalls ist da
Optimierung drin. Und
das Wichtige ist, man kann immer davon ausgehen,
dass es einfach eine Zahl ist.
Jedes Zeichen in einem
String ist eigentlich eine Zahl zwischen 0
und 1,1 Millionen.
Ja, irgendwie sowas.
Und
Python sorgt dafür, dass das so ist und
optimiert das dann auch richtig schön innen drin.
Und das ist doch, ich finde das eigentlich sehr beruhigend.
Es ist nicht so, wie man
sich's vorstellt, ja, dass du's halt
hier hörst, so eine Abfolge von Bytes
oder eine Abfolge von hier, das ist im Speicher
so drin, sondern es ist erstaunlich
kompliziert, es ist erstaunlich komplex.
Aber
zum Glück gibt's da die
schlauen Python-Core-Maintainer, die das für uns machen,
die auch diese ganzen Unicode-Listen
sich zu Gemüte
führen und
einem sagen, was das für Zeichen
sind.
Eine weitere interessante
Sache ist, dass es ein paar Module gibt, die können mit
Beidem umgehen.
Die können mit Bytes umgehen und mit
Strings. Und die
zwei wichtigsten davon sind RE,
also Regular Expressions.
Ja, gut, klar.
Weil, klar, genau, manchmal musst du
halt Regular Expressions haben, die
mit Bytes arbeiten, die funktionieren auch.
Das Gesicht in einem Bild austauschen, das geht auch.
Ja.
Ja, okay.
Keine Ahnung.
Die funktionieren anders, je nachdem,
ob man Bytes reingibt oder
Strings. Und auch die Regular, also
die Regular Expression, der Typ der Regular Expression
muss zum Typ des verarbeiteten
Datentyps passen und dann ist
auch alles so, wie man es sich wünscht.
Das zweite Modul, interessanterweise, ist OS.
Und zwar alles, was mit
Dateipfaden zu tun hat.
Und das ist auch
so eine interessante Legacy-Sache,
oder? Oh ja.
Weil Dateipfade nicht
unbedingt valides
UTF-8 sein müssen.
Auf
modernen Betriebssystemen
sollte das so sein, ja?
Wenn ich eine Datei schreibe,
dann sollte die einen UTF-8-Dateinamen haben.
Wenn ich in meinen
Gnome Explorer, wie auch immer der
heißen mag, Nautilus, Tuna oder
keine Ahnung, was es da gibt,
einen Dateinamen
eingebe, dann wird es ein UTF-8.
Aber das Dateisystem
garantiert es nicht.
Und das heißt, es kann
Dateinamen geben, die ich nicht in
UTF-8, die ich nicht als
UTF-8-codierte Strings darstellen kann.
Das heißt, wenn ich eine Datei aufmachen
möchte, dann muss ich irgendwie
da rankommen an diesen Dateinamen,
der kein korrekter String sein muss.
Und deshalb
gibt es für diese
Dateisachen alle
Funktionen in zwei Varianten, als mit
String und als mit Bytes.
Und da kann man auch schönes
String-Dateien, die man nicht
löschen kann von der Konsole.
Am Anfang war das, glaube ich, in
Python 3, also da war der
Umstieg von 2 auf 3,
da war das am Anfang nicht so, da hatte man das,
da gab es das noch nicht und da haben Leute
irgendwie, das war für einige Leute
ein Grund, Python 3 nicht zu verwenden, weil sie
sagten, ja super, ich kann damit meine Dateien
leider nicht irgendwie löschen oder
es geht einfach nicht, es gibt keine
Möglichkeit, das zu tun, das kann man nicht sagen.
Ja, und dann gab es auch noch die
diverse böse Sonderfälle mit irgendwie,
naja, also eigentlich kann das sein Dateisystem,
aber halt nicht, wenn du irgendwas
uraltes über NFS gemountet hast oder so
was, dann macht man das alles.
Ja.
Ja, ja.
Ja, äh, ja.
Das, für mich, das Fazit des ganzen
Kapitels ist, modernes Betriebssystem,
UTF-8, fein.
Mhm.
Also in aller anderen Situationen möglichst vermeidlich.
Genau, Python 2 und Python 3, wie alt ist Python 3 jetzt?
Wann kam das raus? 2012?
15 Jahre? Ja, so 2010
ungefähr ist das irgendwie losgegangen, ja.
Also 15 Jahre fast. Ja.
Also auch Legacy,
forget it. Aber da haben sich ja
Leute gewehrt dagegen, ja, da haben sich ja Leute
gewehrt dagegen. Es gibt einen
Programmierkurs von
Seth Shaw, Learn Python the Hard Way.
Ja, den habe ich, kann ich sehr empfehlen,
habe ich durchgezogen. Und der hat
sich sehr lange gewehrt,
der hat sich sehr lange gewehrt, den auf
Python 3 umzustellen, weil
eben die Trennung zwischen
String und Bytes nicht logisch
erschien.
Und er hat da sehr lange
sehr viele Artikel drüber geschrieben und
ich finde diese Trennung großartig,
das ist genau richtig. Es sind zwei unterschiedliche
Dinge, zwei unterschiedliche Bedeutungen,
die unterschiedliche Zwecke verfolgen
und natürlich musste das auftreten,
natürlich musste die unterschiedlich behandeln.
Und
das, also es gibt Leute, die sich da lange
dagegen gewehrt haben. Ich weiß nicht, wie
der Mr. Shaw das inzwischen sieht.
Es ist mir auch egal, weil ... Es gibt doch Leute, die sich ...
Weil er hat damals kein Recht gehabt.
Ja, ich kann das
Buch auch, ich kann es mal suchen.
Ja, der macht jetzt inzwischen auch ganz
viel AI-Zeugs.
Aber
genau, ja, ja.
Aber das habe ich auch nie verstanden, ja.
Ja, also das war damals schon ein Streitpunkt.
Ich, meiner Meinung nach, ist das schon das
Richtige. Das war die richtige Entscheidung.
Ja, ja, auf jeden Fall. Diese Trennung zu machen
und auch sauber zu machen und
viele von den Problemen, die man so
haben kann, die gehen halt einfach weg.
Auch wenn es auch so ein paar
andere Probleme mit NFC und
NFT ...
Und Sortierung und, naja,
und dann halt, okay.
Ja, kannst du einfach nicht mehr machen.
Kannst du einfach nicht mehr machen.
Ja, cool, cool, cool.
Genau.
Ah, ja, ich glaube,
wenn man, es gibt ja auch noch Dinge vor ASCII,
das ist ja auch mal,
wenn man jetzt, wir hatten eben auch schon Faxgeräte,
ja, aber wenn man
in Asien gibt es ganz
inkompatible. Ja, oder wenn man jetzt irgendwo
hinfliegt oder so, man sagt so, alles,
alles,
alles schrecklich, macht's gut, ihr Trottel,
ich fliege jetzt einfach irgendwo anders hin und dann
könnt, könnt ihr halt sehen,
wer bleibt, dann
das nicht funktioniert, weil man
halt irgendwie auf dem Ticket hat man halt irgendwie
zum Beispiel keine Umlaute oder sowas.
Aber Jochen, es gibt auch ein Protokoll für Brieftauben, wir kriegen die schon.
Okay.
Dann gibt's,
das ist bei Überweisungen manchmal auch so oder so
und das ist halt immer dann, wenn man es plötzlich noch mal mit
so, mit so richtigen
Hosts zu Kugel kommt. Wobei wir ja jetzt in der Swift,
wir sind ja jetzt in der, in der Swift-Ära,
in der
Payment Services Directive 2-Ära, wo
alles ordentliche Encodings hat,
zumindest definierte Encodings. Ach, okay, das war mir
jetzt gar nicht so, weil ich, das war Überweisungen
oder so, das ist ja auch manchmal so, dass ich da versuche irgendwie was einzugeben
und so, hä, geht nicht, komisch.
Ja, das, das hat auf jeden Fall, also das,
äh, dieser Zeichensatz, der da drin ist,
ist komisch, aber der ist wenigstens genau definiert.
Ah, okay, ja gut, das kann
natürlich sein, ja, ich hab's, aber so
früher, oder ich glaub bei Flugsystemen ist es
immer noch so, dass es läuft alles immer noch über so Großrechner
und das ist halt, die verwenden EBDIC
oder so, ne, das ist halt auch irgendwie
so ein 7-Bit, äh, irgendwie
Monster, ja, Ding.
Was aber nicht kompatibel ist. Nein, zu
gar nichts natürlich.
Und diese ganzen radiatischen
Schreibsysteme, die mehrbeitig
sind, sind aber auch zu nichts kompatibel
und auch untereinander nicht kompatibel
und ahhh.
Ja, äh,
das ist großartig, das ist großartig.
So.
Ja. Ja. Wie soll man das
Muster an einer Höhle malen?
Hm, machen wir doch wieder irgendwas
mit Holz oder so. Ja, ich fand das mit den
Heavy Carriers immer noch gut. Also, ich, ich empfehle
dieses Kapitel nicht zum Lesen, das ist tatsächlich
ein bisschen trocken und ein bisschen lang.
Ähm, es ist ganz gut als Nachschlagewerk.
Ja, wenn man, wenn man eben an diese
Stelle kommt, wo man tatsächlich mit
mit Bytes und mit Legacy-Systemen
arbeiten muss, da stehen ein paar interessante Sachen drin,
aber zum Lesen,
fand ich es jetzt nicht so interessant.
Ja.
Ja, cool, cool, cool. Aber, ja.
Also, ich würde sagen, dann haben wir heute die Episode gefüllt,
oder? Ja, ich glaube, wir machen irgendwann noch mal
einen Beitrag. Ja.
Genau, aber wir könnten auch sowas wie Pics machen zum Beispiel.
Können wir das? Könnten wir. Ja.
Okay. Ja.
Dann fang doch mal an. Wie vorhin schon angekündigt,
habe ich sogar zwei Pics. Oha.
Und einer davon ist sogar,
ist sogar Python-relevant.
Äh, der erste Pick,
den ich habe, der ist nicht Python-relevant,
äh, das ist ein Paper
auf Astroarchive, äh,
Gravitational Effects
of a Small Primordial Black Hole
Passing Through the Human Body.
Äh, da geht es
um eine Klasse von
schwarzen Löchtern, sogenannte
Primordial Black Holes, das sind so,
das ist so eine Vorstufe von einem schwarzen Loch, das sind so schwarze
Löcher, die dann sofort wieder wegverdunsten.
Und, ähm,
es, so wie ich das verstanden
habe, ich verstehe ja nichts davon, ja, weil ich habe Kommentare
gelesen und so wie ich die Kommentare gelesen habe,
ist dieses Paper interessant in dem
Sinne, dass man nicht genau
weiß, ob es diese schwarzen Löcher gibt
und wie, wie oft die vorkommen und wie
viele es davon gibt.
Und wie groß die sind.
Und in diesem Paper hat man ausgerechnet,
wenn ein solches schwarzes Loch durch
einen Menschen durchfliegt, die sind extrem
klein, dann hat es
keinerlei Auswirkungen, wenn es kleiner ist
als 1,4 mal 10 hoch
17 Gramm.
Das ist ungefähr,
ungefähr so viel wie die
Pyramide von Giza wiegt.
Die wiegt
ungefähr 10 hoch 17 Gramm, 1,4 mal
10 hoch 17 Gramm. Das heißt, wenn ein schwarzes
Loch durch einen Menschen durchfliegt und dieses schwarze
Loch hat eine Masse, die ist kleiner als die Pyramide
von Giza, dann passiert gar nichts.
Was ist die Pyramide von Giza?
Gizeh. Das ist die
in Kairo da, diese riesen, die große Pyramide.
Die große Gizeh, nicht Giza.
Also die ist 146,5
Meter hoch und, äh.
Und wiegt ungefähr 1,4 mal 10 hoch
17 Gramm. Wenn die durch dich durchfliegt, dann merkst du das.
Ja, aber nicht als schwarzes
Loch, wenn du komprimiert bist mit einem schwarzen Loch.
Der Grund ist, dass dieses schwarze Loch zu klein
ist. Das interagiert mit keinem deiner
Moleküle. Achso,
weil der Schwarzschildradius von dem Ding ist halt so winzig,
dass das. Der ist kleiner als
ein Atomkern und deshalb
kriegst du nichts ab. Ja, okay.
Ja, der Event Horizon
ist klein genug, dass du überhaupt
gar nichts bemerkst.
Wenn eins davon größer ist, also die
Sprache in diesem Artikel ist sehr
Ich würde sagen, wenn
ein, äh, ein
schwarzes Loch durch einen menschlichen Körper
durchfliegt, äh, was eine
größere Masse hat, dann hätte es
messbare Auswirkungen. So ist es, glaube ich.
Okay, das klingt
unangenehm. Genau.
Die Tatsache, dass es keine
bekannten Fälle gibt von solchen
seltsamen
Verwundungen, die
einfach so passieren, ist eine Indikation
dafür, dass es diese
Primordial, also diese Primordial Black
Holes, dass es die nicht gibt oder dass die nicht
in genügend großer Menge auftreten,
dass sie von der gesamten
Menschheit messbar sind. Und das ist, das ist das
Interessante an diesem Paper da drin. Also
sehr weit außenrum ausgeholt, um
dann hinterher zu sagen, ja, und deshalb
gibt's da nicht so, kann's nicht so viele
davon geben. Fand ich für schön.
Ja. Mein zweiter
Pick
ist wesentlich weniger
physikalisch.
Äh, ist ein Artikel
äh, mit dem Titel A Year of
UV, Pros, Cons and Should You Migrate.
Ah.
Das heißt, äh, jemand hat seine Erfahrungen
aufgeschrieben, äh,
mit UV, UV,
dem Python, äh,
Package Management Tool,
Project Management Tool, ähm,
und
es, es ist sehr interessant
zu lesen, weil es gibt natürlich viele,
viele gute Dinge zu sagen, zu sagen
und viele Dinge zu sagen,
die anders sind. Und es gibt erstaunlich
wenige Dinge zu sagen, die
nicht so gut sind. Mhm.
Und im Wesentlichen der einzige
Grund, warum man UV
nicht verwenden sollte, laut dieses Artikels
ist, wenn man irgendwelche Legacy-Anwendungen
hat, die man damit halt nicht auflösen
kann. Mhm. Ja, weil die Dependency Resolution
anders ist und, ähm,
wenn's nicht geht, ja, dann
kannst du entweder den Aufwand reinstecken,
dafür zu sorgen, dass es geht, oder du kannst halt
bei Pip bleiben oder bei was auch immer es ist. Mhm.
Ja. Und, äh, es ist ein
sehr langer Artikel und der, ähm,
beschreibt diese
Situation sehr genau und ich fand ihn sehr interessant zu lesen
und deshalb ist das mein Pick für diese Woche, mein
zweiter Pick neben den schwarzen Löchern.
Mhm. Sehr cool. Es gibt da auch ein,
ähm, Video von, von
Hüneck, äh,
der hat vor, ähm, ich glaub Anfang
2024 oder so irgendwie ein Video gemacht,
wo er sagt, so ist das wirklich die,
die Zukunft von, äh,
Packaging in Python und
dann hat er irgendwann im August oder September
ein Video gemacht, wo er dann,
dass der Titel hat, ja, es ist die Zukunft
von Packaging in Python.
Ja. Und, ja, das kommt auch
in dem Artikel rüber. Eine der Gründe, warum
die Empfehlung so mehr oder weniger uneingeschränkt
ist, ist, dass dieses Team einfach
ungeheuer viel dran arbeitet.
Ja. Und die, die
machen einfach, also, wenn man sich
den Bugtracker anschaut, äh,
von, äh, von UV,
ähm, dann hat es
eine extrem große Anzahl Tickets.
Ah, ich mach's gerade auf.
Ähm,
wir sind jetzt bei Ticket Nummer
11.679.
Wow.
Und offen sind aber
nur 1.200. Nur 1.200.
Mhm. Äh, das heißt,
die arbeiten einfach alles
ab, was ihnen in den Weg kommt. Und die,
äh, diese Sachen, die da drin sind,
scheinen alle sehr gut von
der Architektur zu sein. Die sind alle sehr performant.
Die sind alle sehr gut
ausgedacht, was auch die Oberfläche angeht.
Also, es scheint so zu sein, dass,
ähm, dass die,
dass es einfach gut funktioniert. Ja, so ein paar Kinderkrankheiten
am Anfang sind alle weg und es ist so.
Genau. Sehr viel cooler, ja. Ja, ich
hab jetzt auch. Und es ist super schnell. Und ich bin inzwischen auch überall
hinmigriert. Ja. Es gibt auch ein, es gibt auch
ein, äh, äh, ein Python-Package,
das heißt Migrate to UV.
Mhm. Äh, das hab ich einfach mal auf
alle meine Sachen angewendet und jetzt sind die alle
UV-visiert und das ist schön. Es gibt noch
UV-Secure und so, da kann man so ein Pipelines
testen und sowas, Packages. Ja,
es ist sehr nice, ja.
Ja.
Ja, cool.
Äh, ich pick da mal. Ja.
Ich weiß gar nicht mehr, wo ich das herhab. Vielleicht hab ich's bei einem von euch gefunden.
Es heißt, äh, Sketch a Day.
Ähm, da wird eine visuelle
Idee jeden Tag, äh,
gecodet und zwar in Python. Finde ich
sehr nice. Das ist so ein, äh, Blog-Serie.
Ah, okay. Von Alexandre Bivilares.
Sehr, sehr schick, weil man
da irgendwie so Visualisierung mit Python
kriegt, so ganz viele verschiedene unterschiedliche Ideen. Da ist immer
so das Skript dabei und der macht
das schon eine ganze Weile und da sind ziemlich nette
Sachen dabei, wie man sich das angucken kann.
Hm.
Also super spannend, so wenn man mal
Grafik mit Python machen will oder generieren will,
äh, und sich mal angucken möchte, wie das denn
alles da aussehen kann, kann ich
sehr empfehlen. Verlinken wir, äh,
da kann man echt schicke Sachen mit
rendern.
Traktate und sowas alles, ja.
Sehr coole Sache.
Jo.
Ja, was hab ich da? Also ich
mach mal keinen Python, äh,
Pick, äh,
sondern ich pick mal eine Shell.
Da gab's nämlich jetzt auch, äh, irgendwie
vor nicht allzu langer Zeit einen neuen Release,
äh, also ich,
ähm,
verwenden kann Fisch und, äh,
Fisch gibt's jetzt auch
in der Version 4. Wow. Und, ähm,
sie haben da auch einen Großteil
in Rust neu geschrieben. Oh, cool.
Also, ich mag Fisch
eigentlich sehr gerne, also vor allem wegen dem Fuzzy-Ding,
das ist alles sehr nice und completionist war
immer sehr nett, aber
was echt nervt ist, dass
Skripte nicht so kompatibel sind.
Die Skriptsprache finde ich anstrengend. Das
bricht halt, wenn man das irgendwo anders ausführen
will, immer alles durch.
Der Grund, warum ich es nicht mehr auf allen
Servern einsetze, ich hatte es zwischendurch
auf allen Pod-Servern drauf. Ja,
mach ich auch, aber, ja. Aber ja, klar,
also manche Sachen kannst du halt einfach nicht verwenden
in der Fisch-Shell, äh, ich,
gut, aber ich mach dann halt, ich hab dann
zum Beispiel in so Deployment-Skripten oder so, hab ich dann halt,
dann nehm ich halt eine Bash. Ja, genau, ja, ja.
Und führe das dann damit aus, das geht halt auch.
Ja, weil auch die Konfigurationen sind halt
nicht portable und so, das ist alles so ein bisschen nervig.
Da gab's doch auch einen sehr langen
Artikel, Jochen, äh, darüber, wie sie
das gemacht haben und wie sie das hingekriegt
haben. Genau. The Fish of Theseus.
Äh, Theseus, ja, genau. Der Fisch des
Theseus. Ja, kennt ihr die, die
Anspielung? Ja, natürlich, aber
erklär sie uns trotzdem noch mal. Okay, der,
The Ship of Theseus ist halt so ein, äh,
eigentlich ein Ding aus der Philosophie,
dass, äh, wenn man jetzt irgendwie so ein
altes, äh, Schiff
ausgräbt irgendwie und,
ähm,
naja, man, äh, man möchte,
man möchte es halt sozusagen, äh,
äh, reparieren
und man tauscht jetzt, äh,
quasi, äh, die ganzen
alten und vergammelten Teile aus durch
neue. Äh,
dann. Durch identische. Durch identische,
genau.
Dann hat man ja im Grunde halt, äh,
äh, äh, hat man ja
im Grunde hinterher zwei Schiffe.
Welches ist denn jetzt das richtige?
Jochen, du hast
irgendwas kaputt gemacht. Oh, Moment.
Oh, no. Das nimmt gleich,
bricht gleich in Flammen auf.
Ich glaub, das war der, äh,
das Wort vom Sonntag. Mit unserem digitalen Audio,
mit unseren Audio-Problemen kommen jetzt auch noch
analoge Audio-Probleme. Äh, Kabel.
Gleich geht's in Flammen auf, Jochen.
Jetzt, wunderbar.
Keiner hat's gehört.
Irgendwie ist das Kabel tatsächlich nicht mehr so ganz
in Ordnung. Das kann ja nicht sein. Liebe Hörer, das sind die
Probleme, mit denen wir uns rumschlagen müssen,
um euch diese Episoden zu bringen.
Ich glaub, schlägt man mal irgendwie so
das eine Bein über das andere und
rupft kräftig an dem Kabelbaum
schon rauf und knackt
es überall. Das ist ein Kreuz.
Ja. Es ist mehr
so ein Kabel, Kabelstrauch,
oder? Als ein Kabelbaum.
Ja. Aber Baum impliziert eine gewisse Ordnung.
Ja. Ja, das ist
falsch, das stimmt. Das ist Kabelgebüsch.
Ja, ein Kabelunterholz.
Ja, okay, also das Schiff des Teseus.
Da gibt's auch ganz viele Varianten davon, ja,
dass der Teseus fährt mit seinem,
mit seinem Schiff auf seine,
auf seine Abenteuerfahrt und hat
aber genügend Ersatzteile dabei und während der Fahrt
tauscht er kaputte Planken
aus und am Ende, wenn er ankommt,
hat er alle Planken einmal ausgetauscht, ist er
jetzt immer noch mit dem, in dem gleichen Schiff,
mit dem er losgefahren ist und
seine Feinde, die fahren hinter ihm her und sammeln
diese Teile aus, die er austauscht und bauen die
dann in ihr eigenes Schiff ein und
am Ende haben sie alle Teile in ihrem
eigenen Schiff ausgetauscht durch die Teile, die
der Teseus hinten runtergeschmissen hat.
Sind die jetzt noch in ihrem eigenen
Schiff oder sind die jetzt in dem Schiff, mit dem Teseus
losgefahren ist oder
was ist da
eigentlich passiert und
diese Anspielung ist eben, was passiert, wenn du
alle Teile von einer Shell austauschst
und dann ist es noch die gleiche Shell.
Genau. Weil sie nicht alle
Teile ausgetauscht haben, wenn ich es richtig verstanden habe.
Ja, aber auch in der Philosophie, also sehr, sehr
interessantes Problem irgendwie,
das passiert ja tatsächlich bei Menschen auch,
irgendwie, wenn man Dinge isst und wieder
ausscheidet, dann man tauscht ja
auch zum Beispiel, also so durchschnittlich glaube ich
alle sieben Jahre alle Atome aus,
aus denen man besteht. Ja, aber das glaube ich nicht, in den
Knochen sind Atome drin, die bleiben da drin.
Ja, okay, also im Schnitt halt, ja,
natürlich, klar, also
natürlich wirst du nicht alle austauschen, aber
und auch nicht die, ja, okay, aber
Aber noch, also ich meine, noch viel kürzer
zusammengefasst ist ja,
you can never step twice in the same river.
Du kannst niemals zweimal in den gleichen Fluss
reinsteigen, weil jede Sekunde
verändert er sich so weit, dass es nicht mehr der gleiche ist.
Wir sind aber immer auf der gleichen Welt.
Ja, und genau, die
Auflösung oder die
philosophische
Schlussfolgerung ist halt, dass bei manchen
Sachen zählt die Kontinuität
mehr, die Kontinuität der Existenz
mehr als die
Bauteile und, ja.
Also ich meine, die Philosophie ist ja dieselbe, die Syntax
ist dieselbe, die Skriptsprache ist dieselbe,
das Interface ist dieselbe,
die API ist dieselbe.
Aber die Frage wäre halt,
die Frage halt wäre halt, wie kann das denn,
wenn ich jetzt das ganze Material austausche, wie kann
es denn sein, dass es immer noch das Gleiche ist, sozusagen?
Wie kann ich denn zum Beispiel, oder wie kann ich
bei Menschen, wenn da ja
alle Teile ausgetauscht werden und auch jetzt ansonsten
das Schwierige ist mit
der Kontinuität, weil es ja auch unterschiedliche
Lebensphasen, aber ich kann ja die gleichen
Menschen immer noch erkennen als Kind oder als
Kreis, wie kann denn das sein? Was ist das,
was ich da erkenne? An den Contract gehalten, an die
Closure, an das Protokoll, an das
Schema, an das Modell,
das ist doch scheißegal. Das regt mich
auch so ein bisschen auf an dieser
Beamen-Debatte, wo du
sagst, wenn du jemanden mit dem
Star Trek-Transporter-Mechanismus
irgendwo hin beamst, dann nimmst du die ganzen
Moleküle und
haust sie und auf der anderen Seite machst du
neue Moleküle und machst sie.
Eigentlich ist es ja kein Mensch, sondern
das ist Mord und Klonen.
Aber
ja, also es hat mich nie
überzeugt, dieses Argument.
Weil du beim Beamen immer nach dem Beamen immer noch genau
der Gleiche bist.
Ja, weil wir das ja sowieso die ganze Zeit machen.
Jedes Mal, wenn ich das mache, bin ich immerhin
noch der Gleiche.
Ja, und wir wissen ja auch nicht, ob Zeit nicht
quantisiert ist und ob wir überhaupt eine Kontinuität haben
und so weiter, aber ja, das geht
jetzt vielleicht zu weit für
den Programmier-Podcast.
Ja, aber es ist halt...
Liebe Hörer, folgen Sie uns auf
Philosophie für Anfänger.
Ja, ich kann aber auch mal so vielleicht noch
einen Pick, den ich dazu irgendwie
in Stellung bringen könnte, wäre halt irgendwie,
wenn Sie sich mal die Sachen von
Joscha Bach anhören. Der hat jetzt auf dem
letzten CCC-Kongress auch wieder einen
interessanten... Sehr kontrovers
wahrgenommenen...
Ja. Ja? Ja. Okay, das habe ich
gar nicht so kontrovers. Ja, es gibt mittlerweile Leute,
die finden alles komisch. Ja.
Ah ja, also, sagen wir mal so, es gab da
diesen Essay auch von dem
Anthropic-Typen,
den man auch mal in einer LLM-Folge
besprechen sollte.
Der
Titel von dem Essay ist
Machines of Loving Grace. Ja, aber du
liest noch wie die Worst, da waren noch viele Leute sehr
empört. Ja, den habe ich gar nicht so mitgekriegt.
Ja, okay. Und
ja, genau,
er hat einen Vortrag gehalten mit dem Titel
Self-Models of Loving Grace und
Ich fand den gut, den Talk.
Ich fand den auch ziemlich gut,
wo er halt sagt, naja, also was ist eigentlich
existieren? Existieren könnte ja auch
bedeuten, also sozusagen
existieren
ist halt
sozusagen immer davon
abhängig, wie
also
man existiert in dem Maß, in dem man
implementiert ist, sozusagen.
Und dann gehen viele der Probleme
weg, wenn man das so, wenn man das
aus dem Blickwinkel ein... Wenn man das jetzt kombiniert mit diesem
Attention is all you need-Ding, dann
wird da auch Philosophisch,
etwas draus, weil man tatsächlich wahrscheinlich
in diesen Quantentheorien
immer durch die jeweilige Aufmerksamkeit die Dinge
erst verwirklicht.
Spannend.
Jetzt sind wir alle sprachlos. Ich finde, das ist das
perfekte Ende für unsere
heutige Episode. Also bleibt uns doch
gewogen. Feedback, hallo, at
pythonpodcast.de. Schreibt, ob ihr uns irgendwo treffen
wollt, ob ihr vorbeikommt. Gerne, wir möchten
gerne eure...
Idee für eine Location? Ja, die machen wir.
Das machen wir schon.
Und ja, wir organisieren das irgendwie,
dann schreiben wir euch irgendwie und freuen uns
auf euch und würde sagen,
dann hört uns vorher mehr Zeit.
Guten Morgen und Abend, gute Nacht.
Viel Spaß, bleibt uns gewogen. Schaltet wieder
rein. Bis bald. Und bis zum nächsten Mal.
Tschüss. Ciao, ciao.