Transcript: Bytes und Strings
Full episode transcript. Timestamps refer to the audio playback.
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim 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.
Wir hatten eine Pause, kreative Pause.
Ja, und da sind noch andere Episoden noch in der Warner-Akt.
Die kommt aber, die kommt wahrscheinlich tatsächlich vorher, denke ich mal.
Ja, die ist vorher erschienen?
Nein.
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 noch so ein paar.
Aber ich wollte kurz sagen.
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 drin
steht 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 das Premiere.
In diesem Buch, da stecken auch noch ein paar Episoden drin.
Ja, aber so viel.
Ja.
Von jetzt haben wir noch das Fernbuch gezogen bisher.
Ja.
Also von her.
Ich habe hier noch ein paar andere dicke Bücher.
Es sind auch 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.
Ist mehr so der Öltanker unter den Nussschalen.
Das ist.
Es gibt auch noch dieses schöne neue Tangebuch.
Tango 5.
Die ist das.
Tango 5 by example.
Tango 5.
Ich habe nur noch E-Books.
Und das ist perfekt, weil die liegen nicht so vorwurfsvoll rum auf dem Schreibtisch.
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.
Einer noch.
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.
Okay.
Okay.
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 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 jetzt erst mal ein bisschen, ich könnte jetzt hier mal so
eine Kapitelmarke für News einfügen.
Ja.
Ähm, und, ähm, jetzt hat es die Kapitelmarke hier an den Anfang gesetzt.
Was ist denn das?
Schon wieder alles kaputt hier.
Ja, wir haben ein Problem mit der Software, Jochen.
Ja, ja.
62 Episoden sind wir ja immer noch.
Ihr wisst wahrscheinlich, wie lange wir zwischendurch brauchen, um das Audio-Setup hinzubekommen.
Ja, heute auch schon wieder.
Das war jedes Mal.
Ja.
Ja.
Jedes Mal.
Jedes Mal mit neuen, tollen Dingen, die wir rausfinden über das Audio-Setup.
Ja.
Und wir machen noch jedenfalls bei eigenem, was die Musik kann.
Heute hatten wir ein Echo.
Vielleicht hat er, dann mischt wohl einfach zu viele Kanäle, Jochen.
Ja.
Ja, aber diesmal war ich es ja.
Diesmal bin ich ja schuld, wenigstens.
Ja, du, das war wieder was Neues.
Ja.
Also, 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 das, 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.
Ja, klar.
Du könntest auch so ein Federhall-Modul da reinbauen, dass das auch so wirklich so nach
Ja.
Ja.
Da kann man dann unterscheiden.
Können wir auch.
Wir können auch noch ein paar hinzufügen.
Das geht.
Das ist immer.
Trick nicht, Jochen.
Tiss nicht.
Ja.
Genau.
Also, richtig.
Ah, der News.
News, genau.
Es ist für mich tatsächlich einiges passiert.
Es ist halt immer die Frage, letztes Mal, die News sind so ein bisschen legal.
Seit über zwei Monaten.
Aber tatsächlich.
Ja, aber News haben doch die Eigenschaft, dass sie neu sind.
Also kannst du nichts von.
Es bezieht sich nur auf die letzten zwei Wochen.
Ja, genau.
Also, so ganz uralte Sachen.
Werd 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, ich weiß nicht, Tailwind 4 ist raus.
Ja.
Ja.
Genau.
Das ist vielleicht ein.
Das ist super.
Ja.
Ja.
Also, ich wollte jetzt keine.
Ach so, okay.
Von Tailwind.
Ich sag's jetzt ganz einfach.
Ich bin kein Freund von Tailwind.
Ja, du machst auch.
Was war das?
Als CSS.
Ich wollte jetzt nichts sagen.
Ein semantisches CSS.
Sogenanntes semantisches CSS.
Ach, das machst du auch.
Ich verstehe den Vorteil von Tailwind nicht.
Wobei.
Ja.
Wo man eine CSS-Deklaration von Color Red durch eine Klasse Color Red ersetzt.
Dafür brauche ich kein CSS.
Der ist 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.
So, 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.
Nach.
Nach Cascading hast, dass du sie ändern kannst, dass du sie semantisch benennst, dass du sie
nicht wissen musst, was der Style ist, 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 gar nicht.
Inline-Styles sind total.
Wir driften schon wieder ab.
Wir driften schon wieder.
Ja, ja.
Ich starte hiermit eine Umfrage unter den Zugang.
Zuhören, ob sie wissen wollen, was wir von Tailwind halten.
Und dann machen wir eine erste.
Wollen wir das nicht dann machen, wenn wir mit dem Frontend-Podcast, den wir irgendwann
mal treffen wollten, das gemeinsam tun?
Ja, das können wir auch gerne machen.
Das hätte wahrscheinlich höhere Chancen.
Das ist ja gut.
Dann sollen die sich mal erklären.
Da wird die Wahrscheinlichkeit auch größer, dass das dann tatsächlich irgendwie um die
Bioktellerand herum passiert.
Da war es ja was mit Tailwind CSS.
Ja.
Genau.
Aber ja.
Also ich bin auch eher momentan auf der semantischen CSS-Seite unterwegs.
Ja.
Aber genau.
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.
Ah, genau.
Was halt, wo ich finde, das muss man halt schon mal irgendwie erwähnen.
Und 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, was da wirklich
passiert ist.
Irgendwie DeepSeek zum Beispiel ist irgendwie.
Sprachmodelle, ja.
Ja.
NLMs.
Was ist das denn, Joch?
Was ist denn DeepSeek?
Ja.
Das ist halt irgendwie so ein Modell.
Oder Gewichte sind herausgefallen aus einem chinesischen.
Die haben die alle selber generiert.
Hitschfond.
Gewichte, ja.
Wahrscheinlich.
Aber genau.
Und zwar sehr lustig irgendwie.
Also das Foundation-Model ist halt, haben sie veröffentlicht am 24.
Dezember 2024.
Ein Weihnachtsgeschenk.
Ja.
Und zwar völlig kommentarlos.
Und das hat tatsächlich relativ viel Aufsehen erregt, weil es halt schon, es ist ein sehr,
sehr guter Modell.
Es ist ein sehr, sehr guter Modell.
Das 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, oder wo ist die Quelle dafür, dass das besonders
billig ist?
Ja, DeepSeek selber.
Die haben diese.
Ja, ja.
Die haben gesagt, es ist nur 5 Millionen dabei.
Ja, ja.
Ja gut.
Aber ich meine, die haben natürlich unter Umständen auch eine gewisse Motivation zu
sagen, was sie sagen.
Insofern.
Die haben die falschen, geklauten Sachen.
Die haben die falschen geklaut.
Das ist ja wöchentlich.
Ja, das fand ich ja das Allerlustigste, dass sich dann OpenAI darü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?
Also irgendwie, dass das OpenAI macht, ist ja im Grunde irgendwie so dicke Bücher nehmen,
so wie Fluent Python 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.
Ja.
Ja.
Ja.
Ja.
Ein anderes Modell.
Geht gar nicht.
Das geht natürlich auch gar nicht.
Also als Dieb bei einem anderen Dieb klauen geht halt einfach nicht.
Ja.
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 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.
Ja.
Ja.
Ja.
Ja.
Ja.
Ja.
Ja.
Ja.
Ja.
Ja.
Ja.
Ja.
ist einfach totaler Müll, ja, also
was zur Hölle? Und
ja, also Informationen 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 Schwartz, ja, das ist halt...
Ja, aber auch vorher schon mit Pirate Bay und mit
Filmen runterladen und Musik runterladen
und so weiter, ja klar.
Johann, das, also
für mich erklärt sich das durch,
ich bin auch so ein, ja, ich bin auch so ein,
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 macht man ja nur deswegen,
weil es ein Ball, irgendwie die Welt
so verrückt ist, ja, und das ist ja nicht deswegen, weil man Lizenzen
so geil findet.
Ja, aber Lizenzen sind doch...
Aber 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.
Und jetzt machen sie genau das Gleiche.
Ja, weil sie entdeckt haben, dass ihr
Geschäftsmodell daran 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 guten Nuxubüsen privilegiert
sind.
Ja,
also ich finde halt, was mir halt
nicht gefällt, ist, dass diese
Argumentation aus der Ecke immer inkonsistent ist.
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 soll sich,
man darf sich halt aus
freizugehörigen Fällen 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.
Und vor allen Dingen,
mit der gleichen Argumentation könntest du auch Google
verbieten, seine Webseiten zu indizieren.
Ja, kann man versuchen,
aber das ist ja aus meiner Sicht, das ist ja offensichtlich
absurd, ja.
Ja, aber die Zeitungen?
Ja, gut, das machen Leute ja auch, das kann man auch
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ö,
kriegst du hier nichts, oder was auch Leute ja machen
ist, dass sie dann halt so
quasi so Endlostrom
von sinnlosen Tokens irgendwie
erzeugen, um da Rechenzeit zu verbrennen, auf der
anderen Seite. Und möglichst langsam.
Dass der wirklich lange da festhängt.
Die moderne Variante der
guten alten Teergrube.
Ja, aber...
Das ist halt so ein bisschen die Frage, ne?
Es gibt ja, vielleicht der frühe Urheberrecht
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 Marktplatz 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 der Punkt.
Da kannst du mit dem Urheberrecht halt nichts machen, denke ich.
Ja, genau. Das ist der entscheidende Unterschied.
Das Urheberrecht schützt ja die drei Vs irgendwie so
für vielfältigen Verändern, Verbreiten,
aber nichts davon ist betroffen, wenn ich
jetzt halt irgendwie den Text von irgendeiner
Wesserte 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.
Aus meiner, in meinem
Verständnis halt. Das geht einfach. Oh Jochen, jetzt hast du
aber eine schlimme Dose aufgemacht, weil jetzt
die Rechteinhaber drauf, dass wenn du das in dein
Gehirn einliest, hast du es
vervielfältigt.
Ja, aber das ist ja offensichtlich
absurd. Das kann man doch nicht vertreten,
sowas. Und was mich ärgert, ist halt,
dass Leute quasi auch 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 wie
so ein kleines bisschen ab.
Ist das in diesem Podcast schon mal vorgekommen?
Nein, aus einer anderen Weise.
Ich glaube, in Episode 3 ist es mal vorgekommen.
Ja, ist das echt?
Gut, dann ist ja nicht so schlimm, wenn das nicht so ist.
Ist es trotzdem interessant.
Ja, aber genau.
Also ich finde es halt,
ja klar, natürlich ist es irgendwie absurd, wenn sich
jetzt OpenAI über DeepSync 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 sag mal, Schöpfungshöhe
von diesen Dingern doch schon so massiv ist
und die so einen, also für mich
Value bereitstellen können.
Also die Schöpfungshöhe sogar.
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.
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.
Die AMD-Prozessoren sind, die man
sich kaufen soll.
Ja, die AMD-Prozessoren, gut.
Ja, also natürlich Hauptspeicher ist
für die Dinger, wenn du die halt komplett laufen
hast, brauchst du halt viel Hauptspeicher.
Und auf einem
ordentlichen, also ich habe so verschiedene Artikel
gesehen, wo sich die Leute Rechner zusammenbauen,
zwischen 2.000 und 6.000 Dollar.
Was ja nicht viel ist für so ein System.
Und dann kriegst du irgendwo zwischen 3 und 5 Token pro Sekunde.
Was auch nicht viel ist.
Aber
auch nicht schlecht.
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 4 bis 5 Tokens pro Sekunde.
Da kriegst du halt ordentlich.
Das liegt ja daran, dass die Macs so eine spezielle
Speicherarchitektur haben, die kannst du ja auch GPU benutzen.
Aber, also ich meine, das Problem ist doch,
dass du den Macs nur bis 192 GB
kaufen kannst.
Ja, das ist auch eine halbe Zahl.
Und das ist irgendwie eine Verzillade kostet.
Ja, genau.
Exponentialkurve und SD-Karte
kriegst du für einen Terabyte, kriegst du für einen Apple-9.
Genau. Und
so ein AMD-Prozessor mit
vier
Prozessorsockeln
drin, da kannst du ja einen Terabyte-Speicher
reintun für den gleichen Preis.
Und da hast du dann gewisse
Limitationen einfach nicht mehr.
Ja, das ist schon richtig. Ich habe auch heute
gesehen auf einem Postgres-Newsletter
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 Hauptprecher
für gar nicht mehr so wahnsinnig viel Geld.
Und das ist wirklich absurd,
was da gerade geht.
Aber ja.
Ach ja.
Aber manche Leute brauchen das halt.
Es ist doch schön, dass es das gibt.
Ja.
Es ist doch 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,
ich würde sagen, dass das jetzt billiger
ist oder so, das sagt jetzt irgendwie diebsig,
aber 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.
Das ist überhaupt kein Stück billiger
als irgendwas anderes.
Das sind auch sicherlich
die geschönte Zahlen.
Das kann ein Teil sein, dass du sagst,
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.
Anthropic hat tatsächlich
Zahlen dazu veröffentlicht,
also der Chef von Anthropic,
Dario Amodei oder so,
der hat auch tatsächlich veröffentlicht,
wie viel es gekostet hat.
Sonnet 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.
Eine schöne Ironie
finde ich an der ganzen
Geschichte, dass diese
Firma DeepSeek 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 das 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.
Also das ist wirklich solides
Engineering, also kann man sich
nicht beschränken. Einfach um die
Exportbeschränkung rum. Top.
Alle.
Erste Klasse.
Ja, aber jetzt, 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,
Mitte bis Ende Januar, ich weiß gar nicht mehr wann,
kam halt irgendwie
R1, wo sie dann so ein Marketing
Bus drum gemacht haben.
Das ist aber wirklich,
also das ist jetzt keine Kunst,
also von einem guten Foundation-Modell
Ein guter Marketing-Bus machen ist schon
eine schöne Sache.
Aber das Modell war jetzt kein, das Modell selber war nicht,
das war nicht aufsehenderregend eigentlich.
Aber
das Marketing schon,
also sie wussten halt, okay,
irgendwie, wir haben ein Modell,
das nicht gut ist und jetzt
haben sie halt dann draußen halt
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,
dass er 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.
Aber shorten die irgendwelche?
Ja, was machen die da?
Was machen die?
Das klingt so riskant.
Nein.
Also ich weiß es nicht.
Auf jeden Fall ist das natürlich schon so ein bisschen,
ein bisschen verdächtig und
ja, auch wenn man
auch da wieder, wenn man Leute fragt,
die haben die Ausgangsweise, 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
Was? Du hast doch nicht ernsthaft
angenommen, dass das da irgendeinen Fundamentaldaten
Zusammenhang gäbe.
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,
ein 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
weniger, also
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.
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 Rauschen 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 getauscht?
Ich kann nicht genug Marketing-Buzz generieren, um da irgendwas
Nee, keine
Diese Podcast-Episode, die
Keine Aktienempfehlungen von
Podcastern bitte irgendwie
Nee, ich
hab da nichts gekauft und nichts verkauft,
das ist auch vielleicht doof, ja, also das müsste man
vielleicht eigentlich machen. Ja, bei den Steuern, die man jetzt zahlen muss,
ja.
Ja, aber also
genau, also irgendwie
Also
du glaubst nicht, dass Nvidia mehr wert ist, als
die gesamte deutsche Wirtschaft zusammen?
Ja, finde ich irgendwie komisch.
Glaubst du nicht?
Nee.
Ja, ich glaub's 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 hab... Ah, 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,
also Diebsig hat das ja ganz gut
gemacht. Lass mal überlegen,
gibt's vielleicht noch irgendwelche anderen
Firmen, die halt auch total
überbewertet sind oder wo es eine Blase
ist? Nein. Und man vielleicht sowas
ähnliches machen könnte? Zum Beispiel,
was ja auch immer so ein Problem ist, hatten wir
gerade schon von Open Source,
schwer, schwer ein Geschäft
zu... Also wie kann man damit Geld verdienen?
Hm, vielleicht so. Also wenn man sich jetzt
sowas überlegt wie SAP
verdient einen Haufen Geld für
ja, was eigentlich genau, ist ein bisschen
unklar, aber irgendwie so
wirklich... Ja, ich mein, okay,
das ist jetzt grob vereinfacht. Ich hab ehrlich gesagt
keine Ahnung von SAP, aber ich würd sagen, das ist halt eine
relationelle Datenbank und ein bisschen Frontend drumrum.
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... Nicht spezifisch, okay.
Ja, eigentlich ein Trick an der Geschichte.
Ja.
Oder sonst irgendwen.
Keine Ahnung.
Keine Ahnung, was ich dafür bezahlen muss, wie gesagt.
Würde jemand für dich gut bezahlen.
Das halt in Open Source nachzubauen.
Und dann Weihnachten 2025
wirft man halt das Ding irgendwie raus.
Ja, sagt er aber vorher.
Natürlich müsste man irgendwie so ein paar Leerverkäufe machen,
so Tättingen, und dann
hier so SAP-Kunden, ihr habt den Ding,
das macht ihr auch gleich und ihr müsst die ganzen Lizenzgebühren
nicht bezahlen. Das Problem
ist halt, dass das so krasse meistens
an die ganzen Schnittstellen...
Dominik, du und deine Realität.
Ja, okay. Also ich... Ja, natürlich.
Lass mir von deiner Realität nicht die Wirklichkeit
verderben. So einfach ist es wahrscheinlich
natürlich nicht alles, klar.
Aber also...
Ich glaube, der einzige Verkaufsfaktor ist,
dass die ganzen...
Was sind das?
Der ganzen Matrix-Konzerne
von Finance, VHA,
oder 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.
Ja, mighty.
Nochmal zurück zum Thema News. Das kann man aber schon
nachbauen.
Glaube ich. Ja, ich glaube auch.
Hast du Lust?
Es gibt einen Grund, warum du
da nicht viel mit zu tun haben willst.
Ja, klar. Es ist halt auch irgendwie langweilig, aber...
Der Jochen hat halt noch nicht die richtigen Investoren
gefunden. Genau. Ich meine, natürlich Langeweile...
35 Millionen geben dafür.
Das geht besser, wenn
man sich das Glas Wasser dann
irgendwie in einem goldenen Wasserhahn
holt. Das macht dann...
Ich weiß es nicht. Keine Ahnung.
Ich...
Ja, aber ich fand die Idee auf jeden Fall interessant.
Und dann dachte ich so, ach, das musste man ja
machen hier.
Ja. Genau. News.
Das war diese Liebste-Geschichte.
Also ja, es ist interessant.
Insgesamt ist es natürlich auch eine tolle
Geschichte, dass das halt irgendwie...
Also ich meine, ich glaube,
diese Vorhersage von Jan Lekun,
der
jetzt bei Meta
Dinge macht oder so, dass er sagt, auf lange Sicht
werden die Open-Source-Geschichten gewinnen, ist richtig.
Jetzt natürlich, wie lieb es dir ist,
das Modell, das ist kein Open-Source.
Das hat alles überhaupt gar nichts mit Open-Source zu tun.
Also in den Medien hört man immer so,
oh, ein Open-Source-Modell. Nein, natürlich nicht.
Alles Quatsch. Ja, Trading-Supply sind nicht Open-Source.
Die Algorithmen, der ganze Kram ist alles nicht Open-Source.
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. Also es war nicht nur per Schnittstelle
über so... Keine komische Lizenz, ja.
Also Lama hat ja immer noch diese eigenartige Lizenz.
Du darfst es verwenden. Es sei denn, du bist Google.
Dann nicht. Aber...
Ja, aber das hat mich jetzt noch nie gestört
an der Lama-Lizenz-Vereinbarung.
Bist du nicht Google? Da bin ich weit davon
entfernt 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...
Sam Altman verloren?
Nein, nein.
Fast.
Er hat doch mal Glück gehabt, dass das nicht passiert ist.
Ja, fast. Er hat 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.
Ja, die kommen auch alle von OpenAI.
Das sind die Leute, die Chachapity ursprünglich mal gebaut haben.
Und die haben aber auch schon mal versucht,
Sam Altman feuern zu lassen.
Das hat nicht geklappt, dann mussten sie alle gehen.
Und, ja, dann haben das
nochmal wieder Leute versucht.
Das hat auch wieder nicht geklappt, dann mussten sie alle gehen.
Und es gehen immer noch irgendwie Leute.
Ist ein Modell, kann man machen.
Ja.
Ja.
Was ich gut finde, ist halt, dass es wirklich irgendwie
ganz ordentlichen Wettbewerb gibt.
Also, ich muss auch sagen,
die Anthropic-Geschichten zum Programmieren,
finde ich, ist so nicht so das beste Modell
momentan.
Und, ja, es funktioniert alles super.
Genau, dann aber auch interessant,
die neuen
OpenAI-Modelle
OO3 oder so,
da gab es große Erfolge
bei irgendwie
AGI und
Frontier-Math-Benchmarks
und so. Also, das ist schon...
Ja, also, 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.
Persistenter Datenbank?
Ja. Also, keine Ahnung, so ein
Sprachmodell darf bei dir auf die Datenbank zugreifen
und sich daran erinnern, was das in der letzten oder vorletzten
Session da abgelegt hat.
Und so eine Transaktion da machen
und von da weitermachen.
Also, das ist quasi das,
was Consciousness gesatied 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.
Außer 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
ähm,
wenn man mit sich selber einen inneren Dialog hält.
Ja, gut.
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 ihm auch Zugriff auf deinen Rechner geben
oder was auch immer. Und auf deine Daten.
Du kannst eine Datenbank anbinden.
Mhm.
Das ist 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 die Spiele-Fälle sind ja überhaupt
das Rack machst oder nicht.
Ja.
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 aber erklären, was du damit meinst?
Naja, dass du halt einfach
Next-Token-Prediction machst.
Das machen wir alle. Aber
der Unterschied jetzt zu den Reasoning-Modellen ist halt,
dass man jetzt sagt, okay, man
generiert
out,
generiert halt so Chains of Thought
und zwar jede Menge 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
mal halt auch Varianten suchen.
Jetzt sind wir 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,
sich 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. Ja.
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
AG
I Benchmark ist halt komisch benannt,
weil er hat nichts mit AGI zu tun, aber
ja, das ist da,
kriegen Leute auch mal einen falschen Hals.
Und ja,
Frontier Mass ist aber auch, ja, oder
auch super interessant, wie heißt das Ding?
Dieser Coding Benchmark.
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.
Cycle 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, das ist halt auch nicht so einfach,
die irgendwie laufen zu lassen.
Aber die
normalen LLMs waren halt da nie so
wirklich gut, bis jetzt auch die Reasing-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.
Das fand ich schon schlecht.
Ja.
Genau.
Oh, dann was wir,
dann haben wir eine Mail gekriegt.
Das reicht auch gerade noch so.
PyCon Austria
ist jetzt irgendwie.
Oh ja, wir sollen das. Und wir sollen das ankündigen.
Das ist am 6. und 7. April
2025.
20.
Hochschule Burgenland in Eisenstadt.
Ja, genau.
Kann man sich mal ansehen.
Was haben wir noch?
Wir müssen mal eine ganze LLM-Folge mal wieder machen.
Ja, ja, ja. Ich habe 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.
Den man mal fragen könnte, dann
wäre das wahrscheinlich ganz nett.
Da gibt es auch so viele Tools und Dinge.
Über die man mal reden müsste.
Also gerade dieses ganze Thema
Programmieren mit LLMs finde ich halt sehr interessant.
Ich mache das ja auch viel.
Und ja,
da kann man auch unterschiedliche Arten
tun.
Genau, da kann man auch mal die ganzen Tools
angucken und sowas.
Ich habe noch zwei News-Items, die allerdings in eine ganz
andere Richtung gehen.
Das erste Item
ist, dass Microsoft
bei Nature eine Veröffentlichung
eingereicht hat,
wo sie,
die sagen, sie haben
einen
Quantencomputer mit topologischen
Qubits
erfunden.
Das ist wohl
eine andere Art, Qubits zu machen,
die stabiler ist.
Also da ist sehr viel,
sehr viele
Worte drin, die man sich mal von einem LLM
erklären lassen müsste.
Special kind of
Qubit built using non-abelian
anions, which are excitation
set can exist in a two-dimensional medium.
Würdest du kurz was dazu sagen, bitte, lieber Johannes?
Nee, ich kann da gar nichts dazu sagen.
Was sind denn überhaupt
typologische Quanten?
Keine Ahnung. Es war einfach nur in der Veröffentlichung,
dass es einen Durchbruch gab in dieser Art
Quantencomputer.
Das hat auch einige Bällen erzeugt.
Ja, also Quantencomputer wäre schon voll cool,
aber alle bisherigen
Durchbrüche waren nicht so richtig
Durchbrüche, ehrlich gesagt.
Sind noch nicht so weit gekommen.
Aber es wird Zeit, dass man zu
Postquanten-Kryptografie wechselt.
Ja, das hat auch einen tollen Namen,
dieser Chip, der heißt Majorana.
Majorana. Ja, das
liegt daran, dass das
tatsächlich
irgendein Autor, der
Das hätte jemand zu 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.
Und zwar gibt es
einen PR, der jetzt gerade
durch die Review geht
und da wird ein
Tailcalling-Interpreter
umgesetzt. Ja, das ist cool.
Was das genau ist, spielt auch keine
richtig große Rolle. Tailcall-Optimization
ist so eine Möglichkeit, um
Stackframes zu eliminieren, wenn man weiß,
dass man nicht mehr dahin zurückkehrt.
Das Wichtige daran ist,
9 bis 15 Prozent
Geschwindigkeitsimprovement.
Das ist schon,
Das ist schon massiv.
John Haberman war das, oder Josh Haberman?
Ken Jin
war das.
Und es ist
jetzt schon gemerged und
wird in 3.14 veröffentlicht.
Noch nicht in den Default-Sachen.
Also man muss das
beim Konfigurieren, beim Compilen
gibt es dann einen Schalter, den man
Und das funktioniert irgendwie auch nur bei
neuen Compilern. Das ist auch leider der Grund, warum sie es
nicht per Default
anmachen, weil du brauchst halt
neue Compilern.
Bei LLVM.
Weil der C-Standard, in dem C-Standard
gibt es so Sachen, die das nicht
können.
Der C-Standard, der braucht
immer Register bei so einem
Funktionsaufruf und
deshalb wurde das auf Ebene von der LLVM
IL, also diese
Intermediate Representation gemacht.
Und da kann man das nämlich wegeliminieren.
Da gibt es so ein Flag, das heißt Must Tail.
Das sind alles
technische Details. Das Interessante ist, dass da
wirklich einfach,
mit einer neuen Umsetzung einfach
10%, 10, 15% mehr
Performance rauskommen. Und das ist schon
fantastisch.
Ja, voll gut. Stimmt.
Ja, ansonsten,
genau.
Habe ich jetzt, glaube ich, gar nicht. Ich muss mir nur scrollen,
dass du viel zeugst.
Das Alter ist
schon vorbei. Ist nicht mehr nötig.
Ja, also wir haben auch, das sollte
vielleicht auch einfach was zu sagen.
Wir hatten mal aufgerufen,
ob Leute
sich melden könnten, die Interesse daran haben,
irgendwie so ein Hörertreffen mal zu suchen.
Und da gab es relativ viel Feedback tatsächlich.
Und da so, sagen wir mal so,
ausreichend genug, dass wir jetzt wohl tatsächlich
ernsthaft ins Auge fassen müssen.
Keine Ausrede mehr.
Ja, aber es ist ja leider nicht in Süddeutschland.
Es ist eigentlich auch egal, ob man das macht.
Du kommst einfach mit, Johannes.
Du hast eingeflogen.
Wir können ja mal gucken. Also ich 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, Jun.
Irgendwie so, genau, genau.
Und dann
brauchen wir noch eine Location
irgendwie und dann müssen wir den Johannes irgendwie
von Heim.
Also ich würde eher so Erwachsenenzeit
irgendwie so mittags anfangen.
Ah, okay.
Dieser hat Erwachsenenzeit.
Ja, und dann kann man sich doch
irgendwie ein schönes, was Grünes raussuchen, oder?
Muss ja nicht jetzt so...
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.
Kleiner Spoiler.
Ja, okay.
Ja, aber es waren viele Leute, die hier sagten, die kommen hier von Rheinland.
Deswegen machen wir das einfach hier.
Ja.
Genau.
Ja, also aber dann, das waren dann auch schon alle News,
die ich so hatte, glaube ich.
Ja.
Ja, einiges.
Wolltest du nicht noch irgendwas erzählen von der
Forstkontakt?
Ach, Forstem. Ja, genau.
Ja, könnte ich.
Genau, auch.
Ja, und...
Ja, warte, dann mache ich am besten mal eine Kapitelmarke und sage hier mal...
Ja, Peck und Wepfer auch, ne?
Ach so, genau, da kannst du ja mal was erzählen.
Dann nenne ich die Kapitelmarke einfach Konferenzen nachher.
Ja, so viel kann ich dazu eigentlich gar nicht erzählen.
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 fand das denn statt?
In Berlin?
In Berlin.
Ach so.
CC, irgendwie so ein Center.
Das war relativ draußen in...
Wie heißt das da?
Viertel.
Moment, ich muss mal kurz schauen.
Ja, in irgendeinem Viertel in Berlin.
Chebchow oder so, ja.
Okay, ja.
Also genau, irgendein Haus in irgendeinem Viertel in Berlin.
Also war nicht so groß wie...
Das ist ja eine genaue Beschreibung.
Ja, genau.
Ja, wir können die Konferenz einfach verlinken, dann kann man da nachgucken.
Ja.
Okay.
Da waren interessante Sachen dabei.
Mhm.
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 es da irgendwelche
interessanten...
Also ich meine, klar, also...
Ich habe ja viel über UUIDs gelernt.
Ah, okay.
Hm.
Ja.
Das finde ich gut.
Über die neuen, oder?
Sieben oder acht, ja.
Ja, das sind die neuen.
Ah, okay.
Ich habe immer noch nicht so richtig verstanden, wofür man die unbedingt braucht, aber gut.
Ja, dann, wenn du den Talk hast, dann...
Ja, auf die PyCon Web gehen.
Okay, gut.
Dann, genau.
Dann muss ich mir den mal angucken.
Ja, ich habe es tatsächlich umgestellt in Dango auch jetzt auf sieben, glaube ich, ja.
Ja.
Ist leider eine extra Lib und man muss so ein klein...
Bei Dango geht es nicht einfach so, aber man kann das quasi dann mit einem anderen Import
versehen und dann funktioniert es als sieben und die sind auch dann geordnet und so.
Das ist sehr, sehr schön.
Ah.
Ja, genau.
Ich war jetzt Anfang Februar auf der FOSDEM in Brüssel und ja, nee, das war auch ziemlich
cool irgendwie.
Das war riesig.
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 Freien Universität Brüssel irgendwie.
Und der ist halt auch dann komplett voll.
Und es gibt halt, ich weiß nicht, wie viele Tracks.
Keine Ahnung.
Viele.
30 oder so?
Ja.
Gefühlt.
Es ist halt...
Also...
Es ist halt...
Es ist halt...
Es ist halt...
Es ist halt...
Es ist halt...
Es ist halt...
Es ist halt...
Es ist halt...
Das Programm anzugucken ist halt schon ein Ding der Unmöglichkeit.
Weil...
Das ist irgendwie...
Zu viel.
Sobald man einmal durch alle Talks durchgescrollt hat für den Tag und immer geguckt hat, sind
die Talks, die man sich angucken wollte, schon vorbei.
Weil es dauert einfach zu lange.
Und...
Hast du ein Sitzplatz bekommen irgendwo?
Ja, ja.
Doch.
Also klar.
Es war schon auch sehr voll.
Also das ist...
Aber gerade bei den großen Serien 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.
Aber es war auf der anderen Seite auch wieder gut zu sehen,
dass halt irgendwie, also oft hatte man ja jetzt das Gefühl,
auch gerade nach Covid, dass einfach Sachen irgendwie leerer waren.
Dass nicht mehr so viele Leute zu irgendwelchen Veranstaltungen gehen
und das alles irgendwie so ein bisschen,
also bei der Subscriber war das zum Beispiel auch so,
dass man sagt, ja, 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 Fostel war das halt so,
so einfach, 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 Serne nicht rein,
weil es halt irgendwie aber da Riesenschlangen davor sind.
Also da geht wieder einiges.
Also das war richtig, da war richtig was los.
Den Python-Devroom hat Marc-André gemacht, oder?
Genau, ja.
Das war am Sonntag.
Das war halt am Wochenende, Samstag, Sonntag.
Sonntag war Python-Devroom in so einem Hörsaal da.
Und da waren einige sehr coole Talks dabei.
Ich habe da nicht alle gesehen.
Also gerade morgens war ich halt noch irgendwie nicht da.
Sehr richtig.
Nicht da, ja.
Und dann so ab mittags habe ich so drei, vier gesehen, glaube ich.
War das auch Hybrid?
Also das finde ich ja zum Beispiel bei den großen,
Europice und FNC ist immer toll.
Da konnte man dann, während man einen Talk gerade,
auf dem Telefon weiterguckt,
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 geht da schon.
Das geht da auch.
Also es gibt einen Stream von allen Tracks sozusagen.
Ja, genau.
Das ist cool.
Genau.
Also aber das ist alles sehr weitläufig da.
Das heißt, man kann da nicht.
Also das habe ich auf der Karte.
Brüssel ist irgendwie viel weitläufiger,
als ich jetzt gedacht hätte.
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 in einer Dreiviertelstunde
so von Osten nach Westen oder Süden nach Norden durchlaufen.
Was?
Ja.
Also durch den Kahn.
Also du wohnst ja 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, okay.
Ja gut, es hängt dann auch noch ein bisschen davon ab.
Aber sowas so.
Also 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 war auf der Karte auch so,
irgendwie das ist da genau in der Nähe.
Und dann war das halt aber zuvorderlich.
Du bist 40 Minuten.
Und das war...
Das geht ja noch.
Ja, aber...
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 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 Öffentlich-Verkehrssystem in Brüssel
ist auch irgendwie so ein bisschen komisch.
Aber ja, und man braucht auch sehr lange da.
Aber genau,
also da kann man nicht einfach irgendwie mal kurz ins Hotel
oder in die Sauna
und dann wieder zurücklaufen.
Oder hat man einfach ein falsches Hotel ausgesucht.
Ja.
Ja gut.
Vielleicht.
Ja, aber genau.
Also ich habe da auch einen Talk gehalten
über mein Resümee-Side-Projekt.
Jungle Resümees.
Jungle Resümee.
Ja, wir machen gerade unsere TV's schick.
Genau.
Weil das muss man ja so ab und zu machen.
Oder so, wenn...
Kann man schon mit Voucher-Token
direkt einmal aufrufen,
wenn man das nicht will.
Dann ist das eine Woche gültig.
Dann kann man sich das alles schon angucken,
wie das ganze Projekt ist und sowas, ja?
Ja, genau, genau.
Das ist auch drin.
Aber im Wesentlichen ist es halt irgendwie so
ein JSON-Field,
wo der ganze Kram halt drinsteht.
Die Lochen schreibt sogar die ganzen Token
mit ins JSON-Field rein.
Da steht einfach alles in dem JSON-Field drin.
Das ist jetzt gar nicht so erwartet.
Ja.
Alle Plugins, einfach ein JSON-Field,
alles rein.
Papp.
Ja.
Fand ich ein bisschen seltsam.
Postgres als MongoDB verwenden.
Ja, genau.
Aber also die Idee ist sozusagen...
Das ist schneller.
Ja.
Genau.
Und man macht halt immer nur eine Curry pro...
Wenn man eine Webseite rendert.
Man muss immer nur dieses eine Ding
aus der Datenbank holen.
Fertig.
Ja, aber der eigentliche Grund,
warum ich das an der Stelle so gemacht habe
und nicht irgendwie quasi so in Normalform
so normalisiert irgendwie in der Datenbank 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...
Das wird alles sehr komisch.
Ja, aber da muss man halt auch eine Liste pflegen
mit offiziell supporteten Plugins,
sodass die alle auch identische Keys nicht haben,
sondern dass die...
Ja, das muss man vielleicht nicht.
Aber so kann man wahrscheinlich auch irgendwie automatisch machen.
Aber das ist halt dann schwierig.
Während dann halt man sagt,
wenn du Plugins schreibst,
dann ist sozusagen die Anforderung,
dass das etwas sein...
Die Daten müssen halt etwas sein,
was man nach JSON serialisieren kann.
Und wieder...
Ja, so.
Dann reicht das eigentlich schon.
Und ja, dann muss man halt sonst nichts machen
und kann einfach den Namen des Plugins nehmen
und darunter halt die ganzen Daten speichern.
Ich sag ja nichts.
In Name Collision,
zweimal das gleiche Plugin gleich nennt.
Ja, das geht natürlich nicht.
Aber das ist...
Das Problem hast du ja immer.
Kontrolle drüber,
wenn du...
Wenn du das halt verwendest,
wenn du dann zwei Plugins mit dem gleichen Namen nimmst,
okay, dann hast du halt einen Fuß geschossen.
Aber ja, genau.
Das ist so.
Ja.
Und es macht halt so HTMX-Zeugs
und solche Dinge.
Genau.
Und ich habe so ein bisschen...
Ich habe eine Demo gemacht mit
so Code-Generierungen über LLMs.
Und genau.
Die hat auch so halb funktioniert.
Insofern eigentlich ganz gut.
Wo ich einfach so Few-Shot-Learning mache.
Also ich packe halt quasi die Plugins,
die es gibt,
in den Kontext von einem LLM
und sag dann...
Gib mal ein neues Plugin.
Gib mal ein neues Plugin für ein neues Prompt.
Und dann kommt da halt irgendwie Kram von einem LLM zurück
und den schreibe ich dann halt auch in eine Datenbank
und kann das aber auch live direkt testen,
wie es halt so aussieht.
Und ja, das hat eigentlich ganz gut funktioniert.
Ja, ich fand das Projekt interessant.
Das hat so verschiedene Aspekte gleichzeitig.
Also dieses Plugin-System hat auch so ein Auto-Crud und so.
Und ja, das war bei...
Also in der Technik...
Ich fand es 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 einfach drauf gucken,
das ausprobieren.
Ich habe überlegt, ob ich es forken soll
und dann habe ich es anders implementiert.
Ja, ist ja auch okay.
Genau.
Dann hat mir irgendjemand gesagt,
es gibt so ein Standard-JSON-Schema für Resumes.
Aha.
Das würde ich auch gerne kennen.
Genau.
Da muss ich mal gucken,
ob ich da nicht...
Genau.
Genau.
Genau.
Genau.
Wenn ich dann Import oder Export dahin irgendwie auch reinbaue,
weil das wäre natürlich vielleicht auch interessant.
Da gibt es 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 weiß ich noch nicht.
Das würde sich aber mit deiner Plugin-Architektur jetzt beißen.
Nö, das könnte man ja auch so machen.
Als Subkeys von dem...
Ja, okay.
Verstehe.
Ein Plugin dafür machen.
Genau.
Ja.
Mhm.
Ja, okay.
Ja, mal schauen.
Genau.
Das war eigentlich...
Das ist doch jetzt...
Tatsächlich der perfekte Zeitpunkt,
so den Mietaufruf zu bringen wieder, ne?
Miet?
Den Mietaufruf.
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, ich kann auch mieten.
Wieder.
Ja, das ist ja richtig.
Das konnten wir bisher ja gar nicht announcen,
aber jetzt...
Ja, doch.
Man konnte mich ja 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 habe sogar noch mehr Leute,
die man mieten kann.
Wir sind sogar eine richtig große Mietbilde.
Ist das quasi eine WG?
Ja, also ich würde schon sagen,
das ist ein gutes Projecting,
was ordentlich Dampf jetzt auch mal draufkriegt
und halt nicht nur so ein paar kleine Männchen,
sondern ordentlich.
Sehr schön.
Ja.
Also wenn ihr, liebe Zuhörer,
ein Projekt habt,
dann mietet uns.
Genau.
Ja, ansonsten, genau,
was ich da noch gesehen habe an Vorträgen,
da gab es einen von Thibaut Collin
über...
Die Zukunft von Django.
Ich wollte gerade sagen,
das ist doch der Mensch,
der ist in Django,
die Presidency.
Der ist jetzt, genau,
Präsident der Django Software Foundation.
Apropos Django,
da gibt es doch jetzt auch bald wieder so eine Konferenz.
Ja, genau.
Die ist am Ende April.
Ende April.
Ist das ein inoffizielles Treffen?
Ist die Woche nach Ostern.
Ja.
Also wir werden alle da sein.
Daher...
Ja, wünschen wir das.
Könnte man.
Das ist in Dublin.
In Dublin.
Oh ja, cool, cool, cool.
Ja.
Und ich darf kein Bier trinken.
Fürchterlich.
Ja.
Aber in Dublin,
gibt es in Dublin irgendein Bier,
was man trinken müsste?
Ja, ich habe kein Bier.
Ich weiß nicht.
Indischer Wein, habe ich gehört.
Nein, du gehst in jeden Pub
und da gibt es 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 Genusswein stehe ich nicht drauf,
brauche ich nicht.
Aber andere leckere on tap Sorten.
Aber Django gibt es auch.
Ja, und Django.
Das ist der eigentliche Grund,
warum wir da hingehen.
Ja.
Und die Natur ist so schön grün da.
Das ist schon gutes Wetter.
Das hört man zumindest.
Ja, genau.
Ist nicht auch die Europython
zum gleichen Zeitpunkt?
Nein.
Nee, 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.
Darmstadt, genau.
Ja.
Ja, aber genau.
Können wir...
Aber wir können uns halt
nicht zerreißen.
Ja.
Genau.
Ja, also Zukunft Django
war ganz interessant,
weil
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 irgendwie
als von den Frameworkverwendenden
zu API-Geschichten
und so Dinge.
Und ja, war ganz nett.
Was man ja glaube ich sieht,
ist, dass drüben über den Teich
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 hatte er auch mal
einen Blogpost zu jetzt letztens.
Das kam in dem Vortrag zwar nicht vor,
aber das war dann ja auch sehr interessant,
welche Regierungsseiten
denn irgendwie Django verwenden und so.
Und das war halt überall irgendwie
relativ viel.
Nur in einem
analogen Dorf irgendwie,
auf der Weltkarte halt nicht.
Das globale Funkloch sozusagen.
Ja, wo könnte das wohl sein?
Ja, das war nämlich genau hier.
Also hier gab es einfach gar keine,
hier gibt es einfach keine Django-Projekte
irgendwie in öffentlicher
Hand oder so.
Tja.
Keine Ahnung, das liegt
schon wieder im Quatsch.
Aber irgendwie geht das hier.
Wundert einen doch nicht, oder?
Wenn man immer noch Fuck schicken muss
für bestimmte Sachen.
Naja.
Aber hast du nicht mitgekriegt, Dominik,
dass die Bundesbank jetzt keine Faxe mehr
entgegennimmt seit 1.1.25?
Nein.
So weit ist es
fortgeschritten mit der Digitalisierung.
Wir haben ihr Fax abgeschaltet.
Die Zukunft ist jetzt. Wir sind im Neuland angekommen.
Ja, 2025 schon.
Ja, doch gar nicht so schlecht.
So langsam.
Es ging durch die Presse.
Tja, und jemand anders hat sich überlegt,
dann macht der Faxgerät auf der anderen Seite einen Elementen.
Dann kann man die Antworten ausdrucken.
Yay.
Ja.
Genau. Ah, dann ein 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 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.
Aha.
Und das hat tatsächlich richtig gut funktioniert.
Und das war...
Das sah auch gut aus.
Das war auch gut aus.
Okay.
Das war total faszinierend.
Also wirklich so komplette Spreadsheet-Geschichte im Browser.
Okay, nice.
Und es war schnell.
PyScript.
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 Pyodite war.
Nee, ich glaube, es war PyScript tatsächlich.
Ja.
Not too bad.
Also, ja, cool.
Auf GD wäre ich jetzt auch noch nicht gekommen, ja.
Ja.
Ähm, genau.
Ja, also,
vorst dann war coole Konferenz hervoll.
Ja.
Hat da auch jemand dann irgendwann einen Post geschrieben,
habe ich jetzt letztens...
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 die...
Wir sind ja auch, was Technologie angeht,
und so total abgehängt und keine Ahnung.
Und Hilfe, Hilfe.
Ja.
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, na ja, 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...
Ja, genau.
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.
Die Leute nutzen das halt alle und sagen halt, ja...
We first.
Ja.
Ja.
Und das ist blöd.
Ja, 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 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,
die das weitermachen würden
und das halt nicht nur auf diesem kommerziellen...
Wir machen das,
dass nächstes Aktienunternehmen draus funktionieren würde.
Ja, genau.
Aber, genau.
Also, es gibt auch den...
Es gibt ja so Tech-Severanity-Funds oder sowas.
Also, einer von denen bezahlt jetzt auch irgendwie Hugo von Kermenade.
Von Kermenade.
Als, also, europäischer...
Ich glaube, es ist sogar deutscher irgendwie.
Als Python-Entwickler.
Also, sozusagen, der ist ja jetzt auch Release-Manager, glaube ich,
für 3.14, 3.15.
Das ist schon mal ganz gut.
Es gibt ja jetzt, ja, keine Ahnung,
in Frankreich passieren auch lustige Sachen.
Naja.
Ja, genau.
Hm.
Wir hatten auch noch ein Thema, glaube ich.
Ja, wir hatten auch noch ein Thema.
Was?
Oh je.
Oh, ich habe es vergessen.
Moment, ich mache meine Kapitelmarke irgendwie Thema.
Also, wir haben jetzt noch eine Minute.
Wir können eine Stunde Off-Topic reden.
Oh Gott.
Dann haben wir die Stunde vorher Off-Topic.
Ja.
Ja, okay.
Ah, gut.
Aber dann, ja, Johannes, willst du vielleicht etwas erzählen über Strings und Beides?
Ja, ich muss sagen, 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.
Ja.
Und 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.
Hm.
Weil eigentlich sollte das alles funktionieren.
Und in Python 3, meiner Meinung nach, ist das auch so.
Was ist denn nochmal das Thema?
Da funktionieren Unico.
Viele Sachen sehr gut.
Genau.
Es geht um Strings und Beides.
Und das große Problem an Strings und Beides 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 Beides.
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.
Äh.
Aber wenn man nur ASCII verwendet, dann sind Beides und Strings das gleiche.
Ja, weil ich einfach sagen kann, okay, also ein String ist halt eine Abfolge von Beides.
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 einen 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.
Ja.
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...
Ja, 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.
Nee, das heißt nicht...
Achso, achso.
Ich wollte gerade...
An der Stelle macht immer irgendjemand diesen Witz.
Nee, nee, es heißt nicht Unicode.
Und...
Sondern...
Es heißt...
Das heißt Unicodes Monster, oder?
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 des 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,
es 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 einen 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.
Unicode-Text-Formatting?
Das kann sein.
Es gibt auch UTF-16.
Es gibt auch UCS-2.
Es gibt auch diverse Varianten davon.
Und dann muss man auch 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.
Unicode-Transformation-Format.
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.
Haha.
Und?
Äh, inzwischen ist es tatsächlich so,
dass man fast überall UTF-8 verwenden kann.
Auch 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.
Richtig.
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 auch ein Byte, der sich mit einem Byte verwendet.
Und das ist auch ein Unicode-Code-Point.
Und das ist auch ein Unicode-Code-Point.
Und das ist eigentlich eine Zahl.
Und die Zahl, die geht eben von 0,
das ist das 0-Byte,
bis, keine Ahnung, dort hinaus.
Ich weiß jetzt nicht, wie weit es geht.
Das 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.
Und Python 2 hat 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
eine der größten Unfeinheiten an Python 2,
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.
Ja.
Und das war meiner Meinung nach
einfach nicht sehr sauber
und nicht sehr fein.
Und seit Python 3,
seit den wenigen Jahren, die es Python 3 gibt,
gibt es 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,
wenn man ein Datentyp hat,
dann muss man halt ein Datentyp haben.
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 Beides.
Encode geht zu Bytes.
Also von Unicode, von Strings zu Bytes.
Es könnte aber auch andersrum sein.
Ja.
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 dem 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.
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
in die Encode-String.
Zu Bytes und zurück.
Und da gibt es ganz viel Gefütze
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 Encoding.
Ja, das kann sein,
dass man da mehr Platz verbraucht.
Aber ganz ehrlich, für Textdaten heutzutage
meistens ja.
Ist doch wurscht.
So ein bisschen wurscht.
Ja.
Ja.
Ein bisschen wurscht ist das.
Green IT sollte man ja auch bedenken.
Da muss man natürlich Datensparsamkeit
immer als ganz besonders suchen.
Ja, das ist schon richtig.
Das ist schon richtig.
Aber Textdateien 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 Flutenpasten
zu lesen.
Ne.
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-Errorn,
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, dass es
eine UTF-8-kodierte Textdatei
ohne Byte-Order mag.
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 dazu kommt,
sind irgendwelche,
ich möchte jetzt keine starken,
Worte wählen, aber das sind beschissene Legacy-Wartsen,
die man da jetzt nicht 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, manchmal funktioniert es nicht.
Und unter Windows
ist alles ganz schrecklich,
weil eins von den Encodings,
das 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 dann
funktioniert UTF-8 und alles ist UTF-8
und
fertig. Das macht alles
viel einfacher.
Ja.
Ja.
I agree.
Ja.
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?
Das sind halt unterschiedliche
Hinweise.
Also Skorpion ist glaube ich das,
was einen irgendwie beißen kann.
Genau, das wollte ich gerade fragen.
Ich gucke mal gerade hier.
In dem Kapitel gibt es mehrere
Skorpione.
Das liegt halt einfach an dieser Geschichte,
von der ich jetzt gerade einen Abriss gegeben habe
mit 1000 verschiedenen Code-Pages
und vielen verschiedenen
Encodings und Mojibake
und
ganz vielen tollen Phänomenen.
Also die Erklärung zu Skorpionen ist,
this element indicates
a warning or a 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.
Es muss zum Gemankit.
Dieses Kapitel ist voll mit Skorpionen.
Ja.
Vorsichtig.
Ah, und dann die Karte.
Oh, vorsichtig.
Und hier, wenn du die Karte eingestellt hast.
Oh, vorsichtig.
Es gibt da tatsächlich so ein paar Dinge,
die einen in den Stiefel kriechen können.
Da gibt es ja so fiese Sachen
wie zum Beispiel
Unicode-Normalisierung.
Oh ja, das ist auch ein ganz
wundervolles Thema.
Ja.
Ein wundervolles Thema.
Was ist das jetzt?
Bin ich neugierig geworden.
Jochen, willst du das erklären?
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.
Du meinst ein L und ein I
und ein E?
Ja.
Ein E mit einem Akku.
Ja, zum Beispiel sowas, genau.
Ja, und
dann ist halt die Frage...
Was für Arten gibt es 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.
Das darunter liegende Problem ist, dass es
zwei verschiedene Möglichkeiten, dieses E mit dem Akzent
darzustellen.
Es gibt es als Zeichen.
Es gibt ein Zeichen, das heißt E mit Akzent.
Was haben wir da drauf?
Oder zwei Zeichen.
Ja, und es gibt E und dann gibt es ein zweites Zeichen
kombinierende Akzent mit dem
davorgehenden Ding dazu.
Genau.
Und auch da gibt es natürlich Leute, die sich da eine große Freude
draus gemacht haben und da gibt es ganz viele schöne
Salgo-Textgeneratoren, die einfach
sagen, hier, was passiert denn, wenn man
drei von diesen Akzents 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, letztlich, genau.
Also, ja.
Das ist dann da, wo man immer landet halt.
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. Ach, so.
Sortieren, oh Gott. Ja, ja. Und Groß- und
Kleinschreibung ist genauso schlimm,
weil die hängen 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 davon Klein- und Großvarianten.
Das heißt, wenn ich einen Text habe, der ein kleines
I mit einem Punkt oben drauf
enthält, also ein normales I,
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 kleines I mit einem Punkt habe, dann muss
das ein großes I mit einem Punkt oben drauf 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
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 ausgedeckt, 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-Auswirkungen.
Die Katze war. Auch Sortierung.
Und auch Sortierung ist genauso.
Sortierung ist auch
locale-abhängig. Also das
kommt darauf an, wo ich bin, wie ich
Zeichen sortiere. Zum Beispiel auf Deutsch
wird das E 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 in der Zeitzone abhängig machen könnte?
Oder so.
Von der Bodenphase.
Das ist ein Potenzial.
Das ist kompliziert.
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 es
unterschiedlich behandelt. Wenn ich einen String mit einem
scharfen S groß mache,
dann wird
es ja ein Doppel-S.
Es gibt 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.
Dann sind es zwei kleine S. Und dann
kommt auch nicht das gleiche wieder raus.
Semantisch Unterschied.
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.
Die doofen Menschen, die haben halt Probleme, die sie
nie in den Computer reintun 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.
Kein Großstring.
Wenn du ein Großstring machen willst, lieber nicht.
Ja.
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
ein Buch haben.
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
äh,
die,
die, die,
das ist irgendwie so.
Compact ist das Format,
was möglichst wenige Zeichen
erzeugt. Und D,
also das Decomposed
vielleicht, 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
µ zum Beispiel. Das µ gibt es in zwei Varianten.
Einmal als die
SI-Einheit µ für Mikrometer
und einmal als das Griechische, den
Griechenbuchstaben µ. 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.
Und das ist also
die
Lösung,
für die das Problem ist. Das darfst du einfach nicht machen.
Mach es einfach nicht.
Ja, also 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
Rame-Move.
Darf man auch nicht auf seine Weihnachts-Runch-Liste 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 würde leider nicht
genommen. Ja.
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 nämlich, Java hatte von Anfang an
ein ordentliches Unicode irgendwie.
Der lag aber einfach
Ja, aber hatten die nicht auch UCS2 am Anfang?
Äh,
das kann sein. UCS2, um das kurz,
um kurz unsere Hörer abzuholen.
UCS2 ist einfach
ein Textzeichen
wird zu zwei bald.
Ja, und
da muss man auch Big Engine und Little Engine
sagen, okay, das ist ein Detail.
Dann brauchen wir mal einen Marker vorne dran.
Ja, 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. Ja. Das heißt,
das ist so ein
Fix, der nicht
weit hilft.
Ja. 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...
Und dann hatten wir jede Menge Null-Bytes
in seinen Dateien drin und das
ist nicht so cool.
Sehr 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
enkodieren, dekodieren. 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...
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 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.
Da kommt also zwei
Bücher von dem Format von Flo und
Patton. Das war einmal
irgendwie Java irgendwie
von... Ich weiß gar nicht mehr.
Java in der Nutshell. Nee, nicht in der Nutshell, sondern
irgendwie The Language oder so was.
Und dann die Sprachspezifikation,
was halt im Wesentlichen,
die Grammatik war.
Ja, also 2000 Seitenbücher.
Und das war,
meine ich, das war schon Unicode.
Aber...
Ja, und das muss kurz nach...
Na 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 so einige Dinge,
die ich so... Public Static Void Main
Dings, das habe ich nie so richtig...
Das fand ich eher so ein bisschen...
Was ist denn da los?
Ja, meine erste...
Meine Uniprogrammiersprache war C.
Wir haben direkt mit C angefangen.
Das war nicht die ideale Sprache
für Programmieranfänger.
Ja.
Hat für einen gewissen
Ausfilterungseffekt
gesorgt.
Sehr schön.
Aber dein echt schönes
Depot, was du da geteilt hast,
sowas wie Strings for Spanish Fools
to use cat on a file,
things with crash...
The list of naughty strings.
Ja, ja.
Lesen Sie es in den Shownotes nach.
My course on human to reinterpret worldview.
Ja.
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.
Implementierungsdetail.
Mhm.
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 ByteString.
Jedenfalls ist da Optimierung drin.
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 es dann auch richtig schön
innen drin.
Ich finde das eigentlich sehr beruhigend.
Es ist nicht so, wie man es sich
vorstellt, dass du es halt hörst.
Das ist so eine Abfolge von Bytes.
Oder eine Abfolge von hier.
Das ist ein Speicher so drin.
Sondern es ist erstaunlich kompliziert.
Es ist erstaunlich komplex.
Aber zum Glück gibt es 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, genau. Manchmal musst du halt
Regular Expressions haben, die
funktionieren auch.
Das Gesicht in einem Bild austauschen.
Das geht auch.
Ja, okay. Keine Ahnung.
Die funktionieren anders, je nachdem, ob man Bytes reingibt
oder Strings.
Und auch die Regular Expressions,
der Typ der Regular Expressions muss zum
Typ des verarbeiteten Datentyps
passen.
Das zweite Modul,
interessanterweise, ist OS.
Und zwar alles, was mit Dateipfaden
zu tun hat.
Und das ist auch so eine interessante
Legacy-Sache.
Weil Dateipfade
nicht unbedingt
valides UTF-8 sein müssen.
Auf modernen Betriebssystemen
sollte das so sein.
Wenn ich eine Datei
schreibe, dann sollte die eine UTF-8-Dateinamen
haben. Wenn ich in meinen
Gnome Explorer,
wie auch immer der heißen mag, Nautilus,
Tuna oder keine Ahnung, was es gibt,
eine Dateinamen eingebe,
dann wird es ein UTF-8-String sein.
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-kodierte
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, also
alle Funktionen in zwei Varianten, als mit String und als mit Bytes.
Und
da kann man auch schöne Strings
treffen.
Das war 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 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.
Es geht einfach nicht.
Es gibt keine Möglichkeit, das zu tun.
Kann ja wohl nicht sein.
Und dann gab es auch noch diverse böse Sonderfälle
mit irgendwie, naja, also eigentlich kann das
Dateisystem aber halt nicht,
wenn du irgendwas uraltes über NFS
gemountet hast oder sowas, dann machen wir das nicht.
Ja.
Ja, ja.
Ja, ja.
Für mich, das Fazit des ganzen Kapitels ist,
modernes Betriebssystem, UTF-8,
fein.
Also in der Situation
möglichst vermeidlich. Genau, Python 2 und Python 3,
wie alt ist Python 3 jetzt?
Wann kam das raus? 2010?
14 Jahre? Ja, so 2010
ungefähr ist das irgendwie losgegangen.
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 kann ich sehr empfehlen, den habe ich durchgezogen.
Und der hat sich sehr lange
gewehrt,
den auf Python 3.
umzustellen, weil ihm die
Trennung zwischen
String und Bytes nicht logisch erschien.
Und
er hat da sehr lange, sehr viele
Artikel darü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 behandelt werden.
Und
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 er hat damals kein
Recht gehabt.
Ja, ich kann das Buch auch
versuchen.
Der macht jetzt inzwischen auch ganz viel
AI-Zeugs.
Aber genau.
Aber das habe ich
auch nie verstanden.
Ja, also
das war damals schon ein Streitpunkt.
Meiner Meinung nach ist das schon das Richtige.
Das war die richtige Entscheidung.
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 noch mal andere Probleme
mit NFC und NFT
und Sortierung
und dann halt
und das auch.
Kannst du einfach nicht mehr machen.
Ja, cool.
Genau.
Ah,
ich glaube, es gibt ja auch noch Dinge
vor ASCII.
Wir hatten ja eben auch schon Faxgeräte.
Aber wenn man
so hinguckt.
Asien gibt es ganz inkompatible.
Oder wenn man jetzt irgendwo hinfliegt oder so.
Man sagt so, alles
schrecklich.
Macht es gut, ihr Trottel. Ich fliege jetzt einfach irgendwo anders hin.
Und dann könnt ihr halt
irgendwo bleiben.
Dann das nicht funktioniert,
weil man halt irgendwie auf dem Ticket
hat man halt irgendwie zum Beispiel keine Umlaute oder sowas.
Aber Jörg, es gibt auch ein Protokoll für Brieftauben.
Wir kriegen die schon.
Dann gibt es
und das ist bei Überweisungen manchmal auch so oder so.
Und das ist halt immer dann, wenn man es plötzlich nochmal mit so
mit so richtigen
Wobei wir ja jetzt in der Swift
Wir sind ja jetzt 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
das war Überweisungen oder so, das ist ja auch manchmal so, dass ich da versuche
irgendwie das einzugeben und so, hä, geht nicht.
Komisch.
Ja, das hat auf jeden Fall
also das, diese Zeichensatzung,
das da drin ist, ist komisch, aber der ist wenigstens genau definiert.
Ah, okay, ja gut.
Das kann natürlich sein.
Früher, oder ich glaube bei Flukus-Systemen
ist es immer noch so, dass es läuft alles immer noch über Suchbezeichner
und das ist halt, die verwenden
EBITIC oder so, ne? Das ist halt auch irgendwie
ein 7-Bit-Monster-Ding.
Was aber nicht kompatibel ist.
Nein, gar nicht, natürlich.
Und diese ganzen
radiatischen Schreibsysteme, die
mehrbeitig sind, sind aber auch
nichts kompatibel und auch untereinander
nicht kompatibel und ah.
Ja.
Ja, es ist großartig.
So.
Ja.
Wie soll man das? Das muss man an einer Höhle malen.
Machen wir doch wieder
irgendwas mit Holz oder so.
Ja, ich empfehle
dieses Kapitel nicht zum Lesen. Es ist tatsächlich
ein bisschen trocken und ein bisschen lang.
Es ist ganz gut als
Nachschlagewerk. Wenn man eben
an diese Stelle kommt, wo man tatsächlich mit
mit Bytes und mit Legacy-Datenbots
dieses Thema 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 nochmal einen Mittag.
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 Python-relevant.
Äh.
Der erste Pic, den ich habe, der ist nicht
Python-relevant.
Das ist ein Paper auf Astroarchive.
Gravitational
Effects of a Small Primordial
Black Hole Passing Through the Human Body.
Da geht es
um eine Klasse
von schwarzen Löchtern,
sogenannte Primordial Black Holes.
Das ist so eine Vorstufe von einem schwarzen Loch.
Das sind so schwarze Löcher, die dann sofort wieder wegverdunsten.
so wie ich
das verstanden habe, ich verstehe ja nichts davon.
Aber 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 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.
Mhm.
Mhm.
Das ist ungefähr so viel, wie die Pyramide
von Giza wiegt.
Aha.
Die wiegt ungefähr 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 heißt die Pyramide von Giza?
Gizeh. Das ist die in Kairo da,
diese riesengroße Pyramide.
Die große Gizeh, nicht Giza.
Ja, also sie ist 146,5 Meter hoch
und
wiegt ungefähr 1,5 Meter.
Also wenn die durch dich durchfliegt,
dann merkst du das.
Ja, aber nicht als schwarzes 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 so gewünscht, dass das...
Der ist kleiner als ein Atomkern und deshalb
kriegst du nichts ab.
Ja, okay.
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,
äh, technisch.
Ich würde sagen,
wenn ein
schwarzes Loch durch einen
menschlichen Körper durchfliegt,
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 Black Holes
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 Interessante an diesem
Paper da drin. Also sehr weit
außenrum ausgeholt, um dann hinterher zu
sagen, ja, und deshalb
kann es nicht so viele davon geben.
Fand ich nicht.
Mein zweiter Pick
ist
wesentlich weniger
physikalisch.
Äh,
ein Artikel
mit dem Titel
A Year of UV, Pros, Cons and Should You Migrate?
Ah.
Das heißt, jemand hat seine Erfahrungen
aufgeschrieben
mit UV,
dem Python
Package Management Tool,
Project Management Tool.
Und
es ist sehr interessant
zu lesen, weil es gibt natürlich viele
gute Dinge zu sagen
und viele Dinge zu sagen,
die anders sind.
Und es gibt erstaunlich wenige Dinge
zu sagen, die nicht so gut sind.
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.
Weil die Dependency Resolution anders ist.
Und
wenn es 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.
Und es ist ein sehr langer Artikel.
Und der
beschreibt diese Situation sehr genau.
Und ich fand ihn sehr interessant zu lesen.
Und deshalb ist es mein Pick für diese Woche.
Mein zweiter Pick neben den schwarzen Löchern.
Sehr cool. Es gibt da auch ein
Video von Hüneck.
Der hat vor
Anfang 2024 oder so
irgendwie ein Video gemacht, wo er sagt,
ist das wirklich die
Zukunft von Packaging
in Python? Und dann hat er irgendwann
im August oder September
das Titel hat,
ja, es ist die Zukunft von
Packaging in Python.
Ja, das kommt auch in dem Artikel rüber.
Einer der Gründe, warum die Empfehlung
so mehr oder weniger unangeschränkt ist, ist, dass
dieses Team einfach ungeheuer
viel drin arbeitet.
Und die machen einfach,
also, wenn man sich den Bugtracker
anschaut von
UV,
dann hat es eine
extrem große Anzahl Tickets.
Ich mach's gerade auf.
Wir
sind jetzt bei Ticketnummer
11.679.
Wow.
Und offen sind aber nur 1.200.
Nur 1.200.
Das heißt, die arbeiten
einfach alles ab, was
in den Weg kommt.
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
das einfach gut von der
Das ist einfach gut.
Ja, so ein paar Kinderkrankheiten am Anfang sind alle
weg und es ist sehr viel cooler.
Ja, ich hab das auch.
Und ich bin inzwischen auch überall hinmigriert.
Es gibt auch ein
Python-Package, das heißt
Migrate to UV.
Das hab ich einfach mal auf alle meine Sachen angewendet
und jetzt sind die alle UV-visiert.
Es gibt noch UV-Secure
und so, da kann man so einen Pipeline testen und so was.
Ja, es ist sehr nice, ja.
Ja.
Ja.
Cool.
Ich pick da mal.
Ja.
Ich weiß gar nicht mehr, wo ich das herhabe. Vielleicht hab ich es bei einem von euch gefunden.
Es heißt Sketch a Day.
Da wird eine visuelle Idee
jeden Tag gecodet.
Und zwar in Python. Finde ich sehr nice.
Das ist so eine Blog-Serie
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.
Also super.
Und spannend, wenn man mal Grafik mit Python machen will
oder generieren will
und sich mal angucken möchte, wie das denn alles da aussehen kann.
Kann ich sehr empfehlen.
Verlinken wir.
Da kann man echt schicke Sachen mit rendern.
Ja.
Traktate und sowas.
Sehr coole Sache.
Ja.
Was hab ich da?
Also ich mach mal keinen Python-Pick.
Sondern
ich pick mal eine Shell.
Da gab es nämlich jetzt auch irgendwie
vor nicht allzu langer Zeit.
Ja.
Ja.
Das hat ein neuer Release.
Also ich
verwende dann
Phish.
Und Phish gibt es jetzt auch in der Version 4.
Wow.
Und sie haben da auch einen Großteil in Rust neu geschrieben.
Oh cool.
Ich mag Phish eigentlich sehr gerne.
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 Skript-Sprache 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, klar. Also manche Sachen kannst du halt
einfach nicht verwenden in der Phish-Shell.
Genau.
Gut, aber ich mach dann halt, ich hab dann zum Beispiel
so Deployment-Skripten oder so, dann nehm ich halt eine Bash.
Ja, genau.
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 es doch auch einen sehr langen Artikel, Jochen.
Darüber, wie sie das gemacht haben und wie sie das
hingekriegt haben.
Fish of Theseus.
Ja, genau.
Erklär dir die Anspielung?
Ja, natürlich. Aber erklär sie uns trotzdem doch.
Okay, der Ship of Theseus ist halt
so ein Ding aus der Philosophie,
dass wenn man jetzt
irgendwie so ein altes
Schiff ausgräbt irgendwie
und
naja, man
möchte es halt sozusagen
äh
ä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
zwei Schiffe.
Welches ist denn jetzt das richtige?
Ich glaube, du hast irgendwas kaputt gemacht.
Oh, Moment.
Das bricht gleich in Flammen auf.
Ich glaube,
das war der, äh,
das war's für Sonntag.
Mit unseren digitalen Audioproblemen
kommen jetzt auch noch analoge Audioprobleme.
Ä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.
Liebe Hörer, das sind die Probleme,
mit denen wir uns rumschlagen müssen,
um euch diese Episoden zu bringen.
Hauptschleim nochmal irgendwie so
das eine Bein über das andere und
rupft kräftig an dem Kabelbaum
schon raus und kracht es überall.
Das ist ein Kreuz, ja.
Es ist mehr so ein Kabel...
Kabelstrauch, oder?
Als ein Kabelbaum.
Aber Baum impliziert eine gewisse Ordnung.
Ja, das ist falsch.
Das ist ein Kabelgebüsch.
Ja, ein Kabelbüsch.
Ja, also das Schiff des Tesois.
Da gibt's auch ganz viele Varianten davon.
Der Tesois fährt mit seinem
mit seinem Schiff
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 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 Tesois hinten runtergeschmissen hat.
Sind die jetzt noch in ihrem eigenen Schiff?
Oder sind die jetzt in dem Schiff,
mit dem Tesois losgefahren ist?
Was ist da eigentlich passiert?
Und was ist da eigentlich passiert?
Ja.
Diese Anspielung ist eben, was passiert,
wenn du alle Teile von einer Shell austauscht,
dann ist es noch die gleiche Shell.
Genau.
Wenn sie nicht alle Teile ausgetauscht haben,
wenn ich es richtig verstanden habe.
Ja, aber auch ein sehr interessantes Problem.
Das passiert ja tatsächlich bei Menschen auch,
wenn man Dinge isst und wieder ausscheidet.
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.
Das ist gelettet.
Natürlich, klar.
Natürlich wirst du nicht alle austauschen,
aber und auch nicht die, ja, okay.
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.
Ja, aber die Fax sind andere.
Aber die Frage wäre halt,
die Frage wäre halt,
wie kann das denn,
wenn ich jetzt das ganze Material auswähle,
wie kann es denn sein,
dass es immer noch das Gleiche ist sozusagen?
Also 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 den 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 GEMA,
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 zaubertest,
taust sie und auf der anderen Seite
machst du neue Moleküle.
Eigentlich ist es ja kein Mensch,
sondern das ist Mord und Klonen.
Aber 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 immer noch der gleiche.
Ja, und wir wissen ja auch nicht,
ob Zeit nicht quantisiert ist
und ob wir überhaupt eine Kontinuität haben.
Aber das geht jetzt,
vielleicht zu weit für den Programmier-Podcast.
Ja, aber liebe Hörer,
folgen Sie uns auf
Philosophie für Anfänger.
Ja, ich kann aber auch mal
einen Pick, den ich dazu
in Stellung bringen könnte,
wäre, wenn Sie sich mal die Sachen von
Joscha Bach anhören.
Der hat jetzt auf dem letzten Zitze-Tekung
auch wieder einen interessanten...
Sehr kontrovers wahrgenommenen...
Ja?
Okay, das habe ich gar nicht so kontrovers.
Ja, es gibt mittlerweile Leute, die finden alles komisch.
Ja.
Also, es gab da diesen Essay
auch von dem Antophag-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 auch
wie die Wurst, da waren noch viele Leute sehr empört.
Ja, die haben es gar nicht so mitgekriegt.
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...
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 peisenpodcast.de
Schreibt, ob ihr uns irgendwo treffen wollt, ob ihr vorbeikommt.
Gerne. Wir möchten gerne
eure...
Ideen für die Location?
Ja, die machen wir. Das machen wir schon.
Machen wir? Ja, ja, das machen wir schon.
Und wir organisieren das irgendwie, dann schreiben wir euch
irgendwie und freuen uns auf euch und
würde sagen, dann
hört uns vor 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.