Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, Episode 46 heute.
Heute soll es bei uns gehen um Python 3.11 und um Listen.
Johannes ist hier dabei, hi Johannes.
Hallo Johannes.
Hallo Jochen.
Ja, herzlich willkommen, Dominik.
Hi.
Ja, wir haben uns ein bisschen Zeit gelassen 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 Release? Wie fandet ihr Python 3.11?
Habt ihr es schon ausprobiert?
Ja, 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 mehr,
normalerweise muss man am Anfang immer irgendwie alle Dinge
dann neu komponieren und so, das war jetzt
mir gar nicht aufgefallen, dass das irgendwie
und die Programmiersprache Python.
nach wenigen Wochen
Benutzung auch schon.
Wie du hast Spacepacks, Jochen, wenn du Fotos hast?
Ja, ja, ja.
Auf 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.
Es zeigt einem relativ direkt,
wo was kaputt ist und
das ist wirklich sehr hilfreich.
Und kommen wir dazu mit Rich, dann zum Beispiel Rich Spacepacks,
sehr toll.
Pip kann auch Rich, übrigens.
Kennt ihr das?
Wenn Rich installiert ist, nutzt Pip automatisch Rich.
Ja, und dann hat man so farbige
Progress Bars und sowas.
Wundervoll, ich stehe auf sowas.
Alles nur Eye Candy.
Ja, aber
es sieht schon alles besser aus, wenn wir sagen, als früher.
Früher mussten wir ja unsere
Pakete mit der Brieftaube
geschickt bekommen.
Das Deal ist ja alles.
Wenn wir das nicht gebraucht haben,
dann kriegen die Kinder das von heute auch nicht.
Ich habe mich mal kennengelernt, der aus den 80er Jahren berichtete von C und so, wie furchtbar das alles war.
Das ist bei C, glaube ich, heute immer noch so.
Dass ich die wirklich verbessere.
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 C-Unterbau etwas gearbeitet worden ist.
Naja, es ist ja das Release von C-Python-Interpreter.
Ja, aber
genau, also ja, es ist halt
einiges, also es ist echt
viel passiert und
Das ist schneller, oder?
Das ist immer der Grund, warum man Leuten empfiehlt
auf neue Python zu gehen
Das ist wirklich viel, viel schneller, also nicht überall
aber in vielen Anwendungen ist es wirklich deutlich
performanter geworden
So viel 20-25%
wunkelt man
Also je nach Anwendung kommt es halt darauf an
also es kann auch deutlich mehr sein noch
also, aber es ist insgesamt
überall ist 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.11 irgendwie
und die
und Jochen unterhalten sich über die Programmiersprache Python
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 dem
richtigen Release funktionieren. Das muss man halt
früh genug machen, sonst hat man halt nicht genug
fertig kompilierte
Binary, sonst ist das 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 dann 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 weil halt, naja,
auch was halt für diese
Performance-Optimierungen verantwortlich ist,
dass halt
Dinge halt nicht mehr
so gemacht werden, also sie werden
eine Zeit lang ganz normal so
interpretiert, der Interpreter-Widecode
so wie er normalerweise interpretiert wird.
und wenn das dann achtmal passiert ist oder so,
dann sagt er halt, okay, jetzt schalte ich auf etwas anderes um.
Ist mir das zu blöd? Habe ich das achtmal gemacht?
Mache ich nicht nochmal? Und nimmt halt eine spezialisierte
Version davon, die halt dann zum Beispiel
Integer addiert
oder Floats addiert und dann
das halt nicht mit Objekten macht, sondern direkt
irgendwie auf dem Prozessor.
Und das geht auch meistens
gut, aber dann so, es gab halt so fiese
Bugs wie, naja, also das
passiert zum Beispiel auch beim Attribut-Access und
dann manchmal ist es halt so, dann
funktioniert dann die ersten acht Attribut-Accesse
funktionieren halt und beim
neunten Mal wird halt
die Klassenvariable genommen, also wenn du
zum Beispiel, das machen ja viele Leute,
dass sie halt in der Klasse halt
sozusagen die Parameter, die ein Objekt bekommt, definieren
und wenn du dann eine Instanz
machst, instanzierst das Ding,
dann überschreibst du das. Und die Instanz
Variablen, also wenn Attribute an der 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 Bug Report rein und da war einer so
und Jochen unterhalten sich über die Programmiersprache Python
Fallbacks.
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, den zu fixen,
ohne die C-Api nochmal anfassen zu müssen
und naja, also alles ganz, ganz schrecklich.
Ja, der hat auf jeden Fall
sehr gejammert,
dass das alles diesmal sehr, sehr schlimm gewesen wäre.
Aber, naja, gut,
es hat halt trotzdem funktioniert, also insofern.
Ja.
Aber das ist so ein Problem, oder, wenn zu viele Leute
an einer Software arbeiten, dass dann
halt irgendwie doch schwieriger ist
oder stressiger oder so.
Ja.
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 es einfach da
so Sachen, die so ineinander greifen.
Also das ist meine Erfahrung, ich weiß nicht, wie es
euch da geht. Ja, ja, absolut.
Die Komplizität, auch wenn mehr Leute an einem Projekt
sind, steigt nicht linear, sondern
irgendwie
bösartiger. Exponentiell.
Exponentiell weiß ich jetzt auch nicht.
Aber irgendwie dieser.
Also fünf Leute geht noch, oder?
Sechs, sieben geht vielleicht auch.
Ja, da muss man dann schon
Prozesse haben und so.
Und ganz schlimm wird es,
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,
Da gibt es dann ja auch irgendwie diverse Dinge, 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 ein gutes Team hast, das kleiner ist, dann kann das eigentlich
fast immer schneller sein, als egal, wie viele Leute du drauf riffst,
weil das kriegst du eh nicht mehr organisiert.
Naja, keine Ahnung.
Was für eine optimale Teamgröße würdest du sagen, Jochen?
Da fünf oder so was.
Ich würde sagen vier.
4, warum 4?
Weil 5 schon zu groß ist
5 ist ein großes Team schon
4 ist ein mittleres Team, 3 ist ein kleines Team
das ist super
und alles über 5 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 4 Leuten die Kommunikation mit dem Kunden mit drin?
bei den 4?
Oder macht das noch jemand mit Managing ein Projekt?
Das kommt aus dem Projekt
an.
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.
Aber die Software-Community ist ja kein
Kunden.
Du musst ja auch Kommunikation machen.
Du hast ja auch eine Product-Ownership
in gewisser Weise.
Nö.
Die Community
muss das halt annehmen.
Da ist man ja sozusagen, das ist ja ein schöner Fall eigentlich.
Also ich würde ja denken, Produktmanagement
ist halt Marketing.
Ja, so würde ich das nicht sehen. Ich würde jetzt nicht
Marketing gucken, das geht nur um die
Kommunikationsschnellen mit dem Kunden, also jemand, der
quasi User-Stories baut und die koordiniert.
Ja, aber was soll ich so User-Stories geben?
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, ist halt eine Marketingrolle
und das halt produktlöslich mal
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, also wie kann das
jeder...
für den ich auch selber User-Stories
und Tustins 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, auch für meine privaten Projekte.
Natürlich, auch für Skripte, so
100-Zeiten-Skripte erstmal eine User-Story
geschrieben, erstmal ein Epic.
Ja, weiß ich nicht.
Da war es doch die Accountability dann,
die Responsibility, Jochen, bist du auch selber für dich
in Biddable.
Ja, also
kannst du dir 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
dran entwickeln, ist es halt schwierig und
sie hatten ja, es gab ja schon mal
in Python 3.9
beziehungsweise in 3.10 ist es dann halt
aktiv geworden. Der Packparser ist halt ja auch die
interna, so quasi hat sich ein zentraler
Teil von Python
halt irgendwie komplett einmal
irgendwie auf links gedreht worden.
Das hat aber einfach so funktioniert.
Das ist nicht irgendwie quasi so
fies, hat nicht so fiese
Konsequenzen gehabt wie jetzt, aber ich meine, manchmal hat man halt
auch einfach Glück oder Pech, das kann natürlich auch sein.
Also, das ist halt...
Irgendwer hat 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 Möglichkeiten, wie es
schief gehen kann und dann ist natürlich auch die Wahrscheinlichkeit
einfach höher, dass es irgendwo kracht.
Ich war mal in so einem Projekt
und das war schon
so ein bisschen verspätet und dann
kam irgendwann der Projektmanager,
der Produkt oder was auch immer für
Manager, hat gesagt, also
wir haben
einen sehr engen Zeitplan, ab jetzt dürfen wir keine Fehler
mehr machen.
Unsere Reaktion war dann, ach so,
na gut, jetzt
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 weghockt,
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 ein.
Ja.
Das ist genau wie so eine Schätzung von so einem Softwareprojekt.
Hm, was brauchst du denn dafür?
und Jochen unterhalten sich über die Programmiersprache Python
Prozesse, 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 das 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...
Einfache Sachen.
Ja, genau.
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.
Wert, wie auch immer man das definiert, aber
man hat ja irgendeine Vorstellung von dem,
was Wert bringt.
Ja, provisieren an irgendwelche Aufgaben und wollen, dass die Aufgaben fertiggestellt sind.
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 du 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
und du ihnen auf die Finger haust, sie 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 Information
liegt und wer
was machen kann, ja bitte, Entschuldigung.
Ja, aber das
führt halt dazu, dass dein 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.
Ich würde anders maximieren, Jochen.
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
Aus Business-Perspektive ist das nicht so sinnvoll.
Aus meiner Perspektive
ist das schon ganz schlecht.
Ja, ich glaube,
das sind ja nur
ein anderer Fall.
Aber selbst
keine Annahme, 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 das ist halt schon echt schlecht. Also wenn man jetzt noch
zusätzlich annimmt,
die Leute sind bösartig, okay.
Dann weiß ich nicht, aber das ist ja nochmal
ein anderes Problem. Aber selbst wenn sich alle
gutartig verhalten und alle nur das Beste
wollen, funktioniert das halt schon nicht mehr.
Also die Frage ist halt schon, wenn du halt gemeinsam kooperativ
arbeiten willst, dann musst du ja quasi davon ausgehen,
dass du Vertrauen den Leuten entgegenbringen musst.
und dafür ist das ja schon irgendwie
Quatsch, unter 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 or buy und sowas, all das halt, ne?
Ja, aber...
Du hast ja auch oft viele Business-Sachen, die da drin hängen,
du Marketing und Fremdsysteme
und Kundenkontakt und so.
Ja.
und dann muss der Sachen ankündigen.
Jahresbudget.
Ja, am Ende können wir.
Genau, Jahresbudget.
Und manchmal hast du auch gesetzliche Vorgaben.
Ich arbeite ja 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
hinzugeht, 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 drin.
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 sozusagen die
Die Marketingpreise, ich dachte du magst Marketing nicht
Jaja
Doch, ich mag schon Marketing
Wie hoch ist deine Schätzungsmarge?
Ich
Wie hoch ist dein Schätzungsfaktor?
Zwei oder drei?
Zwei bis drei, irgendwie sowas, ja
Ungefähr
Ja, aber
Und dann ist doch okay
Dann kriegst du es auch hin in der Zeit
Ne, ja, manchmal halt auch nicht
Schätzt du Storypoints oder Tage?
Also, sagen wir mal so, Tage ist noch falsch als Storypoints, aber Storypoints sind auch schon falsch.
Mit 5 bist du eigentlich immer richtig.
Ja, genau. Also ich hatte, naja gut, ich weiß nicht, es ist alles sehr sinnlos.
Ich habe mich fertig gemacht, Dominik, jetzt will er nicht mehr.
Und ich meine, die Alternative ist ja, 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
hat das nicht mehr den höchsten Wert, dann immer was anderes.
Aber das vorher alles
zu schätzen und dann
zu priorisieren, also
ich habe starke Zweifel daran, dass das
irgendwie das besser macht.
Genau, 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
Genau, das ist genau der entscheidende Punkt, wo ich auch sagen würde,
dass das keine gute Idee ist, das zu machen. Auch das
mit dem Tracking und so, das ist keine gute Idee.
Ja.
Ja, es gibt Leute, die verstehen das nicht. Die meinen, ja, die müssen
aber. Ja, und dann...
Ja gut, also...
Ja, ich meine, es gibt ja auch
genug Beispiele, wo dann halt irgendwie nicht so tolle Sachen
rauskommen. 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
und da freue ich mich auch drüber, weil irgendwie... Ja, das hat ja auch was mit Informationsanalyse zu tun.
Die Frage ist also, ob du die Wahrheit überhaupt kennen kannst.
An der Stelle aus der jeweiligen Management-Perspektive oder so.
Ja, richtig. Das ist auch ein Riesenproblem und ich würde sagen, in vielen Sachen, die ich gesehen habe,
ja, nee, können sie nicht.
Also du musst halt zum Beispiel selber kunden, dass du selber einschätzen kannst, was da passiert ist.
Ansonsten ist das gar nicht so notwendig. Du musst halt die ganzen Commits lesen und dann verstehen,
warum es so lange gedauert hat. Der muss auch verstehen, dass, keine Ahnung, man manchmal zwei Tage
nach einem fehlenden Punkt oder Komma oder Leerzeichen
suchen muss, weil es irgendeinen blöden Bug an irgendeiner Stelle gibt,
die man nicht erwartet hat und dass dafür
bestimmte Sachen einfach schnell gehen, obwohl die
total kompliziert aussehen.
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 sind, weil man sie machen möchte.
Ja, aber das ist das, was du willst. Du willst diesen Flow
haben und damit dieser Flow möglich ist,
damit dir diesen Flow reinkommt, dass du mal 3, 4, 5,
6, 7, 8, 9, 10 Stunden
einfach nur ballerst und dann ist das richtig geil,
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.
Wir brauchen einen Kickertisch.
Schon fertig.
Das war ja einfach.
Einmal im Monat gibt es Pizzaabend für alle.
Wie nach 20 Uhr noch da sind.
Eine Tischtennisplatte
natürlich und ein Lauftreff.
Naja.
Tja.
Ja.
Ja
Ach ja, man merkt das
Ist das bei euch auch so? Ich glaube ich weiß warum das jetzt
gerade alles wieder so am Jahresende
Ihr habt ja 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
Ist eigentlich sehr gut
aber es ist so zum
Jahresende, es wird immer mehr irgendwie
Man hat immer so das Gefühl, am Jahresende ist es immer so ein bisschen voller
irgendwie. Da musst du ja noch irgendwie die Sachen noch durchkriegen,
die man für das Jahr geplant hat und gucken, ob die noch fertig werden.
Ja.
Das ist ja der sogenannte Hocken.
Auf neuen Ufern.
Muss dann wieder ein neues Projekt geben.
Ja, wenn du eine Zeitperiode einplanst.
Ja.
Kann man dann eine clevere Planung machen?
Jetzt sind wir jetzt nämlich genau wieder bei dem Punkt, kann zu sagen, clevererweise,
okay, wir machen sowas so, das muss am Ende des Jahres
fertig sein, dann muss man am Ende gucken,
hat man ein bisschen geschludert, muss man noch ein bisschen antreiben
oder sowas, aus so einer Managementperspektive.
Ja, weiß ich nicht.
Ich glaube, das geht alles nicht.
und die
Tja, deshalb habe ich auch nie Zeit, Podcasts aufzunehmen.
Jetzt wisst ihr Bescheid.
Ja, aber offenbar hat das Python-Projekt ein paar Leute gefunden,
die tatsächlich irgendwie dafür arbeiten wollen.
Und die sind auch eigentlich alle ziemlich gut.
Das waren ja die längsten Exekuse, die wir bisher hatten, glaube ich.
Ja, die haben dieses Problem irgendwie in den Griff gekriegt.
Und ja, das ist ja sowieso eine Neuerung im Grunde,
und das halt so viele Leute
Vollzeit jetzt irgendwie daran arbeiten.
Und ja, eigentlich hat es ja schon ganz gut
funktioniert.
Ja, das war super.
Genau, also
vielleicht gehen wir einfach nochmal durch die
Dinger so durch, was da alles
an 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 Accept Stern
irgendwie, 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, Pech gehabt.
Und dann
ab Python 3 gibt es halt diese Chained
Exceptions, die man manchmal sieht, wenn man
so ein Traceback kriegt,
so während dieser Traceback geworfen
wurde, ist halt noch was anderes passiert. Da kann man
beliebige aneinanderhängen und diesen Mechanismus kann man
natürlich auch dafür missbrauchen,
oder gebrauchen,
wenn man viele Exceptions hat, die irgendwie,
zum Beispiel, wenn man halt viele Tasks hat,
die man gleichzeitig abgefeuert 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.
Also die aneinander zu ketten ist halt
irgendwie, macht keinen so großen Sinn.
Und
dafür gibt es jetzt halt Exemption
Groups, wo
man die Exceptions so in Bäumen
anordnen kann.
Ja, es gab auch vorher
schon so Sachen, die dann versucht haben, drum herum zu arbeiten.
Nurseries in Trio und so.
Auch schon irgendwann
ganz kurz drüber gesprochen.
Ja, haben wir auch schon mal.
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.
Wenn die Exzeption irgendwie roh weggeschluckt wird, ist das schon ein bisschen blöd.
Ja, weil manchmal musst du es halt handeln
und wenn du davon gar nicht informiert wirst, ist es halt irgendwie
schon nicht so gut.
und es gibt es aber auch außerhalb von
AsyncIO. Es ist nicht nur ein AsyncIO
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 eine nicht funktioniert, wird das andere probiert und so weiter
und jedes Mal fliegt ja eigentlich eine Exception,
aber du kriegst immer nur die
und Jochen unterhalten sich über die Programmiersprache Python
und die Möglichkeit, da dran zu kommen.
Und jetzt halt schon.
Und ja, da das halt nicht nur für
Async-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 schiefgegangen 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.
dominieren. Ja, und die immer aufgerufen wurde.
Und dann konnte man
die daran dann sammeln.
Ja, also man kann natürlich solche Sachen...
Aber das musst du dann halt immer machen. Das ist so wie die C-Federnummern,
oder? Es gibt keine Federnummern.
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 ein Vorschlag war halt
auch, man kann es nicht über Logging machen oder solche
Mechanismen, aber tatsächlich...
Es gibt da einen Vorrätsel.
Ja, oder irgendwas in der Richtung,
dass man das halt nicht...
weil tatsächlich ist es ja jetzt,
es hat ja die Python Syntax.
Das müsst ihr mir kurz erklären, warum ihr gerade
gedacht habt, mit was ist das für ein Vorschlag?
Was ist so los?
Wenn eine Exception auftritt und du willst wissen, was da vor passiert ist,
da drüben ist eine magische Datei
und da hast du es hoffentlich reingeschrieben.
Keine Lösung für dieses Problem.
Du kannst natürlich
hingehen und quasi
um, also du könntest natürlich
statt Exceptions zu werfen, einfach alles in ein Logfile reinschreiben
und dann im Code
ab und zu mal nachgucken, ob eine Exception geflogen ist
einfach rein.
Das ist so eine schlaue Art.
Ich habe gehört,
das funktioniert Cloud.
Ja, genau.
Oder verteilte Systeme, da hat man das Problem.
Das ist
unter Umständen sehr schmerzhaft.
Es gibt
da einen schönen Vortrag von der
Entwicklerin,
die das geschrieben hat,
wo sie halt
auch kurz durchgeht.
Ich habe das jetzt dummerweise,
Ich habe das schon ein oder zwei Monate her gesehen, 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 Sprach, man muss die Sprachsyntax da verändern.
Es gibt keine andere sch M wie man das anders machen kann Also wenn es eine andere gegeben h h sie es auch anders gemacht weil das ist nat irgendwie so ein bisschen das letzte Mittel die Sprachsyntax das macht mir ja auch nicht so einfach 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
quasi, dass man sowas braucht und
im Async-Kontext war das,
der Async.io hauptsächlich implementiert
hatte, Juri Selivanov,
der hat 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
ändern 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 Accept-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.
Und damit kann man es eigentlich sauber machen.
und das ist eigentlich sehr schön.
Also gefällt mir auch sehr gut
dieses Feature. Oh, und man kann in
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 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
gleichzeitig zu erwaiten und so.
Da gibt es jetzt ein neues Ding, es gibt Task Groups,
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
Task Group STG und dann
created man halt Tasks und wenn der
Async
Context Manager durch ist, dann sind alle
erfolgreich durchgelaufen. Also
das sieht auch sehr elegant aus, also
sehr schöne neue Art
wenn 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.11 ist eigentlich echt so auf dem
Stand, dass jetzt Funktionen, es greifen
so die ganzen Teile ineinander und jetzt ist es so richtig
rund. So vorher haben halt
Jetzt kann man endlich Async benutzen.
Ja, vorher konnte man es auch schon, aber es haben schon tatsächlich
riesige Teile gefehlt.
Ja, das ist auf jeden Fall alles sehr erfreulich.
Also es ist alles besser geworden, würdest du sagen?
Ja, ja, ja.
Schon alles deutlich besser geworden.
Dann sind noch Dinge,
da müssen wir in der Typing-Episode
mal drüber reden, keine Ahnung,
Variadic Generics,
das ist alles viel zu kompliziert.
Das kriegt eine eigene Episode, glaube ich
Ja, haben wir schon geplant
Dann, ja, Typing
ist in einige Sachen mit dazugekommen
Eine coole Geschichte beim Typing, die dazugekommen ist, ist
Self
Ja, also wenn man zum Beispiel
bisher sowas machen wollte
Habt ihr das mal gemacht?
Typ-Annotationen und wenn diese Sachen
die Self zurückgeben, was gibt man dann zurück?
Ja, die Klasse selber
Ja, das funktioniert leider nicht so richtig
Was ist, wenn du erbst?
Das ist halt keine Instanz der Klasse
oder so. 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.
Und jetzt sagst du,
in der Superklasse sagst du jetzt,
annotierst du mit, gib zurück, eine Superklasse.
Also eigentlich müsste ich 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
zu passieren. Es wird doch höchstens
eine erbende Klasse
zurückgegeben, oder?
Ja, eine von denen, die geerbt haben. Also ich meine,
in gewisser Weise ist das natürlich schon richtig.
Also du kannst die unterste Base-Klasse zurückgeben, das ist ja nicht falsch,
weil das ist ja eine Art von der Instanz.
Ja, aber wenn du jetzt
irgendwo dann quasi
drauf ü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
in Portself und dann sagt Griffiths Selbstzeug...
Warte mal, ich muss das kurz als Argument
aufschreiben, warum ich Typen nicht mag. Warte, das
brauche ich für die Typen.
Ja, ja, also
ich habe auch mal so...
Also 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.
Und wenn man sich da Gedanken darüber macht, okay, wie
annotiere ich das denn jetzt richtig?
Es geht nicht richtig gut. Man kann
das nicht gut annotieren.
Lass es noch 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, aber jetzt gibt es zumindest eine Möglichkeit,
die nicht ganz so schrecklich ist und die
einfach das Richtige tut, quasi.
Das ist schon mal gut.
Aber die WGs verstehen die jetzt dann auch.
Ja.
Was haben wir noch?
Genau.
Jochen, das stöbert gerade so eine lange Liste.
Ich habe das im Grunde nur aus dem
What's New Ding rauskopiert,
das alles.
Oh, es gibt
schon ein paar Kleinigkeiten.
Es gibt einen Change-Dear-
Context-Manager. Das ist etwas, was ich
weiß nicht, wie viele Mal ich mir das geschrieben habe.
Wahrscheinlich hat das jeder
andere auch schon mal getan.
Ein Change-Dear-Context-Manager, sehr schön.
Aber ich muss unbedingt wieder
zurück, weil das ist nicht gut,
wenn ich da irgendwo ein
im Dateisystembaum irgendwas machen,
aber ich...
Du musst ja nicht bleiben und da irgendwas ablegen, was da nicht hingehört,
aus Versehen oder so.
Das Problem ist, wenn du da 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 Context-Manager
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 Context-Lib, ist jetzt so ein Teil drin.
So ein bisschen doof kann man nicht gut
verwenden, weil ansonsten dependet man auf 3.11,
aber...
with changeDir und dann
Path-Objekt oder was? Genau, man sagt
with changeDir
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 es sonst gleich machen mit Verzeichnissen.
Und wenn du fertig bist, kannst du pop machen und bist dann wieder da,
wo du vorher push gemacht hast.
Ah, ne wusste ich nicht.
Ah, cool.
Du musst allerdings selber
darauf aufpassen, dass du wieder in die richtige Stelle zurückpopst.
Bei jedem CD kannst du danach poppen.
und ja.
Ja, genau. Aber du kannst halt einen Stack bauen.
Und du könntest prinzipiell ja auch Sub-Shells machen,
wo du dann Verzeichnisse wechselst,
aber das wäre ja zu viel Aufwand.
Wo ihr gerade schon bei Battery... Kennt ihr Sockside?
Nee, was ist das?
Das ist so ein schönes, kleines Tool,
das für mich CD ersetzt hat.
Ach, doch, doch, doch. Das verwende ich auch.
Ja, ja, ja. Vielen Dank.
War ein guter Tipp. Ja, weil man kann nämlich einfach
Abbreviation schreiben statt Direct.
Der 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
die Fahrzeuge nicht mehr ausschreiben.
Autocompletion for the win, 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,
kann man das auch konfigurieren bei PyCharm oder sowas?
Dass man eine Liste von
Vorschlägen bekommt, die jetzt gerade
die tollste Alternative gewesen wären.
Wie das Fisch-Shell
macht das ja zum Beispiel.
und Jochen unterhalten sich über die Programmiersprache Python
und Shell kennt ihr ja alle schon.
Kleiner Exkurs.
Genau.
Was haben wir denn noch?
Wenn wir schon mal in 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 Capitalism, Baby.
Wir haben über die gerade in den Projekt-Sachen gesprochen.
Das ist halt der Punkt.
Also wenn mich jemand als Sklave ausbeuten will,
das kann man natürlich nicht zulassen.
Es sei denn, man ist ja in einer holokratischen Gemeinschaft,
dann ist das für alles was anderes.
Der Dominik hat gerade auch noch was von seinem Stack
zurückgeholt.
Es gibt tatsächlich Dinge, die noch gefährlicher sind als Ted und zwar Woosh
Aber ja, ich fürchte, dass es halt
Kapitalismus ist schwer
Ja, es ist ein Problem
Kapitalismus ist schwer
Man kann sich da schon die Zähne draus beißen, muss man sagen
Nein, nein, das Problem ist halt
Das Problem ist halt, dass man gegamed wird vom Geld
Ja, das ist das Problem dabei
Und dann muss man überlegen, ob man
ein Game will, also in 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 Glück sein, wenn man ein paar
Zipationen sich erkaufen kann oder das möchte
oder wenn man höhere Ziele dafür
aufgibt
für den schnöden Mammon
Ja
Ja, man muss aufpassen
Es ist schwierig und ja
und es ist leichter, Fehler zu machen.
Das ist schon richtig.
Ich finde, es ist eine Pflicht,
da Widerstand zu leisten.
Ach so, ja.
Egal, wir wollten keine politischen Sachen.
Das ist aber schon so ein moralisches
Dilemma, was man hat manchmal.
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
gerade mit den
zahlreichen Personen
deren MBAs bei Twitter ausgelaufen
ist
die
jetzt über Features sprechen können, die sie hätten
bauen sollen
da gibt es schon interessante Geschichten
okay, das habe ich mir
viel drüber diskutiert
aber
ja, das ist so
einer von diesen Twitter
von diesen, einer von den wenigen entlassenen Twitter Software Engineers
hat geschrieben auf Twitter,
dass das 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 10 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, das brauche ich nicht.
Das mache ich nicht.
Und da halt in dem Team der Einzige war,
der das hatte machen können,
mussten die halt sagen, okay gut, dann gibt es das 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-Ingenieur 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.
Dann erst recht.
Dann nur mehr zahlen und dann geht es dann trotzdem oder so.
Ja, auch das. Das wurde ja wohl auch gefragt, wie viel Geld müsst ihr 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 denke, es gibt viele Leute,
die wahrscheinlich irgendwie, ich glaube,
Waffenentwicklung oder so wäre für viele
schon ein Tabu oder auch
eben, weil für irgendwelche
staatlichen Akteure irgendwie
irgendwelche Schnüffelgeschichten bauen oder so.
Aber da gibt es ja auch wieder Gut und Böse, deswegen sagt ja der Crusader das.
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,
und dann ist es relativ opportunistischer,
wieder sowas zu tun.
Hm?
Wenn du dich bedroht fühlst.
Du bist das kleine China
und das große Amerika,
versuchst dich zu unterdrücken,
dann musst du dich wehren und so weiter.
Das hat doch nichts mit
Privacy-Sachen zu tun, die du dir verkaufen kannst.
Doch. Viel.
Alles.
Mit Datenschutz zu tun.
Ich glaube schon. 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
hinten anzustellen oder das halt tatsächlich aktiv
zu machen, um für so einen Staat
oder sowas an eine Aktion
treten zu können und dem mehr Kontrolle zu verschaffen,
das, glaube ich, hängt sehr stark damit ab.
Vielleicht habe ich es auch noch nicht so richtig verstanden.
Also ich weiß es nicht, um ganz ehrlich zu sein.
Ich weiß nicht, um ganz ehrlich zu sein, wenn man mehr Geld
anbieten würde für ein unethisches
Feature.
Ich kann ja schon mal die Kontonummer sagen, aber
Könntest du deine Fahne tun?
Die Flagge hochhalten?
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.
Und man ist ja auch bequem, ganz ehrlich.
Ja, das ist komfortabel.
Jeden Tagsprojekt.
Dafür habe ich an der Uni immer Schelte bekommen,
wenn solche Leute waren.
und der Schwießerbinden, Dominik.
Ja, genau, das ist ja völlig klar. Die Kampfbereitschaft,
der Mut zur Veränderung,
viele revolutionäre Anteile und so, ja, ja.
Verstehe schon.
Ja, und bevor die das Geld
jemand anderem geben, der das nicht gescheit macht,
dann mach es doch lieber ich.
Capitalism, Baby.
Ja, es ist schwierig.
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 nicht voll.
Ja.
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 besonders verwerflich.
Gerade hier in Deutschland muss man doch aus der Geschichte
sagen, ja, wenn die Hunde das machen,
dann ist es besonders da, einem zwei Stufen voran in den Abgrund rennen.
Ja, es ist schwierig, ich weiß es nicht.
Aber eben darüber reden bringt auch nichts, weil irgendwie eigentlich,
das ist auch so etwas, da können wir den Bogen wieder zurück zu Twitter,
dass man auf Twitter irgendwie auch sehr auf den Sack geht eigentlich.
Das ist ja der Aufruf, jemand soll uns mal in diese Situation bringen.
Man muss nur danken von den Leuten, die böse nicht richtig auseinanderhalten können
und nicht wissen, für wen es sich richtig kämpfen lohnt.
Das Problem ist halt, man kann nicht drüber reden
Man kann da nur Sachen machen oder nicht machen
Ja, und dann kann man, aber wenn so
Ich meine, eigentlich ist das halt eine selbstwidersprü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
zu moralisieren ist halt eine
Methode, um das zu gamen
Daher
Ja, aber das ist ja richtig
Ja, es wäre richtig, das zu tun.
Wir sind die Guten, weil wir das öffentlich geben.
Das ist die Frage,
ob das nicht nur 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...
Aber ja, egal.
Wie gesagt, ist der Aufruf,
wenn mir jemand viel Geld für moralisch verwerfliche Dinge
anbieten möchte,
Meine E-Mail-Adresse ist hier.
Ich wüsste zwei andere, denen man das dann auch anbieten kann.
Abzüglich irgendwie.
Ja, genau.
Genau, aber diese ganze Twitter-Geschichte ist natürlich auch nochmal interessant.
An der Stelle, um nochmal auf die letzte vorzudrücken,
kurz so eine Coin-Adresse.
in die Schuhe zu bringen.
Ja, also da ist auch wieder was geplattet.
Kann man noch, lohnen sich Coin-Adressen noch?
Das würde auch unter News noch fallen, FTX irgendwie.
Ja, FTX und Binance waren für mich der Bumm.
Also ich hatte mir letztes Mal schon überlegt,
aber vielleicht muss ich das jetzt nochmal,
wie kann man eigentlich den Kram shorten?
Ach na ja.
Das ist schwierig.
Das geht nur, wenn jemanden hast, der
sorgen 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.
Can.
Deshalb ist es ein gefährliches Spiel.
Ja, genau.
Vielleicht auch erstmal wieder exkludieren.
Und hinterher dann sagen, ich wusste es.
Ich habe nichts gemacht.
So ist es halt immer.
Ich habe es euch ja gesagt.
Aber jetzt ist es zumindest irgendwie aufgenommen.
Macht nichts für Ice Cream, Jochen.
und sagen, ich habe es tatsächlich gesagt.
Ja.
Ja, also
dieser Twitter-Autounfall
da ist auch gerade...
In Zeitlupe ist es doch nicht, oder?
Stimmt, es ist ein relativ schneller...
Wenn man versuchen würde,
Twitter kaputt zu machen, wäre es
schwierig, das schneller hinzukriegen.
Ja.
Das ist schon beeindruckend.
Ich habe gar nichts davon mitbekommen, weil ich
habe ja seit Twitter, seit, weiß ich nicht,
2008,
9, 10, weiß nicht.
Super unterhaltsam.
Vor 15 Tagen hat er Twitter gekauft
und ist hier auch von Twitter gekommen.
Der Saint Elon,
wie man ihn gemeinhin nennt.
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 sind,
nach seiner Nachricht abhaben.
Es ist tatsächlich auch wurscht. Viele von den Sachen
sind schwer zu verifizieren. Man weiß es
nicht genau, aber man hört.
Dann hat er
angekündigt, das ist dieses blaue
Checkmark. Es gibt ja für verifizierte
Personen, gibt es so ein blaues Häkchen.
Das wurde mal eingeführt, weil
Identitätsdiebstahl
sehr einfach war. Man hat sich halt
einfach Elon Musk genannt.
Mit dem Bildchen rein und dann immer
seriöse Post verfasst vor der Zeit.
Solange seriöse Post nicht verrückt geworden ist.
Und für
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 du machst das mit Auslandsverifikation
oder kriegst du Postident?
Ich weiß nicht genau, wie die das gemacht haben.
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 haben Leute
berühmtheitende Journalisten und so gekriegt, aber
und das wurde halt manuell gemacht.
Oh, das heißt also 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,
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 gesagt, weil 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.
Du kannst dich bei Twitter anmelden,
kannst dich verifizieren lassen für 8 Dollar und das hat natürlich sofort dazu geführt,
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
Internet finden. Also das war
tatsächlich sehr lustig, muss ich sagen.
Also war gut geunterhalten.
Übrigens,
du brauchst eine US-Adresse
dafür. Also das musst du irgendwie
VPN und so. Aber es geht.
By the way, the next thing I do, Elon Musk post,
I buy Python.
Aber Elon Musk hat sich ja
schon lange Zeit als Verfechter des
Free Speech hingestellt, dass er jetzt
hier wieder alles frei macht.
Dann ging es aber sofort, als die Leute
angefangen haben, sich als Elon Musk auszugeben,
wurden die dann sofort suspendiert.
Dann hat er gesagt,
das ist wohl zu viel geworden.
Ich weiß gar nicht, wieso.
Für mich sehr lustig.
Er hat sich da so ein bisschen reingestört.
Dann hat er gesagt, das finde ich nicht okay.
Da muss ich jetzt
immer Parodie drüber geschrieben werden, sonst geht das nicht.
Und wenn er es nicht macht,
dann verbannt er die Leute irgendwie.
Hat er dann auch gemacht.
Aber heute war ja tatsächlich die nächste
Welle. Die nächste Welle
in diesem Drama, weil
Personentättsdiebstahl 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.
und hat heute einen wundervollen Tweet
geöffentlicht.
A second Tesla has
arrived at the World Trade Center.
Also so ganz
gute Sachen.
Ein Eli Lilly hat
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 es kostet natürlich weiterhin
700 Dollar pro Monat.
Aber
und 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 dieses Thema zu kümmern
also es ist sehr beeindruckend
wie schnell
Double or Nothing
keine Ahnung, also ich würde da nicht zurückgehen
ganz ehrlich, aber wenn mich jemand in die Situation bringt
Double or Nothing.
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 ein besonders wichtiger Job sein.
Ja, natürlich.
Ja,
es ist schon so.
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
wird es noch anfangen zu brennen und
anfangen noch, wer...
Also es ist schon sehr beeindruckend, oder?
Oder interessiert das sonst irgendjemand?
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.
Es hat man sich auch sowas zu...
Der einfache Mann auf der Straße
interessiert sich halt für sowas.
Es ist klar, dass so eine kultivierte Verbindlichkeit
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,
aber ich weiß nicht,
super geplant,
und so.
Ist es noch dreilevel, dreidimensionales
Schach mehr, als ich irgendwie verstehen kann?
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.
Na doch, gibt schon. Aber es gibt nur
Emotionen, die wir hatten, als wir das 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 Branding und Marketing.
Das ist Freude.
Du hast dich gut gefühlt.
und das ist genau der Punkt.
Das ist ein wunderbares Rally.
Ich habe das Gefühl, als es ihnen schlecht gegangen ist.
Das ist eine fundamentale Emotion von Menschen.
Schadenfreude.
Ja, aber
es passieren ja tatsächlich so.
Es gehen tatsächlich gerade sehr, sehr viele Leute weg.
Zum Beispiel nach...
Schadenfreude gibt es im Englischen, oder?
Das ist ein Fremdwort im Englischen.
Ja, das ist ein englisches Wort. Schadenfreude.
Und damit meinen die immer Dörmen Schadenfreude.
Ja gut,
wir können das halt am besten.
und Humor besonders wenig.
Das ist halt das Einzige, was aus dem Keller
ab und zu mal nach außen dringt,
wenn man in dem Kontext...
Schadenfreude.
Wenn dir einer in den Keller gefallen ist.
Ja.
Aber genau,
das ist der Autounfall.
Der andere Teil ist halt lustig,
dass jetzt Leute irgendwie
nach Mastodon gehen, ins Philly-Birst und so.
Hast du dich auch schon angemeldet, Jochen?
Ja, aber ich bin nicht zufrieden mit meiner...
Du hast nicht deine Adresse zu sagen.
Doch, aber ich habe das irgendwie...
Früher, als Twitter auch mal wieder
so eine Episode hatte,
wo es ihnen nicht so gut ging,
habe ich das dann auch mal in Erwägung gezogen,
vielleicht lieber das zu machen.
Da habe ich dann irgendeinen Server genommen.
Schon mal ausprobiert, das ist nicht fürchterlich.
Und zwar irgendwie das Tröth-Café oder so,
weil das halt offen war.
Mit Tröth.
Retro Tröth gibt es.
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 ans Bein pinken,
aber naja. Es gibt Instances.social,
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...
Ja, da fängt es schon an, Content-Kontrolle.
Ja, egal.
Ja, natürlich, aber ich will halt keinen Spam und keine...
Ja, aber ich will meine eigenen Sachen da einschenken.
Ich will meine eigenen Sachen da einschenken.
Mach deine eigene Instanz.
Ja, aber das ist ja wieder Arbeit.
Oder du filterst nach Instanzen, die das explizit erlauben.
Dann gibt es halt keinen vernünftigen Client irgendwie richtig fürs Telefon.
Ja, aber das ist bei Twitter ja auch nicht so.
Also bei Twitter gab es welche, bis Twitter sie alle abgerührt hat.
Habe ich gehört davon, aber so alt bin ich gar nicht.
Ja, ja.
Naja, also ich meine, das Problem an dem, die Spec ist wohl alle, also ich habe jetzt auch viel darüber gelesen, dass Leute das selber wussten und niemals haben sie das erst so super.
Ich habe das einfach so Stunden, Tage später gehabt und dann so, boah, habt ihr mal die Spec angeguckt?
Doch nicht.
Habt ihr mal geguckt, was man dafür alles nutzt?
Was man alles braucht, um das zu treiben?
Meine Güte, wow, wer hat sich das denn ausgedacht?
Das ist ja schrecklich.
Und ja, das ist alles schon sehr schrecklich.
Und naja, 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 im Prinzip würde ich da sagen, es ist voll gut, wenn es irgendwie was gibt,
was man da vorhin schon wussten kann, was frei ist und so.
Indie-Web-Prinzip jetzt.
Indie-Web, genau.
Ja, wäre gut.
Ja, seine eigenen Daten selber, so ist das schon gar nicht so schlecht.
und die Programmiersprache Python.
Ja, schon.
Wahrscheinlich in absehbarer Zeit kann man nicht mal mehr
nachgucken, wie man jetzt gefolgt hat, um das
wiederzutun, weil es ist einfach weg.
Muss man jetzt exportieren.
Genau, sonst geht das nicht mehr.
Also, komisch.
Ja, Free Speech?
Tja.
Alles außer in den allermeisten Ländern
auf der Welt nicht. In Deutschland auch nicht.
Kannst du auch nicht sagen. Ist das richtig?
Selbst in den USA ist es halt sehr stark eingeschr Was hei sehr stark Es kommt drauf an auf welchem Standpunkt man steht Es ist ja auch eingeschr Was du denkst wissen wir ja jetzt
Auch wenn du in den USA
in einem Kino oder einem Theater sitzt,
darf man auch nicht irgendwie aufstehen und Feuer rufen.
Geht halt nicht.
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 Slender
gibt es auch und
deshalb
es gibt überall Einschränkungen.
Was ich halt cleverer finde,
für so Online-Leute,
ist halt sowas wie
Moderation, das wäre schon ein kuratierter
Dinge. Das finde ich ein sehr powerful
Werkzeug. Das ist halt immer unfair,
aber es ist immer irgendwie
richtiger.
Das ist auch sowas,
was man gehört hat jetzt, dass eben
das Hauptprodukt von Social Networks eigentlich Content Moderation ist.
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 der Genüge getan ist.
Auch da gibt es so einen Exkurs.
Da hat wohl der heilige E einen Call gemacht mit den Werbetreibenden
und dann haben sie
eben 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.
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?
Genau.
und das
ist schon sehr interessant, da mal so
einen Einblick reinzukriegen, weil sich da
jetzt die Lücken aufreißen und mal einmal
hier in die Eingeweide gucken. Ja, und die Leute anfangen Klartext
zu reden und sagen, was halt ihre Interessen sind und man
sieht jetzt wirklich, wie das, also das ist halt das, das ist
so wie so ein Teilchenbeschleuniger, ne, da nimmt man ja
auch irgendwie so, wir nehmen die Teilchen
viel Fahrt auf und dann haupt man die aufeinander und dann fliegt
der ganze Scheiß auseinander und dann kann man 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
und das ist total interessant, weil da stecken manchmal sehr unerwartete Sachen drin.
Sehr, sehr spannend.
Aber in other news, Amazon ist die erste Firma der Welt,
die hat jetzt nicht mit Social Networks zu tun,
die ist die erste Firma der Welt, die über eine Billion an Marktwert verloren hat.
Und das kommt dann so im Hintergrund drüber,
wo hier so das große Twitter-Spektakel hier im Vordergrund ist
und im Hintergrund machen die halt
One Trillion Dollars
haben sie ihren Marktwert verloren und das ist
schon, das sind so Zahlen, die sind
sehr schwer zu greifen.
Ja, tausend Milliarden.
Ja, tausend Milliarden,
aber was bedeutet tausend Milliarden?
Also eine Million Millionen.
Wenn du überlegst, dass
ein Haus eine halbe Million,
wenn du überlegst, dass ein Haus eine Million kostet,
dann sind es drei Millionen Häuser.
Da kannst du überlegen, dass eine ganze Großstadt,
ich finde das eine gute Wahl,
zu 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.
Tja, ja. Also ich finde das
mit der Großstadt gar nicht, wenn du dir ausrechnest, wie teuer sind denn
die Immobilien so in der Großstadt oder sowas?
Und dann nimmst du einfach so eine Großstadt,
die ist da 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 ja unterschiedliche Großteile, das war jetzt
natürlich eine Vielannahme, das ist ja alle gleichverteilt
eine halbe Million kosten, aber es ist ja schon größere
Gebäude und so deswegen. Ja, ja, aber dann,
also in so einem Haus wohnt ja mehr als
eine Person, also du musst ja dann schon eine
vergleichsweise große Stadt,
also so eine große Stadt gibt es in Deutschland nicht.
Doch,
ich würde sagen, das unterschätzt du. Ich würde sagen,
so groß ist die nicht. Also ich glaube, da kann man
festhalten, dass es nicht so eine große Stadt ist.
Ja, nur noch
Stuttgart oder Düsseldorf oder so was,
vielleicht. Stuttgart hat 600.000
Einwohner, da gibt es keine 2 Millionen Häuser in Stuttgart.
Ja, aber der Wert,
es geht um die 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 Wert überhaupt
beschreiben ist. Den Wert gibt es ja.
Also Amazon als Unternehmen existiert ja,
das hat ja irgendwie einen Wert.
Es waren imaginäre Dollar.
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 das Geld da, auch wenn man das
quantifizieren können, was das überhaupt an Wert bezeichnet.
Weil, ja,
also ich meine, bei anderen Großen
ist das ja, bei Apple wäre das
wahrscheinlich auch so, ne? Keine Ahnung.
Ja, was ist das eigentlich?
Die haben auch so einen Aktienwert.
Die haben auch so einen Aktienwert, ja, was ist, wenn sie es irgendwie
verkacken oder keine Ahnung, das jetzt
nicht mehr funktioniert?
Genau, ist sehr unklar, was das ist.
Also diese Aktienwerte sind doch
hypothetische Werte, oder? Die sind doch der Wert, wenn du
zum jetzigen Zeitpunkt...
Das sind keine hypothetischen Werte, das sind Buchwerte.
Okay.
Das ist, wenn du zum jetzigen Zeitpunkt alle Aktien verkaufen könntest,
dann hättest du so viel Geld.
Nein, nein.
Du sagst hätte.
Es gibt kein hätte.
Der Wert ist null.
Der Realwert ist null.
Der reale Wert ist null.
Genau, und das ist ein Buchwert.
Du musst eine Transaktion machen, um was zu verkaufen.
Dafür musst du einen Käufer finden.
Du kannst gar nicht wahrscheinlich zu dem Preis alles verkaufen.
Für 1000 Milliarden kannst du nicht Aktien verkaufen.
zu kaufen. Zumindest nicht alle jetzt.
Genau, das geht nicht.
Eben, das sage ich ja. Deshalb sind es ja hypothetische
Werte. Wenn du
jetzt 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 mir jetzt zu kompliziert.
Ja, das ist ganz zu kompliziert. Das ist viel Fantasie.
Ja, genau.
Ja.
Jetzt müsste man eigentlich bei StableDiffusion mal eingeben,
irgendwie so Twitter, Armageddon und so
einen cleveren Satz, mal gucken.
Da passieren bestimmt dann auch lustige
Sachen. Wobei, ich meine, bei StableDiffusion
und so, man muss halt schon irgendwie, man muss
lange warten und so und
kreativ sein beim Aufschreiben von Prompt und so.
Was? Ja, nicht?
Nein. Okay. Mach mal
Match.Space auf. Hast du mal Dalle ausprobiert?
Ach, Dalli. Dalli hab ich auch ausprobiert.
Mach mal Match.Space auf.
Mage, wie der Magier
und dann .space
Checking if the site connection is secure
Oh oh
Create anything
Jochen hat gerade irgendeinen Satz
müssen wir ein bisschen warten, ist okay
Ja, aber
Ja, ja, es ist
kein CPS hinterher oder was
also da ist keine dicke Grafikkarte, das könnte man ja hinterhängen
Ja, aber gut
und genau, diese Experience habe ich auf meinem Laptop auch und die ist halt, geht so.
Ja, okay.
Und?
Was ist da?
Was war eingegeben?
Ja, also ein Tüter-Amageddon, das von oben herunter geht.
Ja, es kommt so ein Vogel und der hat, also dieser Bird, so ein Gelber, der hat irgendein
Viech in der Hand und versucht es zu fangen und das ist so ein sehr artificiell komisch,
das sieht cool aus.
Ja.
Nee, also das...
Also bei mir dauert es noch.
Ja, also
Ich habe gerade alle Rechenleistungen aufgenommen, deshalb kann ich jetzt
Ah ja
Elon Musk destroying Twitter with Gasoline
Naja
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 benutzen kann,
um dieses Activity-Pub oder was
wie das Protokoll heißt, da irgendwie zu sprechen.
Naja, vielleicht
wusste ich da ja doch nochmal was.
Mal schauen.
Implementierst du erstmal deine eigenen?
Das habe ich schon hinterher.
Du kannst doch dann eigentlich alle Nachrichten, die über dich gehen,
mitlesen, oder nicht?
Oder hast du das im Protokoll
verboten?
Ja, genau.
Das kann dann sein, dass da eine 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.
Das höre ich von vielen Leuten,
die sagen so, also auch Simon Willison
hat zum Beispiel zweimal die gleichen Sachen, einmal auf Twitter
und er 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,
Interaktionen auf Mastodon viel, viel mehr,
viel interessantere Geschichten auf Twitter
war eher so lahm.
Also klar, ist natürlich jetzt auch irgendwie
wahrscheinlich keine
unabhängige...
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 da echt eine
gute Party, weil
es sind eigentlich nur nette Leute und die
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.
Aber es ist schon interessant.
Auch interessant, Simon Wilson,
habe ich jetzt gesehen, als ich in dem Kontext auch
sich mit der
Authentifizierung beschäftigt habe,
da gibt es ein Paket von ihm namens
Django Indie
auf.
und da fühlte ich mich auch so,
das habe ich irgendwann mal 2016 auf
einer von diesen Vorveranstaltungen
von der Beyond Telerand
saßen wir mal da bei ZipGate rum
und so IndieWeb, voll gut,
war so eine IndieWeb-Konferenz, habe ich das auch
mal implementiert, Django IndieWeb ist ein
Paket von mir, da habe ich auch schon mal IndieOut
implementiert, jetzt hat der Heimwild uns auch noch mal
implementiert, muss ich mal vergleichen,
was er da gemacht hat.
Offenbar muss das jeder mal machen, ja.
Sechs Jahre später,
Jochen, du bist ja in der Zeit voraus.
Ja, weiß man nicht so genau.
Ganz netter.
Aufs falsche Pferd zum falschen
Zeitpunkt gesetzt, wer weiß.
Ja.
Aber ja, das hat
jetzt so ein bisschen...
Das war gut. Das ist eigentlich eine gute Sache.
Ich gucke gerade in die Liste.
Waren noch interessante Dinge dabei.
Ja, also
vielleicht kann man noch ein bisschen was zu dem...
Die ganzen Dinge, die ich jetzt hier noch habe, sind alles
eher so kleinere Geschichten.
Tommel-Lib, weiß ich nicht.
Ja, da war ich
total überrascht. Ja? Tommel-Lib.
Warum? Welche ist es denn?
Welche haben Sie denn reingenommen oder eine neue?
Nee, ich glaube, Sie haben tatsächlich das, was
Tommel-Lib, ich dachte, es gibt noch,
ich weiß nicht, Sie haben das Ding irgendwie reingenommen.
Ich glaube, mindestens drei. Ja?
Mindestens drei, was ähnliches. Tommel?
Einfach Tommel?
Tommli?
Tommel-Lib. Ah, okay.
Ja, ich glaube, es ist Tommel-Lib.
Ist in die Standard-Lib reingekommen.
Aber es kann noch nicht schreiben
Apropos, es gibt doch so eine Riesen
Pep gerade zum
Rausschmeißen von vielen Zeugs
Ja, der ist von
Na, wie heißt er noch
Die sind in der Dokumentation jetzt schon
separat aufgeführt
Deprecated Packages oder sowas
Removing Dead Batteries
Ja, auch von
Christian hat irgendwas gesagt
Genau, Heimis
Der hat auch diese
PyScript
nach WebAssembly
kompilieren, Python gemacht hat.
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 Standard-Bibliothek
ist, sondern 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.
Da fehlt
irgendwas.
Mir macht es
auch keinen Spaß,
Timestamps mit Zeitzone zu haben, aber die gibt es nun mal.
Tomly kann das nämlich.
Und dann bin ich auf Tomly
umgestiegen.
Und jetzt müsste ich dann da
tatsächlich mal ausprobieren, ob man das in Python
3.11 einfach auch so machen kann und ob die korrekt picklen.
Ich weiß, das ist eine lustige Kombination,
Tommeln und Pickle, aber ich habe es halt
gebraucht. Für einen Cash.
Ich will nicht gerade Pickle.
Wenn du Pickle lehrst, dann kann ich doch einfach
alles ausführen, was ich will, oder?
Ja, schon.
Und sind die ganzen Machine Learning Modelle
nicht alle Pickle?
Also ja, man
benutzt da häufig auch Pickle,
aber...
und PPL, irgendwas, ganz, ganz oft.
Ja, viele machen das so.
Das heißt, du kannst einfach so hochladen und sagen,
guck mal hier, ich habe das alles für mein Maschinenmodell,
bla bla bla, und alle Leute führen deine Pfeile aus.
Ja, also ich meine, du kannst auch...
Und da sind wir wieder bei den Guten und bei den Schlechten.
Ja, aber ich meine, wenn du sagst,
ich habe hier ein tolles Maschinen-Loading-Modell,
installiere mal hier dieses bei Pip, dieses Paket,
natürlich, wenn du bei Pip Sachen installierst,
dann kannst du auch alles machen.
Bei Pip musst du aber noch ausführen.
Nö, wenn du es installierst...
muss auch ausführen, muss auch laden
beim Rebuilding kommt das schon
wenn ich
also ich kann
wenn ich installiert werde als Paket kann ich alles machen
ok
ja ja
RM-RF
ja also
genau
was
einen schnelleren Python,
was da so ein paar Sachen sind, die passiert sind.
Also Exceptions hatten
vorher so ein bisschen Overhead irgendwie,
dadurch, dass
sie zum Beispiel, dass halt
Speicher alloziert werden
musste, den man braucht,
wenn man jetzt
Exception schmeißt. Das muss man halt
vorher machen.
Und das war vorher auf dem Heap,
das heißt, man hat mehr oder weniger Malog aufgerufen,
keine Ahnung, und das
hat es halt langsam gemacht. Das heißt, du hast halt
dann immer, wenn du irgendwie try-accept 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 Ding irgendwie alloziert und das wird
halt immer benutzt und dann, da kümmert sich jetzt
Python selber drum, das heißt,
der Overhead von try-accept ist nur noch,
also es heißt irgendwie zero
cost exceptions oder so,
zero cost try-accept, aber das ist es
nicht wirklich, es kostet irgendwie ein Prozent Overhead
immer noch, aber es ist halt viel weniger als vorher.
dann sind so Dinge passiert
Funktionen aufrufen ist schneller geworden
unter anderem
die brauchen auch weniger Speicher
auch weil da irgendwas mit dem
mit den Frames irgendwie anders
gemacht wird, ich weiß nicht mehr genau was sie gemacht haben
und deswegen gehen auch
Rekursionen jetzt ein bisschen tiefer, man muss das noch von Hand
umstellen, aber
ja
dann
genau
Python-Objekte sind ein bisschen kleiner geworden.
Also zu Python 2
Zeiten waren es irgendwie so,
wir hatten ein Objekt mit vier Attributen,
wo man
braucht irgendwie 350 Byte oder so.
In Python 3 waren es dann
nur noch so
irgendwie 200 oder so was,
sondern irgendwie waren es bis
3.10 sind 120 Byte
und jetzt sind es irgendwie 95
oder so was, keine Ahnung.
Aber es ist schon deutlich weniger geworden. Also Objekte
brauchen auch deutlich weniger Platz als früher.
Das kann man nicht gut mit C++, braucht nur 32.
Aber ja.
Ja, aber auch.
Immerhin.
Aber immerhin, es geht da schon
in eine sehr erstaunliche Richtung.
Ja, dann
das Größte bei dem
Python-Schneller-Feature ist halt,
dass halt quasi
der Bytecode
halt umgeschrieben wird, wenn
ein paar Mal irgendwas gemacht wurde und
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.
Dem erinnert sich quasi, was er schon kennt
und macht das dann einfach schnell durch, ohne dass er
jedes Mal rumhüpfen muss, sondern kennt einfach direkt
den... Ja, also da sind solche Dinge
dran. Dicklookups zum Beispiel, wenn das halt
häufiger passiert. Ganz wichtig,
Globals, Locals, also früher hat man ja auch
immer solche Sachen gemacht wie
wenn man in Schleifen oder in heißen
warmen Kot 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-Log abgemacht werden muss bei einer Klasse
oder es in Globals oder so
nachgeschlagen werden muss, sondern dass man es halt
im Lokal, Local-Stack 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,
das ist dann immer gleich schnell und das
ist halt auch eine ganz ordentliche Verbesserung
und, ähm,
Kannst du nochmal kurz sagen, was du meinst mit heißen Stellen?
Ja, also du hast halt
vierfach verschachtelte For-Loop,
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.
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. 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 irgendwo in der Initialisierung was lang machst, weil die wird nur einmal ausgeführt.
Ja, genau.
Und wenn du halt in der Schleife, die eine Million Mal ausgeführt wird, eine Nanosekunde mehr verbrauchst, dann ist das halt direkt messbar.
Ja.
und deshalb
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.
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 Locker. Ja, ist auch vielleicht nicht so
schlau, so sollte man auch nicht, aber es gab
solche Stellen, wo das dann viel gebracht hat.
Wenn du das weißt, dass das was bringt, dann kannst du doch mal 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, lokal-name gleich self.irgendein-Attribut, was man dann halt ganz oft braucht.
Und das tag ich dann erst rein und rechne es dann rum?
Ja, genau.
Weil dann ist es dann sonst nicht 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.compute und dann kannst du hundertmal 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.
Ah, beim achten Mal.
Ja, irgendwie so. Ich glaube, das ist ein Implementationsdetail, das muss ich auch jedes Mal ändern.
Aber irgendwie, ich glaube, total ist es auf acht.
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,
ist auch egal.
Aber cool, das ist jetzt automatisch, das heißt man kann
die Sachen, die man vorher nicht kannte, kann man jetzt einfach ignorieren?
Genau,
jetzt kann man es halt schön hinschreiben und es sollte
trotzdem schnell sein.
Ja, 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 wenn es nur int sind, wenn es nur float sind, geht es, glaube ich, wenn es int und float sind, geht es halt nicht oder so.
Kommt dann vielleicht irgendwann oder es hat sich herausgestellt, ist nicht so effektiv, wenn man das macht, keine Ahnung, aber eigentlich muss man das alles nicht wissen.
Man kann einfach Code so schreiben, wie man
das macht. Es gibt eine
ganz interessante Geschichte
Das Ding heißt
Specialist
Es gibt ja diese
Dis-Funktion, mit der kann man sich den Bytecode angucken
und wenn man
dem noch einen Parameter übergibt,
dann zeigt es einem auch an, welche Sachen
rewrite worden sind
und welche nicht
Und das heißt, so kann man sich
beim eigenen Code angucken
und quasi beobachten
Ja, genau.
Cool.
Das ist für Disassembly.
Genau.
Ansonsten,
ja,
also ich glaube,
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.
Das 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.
Ein Fünf-Jahres-Plan?
Ja.
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
der Shannon-Plan,
das soll über fünf Jahre
Python ungefähr
fünfmal so schnell werden wie vorher.
Mag schön.
Ja.
Und ja, es sieht alles gut aus.
und Jochen unterhalten sich über die Programmiersprache Python
Ich habe gehört, es ist schneller geworden.
Wollen wir nochmal über die 3F?
Was auch noch
ein großes Release hat, hat jetzt nicht direkt was mit
Python zu tun, aber in dem Umfeld natürlich
auch mal interessant, Postgres 15 ist released.
Also zumindest nachdem wir
das letzte Mal irgendwie aufgenommen haben.
Wie?
Das kann das mehr? Die werden auch immer schneller.
Ist auch schneller geworden, genau.
Es kann jetzt das RIDAL-Headlock
direkt komprimieren. Also ist irgendwie was reingekommen,
ist halt, dass bestimmte Sachen so
LZ4 und Z-Standard
sind halt direkt in Postgres drin,
sodass du da halt deine Backups
direkt komprimiert rausschreiben
und das
Friday-Head-Log kann auch direkt komprimiert geschrieben werden.
Das macht es halt auch ein bisschen schneller,
einfach deswegen, weil du weniger schreiben musst.
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
Inside 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
ORM sozusagen kommt.
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, ja.
Ich habe einen 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
Docker-Meter-Documer dafür.
Ich habe einen Kunden, da schreibt
eine andere Person, die schreibt mir Beckett in Dave.
Warum
machen die das?
Sind dann Kunden so im Bereich
irgendwie...
Ja gut.
Läuft halt noch.
Sie betreiben keinen Museum
veralten Code oder so?
Nein.
Nein, aber es ist
eine öffentliche
Kunde.
Es geht schon in Richtung Museum
für alte Maschinen.
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
kannst direkt, Migrate kannst du gar nicht
machen.
Und
dann fängt es schon an
so echt schwer zu werden, wenn du dann die Django-Version
zurückdrehen muss in den
Zweierbereich.
Reicht noch 2?
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 irgendein Feature noch
vermeiden und dann...
Aber es ist ja schön, dass dann Postgres
jetzt fast doppelt so weit ist,
wie diese
Version.
die ganzen Legacy-Dachen benutzen.
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.
Ja, das ist die Fall 8.1.
Muss jeder selber entscheiden.
Ja, wo wir schon
über Daten machen. 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, genau.
Ja, ich fand gut, dass Leute alte
und das ist halt irgendwie, ja, manche Leute stehen halt irgendwie drauf.
Tja.
Ich mache das nicht so.
Aber beim Thema Datenbanken
war es auch ganz interessant, da gab es jetzt ein,
ich glaube, ich weiß nicht, ob das auf der
DjangoCon US war oder ich weiß nicht,
irgendwie haben sich Carlton Gibson
und Simon Rillison unterhalten und
Simon Rillison meinte so,
warum steht in den DjangoDocs
eigentlich drin,
SQLite wird nicht für den 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.
Concurrent Rights ist das Problem.
Und dann ist man sehr schnell
dann kriegt man Timeouts
die ganze Zeit.
Ja, ist total, so funktioniert nicht gut.
Das kann man noch ein bisschen in den Griff
kriegen, der hat einen 5 Sekunden Standard-Timeout.
Kann man natürlich
hochdrehen, dann wird es nur langsamer,
aber es ist halt am Ende, ja.
Genau. Und daraufhin
okay,
ganz viel mit SQLite, Data Setter und so
Zeugs und hat da auch Ahnung von dem
Ding und macht 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 Write-Ahead-Log, weil SQLite
kann auch sowas mit Write-Ahead-Log.
Da hat man zwar immer noch das
Logging-Problem, aber das ist halt irgendwie,
also es kann immer nur
ein, zwei gleichzeitig schreiben, aber irgendwie
wird das dann halt alles so ein bisschen in Zwischengefuhr
und ist halt schneller fertig. Und stellt sich raus,
ja, also an der Stelle ist dann halt irgendwie
diese Timeouts gehen weg.
Und es geht eigentlich.
Ja, der hat da wirklich so hunderte Requests pro Sekunde
oder so, oder auch, ich weiß nicht, wie viele tausend Sachen er da pro Sekunde schreiben konnte,
viel, und es geht. Und es skaliert auch.
Und er so, okay, was passiert denn jetzt, wenn ich mehrere Prozesse nebene, die draufschreiben?
SQLite verwendet so ein File-Logging dafür,
und er so, oh, das kriegt 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,
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 verhalten,
aber für viele Sachen reicht es
wahrscheinlich aus und dann brauchst du keinen Datenbank-Server,
weil das ist halt schon
eine sehr schmerzhafte Geschichte.
Das ist schon ein Einrichtungsaufwand, der
vermeidbar ist.
Und wenn du das jetzt auf irgendeine kleine
eine virtuelle Maschine mit
Dateisystemen deployen kannst?
Reicht für die meisten Leute wahrscheinlich aus.
Und das ist natürlich schon nett.
Das finde ich gut.
Sollte man machen.
Super.
Genau.
Hat SQLite nicht
kürzlich so ein Sicherheitsthema gehabt?
Ich erinnere mich, dass da irgendwas war.
Das habe ich, glaube ich, überlesen. Weiß ich nicht.
Ich glaube die hatten so ein Sicherheitsproblem bei sehr gro Writes Anscheinend gibt es da einen Overflow wenn du irgendwie
Max Bytes
minus 1 an Daten
holst. Das ist irgendwie ein Terabyte oder sowas.
Okay, natürlich. Also es ist nicht
es ist 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
einen Terabyte gleichzeitig in einer
Transaktion drin habe und dann
irgendwas mache, da wird halt auch irgendein
Puffer alloziert, der dann ausläuft.
Dann geht es aber nicht mehr.
Ah, okay.
Passiert den Besten.
Ja.
Ja, ja.
Tja, ansonsten
PyMC4
MCSphere ist veröffentlicht.
Heißt jetzt nur noch PyMC,
so für probabilistische Programmierungsgeschichten
Library, die man sich mal angucken kann.
Manchmal ist es ganz nett, das zu haben.
Wofür steht denn MC?
Monte Carlo.
Also MC, MC,
Markov Chain, Monte Carlo.
Ja, das MC steht für
Monte Carlo.
Okay.
Ja.
Ja,
Ja, ich weiß nicht genau.
Und der Angel Kapathi ist ja jetzt
seinen Job los und hat angefangen
ein Machine Learning Tutorial
mit Python irgendwie auf YouTube
zu veröffentlichen. Ach, ja, ja, ich habe gesehen, er macht jetzt
mehr YouTube-Videos wieder, ja.
Also so neue Networks und so, so ein bisschen
Intro, wie das in Python geht und
Language-Modell-Ding und sowas. Nett, ja, kann man sich
auf jeden Fall auch angucken.
Ja, der macht immer sehr schöne Sachen.
Stimmt, warum
der war bei Tesla, ne?
Ja.
Ist er wohl entlassen worden?
Nee, ich glaube, der ist tatsächlich freiwillig.
Ja, es gibt da einige Leute,
der sich diese
na, wie heißen die
GAN-Modelle?
General
Adversarial Networks
General Adversarial Networks
meine Güte, ist schon
spät.
Wie heißt da ein
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 es auch gegangen.
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,
und die Programmiersprache Python
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.
Er kann sich reden würden.
Aufmerksamkeit,
Aufmerksamkeit.
Ja,
ansonsten...
Genau, was hatten wir noch?
Also es gab noch diverse...
Gut, das ist jetzt für die meisten wahrscheinlich nicht so...
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?
Gar nicht, machen wir nicht.
machen.
Ist nicht so ein einfaches Thema, finde ich.
Auch auf iOS 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
super klein gerechnet, winzig und dann...
Dropbox? Dropbox könnte man
machen, aber dann hast du halt das Problem, dass
du musst die Dinge, wie willst du
die angucken?
Was legst du in diese Dropbox?
Fotos? Ja,
Aber wenn du jetzt, nehmen wir an, du hast
ROS, OwnCloud, legst du die da rein?
Von ROS kann da niemand angucken,
da muss da schon irgendwie...
Ja, aber...
Ja, ist halt...
Wir sind wieder bei so Problemen, die wenige Leute haben.
Ja, also...
Ja, der Jochen möchte halt seine 28k
Resolution Fotos gerne
schon in ordentlicher Qualität
sharen können.
Ja.
Dann muss der das halt selber
schreiben, muss 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
aber 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, das ist ja auch Arbeit das zu machen
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 Webseite oder so machen
und das ist jetzt drin und das funktioniert eigentlich auch ganz gut.
Da funktioniert genau das.
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ößen-Dinger 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.
Nehmen die Leute das und machen A3-Ausdrücke dafür,
hängen sich an die Wand und sagen, also irgendwie
sah das aus.
Der Typ kann gar nicht fotografieren, das ist ja schrecklich.
Werf deine Kamera an.
Das fällt dir gar nicht auf, das Motiv gefällt dir nicht mehr,
deswegen hängen sie dich an die Wand.
Ja, es ist wahr, aber
es tut manchmal auch ein bisschen weh,
wenn man sieht, was Leute so machen.
Mit deinem Auge, mit deinem
ästhetischen Anspruch.
Ja, genau.
Das, was Leute tun, ist sehr schrecklich.
Aber ich glaube, bei MacUpdate, wir reden schon so lange
über MacUpdate, wo das hier das gefichste ist.
für Fiffpress. Es gibt ja jetzt ein Feature, dass das halt
fixt, aber das hatte ziemlich
hakelige Geschichten. Bei mir jedenfalls war es alles sehr schrecklich.
Hat die ganzen Counts und alle kaputt gegangen.
Ich habe
meine Uhr teilweise nur noch die
Uhrzeit von gestern angezeigt.
Es war sehr unrund.
Aber dafür in voller Auflösung.
Ja, ich weiß auch nicht.
Aber Jochen,
weißt du denn, dass es die Uhrzeit von gestern ist?
Weil gestern hat ja 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.
Du meinst,
er hat jetzt das 12 Uhr von gestern angezeigt.
Nein, nein.
Philosophische Frage.
Ja, so, solche
Probleme hat es mich dann...
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.
Eine lineare Abfolge von Einträgen.
So, das ist eine Liste.
Und die Ordnung
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 noch an
wie was Sinnvolles, oder?
So zum Programmieren, dass man sich mehrere Dinge merken kann.
Ist eine Liste ein Array?
was ein String Analyst ist.
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 Vector 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 einen Verweis auf das Nächste haben.
Und diese Technik heißt Linked List.
Das ist eine verknüpfte Liste.
Und die haben
sehr unterschiedliche Eigenschaften,
obwohl sie sich
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
ein Python mit einer Vorschleife.
Und das spielt keine Rolle, wie die darunter
liegende Implementierung ist. Ob die
im Speicher alle hintereinander gespeichert sind
oder ob die alle irgendwo gespeichert
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,
wollen, können, wollen, können, wollen.
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 nächste ist.
und Jochen unterhalten sich über die Programmiersprache Python
und 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 Linked-List 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 Linked-List und dann fügt mal 100.000 Elemente,
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 XYZ
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, das ist dann
was, was da rausfä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 die Liste rein
verweist und dann hast du so
einen Kreis in deiner Liste drin.
Und wie machst du Cycle Detection?
Bitte?
Eine Queue. Eine Queue kannst du auch machen,
und 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 draus bauen.
Hast du halt nicht einen Pointer, 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
ein fundamentales
Bauteil in den Datenstrukturen.
Aber auf
modernen Prozessoren sind LinkedLists halt
brutal langsam, üblicherweise.
Weil
du bei jedem Element einen Cache-Mess hast,
normalerweise.
Und
Cache-Mess sind das Schlechteste, was
du machen kannst auf modernen Prozessoren.
Was ist denn ein Cache-Mess?
Ja,
und man hat ja im Kopf
Cash Miss ist, wenn du kein Geld bekommst,
wenn du zu wenig Geld hast.
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 der. Und umso kleiner ist
der. 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
20 GB. 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 man halt hat, 8 GB oder 16 GB oder auch 128 GB, das spielt keine Rolle. Und die Ebene dahinter, hinter dem 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.
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.
Das ist ungefähr beim Faktor 3 dazwischen.
Also am Schluss wird es mehr.
Bis auf den Hauptspeicher.
Da ist eine große Lücke.
Genau, da ist eine große Lücke.
Das heißt,
und 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 so etwas 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 Speicher in die Ebene darunter geholt werden.
Das heißt, wenn ich jetzt im Hauptspeicher irgendeine Speicherseite habe, die hat 16 KB 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 Register 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 Linked-List ist, dann 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 LinkedList
heutzutage so ein kleines bisschen verpönt,
habe ich das Gefühl.
Der benutzt LinkedList, der hat 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 Vector,
ist, dass du halt die Elemente alle
hintereinander schreibst. Das heißt, das erste Element
steht an Speicheradresse 1 und das zweite
Element steht an Speicheradresse 2
und das nächste Element steht ja in Speicherdresse 3
und halt je nachdem, wie groß die Dinger sind,
dass du die halt alle aneinander packst.
Aber was steht denn dann, wenn du Speicherdressen drin,
steht dann nur der Zeiger auf das richtige Objekt drin?
Und unterschiedlich, ja, also genau.
Je nachdem, was du halt hast.
Sonst hast du ja eine Maximalgröße von Dingen, die da drinstehen können
und dann verschwendest du uns Speicherplatz, wenn nicht alle gleich groß sind
von den Dingen, die drinstehen.
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 es
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 daran. Du musst
halt die Größe wissen. Du musst wissen,
was du da reintust. Du kannst auch,
wenn du Objekte da reinspeicherst,
dann landet es üblicherweise ja Pointer sein zu
Objekten 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,
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,
kannst du hinten einfügen und vorne rausnehmen.
Das ist mit einem Array
nicht so einfach umzusetzen.
Und das 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 dann musst du jedes Element anfassen
bloß, weil du eins rausgeholt hast. Und das wird
langsamer, wenn es mehr sind.
Python-Listen kann man nicht so gut als
quasi so, wenn man da
dauernd Sachen hinten raus und vorne rein tut
oder so, das geht mit Python-Listen nicht gut,
genau, ganz genau. Das ist super schlecht.
Ja, und deswegen sollte man dafür lieber
aus einem Collection-Stack oder so verwenden,
also Double-Ended-Queue, das geht deutlich besser.
Oder Queue, ja.
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 Queue hast.
Was ist, wenn die ausläuft?
Das musst du dann abfangen.
Dass du dann lauter...
Also hast du ganz viele Edge Cases.
Arrays sind vom Aufbau her
simpler, aber von der Verwendung her
irgendwie
fitziger, weil die halt so eine
feste Struktur haben.
Und das ist so ein bisschen
die Sache.
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.
Ich bin eigentlich ein Freund von LinkedLists, weil die
so schön sind. Und SkipLists, ich meine, da braucht man
nicht drüber sprechen. Das ist die coolste Sache der Welt.
Ja, und
ja.
Kann man Elemente deaktivieren quasi.
Nee, die verweisen nicht auf SQL,
sondern...
Ja, ich glaube.
und man muss ein kleines bisschen
Mehrarbeit 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,
wenn du in der Mitte was einfügst oder
was rauslöscht oder so
und das ist vom
Programmieren her was total simples,
gibt dir aber eben die
logarithmische Zugriffszeit.
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,
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
sie hätten machen müssen, wäre Randomizer
irgendwie durchgehen.
Und wenn du eine sortierte Liste hast und dann
mehrere Skip-Ebenen hast, kannst du das sogar garantieren,
dass du Logarithmeche zu Christzeiten hast.
Tja, da gibt es schon coole Sachen.
Also Moment, doch mal, was kannst du garantieren,
wenn du mehrere...
Ja, wenn du eine sortierte
Liste hast. Ja. 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ällige Skips auf den, bis du
in der obersten Ebene quasi vom ersten
bis zum letzten Element skippst.
Und dann kannst du innerhalb dieser
Skip-Ebenen, kannst du 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 sowas wie ein Random Forest?
Aber nicht verwalten.
Da bin ich total auf dem falschen Holzweg.
Es ist ja kein Baum.
Es ist so eine
randomisierte
Granularität, die du da hast.
Okay.
Du hast verschiedene Ebenen, verschiedene Granularität.
Und du hast
Zugriffsteilten wie bei einem Baum, musst aber nicht den Baum
verwalten und das ist super cool.
Ja.
Cool.
Es ist tatsächlich wirklich sehr einfach, sich so eine Liste
zu schreiben. So eine ganz einfache Linklist
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.
Du meinst, da kann man es immer wieder eröffnen.
Ja, Algorithmen und Datenstrukturen.
Genau, das ist so ein bisschen der Grund,
warum das in Informatikvorlesungen halt oft vorkommt,
weil man da sehr einfach einen Einstieg hat
und dann aber trotzdem weiter mitkommt.
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 hier habe ich mich vorher gefragt, also
warum wird eigentlich, wenn man mal informatisch ist und auch diese coolen Sachen, wo man so Computerspiele
macht und irgendwie Grafik und weiß ich nicht, so Zahlen und sich dahinter
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 ja zu suchen und sortieren die ganze Zeit.
Der Grund ist halt schon, dass
irgendjemand hat, vielleicht hat sogar
Knut geguckt, also worum beschäftigen
sich Rechner eigentlich so den ganzen Tag?
Und da war es 70 Prozent waren 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.
Weil man doch mehr Fälle gefunden hat, wo man das
darauf reduzieren kann.
Ja, weil man mehr Daten hat.
Oh, sortieren und suchen wären auch nochmal so tolle Folgen gewohnt
Mit LinkedList kann man auch sehr schön Sortieralgorithmen
umsetzen
und auch das lohnt sich, dass man sich mal selber
hinsetzt und einfach mal BubbleSort implementiert, das ist ja sehr einfach
der Algorithmus 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.
Ein Merge-Sort ist auch vergleichsweise einfach
und ist aber eben deutlich schneller
als Bubble-Sort.
Ich mag total gerne den LSD-Sort.
Okay, was war das?
Du hast nur 10 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 dann ist es fertig.
Okay.
Das ist auch sehr geil.
Das heißt LSD-Sort, weil das geht nur, wenn man genügend Drogen genommen hat.
Nein, das hat damals auch nicht geschehen.
Leider natürlich.
Aber es ist
super, weil das kannst du auch mit Kindern machen.
Du kannst einfach denen sagen, hey, pack das mal,
also Sortierspiele, pack das mal
nach der Reihenfolge da rein.
Dann hast du eine sortierte Liste. Das ist sehr cool.
Ja.
Würde ich sagen, das ist einer der coolsten.
Und das kann man sehr gut ausprobieren, wenn man sich selber gerade
seine Linklist geschrieben hat.
deshalb. Ich plädiere dafür, dass das
jeder mal tut.
Radix, kommt das noch?
Radixort, ja.
Radixort.
Es gibt
tatsächlich auch Verfechter heutzutage
und man muss halt auch dazu sagen,
je nach Anwendungszweck sind Arrays besser
oder Linklists.
Warum ist alles dies?
Ach so, okay.
Ja, gut.
Sorry.
Ja, auch.
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
er verweist dann auch auf Stellen im
Linus-Kernel, wo auch Linked-Lists verwendet werden
und sieht es als
Indiz, dass es halt das Richtige ist.
Weil das halt das Richtige ist.
Weil es einen Use-Case erfüllt,
der sinnvoll ist.
Ja.
Durchaus.
Also ich meine,
das ist auch noch so eine interessante Geschichte.
Also auch eine Frage, Linked-List oder Array.
wie indiziert man eigentlich, wo fängt man an, 0 oder 1?
Und Python macht das richtig, fängt an 0 an.
Das ist halt korrekt.
Die einzig wahre Antwort.
Genau.
Warum macht man das nochmal?
Ich hatte jemanden, der meinte, das ist total furchtbar.
Die ganzen Entwickler machen alle immer falsch.
Die fangen immer bei 0 an zu zählen.
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 Klappe auf,
Doppelpunkt 2, Klammer zu, oder Liste, Ecke, Klammer auf, 2, Doppelpunkt, Ecke, 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, was er sagt.
Wenn du halt diesen Index wiederverwendest, dann sind die genau lückenlos zusammen.
Da muss man schauen, ob ich diesen Link wieder finde.
Das wäre schön, weil das
mein nettes Argument ist.
Das wäre schön, ja. Das ist auch sehr angenehm zu lesen.
Und er sagt auch die anderen Optionen, die du machen kannst.
Und die haben alle auch ihre...
Da gibt es ein super Paper
von Deikstra.
Das ist im Original.
Hat er das handschriftlich
aufge... Er hat ja so... Er hat ja irgendwie eine Diskussion
mitbekommen, wo Leute gesagt haben,
die einen sagten, ah, mit 0 anfangen,
die anderen mit 1. Und dann der, der
1 gesagt hat, der sagt dann irgendwann, ah,
hat ihnen vorgeworfen, ihr seid irgendwie pedantisch, dass ihr da unbedingt auf dieser Null besteht, das ist doch eigentlich ganz egal, wir können ja irgendwas anfangen zu zählen, das ist wohl wurscht.
Das erste Element ist das erste Element, das ist das Nullte.
Und dann meinte er so, ja, also ich hab mir das mal überlegt und dann hab ich das mal aufgeschrieben, wie das richtig geht und nee, der mit der Eins liegt falsch.
Und zwar weil, das ist dann so auf Karopapier zwei Seiten, die er dann handschriftlich vollgeschrieben hat.
als ich dann zum Beispiel eben, wie man
sagen kann,
wie man jetzt, ich glaube, da geht es um,
er sagt 2, 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 meinte 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.
und Jochen unterhalten sich über die Programmiersprache Python
und er sagt, ja stimmt, musst du mit 0 indizieren, das geht nicht anders.
Und ja, am Schluss endet das, diese zwei Seiten, die er geschrieben hat,
endet auch mit einem sehr schönen Zitat, wo er dann schreibt, ja, ich weiß gar nicht mehr,
von wem das ist, er zitiert ja irgendjemand anders.
Er 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 Exklusionen 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 draufhauen.
Und das muss man ausschließen.
Das muss man ausschließen.
Ja, genau.
Super. Also da kann man das mal nachlesen.
Das müsste man auch unbedingt nicht schulden.
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, Ecke, Klammer auf,
Anfang, Doppelpunkt, Ende hinschreiben.
Man kann aber auch, es gibt irgendwie
ein Bild in Slice, wo man sagen kann,
Slice, irgendwie
Anfang, Ende,
und dann kann man den 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, großgeschrieben Name,
gleich Slice, 5,12,
Klammer zu. Und dann kann man
hinterher sagen, Liste, Ecke, Klammer, Aufnahme,
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 da schon was, was die
Indizes dann direkt mit drin oder sowas?
Indizes,
dass man da irgendwie dann Dinge
suchen kann.
Ja, zum Beispiel.
Das sind nur dann einfache Arrays.
Für sowas hat es ja dann Pandas oder NumPy oder so.
Okay, da 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 Hauptspeicher 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.
NumPy-Array oder halt
ein Array oder sonst irgendwas,
in dem man dann halt dazu sagt, so, du bist jetzt,
du hast jetzt irgendwie folgende Struktur
und dann kann man halt auch so,
also 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.
Das muss natürlich in den Hauptsprecher
passen. Ja, wenn es
nicht reinpasst, dann gut, dann muss man was
aus.
Naiv bist du so, ja.
Genau, was auch nett ist, ist, wenn man
die NumPy
macht da auch noch
viele magische Geschichten mit, man kann jetzt auch mehrere
Sachen, man kann nicht, na, wenn du jetzt mehrdimensionale
Arrays hast, das gibt's, sowas gibt's nicht in der
Standardbibliothek, aber es
gibt halt die Möglichkeit,
das zu benutzen, also das sieht Python
schon vor, auch wenn es jetzt
keine Objekte in der Standardbibliothek implementiert,
dieses Interface, aber dass du halt
sagst Index Doppelpunkt irgendwas Komma und dann die n Dimension Das macht der Name halt kann man auch verwenden und
ein Ding, das man häufig sieht, was
komisch aussieht, man kann auch statt,
also wenn man jetzt sowas schreiben würde wie
x, Ecke, Klammer auf i,
Komma und dann Doppelpunkt, Komma, Doppelpunkt, Komma,
Doppelpunkt irgendwie, um halt
nur eine bestimmte
Dimension
rauszuziehen und
alle anderen Sachen
beliebig zu lassen, dann kann man dafür auch
Ellipsis verwenden und einfach
Klammer auf I, Punkt, Punkt, Punkt schreiben.
Das sieht man häufig.
Das hat mich am Anfang gut erhört.
Hä, was ist das denn?
Ja.
Da kann man sich auch noch ein bisschen was sparen.
Ja. Was gibt es sonst
noch Nennenswertes über Listen zu sagen?
Hm.
Du musst einfach noch ganz kurz über Ellipsis was sagen,
weil vielleicht ist das immer noch nicht ganz so.
Ja, das ist sowieso so ein interessantes Spezialding.
Ich sehe das relativ häufig.
Ich benutze das auch mal, wenn ich irgendwas fertig machen möchte.
Einfach so als Platzhalter in meinem Kopf.
Aber es ist nicht so ganz richtig verwendet.
Man kann einfach drei Punkte machen.
Genau, man kann es auch ausschreiben.
Das funktioniert erstmal wie ein Pass, oder?
Wenn du einfach nur drei Punkte schreibst, ist es wie ein Pass.
Genau, aber es verhält sich in manchen anderen Kontexten halt manchmal so ein bisschen anders.
Man kann es auch, also in Typ-Annotationen wird es häufig verwendet für,
oder da steht halt irgendwas, keine Ahnung, oder halt eben in den Indexgeschichten.
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 es denn sein soll.
Ja.
Ja, ja, ja, ja.
kann und wenn man halt
aus der Data Science Welt kommt, dann ist man plötzlich in einer
anderen Welt.
Kriegen Leute plötzlich Probleme.
Ja, ja, ja.
Ja.
Aber ansonsten...
Ja, mir fällt
jetzt auch ehrlich gesagt nicht mehr viel ein.
Wenn ich mal noch eine gute Idee hatte.
Listen, Listen.
Noch was?
Listen.
Auf der Centraliste.
nicht mehr genug drauf?
Nö, mehr habe ich hier nicht.
Ja, aber ich würde sagen, das ging doch jetzt
einigermaßen flott.
Das ging erstaunlich flott jetzt.
Ja.
Wir warten jetzt
auf die Rückfragen und beantworten
uns. Genau, wir beantworten uns, wo wir zu listen, alle Rückfragen
zu listen. Ja, also ihr wisst ja immer,
wie Feedback wie immer, hallo at pythonpodcast.de
Ja.
Dürftet gerne schreiben, wenn ihr irgendwie Feedback-Anregungen,
Kritik,
Beleidigungen zuwerfen wollt.
hatten wir auch schon.
Ihr Selten.
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 Scalzi
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.
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.
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.
Das ist eine Python-Bibliothek.
Open AI Whisper.
Ah, okay.
Vorsicht, nicht Pip-Install Whisper.
Das ist etwas anderes, sondern man muss das aus dem GitHub-Repo installieren.
Ist ein trainiertes Modell zur Spracherkennung.
Das heißt, man gibt mal ein WAV-File oder ein MP3 oder sonst irgendwas und der
gibt einem den Text, der da gesagt wurde, zurück.
Und das funktioniert erstaunlich gut. Und das funktioniert auch erstaunlich einfach, weil
man hat ja oft so ein bisschen, also ich habe oft so ein bisschen Berührungsangst,
wenn dann irgendwo steht, ja, hier ist ein Modell veröffentlicht worden. Es ist tatsächlich einfach nur
pip install von GitHub.
In den Modellen gibt es sowieso so coole Sachen.
und dann
drei Zeilen Code und dann
tatsächlich Spracherkennung.
Und das
hat, also ich habe es ausprobiert und es funktioniert
auch nicht. Das funktioniert auch mit Deutsch
irgendwie halbwegs? Ja,
funktioniert auch mit Deutsch. Es gibt verschiedene Modelle,
die für die verschiedenen Sprachen
eingestellt sind und das hat tatsächlich
mit Deutsch so gut funktioniert.
Also ich habe Lorem Ipsum
reingeschrieben, reingesagt und
hat dann deutsche Wörter daraus
ausgeführt.
Ja Ja Also kennt ihr so ein paar Sachen Es gibt ja diese ganzen verschiedenen Tools Es gibt ja irgendwie so ein paar ich nenne es jetzt mal High Radio zum Beispiel oder so wo man einfach so eine App deployen kann
die direkt mit so einem Web-Interface läuft,
wo man dann so ein Modell hat,
was man dann direkt benutzen kann,
irgendwie mit so einem Easy-Web-Interface
und sowas. Das ist halt total nett zum Demoen
oder Pocken oder MVPen oder sowas.
Ja.
Vielleicht kommt ihr zum Streamlit, falls ihr das kennt.
Das macht auch so
Web Apps und für so Data Science
Krams hast du dann direkt irgendwie
Überblick
über 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 es 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 eine so eine schöne, kleine,
schnelle Benutzung von so einem
Modell hast. Zum Beispiel Gradio nutzt jetzt
komplett Hugging Face zu.
hast du Zugriff über
2-3 Python-Code auf 10.000 Modelle
oder so vortrainierte
und die du einfach direkt benutzt hast, das ist sehr geil
Ja, ist auf jeden Fall
viele Leute packen das
auch auf ihre GitHub-Repos
und so
ja
was auch ganz interessant ist
jetzt habe ich das wieder ein bisschen vergessen
leider
ich habe mich mit diesem Audio
ich habe mich ja schon ein bisschen damit beschäftigt
mit dieser Automatic Speech Recognition
und
früher
damals
ganz früher, so
2015, 16,
als die Deep Speech
So lange her, ey!
Es gab so einen riesen Fortschritt,
niemand hat das richtig hingekriegt,
weil irgendwie hat das nicht funktioniert
und die ersten
Modelle, die so richtig gut funktioniert haben,
auch Deep Learning angewendet auf
Speech Recognition waren halt Deep Speech 1 und 2 für Englisch und Chinesisch.
Und genau, dann gab es immer da so Verbesserungen und so, aber das Problem immer für Deutschland,
dass es nie funktioniert, weil, beziehungsweise es gibt ein paar Firmen, die konnten das gut machen,
Microsoft, Google, Apple, Amazon, weil sie halt die Trainingsleiten 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 Lautsprecher 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 wurden das halt als
Trainingsdaten verwendet für
dieses Common Voice,
für diesen Trainingsdaten-Korpus und die haben auch selber
ein Modell trainiert, das halt basierte, glaube ich, auf Deep Speech
und das dann halt
auf so eine Word Error 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,
ja, nett, eine Gewinne macht ihr da, wir hätten auch mal
gern was von ab.
Ja, und noch schlimmer finde ich, die können einfach einen aufbieten.
in denen was passiert. Genau.
Und das ist ja
auch irgendwie so Mozilla
so ein bisschen der Zweck, dass man
das so ein bisschen auch den Leuten ermöglicht,
dass sie was tun können. Also eigentlich
alles super gut, aber es gab halt nicht genug Trainingssachen
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 diesen
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.
Und wenn man das Modell halt dann
mit genug Texten aus dem ganzen
Internet halt prügelt, dann kann es 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 vielleicht was ganz anderes ist.
Funktioniert dann aber immer noch super.
Und so ähnlich funktioniert das mit dem Audiokram
auch. Und zwar
oder
ich weiß jetzt, die genauen Verfahren
kenne ich jetzt alle nicht, ich habe es
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 quasi die Dinger haben selbst supervised auf unfassbaren Mengen Audio gelernt was halt so Audio ist und wie das funktioniert wie Sprache so funktioniert Also in Form der Audio quasi Repr
Und dann
hat man dieses gelernte Modell benutzt,
um halt
in der Transkription dann nochmal
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 mehr diese gigantischen
Trainingsdatenmengen. Das heißt,
ja, eigentlich ist es quasi
dieses Problem ist mehr oder weniger gelöst.
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, braucht es halt Faktor 30, um
halt Text rauszumachen. Das kann man praktisch
nicht so gut verwenden, weil...
Eigentlich muss ja echt Zeit sein.
Und es braucht dann auch viel Hauptspeicher und so weiter.
Genau.
Genau, 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
5 Sekunden, in 6 Sekunden
durchtranskribiert.
Und ich war von der Qualität
sehr positiv überrascht. Für so ein kleines
Modell. Sehr, sehr positiv
verpasst, dass das so gut funktioniert. Also musst du auf jeden Fall
mal ausprobieren, Jochen.
Ja, für Podcasts ist das auch interessant, ja.
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.
Und kannst du anschauen.
Die kleinen Modelle laufen auch alle auf
CPU und das ist ziemlich cool.
Jochen, dein Weg ist ja praktisch.
Bitte?
Da hast du auch einen Pick.
der Standardlib kann man
auf Files schmeißen
und weiß
dann so ein bisschen, was das denn für ein Dateiformat
sein könnte oder so.
Ach, die Magic
Numbers.
Mögliche Extensions raus oder so, genau.
Distribution, Confidence und so.
Ja, cool.
Und das ist in der
Standardlib? Ja, PyroMagic, ja.
Das ist ja Hammer.
Ich weiß nicht, ist das in der Standardlib?
Ich weiß nicht, ich werde es nachgucken
zweiten Pick, in Anführungszeichen.
Weil das
Post Pick, weil das
zum Thema des heutigen Abends sehr gut passt.
Oh, die Nannyverse.
Nannyverse.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 da schreibt,
und die verbreiten sich dann eben langsam in der
sozialen Hülle,
die halt in der Nähe ist.
Das finde ich ein sehr schönes Gegenmodell
zu dem, was man sonst sagt.
Nur P2P.
Das für die Leute, die nicht miteinander reden,
sondern nebeneinander auf ihren Handys rumhacken.
Genau.
Wenn man sich Bilder teilen möchte,
dann ist das gut.
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.
Die verbreiten sich dann eben durch dieses Netzwerk durch.
Aber verbreiten sich alles vor allem?
Also geht das dann weiter? Wird das dann von den Nodes 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 sich halt langsam,
was da halt langsam hinkonvergiert.
Interessant, oder?
Okay.
Aber ich glaube, das haben wir es heute tatsächlich dann doch geschafft.
Vielen Dank, dass ihr bis hierhin durchgehalten habt
und ich fand es war eine schöne Folge, hat mir viel
Spaß gemacht. Vielen Dank, Johannes, dass du wieder dabei warst.
Ja, sehr gerne.
Mir hat es auch viel Spaß gemacht.
Und ich freue mich schon auf die nächste Listen-Folge.
Bleibt uns gewogen und hört uns zu.
Ja, vielen Dank für eure Aufmerksamkeit.
Haha, bis später.
Tschüss.