Transkript: Python 3.11 und Listen
Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.
Ja, hallo liebe Hörer und Hörer.
Willkommen beim Python Podcast, Episode 46 heute.
Heute soll es bei uns gehen um Python 3.111 und um Listen.
Johannes ist wieder dabei.
Hi Johannes.
Hallo Johan.
Hallo Jochen.
Ja, herzlich willkommen, Dominik.
Hi.
Ja, wir haben an ein bisschen teilgelassen mit dieser Episode.
Manchmal ist ein bisschen viel zu tun, gerade in dieser dunklen Jahreszeit.
Ja.
Ja, aber Python 3.11, ich würde sagen, mit den News fangen wir heute mal wieder an.
Genau, also ja.
Wie fandet ihr das für dich?
Wie fandet ihr Python 311?
Habt ihr schon ausprobiert?
Ja, ich verwende das.
Ich verwende das tatsächlich schon.
Und zwar auch so produktiv und so und war überraschend wenig Stress irgendwie, das Update diesmal.
Und für die meisten Sachen, die ich so verwende, gab es auch schon Reels.
Also musste nicht mal, normalerweise muss man am Anfang immer irgendwie alle Dinge dann neu kompilieren und so.
Das war jetzt, ist mir gar nicht aufgefallen, dass das irgendwie jetzt
schon einen Tag
länger gewartet als sonst.
Vielleicht habe ich auch einen Tag länger gemacht, das kann auch sein, ich weiß es nicht mehr so genau.
Aber nö, das war alles sehr, sehr entspannt bei mir.
Ich benutze das noch nicht.
Warum muss man das denn jetzt?
Was lohnt sich denn da jetzt?
Die ganz tollen Tracebacks, Janet.
Ja, also das würde ich auch sagen.
Die waren noch schon immer super gut.
Naja, sind aber jetzt nochmal deutlich besser geworden.
Tatsächlich zeigen dir jetzt wirklich an, an welcher Stelle der Code kaputt gegangen ist.
Ja, also das ist etwas, was ich jetzt nach wenigen Wochen Benutzung auch schon, das ist halt das, was.
Wie du hastbacks
Jochen, wenn du Code hast?
Ja, ja, ja, ja.
Ab und zu raise ich mal irgendwas, einfach nur so, weil es so gut aussieht.
Und nee, aber das ist mir auch schon, also das möchte ich nicht mehr missen.
Das ist halt wirklich, es zeigt einem relativ direkt, wo was kaputt ist und genau, das ist wirklich sehr hilfreich.
Und kombiniert so mit Ridge dann zum Beispiel, Ridge Race-Backs, sehr toll.
Pip kann auch Rich übrigens, kennt ihr das?
Wenn Rich installiert ist, nutzt Pip automatisch Ridge.
Ja, und dann hat man so farbige Progress Bars und sowas.
Wunderbar.
Ja, ja.
Alles nur Eye-Candy.
Ja, aber es sieht schon alles besser
aus, muss man
sagen, als früher.
Mussten wir ja unsere Pakete mit der Brieftaube geschickt bekommen.
Ja, Stil ist ja alles.
Wenn wir das nicht gebraucht haben, dann kriegen die Kinder das von heute auch nicht.
Jahren berichtete von C und so und wie furchtbar das alles war.
Fand ich auch das bei C, glaube ich, heute immer noch so völlig.
Ja, es war tatsächlich wirklich verbessert.
Aber das ist eine gute Überleitung, weil einer der Gründe, warum Python 3.11 jetzt so anders ist oder eine Neuerung, ist vielleicht, dass an der Cunterbau etwas gearbeitet worden ist.
Naja, es ist ja das Release vom C-Python-Interpretar, aber genau, also ja, es ist halt, da ist einiges.
Also es ist echt viel passiert und es ist schneller.
Das ist immer der Grund, warum man Leuten empfehlt, auf neue Pythons zu gehen.
Das ist wirklich viel, viel schneller.
Also nicht in überall, aber in vielen Anwendungen ist wirklich deutlich, deutlich performanter geworden.
Ja.
So viel 20, 25 Prozent munkelt man.
Ja, ja.
Also je nach Anwendung kommt es halt darauf an, also es kann auch deutlich mehr sein noch.
Aber es ist insgesamt über alles wahrscheinlich so 25% schneller ungefähr.
Und das ist auch nochmal ein gutes Stückchen mehr als die Verbesserungen vorher.
Also es wird ja immer ein bisschen schneller von Version zu Version und diesmal ist es aber ein größerer Sprung als sozusagen normalerweise oder bisher.
Ja, was halt vor allen Dingen daran liegt, dass jetzt halt eine Menge Leute tatsächlich dediziert an diesem Problem arbeiten.
Und ja, da der Release-Manager von Python 3.111 irgendwie Pablo Galindo Salgado, der meinte auch so, also irgendwie ist das irgendwie deutlich stressiger geworden mit dem Releasen oder das war halt deutlich stressiger als 3.10.
Und einer der Gründe ist halt, dass jetzt halt sechs Leute Vollzeit irgendwie da an Features arbeiten und vorher hat da eigentlich niemand Vollzeit an neuen Features oder an Performance Verbesserungen gearbeitet.
Tragisch.
Und jetzt gibt es doch einige Leute, die da irgendwie viel Zeug reintun.
Und ja, da hatten sie halt irgendwie enorme Probleme.
Also das war auch sowas, also 31 war sehr, sehr schwer, irgendwie fertig zu kriegen wohl.
Aber es hat dann doch am Schluss noch alles funktioniert.
Aber sie mussten halt, also zum Beispiel ein großes Problem, das sie hatten, ist, dass sie hatten halt richtig fiese Bugs noch, bis, also so Release-Blocker-Bugs bis in den Release-Kandidaten noch mit drin.
Und auch vor allen Dingen, also das Schlimme war halt, nach dem Punkt, wo man sagt, man gewährleistet Abi-Stabilität.
Also, dass sich dieses Application Binary Interface nicht mehr ändert.
Also dass sozusagen C-Funktionen ihre Signaturen nicht mehr ändern und so.
Das garantiert man ab einem bestimmten Punkt, damit die Pakete, die man zu dem Zeitpunkt oder nach diesem Zeitpunkt halt gebaut hat, also Wheels, die man dann kompiliert hat, dass die noch auch mit der richtigen, mit dem richtigen Release funktionieren.
Und das muss man halt früh genug machen, sonst hat man halt nicht genug fertig kompilierte Binaries, sonst ist es halt ein Problem.
Das Problem ist aber, wenn man jetzt irgendwie dahinter, nachdem man diese Schwelle überschritten hat, dann noch Bugs findet, bei denen man gerne was ändern würde, dann geht das halt nicht mehr.
Und da muss man halt teilweise sehr komplizierte Dinge tun, damit man das trotzdem fixen kann.
Und solche Sachen sind halt leider passiert.
Unter anderem sind halt solche Dinge und ja, weil halt, naja, es ist auch, was halt für diese Performance-Optimierungen verantwortlich ist, dass halt Dinge halt nicht mehr so gemacht werden, wie.
Also sie werden eine Zeit lang, werden sie ganz normal so interpretiert, ja, Interpreter-Bytecode, so wie er normalerweise interpretiert wird.
Und wenn das dann achtmal passiert ist oder so, dann sagt er halt, okay, jetzt schalte ich auf was anderes um.
Ist mir das zu blöd, habe ich das achtmal gemacht, mach ich nicht auch mal.
Und nimmt halt eine spezialisierte Version davon, die halt dann zum Beispiel Integer addiert oder Floats addiert oder das halt nicht mit Objekten macht, sondern direkt irgendwie auf dem Prozessor.
Und das geht auch meistens gut, aber dann so, es gab es halt so fiese Bugs wie, naja, also das passiert zum Beispiel auch beim Attributakzess.
Und dann manchmal ist es halt so, dann funktioniert das, die ersten acht Attributakzesse funktionieren halt.
Und beim neunten Mal wird halt die Klassenvariable genommen, also wenn du zum Beispiel, es waren ja viele Leute, dass sie halt in der Klasse halt sozusagen die Parameter, die ein Objekt bekommt, definieren.
Und wenn du dann eine Instanz, wenn du dann eine Instanz machst, instanzierst das Ding, dann überschreibst du das.
Und die Instanzvariablen, also wenn Attribute an eine Instanz hängen, dann überschreiben die immer das, was an der Klasse dran steht, sodass es kein Problem ist.
Und jetzt kam halt dann irgendwann so ein Bugreport rein und halt einer so, ha, irgendwie, also achtmal geht das gut und dann beim neunten Mal irgendwie.
Achso, nee, das war nicht der Report.
Der Report war irgendwo, komische Geschichte ist irgendwie nannen geworden und wo es nicht dann werden durfte und verseltsam ist.
Und das hat irgendwie lange gedauert, um überhaupt rauszukriegen, was das Problem ist.
Und das Problem war tatsächlich, dass halt beim neunten Mal wurde halt irgendwie die Klassenvariable genommen und nicht mehr die Instanzvariable, was halt nicht passieren darf, weil das irgendwie mit dieser Spezialisierung zusammenhing, dass man dann halt, dass er halt irgendwas direkt genommen wurde.
Okay, hidden Fallbacks, hm, im Prinzip ist Better than Explicit, okay.
Das ist natürlich total schrecklich, wenn man so einen Bug hat.
Also einmal war es wohl irgendwie super schwierig, den zu finden und dann war es halt super schwierig, ihn zu fixen, ohne die C-AP hier nochmal anfassen zu müssen.
Und naja, also alles ganz, ganz schrecklich.
Ja, der hat es auf jeden Fall sehr gejammert.
Dass das alles diesmal sehr, sehr, sehr schlimm gewesen wäre.
Aber, naja, gut, es hat halt trotzdem funktioniert, also insofern.
Aber das ist so ein Problem, oder?
Wenn so viele Leute an einer Software arbeiten, das dann halt irgendwie doch schwieriger ist oder stressiger oder so.
Ja.
Weil wenn nur zwei oder drei, ich glaube, da gibt es irgendwo so eine Grenze.
Wenn nur zwei oder drei so zusammenarbeiten und man sich jeden Tag sieht, dann ist das auch nicht so wild, weil dann ist irgendwie das gesamte Wissen so verteilt, aber wenn es dann mehr Leute werden, dann ist einfach da so Sachen, die so ineinander greifen.
Also das ist meine Erfahrung, ich weiß nicht, wie es euch da geht.
Ja, ja, absolut.
Also die Komplexität, auch wenn mehr Leute an einem Projekt sind, steigt nicht linear, sondern irgendwie bösartiger.
Exponentiell.
Exponentiell weiß ich jetzt auch nicht.
Aber Leute geht noch, oder?
Sechs, sieben geht.
Und dann ist aber irgendwann.
Ja, da muss man dann schon Prozesse haben und so und genau drauf aufgehen.
Und ganz schlimm wird es, und da, also ich würde mich dem Lager zuordnen, das sagt, also mehr als ein Team an der Software arbeiten, vielleicht sowieso keine so gute Idee.
Also wenn man jetzt quasi aus dem Bereich, wo man noch ein Team haben kann, rauskommt, hat jetzt mehrere Teams, die an der, also da gibt es dann ja auch irgendwie diverse Dinge und aber ehrlich gesagt, das ist alles so schrecklich.
Also ich weiß nicht, ob es sich überhaupt lohnt, in dem Bereich zu skalieren, weil wenn du halt ein gutes Team hast, das kleiner ist, dann kann das eigentlich aus meiner Perspektive fast immer schneller sein, als egal wie viele Leute du drauf wirfst, weil das kriegst du eh nicht mehr organisiert.
Also, ja.
Naja, keine Ahnung.
Die optimale Teamgröße würdest du sagen, Jo.
Da fünf oder sowas.
Ja, ja, ja.
Ich würde sagen vier.
Vier?
Warum vier?
Weil fünf schon zu groß ist.
Fünf ist ein großes Team schon.
Vier ist ein mittleres Team, drei ist ein kleines Team, das ist super.
Und alles über fünf ist nicht gut.
Da musst du dann viel Management machen.
Da brauchst du dann jemanden, der assistiert und jemanden, der koordiniert.
Und dann gehst du schon in so.
Ist bei dir bei den vier Leuten die Kommunikation mit dem Kunden mit drin, bei den vieren?
Oder macht das noch jemand mit Managing Projekt irgendwas?
Das kommt auf das Projekt an.
Wenn dann ein.
Es gibt ja Projekte, die haben gar keinen Kunden in dem Sinne.
Zum Beispiel Python.
Python hat ja keinen Kunden.
Keiner, der sagt, ich habe aber das hier beauftragt und das, ja, ja, aber die Software-Community ist ja kein Problem.
Naja, du musst ja auch eine Definition machen.
Du hast ja auch irgendwie eine Product Ownership in gewisser Weise dann.
Naja.
Doch.
Du kannst machen, was du willst.
Also die Community muss das halt annehmen.
Also ich weiß.
Das ist ja ein schöner Fall eigentlich.
Also ich meine, also ich würde ja denken, Produktmanagement ist halt Marketing.
Ja, so würde
ich jetzt nicht sehen.
Ich würde jetzt nicht Marketing gucken, es geht nur um die Kommunikationsstelle mit dem Kunden.
Also also jemand, der quasi User-Stories baut und die koordiniert.
Ja, aber
was soll das?
Bei Python-Entwicklung brauchst du so einen Quatsch halt nicht.
Also würde ich jetzt mal so sagen.
Also so spontan.
Also das machst du halt, wenn du ja, also, aber.
Nee, aber das brauchst du dann schon zusätzlich.
Wenn du einen Kunden hast und in so einer Situation bist, wo du einen Kunden hast, der spezifische Wünsche hat, dann brauchst du schon eine Rolle, die nicht nur Entwickler ist.
Ja, ja, wenn du Kunden hast, klar.
Okay, ja.
Und da brauchst du dann schon einen PO oder einen, keine Ahnung.
Ja, du brauchst halt jemanden,
der, also vor allen Dingen, wenn die Entwickler auch nicht selber, die, also das ist halt immer das Ding, eben, es ist halt eine Marketingrolle und das ist halt, Produktmanager wäre halt aus meiner Sicht so ein Anwalt des Kunden.
Das ist halt vor allen Dingen dann wichtig, wenn man selber als Entwickler das halt nicht verwendet und auch gar nicht verwenden kann.
Und wenn es um irgendeine andere Geschichte geht, mit der man gar nichts zu tun hat, dann brauchst du jemanden, der diese Rolle einnimmt.
Wenn ich irgendwas mache, was ich selber verwende, dann brauche ich das nicht.
Dann kann ich das super selber machen.
Da wäre, wenn mir dann jemand erzählt, wie ich das verwenden soll, fände ich komisch, weil ich meine,
wie kann das gehen.
Celeber User Stories und ist die da in Tools Teams-Backlog.
Und du darfst nur an den Sachen arbeiten, die gerade im aktuellen Sprint drin sind, Jochen.
Ja, also weiß ich nicht.
Doch, ich mache das auch für klar, für auch für meine privaten Projekte, natürlich.
Auch für Skripte, so 100 Zeilen Skripte, erstmal eine User-Story geschrieben.
Erstmal ein Epic.
Ja.
Aber hast doch die Accountability dann, die Responsibility Jochen.
Bist du auch selber für dich?
Ja.
Kannst du dein Gehalt selber in Bonuspunkten ausbezahlen.
Ja, ja, nee, das muss man da alles nicht machen zum Glück.
Ja, aber also ja, ich meine, tatsächlich, das ist halt groß geworden und ja, wenn viele Leute daran entwickeln, ist halt, ist halt schwierig.
Und sie hatten ja, es gab ja schon mal in Python 3.9 bzw.
in 3.10 ist es dann halt aktiv geworden.
Der Packparser ist halt ja auch die Interna, so quasi hat sich ja, also ein zentraler Teil von Python hat ist halt irgendwie komplett einmal irgendwie auf links gedreht worden.
Das hat aber einfach so funktioniert.
Es ist nicht irgendwie quasi so fies, äh, hat nicht so fiese Konsequenzen gehabt wie jetzt.
Aber ich meine, manchmal hat man halt auch einfach Glück oder Pech, ne?
Das kann natürlich auch sein.
Also das ist ja nicht so.
Das ist halt irgendwas ordentlich gemacht oder irgendwas übersehen, aber darauf kannst du nicht setzen.
Nee, setzen kann man darauf nicht.
Aber ja, also ich meine natürlich auch, wenn man mehrere Sachen gleichzeitig ändert, dann ist es halt so, dass die, dann hat man eine kombinatorische Explosion von irgendwie Möglichkeiten, wie es schief gehen kann und dann ist natürlich auch die Wahrscheinlichkeit einfach höher, dass es umgekracht.
Ja.
Und diesmal ist es nicht so gut.
Ich war mal in so einem Projekt und das war schon so ein bisschen verspätet und dann kam irgendwann der Projektmanager, der was nicht, Projekt oder Produkt oder was auch immer für den Manager.
Exakt.
Also wir haben einen sehr engen Zeitplan, ab jetzt dürfen wir keine Fehler mehr machen.
Und unsere
Reaktion war dann, ach so, ab jetzt.
Ab jetzt dürfen wir keine Fehler mehr machen.
Na gut, dann machen wir das jetzt halt nicht mehr.
Immer wenn ich über die Schulter gucke, ist irgendwas kaputt, ja.
Sobald der Manager wegguckt, fangen die Entwickler an, Lego zu spielen.
Und Fehler einzubauen.
Oder Fehler darf man nicht sagen.
Man sagt ja Jobsicherheit.
Ich baue Jobsicherheit in dieses Projekt.
Ja.
Das ist genau wie so eine Schätzung von so einem Software-Projekt.
Man denkst so, hm, was brauchst du denn dafür?
Zwei Tage?
Was kommuniziere ich denn jetzt?
Nee, das
ist alles,
also das, ja, das ist auch so eine Schätzung, ist auch so ein schönes Thema.
Also das ist halt auch, ja, also aus, also, hm, soll ich das wirklich sagen?
Wird das nochmal eine andere Episode, wird das eine so irgendwie, ja.
Haben wir da nicht schon mal drüber gesprochen?
Ja, wir haben bestimmt über solche Sachen schon häufiger gesprochen.
Aber ich bin auch irgendwie der Stimmung.
Also wir callen Bullshit auf alle möglichen etablierten Businessprozesse, aber ja, dieses mit dem Schätzen ist einfach nur totaler Quark aus meiner Perspektive.
Also niemand kann das schätzen.
Wir haben da genug Erfahrung, um es inzwischen relativ sicher sagen zu können, dass man das nicht schätzen kann.
Es geht einfach nicht.
Und wenn man Leute dazu zwingt, dass sie das tun, dann passieren halt Dinge, die man nicht haben will.
Nämlich zum Beispiel, dann machen sie halt nur noch Sachen, die man gut schätzen kann, zum Beispiel.
Ja, was
halt irgendwie.
Ja, aber das ist ja nicht.
Du willst ja eigentlich quasi sozusagen, eben aus der Business-Perspektive, möchtest du haben, die Leute sollen an dem Kram arbeiten, der den meisten Wert bringt.
Irgendwie.
Sozusagen Wert, wie auch immer man das definiert, aber man hat ja irgendeine Vorstellung von dem, was Wert bringt,
weil sonst würde man was.
Aber sie werden dann irgendwelche Aufgaben und wollen, dass die Aufgaben für dich gestellt sind und irgendwie so.
Genau, aber das, was du eigentlich haben willst, ist, dass die Leute etwas produzieren, was für dich einen Wert hat.
So, diesen Wert willst du eigentlich optimieren.
Wenn den Leuten jetzt sagst, ihr müsst mir aber vorher sagen, wie lange das dauert, und das bei denen dazu führt, dass wenn sie das sich verschätzen, du ihnen auf die Finger haust, die dafür bestraft werden und belohnt werden dafür, dass wenn das stimmt, dann machen sie nur noch Sachen, die man gut
schätzen kann.
Und vor allen Dingen,
was du dann halt verstanden hast, wenn du weißt, was Informationsasymmetrie ist und dann verstehst du auf welcher Seite welche Informations liegt und wer da was machen kann, ja bitte, Entschuldigung.
Ja, das führt halt dazu, dass
sein Wert nicht mehr maximiert wird, sondern dann wird halt maximiert auf irgendwie langweiligen Scheiß, den man halt schön schätzen kann.
Und das ist
ja gar nicht das, was man vorher schon mal gemacht hat.
Nee, ich würde anders maximieren.
Ich würde auf das maximal erträgliche Zeitbudget maximieren und dann halt gucken, dass ich halt das dann trotzdem so schnell mache, wie ich das für richtig halte und dann den Rest der Zeit halt nicht signalisiere, sondern schön meine Sachen machen kann, wie ich das für richtig halte.
Ja, gut, aber ja, ich weiß nicht, aber das.
Aussichts Perspektive ist das nicht so sinnvoll.
Aus meiner Perspektive ist das schon gar nicht so schlecht.
Ja.
Das klappt nicht so.
Das ist ja immer
ein anderer Fall.
Aber selbst
unter der
Annahme, dass alle nicht, dass niemand versucht, das zu gamen, sondern dass alle sich so verhalten, wie das gedacht ist, funktioniert das mit dem Schätzen ja schon nicht.
Und dann ist halt schon echt schlecht.
Also wenn man jetzt noch mit zusätzlich annehmen und annimmt, die Leute sind bösartig, okay, dann weiß ich nicht, aber das ist ja nochmal ein anderes Problem.
Aber selbst wenn sie sich alle gutartig verhalten und alle nur das Beste wollen, funktioniert das halt schon nicht mehr.
Also die Frage ist halt ja schon, wenn du halt gemeinsam kooperativ irgendwann arbeiten willst, dann musst du ja quasi davon ausgehen, dass du Vertrauen in den Leuten entgegenbringen musst.
Ja, genau.
Und dafür ist das ja schon irgendwie Quatsch, hinter Druck zu setzen.
Und dann ist eigentlich die einzige Info, die man irgendwie geben kann, so ja, ist das jetzt eine Frage von Tagen oder von Jahren oder sowas.
Ja, aber die Frage wäre auch, wofür willst du das wissen?
Warum ist das so?
Also ich meine, ich würde ja sagen, okay, manchmal kann es ja sein, dass
das Make-Oby und sowas alles halt, ne?
Ja, aber.
Da hast du ja auch oft viele Business-Sachen da, die da drin hängen.
Marketing und Fremdsysteme und Kundenkontakt und so.
Und dann musst du Sachen ankündigen und den Beispiel, am Ende können wir genau Jahresbudget und manchmal hast du auch gesetzliche Vorgaben.
Ich arbeite jetzt in der Versicherungsbranche für die Versicherungsbranche und da gibt es jede Menge gesetzliche Vorgaben.
Könnt ihr euch gar nicht vorstellen, wie viele gesetzliche Vorgaben es da gibt.
Und wir kommen jetzt ins Jahresendgeschäft.
Das ist auch was, was mir bisher unbekannt war, weil die halt so eine Vermittlerstruktur haben und die haben halt Jahrespläne.
Und weil es jetzt zum Ende des Jahres zugeht, müssen die jetzt alle noch ihren Plan erfüllen.
Und deshalb ist im November und Dezember doppelt so viel Geschäft wie im Januar und Februar.
Und da muss man halt auch damit klarkommen.
Also da hängen ja schon Sachen dran.
Also ich kann schon verstehen, dass du vorher wissen möchtest, wie viel das kostet, wenn du was kaufst und wie lange es dauert, wann du es kriegst.
Ja, aber die Frage ist, wie viel dir das wert ist.
Das wäre dann sozusagen die.
Ich dachte, du magst Marketing nicht.
Ja, ja, doch, ich mag es nicht.
Wie hoch ist
deine Schätzungsmarge?
Wie hoch ist dein Schätzungsfaktor?
Zwei oder drei?
Zwei bis
drei, irgendwie sowas, ja.
Ungefähr.
Ist doch normal, oder?
Und dann ist doch okay.
Ja.
Dann kriegst du es auch hin in der Zeit.
Nee, ja, manchmal halt auch nicht.
Schätzst du Storypoints
oder Tage?
Also, sagen wir so, Tage ist noch
falscher als Storypoints, aber Storypoints sind
zwei Storypoints.
Storypoints sind alle auch schon falsch.
Du bist du eigentlich immer richtig?
Ja, genau.
Also ich fand, naja, gut, also ich weiß nicht, es ist halt alles sehr sinnlos.
Und ich meine, die Alternative wäre, ich würde einfach die Alternative probieren.
Die Alternative ist, man nimmt sich das Nächste, was halt irgendwie den höchsten Wert verspricht und arbeitet halt dran.
Und wenn das halt so lange dauert, dann nimmt man halt was an, dann hat das nicht mehr den höchsten Wert, dann nimmt man was anderes, ja.
Aber das vorher alles zu schätzen und dann zu priorisieren, also ich habe starke Zweifel daran, dass das irgendeinen, dass das
irgendwie was besser macht.
Das ist genau das, worum es halt gerade geht.
Du fängst halt an, die Sachen dann untereinander zu gamen und zu arbitragieren und sowas.
Und das ist halt das, was die dümmste Idee ist, die du machen kannst, wenn du vernünftiges Management machen willst mit Leuten, die motiviert, intrinsisch motiviert an Dingen arbeiten sollen oder wollen.
Und das ist genau der entscheidende Punkt, wo ich auch sagen würde, dass das keine gute Idee ist zu machen.
Auch das mit dem Tracking und so, das ist alles keine gute Idee.
Ja.
Ja, es
gibt Leute, die verstehen das nicht, die meinen ja, die müssen aber.
Ja, und dann ist es nicht.
Ich freue mich.
Ja, ich meine, es gibt ja auch genug Beispiele, wo dann halt irgendwie nicht so tolle Sachen damit rauskommt.
Ich freue mich dann immer über Leute, bei denen das dann doch funktioniert.
Und die anderen, die meinen, dass das funktioniert und wenig von der Realität informiert werden, darüber, ob das jetzt dann, da freue ich mich auch drüber, weil irgendwie.
Ja, das hat ja auch was mit Informationsademetrie zu tun.
Die Frage ist also, ob du die Wahrheit überhaupt kennen kannst.
Ja.
An der Stelle aus der jeweiligen Management-Perspektive oder so.
Das geht halt nicht.
Richtig, das ist auch ein Riesenproblem und ich würde sagen, in vielen Sachen nicht gesehen habe, ja, nee, können sie nicht.
Also du müsstest ja zum Beispiel haben, der richtig selber Kunden selber einschätzen kann, was überhaupt passiert ist.
Und sonst ist das gar nicht so notwendig.
Der müsste halt die ganzen Commits lesen und dann verstehen, warum das wie so lange dauert hat.
Der muss auch verstehen, dass, keine Ahnung, man manchmal zwei Tage lang nach einem fehlenden Punkt oder Komma oder Leerzeichen suchen muss, weil das irgendeinen blöden Bug an irgendeiner Stelle gibt, die man nicht erwartet hat.
Und dass dafür bestimmte Sachen halt einfach schnell gehen, obwohl die total kompliziert aussehen.
Das ist halt so, ja, der muss halt so ein Feeling haben.
Manchmal hat man ja auch die Inspiration, oder sowas zu machen.
Manche Sachen gehen schneller, obwohl sie kompliziert.
Ja, aber das ist das, was du willst.
Du willst diesen Flow haben.
Und damit dieser Flow möglich ist, damit du, damit in diesen Flow reinkommt, dass du mal drei, vier, fünf, sechs, sieben, acht, neun, zehn Stunden einfach nur ballerst und dann ist was richtig geiles fertig.
Dafür brauchst du danach die Tage auch ein bisschen mehr Ruhe.
Das kannst du nicht die ganze Zeit machen, das geht nicht.
Wie können wir jetzt businessmäßig den Flow optimieren?
Oh je.
Ah, ich weiß es.
Wir brauchen einen Kickertisch in der Zeit.
Schon fertig.
Das war ja einfach.
Und einmal im Monat gibt es Pizza-Abendatte, bitte ist, die nach 20 Uhr noch da sind.
Ja.
Eine Tischtennisplatte natürlich und einen Lauftreff.
Naja.
Tja, ja.
Ach ja, man merkt das, ach, ist das bei euch auch so?
Ich glaube, ich weiß, warum das jetzt gerade alles wieder so am Jahresende?
Ihr habt da mehr Geschäft, ne?
Ja, wir auch.
Also hier ist gerade relativ stressig, weil es ist relativ viel Zeugs.
Also ich meine, da kann man sich auch mal drüber freuen, wenn Leute irgendwie wollen, dass man Dinge für sie macht und so.
Aber gut, ist eigentlich, eigentlich sehr gut.
Aber es ist so zum Jahresende, es wird immer mehr irgendwie.
Man hat immer so das Gefühl, so am Jahresende ist immer so ein bisschen voller irgendwie.
Man muss ja noch halt irgendwie die Sachen noch durchkriegen, die man fürs Jahr geplant hat und gucken, ob wir
noch fertig werden.
Ja.
Dann muss er ja auch der Topern wieder ohne Überlegen und Projekt.
Einplanst.
Ja.
Erstmal die Frage, kann man dann eine clevere Planung machen?
Da sind wir jetzt nämlich genau wieder bei dem Punkt kann zu sagen, clevererweise, okay, wir machen sowas so, das muss ja eines Jahres fertig sein, dann muss man am Ende gucken, hat man ein bisschen geschludert, muss man noch ein bisschen antreiben oder sowas, ne?
Aus der Management-Perspektive.
Ja, weiß ich nicht.
Ich glaube, das geht alles nicht.
Glaube ich auch nicht.
Aber auch etwas
geht es schon, oder?
Also ich meine, Crunch-Time funktioniert schon eine Weile.
Die Akkus leer sind halt, ne?
Genau.
Die Leute ausschmeißen neu in die Periode, wo es langsamer geht.
Ja, aber es ist auch nicht mehr.
Qualität darf da auch nicht das Merkmal sein.
Das ist halt dann nur mehr gemacht.
Ja, aber das ist ja, dann machst du billig und Crunch-Time und dann guckst du, dass die Produktivität dann immerhin so 60% ist, wärst du, du einfach gute Leute nimmst.
Und es kostet aber trotzdem eher mehr.
Ja, aber gute Leute sind zu recht.
Ja.
Also wir sind jetzt noch einen
guten bereit werden für dich zu arbeiten.
Schwierig.
Also ja, nee, ist nicht so einfach.
Die du bezahlen kannst damit.
Die Zeit haben, die nicht schon woanders sind.
Das ist doch das Problem.
Die guten Leute sind immer belegt.
Deshalb habe ich auch nie Zeit, Podcasts aufzunehmen.
Jetzt wisst ihr Bescheid.
Ja, aber offenbar hat das Baltenprojekt ein paar Leute gefunden, die tatsächlich irgendwie dafür arbeiten wollen.
Und die sind auch eigentlich alle ziemlich gut.
Die haben dieses Problem irgendwie in den Griff gekriegt.
Und ja, das hat eigentlich auch tatsächlich, also das ist ja sowieso eine Neuerung im Grunde, dass halt so viele, so viele Leute Vollzeit jetzt irgendwie daran arbeiten.
Und ja, eigentlich hat es ja schon ganz gut funktioniert.
Genau, also vielleicht gehen wir einfach nochmal durch die Dinger so durch, was da alles in neuen Sachen dazugekommen ist.
Also, genau, wir hatten die Performanceverbesserung so ein bisschen, da können wir eigentlich nochmal ein bisschen ins Detail gehen, auch was da passiert ist.
Aber halt dann die besseren Fehlermeldungen.
Was es auch gibt, sind Exception Groups und Except-Sternen irgendwie.
Das ist eine, das ist etwas.
Also auf der einen Seite ist es krass, dass das jetzt erst da drin ist, sozusagen, weil erst jetzt hat man halt die Möglichkeit, bestimmte Sachen zu machen, wo man denkt so, oh, das ist aber ganz übel, wenn man das nicht machen kann.
Und ja, es war einfach schon immer ganz übel.
Also Python 2 war es super übel, da gab es halt bloß eine Exception, die halt, wenn eine geflogen ist, halt nur eine geflogen.
Und wenn irgendwas anderes zwischendurch passiert ist, ja, Pechkaft.
Und dann ab Python 3 gibt es halt diese Chained-Exceptions, die man manchmal sieht, wenn da so, wenn man so eine so ein Thraspack kriegt, so während dieser Thraseback geworfen wurde, ist halt noch was anderes passiert.
Und da kann man beliebige aneinanderhängen und diesen Mechanismus kann man natürlich auch dafür missbrauchen, dann, oder gebrauchen, um halt, wenn man viele Exceptions hat, die irgendwie, zum Beispiel, wenn man halt viele Tasks hat, die man gleichzeitig abgefeucht hat, die dann halt alle ja auch irgendwie schief gehen können, um das zu wieder einzufangen oder solche Sachen.
Aber das ist natürlich alles sehr hässlich, weil eigentlich war das gedacht für Sachen, die was miteinander zu tun haben.
Und wenn man jetzt aber so Async-Geschichten macht, die haben ja oft nichts miteinander zu tun.
So die aneinander zu ketten ist halt irgendwie, macht keinen so großen Sinn.
Und dafür gibt es jetzt halt Exception Groups und wo man die Exceptions so in Bäumen anordnen kann.
Und ja, es gab auch vorher schon so Sachen, die dann versucht haben, drum umzuarbeiten, Nurseries in Trio und so.
Auch schon irgendwann ganz kurz drüber gesprochen.
Ja, haben wir auch
schon mal genau, das war eigentlich so ein fehlendes Puzzlestück auch für Async.io, um das halt so richtig ordentlich zu machen, weil das ist halt total blöd, wenn du halt nicht tatsächlich alle Sachen, die schiefgegangen sind, hinterher
behandeln kannst, weil manchmal musst du halt.
Wenn es irgendwie weggeschluckt wird, das schon ein bisschen blöd.
Ja, weil manchmal musst du es halt handeln und wenn du dann davon gar nicht informiert wirst, ist es halt irgendwie schon nicht so gut.
Und es gibt es aber auch außerhalb von Async.io, es ist nicht nur ein Asing-I.O-Feature, weil es gibt auch so Dinge wie zum Beispiel im Socket-Modul, wenn du halt eine Verbindung irgendwo hin aufmachst, dann probiert das Ding halt unterschiedliche Sachen durch, wenn es halt irgendwie nicht funktioniert.
Also diverse Optionen, die dann gesetzt werden können.
Und bisher war es halt so, naja, es werden halt diese Sachen durchprobiert, wenn das eine nicht funktioniert, wird das andere probiert und so weiter.
Und jedes Mal fliegt ja eigentlich eine Exception, aber du kriegst immer nur die letzte zu sehen eigentlich.
Was ja auch irgendwie Kacke ist, weil du möchtest ja im Grunde vielleicht schon sehen können, so was ist denn da alles schief gegangen.
Also bei allen Dingen, wo man so Retry-Geschichten hat.
Wenn du jetzt sagst, oder bei irgendeinem, äh bei so einem Salary-Task oder was auch immer, sagst du halt irgendwie fünf Retries und dann geh halt geht's halt nicht, dann kriegst du halt, wenn es dann eine Exception gab, immer nur die letzte.
Aber vielleicht gab es ja vorher schon mal Exceptions und vielleicht waren die anders.
Das wäre ja interessant zu wissen.
Aber momentan gibt es keine Möglichkeit oder bisher gab es keine Möglichkeit, da dran zu kommen.
Und jetzt halt schon.
Und ja, da das halt nicht nur für Asyn-Geschichten, sondern halt auch in anderen Kontexten auftritt und eigentlich jetzt zum ersten Mal ermöglicht, diese Sachen so sauber zu handeln, dass du wirklich alles behandeln kannst, was da schief gegangen ist.
Also man konnte das ja schon
vorher machen, indem man so ein Python-Feature genutzt hat.
Also indem man eine leere Liste als Cache irgendeiner Funktion gegeben hat.
Also die immer quasi selber bauen, damit ich das machen kann.
Genau, die immer aufgefallen.
Konnte man die daran dann sammeln.
Ja, also man kann natürlich solche Sachen dann halt immer machen.
Das ist so wie die C-Fehernummern, oder?
Es gibt keine Fehlernummern, also wenn du 0 zurückgibst, ist alles in Ordnung und wenn du irgendwas anderes zurückgibst, musst du in der großen Liste nachschauen.
Ja, oder was man halt, ein Vorschlag war halt auch, man kann man es nicht über Logging machen oder solche Mechanismen, aber tatsächlich.
Ja, oder irgendwas in der Richtung, dass man das halt nicht, weil tatsächlich ist es ja jetzt, es hat, es ändert ja die Python-Syntax.
Also das musst du ja mal kurz erkennen, weil man mir gerade gedacht hat, mit was ist denn das für ein Vorschlag?
Verstehe ich nicht.
Was ist so?
Wenn eine Exception auftritt und du willst wissen, was davor passiert ist, da drüben ist eine magische Datei und da hast du es hoffentlich reingeschrieben.
Ja, wenn die weg ist, keine Lösung für dieses Problem.
Du kannst
halt, also du kannst natürlich hingehen und quasi, um die, also du könntest natürlich, statt Exceptions zu werfen, einfach alles in einen Log-File reinschreiben und dann im Code ab und zu mal nachgucken, ob irgendeine Exception geflogen ist in einem Logfile.
Das ist so eine schlaue Art.
Dragon Expressions, also ich habe mal einfach hin rauskam.
Ich habe kurz auf den C Cloud.
Ja, genau, oder verteilte Systeme,
da hat man das Problem natürlich so.
Ja, das ist unter Umständen sehr schmerzhaft.
Es gibt da einen schönen Vortrag von der Entwicklerin, die das, die das geschrieben hat, Erik Catrill, wo sie halt auch kurz durchgeht, ich habe das jetzt dummerweise, ich habe denn das schon ein paar Monate, schon ein oder zwei Monate her, dass ich ihn gesehen habe, wo sie halt durchgeht, warum das eine sinnvolle Geschichte ist, an der die Sprachsyntax zu verändern.
Weil du kannst es, und sie geht dann diverse Möglichkeiten durch, wie man das implementieren könnte.
Und da kommt am Schluss raus, ja, es geht nicht anders.
Du musst die Sprache, man muss die Sprachsyntax da verändern.
Es gibt keine andere schöne Möglichkeit, wie man das hinprogrammiert, wie man das anders machen kann.
Also wenn es eine andere gegeben hätte, hätten sie es auch anders gemacht, weil das natürlich irgendwie so ein bisschen das letzte Mittel, irgendwie die Sprachsyntax ändern, macht man ja auch nicht so einfach aus Spaß.
Und es gab aber keine.
Und dass es ein Problem ist, ist ja schon lange klar.
Also das ist ja nicht so, dass den Leuten das jetzt erst aufgefallen wäre, sondern eigentlich, also quasi, dass man sowas braucht.
Und im Essen-Kontext, weil der Assing-IO hauptsächlich implementiert hatte, ihr Juri Selevanov, der 2017 schon irgendwie gesagt, wir brauchen das unbedingt irgendwie.
Dann gab es diese Geschichten mit Trio und so.
Aber niemand hat eine Möglichkeit, weil man dachte immer so, ach, das geht bestimmt, irgendwie kriegt man das hin, ohne dass man dafür irgendwie die Sprache erinnern muss.
Und das hat aber niemand hingekriegt und jetzt ist die Sprache geändert worden.
Und ja, also was es halt an neuer Syntax gibt, ist halt dieses Except-Stern irgendwie, wo man dann halt quasi alle Dinge aus einer Gruppe halt, eine Gruppe von Sachen halt fangen kann.
Dann kann man damit irgendwas machen, dann kann man die splitten und ja, ja.
Ja, und damit kann man es eigentlich sauber machen.
Und das ist eigentlich sehr schön.
Ja.
Also gefällt mir auch sehr gut, dieses Feature.
Oh, und man kann an Exceptions auch noch irgendwie so Notes dranhängen, sodass man halt irgendwie noch ein bisschen Metainformationen mitgeben kann.
Das auch neu.
Wenn da halt irgendwie man halt noch ein bisschen Kontext hat, den man gerne da mit reintun würde.
Ja.
Genau.
Und ja, genau, da fällt mir gerade noch zu ein, zu Async.
Da gibt es jetzt auch, also vielleicht kennen da viele auch dieses, also was man normalerweise verwendet, ist ja irgendwie Gather, um halt viele Tasks irgendwie auf gleichzeitig zu awaiten und so.
Da gibt es jetzt ein neues Ding, es gibt Taskgroups.
Das ist quasi so ähnlich wie Nurseries in Trio.
Und das ist auch die, das löst Gather und diverse andere Geschichten halt ab und Create Tasks und so.
Und da macht man eigentlich, was man tut, ist, man sagt, Async with Taskgroup STG und dann createt man halt Tasks und wenn der Async-Kontextmanager durch ist, dann sind alle erfolgreich durchgelaufen.
Also das sieht auch sehr elegant aus.
Also sehr schöne neue Art, wie man so Sachen hinschreibt.
Es spart gar nicht so viel Zahlen, es ist ein bisschen weniger als vorher, aber es sieht einfach irgendwie, ja, sieht gut aus.
Also das in Kombination mit den Exception Groups, also Async mit 3 Elf ist es eigentlich echt so auf dem Stand, dass jetzt funktioniert, es greifen so die ganzen Teile ineinander und jetzt ist es so richtig rund.
Jetzt kann man endlich Async benutzen.
Ja, vorher konnte man es auch schon, aber es haben schon tatsächlich wesentliche Teile gefehlt irgendwie.
Also da, ja.
Ja, das
ist auf jeden Fall alles sehr erfreulich.
Genau.
Also es ist alles besser geworden, würdest du sagen.
Ja, ja, ja.
Schon alles dort geworden.
Dann sind noch Dinge,
da müssen wir in der Typing-Episode mal drüber reden, keine Ahnung.
Variatic Generics Zeugs, das da will ich einfach drüber reden.
Das ist alles viel zu kompliziert.
Das kriegt eine eigene
Episode, glaube ich.
Ja, ja, haben wir schon geplant.
Dann, ja, Typing sind einige Sachen mit dazugekommen.
E coole Geschichte beim Typing, die dazugekommen ist, ist Self.
Ja, also wenn man zum Beispiel bisher sowas machen wollte, wie.
Habt ihr das mal gemacht, so Typannotationen und wenn diese Sachen die Self zurückgeben, was gibt man dann zurück?
Ja, die Klasse selber.
Ja, das funktioniert leider nicht so.
Was ist, wenn du erbst?
Das ist halt keine Instanz der Klasse, sondern so.
Also stell dir vor, du hast halt eine Basisklasse und eine Klasse, die von der Basisklasse erbt.
Und in der Superklasse hast du eine Funktion, die irgendwie sozusagen irgendwas zurückgibt.
Jetzt sagst du,
in der Superklasse sagst du jetzt, annotierst du mit, gib zurück eine Superklasse.
Also eigentlich müsstest du dann eine Union machen, ja.
Aber das ist ja, wenn das in der Instanz aufkommt, ist das ja falsch, weil es wird eine andere Klasse zurückgegeben.
Das geht halt nicht.
Das ist genau das Problem.
Deswegen kannst du nicht einfach die Klasse da mit der Klasse annotieren.
Es wird doch höchstens eine erbende Klasse
zurückgegeben, oder?
Ja, eine von denen, die geerbt haben.
Also ich meine, in gewisser Zeit ist es natürlich schon richtig.
Also du kannst die unteres zur Base-Klasse zurückgeben, ist ja nicht falsch, weil das ist eine Art von der Institution.
Ja, aber es ist auch nicht falsch.
Aber wenn du jetzt irgendwo dann quasi darauf überprüfst, ob tatsächlich die Unterklasse übergeben wird, irgendwo und nicht die Basisklasse, dann geht das halt schief, obwohl es eigentlich richtig ist.
Dann hast du ein False-Positive.
Und jetzt kannst du halt sagen, from Typing Import Self und dann griffst
du das Self-Zug und.
Du kannst das kurz als Argument aufschreiben, warum ich Typen nicht mag.
Warte, das brauche ich für die Typen episode.
Ja, ja, also ich hab auch mal so, also es ist, es ist, also so diese Details sind alle schon sehr haarig,
muss ich sagen.
Also es geht auch nicht gut anders.
Also man sagt, es gab das ja vorher nicht, ja.
Und wenn man sich da Gedanken drüber macht, okay, wie annotiere ich das denn jetzt richtig?
Es geht nicht richtig gut.
Man kann das nicht gut annotieren.
Du darfst erstmal nicht selbst zurückgeben.
Und dann
sind wir wieder in dieser Situation mit den Schätzungen, dass man jetzt nur noch Sachen macht, die man per Typ erreichen kann und das ist eine Einschränkung, die nicht gut ist.
Genau, genau.
Aber also jetzt gibt es zumindest eine Möglichkeit, die nicht ganz so schrecklich ist und die, die einfach das Richtige tut, quasi.
Das ist schon mal gut.
Was haben wir noch?
Genau.
Jochen, bestübert gerade ist eine lange Liste.
Ich habe das im Grunde nur aus dem What's New Ding rauskopiert, das alles.
Oh, es gibt eine, das ist eine schon bei den Kleinigkeiten.
Es gibt einen Change Dear Kontextmanager.
Das ist etwas, was ich, ich weiß nicht, wie viel Mal ich mir das geschrieben habe.
Und wahrscheinlich hat das jeder andere auch schon mal getan.
Ich möchte ein Verzeichnis.
Change Dear Contextmanager ist sehr schön.
Ja, aber ich muss unbedingt wieder zurück, weil das ist nicht gut, wenn ich da irgendwo in einem, ich muss jetzt irgendwo tief im Dateisystembaum irgendwas machen.
Aber ich.
Du bist ja nicht bleiben und da irgendwas ablegen, was da nicht hingehört, aus Versehen oder so.
Das Problem ist, dass du dann noch, also wenn du halt dann noch mehr Sachen machst und du bist im falschen Verzeichnis, dann hat das halt unter Umstand blöde Konsequenzen.
Deswegen, also ich habe das schon ganz oft gemacht, dass ich dann irgendwie mir einen Kontextmanager dafür geschrieben habe, wo ich dann sicher sein kann, okay, wenn der durch ist, dann bin ich wieder zurück.
Und das Ding ist jetzt in der Kontext-Slip ist jetzt so ein Teil drin.
Das ist ein
bisschen doof,
kann man nicht gut verwenden, weil ansonsten dependet man auf drei Elf, aber.
With Changedier und dann Path-Objekt oder was?
Genau, man sagt with Change, Changedier, Path und wenn man da zurückkommt, ist man wieder zurück.
Wusstet ihr, dass Bash auch so ein Feature hat?
Da kann man Verzeichnisse pushen.
Man kann so einen Stack machen mit Verzeichnissen.
Und wenn du fertig bist, kannst du Pop machen und bist dann wieder da, wo du vorher push gemacht hast.
Ja, genau, pushen kann.
Ah, ne, wusste ich nicht.
Ah, cool.
Du musst allerdings selber darauf aufpassen, dass du wieder in die richtige Stelle zurückpoppst.
Du kannst bei jedem CD kannst du danach poppen.
Ja, genau, aber du musst halt kannst ja halt einen Stack bauen.
Und du könntest prinzipiell ja auch Subshells machen, wo du dann Verzeichnis wechselst, aber das wäre ja zu viel Aufwand.
Obwohl ihr gerade schon über Bertrehrt.
Kennt ihr Sockseid?
Nee, was ist das?
Das ist so ein schönes kleines Tool, das für mich CD ersetzt hat.
Ach, ach
doch, doch, doch, das verwende ich auch.
Ja, ja, ja, ja.
Vielen Dank, war ein guter Tipp.
Ja, weil man kann nämlich einfach Abbreviation schreiben, statt Directory nehmen, denn merkt sich quasi die Verzeichnisse, in denen man schon war.
Und dann nimmt er den nächsten Match davon.
Und dann kann man quasi mit zwei Zeichen oder sowas in das Directory seiner Wahl springen und das funktioniert ziemlich gut.
Ja.
Okay.
Ja, ist tatsächlich sehr nett.
Hört sich gefährlich an.
Du musst halt Fade nicht mehr ausschreiben, ne?
Tipp V.
Autocompletion for the wind, ja.
Dieses Manifest unterschreibe ich zwar prinzipiell, aber ich möchte schon gerne wissen, was der Computer macht.
Ein Hoch auf den Copilot, das ist hervorragend.
Weißt du ganz genau, was passiert, wenn du Tab drückst?
Natürlich.
Ganz exakt weiß ich das.
Vor allem in sowas wie PyCharm.
Das ist ja ein relativ kleines, übersichtliches Java-Programm.
Da weiß man immer genau, was passiert vorher.
Aber Control-R zum Beispiel ist ja dann auch so.
Ich weiß nicht, kann man das auch konfigurieren bei PyCharm oder sowas?
Also, dass man eine Liste von den Vorschlägen bekommt, die jetzt gerade die toll zu einem TV gewesen wären.
Wie das Fish-Shell macht das ja zum Beispiel.
Blättert ja auch genau aus der History.
Ja, Entscheidung.
Das ist bei Reverse History Search.
Genau, das gibt's jetzt bei Fisch so.
Den nächsten Match.
Was ist das?
FZF?
FZF irgendwie so?
FZF benutzt, genau, das ist halt das, was halt die Bashes in der Bash-Serie suchen, das ist halt so, FZF ist natürlich deutlich deutlich schicker.
Ja, das kann man dann.
Ja?
Naja, ja, klar, das weiß ich.
Kennt ihr alle schon.
Kleine Exkurs.
Was haben wir denn noch?
Wenn wir schon mal den Exkursen sind, also ich wollte nochmal sagen, ich bin natürlich einer von den Netten eigentlich, muss halt dann auch nett sein.
Aber das ist halt Kapitalism-Baby.
Wir haben über die Meer-Projekt-Sachen gesprochen.
Das ist halt der Punkt.
Also wenn mich jemand als Sklave ausbeuten will, das kann man natürlich nicht zulassen.
Seider man ist ja in einer holokratischen Gemeinschaft, dann ist das alles was anderes.
Der Romick hat gerade auch noch was von seinem Stack zurückgeholt.
Nochmal zu das Thema von der Fall.
Es gibt tatsächlich Dinge, die noch gefährlicher sind als Z und zwar Wusst.
Aber ja, ich fürchte, dass es halt Kapitalismus ist schwer.
Es ist ein Problem.
Man kann sich da schon
die Zellen dran ausbeißen, muss man sagen.
Nein, nein, das Problem ist halt, also das heißt Zellen drin ausbeißen.
Das Problem ist halt, dass man gegamed wird vom Geld.
Ja.
Das ist das Problem dabei.
Und dann muss man halt überlegen, ob man gamen will.
Also in der Spieltheorie kann man ja überlegen, ob das fair verhandelt, dann verhandelbare Lösungen gibt oder nicht.
Und ich sag mal so, man kann nicht ja vielleicht klug sein, wenn man sich Partizipationen sich erkaufen kann oder das möchte
irgendwie, wenn
man oder wenn man höhere Ziele dafür aufgibt.
Für den schnöden Mammon.
Ja.
Ja, man muss aufpassen.
Also es ist schwierig und ja, man ist leichter, Fehler zu machen.
Das ist schon richtig.
Nein, ich finde, es ist eine Pflicht, da Widerstand zu leisten, darauf wollte ich Ihnen aus.
Achso, ja.
Na egal, wir wollten keine politischen Sachen.
Das ist aber schon so ein moralisches Dilemma, was man hat manchmal, oder?
Also ich meine, ich war noch nicht in der Situation, dass ich ein Feature bauen musste, wo ich moralisch nicht dazu in der Lage gewesen wäre, um es mal so zu formulieren.
Aber es gibt ja schon so Situationen, man hört das ja immer wieder.
Und jetzt gerade mit den zahlreichen Personen, deren NDAs bei Twitter ausgelaufen ist, die jetzt über Features sprechen können, die sie hätten bauen sollen, da gibt es schon interessante Geschichten.
Okay, was war das?
Viel drüber diskutiert,
aber ja,
das ist so irgend so ein, also einer von diesen Twitter, von diesen, einer von den wenigen entlassenen Twitter-Software-Engineers hat sie geschrieben auf Twitter, dass vor einigen Jahren, 2016 war das, als Twitter ganz arg Geld gebraucht hat.
Wo übrigens Google und Facebook beide nicht Twitter kaufen wollten, wo die sich jetzt, glaube ich, ärgern, dass sie da mit so Telcos zusammengearbeitet haben und die dann halt verlangt haben, dass Twitter quasi alle zehn Sekunden die aktuelle Position des Benutzers übermittelt, damit die schauen, ob die in die Läden der Konkurrenz reingehen.
Wo dann halt auch der Engineer gesagt hat, nee, das baue ich nicht.
Mach ich nicht.
Und da halt in dem Team der Einzige war, der das hätte machen können, mussten die halt sagen, okay, gut, dann gibt es es halt nicht.
Er ist dann wohl auch entlassen worden, aber er hat es nicht gemacht.
Und da gehört ja schon ein gewisser Mut dazu.
Gerade, also ich meine, viele Leute haben ja Angst davor, entlassen zu werden, aber 2016 als Software Engineer hat man sich da, glaube ich, keine Sorgen machen müssen.
Aber es gehört natürlich trotzdem Mut dazu, zu sagen, ich mache das nicht, auch wenn ihr mich entlasst.
Ja, und die meisten Leute haben auch ihren Preis.
Beziehungsweise dann erstmal nur mehr Zahlen und dann geht es dann trotzdem oder so.
Ja, auch das.
Das wurde ja wohl auch gefragt, wie viel Geld müssen wir dir denn geben, dass du es machst.
Und dann hat er gesagt, so
viel Geld habt ihr nicht.
Tja.
Ja, ja, also ich meine, nö, aber ich merke das ja, ich merke das, ich denke, es gibt viele Leute, die wahrscheinlich irgendwie, also ich glaube, für Waffenentwicklung oder so wäre für viele schon ein Tabu oder auch eben für irgendwelche staatlichen Akteure irgendwie irgendwelche Schnüffelgeschichten bauen oder so.
Aber da gibt es ja auch wieder gut und böse, deswegen sagen die alle Crusader.
Ja, irgendjemand macht's, aber ich denke.
Ja, irgendjemand hat den Staatstrojaner geschrieben.
Irgendjemand hat.
Nein, aber die Frage ist halt, wenn du angegriffen wirst, dann ist es relativ opportunistischer, wieder sowas zu tun.
Wenn du dich bedroht fühlst.
Ja, ja.
Du bist das ökonomisch in China und das große Amerika versucht sich zu unterdrücken, da musst du dihren und so weiter.
Ja, aber das hat doch nichts mit Privacy-Sachen zu tun, die du verkaufen kannst.
Doch.
Viel.
Naja, das ist.
Nichts mit Datenschutz zu tun.
Also die ganzen kommerziellen Zwecke, die dann dazu führen, dass sowas passiert und diese ganzen Incentives überhaupt das zu machen, also auch für Geld und so, also die Moral anzustellen oder das halt tatsächlich aktiv zu machen, um für so einen Staat oder sowas in eine Aktion treten zu können und dem mehr Kontrolle zu verschaffen, das glaube ich, hängt sehr stark damit ab zusammen.
Vielleicht habe ich es auch noch nicht so richtig.
Also ich weiß es nicht, um ganz ehrlich zu sein.
Ich weiß es nicht, um ganz ehrlich zu sein, wenn man mehr Geld anbieten würde für ein unethisches Feature.
Man kann ja schon mal die Kontroll mal sagen, aber es ist eine Fahne tun.
Die Flagge hochhalten, wie sagt man?
Ja, aber ich glaube von mir, dass ich ein guter Mensch bin, aber wenn es dann tatsächlich in der Situation ist, kann ich nicht garantieren, dass es tatsächlich so ist.
Weil ich habe halt Familie und ein Häusle, was abbezahlt werden muss und irgendwie will man sich ja da schon schützen, ja.
Und man ist ja auch bequem, ganz ehrlich.
Ja, das ist komplett auch nicht richtig.
Jeden Tagsprojekt.
Dafür habe ich in der Uni immer Schelte bekommen, wenn solche Leute waren, die wollen.
Ja, ja, genau, das ist ja völlig klar.
Die Kampfbereitschaft, die fehlende, der Mut zur Veränderung, fehlende revolutionäre Anteil und so, ja, ja.
Versteh schon.
Ja, und bevor dir das Geld jemand anderem geben, der das nicht gescheit macht, dann mach's doch lieber ich.
Kapitalism-Baby.
Ja, es ist scheint andererseits, andererseits kenne ich halt auch so Leute, die von sich selber sagen: ja gut, sie sind halt Software-Prostituierte, die machen halt, was der Kunde verlangt.
Solange der das bezahlt, machen die das halt.
Ich würde sagen, das ist wieder Default.
Ist jetzt auch, würde ich sagen, nicht so furchtbar verwerflich, ehrlich gesagt, weil ich meine, das ist ja das, was alle anderen eigentlich auch so machen, üblicherweise.
Ja, aber gerade dann ist es doch verwerflich.
Ja.
Ja, vielleicht ist es ein besonders verwerflicher.
Gerade hier in Deutschland muss man doch aus der Geschichte, muss man schon aus der Geschichte sagen, ja, wenn die Mannes machen, dann ist es wirklich voran in den Abgrund rennen und möglichst.
Ja, es ist, es ist, es ist, es ist, es ist schwierig, ich weiß es nicht.
Aber eben, darüber reden bringt auch nichts, weil irgendwie eigentlich, das ist auch so etwas, was, also da können wir den Bogen wieder zurück zu Twitter, dass man auf Twitter irgendwie aus dem Sack geht, eigentlich ist halt,
wenn Leute.
Jemand soll uns mal in diese Situation bringen.
Die Böse nicht richtig auseinanderhalten können und nicht wissen, für wen
es sich richtig.
Das Problem ist halt, man kann nicht drüber reden.
Man kann ja nur Sachen machen oder nicht machen, ja, und dann kann man, aber wenn so, ich meine, eigentlich ist das halt eine selbst widersprüchliche Geschichte, wenn man sagt, ich bin einer von den Guten und mach das nicht.
Weil damit, wenn ich das höre, dann höre ich eigentlich, du bist einer von den Bösen.
Weil das öffentlich öffentlich zu moralisieren, ist halt eine Methode, um das zu gamen.
Daher, das.
Ja, aber es ist ja richtig.
Ja, es wäre
richtig, das zu tun.
Wir sind die Guten, weil wir das öffentlich gamen.
Das ist die Frage, ob das nicht noch Signaling ist.
Genau, also insofern.
Ich würde auch sagen, was entscheidend wäre, was hinterher wirklich gemacht wird und nicht, was erzählt wird, was jemand machen wollen würde und was andere machen sollen sollten und so.
Das finde ich auch immer so ein bisschen problemat.
Aber ja, egal.
Jetzt wäre mir wirklich der Problem.
Also, wie gesagt, ist der Aufruf, wenn mir jemand viel Geld für moralisch verwerfliche Dinge anbieten möchte, meine E-Mail-Adresse ist.
Ich weiß dann zwei, ich wüsste zwei andere, denen man das dann auch anbieten kann.
Abzüglich irgendwie ganz Provision, aber.
Genau, aber diese ganze Twitter-Geschichte ist natürlich auch nochmal interessant.
Also das ist auch ein bisschen.
An der Stelle nochmal, um nochmal auf die letzte Folge zurückzukommen, kurz so eine Coin-Adresse, finde ich schon uns gemacht.
Ja, also da ist auch wieder was geplant.
Kann man noch?
Lohnen sich Coinadressen noch?
Das würde auch unter News noch fallen, ne?
FTX irgendwie gerade wieder.
FTX und 52.
Also ich muss, ich hatte mir letztes Mal schon überlegt, aber vielleicht muss ich das jetzt nochmal irgendwie.
Wie kann man eigentlich den Kram shorten?
Ach naja.
Das ist schwierig.
Das ist schwierig.
Das geht nur, wenn jemanden hast, der.
Du musst halt die Unternehmen, die da investiert sind, loggen will.
Du musst halt wissen, wie viel Asset-Anteil solche Investitionen an welchen Kapitalgesellschaften haben und musst die halt shorten.
Das Problem ist, the markets can stay irrational longer than you can stay solvent.
Das ist ein Problem, ja.
Kennen.
Ja, und deshalb ist es ein gefährliches Spiel.
Ja, genau.
Vielleicht auch erstmal wieder ignorieren.
Und hinterher dann sagen, ich wusste nichts.
Ich wusste es, ich habe
nichts gemacht.
Naja.
So ist es halt immer.
Ich hab's euch ja gesagt.
Aber jetzt ist es zumindest irgendwie aufgenommen.
Macht nichts für Eiskream, ja.
Kann man drauf linken und sagen, ich habe es tatsächlich gesagt.
Ja, nee, also dieser Twitter-Auto-Unfall da ist auch gerade.
In Zeitlupe ist es doch nicht.
Nee, stimmt, das
ist ein relativ schneller.
Wenn man versuchen würde, Twitter kaputt zu machen, wäre es schwierig, das schneller hinzukriegen.
Ja.
Ja, ist schon beeindruckend.
Ja, erzähl mal mir, ich habe gar nicht davon mitbekommen, weil ich habe ja seit Twitter seit, weiß ich nicht, 2008, 9, 10.
Das ist super unterhaltsam.
Vor 15 Tagen hat er Twitter gekauft und ist sie auch von Twitter gekommen.
Der St.
Elon, wie man ihn gemeinhin nennt.
Ja.
Der heilige Elon.
Und seither gibt es nur gute Nachrichten aus diesem Laden.
Also eine der ersten Sachen, die er gemacht hat, ist, dass er drei Viertel der Belegschaft gefeuert hat.
So viele?
Ich glaube, die Hälfte
oder drei Viertel,
ich weiß es nicht.
Also alle Leute, die vorbeigelaufen, die nach seiner Nase gestattet haben oder was ist das?
Viele von den Sachen sind schwer zu verifizieren.
Man weiß es nicht genau, aber man hört.
Dann hat er angekündigt, dass es dieses blaue Checkmark ist.
Es gibt ja für verifizierte Personen so ein blaues Häkchen.
Das wurde mal eingeführt, weil Identitätsdiebstahl sehr einfach war.
Man hat sich halt einfach in der Frage.
Mit dem Bildchen rein und dann immer seriöse Post verfasst wurde Zeit lang.
Genau, so lange seriöse Post, bist du verrückt geworden bist.
Und für Personen des öffentlichen Lebens wurde dann mal eben so eine Verification eingeführt, dass du eben sagen kannst, okay, du bist tatsächlich der wirkliche Donald.
Und nur der hat so ein blaues Häkchen und das ist dann verifiziert.
Oder machst du das mit einer Ausnahme-Verifikation oder kriegst du per Post-Ident?
Ich weiß nicht genau, wie die das gemacht haben, aber das war wohl
ein Team, das
das gemacht
hat, was kompliziert war.
Es waren ja auch nicht so, also das war halt nur so, also wir haben Leute berühmtheiten, Journalisten und so gekriegt, aber.
Und das wurde halt, wurde halt manuell gemacht und so.
Oh, das
heißt ja, der neue Fame, der
blaue Haken.
Ja, ja.
Und eine der ersten Geschäftsideen, die der heilige E mitgebracht hat, war, dass das jetzt 20 Dollar im Monat kostet, wenn du so ein blaues Häkchen hast.
Und dann
hat Stephen King zurückgeschrieben, was?
Ihr seht wohl, ihr solltet mich dafür bezahlen, dass ich so ein blaues Häkchen habe, nicht umgekehrt.
Und dann hat Elon geantwortet, okay, vielleicht ist 20 Dollar zu viel.
Wie wäre es mit 8 Dollar?
Und das hat ja schon mal für sehr viel Unterhaltung gesorgt, ja, weil so, dann die Leute kommentiert haben, also ich bin ja kein CEO von großen Firmen, aber ich dachte, wenn man 44 Milliarden Dollar für irgendwas ausgibt, überlegt man sich vorher ein Businessmodell.
Jedenfalls kostet das jetzt 8 Dollar im Monat und es ist jetzt auch frei verfügbar, weil der möchte das ja so vielen Leuten wie möglich verkaufen.
Ich kann das Twitter meinen Blau bei Twitter anmelden.
Kannst du dich verifizieren lassen für 8 Dollar und das hat natürlich sofort dazu geführt, dass sich ganz tolle Leute, die das.
Kannst du dich verifizieren lassen?
Nee, als Elon Musk.
Ganz viele Leute haben sich als Elon Musk verifiziert und dann natürlich auch sehr viele schöne Dinge getwittert.
Kann man auf den üblichen Orten im Internet finden.
Also das war
tatsächlich sehr lustig, muss ich sagen.
Also war gute Unterhaltung.
Es war sehr.
Übrigens, wiederum dazu.
Du brauchst eine US-Adresse dafür, ne?
Also das brauchst du irgendwie VPN und so, aber es geht.
By the way, the next thing I do, Elon Musk post, I buy Python.
Ja, aber Elon Musk hat sich ja schon lange Zeit als Verfechter des Free Speech hingestellt, ja, dass er jetzt hier wieder alles frei macht.
Und dann ging das aber sofort, als die Leute angefangen haben, sich als Elon Musk auszugeben, wurden die dann sofort suspendiert.
Und zwar so rechts.
Ja, und dann
hat er dann gesagt, ist das wohl zu viel geworden.
Ich weiß gar nicht wieso.
Also wie gesagt, für mich sehr lustig.
Für ihn offenbar irgendwie,
er hat sich da so ein bisschen dran gestört und hat er gesagt, nee, das finde ich nicht okay.
Also da muss jetzt immer Parodie drüber geschrieben werden, sonst geht das nicht.
Und wenn er
die nächste Welle,
dann verband er die Leute irgendwie, ja, hat er dann auch gemacht.
Aber heute war ja tatsächlich die nächste Welle.
Die nächste Welle in diesem Drama, weil Personenidentitätsdiebstahl ist ja verboten, aber Firmen haben ja keine Persönlichkeitsrechte.
Und deshalb gab es heute ganz viele Leute, die sich als Firmen verifiziert haben und dann Tweets über diese mit diesen Firmen geschrieben haben.
Zum Beispiel Tesla hat heute einen wundervollen Tweet veröffentlicht.
A second Tesla has arrived at the World Trade Center.
Irgendwie sowas.
Also so ganz Sachen.
Ein Eli Lilly hat sich einen Tweet geschrieben, der groß angekommen ist, dass Insulin ab jetzt kostenlos ist.
Und sie haben sich dann sehr dafür entschuldigt, dass das zu Verwirrungen geführt hat.
Und das kostet natürlich weiterhin 700 Dollar pro Monat.
Aber ja.
Ei, ei, ei.
Das ist so der aktuelle Stand.
Und ja, von diesen gefeuerten Leuten wurden wohl schon welche gefragt, ob sie wieder zurückkommen, um sich um die Systeme zu kümmern.
Also es ist sehr beeindruckend, wie schnell.
Was kommt, was die Antworten?
Oder was ist dann die Antwort?
Keine Ahnung.
Also ich würde da nicht zurückgehen, ganz ehrlich.
Aber das ist auch so eine, wenn mich jemand in die Situation bringt, Double or nothing, möchte man, möge man gerne an mir ausprobieren.
Es ist auf jeden Fall sehr beeindruckend, wie schnell auch so ein Image zerstört sein kann.
Zwei Wochen, um halt das Image des Industriegottes zu zerstören.
Anderer Kommentar war, wenn jemand CEO von zwei oder drei großen Firmen gleichzeitig sein kann, dann kann es doch ein besonders wichtiger Job sein.
Ja, natürlich.
Und ja, es ist schon so.
Also es ist wirklich beeindruckend, wie öffentlich dieser ganze Autounfall passiert und wie beeindruckend das ist.
Und man kann auch nicht so richtig wegschauen, weil, ach, das ist so, überleben Sie es oder überleben sie es nicht.
Und noch anfangen zu brennen und anfangen noch wer.
Ah, also es ist schon ein bisschen.
Also es ist ein großes Spektakel, muss man sagen.
Es ist ein
Spektakel, ja.
Das ist es auf jeden Fall.
Und ja, ich meine, tja, ist alles nicht so einfach.
Das moderne Boulevard.
Ja, genau.
Ja, Dominik, der einfache Mann auf der Straße interessiert sich halt für sowas.
Es ist klar, dass so eine kultivierte Persönlichkeit wie du da nicht.
Aber Jochen und ich, wir sind halt einfacher gestrickt und deshalb gucken wir dazu.
Ja, also natürlich ist es auch ein Weg, um Aufmerksamkeit zu kriegen, nur ich weiß nicht.
Also so super Lagend und super.
Es ist noch drei Level, dreidimensionales Schach mehr, als ich irgendwie verstehen kann.
Wisst ihr was?
Oder ist es gar nicht so schlau?
Wenn Murdoch recht hatte, dann geht es nicht darum, was tatsächlich passiert ist, sondern nur darum, welche Emotionen wir hatten, wie schnell wir das hatten.
Und ja doch, gibt es schon, aber es geht nur um Emotionen, die wir hatten, als wir es wussten.
Und da wir alle die ganze Zeit uns kaputt gelacht haben, erinnern wir uns an diese Freude, wenn wir noch in zehn Jahren an Twitter denken.
Und das ist random.
Aber das ist doch Schadenfreude.
Das ist doch egal.
Du hast dich gut gefühlt.
Und das ist genau der Punkt.
Das ist ein wunderbares Welt.
Das ist eine fundamentale Emotion von Menschen.
Schadenfreude.
Ja, aber es passieren ja tatsächlich.
Also es geht tatsächlich
gerade sehr, sehr viele Leute weg.
Und zum Beispiel nach
Schadenfreude gibt es universum.
Das ist ein Fremdwort im Englisch.
Ja, das ist englisches Wort.
Schadenfreude.
Und damit mein Portiert.
Ja, gut.
Wir können es halt am besten.
So viele Dinge.
Und Humor besonders wenig.
Das ist halt das Einzige, was aus dem Keller ab und zu mal raußen dringt, wenn man in dem Kontext.
Schadenfreude.
Wenn einer in den Keller gefallen ist.
Ja.
Ja, aber genau, also das ist der Autounfall.
Also der andere Teil ist halt lustig, dass jetzt Leute irgendwie nach Mastodon gehen, irgendwie in Twitter und so.
Das ist ja auf.
Ich meine, das ist
ja auch cool.
Ja, aber ich bin nicht zufrieden mit meiner.
Doch, aber ich habe das irgendwie, das ist irgendwie, was ich mal früher, als es Twitter auch mal wieder, als Twitter so eine Episode hatte, wo es ihnen nicht so gut ging, habe ich das dann halt auch mal so in Erwägung gezogen, vielleicht lieber nach das zu machen.
Da habe ich dann irgendeinen
Server genommen.
Und zwar irgendwie das Tröt-Café oder so, weil das halt offen war, ja.
Retro-Tröd gibt's.
Und genau, das habe ich jetzt auch und das ist irgendwie nichts, ich weiß nicht, ob ich da bleiben soll.
Ich dachte, wenn man sich das selber husten kann, ach, dann will ich das vielleicht auch machen.
Auf der anderen Seite, ich habe so viel zu tun und ich
habe keine
Zeit und will ich mir das auch nach beiden Pings befinden, aber naja.
Es gibt
instances.social, äh, Link in den Shownotes.
Da kann man sich die Instanzen anschauen, was die so für Eigenschaften haben und auch, was die für Content erlauben und so weiter und so fort.
Also da so habe ich meine neue Heimat.
Ja, da fängst du schon an Content-Kontrolle.
Ja, egal.
Ja, natürlich, aber ich kann keinen Spam und keine Programm.
Ja, aber ich will meine Leute, die wollen kein Nullity haben und so.
Ja, aber das ist ja wieder Arbeit.
Oder du filterst nach Instanzen, die das explizit erlauben.
Dann gibt es ja keinen vernünftigen Client irgendwie richtig fürs Telefon.
Ja.
Ja, aber das ist bei Twitter ja auch nichts.
Also bei Twitter gab es welche,
bis Twitter sie alle abgedreht hat.
Hab ich gehört davon, aber so alt bin ich gar nicht.
Ja, ja.
Naja, also ich meine, das Problem an dem Speck ist wohl alle, ist wohl, also ich habe jetzt auch viele darüber gelesen, dass Leute das selber hosten und jemals haben sehr enthusiastisch, super, ich hostel das selber dann so Stunden, Tage später kommt dann so, boah, habt ihr mal die Speck angeguckt?
Du hast ja schon habt ihr mal geguckt, was man da für alles so braucht.
Meine Güte, wow, wer hat sich das denn ausgedacht?
Das ist ja schrecklich.
Und ja, das ist alles schon sehr schrecklich.
Und ja, also es gibt, also eigentlich, ja, aber was soll man machen?
Es ist halt das, was jetzt gerade irgendwie auf jeden Fall sehr viel Auftrieb hat und vielleicht kann man einfach mal mitmachen.
Und ich im Prinzip würde ich ja sagen, es ist voll gut, wenn es irgendwie was gibt,
was man selbst
husten kann, was kann, was frei ist und so.
In die Web-Prinzip jetzt.
In die Web, genau.
Ja.
Ja, seine eigenen Daten selber zum Sitz ist schon gar nicht so schlecht, aber wer stellt denn denn irgendwie selber so einen eigenen Kasten zu Hause hin, den man noch die ganze Zeit selber own kann, wo man nur selber reinholt?
Gibt's ja auch gehostet.
Ja, kannst du auch hosten lassen.
Ja.
Naja, muss man.
Ich bin noch so ein bisschen unentschieden, aber das Problem ist, so mittlerweile ist es nicht so sehr, oh, Twitter und Elon, die sind irgendwie fies und ich geh dann mal weg, weil ich will eigentlich nicht mit denen zusammen gesehen werden.
Zu, hm, irgendwann geht er einfach, irgendwann werde ich den Client aufmachen
und es wird einfach nicht mehr funktionieren.
Das ist so eher, das heißt, ich muss nicht mal nach mehr, wahrscheinlich in absehbarer Zeit kann man nicht mal mehr nachgucken, wem man jetzt gefolgt hat, um das wiederzutun, weil das ist einfach weg.
Muss man jetzt exportieren.
Muss man jetzt exportieren, genau, sonst geht das nicht mehr.
Also es ist schon, also ja, komisch.
Ja, Free Speech.
Tja.
Ach, Free Speech.
Alles auch in den allermeisten Ländern auf der Welt nicht.
In Deutschland auch nicht.
Kannst du auch nicht sagen.
Jetzt die Frage, ist das richtig?
Selbst in den USA ist es halt sehr stark eingeschränkt, was heißt, naja, sehr stark.
Es kommt auf all, auf welchem Stadtbuch man steht.
Es ist ja auch eingeschränkt.
Du kannst darf auch in einem Schweden.
Was du denkst, wissen wir ja jetzt.
Ja, nicht gesagt.
Also, aber
du darfst halt auch wenn man in den USA in einem Kino oder in einem Theater sitzt, darf man auch nicht irgendwie aufstehen und Feuer rufen.
Geht halt nicht.
Also sag mal so, du kannst dich ja nicht auf Free Speech berufen, wenn du das machst, sondern dann wirst du halt auch verknackt.
Ja, und
Defamation gibt es auch und Slander gibt es auch.
Deshalb, es gibt überall Einschränkungen.
Also was ich halt cleverer finde, finde ich das gut für so Online-Leute klar.
Ist halt sowas wie Moderation, das wäre schon geil.
Also kuratier Dinge.
Das finde ich ein sehr powerful Werkzeug.
Das ist halt immer unfair, aber es ist immer irgendwie richtig eher.
Das ist auch sowas, was man gehört hat jetzt, dass eben das Hauptprodukt von Social Networks eigentlich Content Moderation ist.
Dass du sozusagen den, du verkaufst nicht den Benutzern irgendeine Funktionalität, sondern du verkaufst den Werbetreibenden Content Moderation.
Community Management.
Wenn die Content Moderation gut genug ist, sodass du, dass deine Brand Safety Genüge getan ist.
Auch da gibt es so einen Exkurs.
Ja, da hat wohl der heilige E einen Call gemacht mit den Werbetreibenden und dann haben sie ihm halt da verschiedene Dinge erzählt.
Angeblich haben mehrere große Blöcke während dieses Calls ihre Kampagnen ausgesetzt.
Und einer hat halt auch öffentlich auf Twitter gesagt, hier, für uns ist Brand Safety das Wichtigste, wir wollen nicht mit folgenden Dingen in Verbindung gebracht werden.
Ja, er hat ihn dann blockiert.
Das war dann der nächste Tweet.
Du bist auch für freie Sprache und warum hast du mich denn dann blockiert?
Tja.
Und das ist schon sehr interessant, da mal so einen Einblick reinzukriegen, ja, weil sich da halt jetzt die Licken aufreißen und mal einmal hier in die Eingeweihung.
Ja, und die Leute anfangen, Klartext zu reden und sagen, was halt ihre Interessen
sind und so.
Man sieht jetzt wirklich, wie das, also das ist halt das, das ist so wie so ein Teilchenbeschleuniger, da nimmt man ja auch irgendwie so viele, da nehmen die Teilchen viel Fahrt auf und dann haupt man die aufeinander, dann fliegt der ganze Scheiß auseinander und kann mal gucken, was steckt da jetzt eigentlich so drin.
Ja, was war da eigentlich drin?
Und das geht jetzt, das sieht man jetzt sozusagen in Sozial auch gerade und das ist total interessant, weil da stecken manchmal
sehr unerwartete
Sachen drin.
Das ist wirklich.
Sehr, sehr spannend.
Ja, ja, ja.
Ja.
Aber in Other News, Amazon ist die erste Firma der Welt, die jetzt nicht, hat jetzt nicht mit Social Networks zu tun.
Die ist die erste Firma der Welt, die über eine Billion an Marktwert verloren hat.
Oh wow.
Und das kommt dann so im Hintergrund drüber, ja, wo hier so das große Twitter-Spektakel hier im Vordergrund ist und im Hintergrund machen die halt one Trillion Dollars haben sie einen Marktwert verloren.
Und das ist schon.
Das sind so Zahlen, die sind sehr schwer zu greifen.
Ja.
1000 Milliarden.
Ja, tausend Milliarden, aber was bedeutet 1000 Milliarden?
Also eine Million Millionen.
Wenn du überlegst, dass eine Million, aber dass ein Haus, eine halbe Million, wenn du überlegst, dass ein Haus eine Million kostet, dann sind es zwei Millionen Häuser, da kannst du überlegen, dass eine ganze Großstadt.
Ich finde das eine gute Vergleich visualisieren.
Der beste Vergleich, den ich gehört habe, ist, wenn du zum Bau der Pyramiden anfängst, jeden Tag 500.000 Dollar auszugeben, dann hast du jetzt noch nicht eine Billion ausgegeben.
Ja.
Also ich finde das mit der Großvergangenheit, wenn du dir ausrechnet, wie teuer sind die Immobilien in so einer Großstadt oder sowas.
Und dann genug einfach so eine Großstadt.
Die ist halt einfach komplett, kannst du irgendwo hinschicken.
Aber da sind keine zwei Millionen Häuser drin, da kannst du dir Tokio kaufen davon.
Ja, die haben eine unterschiedliche Größe, als war ja es natürlich eine Fehlannahme, dass sie alle gleich verteilt eine halbe Million kosten, aber da ist ja schon größere Gebäude und so, deswegen.
Ja, ja, aber dann, also in so einem Haus wohnen ja mehr als wohnt ja mehr als eine Person.
Also du musst ja dann schon eine.
Das ist schon eine vergleichsweise große Stadt.
Also so eine große Stadt gibt es in Deutschland nicht.
Doch, ich würde sagen, das ist unterschätzt so.
Ich würde sagen, die so groß ist die nicht.
Also ich glaube, da kann man festhalten, dass es nicht so
einfach ist, sich das vorzustellen.
Ja, nimm mal so Stuttgart oder Düsseldorf oder sowas.
Vielleicht.
Stuttgart hat 600.000 Einwohner, da gibt es keine zwei Millionen Häuser in Stuttgart.
Ja, aber der Wert, es geht um den Ding.
Düsseldorf hat auch 600.000.
Der Immobilienwert, eine Million.
Ich glaube auch, dass die Zahl, wenn die Zahlen so groß werden, dann ist das unklar, was die an den Wert überhaupt beschreiben ist.
Den Wert gibt es ja.
Also Amazon
als Unternehmen existiert ja, das hat ja
irgendwie einen Wert.
Aber du kriegst.
Es waren imaginäre Dollar.
Ja, das ist halt, das ist halt die Frage.
Also da stehen ja auch Dollar dran, aber es ist trotzdem irgendwie sehr unklar, weil selbst kleine Veränderungen in der Zukunft ja riesige Auswirkungen haben können, gerade wenn der Marktwert so hoch ist.
Das heißt, es ist halt irgendwie unklar, was dieses, was das Geld da, auch wenn man das quantifizieren kann, was das überhaupt an Wert bezeichnet, weil ja, sehr, also ich meine, bei anderen großen ist das ja, also bei Apple wäre das wahrscheinlich auch so, ne?
Keine Ahnung.
Ja, was ist das eigentlich?
Apple hat so einen Aktienwert.
Die haben auch so einen Aktienwert, ja.
Was ist, wenn, wenn sie es irgendwie verkacken oder keine Ahnung, das jetzt nicht mehr funktioniert?
Genau, ist ja
unklar, was das alles ist.
Also diese Aktienwerte sind doch hypothetisch wert, oder?
Die sind doch der Wert, wenn du zum jetzigen Zeitpunkt.
Das sind keine hypothetischen Werte, das sind Buchwerte.
Okay.
Nee, nee.
Das ist, wenn du zum jetzigen Zeitpunkt alle Aktien verkaufen könntest, dann hättest du so viel Geld.
Nein, nein, das geht ja nicht.
Das ist ja physikalisch unmöglich.
Genau, du sagst hätte.
Es gibt keinen Hätte.
Der Wert ist null.
Es gibt einen Hätte.
Nein, der Realwert ist null.
Der Wert ist null.
Du hast einen Buchwert, der da drin ist.
Der reale Wert ist null.
Genau, und das ist ein Buchwert.
Du musst eine Transaktion machen, um was zu verkaufen.
Da fünfst du einen Käufer finden.
Du kannst gar nicht wahrscheinlich zu dem Preis alles, was.
Für 1000 Milliarden kannst du nicht Aktien verbinden.
Zumindest nicht alle jetzt sofort findest du.
Genau, das geht nicht.
Ja, eben, das sage ich ja.
Deshalb sind es ja hypothetische.
Wenn du gerade alle Aktien verkaufen könntest, dann hättest du folgenden Wert.
Das ist die Hoffnung auf zukünftige Umsätze, also auf zukünftige Produktivität der Marken, des Values, der Businesses, wo auch immer die ihre Kohle rausziehen wollen.
Das ist mehr zu kompliziert.
Ja, das ist gar nicht zu kompliziert.
Viel Fantasie.
Ja, genau.
Ja.
Jetzt müsste man eigentlich bei Stable Diffusion mal eingeben, irgendwie so Twitter,
Armageddon und so einen cleveren Satz.
Mal gucken,
da passieren bestimmt dann auch lustige Sachen.
Wobei, ich meine, bei Stable Diffusion und so, man muss halt schon irgendwie, man muss man muss lange warten und so und kreativ sein beim Aufschreiben von Prompts und das weiß nicht.
Was?
Ja, nicht?
Nein.
Okay.
Mach mal Mage das auf.
Hast du mal Dalli ausprobiert?
Ach, Dalli.
Dalli habe ich auch ausprobiert.
Mach mal Mage.space aufprobieren.
Mage?
Irgendwie der Magie.
Und dann.space.
Checking if the side connection is secure.
Oh oh.
Create anything.
Ja, Jochen Tipp gerade irgendeinem Satz zu erinnern.
Müssen wir ein bisschen warten.
Ist okay.
Ja, aber es ist
kein CPS-Hinter oder was?
Also da ist keine dicke Grafikkarte.
Das könnte man ja hinterhängen.
Ja, aber gut, das genau, diese Experience habe ich auf meinem Laptop auch und die ist halt.
Das ist schon was.
Geht so.
Ja, okay.
Und?
Was hast du eingegeben?
Ja, Twitter-Amageddon, das von oben.
Vogel und der, der hat, also dieser Bird.
So ein Gelber, der hat irgendein Viech in der Hand und versucht das zu fangen.
Und das ist so ein sehr artificiell Komicz.
Sieht cool aus.
Ich habe gerade alle Rechenleistungen aufgenommen, deshalb kann ich jetzt.
Ah ja.
Elon Musk destroying Twitter with Gasoline.
Siehst du, wenn man da gute Prompts schreiben kann, dann passieren auch lustige Sachen.
Aber ich weiß nicht.
Also den Prompt kann ich nicht empfehlen.
Ja, ja, aber gut, also auf jeden Fall, da passieren lustige Sachen gerade und vielleicht gibt es ja, es gibt auch diverse Dinge in Python, die man da benutzen kann, um dieses Activity-Pub oder was wie das Protokoll heißt, da irgendwie zu sprechen.
Naja, vielleicht huste ich da ja doch nochmal was.
Mal schauen.
Implementierst ja erstmal
dann eigentlich dann.
Du kannst dann dann eigentlich alle Nachrichten, die über dich gehen, mitlesen, oder nicht?
Du kannst doch dann eigentlich alle Nachrichten mitlesen.
Oder hast du das im Protokoll verboten?
Ja, genau.
Nee, das kann dann sein, dass deine RP gebannt wird, aber da gibt es ja Wege außenrum.
Nee, aber das gibt es tatsächlich, da gibt es ja Vorschläge der Simon Willison zum Beispiel, der ja auch sehr groß ist in der Python-Welt, hat gesagt, der ist jetzt auf Mastodon und ihm gefällt es total.
Und er vermisst so ein bisschen seine Timeline, aber das kann er sich ja jetzt selber schreiben.
Ja, ja.
Das habe ich von vielen Leuten.
Ich habe von vielen Leuten, die sagen so, also auch Simon Willison hat es auch, er hat zum Beispiel zweimal die gleichen Sachen.
Einmal auf Twitter, einmal, der hat auf Twitter irgendwie zehntausende Follower, keine Ahnung.
Auf Mastodon irgendwie ein Zehntel davon.
Und hat dann zweimal das gleiche gepostet und hat gesagt, guck mal hier, irgendwie Interaktionen auf Mastodon viel, viel mehr, viel interessantere Geschichten.
Auf Twitter war eher so lahm.
Also klar, ist natürlich jetzt auch irgendwie wahrscheinlich
die unabhängige
Bias auch, ne?
Wisst ihr, was der Eternal September ist?
Genau.
Und auf Mastodon sind die jetzt halt noch nicht.
Das ist richtig.
Also ich meine, ja, natürlich.
Aber andere sagen das auch, sagen momentan ist er echt eine gute Party, weil es sind eigentlich nur nette Leute und die ganzen Pupa haben es noch nicht gefunden.
Mal schauen, wenn es im nächsten September ist, vielleicht dann rum.
Dann hast du es ja auch da Jochen.
Ja, wenn ich da jetzt auch hingehe, dann ist es wahrscheinlich vorbei.
Ja, aber schon interessant.
Auch interessant sein, Willison habe ich jetzt gesehen, als ich in dem Kontext auch mit der Authentifizierung da beschäftigt habe, gibt es dann ein Paket von ihm namens Django IndieAuth.
Und da fühlte ich mich auch so, als habe ich irgendwann mal 2016 auf irgendwie einer von diesen Vorveranstaltungen von DBR und Tellerant saßen wir mal da bei Zipgate rum und haben so IndieWeb voll gut, war so eine Indie-Web-Konferenz, habe ich das auch mal implementiert.
Django IndieWeb ist ein Paket von mir, da habe ich auch schon mal IndieAuth implementiert.
Jetzt hat er heim willstens auch nochmal implementiert.
Muss ich mal vergleichen, was er dafür machen kann.
Offenbar muss das jeder mal machen, ja.
Sechs Jahre später, Jochen, du bist ja in der Zeit voraus.
Ja, weiß man nie so genau, oder?
Ja, aufs falsche Pferd zum falschen Zeitpunkt gesetzt.
Wer weiß.
Ja.
Aber ja, das hat es so ein bisschen gemacht.
Wo waren wir stehen?
Das war gut.
Das ist eigentlich eine gute Sache.
Genau, wo waren wir stehen?
Ich gucke gerade in die Liste.
Waren noch interessante Dinge dabei?
Ja, also vielleicht kann man noch ein bisschen was zu dem, also die ganzen Dinge, die ich jetzt hier noch habe, sind alles so eigentlich eher so kleinere Geschichten.
Tommellip, weiß ich nicht.
Ja, da war ich
total überrascht bei Tommellib.
Warum?
Welche ist es denn?
Welche haben Sie denn reingenommen oder eine neue?
Nee, ich glaube, sie haben tatsächlich das, was Tomilip, ich dachte, es gibt noch.
Ich weiß, Sie
haben das Ding irgendwie reingenommen.
Mindestens drei.
Piamil?
Mindestens drei.
Tommel?
Einfach Tommel?
Tomli.
Tommellib.
Ah, okay.
Ja.
Ich glaube, es ist Tommellib.
Ist in die Standard-P reingekommen.
Aber es kann doch nicht schreiben.
Oh, apropos, es gibt auch so eine riesen PEP gerade zum Rausschmeißen von vielen Zeugs aus der Schule.
Ja, der auch die sind in der Dokumentation jetzt schon separat aufgeführt.
Deprecated Packages oder sowas.
Nicht deprecated
Batteries, ja, auch von irgendwas.
Genau, genau, Heimes, der hat diese PyScript nach WebAssembly kompilieren, Python gemacht hat, ja.
Ja, ich war da kürzlich sehr überrascht, weil persönlicher Bezug, ich verwende Tommel, ich finde Tommel gut.
Und ich habe Sachen mit Tommel geladen und die dann gepickelt.
Fragt nicht warum.
Und wenn man diese Standard-Tommel-Bibliothek, also nicht die jetzt in der Standardbibliothek ist, sondern die, die davor einfach, also wenn man Pip Install Tommel gemacht hat, dann kann man die Sachen, kann man bestimmte Dinge nicht entpickeln.
Und zwar Timestamps mit Zeitzone.
Die werden gut gepickelt.
Da fehlt irgendwas.
Na gut, das mir macht es auch keinen Spaß, Timestamps mit Zeitzone zu haben, aber die gibt es nun mal.
Das kann Tomli kann das nämlich.
Und dann bin ich auf Tomli umgestiegen.
Und jetzt müsste ich dann da tatsächlich mal ausprobieren, ob man das in Python 3.111 einfach auch so machen kann.
Und ob die korrekt pickeln.
Ich weiß, das ist eine lustige Kombination, Tommel und Pickel, aber ich habe es halt gebraucht.
Für einen Cache.
Ich will hier gerade Pickel.
Wenn du ein Pickel lehrst, dann kann ich doch einfach alles ausführen, was ich will, oder?
Ja, schon.
Und sind die
ganzen Maschinenlearning-Modelle nicht alle Pickel-Fallen?
Nee, nee.
Also ja, man benutzt da häufig auch Pickel, aber nee, nicht so gut.
Ganz oft.
Ja, viele machen das so.
Das heißt, du kannst einfach so hochladen und sagen, guck mal hier, ich habe doch total neue Maschinenmodell für bla bla bla und alle Leute führen deine Pfeil auf.
Ja, also ich meine, aber
du kannst auch mal.
Da sind wir wieder bei den guten und bei den Schlachten.
Ja, aber ich meine, wenn du sagst, ich habe hier ein tolles Machine Learning-Modell, installiere mal hier dieses Papip, dieses Paket.
Natürlich, wenn du Papip-Sachen installierst, dann kannst du auch alles machen.
Das ist halt, ja klar.
Ja, bei
Pip muss ich ja auch noch ausführen.
Nö, das installierst.
So beim
Instalieren, wenn der Arsch ausgeführt.
Also ich kann, wenn ich installiert werde als Paket, kann ich alles machen.
Okay.
Ja, ja.
Ja, also genau.
Ah, äh, genau.
Was in schnellerem Python irgendwie, was da so für ein paar Sachen sind, die passiert sind, ist vielleicht auch halt.
Also Exceptions hatten vorher so ein bisschen Overhead irgendwie.
Dadurch, dass sie zum Beispiel, dass halt Speicher adociert werden musste, den man braucht, wenn man jetzt eine Exception schmeißt.
Das muss man halt vorher machen.
Und das war vorher auf dem Heap und das heißt, man hat irgendwie mehr oder weniger Maloc aufgerufen, keine Ahnung.
Und das hat es halt langsam gemacht.
Das heißt, du hast halt dann immer, wenn du irgendwie Tri-Ecept gesagt hast, hast du damit den Code, der da drin steht, ein bisschen langsamer gemacht.
Und das ist jetzt weg, weil jetzt wird halt irgendwie ein statisches Dings irgendwie alloziert und das wird halt immer benutzt und dann, da kümmert sich jetzt Python selber drum, dass das heißt, es ist jetzt der Overhead von Tri-Except ist nur noch, also es heißt irgendwie Zero Cost Exceptions oder so, oder Zero Cost Tri-Except, aber das ist es nicht wirklich, es kostet irgendwie 1% Overhead immer noch, aber es ist halt viel weniger als vorher.
Dann sind so Dinge passiert, Funktionen aufrufen ist schneller geworden, unter anderem und die brauchen auch weniger Speicher, auch weil da irgendwas mit den Frames irgendwie anders gemacht wird.
Ich weiß nicht mehr genau, was sie gemacht haben.
Und deswegen geht auch Rekursionen jetzt ein bisschen tiefer, muss das noch von Hand umstellen, aber ja, dann genau Python-Objekte sind ein bisschen kleiner geworden.
Also bei Python 2 zu Python 2 Zeiten waren es irgendwie so, ich hatte ein Objekt mit vier Attributen, braucht irgendwie 350 Byte oder so.
In Python 3 waren es dann nur noch so irgendwie 200 oder so, sondern irgendwie waren es bis bei 310 sind es 120 Byte und jetzt sind es irgendwie 95 oder sowas, keine Ahnung.
Aber es ist schon deutlich weniger geworden.
Also Objekte brauchen auch deutlich weniger Platz als früher.
Ich meine, das kann man nicht gut mit C Plus braucht nur 32, aber ja.
Ja, aber auch, ich meine.
Ja.
Immerhin.
Aber immerhin, es geht da schon
in eine sehr erstaunliche Richtung.
Ja, dann großer, das Größte bei dem Wie wird Python schneller Feature ist halt, dass halt quasi der Bytecode halt umgeschrieben wird.
Wenn da ein paar Mal irgendwas gemacht wurde und man das jetzt durch irgendwas Einfacheres ersetzen kann, dann wird das halt ersetzt und dann wird halt die einfache Operation gemacht an der Stelle.
Der merkt sich quasi, was er schon kennt und macht das dann einfach schnell durch, ohne dass er jedes Mal rumhüpfen muss und kennt einfach direkt den.
Ja, ja, also da sind solche Dinge, Dick-Lookups zum Beispiel, wenn das halt häufiger passiert.
Ganz wichtig, Globals, Locals, also früher hat man ja auch immer solche Sachen gemacht wie, oder so, wenn man in Schleifen oder in heißen, warmen Code-Teilen irgendwie, wenn man, da habe ich, mache ich heute noch irgendwie, manchmal mache ich es so instinktiv, dass ich dann halt eine lokale Variable verwende, damit halt nicht immer quasi, also entweder ein Attribut-Lok abgemacht werden muss bei einer Klasse oder es in Globals oder so nachgeschlagen werden muss, sondern dass man es halt ein Lokal, Local-Strack hat und dann sofort gefunden wird.
Das ist jetzt alles egal, das ist alles jetzt immer gleich schnell.
Jedenfalls, wenn es achtmal passiert ist, danach ist es dann immer gleich schnell.
Und das ist halt auch eine ganz ordentliche Verbesserung.
Kannst du nochmal kurz sagen, was du meinst mit heißen Stellen vom.
Ja, also du hast halt irgendwie vierfach verschachtelte Vorloop, die Variable, du machst irgendwas plus irgendwas da drin oder so.
Die Variable, mit der du das machst, die ist halt heiß.
Die brennt die ganze Zeit.
Ja, wenn du irgendwas Self-Punkt irgendwas sagst, war das früher nicht so gut.
Es ist so ein Paradigma, dass man sagt, der meiste Code, den du schreibst, der wird nicht oft ausgeführt.
Und dafür gibt es ganz wenige Stellen, die dafür ganz oft ausgeführt werden.
Und wenn du Self-Stellen oft macht hast.
Die Stellen, die oft ausgeführt werden, das sind halt die heißen Stellen, ja.
Und wenn du da Operationen machst, die teuer sind, dann sind die halt unverhältnismäßig viel teurer für die Gesamtlaufzeit des Programms, als wenn du halt irgendwo in der Initialisierung was leider hast.
Genau, weil die wird nur einmal passiert geführt.
Ja, genau.
Okay, okay, bei Safety Call macht dann das ganze Objekt immer ausprobieren muss und so weiter.
Und wenn du halt in der Schleife, die eine Million Mal ausgeführt wird, eine Nanosekunde mehr verbrauchst, dann ist das halt direkt messbar.
Und deshalb versucht man solche, versucht man eigentlich Optimierung.
Das ist das, was man mit Profiling erreichen will.
Wenn du anfängst zu optimieren, guckst du erst, wo du optimieren musst.
Und deshalb, also es lohnt sich nicht, irgendwelche Routinen zu optimieren, die im Programmlauf nur zweimal ausgeführt werden, wenn du dafür irgendwo eine Schleife hast, die eine Milliarde Mal durchgewirbelt wird.
Und deshalb hat der Jochen direkt Mikrooptimierungen gemacht mit Lockhart.
Ja, ist auch vielleicht nicht so schlau, so sollte man auch nicht, aber es gab durchaus Stellen, wo das dann viel gebracht hat.
Wenn der das weiß, dass das was bringt, dann kann man das.
Ja, ja, genau, dann kann man auch machen.
Das ist doch legitim, das kannst du nochmal erkennen, was du da gemacht hast.
Ja, solche Dinge wie eben ein Attribut, das in einer Klasse dranhängt, halt einen lokalen Namen zu geben.
Einfach zu sagen, Lokalunterstrich-Name gleich Self-Punkt, irgendein Attribut, was man dann halt ganz oft braucht.
Und das da gehe ich dann erst rein und rechnest
daran rum.
Ja.
Weil an der Anfangs sich verändert und am Ende schreibst du es wieder weg.
Ja, oder braucht man es dann auch nicht mehr?
Ja, oder auch Methoden rausholen, dass du halt nicht self-compute machst, sondern dass du halt sagst, Compute gleich Self-Punkt Compute und dann kannst du 100 Mal Compute ausführen und musst nicht jedes Mal diesen Lookup machen.
Und das ist jetzt besser.
Ja, genau, das muss man jetzt eigentlich nicht mehr machen.
Das passiert jetzt automatisch sozusagen.
Okay, ah,
beim achten Mal.
Ja, irgendwie so.
Ich glaube, das ist momentan.
Also es ist ein Implementationsdeteil,
das muss man sich
auch jedes Mal ändern.
Aber irgendwie ist es auf 8.
Da vertrauen wir drauf.
Ist ja auch wurscht.
Also ich meine, das macht ja nur einen Unterschied
bei Dingen, die
sowieso tausende Mal gemacht werden.
Und da, ob das jetzt acht oder zwölf Mal ist auch egal.
Aber cool, das ist ja das automatisch.
Das heißt, man kann, also die Sachen, die man nicht vorher nicht kannte, die kann man einfach ignorieren.
Genau, jetzt kann man es halt schön hinschreiben und das sollte trotzdem sein.
Genau, und manche Sachen gehen halt noch nicht.
Also was geht, was halt zum Beispiel durch schnellere Operationen ersetzt wird, ist halt so Floats, wenn man die addiert, multipliziert und so, keine Ahnung, bei Int und Float, also und wenn Ints, wenn es nur ins Int, wenn es nur Floats sind, geht es, glaube ich.
Wenn es Int und Float sind, geht es halt nicht.
Oder so.
Kommt dann vielleicht irgendwann oder es halt hat sich rausgestellt, ist nicht so effektiv, wenn man das macht.
Keine Ahnung, aber eigentlich muss man das alles nicht wissen.
Es ist einfach, man kann einfach den Code so schreiben, wie man das macht.
Es gibt eine ganz interessante Geschichte, das Ding heißt Specialist und man kann, also es gibt ja diese Dis-Funktion, mit der kann man sich den Bytecode angucken.
Und wenn man dem noch ein Parameter übergibt, dann zeigt es einem auch an, welche Sachen rewreitet worden sind und welche nicht.
Und das heißt, so kann man sich halt beim eigenen Code angucken.
Quasi beobachten.
Ja, genau.
Cool.
Dis für Disassembly.
Genau.
Ansonsten, ja.
Nee, also ich glaube fast immer, oder ich weiß nicht, habt ihr noch irgendwelche Dinge, die in Python 3.11 dazugekommen sind, die ich jetzt noch nicht drin hatte, die irgendwie interessant sind.
Ganz wie Speed, Speed, Speed.
Ja.
Ja, und es wird jetzt einzige, was zählt.
Es wird ja jetzt auch immer mehr.
Also das ist ja eigentlich ein Plan, der fünf Jahre lang verfolgt wird,
einen Fünf-Jahresplan.
Ja.
Und diese wichtigen Dinge, wo man genau weiß, was in fünf Jahren alles passieren wird.
Ja, so ganz
genau weiß man es
natürlich nicht, aber es ist halt ein langfristiges Projekt.
Also tatsächlich geht über.
Also ich glaube, der Shannon-Plan, der ist halt irgendwie, das soll über fünf Jahre soll Python irgendwie ungefähr fünfmal so schnell werden wie vorher.
Maxel.
Ja.
Und ja, es sieht alles aus.
Wenn diese Pläne schon einen Namen bekommen.
Ja, es ist gut in der Zeit.
Also bisher sieht das so aus, als ob es funktionieren würde.
Es ist jetzt ein Jahr rum und das ist schon einmal so schnell wie vorher.
Genau.
Ja.
Also es hat sich um ein Jahr verzogen irgendwie, aber ansonsten ist alles noch so.
Ja, dann habe ich ja recht tatsächlich.
Ein Jahr hier mehr und weniger, meine Güte, ach, sechs Jahre haben wir.
Klar, also ich meine, das ist halt alles, da muss man halt, was weiß natürlich keiner so genau.
Das kann man halt, je länger das wird, desto schwerer ist es auch zu sagen.
Aber momentan ist ja funktioniert alles.
Genau.
Ja, was haben wir denn sonst noch so für News?
Es gab noch ein paar andere Sachen außer Python, die passiert sind, aber ich glaube, Python können wir dann an der Stelle 31 jetzt so ein bisschen drüber geredet.
Was ist denn noch passiert, erzähl mal.
Also, zum Beispiel, also ich glaube auch eine neue Django-Release, die jetzt 3-11 Reddy ist, zum Beispiel.
Ich hab gehört, das ist schneller geworden.
Wollen wir nochmal über die 311?
Ja, was auch noch großes Release hat jetzt nicht direkt was mit Python zu tun, aber in dem Umfeld natürlich auch immer interessant, Postgres 15 ist released, also zumindest nachdem wir das letzte Mal irgendwie aufgenommen haben.
Und was kann das mehr?
Die werden auch immer schneller.
Das ist immer schneller geworden, genau.
Es kann jetzt das Rider-Headlock direkt komprimieren.
Also es ist irgendwie, was reingekommen ist halt, dass bestimmte Sachen, so LZ4 und Z-Standards, sind halt direkt in Postgres drin, sodass du da halt, deine Backups direkt komprimiert rausschreiben.
Und das Rider-Headlock kann auch direkt komprimiert geschrieben werden.
Das macht es halt auch ein bisschen schneller, einfach deswegen, weil du weniger schreiben muss.
Ja, das ist dann Merge, ach das große Feature, Merge-Statements, die im SQL-Standard drin sind, sind jetzt implementiert worden.
Da kannst du halt diverse Geschichten Insight-Update, sonst wie Sachen mixen und weiß ich nicht, ob das, also kann man, wenn man rohes SQL schreibt, kann man das vielleicht benutzen, bis das irgendwo in den ORMs und so ankommt.
Noch ein bisschen dauern.
Keine Ahnung.
Ja, ansonsten, ja.
Indizes ein bisschen schneller geworden, Distinct, kann jetzt parallel abgearbeitet werden.
Ach ja.
Also eigentlich ist es ein bisschen schneller, ein bisschen hübscher geworden.
Ich habe bei den Kunden, die haben noch Postgres 8.1.
Ja.
Und das ist ganz schön schwierig, weil da kriegt man keine Docker-Container dafür, da kriegt man keine Dokumentation mehr dafür.
Ich habe einen Kunden, da gibt es eine.
Nein, die schreiben ihr Back in den Date.
Das ist schon immer so.
Also ich meine, warum warum machen die das?
Sind dann Kunden so im Bereich irgendwie?
Ja, gut.
Läuft halt noch.
Sie betreiben kein Museum für alten Code oder so, oder nein?
Nein, aber es ist ein öffentlicher Kunde.
Das geht schon in Richtung Museum für alte Maschinen.
Nee, aber das ist tatsächlich echt schwierig, weil zum Beispiel Django so alte Versionen von Postgres einfach nicht unterstützt.
Da kannst du einfach, also du kannst direkt migrate, kannst du es gar nicht machen.
Ja.
Und dann fängst du schon an, so echt schwer zu werden, weil du dann die Django-Version zurückdrehen musst in den Zweier-Bereich.
Da.
Erreicht noch zwei?
Ja, mit 2.2 ging das, glaube ich.
Also sie sagen nicht, dass es offizielle Kompatibilität gibt, aber es ging dann irgendwie.
Ich musste irgendeinen Feature noch vermeiden und dann haben wir es irgendwie.
Aber es ist ja schön, dass dann Postgres jetzt fast doppelt so weit ist wie diese Park-Version.
Die ganzen Legacy-Sachen benutzen.
Und das sind immer von den Leuten, die meinen, die müssen das unbedingt selbst migrieren, weil die die Sicherheitslücken besser finden als die Community.
Muss jeder selber entscheiden.
Ja, wo wir schon, wo wir schon über da waren.
In dem Fall habe ich tatsächlich einfach gemacht, was der Kunde wollte.
Die hatten das Geld, um das zu bezahlen.
Ja, ja, bei dem Thema waren wir heute schon mal.
Ja, ich meine gut, dass Leute alte, das ist halt irgendwie, ja, manche Leute stehen halt irgendwie drauf.
Tja.
Ich mach's nicht so.
Aber beim Thema Datenbanken das auch ganz interessant.
Da gab es jetzt ein, also ich glaube, ich weiß nicht, ob das auf der DjangoCon US war oder ich weiß es nicht, irgendwie haben sich Carlton Gibson und Simon Willison unterhalten und das haben wir so, hm, warum ist eigentlich, warum steht in den Django-Docks eigentlich drin, SQLite wird nicht für einen Produktionsbetrieb empfohlen.
Und ja, der Grund ist halt, naja, wenn man SQLite verwendet und dann fangen plötzlich an, also es funktioniert im Entwicklungsmodus, funktioniert das ja alles super.
Und dann, wenn man es produktiv verwendet, dann fangen Leute an, da Sachen reinzuschreiben, dann ist halt relativ schnell Ende Gelände, weil kann halt immer nur ein Thread reinschreiben und die locken halt und wenn man viel schreibt, dann lockt sich das alles gegenseitig.
Dann lockt man.
Concurrent Rides und dann ist man sehr schnell in dann kriegt man Timeouts.
Timeouts die ganze Zeit.
Ja, ist total so funktioniert nicht gut.
Gut, das kann man noch ein bisschen in den Griff kriegen, der hat einen fünf Sekunden Standard-Timeout.
Kann man natürlich hochdrehen, damit wird es nur langsamer, aber es ist am Ende.
Genau.
Und darauf hinten, ja, okay, Simon Millens macht ganz viel mit SQLite, äh, Tazetter und so Zeugs und hat er auch Ahnung von dem Ding und machte so, okay, ich probiere mal was.
Und hat dann halt Benchmark dazu geschrieben und dann so Sachen ausprobiert, wie zum Beispiel einfach mal umstellen von dem normalen, ich weiß nicht, was der normale Mechanismus ist, auf Ride-Adlog, weil SQLite kann auch sowas mit Ride-Ad-Lock.
Da hat man zwar immer noch das Locking-Problem, aber das ist halt irgendwie, also es kann immer nur einen gleichzeitig schreiben, aber irgendwie wird das dann halt alles so ein bisschen zwischengepuffert und ist halt schneller fertig.
Und stellt sich raus, tja, also an der Stelle ist dann halt irgendwie diese Timeouts gehen weg.
Es geht eigentlich.
Und es geht eigentlich, ja.
Der hat ja wirklich so hunderte Requests pro Sekunde, also auch ich weiß nicht, wie viele tausend Sachen er da pro Sekunde schreiben konnte.
Viel.
Und es geht.
Und es skaliert auch.
Und er dachte so, okay, was passiert denn jetzt, wenn ich mehrere Prozesse nehme, die draufschreiben?
SQLite verwendet so ein File-Locking dafür.
So, das fliegt mir bestimmt in die Ohren.
Nö, es ist fast linear skaliert, bis zu vier Prozessoren.
Also geht auch.
Das heißt, du kannst eigentlich, also für die allermeisten, also es wird kaum Leute geben, die, wenn man SQLite so konfiguriert, in einen Bereich kommen, wo sie Schreibprobleme kriegen.
Das heißt, eigentlich kannst du das Ding halt auch produktiv deployen und Leuten das als Datenbank geben.
Ich meine, man will vielleicht aus diversen anderen Gründen auch noch ein richtiges Postgres
behalten, aber
für viele Sachen reicht es wahrscheinlich aus.
Und dann brauchst du keinen Datenbank-Server mehr, weil das ist halt schon eine sehr schmerzhafte Geschichte.
Das ist schon ein Einrichtungsaufwand, der für viele Leute haltbar ist.
Und wenn du das jetzt auf irgendeine kleine virtuelle Maschine mit Dateisystemen deployen kannst, reicht für die meisten Leute wahrscheinlich aus.
Und das ist natürlich schon ein Netz.
Gut, ja.
Also als ich
das gelesen habe, dachte ich,
sollte man machen.
Super, ja, also.
Genau.
Hat SQLite nicht kürzlich so ein Sicherheitsthema gehabt?
Ich erinnere mich, dass da irgendwas war.
Oh, das habe ich, glaube ich, überlesen.
Weiß ich nicht.
Ja, nee, ich glaube, die hatten so ein Sicherheitsproblem bei sehr großen Writes.
Anscheinend gibt es da einen Overflow.
Oh oh.
Wenn du irgendwie Max Bytes minus 1 an Daten holen hättest, das ist irgendwie ein Terabyte oder sowas.
Okay, na gut.
Also es ist nicht kein realistisches, kein pragmatisches Problem.
Aber tatsächlich war das so ein bisschen News, weil SQLite eigentlich sehr, sehr gut vertestet ist und sehr, sehr sicher ist.
Und das war eben so eine Sache, wo einer gesagt hat, haha, aber wenn ich ein Terabyte gleichzeitig in einer Transaktion drin habe und dann irgendwas mache, da wird halt auch irgendein Puffer alloziert, der dann ausläuft.
Dann geht's aber nicht mehr.
Ah, okay.
Das passiert den besten.
Ja.
Ja, ja.
Tja, ansonsten PyMC4 ist veröffentlicht.
Heißt jetzt nur noch PyMC, so für probabilistische Programmierungsgeschichten Library, die man sich mal angucken kann.
Also manchmal ist es ganz nett, das zu haben.
Wofür steht denn MC?
Monte Carlo.
Also MCMC Markov Genf für Monte Carlo.
Ja, und das MC steht für Monte Carlo.
Okay.
Ja, ich weiß nicht genau.
Und Andrew Carpathy ist ja jetzt seinen Job los und hat angefangen, ein Machine Learning Tutorial mit Python irgendwie auf YouTube zu verpflichten.
Ja, ja, ich habe gesehen, er macht jetzt mehr YouTube-Videos wieder.
Das ist gut, also so Neural Networks und so, so ein bisschen Intro, wie das in Python geht und so ein Language Modeling und sowas.
Nett, ja, kann man sich auf jeden Fall auch angucken.
Ja, der macht immer, der macht immer sehr schöne Sachen.
Stimmt, warum der war ein paar Tesla, ne?
War der Schritt von dem.
Tja.
Ist er wohl entlassen worden?
Nee, ich glaube, der ist tatsächlich freiwillig.
Ja, es gibt da einige Leute, also der, der sich diese GAN-Modelle, äh, General Adversarial Networks, Generative Adversarial Networks, meine Güte.
Das ist schon spät.
Der war irgendwas auch Chefmäßiges für Machine Learning bei Apple und der wollte eigentlich weiter Homeoffice machen und Apple hat gesagt, nee, wollen wir nicht.
Und dann ist er auch gegangen.
Achso, dafür eigentlich genau.
Da muss man halt wissen, was einem wichtig ist, ob die Leute da sind oder ob sie da sind.
Ja.
Also, ich meine, das ist halt auch eine sehr teure Policy, aber offenbar scheint
für Leute
so effektiv zu sein, dass sie das gerne in Kauf nehmen.
Die Policies sind ganz wichtig fürs Teamgefüge,
fürs Building und für ihre Kontrollesüchte.
Ja, ich glaube auch, das ist einfach, ich meine, wenn man, was ist denn, wenn man jetzt da so irgendwie eine Firma hat und da ist keiner?
Das ist eigentlich gut.
Also ich meine, wenn ich jetzt eine Firma habe, dann möchte ich ja auch schon sehen, dass da Leute sind.
Du meinst, wenn du so ein teures Gebäude hast?
Ja.
Die müssen da sitzen und arbeiten.
Mit der Peitsche dahinter
liegen kann.
Weiß ich gar nicht.
Also wenn sie in einem Meeting sitzen und mir zuhören, finde ich das eigentlich auch okay.
Da können sie ja gar nicht so viel arbeiten, aber das ist für mich eigentlich auch gar nicht so schlecht, finde ich.
Da kann sich reden würden.
Aufmerksamkeit, Aufmerksamkeit, nur für dich, ja.
Ja, ansonsten.
Genau, was hatten wir noch?
Also es gab noch diverse, die gut, das ist jetzt für die meisten wahrscheinlich nicht so, oder ich weiß nicht, für mich war es ganz interessant, macOS und iOS-Updates, weil da gab es einige ganz interessante Geschichten.
Also was mich ein bisschen genervt hat, es war diesmal ein sehr, sehr hakeliges Update für mich.
Es gibt ein sehr schönes Feature, das ich tatsächlich sehr cool finde.
Es gibt auf dem Mac, ich weiß nicht, wie macht ihr das eigentlich, wenn ihr Fotos teilen wollt mit anderen Leuten?
Machen wir nicht.
Ist nicht so ein einfaches Thema, finde ich.
Und auch auf iOS und oder auf Apple, im Apple-Universum ist es auch nicht so leicht.
Also denkt man, man kann so ein Shared-Album machen und dann geht das?
Nee, geht nicht, weil dann werden die ganzen Sachen irgendwie super klein gerechnet, winzig und dann.
Dropbox?
Dropbox könnte man machen, aber dann hast du halt das Problem, dass du die Dinger, wie willst du die angucken?
Was legst du.
Was legst du in diese Dropbox?
Fotos?
Ja, aber wenn du jetzt zwar, nehmen wir an, du hast RAWs.
Own Cloud?
Legst du die da rein?
Von RAWs kann niemand angucken, da muss er schon irgendwie.
Ja, aber ist halt,
es ist irgendwie dabei so Probleme, die wenige Leute haben.
Ja, also.
Der Jochann möchte halt seine 28K-Resolution-Fotos gerne schon in ordentlicher Qualität sharen können.
Ja.
Naja, aber dann musste er das halt selber schreiben, musste halt ein Verzeichnis haben, wo die Dateien drin liegen und die dann irgendwie zugänglich machen.
Und ich meine, Image Gallery Software gibt es genügend.
Ich habe eine Lösung dafür.
Also sozusagen für diese.
Aber was halt auch schön wäre, ist, dass man das so, dass man halt ganze Alben oder so, nicht unbedingt nur so eine Auswahl, die man noch.
Das ist ja auch Arbeit, das zu machen.
Wenn man möchte, einfach Leuten sagen, so hier, ihr könnt das einfach auch angucken.
Das gab es bisher eigentlich nicht und das kann man auch nicht gut öffentlich über eine Website oder so machen.
Und das ist jetzt drin und das funktioniert eigentlich auch ganz gut.
Und da funktioniert genau das, dass man.
Also es gab auch vorher schon eine Möglichkeit, man konnte so einen iCloud-Sharing-Link erzeugen und da hat man so eine Webansicht gekriegt und da waren auch die Originalgrößendinger drin.
Was die meisten Leute machen, ist wahrscheinlich, sie nehmen einfach den Kram und verschicken ihn vollkommen hemmungslos per WhatsApp oder so.
Und WhatsApp rechnet den Kram dann irgendwie zu.
Gut genug.
Also nehmen die Leute das und machen drei Ausdrucke dafür, hängen sich das in die Wand und sagen, also irgendwie sah das.
Der Typ kann gar nicht fotografieren, das ist ja schrecklich.
Das fällt mir gar nicht auf, das Motiv gefällt dir immer, deswegen hänge ich an die Wand.
Ja, es ist wahr, aber ich will, ja.
Aber es tut manchmal auch ein bisschen weh, wenn man sieht, was Leute so machen.
Mit deinem Auge, mit deinem ästhetischen Anspruch.
Ja, genau.
Also das ist halt das, was Leute tun, ist sehr schrecklich.
Aber es gab bei Mac-Update, wir reden schon schon lange über Mac-Upplates, wo das hier das gefixt ist und wo es irgendwie besser versst.
Es gibt ja jetzt ein Feature, dass das halt fixt.
Aber das hatte ziemlich hackelige Geschichten.
Bei mir jedenfalls war es alles sehr schrecklich.
Hat die ganzen Counts sind alle kaputt gegangen.
Ich habe meine Uhr hat teilweise nur noch die Uhrzeit von gestern angezeigt.
Also es war alles irgendwie, es war
sehr unrund.
Aber dafür in voller Auflösung.
Ja, ich weiß auch nicht.
Also.
Aber weißt du denn, dass es die Uhrzeit von gestern ist,
weil gestern hat er die gleichen Uhrzeiten wie heute.
Ja, ich weiß, wann ich ins Bett gegangen bin und eingeschlafen bin.
Und dann, wenn ich morgens aufwache.
Und dann ist er einfach stehen geblieben.
Genau, und dann ist er stehen geblieben.
Ich dachte, du meinst, er hat jetzt bis 12 Uhr von gestern angezeigt.
Nein, das 12 Uhr von heute.
Das ist eine philosophische Frage.
Ja, so solche
Gestart, ja, Smacey.
Ach ja.
Genau.
Ja, nee, das ist zumindest schon bei den unwichtigen Dingen angekommen, glaube ich.
Ja, ich glaube, wir sind jetzt mit den News tatsächlich durch und wir machen mal das Thema, was wir heute machen wollen.
Ich weiß nicht, wie wir das machen.
Machen wir das jetzt.
Nach zwei Stunden Diskussion fangen wir schon das Thema an.
Wir wollten ganz kurz das.
Machen wir fünf Minuten Listen.
Wir haben es am Anfang versprochen, wir konnten das schon wieder nicht halten.
Wir haben die ganze Zeit gequatscht.
Das müssen wir auch einmal kurz, fünf Minuten noch in das Thema Listen einsteigen.
Okay, machen wir.
Aber vielleicht sollten wir.
Gute, machen wir.
Listen.
Listen?
Wer steigt jetzt ein von uns drei?
Man schreibt doch was rein, man poppt was rauch kann und fährt sich.
Johannes, du kennst dich doch damit aus.
Eine lineare Abfolge von Einträgen.
So, das ist eine Liste.
Und eine Anzahl an Leuten.
Ja, genau, die hat eine, also es ist eine lineare Abfolge.
Es gibt ein erstes Element und ein zweites Element und ein drittes Element und ein viertes Element.
Und vielleicht gibt es auch ein fünftes Element.
Und das hört sich doch an wie was Sinnvolles, oder?
So zum Programmieren, dass man sich mehrere Dinge merken kann.
Ist eine Liste ein Array?
Ist ein String eine Liste?
Und genau, jetzt gibt es zwei Techniken, wie man sich sowas speichern kann.
Das eine ist einfach alles hintereinander.
Und das heißt dann normalerweise Array.
Oder Vektor oder Liste.
Und das andere ist quasi immer mit Verweisen auf das nächste.
Ich habe ein Element in der Hand und das nächste steht an dieser Stelle.
Und das muss dann wieder ein Verweis auf das nächste haben.
Und diese Technik heißt Linklist.
Also eine verknüpfte Liste.
Und die haben sehr unterschiedliche Eigenschaften.
Obwohl sie sich, also von außen sehen die ja gleich aus.
Von außen sage ich, ich gebe mir das dritte Element und dann kriegst du das dritte Element.
Oder gib mir jedes Element nacheinander, so wie wenn man es in Python mit einer Vorschleife hat.
Und das spielt keine Rolle, wie die darunterliegende Implementierung ist.
Ob die jetzt im Speicher alle hintereinander gespeichert sind oder ob die alle irgendwo gespeichert sind und dann nur aufeinander verweisen.
Aber so von den Laufzeiteigenschaften und von den möglichen Operationen oder von den Kosten der möglichen Operationen unterscheiden die sich ja schon sehr deutlich.
Und das ist super interessant, weil es halt so, das Interface so quasi das gleiche ist, aber halt so vom Verhalten extrem unterschiedlich ist.
Und das ist so ein bisschen da der Kernpunkt an dieser Debatte, warum wir da diesem Thema eine Podcast-Episode können, wollten, wollten können oder nicht.
Und es gibt da auch Verfechter auf beiden Seiten, das ist auch ganz interessant, dass da halt Leute sagen, nein, es muss so sein.
Und zwar für beide Möglichkeiten.
Und die
sind auch unterschiedlich schwer zu implementieren und das ist auch ganz interessant.
Deshalb kennen viele Informatikstudenten halt die Datenstruktur Linked List, weil die super einfach zu schreiben ist.
Es ist super einfach, eine Datenstruktur zu schreiben, die Linked List ist, weil du brauchst nur zwei Felder.
Du brauchst ein Feld, das was ich speichern möchte, und ein Feld, das, was das nächste ist.
Also ein Paar eigentlich.
Oder das, was das ist, geht das auch?
Ja, das kannst du machen.
Das heißt dann Doubly-Linked List.
Kann in beide Richtungen durchgehen.
Du kannst sogar tatsächlich so Tricks machen, dass du auf ein späteres Element verweist und dann hast du sowas wie eine Skiplist.
Skiplisten.
Ja, das ist eine meiner Lieblingsdatenstrukturen.
Aber weil die so einfach sind, gibt es die schon sehr lange.
Zum Beispiel Lisp ist im Wesentlichen gebaut aus solchen Linklists.
Da gibt es Car und Cutter, also Content of Address Register und Content of Decrement Register.
Das eine ist das Element, was man speichern möchte, und das andere ist ein Verweis auf die nächste Stelle, wo man was sich merken kann.
Und das reicht schon aus, um eine Linktlist zu machen.
Das reicht schon aus, um sich Sachen zu speichern.
Und das ist ziemlich spannend.
Und es ist sehr leicht, das zu schreiben und deshalb wird das eben oft als Beispiel für eine Datenstruktur benutzt in Informatikvorlesungen, in Einführungsvorlesungen.
Dass man sagt, jetzt schreibt ihr mal eine Linklist.
Und dann fügt mal 100.000 Elemente ein und schaut mal, wie schnell ihr es machen könnt.
Und macht mal Iterationen und macht mal so, dass man in der Mitte was einfügen kann und macht mal so, dass man am Ende was löschen kann und macht mal so, dass man XY und Z machen kann.
Und weil das so einfach ist und weil man es so einfach machen kann, gibt es da dann halt sehr viele schöne Optimierungstechniken.
Zum Beispiel, wie der Dominik schon gesagt hat, Pointer in die andere Richtung speichern, dass man auch von hinten nach vorne durchiterieren kann.
Oder, keine Ahnung, Pointer, die halt in die Mitte zeigen oder die irgendwelche Segmente haben oder Sublisten haben oder sonst irgendwas, wo du halt viele schöne Dinge machen kannst damit.
Oder auch Cycle Detection, ja.
Das ist dann was, was da herausfällt.
Wenn du so eine Liste hast, wo du immer nur aufs nächste Element verweist, kann es ja sein, dass du ein Element hast, was irgendwo an eine andere Stelle in eine Liste reinverweist und dann hast du so einen Kreis in deiner Liste drin.
Und wie machst du Cycle Detection?
Bitte?
Eine Cue.
Eine Cue kannst du auch machen, genau.
Wenn du quasi, da musst du dir nur das erste und das letzte Element merken, damit du dir was einfügen kannst am Ende und was abholen kannst vorne.
Kann man sehr schön und sehr leicht viele Sachen draus bauen.
Auch einen Tree kannst du dir sehr leicht rausbauen.
Hast du halt nicht einen Pointer, den du dir, wo das nächste Element ist, sondern hast du halt zwei Pointer.
Eins zum rechten Child und eins zum linken Child.
Und dann hast du mit wenig Arbeit einen Baum aus deiner Liste gemacht.
Und deshalb ist das so ein bisschen so ein fundamentales Bauteil in den Datenstrukturen.
Aber auf modernen Prozessoren sind Linklists halt brutal langsam, üblicherweise.
Weil du bei jedem Element einen Cash miss hast.
Normalerweise, ja.
Und Cashmisses sind das Schlechteste, was du machen kannst auf modernen Prozessoren.
Was denn das ein Cache ist?
Ja.
Man hat ja im Kopf immer auch die Farbstellen raus.
Genau, Cashmiss ist, wenn du kein Geld bekommst.
Wenn du zu wenig Geld hast.
Nein, man hat ja im Kopf so das Bild, dass ein Computer aus zwei Bauteilen besteht.
Das eine ist der Prozessor und das andere ist der Hauptspeicher und der Prozessor macht irgendwelche Dinge mit den Sachen, die im Hauptspeicher sind.
Und das mag vor 40 Jahren so gewesen sein, aber das ist heutzutage leider nicht mehr so.
Heutzutage gibt es viele verschiedene Ebenen von Speicher.
Und je näher der Speicher am Prozessor ist, umso schneller ist er.
Und umso kleiner ist er.
Das heißt, ein Prozessor hat sogenannte Register, die sind direkt in den Prozessor eingebaut, aber davon gibt es halt nur, keine Ahnung, 16.
Und die
nächste Ebene drüber, die heißt L1 Cache, der Level 1 Cache und davon gibt es dann halt, keine Ahnung, 16 Kilobyte.
Und dann gibt es den L2-Cache und das sind dann halt 128 Kilobyte.
Und dann gibt es den L3-Cache, das sind dann 4 MB.
Und weil die alle sehr klein sind, gibt es danach halt den Hauptspeicher und der hat dann auf einmal, keine Ahnung, je nachdem, wie viel mal er hat.
8 GB oder 16 Gigabyte oder auch 128 GB so spielt keine Rolle.
Und die Ebene dahinter, hinterm Hauptspeicher, ist eigentlich die Festplatte, oder beziehungsweise die SSD, die man jetzt drin hat, die dann halt in Terabyte gemessen wird.
Die im Grunde genommen gar nicht so viel anders ist als das, was im Hauptspeicher drin ist, nur halt langsamer.
So, und jede dieser Ebenen ist immer langsamer.
Um auf ein Register zuzugreifen, das dauert einen Prozessorzyklus.
Um auf den L1-Cache zuzugreifen, dauert, keine Ahnung, vier Prozessorzyklen.
Auf den L2-Cache acht Prozessorzyklen.
Es ist ungefähr bei Kapture
3 dazwischen, ja.
Also bis auf am Schluss wird es mehr, aber mehr.
Bis auf den Hauptspeicher, ja, beim Hauptspeicher plötzlich von.
Genau, da ist eine große Lücke.
Das heißt, es ist gefährlich, Sachen aus dem Hauptspeicher in den Prozessor reinzuholen, um dann Sachen damit zu machen.
Und dieses ganze Schema funktioniert nur deshalb, weil Programme sowas haben, das heißt Lokalität.
Wenn ich eine Speicherzelle bearbeitet habe, dann ist die Wahrscheinlichkeit hoch, dass ich die benachbarten Speicherzellen als nächstes bearbeite.
Und deshalb funktioniert dieses Caching, weil das Caching eben darauf basiert, dass immer ganze Blöcke von Speichern in die Ebene darunter geholt werden.
Das heißt, wenn ich jetzt im Hauptspeicher irgendeine Speicherseite habe, die hat 16 Kilobyte und ich lese da ein Byte draus, dann wird diese ganze Seite in den L3-Cache geholt.
Und das Byte, was ich hole, das wird halt mit so einer Cache Line unterschiedlicher Größe in den L2-Cache geholt und daraus in den L1-Cache und daraus in die Register und in den Registern wird das dann gemacht und dann geht das ganze Spiel wieder zurück.
Das heißt, wenn ich auf benachbarten Speicherzellen operiere, dann muss ich das nur einmal diese Seite aus dem Hauptspeicher in den Prozessor reinholen und die anderen Zugriffe, die sind dann wesentlich schneller.
Wenn ich jetzt aber im Hauptspeicher hin und her springe, so wie es bei einer Linkedlist ist, dann muss ich jedes Mal diese gesamte Speicher, muss ich jedes Mal in den Hauptspeicher gehen.
Und Hauptspeicher ist halt aus der Sicht eines Prozessors extrem langsam.
Also das eine wird in Nanosekunden gemessen und das andere wird in Mikrosekunden gemessen und das ist einfach ein brutal großer Unterschied.
Und deshalb ist die Linklist heutzutage so ein kleines bisschen verpönt, habe ich das Gefühl.
Das ist so, ach, der benutzt LinkedList, der heißt keine Ahnung.
Weil die halt Cache-Misses erzeugen, weil die halt im Speicher hin und her springen.
Die andere Technik, die man machen kann, das heißt oft Array oder Vektor, ist, dass du halt die Elemente alle hintereinander schreibst.
Dass du sagst, das erste Element steht an Speicheradresse 1 und das zweite Element steht an Speicheradresse 2 und das nächste Element steht an Speicheradresse 3 und halt je nachdem, wie groß die Dinger sind, dass du die halt alle aneinander packst.
Aber was das heißt, wenn du durch so ein bisschen drin steht dann nur der Zeiger auf das richtige Objekt drin.
Und unterschiedlich, ja, also genau, es kann halt, was du halt hast.
Sonst hast du ja eine Maximalgröße von Dingen, die da drinstehen können und dann verschwendest du einen Speicherplatz, wenn nicht alle gleich groß sind von den Dingen, die drinstehen und drückt.
Ja, je nachdem, was du halt hast.
Also wenn du eine Liste von Integern hast, dann sind die halt alle 32-Bit groß und dann stehen die halt einfach zack, zack, zack nebeneinander.
Wenn du einen String hast, dann sind die halt alle, keine Ahnung, auch 32-Bit groß, weil man zwischen Unicode macht.
Wenn du Floats hast, hast du halt 32-Bit oder 64-Bit oder 128-Bit-Floats oder was auch immer du hast.
Das ist sozusagen der Nachteil da drin.
Du musst halt die Größe wissen.
Du musst wissen, was du da reintust.
Du kannst auch, wenn du Objekte da reinspeicherst, dann werden das üblicherweise ja Pointer sein zu Objekten, ja, oder halt Verweise.
In Python zum Beispiel, da braucht man gar nicht so richtig drüber sprechen, weil das immer alles nur Verweise sind auf andere Dinge.
Aber ja.
Der Vorteil davon ist halt, wenn du, wenn du, sagen wir mal, ein Array hast mit 128 Integern drin und da das erste Element liest, dann musst du das ja aus dem Hauptspeicher in den L3 holen und dann hast du aber das gesamte Array schon direkt im L3 drin.
Das heißt, die Zugriffe, die dann auf das zweite Element sind, die kosten vergleichsweise gar nichts.
Und das
ist natürlich sehr schön, wenn du Operationen machen kannst, wo die Speicherzugriffe einfach schon gecached sind, wo du schon die Sachen geholt hast.
Und deshalb ist das heutzutage so ein bisschen die Technik, die man eher einsetzt, dass man halt sagt, wir machen Arrays, die zwar an dieser Stelle eben wesentlich schneller sind, aber dafür andere Nachteile haben.
Zum Beispiel ist es bei Arrays schwieriger, Sachen einzufügen und rauszulöschen auch.
Das heißt, dieses Q-Beispiel, was der Dominik sofort intuitiv gesagt hat, ja, das ist ja easy, ja, kannst du hinten einfügen und vorne rausnehmen.
Das ist mit einem Array nicht so einfach umzusetzen.
Und es hat sehr viele Edge Cases, ja.
Selbst also wenn man sich das umsetzen möchte, kann man sich ja überlegen, ja, wenn ich vorne ein Element rausnehme, dann muss ich alle anderen da hinten eins nach vorne schieben.
Das ist aber auch blöd, ja, weil da musste jedes Element anfassen, bloß weil der eins rausgeholt hat.
Und das ist langsamer, wenn es mehr sind.
Das ist eine Python-Listen kann man nicht so gut als quasi so, wenn man da dauernd Sachen hinten raus und vornherein tut oder so.
Das geht mit Python-Listen nicht gut ganz genau aus.
Super schlecht.
Ja, und deswegen sollte
man dafür lieber auch von Collections Deck oder so verwenden.
Also Double-Ended Cue, das geht dort besser.
Oder Queue.
Oder da baut man sich einen zyklischen Puffer.
Hast du eine Liste mit 100 Elementen und hast einen Array, einen Index drin, der das erste und das letzte Element ist.
Aber das ist auch schlecht, ja?
Hast du auch ganz viele Edge Cases?
Was ist, wenn du mehr als 100 Elemente in deiner Que hast?
Was ist, wenn du was ist, wenn die ausläuft?
Das musst du dann abfangen, ja, dass du dann lauter.
Also hast du ganz viele so Edge Cases.
Arrays sind vom Aufbau her simpler, aber in der Verwendung her, von der Verwendung her irgendwie fitzeliger.
Weil die halt so eine feste Struktur haben.
Und das ist so ein bisschen die Sache, ja.
Das ist irgendwie so eine Geschwindigkeitsoptimierung.
Die sind in mancherlei Hinsicht schneller und dann halt auch gleich richtig viel schneller.
Aber dafür holst du dir ganz viele Implementierungsprobleme rein.
Und ja.
Ich bin eigentlich ein Freund von LinkedIns, weil die so schön sind.
Und Skip Lists, ich meine, da braucht man nicht drüber sprechen.
Das ist die coolste Sache der Welt.
Kann man Elemente deaktivieren, quasi.
Nee, was total smart ist.
Genau, eine Skip List ist was total Smartes.
Das ist eigentlich eine Liste, die aber zusätzliche Pointer hat, die durchspringen können.
Und die legst du randomisiert an und dann hast du ähnliche Zugriffszeiten wie bei einem Baum.
Das heißt, du kannst da so eine Art binäre Suche drin machen, aber hast nicht die Verwaltungsprobleme bei einem Baum, sondern du hast einfach randomisiert, ich verweise auf ein späteres Element.
Und man muss ein kleines bisschen mehr Arbeit machen, aber das ist so der Kern der Sache, dass du eben zufällige Skips machst.
Und das ist das Skip in Skiplist.
Dass du halt sagst, okay, ich gehe von Index X auf Index X plus eine zufällige Zahl, die sich dann zwischendurch auch verändern kann.
Die sich verändern kann, wenn du in der Mitte was einfügst oder was rauslösst oder so.
Und das ist vom Programmieren her was total
Simples, gibt
dir aber eben die logarithmische Zugriffszeiten.
Amortisiert statistisch logarithmische Zugriffszeiten.
Und deshalb ist das was total Cooles, das ist sowas völlig Überraschendes.
Als ich das zum ersten Mal gesehen habe, habe ich erst versteht man es nicht.
Warum macht man sowas?
Und dann kommt so ein Aha-Moment und dann versteht man es immer noch nicht, weil das viel zu simpel ist.
Das ist sowas Simples und es gibt einem so Zugriffszeiten wie bei einem Baum, wo man vorher drei Monate mit so scheiß Balancing Red Black Trees verbracht hat.
Und hinterher sagen sie einem, alles, was du hättest machen müssen, wäre randomized da irgendwie durchgehen.
Und wenn du eine sortierte Liste hast und dann mehrere Skip-Ebenen hast, kannst du es sogar garantieren, dass du logarithmische Zugriffszeiten hast.
Tja.
Ja, gibt es schon coole Sachen.
Also Moment, nochmal, was kannst du garantieren, wenn du mehrere.
Ja, wenn du eine sortierte Liste hast, dann kannst du so eine Skip-List haben, wo du auf der untersten Ebene zufällige Skips machst und eine Ebene drüber machst du zufällige Skips auf diesen zufälligen Skips und eine Ebene drüber machst du zufälliges Gips auf dem, bis du in der obersten Ebene quasi vom ersten bis zum letzten Element skips.
Und dann kannst du innerhalb dieser Skip-Ebenen binäre Suche machen.
In der Linked List binäre Suche.
Das ist so ein bisschen wie so ein Reißverschluss.
Genau, also du kannst entweder sagen, du hast das Element gefunden oder du gehst eine Ebene runter und suchst genauer.
Und das gibt dir eben diese logarithmische Zugriffszeit, weil du eben in einem randomisierten binären Baum suchst.
Ist das so etwas wie ein Random Forest?
Aber nicht verwaltet.
Ja, nee, es ist ja kein Binnener.
Ja, nee, es ist so eine so eine randomisierte Granularität, die du da hast.
Okay.
Es gibt verschiedene Ebenen verschiedener Granularität.
Und du hast Zugestalten wie bei einem Baum, musst aber nicht den Baum verwalten und das ist super cool.
Cool.
Ja, es ist tatsächlich wirklich sehr einfach, sich so eine Liste zu schreiben.
So eine ganz einfache LinkedList schreiben ist super easy und jeder sollte das mal ausprobieren.
Und dann auch ein bisschen damit spielen und gucken, wie schnell das ist und wie schnell man es machen kann und was man alles damit machen kann und ob man eine Queue rauskriegt und ob man da sinnvollerweise eine Queue damit rauskriegt und das ist einfach eine schöne Sache.
Ja, Algorithmen und Datenstrukturen.
Genau, das ist so ein bisschen der Grund, warum das in Informatikvorlesungen halt oft vorkommt.
Weil man da sehr einfach, sehr einfach einen Einstieg hat und dann aber trotzdem weit damit kommt.
Und weil es halt so eine fundamentale Datenstruktur ist, muss man auch irgendwie, sollte man schon irgendwie wissen, wie das funktioniert.
Das bringt einem ungeheuer viel.
Ja, und weil man halt direkt auf die Probleme stößt, die halt, ich glaube, das ist auch der, also ich habe mich vorher gefragt, also an, warum wird eigentlich, wenn man Informatik, das sind doch diese coolen Sachen, wo man so Computerspiele macht und irgendwie Grafik und weiß ich nicht, so zu zahlen und sich dahindern und dann wird einer so, also wenn wir jetzt hier, wir beschäftigen uns vor allen Dingen damit, wie man so Listen sortiert und irgendwie Dinge in so Listen wieder sucht und findet und so.
Das macht man jetzt so suchen und sortieren die ganze Zeit.
Und dann, ja, der Grund ist halt schon, dass irgendjemand hat mal, vielleicht war es sogar knut geguckt, also woromit beschäftigen sich Rechner eigentlich so den ganzen Tag und da war es 70%, wann Suchen und Sortieren von Dingen war halt das, was Rechner so machen.
Und ja, das ist heute immer noch so, glaube ich.
Also Listen sortieren ist so.
Ich glaube eher, dass das mehr wird.
Es wird wahrscheinlich sogar mehr.
Das kann gut sein.
Weil man doch mehr Felder gefunden hat, wo man das drauf resultieren kann, dass es das ist.
Weil man mehr Daten hat.
Oh, sortieren und suchen werden auch nochmal so tolle Folgen gewinnen.
Ja.
Das kann man auch.
Mit Linked Lists kann man auch sehr schön Sortieralgorithmen umsetzen.
Und auch das lohnt sich.
Auch das lohnt sich, ja.
Dass man sich mal selber hinsetzt und einfach mal Bubble-Sort implementiert.
Das ist ja sehr einfach, der Algorithmus.
Das stimmt.
Und dann sieht man auch sofort, dass der nur eine Handvoll Operationen benötigt und dass der langsam ist.
Und warum der langsam ist.
Wenn man sich das dann nämlich rausvisualisiert, dann sieht man, was da passiert und das ist großartig.
Oder ein Merge-Sort, ja.
Ein Merge-Sort ist auch vergleichsweise einfach und ist aber eben deutlich schneller als Bubble Sort.
Ich mag total gerne einen LSD-Sort.
Okay, was war das?
Du hast nur zehn Buckets und da packst du die Sachen einfach dann rückwärts, also von der letzten Dezimalstelle immer rein und dann packst du einfach die Buckets zusammen und ist fertig.
Okay.
Nein, das hat damit tatsächlich nicht zu tun.
Leider natürlich.
Aber es ist,
ähm, ich finde
super, weil das kannst du auch mit Kindern machen.
Du kannst einfach Dinge sagen, hey, pack das mal, also ne, so Sortierspiele, pack das mal nach der Reihenfolge da rein.
Und da hast du eine sortierte Liste.
Das ist sehr cool.
Würde ich sagen, es ist eine der Kurzungen.
Und das kann man sehr gut ausprobieren, wenn man sich selber gerade seine Linktlist geschrieben hat.
Deshalb, ich plädiere dafür, dass das jeder mal tut.
Also er sehe ich so das dann Radix, kommt das, ne?
Radix-Sort, ja, das ist ja.
Radix-Ort.
Ja, Radix-Ort ist das finde ich.
Es gibt tatsächlich auch Verfechter heutzutage.
Und man muss halt auch dazu sagen, ja, je nach Anwendungszweck sind Arrays besser oder Linklists.
Also warum ist LSD-Start heißt das?
Least Significant Digital.
Ach so, okay.
Ja gut, hatte ich.
Sorry.
Okay.
Ja, genau.
Es gibt es natürlich auch heute noch.
Ich habe kürzlich einen Artikel gelesen von dem Menschen, der Redis entwickelt hat, der gesagt hat, wir benutzen es an ganz vielen Stellen, weil das ist halt das, was man braucht.
Und auch wenn es so ein kleines bisschen verpönt ist, wenn man so ein bisschen belächelt wird, das ist halt das, was richtig ist.
Und ja.
Er verweist dann auch auf Stellen im Linux-Kernel, wo auch Linklists verwendet werden und sieht es als Indiz, dass es halt das Richtige ist.
Weil das halt das Richtige ist, ja.
Weil das einen Use Case erfüllt, der sinnvoll ist.
Ja.
Ne, durchaus.
Also ich meine, was auch noch so eine interessante Geschichte, also auch eine Frage Linklist oder Array, wie indiziert man eigentlich, wo fängt man an, 0 oder 1?
Und Python macht das richtig, fängt eine Null an.
Korrekt.
Das ist
die einzig wahre Antwort.
Genau.
Warum macht man das nochmal?
Ich hatte hier jemanden dessen, das meintest total furchtbar.
Die ganzen Entwickler machen alle immer falsch, die fangen immer bei 0 anzuziehen.
Ja, also weil du
dann zum Beispiel so nette Sachen machen kannst, wie wenn du also eine Liste in zwei Teile teilen willst und willst sie an der Position 2 teilen, dann sagst du einfach Liste eckige Klammer auf, Doppelpunkt 2, Klammer zu oder Liste eckige Klammer auf 2, Doppelpunkt, eckig Klammer zu und hast dir dann genau an der Position 2 geteilt.
Das ist zum Beispiel ein schöner Effekt davon.
Da gibt es tatsächlich eine alte E-Mail von Guido von Rossum, wo er genau das gefragt wurde, warum er das so gemacht hat und genau diese Antwort kommt, dass er sagt.
Wenn du halt diesen Index wiederverwendest, dann sind die genau lückenlos zusammen.
Ich muss mal schauen, ob ich diesen Link wiederfinde.
Das wäre schön, weil das mein nettes Argument ist.
Sehr schön, ja, der ist auch sehr angenehm zu böden.
Und der sagt auch die anderen Optionen, die du machen kannst.
Und die haben alle auch ihre Index.
Da gibt es ein super Paper von Dijkstra.
Das ist im Original, hat er das handschriftlich aufgeführt.
Er hat er irgendwie eine Diskussion mitbekommen, wo Leute gesagt haben, so die einen sagten, ah, mit 0 anfangen, die anderen mit 1.
Und dann der, der eins gesagt hat, sagt er irgendwann, ah, hat ihn vorgeworfen, ihr seid irgendwie pedantisch, dass ihr da unbedingt auf dieser Null besteht, das ist doch eigentlich ganz egal, wir können irgendwas anfangen zu zählen, sowohl wurscht.
Das erste Element ist das erste Element, nicht das Null.
Und dann meinte er so, ja, also ich habe mir das mal überlegt und jetzt habe ich das mal aufgeschrieben, wie das richtig geht.
Und nee, der mit der 1 liegt falsch.
Und zwar, weil, und dass dann so auf Karo Papier zwei Seiten, die er dann handschriftlich vollgeschrieben hat, hat sich dann zum Beispiel eben, wie man, wie man sagen kann, wie man jetzt, ich glaube, da geht es um, er sagt zwei, also die Folge hat 2,3 Punkt, Punkt, Punkt, 12 oder so.
Wie kann ich die jetzt logisch hinschreiben?
Also überhaupt, ich weiß keine Ahnung, wie da drauf gekommen ist, das so zu machen, aber und dann hat er alle Möglichkeiten, wie man das hinschreiben kann, mit größer, kleiner und so aufgeschrieben und hat gesagt, und ist die dann alle durchgegangen und man hat so, also man könnte jetzt sagen, das wäre gut.
Das hat folgende Vorteile, folgende Nachteile.
Man könnte sagen, das macht man so.
Das ist jetzt auch nicht so gut.
Und dann kommt er dabei raus am Schluss so, ja, nee, man muss mit 0 anfangen.
Das geht sonst nicht.
Ansonsten muss man irgendwie, kommt man, hat man manchmal Vergleiche mit, also mit, wo man dann einen Index minus, also wo Null nicht das Kleinste ist, sondern irgendwas drunter.
Also, also wenn man jetzt da so unnatürliche Zahlen als Index verwendet, das ist irgendwie nicht gut.
Das sollte man nicht machen.
Also es ist wirklich, es ist auch sehr amüsant zu lesen.
Aber es ist auch sehr überzeugend.
Also am Schluss so, ja, stimmt, musst du mit 0 initiieren, das geht nicht anders.
Und ja, am Schluss endet das diese, diese, diese, diese zwei Seiten, die er geschrieben hat, endet auch mit sehr schönem Zitat, wo er dann schreibt ihr, ja, ich weiß jetzt gar nicht, von wem das zieht ja da irgendjemand anders.
Man meinte so, ja, also warum regen sich die Leute an so einer Stelle dann immer darüber auf und werfen dann vor, dass da Leute pedantisch sind.
Das ist deswegen, weil so soziale Exklusion muss man halt, wenn es um so religiöse Überzeugungen geht, immer dann besonders machen.
Nicht deswegen, weil man Angst davor hat, dass andere Leute vielleicht was Falsches denken könnten, sondern der eigentliche Grund ist, die Möglichkeit, dass sie recht haben könnten.
Deswegen muss man da besonders drauf hauen.
Und das ist halt, ja, das muss man aus.
Also das muss man ausschließen.
Ja, genau.
Wenn man, ja, super.
Ja, also da kann man das mal nachlesen.
Das müsste auch unbedingt nicht rausfinden.
Ja, genau.
Was ich auch manchmal gerne mache, ist, man kann, wenn man jetzt in einer Liste so bestimmte Teile markieren will, da kann man natürlich irgendwie Liste, klicke ich mal auf, anfangen, Doppelpunkt Ende hinschreiben.
Man kann aber auch, es gibt irgendwie ein Build in Slice, wo man sagen kann, Slice irgendwie Anfangen, Ende, Komma, und dann kann man ihm einen Namen geben.
Und dann kann man das Ding direkt reintun.
Das heißt, man kann sagen, irgendwie, das ist jetzt irgendwie die, weiß ich nicht, der Name oder sowas.
Und dann gibt dann sagt man einen groß geschriebenen Name gleich Slice 5,12 Klammer zu.
Und dann kann man hinterher sagen, Liste, Ecke Klammer auf, Name, Ecke Klammer zu.
Das ist manchmal ganz nett.
Ja, genau, es gibt natürlich noch diverse Geschichten in Python, auch die eher so mit Arrays zu tun haben.
Es gibt das Array-Array-Modul, also das Array-Modul in der Standardbibliothek immer sehr schön.
Da kann man dann tatsächlich solche Sachen, die alle den gleichen Typ haben, reinschreiben.
Es gibt auch die Verallgemeinerung davon.
Sind das sowas, was die Indizes dann direkt mit drin
oder sowas?
Indizes, äh, meinst, dass man da irgendwie dann Dinge drin suchen kann oder.
Ja, zum Beispiel oder Zugriff direkt, aber die Dinge.
Ne, das
ist nur, das sind nur dann einfache Arrays.
Also dafür sowas kannst du dann Panas oder NumPy oder so.
Okay, muss ich ja direkt immer enumeraten oder so.
Aber es gibt Memory Views.
Memory Views sind dafür da, dass man halt so Daten, die halt irgendwie im Hauptsprecher zusammenliegen, irgendwie durch die Gegend schieben kann, ohne dass man jetzt exakt dran schreibt, was das jetzt ist, sondern man kann die Daten einfach in der Gegend rumschieben und dann ist es halt ein Memory View und dann kann man aus dem Memory View wieder irgendwas anderes machen.
Ein NumPy-Array oder halt ein Array oder sonst irgendwas, indem man dann halt dazu sagt, so du bist jetzt, du hast jetzt irgendwie folgende Struktur und dann kann man halt auch so, also dann kann halt das auch multidimensional werden oder so.
Aber wichtig ist oft, dass man das Ding als gesamten Block im Hauptsprecher irgendwie verschieben, rumschieben kann.
Und dafür sind Memory-Views ganz gut.
Das ist auch ganz nett.
Muss natürlich in den Hauptsprecher passen.
Ja, wenn es nicht reinpasst, dann gut, dann muss man was anderes machen.
Der IBIS oder so.
Was auch nett ist, ist, wenn man die NumPy macht da auch noch viele magische Geschichten mit.
Man kann ja jetzt auch mehrere Sachen, wenn er jetzt mehrdimensionale Arrays hat, das gibt es, sowas gibt es nicht in der Standardbibliothek.
Aber es gibt halt die Möglichkeit, das zu benutzen.
Also das sieht Python schon vor, auch wenn es jetzt nirgendwo keine Objekte in der Standardbibliothek implementiert, dieses Interface.
Dass du halt sagst, Index Doppelpunkt irgendwas, Komma und dann die nächste Dimension.
Das macht in Ampai halt, kann man auch verwenden, und ein Ding, das man da häufig sieht, was halt komisch aussieht, man kann auch statt, also wenn man jetzt sowas schreiben würde wie x-Klammer auf I, Komma und dann Doppelpunkt, Komma, Doppelpunkt, Komma, Doppelpunkt irgendwie, um halt nur eine bestimmte, also eine bestimmte Division rauszuziehen und genau alle anderen Sachen halt dann beliebig zu lassen, dann kann man dafür auch Ellipsis verwenden und einfach K
lammer auf I, Punkt, Punkt, Punkt schreiben.
Das sieht man häufig und dann, also hat
mich am Anfang total verloren.
Hä, was ist das denn?
Ja.
Kann man sich auch noch mal ein bisschen was sparen.
Was gibt es sonst?
Noch ein Nennenswertes über Listen zu sagen.
Ich glaube, du musst einfach noch ganz kurz über Ellipsis was sagen, weil vielleicht ist das immer noch nicht angefangen.
Ja, das ist sowieso so ein interessantes Spezialding.
Also ich sehe das relativ häufig, ich benutze das auch mal, wenn ich
was fertig machen möchte.
Einfach so als Platzhalter meinem Kopf.
Aber es ist nicht so ganz richtig verwendet.
Man kann einfach drei Punkte machen, irgendwo in Python und das.
Genau, es gibt auch ausschreiben als Ellipsis.
Das funktioniert erstmal wie ein Pass, oder?
Wenn du einfach
nur drei Punkte schreibst, ist es wie ein Pass.
Genau, aber es fällt sich in manchen anderen Kontexten halt manchmal so ein bisschen anders.
Man kann es auch, also in Typen-Annotationen wird es häufig verwendet für, da steht halt halt irgendwas, irgendwie, keine Ahnung.
Oder halt eben, ja, in diesen in den Index-Geschichten, man kann auch Ellipsis einfach tatsächlich ausschreiben.
Und wenn man jetzt sagt, Punkt, Punkt, Punkt ist Ellipsis, dann sagt Python halt true.
Das ist halt das gleiche Objekt.
Ja.
Genau.
Ja, aber es ist halt irgendwie komisch.
Es sieht anders aus als andere Sachen und man weiß oft nicht so genau, was das denn sein soll.
Ja.
Ja, ja, ja, ja.
Ansonsten, ich weiß nicht, was noch ganz interessant ist, dass Sorted irgendwie eine Kopie macht, das sollte man vielleicht wissen.
Das kann einem böse beißen, wenn man das nicht weiß.
Also man
kann halt wieder.
Ja, ja, ist extra
so, aber genau.
Sonst kann man ja Punktsorten.
Punkt Sorten macht es halt
in place, genau.
Ja.
Auch das sorgt oft für Verwirrung, weil Punktsort gibt nämlich nichts zurück.
Genau, was dazu führt, dass man es nicht trainen kann.
Und wenn man halt aus der Data
Science Welt kommt und dann ist man
plötzlich in der anderen Welt, dann kommt, kriegen
Leute plötzlich irgendwie seltsame Probleme.
Ja, ja, ja.
Ja.
Aber ansonsten.
Mir fällt jetzt auch ehrlich gesagt nicht mehr viel ein.
Weiß ich, wenn ich immer noch eine gute Idee hatte.
Listen, Listen, noch was Listen.
Auf der Liste nicht mehr genug drauf.
Mehr habe ich hier nicht.
Ja, aber ich würde sagen, das ging doch jetzt einigermaßen flott.
Das ging erstaunlich flott jetzt von.
Wir warten jetzt auf die Rückfragen und beantworten Passode zu listen, alle Rückfragen zu listen.
Ja, also ihr wisst ja immer wie feedback wie immer, hallo.pythonpodcast.de.
Ja.
Dürft uns gerne schreiben, wenn ihr irgendwie Feedback-Anregung, Kritik, Beleidigung zuwerfen wollt.
Hatten wir auch schon.
Ihr seltsam.
Wir haben ganz viel tolle Post.
Vielen Dank dafür immer.
Das mögen wir sehr gerne, aber manchmal auch nicht.
Es gibt ein sehr schönes Buch von John Skalzi mit dem Titel Your Hate Mail Will Be Graded.
Wo er einfach Briefe, die er bekommen hat, veröffentlicht und kommentiert.
Das ist
auch eine sehr
interessante Art, damit umzugehen, ja.
Genau, wenn man
das öffentlich
sagt, dass man das tut, dann kriegt man
auch weniger.
Ich mache Profit aus den Sachen, die ihr mir schickt.
Ich finde es fair.
Ja.
Wir haben noch unseren Pick der Woche, des Monats der Episode.
Okay, ja.
Ja, ich habe einen.
Ah, du hast einen.
Ich habe mir extra einen ausgedacht.
Ist eine Python-Bibliothek.
OpenAI Whisper.
Ah, okay.
Vorsicht, nicht Pip Install Whisper.
Das ist was anderes, sondern man muss das aus dem GitHub-Repo installieren.
Ist ein trainiertes Modell zur Spracherkennung.
Das heißt, dem gibt mal ein WAV-File oder ein MP3 oder sonst irgendwas und der gibt einem den Text, der da gesagt wurde.
Cool.
Zurück.
Und es funktioniert erstaunlich gut.
Und es funktioniert auch erstaunlich einfach, weil man hat ja oft so ein bisschen, also ich habe oft so ein bisschen Berührungsangst, ja, wenn dann irgendwo steht, ja, hier ist ein Modell veröffentlicht worden.
Es ist tatsächlich einfach nur Pip Installer.
Also von Pipeline Modelle gibt es sowieso so coole Sachen, ne?
Und dann drei Zeilen Code und dann tatsächlich Spracherkennung.
Und das hat, also ich habe es ausprobiert und es funktioniert echt gar nicht gut.
Das funktioniert auch mit Deutsch irgendwie
halbwegs oder?
Ja, funktioniert auch mit Deutsch.
Es gibt verschiedene Modelle, die für die verschiedenen Sprachen eingestellt sind.
Und es hat tatsächlich mit Deutsch so gut funktioniert.
Also ich habe Lore im Ipsum rein geschrieben, reingesagt und er hat dann deutsche Wörter daraus rausgehört.
Also kennt ihr so ein paar Sachen?
Es gibt aber diese ganzen Machine Learning-Tools, es gibt ja irgendwie so ein paar, ich nenne es jetzt mal High-Level-Rapper, Radio zum Beispiel oder so, wo man einfach so eine App deployen kann, die direkt mit so einem Webinterface läuft, wo man dann so ein Modell hat, was man dann direkt benutzt werden kann, irgendwie mit so einem Easy-Webinterface und sowas, das ist halt total nett zum Dämonen oder Pocken oder MVPen oder sowas.
Ja.
Vielleicht eine Kombination mit Streamlit, falls sie das kennen?
Das macht auch so Web-Apps und für so Data Science-Krams hast du dann direkt irgendwie Überblick über, weiß ich nicht, Analytics, Data Exploration und dann kannst du direkt das Modell speichern.
Da kommen jetzt schon wieder meine Berührungsängste, die ich gerade gesagt habe, weil das so kompliziert ist, da den Einstieg zu finden.
Ja, da müssen wir vielleicht mal eine eigene Folge zu machen.
Das wäre nicht mein Pick, aber das hat mich gerade sehr daran erinnert, dass du so eine schöne kleine, schnelle Benutzung von so einem Modell hat.
Zum Beispiel, Gradeo nutzt jetzt komplett Hugging Face.
Du kannst halt da Zugriff über zwei Zeilen Python-Code auf, weiß ich, 10.000 Modelle oder so vortrainierte.
Und die da einfach direkt benutzt und hast, das ist sehr geil.
Ja, auch sehr cool.
Ja, ist auf jeden Fall.
Ja, genau.
Ist mir auch schon aufgefallen, viele Leute packen das auch auf ihre GitHub-Repos und so.
Ja.
Was auch ganz interessant ist, glaubt da, jetzt habe ich das wieder ein bisschen vergessen, leider, ich habe mich mit diesem Audio, ich habe mich ja schon so ein bisschen damit beschäftigt.
Mit dieser Automatic Speech Recognition und früher, damals.
Also ganz, ganz früher, so 2015, 16.
Als die Deep Speech wurde.
So lange her, im Mittel.
Also es gab einen Riesenfortschritt, also irgendwie niemand hat das richtig hingekriegt, weil irgendwie hat halt alles nicht funktioniert.
Und die ersten Modelle, die so richtig gut funktioniert haben, auch Deep Learning angewendet auf Speech Recognition, waren halt Deep Speech 1, 2 für Englisch, Chinesisch.
Und genau, dann gab es immer da so Verbesserungen und so, aber das Problem immer für Deutsch hat das nie funktioniert, weil, beziehungsweise es gibt ein paar Firmen, die konnten das gut machen, irgendwie Microsoft, Google, Apple, Amazon, weil sie halt die Trainingsdaten dafür haben.
Die einen dadurch, dass sie halt Telefone verkaufen, wo die Leute reinquatschen, und die anderen dadurch, dass sie halt irgendwie den Leuten so irgendwie Lautsprecher irgendwie in die Wohnung stellen oder weiß ich nicht.
Und ja, die konnten das halt machen, aber alle anderen eigentlich nicht, weil die Trainingsdaten gab es halt nicht.
Und dann gibt es dieses tolle Common Voice-Projekt von Mozilla, wo dann halt sozusagen so Datenspenden gesammelt wurden, dass man konnte man halt irgendwie ein paar Sätze sagen, die einem vorgegeben wurden, und dann wurde das halt als Trainings, wurden das halt als Trainingsdaten verwendet für dieses Common Voice, für diesen Trainingsdatenkorpus.
Und die haben auch selber ein Modell trainiert, das halt basierte, glaube ich, auf Deep Speech und das dann halt auf so eine Word-Arrow-Rate gekommen ist, die halt relativ gut ist, um halt Leuten anbieten zu können, okay, ihr könnt die Spracherkennung auch direkt auf eurem Raspberry Pi oder so machen und müsst es nicht irgendwie an eine Google-Api schicken, weil das ist eigentlich ja schon nicht so geil.
Weil die können einen dann ja quasi ausnehmen, wenn man irgendwie selber ein Produkt baut oder so, muss immer eine Google-Api fragen, dann sagt Google irgendwann so, ihr habt ja nett eine Gewinne, macht ihr da, wir hätten auch mal gerne was von ab.
Ja, und die können
alle noch schlimmer, finde ich, die können einfach.
Gerade wenn denen was passiert.
Genau.
Und das ist ja auch irgendwie so Mozilla irgendwie so ein bisschen der Zweck, dass man das so ein bisschen irgendwie auch den Leuten ermöglicht, dass sie was tun können.
Und also eigentlich alles super gut, aber es gab halt nicht genug Trainingsdaten für Deutsch, dass man das hätte irgendwie wirklich trainieren können.
Aber inzwischen gibt es halt große Fortschritte und zwar, das war ja auch schon bei den Natural Language Processing Modellen so, dass der Riesenschritt zu, oh mein Gott, man kann jetzt da Dinge machen, die früher waren, eigentlich eher diese Self-Supervised-Geschichten, dass man halt die Modelle dadurch trainiert hat, dass man denen Lückentexte gegeben hat und man gibt ihnen einfach irgendwelchen Text, trainiert das Modell dadurch, dass man es quasi voraussagen lässt, welches Wort in dieser Lücke gestanden hat
und es dann halt belohnt oder bestraft, je nachdem, wie nah das da halt dran war.
Und das heißt, man kann plötzlich, und dann kann man dieses Modell verwenden für was ganz anderes.
Ja, aber um dieses Problem Lückentext ausfüllen, irgendwie hinzubekommen, muss das Modell halt quasi ganz viel über die Sprache lernen und auch über die Konzepte, die da drin sind.
Und eigentlich muss es die fast verstehen können.
Sonst kann es das halt nicht gut tun.
Deswegen, und wenn man das Modell halt dann lang genug mit genug Texten, so aus dem ganzen Internet, halt prügelt, dann kannst du das halt irgendwann.
Und dann kann man das aber für andere Sachen verwenden, wie für das Problem, was man eigentlich lösen will, was ja vielleicht was ganz anderes ist.
Funktioniert dann aber immer noch super.
Und so ähnlich funktioniert das mit dem Audiogram auch.
Und zwar, ich weiß jetzt, die genauen Verfahren kenne ich jetzt alle nicht.
Ich habe mir das mal, ich hab's wieder inzwischen wieder vergessen.
Da haben Leute das auf irgendwie, weiß ich nicht, tausenden und Millionen Stunden, irgendwie, ich glaube ein paar hunderttausend Stunden YouTube-Videos trainiert.
Self-supervised und dann nur ein paar annotierte Trainingsbeispiele für irgendwie, also dieses Audio war übrigens jetzt folgender Satz.
Und das hat dann auch schon super funktioniert.
Das heißt, quasi, die Dinger haben self-supervised auf unfassbaren Mengen Audio gelernt, was halt so Audio ist und wie das funktioniert, wie Sprache so funktioniert.
Also die in Form der Audio quasi Repräsentation.
Und dann hat man dieses gelernte Modell benutzt, um halt zu
Transkription dann nochmal durch.
Ja, dann wirklich halt daraus Text zu machen.
Und das funktioniert total super.
Also die Modelle sind alle inzwischen nochmal viel besser als Deep Speech und so.
Und du brauchst nicht mal diese gigantischen Trainingsdatenmengen.
Das heißt, ja, eigentlich ist es quasi, dieses Problem ist mehr oder weniger gelöst.
Es ist halt jetzt nur so eine Frage, wie kriegt man das gut irgendwie so umgesetzt, dass es halt gut funktioniert.
Also es gibt ein Modell, das halt super gute Genauigkeit hat, aber das braucht halt irre lange.
Also bei mir braucht das halt pro Faktor 30 irgendwie von, also wenn du 10 Sekunden Audio hast, brauchst du es halt Faktor 30, um halt einen Text rauszumachen.
Das kann man praktisch nicht so gut verwenden, weil es einfach.
Eigentlich muss ja echt Zeit sein, damit es.
Und es braucht dann auch viel Hauptspeicher
und viel und
so weiter.
Genau.
Also, aber das wird ja alles auch noch besser,
denke ich mal.
Also bei diesem Whisper sind verschiedene Modelle dabei und ich habe jetzt nur das Tiny-Modell ausprobiert.
Das hat einen Faktor ungefähr von 0,2.
Das heißt, in deine 30 Sekunden Audio hättest du dann eben in fünf Sekunden, in sechs Sekunden durchtranskribiert.
Und ich war von der Qualität sehr positiv überrascht.
Für so ein kleines Modell sehr, sehr positiv überrascht, dass das so gut funktioniert.
Also musst du auf jeden Fall mal ausprobieren.
Ja, für Podcasts eigentlich ganz uninteressant, ja.
Und wie gesagt, da gibt es halt mehrere Größen, je nachdem, wie viel du runterladen willst und wie viele Grafikkarten du zu verbrennen hast.
Oh, hm.
Und kannst du anschauen.
Die kleinen Modelle laufen auch alle auf CPU und das ist ziemlich cool.
Bitte?
Hast du auch einen Blick?
Oh, ja, ich dachte, ich wollte das Specialist picken, aber das habe ich ja jetzt schon verbrannt.
Mist.
Ich habe gerade immer noch geguckt.
Es gibt eine andere Geschichte, die halt.
Also wenn man irgendwie mal gucken will, welche Sachen im Code langsam oder schnell sind, gibt es schöne Profile inzwischen, hat sich einiges getan.
Und ein wirklich netter Skalin.
Genau, packe ich auch nicht so Shownotes, da kann man echt eine Menge sehen.
Ich habe wieder so einen kleinen Pack und ich habe Pure Magic entdeckt.
Fand ich ganz cool.
Aus der Standard-Lib kann man auf Falt schmeißen und weiß dann so ein bisschen, was das denn für ein Dateiformat sein könnte oder so.
Die Magic, ach, ah, Magic Numbers.
Mögliche Extension
raus oder so, genau.
Description, Confidence und so.
Cool.
Und das ist in der Standard-Lib.
Ja, Pure Magic, ja.
Das ist ja Hammer.
Oder ist das alles?
Ich weiß nicht, ist das eine Standard-Lib?
Keine Ahnung, ich werde es nachgucken.
Ja, es ist bei PyPI auf jeden Fall.
Aber mir ist das auch in den Show Notes.
Weil ich darauf kam, weil ich diesen Pap gelesen habe von Christian Heimes, wo halt dann drunter hat, welche denn die Pakete sind, die jetzt ersetzen können, die aus der Standard-Teptik deprecated worden sind.
Ich glaube, Priomatic ist vielleicht nicht drin, aber.
Nee, das ist ein externes, aber genau.
Aber das macht genau das, was ich mir da vorgeschlagen habe.
Okay.
Ja, das ist ja auch interessant.
Cool, cool, cool.
Ich habe noch einen zweiten Pick in Anführungszeichen.
Weil es zum Thema des heutigen Abends sehr gut passt.
Oh, Mannybell.
Manybell.se Das ist ein soziales Netzwerk, so ähnlich wie Facebook, aber es läuft immer nur lokal auf dem eigenen Telefon.
Und Datenaustausch funktioniert nur über Bluetooth mit Geräten, die in der Nähe sind.
Das heißt, die Posts, die man dann schreibt, die verbreiten sich dann eben langsam in der sozialen Hülle, die halt in der Nähe ist.
Witzig.
Und das finde ich ein sehr schönes Gegenmodell zu dem, was man sonst so hat.
Ja.
Nur Peer-to-Peer, die so.
Das hat ja sicherlich keins laufen lassen.
Also das für die Leute, die nicht miteinander reden, sondern nebeneinander auf ihren Handys rumhacken, oder?
Genau.
Wenn man sich Bilder teilen möchte, dann ist es.
Nein, aber das, also ich meine, wenn du jemanden kennst, der jemanden kennt, der jemanden kennt, der jemanden kennt, dann kannst du auch bei dem die Posts sehen, aber halt erst langsamer.
Okay.
Die verbreiten sich dann eben durch dieses Netzwerk durch.
Okay.
Das finde ich irgendwie so.
Aber verbreiten sich alle zu allen?
Also geht das dann weiter?
Wird das dann von den Notes irgendwie.
Nee, ich glaube, ich weiß nicht genau, wie die das gelöst haben.
Aber man kann irgendwie halt folgen und das muss ja dann irgendwie schließlich da ankommen.
Also es wird irgendwie so ein, keine Ahnung, Distributed Hashtable Routing sein.
Was da halt langsam hin konvergiert.
Interessant, oder?
Okay.
Aber ich glaube, das haben wir es heute tatsächlich dann doch geschafft.
Vielen Dank, dass ihr alle bis hierhin durchgehalten habt und ich fand zwar eine schöne Folge.
Hat mir viel Spaß gemacht.
Vielen Dank, Johannes, dass du wieder dabei warst.
Ja.
Ja, voll gut.
Ja, sehr gerne.
Mir hat es auch viel Spaß gemacht.
Ja, danke, Jochen.
Und ich freue mich schon auf die nächste Listenfolge.
Bleibt uns gewogen und hört uns zu.
Ja, vielen Dank für eure Aufmerksamkeit.
Haha, bis später.
Tschüss.