Transcript: Python 3.11 und Listen

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

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.

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.

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

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

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.