Transcript: Live von der DjangoCon Europe 2025 in Dublin - Tag 2

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, Episode 64, heute nochmal von der DjangoCon, eine Sonderausgabe.

Dominik

Ja, zweite Live-Episode.

Dominik

Ja, freut mich wieder da zu sein. Hey Jochen.

Dominik

Ja, hallo Dominik.

Dominik

Hallo Johannes.

Dominik

Hallo zusammen.

Dominik

Und hey Ronny, heute alles ganz.

Dominik

Hallo Ronny.

Dominik

Hi, schön hier zu sein.

Dominik

Ja, schön, dass du da bist.

Dominik

Ja.

Dominik

Ja, wir wollten noch ein bisschen wieder von der DjangoCon erzählen, auf der wir gerade sind in Dublin.

Dominik

Ja.

Dominik

Das hatten wir gestern schon getan, die Folge ist tatsächlich auch pünktlich online gegangen, danke.

Dominik

Ja, fast pünktlich.

Jochen

So nach dem Pappbesuch ist das immer so ein bisschen schwieriger, also das Hotelzimmer wiederzufinden und dann auch noch eine Episode online zu stellen.

Jochen

Insofern, das ging nur so irgendwie unterschiedlich.

Dominik

Ich habe noch mein Sweater vermisst und dann habe ich mein Sweater gefunden. Das war wahnsinnig gut.

Dominik

Dann hatte ich aber meine Hotelzimmer-Eintrittskarte nicht.

Dominik

Am ersten Tag einmal alles mitgebracht.

Jochen

Ja, und wenn man das Zimmer wechselt, ist auch schlecht.

Jochen

Ja, genau.

Jochen

Alles anders.

Jochen

Ja, aber es hat irgendwie alles geklappt.

Jochen

Es ist immer noch da.

Dominik

Wir haben ja gestern bis zum Mittagsscheit erzählt, was so war.

Dominik

Was war denn gestern noch Interessantes?

Johannes

Oh, jetzt müssen wir zurück scrollen.

Johannes

Tan, es tut mir leid, du warst schon bei heute.

Jochen

Ich glaube, das Erste, was wir tatsächlich gesehen haben,

Jochen

oder zumindest teilweise gesehen haben, war HTMX.

Dominik

Ja, da kamen wir gerade nach dem Podcast noch so rein.

Dominik

Ja.

Jochen

Und ja, war solide, aber auch nichts Überraschendes oder so.

Jochen

Ich weiß nicht genau, ob jemand von euch da irgendwas Neues gesehen hat oder Interessantes.

Johannes

Ja, nachdem wir die erste Hälfte verpasst haben.

Jochen

Ja, stimmt, da kann man auch nicht so wirklich was zu sagen.

Dominik

Und ich war kurz im Gym- und Spa-Bereich.

Ronny

Also ich habe es gesehen und ich würde mich da anschließen.

Ronny

Also ich fand es solide, wenn man sich nicht damit beschäftigt hat, auf jeden Fall super hilfreich.

Ronny

Wenn man sich damit beschäftigt hat, glaube ich, nicht allzu viele neue Dinge.

Ronny

Kurzes Sidenote, bevor du runtergehst.

Ronny

Den Talk mittags von Sebastian

Ronny

hattet ihr den besprochen, weil der ist ja auch aus der Region

Ronny

bei uns, aus Köln.

Ronny

Achso, den hatten wir nicht besprochen.

Ronny

Nee, den hatten wir nicht besprochen.

Ronny

Genau, da freue ich mich

Ronny

ein bisschen, dass es geklappt hat, weil er hatte mich

Ronny

noch gefragt, weil ich

Ronny

ja schon mal letztes Mal bei der DjangoCon

Ronny

mich beworben hatte und

Ronny

genommen wurde, wie es

Ronny

denn aussieht und

Ronny

Und ob er meint, dass die Idee, ob ich meine, dass die Idee fliegt.

Ronny

Und genau, fand das eine coole Sache.

Ronny

Ich fand den Vortrag tatsächlich noch cooler.

Ronny

Also für mich, ich habe mehr mitgenommen, als ich jetzt persönlich erwartet hätte noch.

Dominik

Vielleicht erst mal kurz, worum ging es denn überhaupt?

Dominik

Sorry, natürlich.

Ronny

Genau, also der hieß The Fine Print in Jungle Release Notes.

Ronny

Und es ging um neue Features in den neuen Versionen.

Ronny

Also im Endeffekt, der Aufhänger ist, lies die Release Notes,

Ronny

abgesehen von dem einen mega krassen, geilen Feature,

Ronny

weil man halt

Ronny

da sehr viele Dinge immer kommt, die einem das Leben

Ronny

leichter machen, wo man Coach sparen kann,

Ronny

irgendwelche fiesen Hex-Walkarounds ausbauen

Ronny

kann und hat sich dann dadurch die

Ronny

5.x-Version durchgehangelt.

Ronny

Da waren tatsächlich Sachen dabei, die ich noch nicht gesehen hatte.

Ronny

Ja, der Carlton hatte das ja vorhin auch

Johannes

so erwähnt, dass er auf keinen Fall wieder zu 4.2

Johannes

zurückgehen würde, wenn sich das

Johannes

vermeiden lässt. Genau.

Ronny

Und genau, freut mich sehr, weil der ist jetzt auch bei

Ronny

auch ein Regular beim

Ronny

Colone-Meeting, Jungle Colone.

Ronny

Was hat der denn alles Schönes

Dominik

erzählt. Vielleicht kannst du so ein paar

Ronny

Da fragst du mich Sachen, es ist immer so schwer, sich in Details

Ronny

zu erinnern, wenn man sich am Tag

Dominik

Wenn man nicht so Notizen hat wie der Johannes hier vor

Johannes

Ja, ich war aber nicht in dem Talk, deshalb habe ich keine

Johannes

Notizen zu dem Vortrag

Johannes

Es ging um

Ronny

diverse Verbesserungen im Admin

Ronny

Es ging um Custom Error

Ronny

Messages, die man jetzt bei Constraints

Ronny

hinterlegen kann, die auch übersetzbar sind

Ronny

Und es waren

Ronny

im Endeffekt alles relativ kleine Dinge, aber

Ronny

immer auf Use Cases bezogen, wie sie es halt

Ronny

vorher gelöst haben und nachher. Also es war ein ganz

Ronny

Also selbst wenn man jetzt sagt, oh, diesen Case hatte ich noch nie, ich muss noch nie eine Custom Unique Constraint definieren, dann war halt immer so, ah, aber das sieht tatsächlich nützlich aus, weil diesen Fall kann ich mir nicht vorstellen, weil man ihn halt präsentiert bekommen. Also wie gesagt, das war deutlich, auch für mich, deutlich nützlicher, als ich es mir eigentlich vorgestellt hatte, weil ich dachte eigentlich, ich weiß schon alles, aber tatsächlich habe ich scheinbar das Frontend auch nicht so genau gelesen.

Ronny

Ja, dann hat er es gut gelöst.

Johannes

Das ist aber auch wirklich so eine Sache, dass in vielen Frameworks

Johannes

hat man ja diesen Death by a Thousand

Johannes

Papercuts. Das sind einfach

Johannes

viele, viele kleine Sachen, die gut

Johannes

oder nicht so gut sind und

Johannes

ich glaube, dass das tatsächlich eine der Stärken von Django

Johannes

ist, dass die halt auch an diesen Kleinigkeiten arbeiten

Johannes

und dann auch sagen, wir haben an diesen Kleinigkeiten

Johannes

gearbeitet und dass die sich dann so langsam mit

Johannes

der Zeit auflösen.

Ronny

Ich kann ja auch nochmal in diesem

Ronny

Kontext erwähnen, dass ich jetzt in 5.2 meine erste

Ronny

Django-Contribution drin habe.

Ronny

Oh, herzlichen Glückwunsch.

Johannes

Was bringst du uns denn?

Ronny

Ich habe für, im Zuge von meinem Pony Express Package,

Ronny

habe ich nach der Django Con Vigo einen Vortrag darüber gehalten.

Ronny

Das ist ein Package, was E-Mailing ein bisschen vereinfacht.

Ronny

Also wirklich die programmatische Erstellung und Testen von E-Mails,

Ronny

was ich relativ verbose finde,

Ronny

wenn man das mit den gegebenen Django Tools macht.

Ronny

Und fürs Testing, eine E-Mail hat ja nicht nur Text,

Ronny

sondern die hat ja verschiedene Text, also Inhalte.

Ronny

Also die kann theoretisch Medieninhalte haben.

Ronny

Es gibt den HTML-Inhalt und den Plaintext-Inhalt.

Ronny

Die sind, glaube ich, die relevantesten für die meisten modernen E-Mail-Clients.

Ronny

Und man musste im Endeffekt wirklich manuell sich durch ein multidimensionales Dictionary

Ronny

in den E-Mail-Alternatives durchgraben, wenn man das testen möchte.

Ronny

Dafür haben wir in dem Package für die Testsuit einen Wrapper geschrieben.

Ronny

Also die Testsuit nicht fürs Package, sondern für die E-Mail-Klassen,

Ronny

die man produziert mit dem Package.

Ronny

Und habe dann vorgeschlagen, ob das nicht ein relativer No-Brainer wäre,

Ronny

wenn man sowas auch irgendwie den E-Mail-Alternatives geben könnte.

Ronny

Das ist quasi alle, also diese, wie nennt man das, dieses Text-slash-JavaScript-Script-slash-irgendwas,

Ronny

diese, ich komme gerade nicht drauf, Name-Types?

Ronny

Diese Trainer-Types.

Ronny

Content-Types, genau.

Ronny

Ja, ach so, Content-Types.

Ronny

Ja, genau, Content-Types, dass man quasi alles, was mit Text-slash anfängt und was man hinzugefügt,

Ronny

was in 99% der Fälle wahrscheinlich immer nur Plain und HTML sein wird,

Ronny

trotzdem, dass man das dann aus dem Objekt zurückbekommt und dann halt im Test sehr einfach darauf ersorgen kann,

Ronny

ohne halt sich durch irgendwelche nicht dokumentierten APIs durchzugraben.

Ronny

Und genau, das ging auch tatsächlich relativ gut durch.

Ronny

Ich habe dann nochmal was anderes probiert nach meinem Erfolgserlebnis

Ronny

und habe dann genau gemerkt, was Carlton heute in seinem Vortrag, ich greife vor,

Ronny

aber was er sagt, kann ich nachher nochmal meine persönliche Erfahrung dazu spiegeln.

Ronny

Ja, da werden wir auf jeden Fall gleich nochmal eingehen.

Dominik

Das ist doch das Thema von gestern, was wir dann, glaube ich, nochmal ein bisschen aufmachen,

Dominik

wo es umgeht, wie man denn partizipieren kann an Django.

Dominik

Aber vielleicht machen wir chronologisch weiter mit den Talks.

Dominik

das ist ja gleich mal echt so eine blöde Idee.

Johannes

Ja, der nächste war Solving a Python Mystery.

Johannes

Ah ja. Oder wart ihr bei jemandem bei dem

Johannes

Quality-Workshop? Den da

Johannes

war ich auch nicht drin. Nee, leider nicht.

Johannes

Wollte ich zwar auch irgendwie, aber irgendwie

Johannes

hat es nicht geklappt.

Johannes

Genau, Solving a Python Mystery, der war

Johannes

großartig. Aber der war gut, der war sehr gut.

Johannes

Insofern ist er jetzt nicht so traurig. Nicht so, dass ich den jetzt

Johannes

anwenden könnte, aber einfach mal

Johannes

mit SJS überall reingucken

Johannes

und schauen, was da für Dateien

Johannes

offen sind und so.

Jochen

Genau, da ging es hauptsächlich um so

Jochen

Dinge, die man halt, also was ist, wenn man

Jochen

ein Produktionssystem hat, wo man nicht so gut drauf gucken kann

Jochen

und man hat bloß halt

Jochen

vielleicht Log-Files oder man kann nur extern drauf gucken,

Jochen

man kommt nicht in die Prozesse rein. Ja, oder hat man

Johannes

eine eingeschränkte Shell drauf, sowas? Ja.

Jochen

Aber man kann halt, ja, also zum Beispiel

Jochen

man hat einen Docker-Container, wie kommt man an das Environment?

Jochen

Halt über das

Jochen

Proc-File-System kommt man da halt dann ran

Jochen

und dann hat man die ganzen

Jochen

Credentials, die man so braucht, um halt in die anderen Sachen

Jochen

reingucken zu können

Jochen

und dann kann man

Jochen

viel mit S-Trace machen. Und ja, das

Jochen

mache ich auch sehr gern.

Jochen

Und naja,

Jochen

es gibt halt noch so ein paar andere Sachen, die man halt auch

Jochen

sich angucken muss. So wie viel I.O.

Jochen

Operationen pro Sekunde gibt es denn eigentlich auf der

Jochen

Maschine? Was macht die denn? Was schreibt die?

Jochen

Was lief die denn so? Und

Jochen

er hatte, ich glaube, das erste Beispiel, was er hatte, war irgendwie

Jochen

ein Kafka, was irgendwie

Jochen

25 Messages pro Sekunde

Jochen

gemacht hat oder so. Und alle waren so halbwegs zufrieden.

Jochen

Das ist übrigens auch etwas, was ich immer wieder sehe bei Kunden oder so,

Jochen

dass sie halt mit Dingen zufrieden sind und man

Jochen

sagt, Moment, das kann nicht sein.

Jochen

Das ist einfach so weit, dass es mehrere Größenordnungen von dem entfernt, was man erwarten würde.

Jochen

Das kann einfach nicht sein.

Jochen

Aber oft wissen Leute halt nicht, dass das eigentlich irgendwie anders aussehen sollte und denken dann, ja, so ist das halt.

Jochen

Und dann machen sie halt einen Kafka-Cluster, statt halt mal zu gucken, warum das nicht so richtig funktioniert.

Jochen

Genau, war da halt so eine Geschichte, TCP, No-Delay kann man irgendwie setzen, wenn man…

Jochen

Macht Python ja auch an Stellen weit.

Jochen

Genau, macht Python.

Jochen

Der Kafka-Client macht es nicht.

Jochen

macht es irgendwie nicht. Und dann sieht man

Jochen

so ein typisches 40-Millisekunden-Delay

Jochen

irgendwie. Und wenn man das irgendwo

Jochen

sieht, dann weiß man schon so, oha.

Jochen

Genau. Und

Jochen

ja, solche Sachen halt. Und

Jochen

was war das? Was hat er noch alles

Jochen

erzählt? Ich weiß nicht.

Jochen

Es war schon, es ging schon

Johannes

sehr weit runter in den Kernel. Das war eigentlich

Johannes

das Interessante, dass der halt nicht

Johannes

Python debugt hat, sondern er hat eigentlich

Johannes

Linux und File Handles

Johannes

und Kernel Traces debugt.

Jochen

Ja, also von außen solche Sachen,

Jochen

debuggen, das ist eigentlich super einfach.

Jochen

Und dann hat er ein Diagramm irgendwie auf einer Slide

Jochen

gezeigt und das war halt ultra kompliziert,

Jochen

was er alles an Teilen irgendwie

Jochen

vom Kernel bis zu...

Jochen

Und dann gibt es auch noch irgendwie

Jochen

eBPF-Trace oder so, es gibt ja dieses tolle neue Interface

Jochen

da, so Berkeley

Jochen

Packet-Filter-Interface

Jochen

im Kernel, da kannst du halt auch tatsächlich

Jochen

die Syscrolls selber tracen,

Jochen

du kannst eigenen Code in den Kernel

Jochen

injecten.

Jochen

Ja, das hört sich simpel an.

Jochen

Der dann im Kernel

Jochen

vom Kernel formal bewiesen wird,

Jochen

dass er nichts Böses tut und dann ausgeführt werden kann.

Jochen

Ja, dann.

Jochen

Und jemand, den wir

Jochen

auch schon im Podcast hatten, Martin, hat dafür

Jochen

einen Python-to-intermediate-language

Jochen

Compiler mal geschrieben.

Jochen

Dann kann man das auch in Python machen.

Jochen

Er meinte auch, das verwendet er auch häufig,

Jochen

wenn er noch mal tiefer

Jochen

gehen muss.

Jochen

Ja, ansonsten weiß ich,

Jochen

ich kann mich nicht mehr so wirklich erinnern an alle

Jochen

Details, aber es war halt so, ja, also man

Jochen

muss immer mal gucken und

Jochen

Und oft kann man halt mit so Standard-Linux-Tools irgendwie dann doch rauskriegen, was da irgendwie schiefläuft an Produktionssystemen.

Jochen

Also ja, aber man merkte, der hatte richtig viel Erfahrung und schon eine Menge gesehen.

Ronny

Mein Hauptgedanke war, ich bin dankbar für die Abstraktionsebene, die wir inzwischen in unserem Berufsfeld haben.

Ronny

Dass das Dinge sind, mit denen ich mich einfach nicht beschäftigen muss.

Johannes

Mein Gedanke war, dass ich dankbar bin, dass es so Leute gibt wie ihn, der das macht.

Jochen

Er meinte auch erst, wenn er irgendwo einen 500er-Fehler sieht oder sowas, dann kann er nicht mehr schlafen.

Jochen

Er muss das irgendwie rauskriegen.

Ronny

Das geht auch ohne Unix-Debugging.

Johannes

Danach war der Celery-Vortrag, also der Parallelisierungsvortrag mit Celery.

Johannes

Den fand ich jetzt nicht so, der ist nicht so tief reingegangen, wie ich gedacht hätte, dass man kann.

Johannes

Und für mich war es mehr so eine Bestätigung, dass die Sachen, die ich rausgefunden habe, nicht ganz abwegig sind.

Johannes

Und die waren?

Johannes

Ja, dass du Tasks in möglichst kleine Teile aufteilst, dass du ein Modell hast mit einem Status drauf, dass du den Status atomar änderst.

Johannes

Also in der Transaktion machst du ein Select for Update auf dieses Modell, änderst den Status, speicherst den.

Johannes

Das hat er nicht gezeigt, dann mache ich es normalerweise so, dass ich an dem Punkt die Transaktion beende.

Johannes

Weil dann habe ich ja mein Modell in der Hand mit dem korrekten Status,

Johannes

dass ich kein anderer mehr nehmen kann.

Johannes

Und dann kannst du diesen Task abarbeiten und dann hast du nochmal so einen Block,

Johannes

der dann den Status auf die nächste Stufe stellt, sodass es weiterverarbeitet werden kann.

Johannes

Und dieses Muster, das ist so was, ich weiß nicht,

Johannes

vielleicht bin ich da als Einziger draufgekommen oder auch nicht.

Johannes

Und dieser Vortrag war so ein bisschen die Bestätigung,

Johannes

ich bin nicht als Einziger draufgekommen.

Johannes

Das ist immer sehr gut, weil das eben bedeutet, dass man nicht was ganz Verrücktes macht.

Dominik

Also du hast ein Statusmodell, das hält dann immer da, wo bist du denn gerade

Dominik

und das wird dann immer transaktionsfroh angefasst

Dominik

und du füllst das dann auf Dinge,

Dominik

die auf dieses Statusmodell...

Johannes

Ja, und wenn du in so ein Task reingehst,

Johannes

dann erwartest du,

Johannes

dass das Objekt, was du bearbeitest,

Johannes

in einem bestimmten Status ist

Johannes

und änderst es in einen anderen Status,

Johannes

damit kein anderer Task das anfassen kann.

Johannes

Direkt am Anfang?

Johannes

Ja, das ist das allererste, was du machst,

Johannes

bevor du irgendwas anderes machst.

Dominik

Änderst du das auf ein Processing oder sowas?

Dominik

Ja, genau.

Dominik

Also es kommt darauf an,

Johannes

je nachdem, was du halt für Status hast.

Johannes

Es kann ja sein, dass du durch mehrere Stufen

Johannes

durch musst. Genau, ich meine, du änderst

Dominik

das nicht direkt in den nächsten, sondern in den

Johannes

Intermediaten. Sondern du änderst das in einen,

Johannes

der sagt, dass es gerade

Johannes

bearbeitet wird auf eine bestimmte Art und Weise

Johannes

und dass kein anderer dieses gerade bearbeiten

Johannes

darf. Und dann machst du

Johannes

deine Verarbeitung da drauf

Johannes

und wenn die fehlschlägt, dann

Johannes

machst du es rückgängig und gehst zurück auf den vorherigen

Johannes

Status, weil dann kannst du nämlich einen Retry machen.

Johannes

Wenn die funktioniert, dann stellst du

Johannes

auf den nächsten Status, sodass der nächste Prozess

Johannes

Schritt gehen kann. In der

Johannes

einfachsten Stufe ist es, du hast einen, der ist

Johannes

Pending, dann hast du Processing und dann hast du Done.

Johannes

Aber du kannst

Johannes

natürlich diesen Aufbau, kannst

Johannes

natürlich x Stufen haben. Du kannst ja 5

Johannes

verschiedene Verarbeitungsschritte oder 100 verschiedene

Johannes

oder dann auch verzweigt haben.

Johannes

Und das Wichtige

Johannes

ist aber, dass du tatsächlich dieses Statusfeld hast.

Johannes

Eins, was Warte auf Verarbeitung heißt

Johannes

und eins, das heißt, wird verarbeitet.

Johannes

Und dann kannst du sicher gehen, dass

Johannes

du den nicht doppelt verarbeitest. Wenn du das nämlich das erste

Johannes

machst, das erste, was du machst, du holst

Johannes

dir den aus der Datenbank mit

Johannes

Datenbanktransaktion, einem Select-for-Update.

Johannes

Das Select-for-Update und genau das, ja.

Johannes

Genau, das Select-for-Update sorgt genau dafür,

Johannes

dass wenn du den rausholst

Johannes

aus der Datenbank mit dem Status und

Johannes

der ID, das ist sozusagen der

Johannes

kritische Filter, du suchst nach der ID und nach

Johannes

dem Status und dann kriegst du von der

Johannes

Datenbank eben genau einen

Johannes

oder keinen. Wenn du keinen kriegst,

Johannes

sagst du, gut, dann hat es wohl schon jemand anders gemacht oder der

Johannes

ist schon fertig oder was auch immer.

Johannes

Und wenn du einen kriegst, machst du weiter.

Johannes

Und so schützt

Johannes

dich quasi davor, dass du

Johannes

diese Race Conditions in die Datenbank rein

Johannes

trägst. Dass du sagst,

Johannes

okay, der verarbeitet jetzt was und der

Johannes

verarbeitet jemand anderes auch noch irgendwas.

Johannes

Und er hat das gestern Idempotency

Johannes

genannt, also Idempotenz.

Johannes

Meiner Meinung nach nicht 100% korrekt

Jochen

genannt. Darfst du es ja nicht

Jochen

ein paar Mal ausführen.

Johannes

Weil Idempotenz eigentlich bedeutet, wenn du es mehrmals

Johannes

ausführst, hast du das gleiche Ergebnis.

Johannes

So ein bisschen

Johannes

der Outcome

Johannes

ist das gleiche. Du hast zwei nichtige

Johannes

Begriff dafür. Korrekte Idempotenz.

Johannes

Naja, der korrekte Begriff wäre hier

Johannes

irgendwie Locking oder sowas.

Johannes

Du hast einen Lock da drauf und das

Johannes

hast du so eingerichtet, dass es wirklich nur eine kommt.

Johannes

Wie gesagt, dieser Talk war

Johannes

für mich hauptsächlich Bestätigung dessen,

Johannes

dass das, was ich mir ausgedacht habe, nicht

Johannes

ganz verrückt ist.

Johannes

Das ist ja ungeheuer viel wichtig, ungeheuer viel

Johannes

wert, dass du nicht so,

Johannes

ja, man baut sich ja oft so Sachen und

Johannes

dann kommt man auf irgendwelche Lösungen und

Johannes

irgendwann findet man raus, das ist absoluter Quatsch.

Johannes

Oh, ich weiß nicht,

Johannes

leider. Das ist dir noch nie passiert.

Johannes

Bei mir passiert das ständig.

Johannes

Und jetzt mal das andere Erlebnis

Johannes

zu haben, es ist nicht ganz Quatsch, was du dir

Johannes

ausgedacht hast.

Johannes

Schön.

Jochen

Ja, genau, genau. Aber

Jochen

ja, Celery immer so ein bisschen. Aber der macht

Jochen

dann auch so Dinge mit Workflows und keine Ahnung,

Jochen

das ist kompliziert. Und ich denke so, ha, lieber nicht, so was

Dominik

macht man das nicht. Wie ist denn jetzt der Stand mit den

Dominik

Dango-Tasks? Die sollten doch jetzt langsam

Jochen

mal. Ja, ist aber noch nicht. Die kommen auch

Jochen

irgendwann. Kommt jetzt dann vielleicht demnächst.

Jochen

Aber ich glaube, es geht ja vor allem nur ums

Ronny

Interface erstmal. Es gibt ja

Ronny

dieses Package, wo das jetzt erstmal

Ronny

quasi so eine Art, ich glaube, die Datenbank-Task

Ronny

als Primärding

Ronny

implementiert werden und

Ronny

in Django Core soll tatsächlich nur der Dummy-Taskrunner,

Ronny

den man dann für Tests nutzen kann, und das

Ronny

Interface. Und diese Idee mit diesen

Ronny

Interfaces finde ich super spannend. Es gibt ja jetzt auch

Ronny

starke Überlegungen, die ganze

Ronny

Authentifizierung bei Django, was ja auch oft kritisiert

Ronny

wird, dass im User-Model ein sehr Western-

Ronny

centric, mit Vorname-Nachname-Konzept,

Ronny

das passt oft nicht in vielen Use-Cases

Ronny

oder auch anderen Kulturen,

Ronny

dann viele, also es wird dann username-standardmäßig

Ronny

genutzt, du kannst das irgendwie opt-outen,

Ronny

es gibt so Packages, E-Mail-Adresse

Ronny

ist nicht unik, also ganz viele Dinge und

Ronny

das eigentlich nicht die richtige Lösung wäre, zu sagen,

Ronny

wir ändern das jetzt oder wir bauen jetzt was Neues

Ronny

dazu, sondern dass man das einfach auch Plug-and-Play

Ronny

macht, wie halt auch die Datenbank-Anbindung

Ronny

Plug-and-Play ist, wie die Caches Plug-and-Play sind,

Ronny

wie mehr oder weniger eigentlich alles Plug-and-Play ist

Ronny

und da ein Authentifizierungssystem

Ronny

zu haben, wäre natürlich super und ich glaube, die auf diesem gleichen

Ronny

Konzept basiert auch dieses Tasks,

Ronny

ist im Endeffekt das Django Core, im Endeffekt mit

Ronny

jedem kompatiblen Task-Runner

Ronny

oder Task... Ist es Task-Runner? Ich weiß es

Ronny

nicht genau, was die dann... Background-Task

Ronny

Backend.

Ronny

Ja, Backend, genau. Task-Backend

Ronny

dann kommunizieren kann, wenn man dann sagt, ich möchte

Ronny

ein Eins mit Celery, dann baust du dir eins und wenn du

Ronny

sagst, mir reicht die Datenbank, dann baust du dir

Ronny

dafür eins oder nimmst das, was da ist und

Ronny

das... Ja, ich warte

Ronny

da aber auch schon sehnsüchtig drauf.

Johannes

Wir können auch noch kurz vorgreifen auf einen der

Johannes

Lightning-Talks, weil da war noch mal

Johannes

der...

Johannes

der Mann da, der auch über die Python-Mystery gesprochen hat

Johannes

und hat mit so ein kleines bisschen Zorn gesagt

Johannes

hier, Celery, das ist alles Mist

Johannes

und das ist viel zu viel Aufwand

Johannes

und deshalb habe ich mir mein eigenes geschrieben.

Johannes

Und das Interessante daran war,

Johannes

dass er das gleiche Interface benutzt hat

Johannes

wie das von Celery. Also das ist nicht

Johannes

das Django-Tasks-Interface, sondern

Johannes

das von Celery. Das heißt, es ist

Johannes

ein Drop-in-Replacement und man kann einfach seine Lösung

Johannes

verwenden, wenn man keinen Bock mehr hat auf Celery.

Johannes

Und wenn es nicht so funktioniert, wie man es möchte,

Johannes

geht man zurück. Fand ich auch

Johannes

eine interessante Idee.

Ronny

Was ich daran sehr interessant fand, ist,

Ronny

dass wenn man viele nutzen,

Ronny

also Celery kann ja nicht mit der Datenbank als Broker

Ronny

sprechen, aus Gründen, die niemand so genau

Johannes

weiß. Ja, aber es gibt so ein

Johannes

Interface dafür, oder? Ja, aber

Johannes

das wird immer, das ist rot umrandet

Ronny

und da habe ich nicht. So, das heißt, die

Ronny

meisten Leute nutzen halt dann Redis oder Revit im

Ronny

Queue, irgendein Derivator von Redis ist das bekannteste,

Ronny

viele Leute nutzen Redis und dann

Ronny

gibt es halt diesen Disclaimer auf der Webseite, dass wenn man

Ronny

halt Scheduled, also wenn man quasi

Ronny

Tasks in die Zukunft

Ronny

plant, dass es

Ronny

damit Redis-Issues gibt, das ist da seit

Ronny

also wir, uns ist das glaube ich 2018

Ronny

auf die Nase gefallen

Ronny

und unser

Ronny

wir haben ja immer gesagt, okay, dann nutzt man Redis-MQ, das war kein Problem

Ronny

aber im Endeffekt haben wir auch dann einfach

Ronny

angefangen, wir planen einfach keine Tasks mehr

Ronny

in die Zukunft, weil du kannst ja einfach

Ronny

quasi die schedulen lassen, so

Ronny

aber du kannst ja auch einen Scheduler verwenden, du kannst andere Sachen

Ronny

wir haben das wirklich mehr oder weniger

Ronny

gut ausgebaut bekommen, kein Problem mehr, Kuh vom Eis

Ronny

und dann meinte dann

Ronny

in einem Lightning-Talk erst, da meinte er so,

Ronny

ja, ja, ihr denkt, ihr nutzt

Ronny

die nicht. Aber in dem Moment, wo

Ronny

ein Retry kommt, nutzt die plötzlich

Ronny

schon. Und das war mir nicht bewusst. Und das ist dann

Ronny

so ein, oh, dann sollte ich vielleicht

Ronny

wirklich kein Redis zusammen mit Celery verwenden.

Johannes

Ja, Ivar Skalvans

Johannes

ist der Name.

Johannes

Ich verstehe auch nicht so genau, warum

Dominik

mit dem Schedule, das funktioniert immer nicht so,

Dominik

wie man das richtig will. Und das Package

Dominik

heißt übrigens Django

Ronny

minus Task Q, also

Ronny

wie der Buchstabe. Das heißt, irgendwer mal

Dominik

Spaß daran hat, das auszuprobieren. Ja, es gibt leider so ein bisschen

Dominik

viele Django-Task-Sachen, die alle so

Dominik

ganz ähnlichen Name-Mangels sind.

Dominik

Ja, kann ich verlinken, auf jeden Fall.

Dominik

Genau.

Johannes

Genau, dann kam so ein bisschen,

Johannes

ging es so ein bisschen ins Abendprogramm rein, da war es schon

Johannes

17 Uhr und

Johannes

dann kam der Words-Vortrag.

Johannes

Lock, Shells, Caches and other strange words.

Johannes

Von einem

Johannes

Dortmunder, das fand ich auch interessant.

Johannes

Ja, das ist auch relativ nah bei uns dran,

Johannes

aber noch nie gehört.

Johannes

Nee, ist ungeheuer weit weg, finde ich.

Johannes

Ja? Ja, gut.

Johannes

Hörertreffen in Stuttgart.

Johannes

Die machen sie jetzt dafür ab.

Johannes

Genau, der Vortrag...

Dominik

Wir haben übrigens ganz kurz zum Hörertreffen

Dominik

schon uns entschieden für...

Dominik

Er kam ja immer noch um.

Dominik

Da ging es dann schon so ein bisschen

Johannes

ins Amtprogramm rein, hat er auch selber gesagt.

Johannes

War ein sehr unterhaltsamer Vortrag, fand ich.

Johannes

War sehr schön gemacht, war sehr nett, hat einfach so ein bisschen über die Etymologie gesprochen

Johannes

und über die lustigen Herkünfte von den Wörtern, die wir benutzen, die aber eigentlich nautischen Ursprungs im 17. Jahrhundert sind.

Ronny

Was mich tatsächlich schockiert hat, ist, dass die Story mit dem Bug, also der Motte, in dem IBM kommt, dass das nicht stimmt.

Ronny

Also, dass das nicht die Ursache davon ist. Das habe ich schon oft rumerzählt.

Ronny

Das ist auch ein schönes Bild.

Dominik

Das musst du mir nochmal erzählen. Ich habe den Tag nämlich verpasst. Warum stimmt das nicht?

Ronny

Also es gibt diesen Eintrag von dieser Computermitarbeiterin, die die Motte aus dem Gerät gefischt hat und dann in ihrem handgeschriebenen Logs, also wirklich das, was heute halt auf dem System irgendwie im Hintergrund läuft, in einem Buch.

Ronny

Und da hat sich die Motte eingeklebt und hat das dann so geschrieben als, wir haben gerade den ersten Bug gefunden. Tatsächlich war das aber ironisch gemeint, weil das Wort Bug auf, ich glaube Edison war es, zurückgeht, der geschrieben hat, sein Ideenfindungsprozess ist so, wenn er eine neue Idee hat, dann kommt das so in einem Schwall heraus und danach kommen wie kleine, wie kleines Ungeziefer, diese ganzen Probleme in der Realität, mit denen er sich dann auseinandersetzen muss, bevor er dann irgendeine Lösung hat, die er wirklich verkaufen kann oder nicht.

Dominik

Achso, die kleinen Käfer. Und dann hat sie gesagt, okay, jetzt haben wir wirklich einen echten Käfer von ihr, die Mutter.

Johannes

Das fand ich aber auch sehr interessant, dieses Zitat, weil das ist ja auch ein Gefühl, was man so kennt.

Johannes

Dass man einmal so einen Inspirationsschub hat und dann stellt sich da die Realität in den Weg.

Johannes

Und du weißt aber eigentlich erst, wenn du diese ganze schmutzige Arbeit gemacht hast, ob es ein Erfolg oder ein Misserfolg ist.

Jochen

Ja, die Idee selber kannst du das nicht ansehen.

Ronny

Außer du kennst jemanden, der den Weg schon gegangen ist und kannst ihn fragen.

Johannes

Ja, aber das ist keine neue Idee. So erfindest du die Glühbirne nicht.

Johannes

Ja.

Johannes

Gut, und danach

Johannes

gab es natürlich noch Lightning Talks. Lightning Talks sind

Johannes

immer super, finde ich großartig. Da ist immer eine

Johannes

schöne Auswahl.

Johannes

Und das war auch gestern so.

Johannes

Apropos Lightning Talks, ich glaube, es gibt

Dominik

heute interessante Lightning Talks. Machst du ein bisschen Spoiler?

Johannes

Ich weiß nur von einem Lightning Talk, den es heute gibt,

Johannes

weil ich habe mich angemeldet, unvorsichtigerweise

Johannes

zu einem Lightning Talk.

Johannes

Und ich werde in fünf Minuten darüber sprechen,

Johannes

wie man in fünf Minuten einschlafen kann.

Johannes

Und wie man das hinkriegt, in fünf Minuten

Johannes

einzuschlafen.

Dominik

Ja, also wenn ihr dran seid, dann habt ihr es noch nicht geschafft.

Johannes

Ich habe heute Abend dann fünf Minuten Zeit.

Johannes

Mal schauen, bei wie vielen es klappt.

Johannes

Okay.

Dominik

Und Ronny, du wolltest auch was über deinen Lightning Talk erzählen.

Ronny

Genau, ich hatte eigentlich vor, mich gestern schon

Ronny

auch für einen Lightning Talk anzumelden.

Ronny

Ich habe leider gestern ein bisschen geschwächelt,

Ronny

gesundheitsbedingt, habe es dann nicht gemacht.

Ronny

Jetzt habe ich gerade gehört, dass alle Slots schon voll sind.

Ronny

Von daher werde ich nicht über das Thema reden,

Ronny

aber ich kann es ja hier ganz kurz präsentieren.

Ronny

Morgen ist ja auch schon voll, habe ich gehört.

Ronny

Auch schon voll, heile nein.

Ronny

Genau, es geht darum, dass ich habe vor einiger Zeit,

Ronny

ich habe da auch einen Blogpost drüber geschrieben,

Ronny

hatte ich den Fall, dass wir so eine Art Django-DevOps-Geschichte

Ronny

in so einem großen Monolithen brauchten.

Ronny

Es hatte zu tun, ganz konkret, um Django Migrations aufzuräumen

Ronny

für einen relativ spezifischen Case, für ein Projekt mit sehr, sehr langen

Ronny

Deployment-Zyklen und so.

Ronny

Und ja, das aus Gründen nicht funktioniert hat

Ronny

und so wegen der Circular Dependencies auflösen,

Ronny

dauert zu lange, etc., etc.

Ronny

Auf jeden Fall habe ich dann mich relativ stark dafür eingesetzt

Ronny

und habe da beim Kunden auch so ein paar Hierarchie-Ebenen,

Ronny

Hierarchie-Träbchen rauf und runter gemacht,

Ronny

um die davon zu überzeugen,

Ronny

dass wir das Ding dafür einfach Open Source machen könnten

Ronny

und sie es trotzdem voll zahlen.

Ronny

Was am Anfang für ein paar gehobene Augenbrauen geführt hat,

Ronny

weil warum Open Source?

Ronny

Hä, wir zahlen doch.

Ronny

Warum Sachen verschenken?

Ronny

Genau.

Ronny

Und ich habe dann aber nachher tatsächlich einen ganzen Haufen Argumente gefunden, warum das einfach für alle Beteiligten besser ist.

Dominik

Weil man dann endlich eure Fehler finden kann, die dann auch öffentlich verfügbar und einsehbar sind.

Ronny

Vor allem auch, weil wir ansonsten das halt irgendwie den Monolithen reingewurschelt hätten.

Ronny

Und sobald irgendwann mal ein Problem kommt, sowas fasst ja nie wieder einer freiwillig an.

Ronny

Wenn das jetzt Open Source ist, dann würde ich mich zumindest, solange ich es aktiv maintaine, mich drum kümmern.

Ronny

Und ich hatte bei zwei Themen, wo ich selber...

Dominik

Open Source war also ein Maintaining-Versprechen. Interessant, ja?

Ronny

solange ich mich drum kümmere zumindest.

Ronny

Da war die Kinderplanung

Ronny

noch nicht so weit fortgeschritten.

Ronny

Wird mich wahrscheinlich irgendjemand auf meine

Ronny

Python-Podcast-Folge von vor zwei, drei Jahren

Ronny

festnageln, wo ich gesagt habe,

Ronny

das muss man immer weiter maintainen.

Ronny

Nein, genau.

Ronny

Man kann ja auch schlecht maintainen.

Ronny

Ich maintaine Sachen aber teilweise

Ronny

sehr, sehr schlecht.

Ronny

Nein, aber vor allem, dass das Schöne an der Geschichte ist,

Ronny

nachdem ich das gemacht habe,

Ronny

den Artikel darüber geschrieben habe,

Ronny

und es halt wirklich auch im Endeffekt eine Win-Win-Situation war,

Ronny

auch wirklich die Entkoppelung auch dann da, weil man gar nicht in die

Ronny

Verlegenheit kam, irgendwas projektspezifisch zu machen,

Ronny

hatte ich dann

Ronny

irgendwann plötzlich

Ronny

ein Issue von

Ronny

einer

Ronny

scheinbar sehr, sehr kompetenten

Ronny

Entwicklerin, die geschrieben hat,

Ronny

dass sie folgende zwei Probleme

Ronny

identifiziert hat. Und

Ronny

das eine hatte ich sogar literally as to do im Code,

Ronny

weil ich wusste, dass ich das eigentlich noch fixen muss, aber

Ronny

ich brauchte es halt für einen Case gerade nicht, darum habe ich es dann

Ronny

offen gelassen. Dann hat sie mich gefragt,

Ronny

ob sie das lösen darf und hat dann zwei absolut perfekte Merge-Requests,

Ronny

wo ich wirklich absolut oder fast nichts daran aussetzen konnte,

Ronny

delivered, die einfach funktioniert haben, alles durchgetestet.

Ronny

Und das sind halt Sachen, die hätten die ansonsten halt niemals da reinbekommen.

Ronny

Und genau, ansonsten, ich nutze das natürlich auch für meine Projekte.

Ronny

Und das ist eine sehr schöne Success-Story.

Ronny

Und ich glaube, wenn das mehr Leute im Kopf haben, dass das geht,

Ronny

dann könnte man sehr, sehr viel mehr in Open Source einfach leveragen über Kundengeld.

Ronny

wenn man es halt einfach im Kopf hat.

Dominik

Und das wolltest du quasi als Access-Story verkaufen

Dominik

und ein bisschen Werbung zu machen.

Dominik

Was war das genau? Worum ging es da?

Dominik

Also ich habe, du hast gesagt, Deployment-Zeugs bei Django.

Ronny

Also genau, das Package heißt Django Migration Zero.

Ronny

Es gibt leider, ich habe auch eine Sache,

Ronny

wenn man Packages erstellt, checkt vorher mal,

Ronny

was es für Packages gibt, die ähnlich heißen.

Ronny

Ups. Es gibt nämlich

Ronny

Mig Zero und Migration Zero Django

Ronny

und ich glaube Migration Zero ohne Django.

Ronny

Ja.

Ronny

Ich habe einen Artikel, ich habe in Blog-Posts

Ronny

das verlinkt und noch einen Artikel drüber geschrieben.

Ronny

Das heißt, Google packt mich jetzt auf Platz 1, glaube ich.

Ronny

Yay!

Ronny

Aber genau, also es geht einfach darum, dass wenn man, wir bei uns nutzen aus historischen Gründen, wie du vorhin auch meintest, man hat mal so eine Lösung im Kopf und dann nutzt man die immer weiter.

Ronny

Wir haben, um quasi Object-Ownership zu haben, haben wir quasi in so einer, in unserer Toolbox-Package, wo so kleine Dinge, die sich nicht als eigenes Package lohnen, haben wir quasi so dieses Created-By, Last-Modified-By und das Ziertel auf den User, was dazu halber führt, dass wir sehr, sehr viele Circular Dependencies haben.

Ronny

Wenn wir ein Custom-User-Model haben, was wir aus historischen Gründen,

Ronny

weil früher war das alles sehr mühsam mit Django, mit Auth,

Ronny

wie immer mit auch Modelswitchen und haben wir meistens uns für ein Custom-Model entschieden,

Ronny

was wir heute nicht mehr tun, aber es war halt ein älteres Projekt.

Ronny

Und das heißt, du hast sehr, sehr, sehr, sehr viele Circle Dependencies.

Ronny

Und wenn du Squashen möchtest, musst du die, also das dauert, weiß ich nicht, Tage, glaube ich,

Ronny

hätte das gedauert zu lösen, für den Effekt, dass ich weiß, welche Migrations mal da waren,

Ronny

aber das ist halt kein Packages-Deployed-System.

Ronny

Also was auf ein Produktivsystem angekommen ist, da ist Ende.

Ronny

Ich muss nicht wissen, was danach passiert ist,

Ronny

was davor passiert ist. Das heißt, es ist einfach

Ronny

determiniert und ich kann mir halt einfach

Ronny

auch, was Migration Zero im Endeffekt ist,

Ronny

ist, du gehst halt einfach hin und löscht alles.

Ronny

Und startest halt neu.

Ronny

Haben wir alle schon oft gemacht.

Ronny

Create Migrations lustigerweise nicht das Problem

Ronny

hat, was Squashing hat. Das kriegt es einfach

Ronny

hin. Ich weiß nicht wie, aber es kriegt es hin.

Ronny

Und

Ronny

genau, von daher ist das halt für,

Ronny

wenn man einfach eine Applikation hat und regelmäßig

Ronny

aufräumen möchte. Der Trick ist halt, dass ich

Dominik

Du hast die Datenbank schon einmal so gezogen, dass der Stand

Dominik

stimmt und dann schmeißt du alle Migrations weg und machst neue Migrations hin.

Ronny

Genau und du musst halt, du kannst halt

Ronny

in ganz, ganz fiese Edge Cases kommen, die nicht

Ronny

so alt wahrscheinlich sind, aber wenn du halt ein Produktionssystem

Ronny

hast mit Uptime und sowas, möchte man halt einfach

Ronny

nicht sich solche Dinge einbauen.

Ronny

Das heißt, du musst halt auch gucken, dass die Django Migration Table

Ronny

im Endeffekt den

Ronny

Apply Cache von

Ronny

Django, muss man halt auch aufräumen und damit man

Ronny

halt, weil niemand gerne auf der Produktionsdatenbank

Ronny

herumfudelt, habe ich quasi ein Skript geschrieben,

Ronny

dass das für einen macht und du kannst es von Django Admin

Ronny

quasi an- und ausstellen, also sagst, okay, ich weiß,

Ronny

es kommt ein Deployment, das nächste Deployment, das ist,

Ronny

mach den Haken an, dann macht ihr das quasi für

Ronny

einen selber, das heißt, du musst nicht mehr auf der

Ronny

Datenbank rumfrudeln, du musst im Endeffekt einfach nur

Ronny

noch das tun, was du gerne machst, irgendwas im

Ronny

Code ändern, committest das und der Rest

Ronny

passiert dann automatisch und

Ronny

genau. Das ist sehr, ich finde das

Ronny

für den Use Case sehr konvenient.

Ronny

Ja, cool. Coole Sache.

Ronny

Nice. Aber habe ich das richtig

Johannes

rausgehört? Ihr nehmt kein Custom User Model mehr?

Johannes

Wir versuchen

Ronny

eher über diesen User-Profile-Ansatz zu gehen.

Ronny

Also, dass das Problem ist,

Ronny

ich glaube, Django lädt sehr, sehr, sehr, sehr, sehr stark dazu ein,

Ronny

dass man so gewisse zentrale Models mit immer mehr belädt

Ronny

und dass man halt nicht wirklich versucht,

Ronny

Domänen zu schneiden.

Ronny

Ich meine, Foreign Keys, so enorm praktisch die sind,

Ronny

ist halt auch, du bist halt einfach in irgendeiner Funktion

Ronny

plötzlich drei Domänen irgendwo weiter

Ronny

und hast dann plötzlich irgendwelche Daten dir gefischt,

Ronny

weil es geht halt.

Ronny

Und von daher versuchen wir jetzt in den neuen Projekten

Ronny

eher über Profile zu gehen.

Dominik

Also Profil ist für euch ein eigenes Modell,

Dominik

eine eigene Tabelle oder Zeug?

Dominik

Genau, also wir sagen quasi alle,

Ronny

also der Django-User ist nur für die Authentifizierung da.

Ronny

Also wir nutzen im besten Fall auch nicht den Namen

Ronny

oder E-Mail-Adresse, logischerweise schon,

Ronny

aber nicht den Namen.

Ronny

Und dann gibt es zum Beispiel dann irgendwie ein Account-Profil,

Ronny

wo dann der Name drinsteht,

Ronny

dann vielleicht die Adresse.

Ronny

Dann, das ist vielleicht gerade kein Beispiel,

Ronny

aber zum Beispiel, wenn ihr sagt,

Ronny

ich habe irgendwelche Konfigurationen,

Ronny

die ich machen kann in meiner Applikation,

Ronny

dann gibt es vielleicht ein User-Konfigurationsprofil.

Ronny

Und versucht das aufzuteilen und dann die verschiedenen kleinen Models in ihren Domänen zu haben, was halt auch dazu führt, dass du, wenn du zum Beispiel den User immer weiter aufbläst, teilweise hast du dann ja 50, 60 Felder in einer hinreichend großen Applikation, ist ja keine Seltenheit, die Daten werden auch immer gefetcht.

Ronny

Und die wenigsten Leute in Django machen ja auch, dass sie wirklich dann per Select sich nur die Felder holen, die sie brauchen, sondern eher so, ja gib mir mal alles. Das erzeugt auch wohl vor allem, also gegeben der Last, aber auch immer einen relativ großen Overhead. Plus ist natürlich auch für den nächsten Junior, der ins Projekt kommt, der muss halt 50 Felder verstehen und nicht nur drei.

Dominik

Das mit Daten habe ich

Dominik

noch nicht drüber nachgedacht, aber ich habe jetzt tatsächlich User-Profile

Dominik

an ein Profile-JSON-Field

Dominik

gehängt. Ja, also

Ronny

ich finde JSON-Fields sind ein sehr zweischneidiges

Ronny

Schwert. Das ist immer so ein bisschen,

Ronny

die führen so ein bisschen die Relational-Datemark-Adaptsodum.

Ronny

Manche Dinge sind die super.

Dominik

Ja, für solche Sachen im Profil möchte ich das nicht filtern.

Dominik

Also das ist nicht so Filter-Rebuild.

Ronny

Aber ich sage mal so, ich versuche die,

Ronny

ich nutze die, aber ich versuche

Ronny

da dreimal drüber nachzudenken, ob ich es wirklich nutzen möchte.

Ronny

Und wenn ich zum Beispiel so die Profil-Konfiguration

Ronny

habe, weiß ich nicht, die Farbe und die Sprache

Ronny

und keine Ahnung was, das kann

Ronny

ich ja relational speichern, dann versuche ich es auch

Ronny

zu tun. Ich bin tatsächlich

Johannes

gerade in die andere Richtung unterwegs

Johannes

zum Thema User Model.

Johannes

Ich bin jetzt eher wieder dazu übergegangen, Custom User Models

Johannes

zu machen, aber nicht um

Johannes

da Felder hinzuzufügen, sondern eben genau um Felder

Johannes

wegzuschneiden, weil ich keinen First Name brauche, ich brauche keinen

Johannes

Last Name, ich brauche keinen... Ich habe auch alles

Dominik

gestrichen, nur E-Mail gemacht.

Johannes

Ja genau, einfach nur E-Mail und Passwort und das ist

Johannes

eigentlich für die meisten Sachen

Johannes

reicht das ja schon aus. Aber dann spricht der tatsächlich

Johannes

ich meinem eigentlich gar nicht.

Johannes

Ja, genau. Das ist eigentlich das Gleiche.

Ronny

Vielleicht sogar noch ein logischer weiterer Schritt.

Ronny

Ja, aber halt mit Aufwand verbunden.

Ronny

Und das ist dann in meinem

Johannes

Projekt-Template drin und dann habe ich es einmal gemacht

Johannes

und dann ist es fertig.

Johannes

Ja, das ist auch so was,

Johannes

dass man baut sich ja dann irgendwie so eine

Johannes

Sammlung an so eine Schatzkiste an Lösungen

Johannes

auf und die benutzt man dann schon immer wieder.

Johannes

Und wenn die je verloren geht, dann bin ich wieder

Johannes

ein Jumbo-Anfänger.

Ronny

Darum haben wir damals mal angefangen,

Ronny

die ganzen Sachen in ein Package zu packen.

Ronny

Das ist zwar nicht der Weg, wie Packages sein, die sollen ja eigentlich Single Purpose und dass du einem eine Sache hast, aber es gibt so viele Kleinigkeiten auch für ein Admin, wo man sagt, ich will das jetzt nicht jedes Mal neu googeln, wie ich jetzt dieses eine Read-Only-Dingsbums da irgendwie machen kann oder sowas oder diesen einen Sonderfall mit weiß ich nicht was. Das ist schon praktisch, wenn man das da reingießen kann.

Dominik

Ja, man hat sich ja so ein kleines kariertes Maiglöckchen da gemacht, hat noch ein bisschen gehegt und gepflegt und ordentlich aufgezogen und dann noch die Ecken und Kanten ein bisschen richtig gestutzt, dass das genauso aussieht wie man es kennt.

Ronny

Also ich finde das zum Beispiel super, dieses Toolbox-Package, das wir haben. Also das nutzen wir in den Projekten. Da sind natürlich auch viele Sachen drin, die Leute einfach nicht brauchen.

Ronny

Aber ich meine, im Endeffekt, es ist halt, ja, also ich räume da auch regelmäßig auf. Also einfach, wenn ich dann sage, okay, jetzt ist der Zeitpunkt gekommen, wo das nicht mehr relevant ist oder habe einfach Sachen aktiv rausgezogen. Also mit das Pony Express Package, von dem ich vorhin am Anfang gesprochen habe, das war auch mal Teil davon. Habe ja gesagt, das ist sowas von Single Purpose. Also das macht keinen Sinn, das da mit reinzufudeln.

Ronny

Das kann man gut rausziehen.

Ronny

Genau.

Ronny

Cool.

Dominik

Dann sind wir mit gestern durch.

Dominik

Dann kommen wir nach heute.

Dominik

Heute der Tag hat angefangen.

Dominik

Er hat sehr früh angefangen.

Dominik

Einer, ihr habt so früh überlassen, auch wenn ich nach unserer Zeit neun Uhr nach Lokaler...

Dominik

Mein Jetlag ist schon vorbei.

Johannes

Ich fand es jedenfalls interessant, es war ja...

Dominik

Es war der Talk für die Django Software Foundation, die Versammlung und der offizielle 20. Geburtstag.

Johannes

Ja, war ja gar kein Talk, sondern es war das Django Software Foundation Board Meeting.

Johannes

Ja.

Johannes

Das jährliche Board Meeting, das erste jährliche Board Meeting.

Johannes

Weiß noch nicht, ob man davon jährlich sprechen kann.

Dominik

Gleichzeitig die Geburtstagsfeier, 20 Jahre Janko, es gab auch Kuchen.

Dominik

Es gab Kuchen, ja.

Dominik

Das war sehr schön.

Johannes

Aber es war halt heute früh um 8 und mir ist durchaus aufgefallen, dass dann so um 8.10 Uhr noch ein paar Leute gekommen sind.

Johannes

Oder um 8.15 Uhr oder um 8.20 Uhr.

Johannes

Oder um 8.30 Uhr, wie ich.

Johannes

Es scheint tatsächlich nicht ganz einfach zu sein, so früh aufzustehen.

Johannes

Ich meine, mit Kindern ist das eigentlich so, ja.

Ronny

Ich kam halt aus der Stadt und die Busse fahren so mittel von da ab.

Ronny

Ja, okay, gut.

Ronny

Das ist natürlich ein bisschen...

Ronny

Ja, der Bus ist ein eigenes Airbnb-Sus.

Johannes

Wir sind ja alle im Hotel, da ist es natürlich einfacher.

Johannes

Ja.

Johannes

Ich habe jemanden gesehen, der mit

Jochen

Badelatschen die ganze Zeit,

Jochen

da dachte ich mir so, oh, warum bin ich da nicht drauf gekommen?

Jochen

Ich nehme die Schuhe an.

Dominik

Ja, ich habe mich auch nicht gedacht, ich wollte eigentlich gerade eben nochmal

Dominik

ins Gym.

Dominik

und Steam, aber dann muss ich mit Bademantel

Dominik

an der Konferenz vorbei und kurz winken.

Johannes

Mit Bademantel zur Konferenz gehen.

Johannes

Das habe ich mir auch überlegt.

Ronny

Solange der Bademantel zu ist, ist doch alles okay.

Ronny

Das ist auch eine Frage.

Dominik

Ich passe da immerhin rein, ich habe ja nämlich meinen eigenen Bademantel.

Dominik

Das haben wahrscheinlich auch nicht so viele.

Dominik

Okay, also das Jungle of Software

Johannes

von der Board Meeting, das war...

Johannes

Ich bin da hingegangen, weil

Johannes

ich das mal sehen wollte.

Johannes

Ich weiß, dass ich da nichts beitragen kann.

Johannes

Ich weiß, dass ich diese Verantwortung nicht tragen kann, weil ich nicht genügend Zeit habe.

Johannes

Und was hast du gesehen?

Johannes

Es war interessant, die Diskussionskultur

Johannes

war interessant, die Menschen, die sich

Johannes

daran beteiligen, ich meine, viele von den Namen

Johannes

kennt man, wenn man so ein bisschen in der Szene ist.

Johannes

Aber es war trotzdem

Johannes

einfach mal interessant zu sehen, wie die so

Dominik

Zeit man mit so Dingen verbringen kann.

Dominik

Ja, richtig. Auch wie viele Meta-Dinge

Ronny

einfach passieren müssen und wenn sie

Ronny

nicht passieren, wie viele negative Konsequenzen

Johannes

das hat. Und wie viele Kommentare es gibt

Dominik

zu allem. Ja, da muss man noch mal reden,

Dominik

jeder darf auch was dazu sagen und dann wird dem auch zugehört.

Dominik

Also, sehr

Dominik

Corporate.

Johannes

Und dann gab es Kuchen, das war sehr schön.

Johannes

Ja, das hat sich gelohnt,

Johannes

früher aufzustehen und hinzugehen.

Johannes

Ja.

Johannes

Gut, dann gab es den Einführungsvortrag

Johannes

des heutigen Tages, so für die breite Masse,

Johannes

sag ich mal, im Mainstream.

Johannes

Oh, im Mainstream? Im Mainhall.

Johannes

Nee, das heißt ja Mainhall, ich meine.

Johannes

Gab es den? Habe ich den verpasst?

Johannes

Nein, da war es auch der Most Bizarre Software Bugs in History.

Jochen

Ach so, ach so, ja, das ist, ja, okay, klar.

Johannes

War eine schöne Aufstellung.

Johannes

Hast du, hat der Jochen

Dominik

den Lightning Talk vom Johannes vorher schon gehört?

Johannes

Ich habe ihm das vorher kurz

Johannes

gezeigt, das war

Johannes

eine Pause.

Johannes

Das war nur der Vulkanier

Johannes

Mindgrab.

Johannes

Genau, das war auch eine sehr schöne, war sehr unterhaltsam.

Johannes

Dieser Vortrag war erstaunlich lang.

Johannes

Er hat viele Sachen

Johannes

gesagt und viele von den Geschichten

Johannes

kennt man ja schon so ein bisschen.

Johannes

Man hat es ja schon mal gehört.

Johannes

Ein Lion Air Flight 110

Johannes

und

Johannes

ich habe gar nicht mehr die Geschichten

Johannes

alle notiert. Ich habe nur notiert, wie die

Johannes

Geschichten heißen.

Ronny

Das mit der Mars-Mission, mit dem metrischen System.

Ronny

Vielleicht gehen wir noch mal kurz

Dominik

darauf ein. Also ein Bagger ist natürlich

Dominik

in den Flugzeug abgestürzt, nicht so gut.

Dominik

Es sind zwei sogar, es sind zwei abgestürzt, wo was passiert ist.

Dominik

Boing, so ein System eingebaut hat,

Dominik

dass die Nase immer korrigieren sollte und dann ist

Dominik

der Sensor ausgefallen, der hat nur einen eingebaut und dann

Ronny

Und die Piloten wussten nichts davon?

Johannes

Ja. Bei dem zweiten Flug, der war

Johannes

sogar noch ein bisschen tragischer,

Johannes

weil da wussten die Piloten davon.

Johannes

Haben es nicht abgesteckt gekriegt.

Johannes

haben es nicht abgeschaltet gekriegt und vor allem

Johannes

dieses System ist gekoppelt

Johannes

an den Steuerknüppel.

Johannes

Das heißt, die haben versucht, an dem Steuerknüppel zu ziehen

Johannes

und das System hat dagegen gedrückt und irgendwann

Johannes

konnten die nicht mehr.

Johannes

Und das finde ich noch viel tragischer, wenn der

Johannes

halt gegen die Maschine kämpfen muss

Johannes

und die Maschine in dem Moment will dich

Johannes

umbringen, so fies gesagt

Johannes

und dann gewinnt sie auch noch.

Johannes

Das ist hart, das ist echt hart.

Johannes

Und dann, genau,

Johannes

nachdem diese beiden

Johannes

Flugzeuge abschürzt waren, ist ja auch die

Johannes

gesamte Flotte einfach stillgelegt worden

Johannes

mal für einen Moment, bis sie

Johannes

bis zu einer neuen Zertifikation durch war.

Johannes

Ja, die, die ja, ja.

Johannes

Also es war eine wirklich schöne Aufstellung

Johannes

von Dachern und so ein bisschen Hinweis.

Dominik

Auf der Mars-Mission ist vielleicht auch noch interessant.

Dominik

Ah ja, Mars-Mission, ja. Auch klassischer

Dominik

Fall. Ja, weil es dann einen kleinen Bug gab zwischen

Dominik

Umrechnung, zwischen metrischen und

Dominik

nur ein kleinerer. Wer ist nochmal das andere System?

Dominik

Genau, das eine, das imperiale.

Dominik

Genau, das eine hat halt

Johannes

den Zoll gerechnet und das andere hat den Millimeter

Johannes

gerechnet. Empire Strikes Back.

Ronny

Was ich total ironisch finde wirklich, wenn man mal in den USA war, da wird ja dieses Independence Day und diese Unabhängigkeit von England wirklich ganz, ganz, ganz, ganz hoch gehalten und keine Gelegenheit, nicht jedes Schiff und jeden Soldaten nochmal hervorzuheben, wie besonders das war, gegen England gewonnen zu haben, aber damit Händen und Füßen am imperialen System bei den Einheiten festzuhalten.

Ronny

Am Ende gewinnt der König doch.

Ronny

Ja, das war auch eine tragische Sache.

Ronny

Dieser Mars

Johannes

Reconnaissance Orbiter war das, glaube ich.

Johannes

Wo einfach

Johannes

die Positionierung nicht gestimmt hat. Das heißt,

Johannes

er wollte um den Mars kreisen, aber er hat

Johannes

ihn getroffen. Klabumm.

Johannes

Andererseits, das habe ich auch zum

Johannes

Jochen schon in dem Vortrag gesagt, ist auch so ein gewisser

Johannes

Power-Move von der Erde, dass wir da hier

Johannes

Jahre und Millionen reinstecken und dann einfach

Johannes

zack.

Johannes

Blüte im Orbit.

Johannes

Ja, und dann die anderen Geschichten.

Johannes

Da gibt es ja viele so Geschichten.

Jochen

Ich meine, die meisten Leute werden

Jochen

keine Software für Flugzeuge schreiben

Jochen

oder auch den Mars nicht mit irgendwas beschießen,

Jochen

aber was tatsächlich viel im Alltag

Jochen

irgendwie ja betrifft, und das ist tatsächlich

Jochen

auch immer eine sehr hübsche Fehler,

Jochen

dass Leute Excel-Sheets halt

Jochen

für alles mögliche verwenden. Und dann da

Jochen

halt diese ganzen normalen Standard-Software-

Jochen

Engineering-Practices, die man halt so hat,

Jochen

die einen vor dem Gröbsten irgendwie

Jochen

bewahren,

Jochen

Die gibt es da halt nicht.

Dominik

Man kann auch Excel dann das nachbauen.

Dominik

Bitte?

Dominik

Man kann das dann auch nachbauen.

Jochen

Ja, aber hast du schon mal gesehen,

Jochen

dass jemand Excel-Sheets in quasi...

Jochen

Habt ihr keine Unit-Tests auf euren Excel-Sheets?

Jochen

Ja, oder Unit-Tests oder irgendwie ein Repository eincheckt

Jochen

und das gibt es alles irgendwie nicht so richtig.

Jochen

Ja, ich habe...

Jochen

Nee, das geht alles über E-Mail.

Jochen

Du hast die Leiste von zwei Jahren nachgebaut.

Jochen

Das war eine ganz tolle Erfahrung.

Jochen

Ja.

Jochen

Ach so, du hast das mal nach...

Jochen

Oh Gott.

Jochen

Genau.

Jochen

Das kann ja dann auch...

Jochen

Also sie hat ja da so ein paar Sachen erwähnt,

Johannes

die einfach richtig schlimme Folgen haben.

Johannes

JP Morgan hat halt

Johannes

eine von den Berechnungen, haben sie

Johannes

addiert,

Johannes

statt zu mitteln.

Johannes

Und dann haben sie ihre Risikobewertung einfach

Johannes

um Faktor 2 falsch gehabt und Milliarden an Dollar

Johannes

verloren.

Johannes

Ja gut, als Softwareentwickler

Johannes

sagt man, selber schuld.

Johannes

Hättet ihr mal von uns gehört.

Johannes

Als Bank heißt es so.

Johannes

Passiert mir jedes zweite Wochenende.

Johannes

Ja,

Johannes

sechs Milliarden unter Freunden kommen.

Johannes

Ja, genau.

Johannes

Also es war wirklich eine schöne Zusammenstellung, war sehr unterhaltsam, war ein guter Anfang.

Johannes

Sie hat auch einen sehr guten Vortragsstil.

Johannes

Ja, war wirklich sehr angenehm.

Johannes

Ja, was gab es denn da noch?

Johannes

Danach.

Johannes

Oh ja, das war cool.

Johannes

Danach war so ein bisschen, für mich ein bisschen bisher das Highlight des Tages.

Johannes

Das Highlight der Woche bisher.

Johannes

Haki Benita.

Johannes

Genau.

Johannes

How to get foreign keys horribly wrong.

Dominik

Ja, das müsst ihr mir jetzt erzählen, weil ich bin nämlich in der Zeit rübergegangen zu dem anderen Workshop.

Dominik

Und ja, habe dann aber nicht wirklich zugehört, sondern gearbeitet.

Dominik

Ja gut, dann...

Dominik

Aber deswegen kann ich das für Wirtschaft kennen.

Dominik

Aber den Topf von Haki Benita hätte ich gerne noch mehr verstanden,

Dominik

wie man den Foreign Keys richtig macht.

Dominik

Indizes setzen oder was hat er gesagt?

Johannes

Ja, aber also die Sache an Haki Benita ist,

Johannes

der ist ein DBA, ein Database Admin,

Johannes

der seit 20 Jahren im Geschäft ist, der kennt alle Tricks.

Johannes

Und er hat einen sehr unterhaltsamen Vortragsstil.

Johannes

Sehr energetisch.

Johannes

Ja, und auch das Publikum mit einbezogen und Fragen und dann auf Leute gezeigt und so. Also es ist großartig. Aber er hat so ganz harmlos angefangen. Er hat gesagt, ja, was fällt euch da auf? Und dann kam natürlich so, ja, da muss man Index machen. Und er hat gesagt, ja, aber?

Johannes

Und dann hat er das gemacht und hat so ein bisschen da die Sachen erzählt und dann gesagt, was fällt euch denn jetzt auf? Und dann ist er noch eine Ebene runtergegangen und dann kamen schon weniger Kommentare und dann hat er gesagt, was fällt euch denn jetzt auf? Also er ist einfach ganz harmlos angefangen und dann so tief runtergegangen.

Johannes

Ja, okay.

Jochen

Aber als er dann aufgehört hat,

Jochen

hat das Publikum an seiner Stelle weitergemacht

Jochen

und hat ihm gesagt, weil er wusste noch nicht.

Jochen

Und sein Fazit war dann so,

Jochen

okay, das mit den Migrationen sollte man einfach lassen.

Jochen

Das ist keine gute Idee, das irgendwie

Jochen

nicht machen. Ja, also es ist wirklich

Jochen

problematisch. Je genauer man hinguckt, desto

Jochen

mehr Probleme

Jochen

sieht man da auch.

Ronny

Die natürlich aber auch nie, nur nicht in

Ronny

allen Cases wirklich realistisch.

Ronny

Bevor jetzt wieder so eintaucht,

Dominik

wir müssen erstmal kurz nochmal erkennen,

Dominik

Also, dass das ein interessanter Talk war, haben wir jetzt verstanden, aber

Dominik

worum ging es denn jetzt eigentlich?

Dominik

Also es... Willst du?

Ronny

Nee, sprich du, René. Also im Endeffekt ging es

Ronny

darum, es war im Endeffekt ein Standardmodel, also

Ronny

Django-Model, jetzt mehr oder weniger

Ronny

was man halt so kennt

Ronny

und

Ronny

die

Ronny

und dann ging es

Ronny

halt darum, so quasi, was

Ronny

kann man daran verbessern? Hat sich halt

Ronny

Expedition of Foreign Peace bezogen. Oder was ist gefährlich auch.

Ronny

Genau, oder was könnte gefährlich sein?

Ronny

Natürlich immer mit dem

Ronny

Hintergedanken, wenn man da jetzt eine Tabelle

Ronny

mit 50 Einträgen hat oder auch

Ronny

500.000, ist das wahrscheinlich alles relativ egal

Ronny

oder kein Hochverfügbarkeitssystem,

Ronny

aber halt, was für Systeme kann,

Ronny

was kann man halt theoretisch kaputt machen,

Ronny

ohne es zu wissen und dann hat er sich halt

Ronny

quasi dann darüber rausgehangelt,

Ronny

wie sieht es aus mit,

Ronny

wenn ich diesen Index setze, was ist mit automatisch

Ronny

gesetzten Indizes, kann ich die wegnehmen?

Ronny

Ja, genau

Johannes

und wie weit kann man da gehen?

Johannes

Genau. Was kann man alles

Johannes

kaputt machen, was kann einem alles implizit

Ronny

auf die Füße fallen. Genau. Und dann auch viel über

Ronny

Migrations, Migration-Anordnungen,

Ronny

was man damit noch anders machen kann, also indem

Ronny

man die einfach auseinanderzieht, atomare

Ronny

Transaktionen, also Datenbank-Atomare-Transaktionen,

Ronny

genau, Reihenfolge und da halt immer weiter

Ronny

runter und das halt in einem sehr, sehr

Ronny

energetischen, interaktiven

Ronny

Weg, um auch dieses Thema, das

Ronny

man auch perfekt, ultra-trocken irgendwie

Ronny

runterbeten könnte.

Dominik

Also das ist tatsächlich einer von den Talks, die ich mir auf die Liste

Dominik

geschrieben habe, für die muss ich später nochmal nachschauen.

Dominik

Ja, solltest du, also was

Jochen

konkrete Dinge drin waren, wie zum Beispiel ist sowas wie,

Jochen

du hast halt einen Foreign Key auf dein User-Modell

Jochen

als Created Ad oder sowas an irgendeinem Modell dran

Jochen

und wenn du jetzt sagst, okay, das wird jetzt schon allmählich relativ groß,

Jochen

das wird eh nicht benutzt und dann nimmst du den Index weg

Jochen

und dann löscht irgendein automatischer Job ab und zu mal User

Jochen

und legt dann deine Datenbank lahm,

Jochen

weil, naja, es gibt keinen Index mehr auf dem Ding

Jochen

und dann macht das halt ein Table-Scan bei jedem User,

Jochen

der gelöscht werden soll und wenn das viele sind, dann, naja, es ist halt...

Johannes

Ja, auch wenn es einmal auftritt, wenn du irgendwo eine Tabelle mit Millionen rein hast.

Dominik

Wenn du bei Instagram mit 500 Millionen Nutzern scheinst, dann bist du da.

Dominik

Ja, genau, die müssen da schon aufpassen.

Dominik

Das hat er am Ende auch gesagt.

Johannes

Viele von den Sachen sind halt jetzt rausgesucht als Probleme für einen Vortrag, sonst kannst du nichts zeigen.

Johannes

So für den Hausgebrauch.

Johannes

Weil wenn du 10.000 TPS hast, Transaktionen pro Sekunde, ist das sicherlich ein anderes Thema, als wenn du drei Transaktionen pro Sekunde hast.

Ronny

Also ich glaube, einer von den Learnings war, dass er quasi die Nutzer aware gemacht hat, dass Django sehr viele Dinge für einen mitdenkt und dass es halt Cases gibt, wo man das nicht tun, also wo man Django nicht das, also er hat am Anfang die Queries, glaube ich, mit angemacht, die bei den Queries, dass man sieht, was passiert.

Jochen

Ja, oder dass man auf jeden Fall immer die Queries

Jochen

sich bei einer Migration zum Beispiel,

Jochen

da hat er dann irgendwie eine schöne Stop-Slide,

Jochen

die dann ab und zu mal kamen,

Jochen

sondern erst einmal mal das SQL angucken,

Jochen

bevor man die Migration wirklich ausführt, weil...

Johannes

Den wichtigsten Schritt hat er da für mich

Johannes

eigentlich in den Fragen am Ende gesagt.

Johannes

Dann hat er nämlich gesagt, bei Ihnen machen Sie es so,

Johannes

dass Sie eine GitHub-Action haben,

Johannes

die das SQL, wenn du eine Migration machst,

Johannes

schreibt die dir das SQL als Kommentar in deine Review.

Johannes

Das fand ich auch krass.

Johannes

Das heißt, du bist gezwungen, dieses SQL anzugucken.

Johannes

Du kannst nicht zustimmen, ohne das SQL gesagt zu haben.

Johannes

Und das fand ich einen super Trick, weil das so ein, das ist psychologisch korrekt,

Johannes

das ist kein, wir halten dich ab, das zu tun, sondern ein, hier, guck doch mal.

Johannes

Absolut. Großartig.

Ronny

Und was auch noch echt cool war, der hat gesagt, dass sie exzessiv die Django-Checks verwenden,

Ronny

also die System-Check-Framework.

Ronny

Aber mit eigenen geschriebenen Regeln.

Ronny

Genau, also erstmal hängt es bei denen in der Pipeline, das geht relativ einfach,

Ronny

Das haben wir jetzt auch angefangen einzubauen.

Ronny

Also das führt auch dazu, dass man da einmal wirklich auch mal guckt, was Django so meldet.

Ronny

Manche Dinge machen jetzt auch zum Beispiel in der Pipeline keinen Sinn, manche Einstellungen.

Ronny

Aber trotzdem, dass man die da einmal so konfrontiert, dass der Pipeline grün ist, was schon mal super ist.

Ronny

Und eigene Checks wirklich zu verwenden, weil die laufen natürlich in jedem Mal, wenn der Development-Server startet.

Ronny

Das heißt, wenn man da sehr viele hat oder sehr langsame hat, kann man natürlich die Developer-Experience massiv beeinflussen, negativ.

Ronny

Muss man ein bisschen aufpassen, weil viele Dinge könnte man auch irgendwie in der Linting-Stage machen vermutlich.

Ronny

Trotzdem hast du halt Zugriff auf das komplette initialisierte Django-Projekt und da kann man, glaube ich, sehr, sehr viele coole Dinge Richtung Code-Qualität machen, weil du halt den Leuten sagst, hey, guck mal hier, lieber Mitentwickler, folgendes ist gerade komisch.

Ronny

Das ist sehr mächtig und das ist auch eine Sache, wo ich mich auch nochmal mehr damit beschäftigen möchte, weil ich glaube, dass man da nochmal sehr viel rausholen kann.

Ronny

wie letztes Jahr beim Vigo

Ronny

bei dem Talk. Deine Architektur

Ronny

oder Code-Qualität ist so gut wie dein Tooling, das du hast.

Ronny

Ohne Tooling

Ronny

degradet alles sofort.

Ronny

Also waren

Johannes

auf jeden Fall viele coole Sachen drin.

Johannes

Haki Benita ist immer gut.

Johannes

Kann ja die Links

Johannes

wieder unten reintun.

Johannes

Dann der nächste Talk.

Dominik

Karl Gipsen. War gar kein technischer Talk diesmal.

Dominik

Nee, hat er auch am Anfang

Johannes

so scherzhaft gesagt.

Johannes

Nächstes Mal wieder technischer Talk war viel zu anstrengend.

Johannes

Ja, how we make decisions in Django.

Johannes

Ja.

Johannes

Mir fällt es schwer, da jetzt was zu sagen.

Dominik

Ich habe in der Zeit was vergessen, Kaffee getrunken.

Jochen

Ja, ich würde auch zu, es ist halt ein schwieriges Thema und ich habe absolut keine Meinung dazu oder keine Ahnung davon.

Jochen

Ich würde auch sagen, so ja, ja.

Jochen

Ich finde es gut, dass das jemand macht.

Jochen

Ja, muss man, muss man.

Ronny

Also im Endeffekt, es ging ihm ja, glaube ich, ging ihm ja darum, dass er, ich werde darauf angesprochen, ich zu oft im Endeffekt sage.

Dominik

Ja, wir haben schon ein Fehlspiel draus gemacht. Das werden wir heute Abend beim Review der Folge nochmal spielen.

Ronny

Ging ihm darum, dass halt der Prozess wie über gewisse Dinge abgestimmt wird, also meist im Forum soll er diskutiert werden, dass das sehr, sehr mühsam ist.

Ronny

da kann ich doch einen schönen Bogen spannen zu meinem Eingangsthema.

Ronny

Ich habe vor einem Jahr in den Django-Storages,

Ronny

ungefähr vor einem Jahr, glaube ich, sind die Django-Storages,

Ronny

ist die Settings-API leicht verändert worden.

Ronny

Da gibt es statt mehreren Einzelvariablen eine Variable.

Ronny

Da gab es auch eine Warnung.

Ronny

Normalerweise kümmere ich mich da immer sofort drum,

Ronny

aber wir hatten einen ganz, ganz merkwürdigen Bug

Ronny

mit dem Thumbnail-Package, irgendwas ganz Wildes,

Ronny

wo nichts mehr funktioniert hat und

Ronny

ich hab dann einfach, ja, ich mach das dann später

Ronny

und dann irgendwann war die Warnung halt

Ronny

weg und ich so, ah, okay, dann

Ronny

Ja, perfekt. Selbstgelöst, super.

Ronny

Beste Probleme. Hat es halt auch nicht

Ronny

ausnahmsweise halt einmal nicht, wie das

Ronny

halt immer so ist. Das ist dieses Schweißer Käse Modell,

Ronny

das ist halt genau einmal. Das kommt ja nachher auch noch.

Ronny

Das kam vorher schon.

Ronny

Genau in dem

Ronny

einmal, wo man sich nicht sofort drum kümmert, wo

Ronny

irgendwas komisches passiert, wo man es halt dann doch irgendwie ein bisschen

Ronny

aufschiebt, in Kombination

Ronny

mit Django's

Ronny

was wir für S3, also für Datentransfer nach S3 verwenden, war eine Plattform, an der ich gearbeitet habe und genau in dem Zeitfenster, wo wir dann quasi das Django upgedatet haben, wo dann quasi diese Storage, also die Deprecation quasi aktiv wurde, wurden dann halt von den Nutzern hunderte von Dokumenten hochgeladen, was mehr Dokumente wahrscheinlich waren, als insgesamt bis jetzt hochgeladen wurden, weil das halt so ein neues Feature war, das dann live ging.

Ronny

Und leider hat Django Storage das nicht gemerkt. Django dachte, das Feld ist nicht mehr da und die Sachen sind alle in Nirvana gelandet. Das war ärgerlich.

Johannes

Eine schöne Übertreibung, die du hier wählst. Ärgerlich.

Ronny

Ja, war natürlich auch etwas schwierig, dann den Leuten zu erklären, sorry, bitte alles nochmal. Teilweise waren die Sachen natürlich einfach da, die sind da ja da.

Ronny

Ja klar, braucht man ja.

Ronny

So, weg. Ja, war sehr blöd, dann habe ich das halt im Django-Forum halt mal angesprochen, habe gesagt, hey Leute, es ist so was irgendwie dumm gelaufen, kann man nicht irgendwas tun.

Ronny

Und dann hat sich da so eine Diskussion ergeben, dass man ja vielleicht, weil Django ist ja super dokumentiert, so bis Version 1.0 zurück, ob man nicht einfach sagen soll, hey, wir machen irgendein Systemcheck mal wieder, ein Systemcheck, wo wir einfach sagen, hey, guck mal, du verwendest hier eine Variable, die soll das eigentlich nicht mehr geben, denk mal drüber nach, ob da alles richtig ist bei dir.

Ronny

Man kann ja Systemchecks aktiv disablen und so, wenn jetzt jemand der Meinung ist, er braucht jetzt die Login-URL für irgendwas anderes oder ein ganzes Party-Package, will unbedingt die Login, dann nimmt man es halt aus und lebt damit, dass die disabled ist.

Ronny

Gut, dann ist mehr oder weniger alles agreed worden, ich habe einen Pull-Request gemacht, habe mir sehr zum Ärger von manchen Leuten eine initiale Liste von GPT generieren lassen, weil ich dachte, damit ich erstmal was habe zum Testen, ob es überhaupt funktioniert, habe die danach nochmal manuell abgeglichen, trotzdem waren direkt ein paar Leute böse, haben gesagt, hey, chill, wir sind noch nicht fertig.

Ronny

So, haben das dann gemacht.

Ronny

Ich habe nochmal quasi alle Change-Logs

Ronny

gemacht. Wir haben die nochmal verlinkt.

Ronny

Ich habe nochmal Optimierungsideen. Hey, wenn du

Ronny

ein Set verwendest statt eine Liste,

Ronny

das ist nochmal einen Ticken schneller, weil das

Ronny

läuft ja die ganze Zeit. Richtig

Ronny

coole Lösung. Und dann kam

Ronny

halt von einer Person, naja,

Ronny

wir machen doch keine

Ronny

deprecated Sachen im

Ronny

Framework. Und dann habe ich gesagt, ja, aber die Leute haben doch gesagt,

Ronny

ich bin nicht der Einzige, dem das passiert.

Ronny

Es hilft halt extrem.

Ronny

Es macht den Update-Prozess ein bisschen

Ronny

einfacher. Es gibt aktuell noch nichts, was

Ronny

das tut, weil sonst wäre es mir ja nicht passiert. Und ich bin

Ronny

ja aware, Dango Upgrade, das ganze Tooling,

Ronny

das es da gibt, klingt doch gut.

Ronny

Nee, machen wir nicht. Und

Ronny

irgendwie war dann halt so diese eine Gegenstimme

Ronny

gegen halt 10 Leute,

Ronny

15 Leute, die im PR mitgearbeitet

Ronny

haben, also auch wirklich motiviert mitgearbeitet

Ronny

haben oder halt auch im Forum sich

Ronny

geäußert haben und irgendwie

Ronny

hat halt diese eine Person das halt dazu

Ronny

gebracht, dass es halt da nicht passiert ist.

Ronny

Und...

Dominik

Wie der Diskussion von gestern, wer darf denn merchen und wer sagt

Dominik

dann nein? Oder auch das, was

Johannes

Carlton gesagt hat, dass Konsens gesucht wird.

Ronny

Genau, das ist ja genau das. Und ich glaube, dass er

Ronny

hat, also selbst Carlton war ja auch in dem

Ronny

Thread da dabei und da hat er

Ronny

dann auch das durchklingen lassen, was

Ronny

glaube ich, teilweise hinter der Motivation

Ronny

dieses Vortrags stand, weil ihn das, glaube

Ronny

ich, auch manchmal einfach frustriert,

Ronny

dass es halt dann quasi, ne,

Ronny

alle Leute sagen, okay, das können wir machen,

Ronny

wie dieser schöne Spruch,

Ronny

komm ich jetzt drauf,

Ronny

safe enough, good enough for now, safe enough

Ronny

to try, so, im allerschlimmsten Fall

Ronny

muss man halt so ein Security, dann baut man den Check

Ronny

halt wieder aus, wenn man merkt, dass es jetzt nach drei,

Ronny

nach einem Major Release furchtbar ist und

Ronny

alle es doof finden, dann ist es halt, hast du ja nicht

Ronny

mehr, so, keine Ahnung. Und

Ronny

ich glaube, dass das so ein bisschen auch der,

Ronny

einer der Väter, der Gedanken war, weil ich glaube,

Ronny

der erlebt sowas halt sehr, sehr oft.

Ronny

Und das hat eine Person, die Handbremse quasi,

Ronny

einmal so quasi schön den Stock ins Getriebe,

Ronny

wo mehr oder weniger sich eine coole Dynamik

Ronny

entwickelt hat, wo man dann auch wirklich sagen kann,

Ronny

guck mal, das hilft vor allem Newbies halt.

Ronny

Ja, man gibt halt vor allem

Ronny

dem Veto sehr viel Macht.

Johannes

Jeder kann sagen nein und dann stimmt es.

Johannes

Und egal, wie viele Leute vorher...

Dominik

Ich habe da eine ein bisschen gespaltene Meinung zu.

Johannes

Ja, es ist auch schwierig, aber wenn

Johannes

sowas unterwegs ist, das ist natürlich super

Johannes

frustrierend, wenn du schon viel Zeit und viel Arbeit

Johannes

reingesteckt hast und die Zustimmung gekriegt hast

Johannes

und dann sagt einer, ach nö, du.

Dominik

Also ich bin ganz auf der Meinung, so better ask for forgiveness

Dominik

than for permission.

Dominik

Das ist aber hier ja nicht so.

Dominik

Das ist aber genau bei so einem Framework, aber vielleicht

Dominik

genau falsch rum ist, weil könnte ja sein,

Dominik

dass ein Flugzeug mit so einem Dango läuft

Dominik

und da muss man, ja also.

Johannes

Es ist auch so, dass man manche Sachen

Johannes

einfach nicht wieder zurücknehmen kann, weil du kannst manche,

Johannes

also es gibt da den Deprecation-Prozess,

Dominik

aber es sammelt sich an.

Dominik

Und das ist so ein...

Dominik

Deswegen verstehe ich sehr gut die Leute, die da so die Knüppel

Dominik

zwischen... Wenn der es richtig machen will, man kann es halt auch missbrauchen

Dominik

und es kann halt ätzend werden und es kann politisch werden.

Dominik

Ja, und es muss vor allem grün im Prozess sein.

Dominik

Genau, und dann erst die Leute losrennen lassen, zwei Jahre Arbeit,

Dominik

ach nee, übrigens doch nicht, ist halt ziemlich

Ronny

blöd. Also ich meine, im Endeffekt haben wir halt

Ronny

genau das gemacht, um auf den Tortag wieder zu kommen,

Ronny

was Carlton halt auch vorgeschlagen

Ronny

hat. Er sagt, das Ecosystem von

Ronny

Django ist halt im Endeffekt

Ronny

einer der Haupt-USBs.

Ronny

Ich hab's schon wieder gesagt.

Ronny

Ich freu mich drauf hingewiesen.

Ronny

und

Ronny

dass neue Dinge

Ronny

erstmal in Packages leben sollen und wenn man

Ronny

wirklich das Gefühl hat, dass das unbedingt

Ronny

in Core rein muss und ansonsten

Ronny

ein gut gewartetes Package halt keinen Nachteil zum

Ronny

eigentlichen Django hat, vor allem gibt es

Ronny

diesen schönen Spruch aus Python,

Ronny

Features go to the main library

Ronny

to die. Also sprich, sobald irgendwas

Ronny

in der Main Library ist, wird einfach nichts mehr daran entwickelt,

Ronny

weil die Zyklen einfach viel zu langsam sind,

Ronny

dumm. Von daher gibt es jetzt Django

Ronny

Removals, ganz kurz, noch einen kurz, also wer

Ronny

sich dafür interessiert, das ist

Ronny

sehr, sehr klein und tut nur was

Ronny

auf dem Development-Server, kann man theoretisch, wenn man das

Ronny

möchte, auch als Development-Dependence

Ronny

installieren, dann läuft es ja nicht in der Pipeline und

Ronny

dann kann man quasi, wenn man vor allem für alte

Ronny

Projekte, Fun Fact, in jedem

Ronny

einzelnen alten Projekt, also alt

Ronny

sage ich mal 2018 und davor,

Ronny

habe ich mindestens eine Variable gefunden, die

Ronny

nicht mehr da drin sein sollen, hat in allen anderen Fällen

Ronny

keine Auswirkungen gehabt, die hat einfach nichts getan,

Ronny

aber trotzdem interessant, das mindestens einmal

Ronny

drüber laufen zu lassen und zu merken,

Ronny

was man vielleicht vergessen hat. Hat mich auch von

Dominik

das auch dann ein bisschen, also irgendwie einfach ein altes

Dominik

Template genommen und dann mit neuem

Dominik

alte Settings halt gehabt und dann

Dominik

da bumm, hup, huch.

Dominik

Wenn man es dann merkt, ist gut.

Dominik

Jetzt hast du die Lösung.

Johannes

Das Problem, was ich habe mit

Johannes

der Library-Lösung ist

Johannes

Visibility. Ja, weil niemand

Johannes

erfährt davon, dass es das gibt.

Johannes

Hast keine Chance, wenn du nicht Carlton Gibson

Johannes

heißt oder sonst was,

Johannes

irgendwo Benutzer für deine Library anzukriegen.

Johannes

Wenn es irgendwie so ein Nischen-Use-Case ist, also ich

Johannes

habe so ein Feature, was ich gerne

Johannes

in Django drin hätte, wo ich jetzt auch schon mit mehreren Leuten

Johannes

drüber gesprochen habe.

Johannes

Einziger Grund, warum du hier bist.

Johannes

Wo ich jetzt mich mal so langsam rantasten werde

Johannes

und es ist auch wirklich was ganz Kleines.

Johannes

Ja, das erzähl ich nachher mal.

Johannes

Da muss ich erst noch mehr politischen

Johannes

guten Wirklichkeiten, bevor ich das verraten kann.

Johannes

Aber, okay.

Johannes

Es wäre eine sehr einfache Änderung und es wäre

Johannes

auch was, was man einfach in der Bibliothek machen würde,

Johannes

aber wenn ich es in der Bibliothek machen würde, wäre es unsichtbar.

Johannes

Niemand würde das finden.

Johannes

Weil es eine Funktionalität von

Johannes

Django, die in Django Core drin ist,

Johannes

erweitert. Genauso wie bei

Johannes

den Removals. Da ist doch

Johannes

ein Warnungsmechanismus drin. Warum

Johannes

muss ich jetzt nochmal was machen, damit ich andere

Johannes

Warnungen bekomme?

Johannes

Ich glaube, dass das einfach, also das

Johannes

ist das, was mich frustriert. Dass

Johannes

es Dinge gibt, die man mit wenig

Johannes

Aufwand machen könnte, die halt Django

Johannes

erweitern. Und die Antwort ist, tu es in den Library.

Johannes

Ja, okay, aber dann ist es halt

Johannes

für mich. Dann ist es für mich.

Johannes

Ja, könnte ich auch machen.

Johannes

Entschuldigung.

Dominik

Dann folgen wir die DangoCon und machen die einfach bei uns in Germany.

Dominik

Gibt es ein großes Gerücht?

Dominik

Ja, mal sehen.

Dominik

Ja, also wir werden sehen.

Johannes

Ich meine, wir Softwareentwickler sind ja, wir mögen das technische Probleme zu lösen

Johannes

und jetzt hier geht es sehr viel, bei der Software Foundation ging es um Menschen und das ist doch blöd.

Johannes

Ja, das ist immer dasselbe Problem.

Johannes

Ich bin noch nicht Softwareentwickler geworden, um mit Menschen zu tun zu haben

Johannes

und jetzt muss ich mit Menschen sprechen, schrecklich.

Dominik

Ich könnte da so eine Coaching-AI

Dominik

fragen.

Johannes

Aber mit AI sprechen ist ja noch schlimmer.

Johannes

Warum? War jemand bei dem

Johannes

Workshop? Nee. Nein.

Johannes

Okay, schade. Dann müssen wir den jetzt auslassen.

Johannes

Der Building-Unique-Voting-System.

Johannes

Achso, nur eine Minute.

Johannes

Klingt aber interessant.

Johannes

Ja, hatte ich mich auch.

Johannes

Aber die Workshops, der war halt sehr

Johannes

lang und der hat dann zwei andere Talks überlegt.

Johannes

Ich habe auch überlegt, wo ich hier

Johannes

würde ich nicht skippen.

Johannes

Das war nicht für mich so interessant.

Dominik

Da bin ich erst drüber gegangen und dann habe ich gedacht, ach komm.

Dominik

Genau, dann gab es doch den

Jochen

How to Enjoy Debugging in Production.

Jochen

Oh ja, stimmt.

Jochen

Von Karen Tracy.

Johannes

Der war am Anfang sehr unterhaltsam, weil sie

Johannes

eine Kiste gekriegt hat,

Johannes

weil sie ein bisschen kleiner ist und nicht über dieses

Johannes

Pult gekommen ist.

Johannes

Das Audiosetup ist dieses Mal ein bisschen schwierig,

Johannes

habe ich das Gefühl. Da ist noch ein Mikrofon

Johannes

da vorne. Ja, das Mastering da.

Johannes

Ja, das Mastering.

Jochen

Sie haben es dann ja quasi so weit aufgedreht, bis es halt

Jochen

kurz vorm Rückkoppeln war. Das war immer noch

Jochen

viel zu leise.

Jochen

Das war in einem anderen

Jochen

Konzert. Aber das war eigentlich interessant, was

Jochen

sie erzählt hat. Es war super interessant.

Dominik

Was hat sie eigentlich, also das Wichtigste, was sie gesagt hat

Dominik

irgendwie. Es war aber auch wieder sowas

Dominik

so ein, ja,

Dominik

mach ich so. Ja, mach ich so.

Dominik

Kenn ich. Genau.

Dominik

Ja, sie sagt halt quasi,

Dominik

dass man für Produktionssysteme ein Logging, ein Monitoring

Dominik

extra braucht, was auch LRs kann und dass man

Dominik

das halt dazu bauen muss.

Ronny

Und dass man halt, also im Endeffekt, ich hab bei dem

Ronny

Talk ein bisschen was anderes erwartet. Das hat, glaube ich, auch

Ronny

irgendwer aus dem Publikum nachher gefragt,

Ronny

weil ich dachte eigentlich eher, es ging jetzt darum, wie man halt

Ronny

wirklich tatsächlich in Produktion irgendwas debuggt

Ronny

und ich glaube, ein Großteil ging halt davon, wie man eigentlich

Ronny

vermeidet, dass es so weit kommt,

Ronny

was ja auch genau der richtige Weg ist.

Dominik

Ja, gut, aber ich glaube, sie meinte, also Debugging hat sie

Dominik

tatsächlich hinter Logging und Monitoring verstanden, ne?

Dominik

Also, dass tatsächlich automatisiert nach

Dominik

Fehlermeldungen gesucht wird, weil ich glaube, die Menge, die sie hatte,

Dominik

war ziemlich viel, also sowas wie, keine Ahnung, Tausende

Dominik

von Messages, die immer so aufhoppen,

Dominik

dass man die halt ordentlich filtern und nach Prioritäten

Dominik

sortieren kann und sowas und dann halt

Dominik

die richtigen weiterleitet.

Dominik

Also dass dann bei jemandem so ein Licht angeht,

Dominik

dass er dann wirklich direkt drauf gucken kann.

Dominik

Und dafür muss man das natürlich alles noch nicht eingestellt haben.

Dominik

Und sein eigenes Laufsatz betreiben.

Johannes

Die Antwort auf diese Frage, die da kam,

Johannes

wie vermeidet man denn Fehler in der Produktion,

Johannes

fand ich eigentlich ziemlich gut.

Johannes

Weil sie hat halt gesagt, kannst du nicht.

Johannes

Du musst darauf vorbereitet sein,

Johannes

Fehler in der Produktion zu haben.

Johannes

Und egal, was du machst,

Johannes

wenn du mehr Testing machst, hast du weniger.

Johannes

Aber du hast sie trotzdem.

Johannes

Was ich auch sehr interessant fand,

Johannes

also wie gesagt, ich glaube,

Johannes

vieles von dem, was sie gesagt hat,

Ronny

so, ja, okay, man sollte Sentry haben,

Ronny

so, das ist eine gute Sache,

Ronny

aber was... Muss ich kurz was einwerfen?

Ronny

Ich habe jetzt kürzlich gelernt, es gibt

Johannes

Glitchtip. Glitchtip?

Johannes

Das hat die gleiche AP wie Sentry,

Johannes

das heißt, man benutzt Sentry Client, aber es ist

Johannes

einfacher zu hosten, weil es einfach so wie

Johannes

Sentry vor fünf Jahren ist. Okay.

Johannes

Für die kleinen Benutzer

Johannes

ist das einfacher als Sentry. Und wenn man dann groß wird, kann man

Johannes

auch auf Sentry umsteigen. Ja, cool.

Johannes

Entschuldigung, jetzt...

Ronny

Also was ich ganz jetzt dran fand, ist so

Ronny

dieses Sidenote aus der Praxis

Ronny

Zum Beispiel, jeder kennt das ja wahrscheinlich, wenn man als Entwickler fragt, was ist, wenn nichts passiert? Das kann nicht passieren. Was ist, wenn hier quasi, zum Beispiel man spricht DAPI an und zieht sich irgendwelche Daten und dann irgendwelche Nutzer haben dann eine Firma.

Ronny

Ja, okay, aber das ist eine Liste, was ist, wenn jetzt zwei kommen? Ja, das passiert nicht. Ja, was, wenn doch? Nein, das passiert nicht. Und genau diese Cases sind halt meistens die, die einem dann nachher das Genick brechen, weil dann doch irgendwo die zweite Firma kommt und da schon quasi über diese Strategien nachzudenken, bevor sie passieren und nicht zu sagen, also ich meine, es gibt natürlich Cases, wo es sich immer lohnt, die Handbremse zu ziehen, aber selbst wenn, das bewusst zu tun und nicht in irgendeinem random tiefen Python-Fehler dann zu explodieren oder einfach zu sagen,

Ronny

Also zum Beispiel, es gibt ja auch so einfach so dumme Strategien, dass man zum Beispiel sagt, oh, ich nehme zum Beispiel einfach die erste Firma und mache einfach weiter. Je nachdem, das muss man dann mit dem Kunden oder wer auch immer das dann für jemanden bauen.

Ronny

Ja, man muss rausfinden, ob es richtig ist.

Ronny

Genau. Oder dass man es irgendwo vermerkt oder sowas. Aber ich glaube, da kann man sich echt sehr, sehr viel Ärger sparen und vor allem auch den Stress, weil ich meine, im Endeffekt der einzige Unterschied zwischen Produktionsdebugging und lokalem Debugging ist, es macht ja jetzt nicht mehr oder weniger Spaß an sich, sondern du weißt halt, dass du gerade aktiv, hat jemand das Problem und im Zweifelsfall machst du gerade Daten kaputt, die du aufräumen musst. Das sind ja die Sachen, die es ätzend machen.

Johannes

Ja, und du hast auch nicht so viel Sichtbarkeit rein. Wenn du es lokal hast, kannst du ja fünfmal hintereinander den Fehler machen.

Ronny

Gut, ich meine, oft kann man es ja auch reproduzieren zum Glück,

Ronny

wenn irgendwie eine Möglichkeit...

Ronny

Also wir haben in mehreren großen Systemen das so eingebaut,

Ronny

dass wir so einen Job haben, der anonymisierte Dumps postet.

Ronny

Da gibt es ja auch ein cooles Package, auch aus Stuttgart.

Ronny

Django Scrubber heißt das.

Ronny

Da kann man über so eine Metaklasse,

Ronny

kann man quasi über Faker definieren, wie Daten anonymisiert werden.

Ronny

Also das heißt, du hast dann quasi produktionsnahe Daten

Ronny

gegen random Daten, mit denen es keinen Spaß macht zu arbeiten

Ronny

und die auch meistens irgendwie nicht ins UI passen und so.

Ronny

Also Django Scrubber könnt ihr euch mal anschauen auf jeden Fall.

Dominik

Das ist auch so, was du für sie meintest, ne? Also so Staging erzeugen, dass von der Datenvolumen genauso groß ist.

Ronny

Sie hat das nicht gesagt, aber im Endeffekt, das ist, glaube ich, das, was sie gemeint hat. Und wir haben halt dann immer so ein S3, also in den größeren Projekten, ein S3-Bucket, wo dann halt diese quasi, ne, so dieses typische logarithmische von der letzten Stunde, von der letzten Nacht, vom letzten Tag, von der letzten Woche, vom letzten Monat, die Dumps dann liegen, die dann immer aufgeräumt werden.

Ronny

Die kann man sich dann halt runterziehen und dann sagen, okay, da ist jetzt irgendein Bug mit User 27. Man kann ja Sentry auch so einstellen, dass die IDs geschickt werden nach Sentry, aber alle personenbezogenen Daten, also per Default nämlich sind alle User-Daten raus, also man kriegt gar nichts mit.

Ronny

Was natürlich schwierig ist, wenn man nicht weiß,

Ronny

was ist der Kontext. Welcher User war das?

Ronny

Aber das kann man relativ einfach

Ronny

ein Miniscript schreiben, dass im Endeffekt alles, was man nicht in Sentry

Ronny

haben möchte, rauswirft. Das heißt, vom

Ronny

GDPR ist man super safe und dann hast du

Ronny

halt die User-ID in Sentry, kannst damit das dann

Ronny

nachstellen, hast vielleicht noch die Produkt-ID, wo jemand geklickt hat,

Ronny

keine Ahnung. Und damit kann man

Ronny

viele Probleme, klar,

Ronny

wenn du irgendwas ganz fieses mit Concurrency oder

Ronny

verteilte Systeme oder sowas,

Ronny

das ist nochmal ein anderes Problem, aber

Ronny

ja.

Ronny

Ja, in solchen Systemen

Ronny

macht man halt einfach keine Fehler.

Ronny

Stimmt. Darum ist es auch einfach absolut gesehen besser. In jedem Fall.

Johannes

Es gibt ein Zitat von Donald Knuth, der geschrieben hat, beware the above code, I've only proved it, not tried it.

Johannes

Passt auf, was ihr mit diesem Code macht. Ich habe nur bewiesen, dass er richtig ist, aber ich habe ihn nicht ausprobiert.

Johannes

Ganz der Mathematiker.

Jochen

Ja, da gibt es auch so einen Anspruch, ich weiß jetzt gar nicht mehr von wem, sagt dann so Funktionierende, Definition von Funktionierender Software, also Funktionierende Software kann man nur so nennen, wenn sie zumindest in Produktion gewesen ist und da gescheitert und man sie dann schon mal ein paar Mal verbessert hat und dann so vorher kann man nicht sagen, dass sie funktioniert, weil wahrscheinlich…

Jochen

Nicht.

Jochen

War, genau, ja.

Jochen

Gut.

Johannes

Dann gab es noch einen Vortrag und zwar 100 Million Parking Tracks.

Johannes

Transactions per year with Django.

Jochen

Ja, die meinen halt mit Transaktionen was anderes als andere

Jochen

Leute, daher war das so ein bisschen verwirrend für mich,

Jochen

aber

Jochen

sie meinen damit tatsächlich, wie viele Leute sich so ein

Jochen

Parkzettel umsetzen.

Johannes

Hat er auch gesagt, es gibt verschiedene Sorten.

Johannes

Je nachdem, wo du parkst.

Dominik

Das ist das Backup von den Parkplätzen in den Niederlanden, oder?

Johannes

Ja, und jetzt auch in Deutschland, hat er auch gesagt.

Johannes

Ja, genau. War aber nicht auf der Karte drauf,

Johannes

hätte mich jetzt interessiert. Ja, ich habe auch so eine App,

Dominik

ich weiß nicht, Pay by Phone oder was das heißt,

Dominik

vielleicht benutzt ihr was ähnliches oder sogar den gleichen

Jochen

Ja, also da waren schon

Jochen

viele schöne Sachen drin und das ist halt

Jochen

schön zu sehen, dass man halt irgendwie,

Jochen

das sind ja nur irgendwie vier Leute oder so und die

Jochen

machen das halt quasi für alle Parkplätze

Jochen

und das machen sie mit Django und das funktioniert super.

Ronny

Es war also ein ETL-System, haben die gebaut?

Dominik

Genau, die haben so ein ETL-System mit Django Admin gebaut.

Dominik

Das fand ich so ein bisschen besonders.

Dominik

Weiß ich nicht, ob ich das dann gedacht hätte.

Dominik

Also, ne, du musst

Dominik

Daten, musst du erst irgendwo herbekommen

Dominik

und dann musst du dich transformieren und wieder

Dominik

Also Extract, Transform und

Dominik

Load. Genau.

Johannes

Weiß ja nicht jeder. Aber es ist

Ronny

trotzdem interessant, dass das mit dem

Ronny

Jungle-Framework, dass das auf der Skala

Ronny

funktioniert, dass die es mit vier

Ronny

Leuten maintained bekommen und sich auch

Ronny

noch gut dabei fühlen, sagt er.

Ronny

Das würde ich unterschreiben.

Ronny

Ich hätte das auch das Gefühl, dass es gut geht.

Ronny

Ich glaube, es gibt viele Setups, wo du das nicht

Ronny

mit vier Mann hinbekommst. Absolut.

Johannes

Das ist so ein bisschen der Take-away,

Johannes

wie weit du es treiben kannst.

Johannes

Es müssen auch vier gute Leute

Dominik

sein dann tatsächlich, die das gut organisieren können.

Dominik

Oder drei gute Leute

Ronny

und einer macht das, worauf die anderen keinen Bock haben.

Ronny

Das kam auch bei diesen anderen

Ronny

Talks, bei dem von Hake Benita.

Ronny

Gestern bei dem,

Ronny

wie man

Ronny

von Integer zu Big Integer

Johannes

wechselt, wenn du mehr als eine Milliarde

Johannes

Zeilen hast, da kam das durchaus

Johannes

für mich so ein bisschen raus, wie weit man

Johannes

mit diesen Tools gehen kann.

Johannes

wie viel Schmerz die doch die meiste Zeit

Johannes

von einem fernhalten.

Johannes

Wir haben ja vorhin über diesen Talk von Hage Benita

Johannes

gesprochen. Da könnte man jetzt rausziehen,

Johannes

dass das Migrationssystem blöd ist und

Johannes

dass man gleich von Anfang an SQL

Johannes

machen sollte und lieber eigene Indizes und so weiter.

Johannes

Aber für mich das Fazit ist ein anderes.

Johannes

Für mich das Fazit ist, du kannst

Johannes

das eigentlich so machen, wie du willst und

Johannes

sobald du dann an die Grenze stößt,

Johannes

gibt es trotzdem Mittel, um über

Johannes

diese Grenze noch hinauszukommen.

Ronny

Und auch unkompliziert. Das war ja kein

Ronny

Hexenberg, was er gemacht hat. Ja, und er hat auch gesagt,

Johannes

wenn es eine Möglichkeit gibt, das mit den Django-Mitteln

Johannes

zu machen, dann macht er das, weil es einfach

Johannes

komfortabler ist und

Johannes

zukunftssicherer und Datenbanktransferierbar

Johannes

und so weiter.

Johannes

Und das ist so ein bisschen eine schöne Bestätigung,

Johannes

dass man eigentlich sich erst mal

Johannes

keine Sorgen drüber machen muss, über den Erfolg.

Johannes

Ganz viele Leute

Johannes

machen sich dann Sorgen, was ist, wenn ich mal eine Million

Johannes

User habe? Okay.

Johannes

Zu viele Sorgen über den Erfolg

Johannes

gemacht. Und für mich ist das

Johannes

so ein bisschen die Botschaft.

Johannes

Man kann das machen und das funktioniert.

Dominik

Wenn ich jetzt noch drei Nutzer habe, vielleicht funktioniert

Dominik

das ja dann auch trotzdem.

Dominik

Vielleicht.

Johannes

Beim ersten geht es noch, beim zweiten...

Johannes

Als Mathematiker

Johannes

der größte Sprung ist eigentlich von 1 zu 2.

Johannes

Alle anderen sind dann...

Johannes

Das ist egal.

Dominik

Man kann ja auch nur noch mit Agenten reden.

Dominik

Ist das dann schon viele?

Dominik

Ist der Agent dann...

Dominik

Anderes Thema.

Johannes

Genau, das war's. Jetzt ist gerade Mittagspause.

Johannes

Ja.

Dominik

Es war Mittagspause, wir haben schon was verpasst.

Dominik

Ja, es läuft schon wieder was.

Johannes

Aber was tut man nicht für seine Hörer?

Johannes

Ja, dann

Dominik

schaltet uns wieder ein. Vielleicht morgen wieder,

Dominik

wir wissen es noch nicht ganz genau.

Dominik

Ja, mal schauen.

Dominik

Ja, morgen ist auch noch die Party abends.

Dominik

Und wir können ja nicht eigentlich, oder vielleicht auch am Samstag noch eine.

Dominik

Ja, schauen wir mal.

Dominik

Ja, also wie auch immer, wenn ihr uns wieder hört,

Dominik

bleibt uns gewogen, schaltet wieder rein.

Dominik

Hallo at peisenpodcast.de für alles Feedback.

Dominik

Vielen Dank, Ronny.

Dominik

Das sind wir effektiv am Ende.

Dominik

Danke, dass ich hier sein durfte.

Dominik

Danke auch.

Dominik

Ja.

Dominik

Und ja, dann bis morgen.

Dominik

Bis zum nächsten Mal.

Dominik

Tschüss.

Dominik

Ciao.

Dominik

Ciao.