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 Pub-Besuch 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

Nee, 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

Ja.

Jochen

Es hat immer noch da.

Dominik

Wir haben ja gestern bis zum ungefähr Mittagshalt ja erzählt, was so war.

Dominik

Was war denn gestern noch Interessantes?

Dominik

Oh, das ist ja mein Notizen-Zurück-Zitzenblättern, es tut mir leid, du warst schon bei heute.

Jochen

Ich glaube, das Erste, was wir tatsächlich gesehen haben, oder zumindest teilweise gesehen haben, war HTMX.

Dominik

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

Dominik

Ja.

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.

Jochen

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 nicht damit beschäftigt hat, glaube ich, nicht allzu viele neue Dinge.

Ronny

Kurzes Sidenote, bevor du runtergehst.

Ronny

Den Talk mittags von Sebastian, hattet ihr den besprochen?

Ronny

Weil der ist ja auch aus der Region 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 über ein bisschen, dass es geklappt hat.

Ronny

Weil er hatte mich noch gefragt, weil ich ja schon mal letztes Mal bei der JungleCon mich beworben hatte

Ronny

und genommen wurde, wie es denn aussieht und ob er meint, 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, 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, liest die Release Notes,

Ronny

abgesehen von dem einen mega krassen, geilen Feature,

Ronny

weil man halt da sehr viele Dinge immer kommt, die einem das Leben leichter machen,

Ronny

wo man Code sparen kann, irgendwelche fiesen Hex-Walkarounds ausbauen kann.

Ronny

Und hat sich dann durch die 5.x-Versionen durchgehangelt.

Ronny

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

Ronny

Ja, der Carlton.

Johannes

Du hattest ja vorhin auch so erwähnt, dass er auf keinen Fall wieder zu 4.2 zurückgehen würde,

Johannes

wenn sich das vermeiden lässt.

Johannes

Genau.

Ronny

Und genau, freut mich sehr, weil der ist jetzt auch ein Regular beim Jungle Cologne.

Dominik

Was hat der denn alles Schönes erzählt?

Dominik

Vielleicht kannst du so ein paar...

Dominik

Da fragst du mich Sachen.

Ronny

Es ist immer so schwer, sich in Details zu erinnern, wenn man sich am Tag...

Dominik

Wenn man nicht so Notizen hat, wie der Johannes hier vor sich.

Johannes

Ja, ich war aber nicht in dem Talk, deshalb habe ich keine Notizen zu dem Vortrag.

Johannes

Da war ja was.

Ronny

Es ging um diverse...

Ronny

Verbesserungen im Admin.

Ronny

Es ging um Custom-Error-Messages, die man jetzt bei Constraints hinterlegen kann,

Ronny

die auch übersetzbar sind.

Ronny

Ja, cool.

Ronny

Und es waren im Endeffekt alles relativ kleine Dinge,

Ronny

aber immer auf Use-Cases bezogen, wie sie es halt vorher gelöst haben und nachher.

Ronny

Also es war ein ganz...

Ronny

Also selbst wenn man jetzt sagt, oh, diesen Case hatte ich noch nie,

Ronny

ich muss noch nie eine Custom-Unique-Constraint definieren,

Ronny

dann war halt immer so, ah, aber das sieht tatsächlich nützlich aus,

Ronny

weil diesen Fall kann ich mir nicht vorstellen, weil man ihn halt präsentiert bekommt.

Ronny

Also, wie gesagt, das...

Ronny

war deutlich, auch für mich, deutlich nützlicher, als ich es mir eigentlich vorgestellt hatte,

Ronny

weil ich dachte eigentlich, ich weiß schon alles,

Ronny

aber tatsächlich habe ich scheinbar das Front-Print auch nicht so genau gelesen.

Ronny

Ja, dann hat er das gut gelöst.

Johannes

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

Johannes

hat man ja diesen Death-by-a-Thousand-Paper-Cuts.

Johannes

Ja, das sind einfach viele, viele kleine Sachen, die gut oder nicht so gut sind.

Johannes

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

Johannes

dass die halt auch an diesen Kleinigkeiten arbeiten und dann auch sagen,

Johannes

wir haben an diesen Kleinigkeiten gearbeitet und dass die sich dann so langsam mit der Zeit...

Ronny

auflösen. Ich kann ja auch noch mal

Ronny

in diesem Kontext erwähnen, dass ich jetzt in 5.2

Ronny

meine erste Django-Contribution drin habe.

Ronny

Oh, herzlichen Glückwunsch.

Johannes

Was bringst du uns denn?

Ronny

Ich habe für, im Zuge von

Ronny

meinem Pony Express Package, habe ich nach der

Ronny

Django-Convigo einen Vortrag darüber gehalten.

Ronny

Das ist ein Package, was E-Mailing

Ronny

ein bisschen vereinfacht, also wirklich die

Ronny

programmatische Erstellung

Ronny

und Testen von E-Mails, was ich

Ronny

relativ verbose finde, wenn man

Ronny

das mit den gegebenen Django-Tools macht.

Ronny

Und fürs Testing,

Ronny

eine E-Mail hat ja nicht nur

Ronny

Text, sondern die hat ja verschiedene

Ronny

Text, also

Ronny

Inhalte. Also die kann theoretisch Medieninhalte

Ronny

haben. Es gibt den HTML-Inhalt

Ronny

und den Plaintext-Inhalt. Die sind, glaube ich, die relevantesten

Ronny

für die meisten modernen E-Mail-Clients.

Ronny

Und man musste im Endeffekt

Ronny

wirklich manuell sich durch ein multidimensionales

Ronny

Dictionary in den E-Mail-Alternatives

Ronny

durchgraben, wenn man das testen möchte.

Ronny

Dafür haben wir in dem Package für die Testsuit

Ronny

einen Wrapper geschrieben. Also die Testsuit nicht

Ronny

für das Package, sondern für die

Ronny

E-Mail-Klassen, die man produziert mit dem Package.

Ronny

Und hab dann vorgeschlagen,

Ronny

ob das nicht ein relativer No-Brainer wäre,

Ronny

wenn man sowas auch irgendwie dem E-Mail-Alternatives

Ronny

geben könnte, dass es quasi alle

Ronny

also diese

Ronny

wie nennt man das?

Ronny

Dieses Text

Ronny

slash JavaScript, Script

Ronny

slash irgendwas, diese, ich komm grad nicht drauf.

Ronny

Nein-Types?

Ronny

Content-Types, genau.

Ronny

Ja, achso, Content-Types.

Ronny

Dass man quasi alles, was mit Text-Slash anfängt

Ronny

und was man hinzugefügt, was in 99% der

Ronny

Fälle wahrscheinlich immer nur plain und

Ronny

HTML sein wird, trotzdem, dass man das

Ronny

dann aus dem Objekt zurückbekommt und dann halt im Test

Ronny

sehr einfach darauf ersorgen kann, ohne halt

Ronny

sich durch irgendwelche nicht dokumentierten

Ronny

APIs durchzugraben. Und

Ronny

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

Ronny

Ich hab dann nochmal was anderes probiert

Ronny

nach meinem Erfolgserlebnis

Ronny

und hab dann genau gemerkt, was Carlton

Ronny

heute in seinem Vortrag, ich greife vor, aber

Ronny

was er sagt, kann ich nachher

Ronny

nochmal meine persönliche Erfahrung dazu

Ronny

spiegeln.

Dominik

Ja, da werden wir auf jeden Fall gleich nochmal eingehen. Das ist doch das Thema von gestern,

Dominik

was wir dann auch schon gesagt haben.

Dominik

Und dann, glaube ich, nochmal ein bisschen aufmachen, wo es um

Dominik

geht, wie man denn partizipieren kann

Dominik

an Django. Aber vielleicht machen wir

Dominik

chronologisch weiter mit den Talks. Das ist vielleicht

Dominik

mal echt so eine gute Idee. Ja, der nächste war

Johannes

Solving a Python Mystery. Ah ja.

Johannes

Oder wart ihr bei jemandem bei dem Quality-Workshop?

Johannes

Den da war ich auch nicht drin.

Johannes

Nee, leider nicht.

Jochen

Wollte ich zwar auch irgendwie, aber irgendwie hat's nicht

Jochen

geklappt. Ja, es hat tatsächlich nicht gepasst.

Jochen

Genau, Solving a Python Mystery, der war groß. Aber der war gut.

Jochen

Der war sehr gut, insofern.

Johannes

Nicht so, dass ich den jetzt anwenden könnte,

Johannes

aber einfach mal mit SJS

Johannes

überall.

Johannes

Da reingucken und schauen,

Johannes

was da für Dateien offen sind und so.

Jochen

Ja, genau, da ging's

Jochen

hauptsächlich um so Dinge,

Jochen

die man halt, also was ist, wenn man ein Produktionssystem

Jochen

hat, wo man nicht so gut drauf gucken kann?

Jochen

Man hat bloß halt vielleicht

Jochen

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

Jochen

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

Johannes

eingeschränkte Shell drauf, sowas? Ja.

Jochen

Aber man kann halt, ja, also zum Beispiel, man hat

Jochen

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

Jochen

Halt über das Proc-File-System

Jochen

kommt man da halt dann ran.

Jochen

Und dann hat man die ganzen Credential-Systeme

Jochen

die man so braucht, um halt in die anderen Sachen

Jochen

reingucken zu können. Und

Jochen

dann kann man viel mit SJS

Jochen

machen. Und ja, das mache ich auch

Jochen

sehr gern.

Jochen

Und, naja, es gibt halt

Jochen

noch so ein paar andere Sachen, die man halt auch sich

Jochen

angucken muss. So, wie viel I.O.-Operationen pro Sekunde

Jochen

gibt's denn eigentlich auf der Maschine?

Jochen

Was macht die denn? Was schreibt die? Was lief die denn

Jochen

so? Und er hatte, ich glaube, das erste

Jochen

Beispiel, was er hatte, war irgendwie ein Kafka,

Jochen

was irgendwie 25

Jochen

Messages pro Sekunde gemacht hat oder so.

Jochen

Und alle waren so halbwegs zufrieden. Das ist übrigens auch etwas,

Jochen

was ich immer wieder sehe bei Kunden oder so, dass sie halt

Jochen

mit Dingen zufrieden sind, wo man sich einfach

Jochen

Moment, das kann nicht sein. Das ist einfach

Jochen

so weit, dass es mehrere Größenordnungen

Jochen

von dem entfernt, was man erwarten würde.

Jochen

Das kann einfach nicht sein. Aber

Jochen

oft wissen Leute halt nicht,

Jochen

dass das eigentlich irgendwie anders aussehen

Jochen

sollte und denken dann, ja, so ist das halt.

Jochen

Und dann machen sie halt ein Kafka-Cluster,

Jochen

statt halt mal zu gucken, warum das nicht so richtig funktioniert.

Jochen

Dann, genau,

Jochen

war da halt so eine Geschichte,

Jochen

TCP, No-Delay kann man irgendwie

Jochen

setzen, wenn man... Macht Python ja auch an

Jochen

Stellen weit. Genau, macht Python...

Jochen

Macht es irgendwie nicht. Und dann

Jochen

sieht man so ein typisches 40-Millisekunden-Delay

Jochen

irgendwie. Und wenn man das

Jochen

irgendwo 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

Johannes

sehr weit runter in den Kernel. Das war eigentlich

Johannes

das Interessante, dass der halt nicht

Johannes

Python debuggt hat, sondern er hat eigentlich

Johannes

Linux und File Handles

Johannes

und Kernel Traces debuggt.

Jochen

Weil dann meinte er so, ja, also von außen solche

Jochen

Sachen debuggen, das ist eigentlich super einfach.

Jochen

Und dann hat er ein Diagramm irgendwie auf einer

Jochen

Seite gezeigt und das ist 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

Jochen

Interface im Kernel. Da kannst du halt auch

Jochen

tatsächlich die Syscrolls selber

Jochen

tracen. Du kannst eigenen Code in den

Jochen

Kernel injecten.

Jochen

Ja, das hört sich simpel an.

Jochen

Der dann im

Jochen

Kernel, vom Kernel formal bewiesen

Jochen

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

Jochen

Ja, dann.

Jochen

Ja, und

Jochen

jemand, den wir auch schon im Podcast hatten, Martin, hat dafür

Jochen

einen Python-to-irgendwie diese

Jochen

Intermediate-Language-Compiler mal geschrieben.

Jochen

Dann kann man das auch in Python machen. Also

Jochen

das Ding ist total gut. Er meinte auch, das verwendet

Jochen

er auch häufig irgendwie, wenn er

Jochen

nochmal tiefer gehen muss.

Jochen

Ja, ansonsten

Jochen

weiß ich, ich kann mich nicht mehr so wirklich erinnern an

Jochen

allerlei Details, aber es war halt so, ja,

Jochen

also man muss immer mal gucken und

Jochen

oft

Jochen

kann man halt mit so Standard

Jochen

Linux-Tools irgendwie dann doch rauskriegen,

Jochen

was da irgendwie schiefläuft an Produktionssystemen.

Jochen

Also, ja. Aber der, man merkte,

Jochen

der hatte richtig viel Erfahrung und schon eine Menge

Jochen

gesehen. Ja. Mein Hauptgedanke

Ronny

war, ich bin dankbar für die Abstraktionsebene,

Ronny

die wir inzwischen in unserem Berufsfeld haben,

Ronny

dass das Dinge sind, mit denen ich einfach nicht

Ronny

beschäftigen muss. Ja.

Johannes

Mein Gedanke war, dass ich

Johannes

dankbar bin, dass es so Leute gibt wie ihn, der das

Johannes

macht. Ja. Meinte er auch

Jochen

auch erst halt so, wenn er irgendwo einen 500er-Fehler

Jochen

sieht oder sowas, dann, er kann nicht mehr schlafen.

Jochen

Er muss das irgendwie rauskriegen. Das geht auch ohne

Jochen

Unix-Debugging.

Jochen

Ja.

Jochen

Ja. Genau, ja. War sehr schön.

Johannes

Danach war der Celery

Johannes

Vortrag, also der

Johannes

Parallelisierungsvortrag mit Celery.

Johannes

Den fand ich jetzt nicht so,

Johannes

der ist nicht so tief reingegangen,

Johannes

wie ich gedacht hätte, dass man kann. Und für mich war es

Johannes

mehr so eine

Johannes

Bestätigung, dass die Sachen, die ich rausgefunden

Johannes

habe, nicht ganz abwegig sind. Ja.

Johannes

Ja. Und die waren?

Johannes

Ja, dass du Tasks in möglichst

Johannes

kleine Teile aufteilst, dass du ein

Johannes

Modell hast mit einem Status drauf, dass du den Status

Johannes

atomar änderst.

Johannes

Also in der Transaktion machst du

Johannes

ein Select for Update auf dieses Modell, änderst

Johannes

den Status, speicherst den, dann,

Johannes

das hat er nicht gezeigt, dann mache ich es normalerweise so,

Johannes

dass ich an dem Punkt die Transaktion beende,

Johannes

weil dann habe ich ja mein Modell in der Hand

Johannes

mit dem korrekten Status, dass ich kein anderer mehr

Johannes

nehmen kann. Und dann kannst du diesen Task

Johannes

abarbeiten und dann hast du nochmal so einen Block, der dann den

Johannes

Status auf die nächste Stufe stellt.

Johannes

Und dieses

Johannes

Muster, das ist so was,

Johannes

ich weiß nicht, vielleicht bin ich da

Johannes

als Einziger draufgekommen oder auch nicht, ja,

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,

Johannes

dass man nicht was ganz Verrücktes macht.

Dominik

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

Dominik

bist du denn gerade und das wird dann immer Transaktionsgrund

Dominik

angefasst und du füllst das dann auf

Dominik

Dinge, die auf dieses Statusmodell

Johannes

Ja, und wenn du

Johannes

in so ein Task reingehst, dann

Johannes

erwartest du, dass das Objekt, was

Johannes

du bearbeitest, in einem bestimmten Status ist

Johannes

und änderst es in

Johannes

einen anderen Status, damit kein anderer Task

Johannes

das anfassen kann. Das heißt, 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?

Johannes

Ja, genau, also es kommt darauf an, je nachdem, was

Johannes

du halt für Status hast.

Johannes

Es kann ja sein, dass du durch mehrere

Johannes

Stufen durch musst. Genau, also ich meine,

Dominik

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

Johannes

Intermittenten. 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 Prozessschritt

Johannes

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 du

Johannes

natürlich x Stufen haben. Du kannst ja 5

Johannes

verschiedene Verarbeitungsschritte oder 100

Johannes

verschiedene.

Johannes

Oder dann auch verzweigt haben.

Johannes

Und das

Johannes

Wichtige ist aber, dass du tatsächlich dieses Statusfeld

Johannes

hast. Eins, was Warte auf Verarbeitung

Johannes

heißt und eins, das heißt, wird verarbeitet.

Johannes

Und dann kannst du sicher gehen,

Johannes

dass du den nicht doppelt verarbeitest. Wenn du nämlich

Johannes

das Erste machst, das Erste, was du machst,

Johannes

du holst dir den aus der Datenbank

Johannes

mit einer Datenbanktransaktion.

Johannes

In einem Select for Update.

Johannes

Das Select for Update sorgt

Johannes

genau dafür, dass wenn du den

Johannes

rausholst aus der Datenbank mit dem

Johannes

Status und der ID, das ist sozusagen

Johannes

der kritische Filter. Du suchst nach der ID

Johannes

und nach dem Status und dann

Johannes

kriegst du von der Datenbank eben genau

Johannes

einen oder keinen. Wenn du keinen

Johannes

kriegst, sagst du, gut, dann hat es wohl schon jemand anders

Johannes

gemacht oder der ist schon fertig oder was auch immer.

Johannes

Und wenn du einen kriegst, machst du weiter.

Johannes

Und so

Johannes

schützt du dich quasi davor,

Johannes

dass du diese Race Conditions in die Datenbank

Johannes

rein trägst. Dass du sagst,

Johannes

okay, der verarbeitet jetzt was

Johannes

und derweil verarbeitet jemand anders auch noch irgendwas.

Johannes

Und er hat das gestern

Johannes

Idem Potency genannt, also Idem Potenz.

Johannes

Meiner Meinung nach nicht 100% korrekt

Jochen

genannt. Darfst du es ja nicht

Jochen

ein paar Mal ausführen.

Johannes

Weil Idem Potenz 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.

Johannes

Korrekte Idem Potenz.

Johannes

Der korrekte Begriff wäre hier

Johannes

irgendwie Locking oder sowas.

Johannes

Du hast einen Locker drauf und das machst

Johannes

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

Johannes

Wie gesagt, dieser Talk war für mich

Johannes

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.

Dominik

Oh, ich weiß nicht, was da ist.

Dominik

Das ist dir noch nie passiert.

Dominik

Bei mir passiert das ständig.

Johannes

Und jetzt mal das andere Erlebnis zu haben,

Johannes

es ist nicht ganz Quatsch, was du dir ausgedacht hast.

Johannes

Na, schön.

Johannes

Ja,

Jochen

genau, genau. Aber ja,

Jochen

Celery immer so ein bisschen, aber der macht ja dann auch so Dinge

Jochen

mit Workflows und keine Ahnung, das ist kompliziert.

Jochen

Und ich denke so, ha, lieber nicht, sowas macht man das nicht.

Dominik

Wie ist denn jetzt der Stand mit den Django-Tasks?

Dominik

Die sollten doch jetzt langsam mal...

Jochen

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

Jochen

Kommt jetzt dann vielleicht demnächst.

Ronny

Aber ich glaube, es geht ja vor allem nur ums Interface

Ronny

erstmal. Es gibt ja dieses Package,

Ronny

wo das jetzt erstmal quasi so eine Art

Ronny

ich glaube, die Datenbank-Tasks

Ronny

als Primärding implementiert

Ronny

werden und in Django Core

Ronny

soll tatsächlich nur der Dummy-Taskrunner,

Ronny

den man dann für Tests nutzen kann und das Interface.

Ronny

Und diese Idee mit diesem Interface, das finde ich

Ronny

super spannend. Es gibt ja jetzt auch starke Überlegungen,

Ronny

die ganze Authentifizierung bei

Ronny

Django, was ja auch oft kritisiert wird, dass im

Ronny

User-Model ein sehr Western-Centric

Ronny

Vor-Nahme-Nach-Nahme-Konzept, das passt oft

Ronny

nicht in vielen Use-Cases oder auch anderen

Ronny

Kulturen. Dann viele...

Ronny

Also es wird ja username-standardmäßig genutzt,

Ronny

du kannst das irgendwie opt-outen, es gibt so Packages,

Ronny

E-Mail-Adresse ist nicht unik,

Ronny

also ganz viele Dinge und das halt nicht die richtige

Ronny

Lösung wäre, zu sagen, wir ändern das

Ronny

jetzt oder wir bauen jetzt was Neues dazu, sondern

Ronny

dass man das einfach auch Plug-and-Play macht,

Ronny

wie halt auch die Datenbank-Anbindung Plug-and-Play ist,

Ronny

wie die Caches Plug-and-Play sind, wie

Ronny

mehr oder weniger eigentlich alles Plug-and-Play ist und da ein

Ronny

Authentifizierungssystem zu haben, wäre natürlich

Ronny

super und ich glaube, auf diesem gleichen Konzept

Ronny

basiert auch dieses Tasks. Das ist im Endeffekt

Ronny

das Django Core, im Endeffekt mit jedem kompatiblen

Ronny

Task-Runner oder Task...

Ronny

Ist es Task-Runner? Ich weiß es nicht genau.

Jochen

Background-Task,

Jochen

Backend.

Ronny

Task-Backend, dann kommunizieren

Ronny

kann, wenn man dann sagt, ich möchte ja eins mit

Ronny

Celery, dann baust du dir eins und wenn du sagst,

Ronny

mir reicht die Datenbank, dann baust du dir dafür eins

Ronny

oder nimmst das, was da ist und

Ronny

das... Ja, ich warte da aber auch schon

Ronny

sehnsüchtig drauf. Wir können auch

Johannes

noch kurz vorgreifen auf einen der Lightning-Talks,

Johannes

weil da war nochmal der...

Johannes

äh...

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. Ja, aber

Johannes

das wird immer, das ist rot umrandet

Ronny

und da habe ich mich... 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 Tasks, 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... Also wir

Ronny

haben ja immer gesagt, okay, dann nutzen wir Revit im Queue, 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 quasi

Ronny

die schedulen lassen. So. Aber du kannst

Ronny

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

Ronny

Wir haben das wirklich mehr oder weniger gut

Ronny

ausgebaut bekommen, kein Problem mehr, Kuh vom Eis.

Ronny

Und dann meinte dann, in dem

Ronny

Lightning Talk gestern, meinte er so, ja, ja,

Ronny

ihr denkt, ihr nutzt die nicht,

Ronny

aber in dem Moment, wo ein Retry

Ronny

kommt, nutzt ihr die plötzlich schon.

Ronny

Und das war mir nicht bewusst und das ist dann so ein

Ronny

Oh, dann sollte ich vielleicht wirklich kein

Ronny

Redis zusammen mit Celery verwenden.

Ronny

Ja,

Johannes

Ivar Shkalvans ist der Name.

Johannes

Ja, ja, also das...

Johannes

Ich verstehe auch nicht so genau, warum

Dominik

mit dem Schedule, das funktioniert immer nicht so, wie man das

Ronny

richtig will. Und das Package heißt übrigens

Ronny

Django-Task-Queue,

Ronny

also wie der Buchstabe,

Ronny

falls irgendwer mal Spaß daran hat.

Ronny

Ja, es gibt leider so ein bisschen viele

Ronny

Django-Task-Sachen, die alle so ganz ähnlich

Ronny

ein Name mengen.

Ronny

Ja, kann ich verlinken, auf jeden Fall.

Jochen

Genau.

Johannes

Genau, dann kam so ein bisschen, ging es so ein bisschen

Johannes

ins Abendprogramm rein, da war es schon 17 Uhr und

Johannes

dann kam der

Johannes

Words-Vortrag, Logs, Shells, Caches

Johannes

and other strange words.

Johannes

Von einem Dortmunder,

Johannes

das fand ich auch interessant.

Jochen

Ja, wusste ich auch nicht, ist auch relativ nah bei uns dran,

Jochen

aber noch nie gehört.

Jochen

Nee, ist ungeheuer weit weg, finde ich.

Jochen

Ja, gut.

Jochen

Ja, Hörertreffen in Stuttgart.

Jochen

Die machen sie jetzt dafür ab.

Jochen

Genau, der Vortrag...

Dominik

Wir haben übrigens ganz kurz zum Hörertreffen

Dominik

schon uns entschieden für...

Dominik

Ja, kam ja immer noch rum.

Johannes

Da ging es dann schon so ein bisschen ins Abendprogramm rein,

Johannes

hat er auch selber gesagt, war ein sehr unterhaltsamer Vortrag.

Johannes

Ja, fand ich.

Johannes

War sehr schön gemacht, war sehr nett,

Johannes

hat einfach so ein bisschen über die

Johannes

Etymologie gesprochen und über die lustigen

Johannes

Herkünfte von...

Johannes

den Wörtern, die wir benutzen,

Johannes

die aber eigentlich nautischen Ursprungs im 17. Jahrhundert sind.

Ronny

Was mich tatsächlich schockiert hat,

Ronny

ist, dass die Story mit dem Bug,

Ronny

also der Motte in dem IBM-Computer,

Ronny

dass das nicht stimmt, also dass das nicht die Ursache

Ronny

davon ist.

Ronny

Das habe ich schon oft rumerzählt.

Johannes

Ja, das ist auch ein schönes Bild.

Johannes

Ja, aber...

Dominik

Das musst du mir nochmal erzählen, ich habe den Tag nämlich verpasst.

Dominik

Warum stimmt das nicht?

Ronny

Also es gibt diesen Eintrag von dieser

Ronny

Computermitarbeiterin,

Ronny

die die Motte aus dem Gerät,

Ronny

gefischt hat und dann in ihrem

Ronny

handgeschriebenen Logs,

Ronny

also wirklich das, was heute halt

Ronny

auf dem System irgendwie im Hintergrund läuft,

Ronny

in einem Buch, und da hat sie sich die Motte eingeklebt

Ronny

und hat das dann so geschrieben

Ronny

als, wir haben gerade den ersten Bug

Ronny

gefunden. Tatsächlich war das aber

Ronny

ironisch gemeint, weil das Wort Bug auf

Ronny

ich glaube Edison war es, zurückgeht,

Ronny

der geschrieben hat, sein Ideenfindungsprozess

Ronny

ist so, wenn er eine neue Idee hat,

Ronny

dann kommt das so in einem Schwall

Ronny

heraus und danach kommen

Ronny

wie kleine, wie kleine

Ronny

ist ungeziefer diese ganzen Probleme

Ronny

in der Realität, mit denen sie sich dann

Ronny

auseinandersetzen muss, bevor er dann irgendeine Lösung

Ronny

hat, die er wirklich verkaufen kann

Ronny

oder nicht. Achso, die kleinen Käfer und

Dominik

dann hat sie gesagt, okay, jetzt haben wir wirklich einen

Dominik

echten Käfer. Genau. Ja, die Mutter.

Johannes

Das fand ich aber auch sehr interessant, dieses Zitat, weil

Johannes

das ist ja auch ein Gefühl, was man so kennt,

Johannes

dass man einmal so einen Inspirationsschub hat und

Johannes

dann stellt sich da die Realität in den Weg.

Johannes

Und du weißt aber

Johannes

eigentlich erst, wenn du diese ganze

Johannes

schmutzige Arbeit gemacht hast,

Johannes

ob es ein Erfolg oder ein Misserfolg ist.

Jochen

Ja, das ist echt eine Idee selber, kannst du

Ronny

das nicht ansehen. Außer du kennst jemanden, der

Ronny

den Weg schon gegangen ist und kannst ihn fragen.

Johannes

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

Johannes

nicht.

Johannes

Gut,

Johannes

und danach gab es natürlich noch Lightning Talks. Lightning Talks

Johannes

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

Johannes

immer eine schöne Auswahl

Johannes

und das war auch gestern so.

Dominik

Apropos Lightning Talks, ich glaube,

Dominik

es gibt heute interessante Lightning Talks. Machst du ein bisschen

Johannes

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

Johannes

gibt, weil ich habe mich angemeldet,

Johannes

unvorsichtigerweise zu einem Lightning Talk.

Johannes

Und ich werde in 5 Minuten

Johannes

darüber sprechen, wie man in 5 Minuten einschlafen

Johannes

kann. Und wie man das

Johannes

hinkriegt, in 5 Minuten einzuschlafen.

Dominik

Ja, also wenn ihr jetzt noch dran seid, dann habt ihr

Dominik

es noch nicht geschafft.

Johannes

Ich habe heute Abend dann 5 Minuten Zeit. Mal schauen,

Johannes

bei wie vielen es klappt.

Dominik

Und Ronny, du wolltest auch was über

Dominik

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

Ronny

geschwächelt, gesundheitsbedingt.

Ronny

Habe es dann nicht gemacht. Jetzt habe ich gerade gehört,

Ronny

dass alle Slots schon voll sind.

Ronny

Von daher werde

Ronny

ich nicht über das Thema reden, aber ich kann es ja hier

Ronny

ganz kurz präsentieren.

Ronny

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

Ronny

Auch schon voll, heile nein.

Ronny

Es geht darum, dass ich habe vor

Ronny

einiger Zeit, ich habe da auch einen Blogpost drüber geschrieben,

Ronny

hatte ich den Fall, dass

Ronny

wir so eine Art Django

Ronny

DevOps-Geschichte in so einem großen Monolithen

Ronny

brauchten. Es hatte zu tun,

Ronny

ganz konkret, um Django Migrations aufzuräumen

Ronny

für einen relativ spezifischen Case mit

Ronny

für ein Projekt mit sehr, sehr langen

Ronny

Deployment-Zyklen und so.

Ronny

Und ja,

Ronny

das aus Gründen nicht funktioniert hat und so

Ronny

wegen, das Circular Dependencies auflösen

Ronny

dauert zu lange, etc., etc.

Ronny

Auf jeden Fall habe ich dann mich

Ronny

relativ stark dafür eingesetzt und habe da

Ronny

beim Kunden auch so ein paar Hierarchie-Ebenen,

Ronny

Hierarchie-Träbchen rauf und runter gemacht,

Ronny

um die davon zu überzeugen, dass wir das Ding dafür einfach

Ronny

Open Source machen könnten und sie es trotzdem

Ronny

voll zahlen.

Ronny

Was am Anfang für ein paar gehobene

Ronny

Augenbrauen geführt hat, weil

Ronny

warum Open Source? Hä, wir zahlen doch.

Johannes

Warum Sachen verschenken? Genau.

Ronny

Und ich habe dann aber nachher tatsächlich

Ronny

einen ganzen Haufen Argumente gefunden, warum das

Ronny

einfach für alle Beteiligten besser ist.

Ronny

Beispielsweise... Weil man dann endlich eure Fehler

Dominik

finden kann, die dann auch öffentlich verfügbar

Dominik

und einsehbar sind.

Ronny

Vor allem auch, weil wir ansonsten das halt irgendwie

Ronny

in den Monolithen reingewurschelt hätten und sobald irgendwann mal

Ronny

ein Problem kommt, sowas fasst ja nie wieder einer freiwillig

Ronny

an. Wenn das jetzt Open Source

Ronny

ist, dann würde ich mich zumindest, solange ich es aktiv

Ronny

maintaine, mich drum kümmern.

Ronny

Und ich hatte bei zwei

Ronny

Themen, wo ich selber... Open Source war also

Dominik

ein Maintaining-Versprechen. Interessant, ja?

Ronny

Solange ich mich drum kümmere, zumindest.

Ronny

Da wird mich wahrscheinlich...

Ronny

Da war die Kinderfahndung noch nicht so weit fortgeschritten.

Ronny

Wird mich wahrscheinlich irgendjemand auf meine

Ronny

Python-Podcast-Folge von vor zwei, drei

Ronny

Jahren festnageln, wo ich

Ronny

gesagt habe, das muss man immer weiter maintainen.

Ronny

Ja.

Ronny

Nein, genau.

Jochen

Man kann ja auch schlecht maintainen. Ich maintaine Sachen

Jochen

aber teilweise sehr, sehr, sehr schlecht.

Ronny

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

Ronny

ist, nachdem ich das gemacht habe,

Ronny

Artikel darüber geschrieben habe und es halt wirklich

Ronny

auch im Endeffekt eine wirkliche Win-Win-Situation

Ronny

war ja auch wirklich die Entkoppelung auch dann da, wo man gar nicht

Ronny

in die Verlegenheit kam, irgendwas projektspezifisch zu

Ronny

machen, hatte ich

Ronny

dann irgendwann plötzlich einen

Ronny

Issue von

Ronny

einer

Ronny

scheinbar sehr, sehr kompetenten

Ronny

Entwicklerin, die geschrieben hat,

Ronny

dass sie folgende zwei Probleme

Ronny

identifiziert hat.

Ronny

Und das eine hatte ich sogar literally as to do im

Ronny

Code, 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

Ronny

dann zwei absolut

Ronny

perfekte Merge-Requests, wo ich wirklich absolut

Ronny

oder fast nichts daran aussetzen konnte,

Ronny

delivered, die einfach funktioniert haben,

Ronny

alles durchgetestet und das

Ronny

sind halt Sachen, die hätten die ansonsten halt

Ronny

niemals da reinbekommen.

Ronny

Und genau, ansonsten

Ronny

ich nutze das natürlich auch für meine Projekte und das

Ronny

ist eine sehr schöne Success-Story und

Ronny

ich glaube, wenn das mehr Leute im Kopf haben,

Ronny

dass das geht, dann könnte man sehr, sehr

Ronny

viel mehr in Open Source einfach leveragen,

Ronny

über Kundengeld,

Ronny

wenn man es halt einfach im Kopf hat.

Ronny

Und das wolltest du quasi als Success-Story verkaufen

Dominik

und ein bisschen Werbung zu machen. Was war das genau?

Dominik

Worum ging es da? Also ich habe, du hast gesagt,

Dominik

Deployment-Zeugs bei Django. Also genau,

Ronny

das Package heißt Django Migration Zero.

Ronny

Es gibt leider, ich habe auch eine Sache, wenn man

Ronny

Packages erstellt, checkt vorher mal, was es für Packages

Ronny

gibt, die ähnlich heißen. Ups.

Ronny

Es gibt nämlich Mig Zero

Ronny

und Migration Zero Django und ich glaube,

Ronny

Migration Zero ohne Django.

Ronny

Ja, meinst du, ich habe

Ronny

einen Artikel geschrieben, ich habe in Blog-Posts das verlinkt und noch

Ronny

einen Artikel drüber geschrieben. Das heißt, Google

Ronny

packt mich jetzt auf Platz 1, glaube ich.

Ronny

Yay.

Ronny

Aber genau, also es geht einfach darum,

Ronny

dass wenn man, wir bei uns nutzen

Ronny

aus historischen Gründen, wie du vorhin auch meintest,

Ronny

man hat mal so eine Lösung im Kopf und dann nutzt man die immer

Ronny

weiter. Wir haben, um quasi Object-Ownership

Ronny

zu haben, haben wir quasi in so einer, in unserer

Ronny

Toolbox-Package, wo so kleine Dinge,

Ronny

die sich nicht als eigenes Package lohnen,

Ronny

haben wir quasi so dieses

Ronny

Created-By, Last-Modified-By

Ronny

und das ziert Titel auf den User,

Ronny

was dazu halber führt, dass wir sehr, sehr viele Circular-D-

Ronny

Dependencies haben, wenn wir ein Custom-User-Model

Ronny

haben, was wir aus historischen Gründen,

Ronny

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

Ronny

Aus, wie immer mit, auch Model-Switchen und

Ronny

haben wir meistens uns für ein Custom-Model

Ronny

entschieden, was wir heute nicht mehr tun,

Ronny

aber es war halt ein älteres Projekt und das

Ronny

heißt, du hast sehr, sehr, sehr, sehr viele

Ronny

Circular-Dependencies und wenn du Squashen möchtest,

Ronny

musst du die, also das dauert, weiß ich nicht,

Ronny

Tage, glaube ich, hätte das gedauert zu lösen,

Ronny

für den Effekt, dass ich weiß, welche

Ronny

Migrations mal da waren, aber das ist halt kein

Ronny

Packages-Deployed-System, also was auf

Ronny

ein Produktivsystem angekommen ist, da ist,

Ronny

Ende, so, ich muss nicht

Ronny

wissen, was danach passiert ist, was davor passiert ist,

Ronny

das heißt, es ist einfach determiniert und

Ronny

ich kann mir halt einfach auch, was

Ronny

Migration-Zero im Endeffekt ist, ist, du gehst

Ronny

halt einfach hin und löscht alles, so, und startest halt

Ronny

neu, weil das, das, das, haben wir alle schon ausgemacht,

Ronny

Create Migrations lustigerweise

Ronny

nicht das Problem hat, was Squashing hat

Ronny

mit, das kriegt es einfach hin, ich weiß nicht

Ronny

wie, aber es kriegt es hin

Ronny

und genau, von daher ist

Ronny

das halt für, wenn man einfach eine Applikation

Ronny

hat und regelmäßig aufräumen möchte,

Ronny

der Trick ist halt, dass ich im Endeffekt, du hast die Datenmacht schon einmal

Dominik

so gezogen, dass der Stand stimmt und dann schmeißt du alle Migrations

Dominik

weg, machst neue Migrations hin. Genau, und der, du musst

Ronny

halt, du kannst halt in ganz, ganz fiese Edge-Cases

Ronny

kommen, die nicht so altsehr wahrscheinlich sind,

Ronny

aber wenn du halt ein Produktionssystem hast mit Uptime und

Ronny

sowas, möchte man halt einfach nicht sich solche,

Ronny

solche Dinge einbauen, das heißt, du musst halt auch gucken,

Ronny

dass die Django Migration Table im Endeffekt den,

Ronny

der Apply-Cache,

Ronny

ja, von Django, muss man halt

Ronny

auch aufräumen und damit man halt, weil niemand gerne

Ronny

auf der Produktionsdatenbank herumfudelt, habe ich quasi

Ronny

ein Skript geschrieben, dass das für einen macht

Ronny

und du kannst es von Django Admin quasi an- und ausstellen,

Ronny

also sagst, okay, ich weiß, es kommt ein Deployment,

Ronny

das nächste Deployment, das ist, mach den Haken an,

Ronny

dann macht dir das quasi für einen selber, das heißt,

Ronny

du musst nicht mehr auf der Datenbank herumfudeln, du musst

Ronny

im Endeffekt einfach nur noch das tun, was du gerne machst,

Ronny

irgendwas im Code ändern, committest das

Ronny

und der Rest passiert dann automatisch

Ronny

und, ähm, genau.

Ronny

Das ist sehr, ich finde das für den Use-Case

Ronny

sehr konvenient. Ja, cool.

Ronny

Coole Sache. Nice.

Johannes

Aber habe ich das richtig rausgehört? Ihr nehmt kein

Johannes

Custom-User-Model mehr?

Ronny

Ähm, wir versuchen eher, über diesen

Ronny

User-Profile-Ansatz zu gehen, also,

Ronny

das Problem ist, dass, ich glaube, Django lädt

Ronny

sehr, sehr, sehr, sehr, sehr, sehr stark dazu ein,

Ronny

dass man, ähm, so gewisse

Ronny

zentrale Models mit immer mehr belädt

Ronny

und dass man halt nicht wirklich versucht,

Ronny

Domänen zu schneiden. Ähm,

Ronny

ich meine, Foreign-Keys, so

Ronny

enorm praktisch die sind, ist halt auch,

Ronny

du bist halt einfach in irgendeiner Funktion

Ronny

plötzlich drei Domänen

Ronny

irgendwo weiter und hast dann plötzlich irgendwelche

Ronny

Daten dir gefischt, weil es geht halt

Ronny

und, ähm, von daher versuchen

Ronny

wir jetzt in den neuen Projekten eher über

Ronny

Profile zu gehen. Also Profile ist für euch dann

Dominik

ein eigenes Modell, eine eigene Tabelle, überzeugst du?

Ronny

Genau, also wir sagen quasi alle, also der User, der Django-User

Ronny

ist nur für die Authentifizierung da, also

Ronny

wir nutzen im besten Fall auch nicht den Namen oder

Ronny

E-Mail-Adresse, logischerweise schon, aber

Ronny

nicht den Namen und dann gibt es zum Beispiel

Ronny

dann irgendwie ein Account-Profil, wo dann der Name

Ronny

drinsteht, dann vielleicht die Adresse,

Ronny

ähm, dann, das ist vielleicht

Ronny

gerade kein Beispiel mehr, zum Beispiel, wenn du jetzt sagst, ich habe

Ronny

irgendwelche Konfigurationen, die ich machen kann in meiner

Ronny

Applikation, gibt es vielleicht ein User-Konfigurations-

Ronny

Profil und versucht das aufzuteilen

Ronny

und dann die verschiedenen kleinen Models

Ronny

in ihren Domänen zu haben, was halt auch so zu

Ronny

führt, dass du, wenn du zum Beispiel den User immer weiter

Ronny

aufbläst, so teilweise hast du dann ja 50, 60

Ronny

Felder in einer hinreichend großen Applikation, ist ja

Ronny

keine Seltenheit, die Daten werden auch immer

Ronny

gefetcht und die wenigsten Leute in Django

Ronny

machen ja auch, dass sie wirklich dann per Select sich nur die

Ronny

Felder holen, die sie brauchen, sondern eher so, ja, gib mir mal

Ronny

alles, das erzeugt auch wohl

Ronny

vor allem, also gegeben der Last, aber auch

Ronny

immer einen relativ großen Overhead, plus ist

Ronny

natürlich auch für den nächsten Junior, der ins Projekt

Ronny

kommt, der muss halt 50 Felder verstehen und nicht

Ronny

nur drei. Das mit

Dominik

Daten habe ich noch nicht drüber nachgedacht, aber ich habe jetzt

Dominik

tatsächlich User-Profile an ein

Dominik

Profil, Jason Field, gehängt.

Ronny

Ja, also ich finde, Jason Field sind

Ronny

ein sehr zweischneidiges Schwert, das ist immer so ein bisschen,

Ronny

die führen so ein bisschen die

Ronny

Relational-Datemark-Adaptsodum, weil manche Dinge

Dominik

sind die super. Ja, für solche Sachen im Profil

Dominik

möchte ich das nicht filtern, also das ist nicht so Filter-Rebuild

Dominik

und deswegen ist es egal. Aber ich versuche, also ich sage

Ronny

mal so, ich versuche die, ich nutze

Ronny

die, aber ich versuche da dreimal drüber nachzudenken, ob ich

Ronny

es wirklich nutzen möchte und wenn ich zum Beispiel

Ronny

so die Profilkonfiguration habe, weiß ich nicht, die

Ronny

Farbe und die Sprache und keine Ahnung was,

Ronny

das kann ich ja relational

Ronny

speichern, dann versuche ich es auch zu tun.

Johannes

Äh, ich bin tatsächlich gerade in

Johannes

die andere Richtung unterwegs, zum Thema

Johannes

User-Model. Ich bin jetzt eher wieder

Johannes

dazu übergegangen, Custom User-Models zu machen,

Johannes

aber nicht, um da Felder hinzuzufügen,

Johannes

sondern eben genau, um Felder wegzuschneiden, weil ich

Johannes

keinen Firstname brauche, ich brauche keinen Lastname, ich brauche

Johannes

keinen... Ich habe auch alles gestrichen,

Johannes

nur E-Mail gemacht. Ja, genau, einfach nur

Johannes

E-Mail und Passwort und das ist eigentlich

Johannes

für die meisten Sachen reicht das ja schon.

Ronny

Aber dann spricht der tatsächlich meinem eigentlich

Ronny

gar nicht. Ja, genau, das ist ja eigentlich das Gleiche.

Ronny

Ja, vielleicht sogar noch

Ronny

ein logischer weiterer Schritt. Ja, aber

Ronny

halt mit Aufwand verbunden. Ja.

Johannes

Und das ist dann in meinem Projekt-Template drin

Johannes

und dann habe ich es einmal gemacht und dann ist es fertig.

Johannes

Ja.

Johannes

Ja, das ist auch sowas, dass man baut sich

Johannes

ja dann irgendwie so eine Sammlung an

Johannes

so eine Schatzkiste an Lösungen auf und die

Johannes

benutzt man dann schon immer wieder und wenn die je verloren geht,

Johannes

dann bin ich wieder ein Jumbo-Anfänger.

Johannes

Dann kann ich einmal... Tja.

Ronny

Darum haben wir damals mal angefangen, die ganzen Sachen

Ronny

in ein Package zu packen. Das ist zwar

Ronny

nicht der Weg, wie Packages sein, die sollen ja eigentlich

Ronny

Single-Purpose und dass du einem eine

Ronny

Sache hast, aber es gibt so viele Kleinigkeiten

Ronny

auch für ein Admin, wo man sagt so, ja, ich will

Ronny

das jetzt nicht jedes Mal neu googeln, wie ich

Ronny

jetzt dieses eine Read-Only-Dingsbums

Ronny

da irgendwie machen kann oder sowas oder diesen

Ronny

einen Sonderfall mit weiß ich nicht was.

Ronny

Das ist schon praktisch, wenn man das

Ronny

da reingießen kann und mit einem... Ja, man hat sich

Dominik

so ein kleines kariertes Maiglöckchen da gemacht, hat noch ein bisschen

Dominik

gehegt und gepflegt und ordentlich aufgezogen

Dominik

und dann noch die Ecken und Kanten ein bisschen

Dominik

richtig gestutzt, dass das da genauso aussieht. Genau.

Ronny

Also wir zum Beispiel, also ich finde das zum Beispiel

Ronny

super, dieses Toolbox-Package, das wir haben.

Ronny

Also das nutzen wir in den Projekten. Da sind natürlich

Ronny

auch viele Sachen drin, die Leute einfach nicht brauchen, aber ich meine,

Ronny

im Endeffekt, es ist halt...

Ronny

Ja, also ich räume da auch

Ronny

regelmäßig auf, also einfach, wenn ich dann sage,

Ronny

okay, jetzt ist der Zeitpunkt gekommen, wo das nicht mehr relevant ist

Ronny

oder habe einfach Sachen aktiv rausgezogen,

Ronny

also mit das Body Express Package,

Ronny

von dem ich vorhin am Anfang gesprochen habe,

Ronny

das war auch mal Teil davon. Habe ja gesagt, ja,

Ronny

das ist sowas von Single Purpose, also das macht keinen Sinn,

Ronny

das da mit reinzufudeln. Das kann man gut rausziehen. Genau.

Ronny

Cool.

Dominik

Dann sind wir mit gestern

Dominik

durch. Dann kommen wir nach heute.

Dominik

Heute, der Tag hat angefangen. Er hat sehr früh

Dominik

angefangen. Einer, ihr habt so früh überlassen.

Dominik

Auch nicht. Nach unserer Zeit neun Uhr

Dominik

nach Lokaler...

Dominik

Mein Jetlag ist schon vorbei.

Johannes

Ich fand es jedenfalls

Johannes

interessant, es war ja, also ich meine...

Dominik

Es war der Talk für die Django Software

Dominik

Foundation, die Versammlung und der offizielle

Dominik

20. Geburtstag.

Johannes

Ja, war ja gar kein Talk, sondern es war das

Johannes

Django Software Foundation Board Meeting.

Johannes

Ja. Das jährliche Board Meeting,

Johannes

das erste jährliche Board Meeting,

Johannes

also weiß noch nicht, ob man davon jährlich

Dominik

sprechen kann. Gleichzeitig die Geburtstagsfeier, 20 Jahre

Dominik

Django, es gab auch Kuchen. Genau, es gab Kuchen, ja.

Johannes

Das war sehr schön. Aber es war halt

Johannes

heute früh um acht und mir ist durchaus aufgefallen, dass

Johannes

dann so um acht Uhr zehn noch ein paar Leute gekommen sind

Johannes

und um acht Uhr 15 oder um acht Uhr 20.

Johannes

Oder um acht Uhr 30, wie ich.

Johannes

Es scheint tatsächlich nicht ganz einfach

Johannes

zu sein, so früh aufzustehen.

Johannes

Ich meine, für...

Johannes

Mit Kindern ist das eigentlich so, ja.

Ronny

Ich kam halt aus der Stadt und die Busse fahren so mittel

Johannes

von... Ja, okay, gut, das

Johannes

ist natürlich...

Johannes

Wir sind ja alle hier im Hotel,

Johannes

da ist es natürlich einfacher. Ja.

Jochen

Ich habe jemanden gesehen,

Jochen

der mit Badelatschen

Jochen

die ganze Zeit... Da dachte ich mir so, oh,

Jochen

warum bin ich da nicht drauf gekommen? Ich bin mit den Schuhen an.

Dominik

Ja, ich habe mich auch nicht gedacht, ich wollte eigentlich

Dominik

gerade eben nochmal... Das ist jetzt Jim.

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.

Johannes

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 war interessant.

Johannes

Die Menschen, die sich daran beteiligen,

Johannes

ich meine, viele von den Namen kennt man,

Johannes

wenn man so ein bisschen in der Szene ist.

Johannes

Aber es war trotzdem einfach mal

Johannes

interessant zu sehen, wie die so...

Dominik

Wie viel Zeit man mit so Dingen verbringen kann.

Ronny

Auch wie viele Meta-Dinge einfach

Ronny

passieren müssen und wenn sie nicht passieren,

Ronny

wie viele negative Konsequenzen das hat.

Johannes

Und wie viele Kommentare es gibt zu allem.

Dominik

Ja, da muss man nochmal reden.

Dominik

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

Dominik

Also sehr corporate.

Dominik

Und dann gab es Kuchen.

Dominik

Das war sehr schön.

Johannes

Das hat sich gelohnt, 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

sage ich mal, im Mainstream.

Johannes

Oh, im Mainstream?

Johannes

Im Mainhall.

Johannes

Gab es den? Hab ich den verpasst?

Johannes

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

Johannes

Ach so, ja, das ist...

Johannes

War eine schöne Aufstellung.

Johannes

Hat der Jochen

Dominik

den Lightning Talk vom Johannes vorher schon gehört?

Dominik

Ja, vielleicht.

Johannes

Ich habe ihm das vorher kurz gezeigt.

Johannes

Das war eine Pause.

Johannes

Nee, das war nur der Vulkanier-Mindgrab.

Johannes

Genau, das war auch eine sehr schöne,

Johannes

war sehr unterhaltsam, dieser Vortrag.

Johannes

War erstaunlich lang.

Johannes

Er hat viele Sachen gesagt.

Johannes

Und viele von den Geschichten

Johannes

kennt man ja schon so ein bisschen mehr.

Johannes

Man hat es ja schon mal gehört.

Johannes

Ein Lion Air Flight 110.

Johannes

Ich habe gar nicht mehr gesagt, was das ist.

Johannes

Ich habe gar nicht mehr gesagt, was das ist.

Johannes

Ich habe gar nicht mehr die Geschichten alle notiert.

Johannes

Ich habe nur notiert, wie die Geschichten heißen.

Ronny

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

Dominik

Ja, vielleicht gehen wir noch mal kurz darauf ein.

Dominik

Ein Bagger ist natürlich

Dominik

in den Flugzeug abgestürzt, nicht so gut, weil...

Johannes

Nee, es sind zwei sogar. Es sind zwei abgestürzt.

Johannes

Boing.

Dominik

So ein System eingebaut hat, dass die Nase immer korrigieren sollte.

Dominik

Und dann ist der Sensor ausgefallen.

Dominik

Sie hatten nur einen eingebaut.

Dominik

Und die Piloten wussten nichts davon.

Johannes

Bei dem zweiten Flug, der war sogar noch ein bisschen tragischer.

Johannes

Weil da wussten die Piloten davon.

Johannes

Haben es nicht abgesteckt gekriegt.

Johannes

Haben es nicht abgesteckt gekriegt.

Johannes

Und vor allem, dieses System ist gekoppelt

Johannes

an den Steuerknüppel.

Johannes

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

Johannes

Und das System hat dagegen gedrückt.

Johannes

Und irgendwann konnten die nicht mehr.

Johannes

Und das finde ich noch viel tragischer.

Johannes

Wenn du halt gegen die Maschine kämpfen musst.

Johannes

Und die Maschine in dem Moment will dich umbringen.

Johannes

Fies gesagt.

Johannes

Und dann gewinnst du auch noch.

Johannes

Das ist hart.

Dominik

Und dann klappt...

Johannes

Nachdem diese beiden Flugzeuge abgestürzt waren,

Johannes

ist ja auch die gesamte Flotte

Johannes

einfach...

Johannes

einfach stillgelegt worden.

Johannes

Für den Moment, bis da einmal eine neue Zertifikation durch war.

Johannes

Ja, die, die ja...

Johannes

Also es war eine wirklich schöne Aufstellung

Johannes

von Dach und so ein bisschen Hinweis.

Dominik

Auf der Mars-Mission ist vielleicht auch noch interessant.

Dominik

Ah ja, Mars-Mission, ja.

Dominik

Klassischer Fall.

Dominik

Klein Backup zwischen Umrechnung, zwischen metrischen...

Dominik

Wer ist nochmal das andere System?

Dominik

Genau, das eine...

Dominik

Das eine hat halt...

Johannes

Genau, das eine hat halt den Zoll gerechnet

Johannes

und das andere hat den Millimeter gerechnet.

Johannes

Empire Strikes Back.

Johannes

Genau.

Ronny

Was ich total ironisch finde wirklich,

Ronny

wenn man mal in den USA war,

Ronny

da wird ja dieses Independence Day

Ronny

und diese Unabhängigkeit von England

Ronny

wirklich ganz, ganz, ganz, ganz hoch gehalten

Ronny

und keine Gelegenheit,

Ronny

nicht jedes Schiff und jeden Soldaten

Ronny

nochmal hervorzuheben,

Ronny

wie besonders das war,

Ronny

gegen England gewonnen zu haben,

Ronny

aber da mit Händen und Füßen

Ronny

am imperialen System

Ronny

bei den Einheiten festzuhalten.

Johannes

Am Ende gewinnt der König doch.

Johannes

Ja, das war auch eine tragische Sache,

Johannes

dieser Mars Reconnaissance Orbiter war das, glaube ich,

Johannes

wo einfach die Positionierung nicht gestimmt hat.

Johannes

Das heißt, er wollte um den Mars kreisen,

Johannes

aber er hat ihn getroffen.

Johannes

Klabum.

Johannes

Andererseits,

Johannes

das habe ich auch zum Jochen schon in dem Vortrag gesagt,

Johannes

ist auch so ein gewisser Power-Move von der Erde,

Johannes

dass wir da hier Jahre und Millionen reinstecken

Johannes

und dann einfach zack.

Johannes

Verglüht 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...

Jochen

Was tatsächlich viel im Alltag irgendwie ja betrifft

Jochen

und das ist tatsächlich

Jochen

auch immer eine sehr hübsche Fehler,

Jochen

dass Leute Excel-Sheets halt für alles mögliche verwenden

Jochen

und dann da halt diese ganzen normalen

Jochen

Standard-Software-Engineering-Practices,

Jochen

die man halt so hat,

Jochen

die einen vor dem Gröbsten irgendwie bewahren,

Jochen

die gibt es da halt nicht.

Dominik

Man kann auch Excel dann das nachbauen.

Dominik

Bitte?

Dominik

Ja, hast du schon mal gesehen,

Jochen

dass jemand Excel-Sheets in quasi...

Johannes

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

Johannes

Ja, oder Unit-Tests oder irgendwie

Johannes

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 Leitung ja schon zwei Jahre nachgebaut.

Jochen

Das war eine ganz tolle Erfahrung.

Jochen

Ja.

Jochen

Ach so, du hast es mal nach...

Jochen

Oh Gott.

Jochen

Genau.

Johannes

Das kann ja dann auch...

Johannes

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

Johannes

die einfach richtig schlimme Folgen haben.

Johannes

Ja, JP Morgan hat halt eine von den Berechnungen,

Johannes

haben sie...

Johannes

Hups.

Johannes

Falsch.

Johannes

Addiert statt zu mitteln

Johannes

und dann haben sie ihre Risikobewertung

Johannes

einfach um Faktor 2 falsch gehabt

Johannes

und Milliarden an Dollar verloren.

Johannes

So.

Johannes

Tadam.

Johannes

Ja.

Johannes

Ja, gut.

Johannes

Als Softwareentwickler sagt man,

Johannes

selber schuld.

Johannes

Hättet ihr mal von uns gehört.

Johannes

Als Banker ist es so.

Johannes

Passiert mir jedes zweite Wochenende.

Johannes

Ja, sechs Milliarden unter Freunden kommen.

Johannes

Ja.

Johannes

Ja, genau.

Johannes

Also, es war wirklich eine schöne Zusammenstellung,

Johannes

war sehr unterhaltsam,

Johannes

war ein guter Anfang.

Johannes

Sie hat auch einen sehr guten Vortragsstil.

Johannes

Ja, war wirklich sehr angenehm.

Jochen

Ja, was gab es denn da noch?

Jochen

Danach...

Jochen

Oh ja, das war cool.

Jochen

Danach war so ein bisschen,

Johannes

für mich ein bisschen bisher das Highlight des Tages.

Johannes

das Highlight der Woche bisher.

Johannes

Haki Benita. 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

Dominik

rübergegangen zu dem

Dominik

anderen Workshop und

Dominik

ja, hab dann aber

Dominik

nicht wirklich zugehört, sondern gearbeitet.

Dominik

Ja gut, dann. Aber deswegen kann ich

Dominik

das Workshop kreieren. Aber den Topf von Haki Benita

Dominik

hätte ich gerne noch mehr verstanden, wie man den foreign keys

Dominik

richtig macht. Indizes setzen

Dominik

oder was hat er gesagt? Ja, aber

Johannes

also die Sache an Haki Benita

Johannes

ist, der ist ein

Johannes

DBA, ein Database Admin,

Johannes

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

Johannes

Und

Johannes

er hat einen sehr

Johannes

unterhaltsamen Vortragsstil. Sehr energetisch.

Johannes

Ja, und auch das Publikum

Johannes

mit einbezogen und Fragen und dann

Johannes

auf Leute gezeigt und so. Also das ist großartig.

Johannes

Aber er hat so ganz harmlos

Johannes

angefangen. Er hat gesagt, ja,

Johannes

was fällt euch da auf?

Johannes

Und dann kam natürlich so, ja, da muss man

Johannes

Index machen. Und er hat gesagt, ja, aber?

Johannes

Und dann hat er das gemacht

Johannes

und

Johannes

hat so ein bisschen da die Sachen erzählt. Und dann hat er gesagt, was fällt

Johannes

euch denn jetzt auf? Und dann ist er noch eine Ebene runter

Johannes

gegangen. Und dann kamen schon weniger

Johannes

Kommentare. Und dann hat er gesagt, was fällt euch denn jetzt auf?

Johannes

Also, er ist einfach

Johannes

ganz harmlos angefangen und dann so

Johannes

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 das 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 ist irgendwie

Jochen

nicht machen. Ja, also es ist wirklich,

Jochen

es ist halt problematisch. Je genau 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.

Dominik

Bevor er jetzt wieder so eintaucht,

Dominik

wir müssen erstmal kurz nochmal erkennen,

Dominik

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

Dominik

aber worum ging es denn jetzt eigentlich?

Dominik

Also es, willst du?

Ronny

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

Ronny

ging es darum, es war im Endeffekt ein Standardmodel,

Ronny

also Django-Model, jetzt mehr oder weniger

Ronny

was man halt so kennt.

Ronny

Und die,

Ronny

die,

Ronny

die, und dann ging es halt

Ronny

darum, so quasi, was kann

Ronny

man daran verbessern? Hat sich halt

Ronny

Expeditor Foreign Case bezogen. Oder was ist gefährlich auch?

Ronny

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

Ronny

Natürlich immer mit dem Hintergedanken,

Ronny

wenn man da jetzt eine Tabelle mit 50

Ronny

Einträgen hat oder auch 500.000,

Ronny

ist das wahrscheinlich alles relativ egal.

Ronny

Oder kein Hochverfügbarkeitssystem, aber halt

Ronny

was für Systeme kann, was kann

Ronny

man halt theoretisch kaputt machen, ohne es zu wissen?

Ronny

Und dann hat er sich halt quasi dann

Ronny

darüber rausgehangelt, wie sieht es aus,

Ronny

mit, wenn ich diesen Index

Ronny

setze, was ist mit automatisch gesetzten

Ronny

Indizes, kann ich die wegnehmen?

Johannes

Ja, genau, und

Johannes

wie weit kann man da gehen?

Johannes

Was kann man alles kaputt machen?

Johannes

Was kann einem alles implizit auf die Füße

Ronny

fallen? Genau, und dann auch viel über Migrations,

Ronny

Migration-Anordnungen, was man damit

Ronny

noch anders machen kann, also indem man die einfach

Ronny

auseinanderzieht, atomare Transaktion,

Ronny

also Datenbank-Atomare-Transaktion,

Ronny

Reihenfolge, und da halt immer weiter runter.

Ronny

Und das halt in einem sehr, sehr

Ronny

energetischen, interaktiven

Ronny

Weg, um auch dieses Thema, das man auch perfekt

Ronny

ultra-trocken irgendwie runterbeten

Ronny

könnte. Also das ist tatsächlich einer

Dominik

von den Talks, die ich mir auf die Liste geschrieben habe,

Dominik

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

Jochen

Also was konkrete Dinge drin waren,

Jochen

wie zum Beispiel ist sowas wie, du hast halt ein

Jochen

Foreign Key auf dein User-Modell

Jochen

als Created Ad oder sowas

Jochen

an irgendeinem Modell dran, und

Jochen

wenn du jetzt sagst, okay, das wird jetzt schon

Jochen

relativ groß,

Jochen

das wird eh nicht benutzt, und dann nimmst du

Jochen

den Index weg, und dann löscht

Jochen

irgendein automatischer Job ab und zu mal

Jochen

User, und legt dann deine Datenbank

Jochen

lahm, weil, naja, es gibt keinen Index mehr

Jochen

auf dem Ding, und

Jochen

dann macht das halt ein Table-Scan bei jedem User, der gelöscht

Jochen

werden soll, und wenn das viele sind, dann, naja,

Johannes

es ist halt... Ja, auch wenn es einmal auftritt,

Johannes

wenn du irgendwo eine Tabelle mit Millionen

Dominik

rein hast. Wenn du bei Instagram mit 500 Millionen

Dominik

Nutzer anscheinend bist. Ja, genau, die müssen

Johannes

da schon aufpassen. Das hat er am Ende

Johannes

auch gesagt, ja, viele von den Sachen sind halt jetzt

Johannes

rausgesucht als Probleme für einen

Johannes

Vortrag, sonst kannst du nichts zeigen.

Johannes

So für den

Johannes

Hausgebrauch, für die...

Johannes

Wenn du 10.000

Johannes

TPS hast, Transaktionen pro Sekunde,

Johannes

ist das sicherlich ein anderes Thema, als wenn du

Johannes

drei Transaktionen pro Sekunde hast.

Johannes

Also ich glaube,

Ronny

einer von den Learnings war, dass er quasi

Ronny

die Nutzer

Ronny

aware gemacht hat, dass Django

Ronny

sehr viele Dinge einem

Ronny

für einen mitdenkt,

Ronny

und dass es halt Cases gibt,

Ronny

wo man das nicht tun,

Ronny

also wo man Django nicht das...

Dominik

Also er hat am Anfang die Queries, glaube ich,

Dominik

mit angemacht, die bei den Queries, dass man sieht,

Jochen

was... Ja, oder dass man auf jeden Fall immer

Jochen

die Queries sich bei einer Migration zum Beispiel,

Jochen

er hatte dann irgendwie eine schöne Stopp-Slide,

Jochen

die dann

Jochen

ab und zu mal kamen, sondern erst einmal mal das

Jochen

SQL angucken, bevor man die Migration wirklich ausführt,

Jochen

weil... Den wichtigsten

Johannes

Schritt hat er da für mich eigentlich in den Fragen am Ende

Johannes

gesagt. Und hat er nämlich gesagt,

Johannes

bei Ihnen machen sie es so, dass sie

Johannes

eine GitHub-Action haben, die das

Johannes

SQL, wenn du eine Migration machst, schreibt

Johannes

die dir das SQL als Kommentar

Johannes

in deine Review. Das fand ich auch krass.

Johannes

Und das heißt, du bist gezwungen,

Johannes

dieses SQL...

Johannes

Das SQL anzugucken. Du kannst gar nicht...

Johannes

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

Johannes

Und das fand ich einen super Trick.

Johannes

Weil das so ein...

Johannes

Das ist psychologisch korrekt.

Johannes

Das ist kein, wir halten dich ab, das zu tun, sondern

Johannes

ein, hier, guck doch mal.

Johannes

Ja, absolut. Großartig.

Ronny

Und was auch noch echt cool war, der hat gesagt,

Ronny

dass sie exzessiv

Ronny

die Django-Checks verwenden, also

Johannes

die System-Check-Framework. Aber mit eigenen, geschriebenen

Ronny

Regeln. Genau. Also erstmal hängt es

Ronny

bei denen in der Pipeline. Das geht relativ einfach. Das haben wir

Ronny

jetzt auch angefangen einzubauen. Also das führt auch

Ronny

dazu, dass man da einmal wirklich auch mal guckt, was

Ronny

Django so meldet. Manche Dinge machen jetzt auch

Ronny

zum Beispiel in der Pipeline einfach keinen Sinn.

Ronny

Manche Einstellungen. Aber trotzdem, dass man die da

Ronny

einmal so konfiguriert, dass der Pipeline grün ist,

Ronny

was schon mal super ist. Und eigene Checks

Ronny

wirklich zu verwenden, weil das ist... Die laufen

Ronny

natürlich in jedem Mal, wenn der

Ronny

Development-Server startet. Das heißt, wenn man da

Ronny

sehr viele hat oder sehr langsame hat, kann man natürlich die

Ronny

Developer-Experience massiv beeinflussen.

Ronny

Negativ. Muss man ein bisschen aufpassen.

Ronny

Weil viele Dinge könnte man auch irgendwie in der Linting-Stage

Ronny

machen, vermutlich. Trotzdem hast

Ronny

du halt Zugriff auf das komplette initialisierte Django-

Ronny

Projekt. Und da kann man, glaube ich, sehr, sehr viele

Ronny

coole Dinge Richtung Code-Qualität

Ronny

machen, weil du halt den Leuten sagst, so

Ronny

hey, guck mal hier.

Ronny

Lieber Mitentwickler, folgendes ist

Ronny

gerade komisch. Das ist sehr

Ronny

mächtig und das ist auch eine Sache, wo ich mich auch

Ronny

nochmal mehr damit beschäftigen möchte.

Ronny

Weil ich glaube, dass das wirklich sehr...

Ronny

Dass man da nochmal sehr viel rausholen kann.

Ronny

Wie letztes Jahr bei 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. Dann der nächste

Dominik

Talk. Karl Gibson.

Dominik

War gar kein technischer Talk diesmal.

Dominik

Nee, hat er auch am Anfang

Johannes

so scherzhaft gesagt. Nächstes Mal

Johannes

wieder technischer Talk war viel zu anstrengend.

Johannes

Ja,

Johannes

How we make decisions in Django.

Johannes

Ja,

Johannes

mir fällt es schwer, da jetzt was

Johannes

zu sagen.

Johannes

Ja, ich habe

Johannes

in der Zeit was gegessen, Kaffee getrunken.

Jochen

Ja, ich würde auch zu. Es ist halt ein schwieriges Thema

Jochen

und ich habe absolut keine Meinung dazu.

Jochen

Ich würde auch sagen, so ja,

Jochen

ja. Ich finde es gut, dass das jemand macht.

Jochen

Ja.

Jochen

Muss man... Also im Endeffekt,

Jochen

es ging ihm ja, glaube ich,

Ronny

ging ihm ja darum,

Ronny

dass er...

Ronny

Ich werde darauf angesprochen, ich zwar auf dem

Ronny

Endeffekt sage. Ja, wir haben schon ein Fehlspiel draus gemacht.

Ronny

Das werden wir heute Abend

Ronny

beim Review der Folge nochmal spielen.

Ronny

Da ging es ihm darum, dass

Ronny

halt der Prozess, wie

Ronny

über gewisse Dinge abgestimmt wird, also

Ronny

meist im Forum soll er diskutiert werden,

Ronny

dass das sehr, sehr mühsam ist. Da kann ich doch einen schönen Bogen spannen

Ronny

zu meinem Eingangsthema.

Ronny

Ich habe vor

Ronny

einem Jahr

Ronny

sind in den Django Storages,

Ronny

ungefähr vor einem Jahr, glaube ich, sind die

Ronny

Django Storages, ist die

Ronny

Settings API leicht verändert worden.

Ronny

Da gibt es irgendwie statt mehreren Einzelvariablen

Ronny

gibt es eine Variable. Da gab es auch

Ronny

eine Warnung,

Ronny

und normalerweise kümmere ich mich da immer

Ronny

sofort drum, aber wir hatten dann einen ganz, ganz merkwürdigen

Ronny

Bug mit dem

Ronny

Thumbnail-Package, irgendwas ganz wildes,

Ronny

wo nichts mehr funktioniert hat.

Ronny

Ich habe dann einfach gesagt, ich mache das dann später.

Ronny

Und dann irgendwann war die Warnung

Ronny

halt weg. Und ich so, ah, okay.

Ronny

Ja, perfekt.

Ronny

Hat es halt auch

Ronny

nicht, ausnahmsweise halt einmal nicht

Ronny

wie das halt immer so ist. Das ist dieses Schweißer-Käse-Modell.

Ronny

Das ist halt genau einmal...

Ronny

Das kommt ja nachher auch noch.

Ronny

Das kam vorher schon.

Ronny

Genau in dem einmal, wo man sich halt nicht sofort drum kümmert,

Ronny

wo irgendwas Komisches passiert, wo man es halt dann doch irgendwie

Ronny

ein bisschen aufschiebt,

Ronny

in Kombination mit

Ronny

Django Storages, was wir für S3,

Ronny

also für Datentransfer nach S3 verwenden,

Ronny

war eine Plattform,

Ronny

an der ich gearbeitet habe.

Ronny

Und genau in dem

Ronny

Zeitfenster, wo wir dann quasi

Ronny

das Django upgedatet haben,

Ronny

wo dann quasi diese Storage war, also dass

Ronny

die Deprecation quasi aktiv wurde,

Ronny

wurden dann halt

Ronny

von den Nutzern

Ronny

100,

Ronny

hunderte von Dokumenten hochgeladen,

Ronny

was mehr Dokumente wahrscheinlich waren, als insgesamt

Ronny

bis jetzt hochgeladen wurden, weil das halt so ein neues Feature war,

Ronny

das dann live ging. Und leider

Ronny

hat Django Storages das nicht gemerkt.

Ronny

Django dachte, das Feld ist nicht mehr da und die Sachen sind alle

Ronny

in Nirvana gelandet.

Ronny

Das war ärgerlich.

Johannes

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

Johannes

Ärgerlich.

Johannes

Ja.

Ronny

War natürlich auch etwas schwierig, dann den Leuten

Ronny

zu erklären, sorry, bitte alles nochmal.

Ronny

Teilweise waren die Sachen natürlich einfach da.

Ronny

Die sind da ja da.

Ronny

Ja klar, braucht man ja.

Ronny

So, weg. Ja, war sehr blöd.

Ronny

Dann habe ich das halt im Django Forum halt mal angesprochen,

Ronny

hab gesagt, hey Leute, es ist sowas irgendwie dumm gelaufen, kann man nicht

Ronny

irgendwas tun. Und dann hat sich da so eine Diskussion

Ronny

ergeben, dass man ja vielleicht, weil

Ronny

Django ist ja super dokumentiert, so bis Version

Ronny

1.0 zurück, ob man nicht einfach

Ronny

sagen soll, hey, wir machen irgendein Systemcheck

Ronny

mal wieder, ein Systemcheck, wo wir einfach sagen, hey, guck mal,

Ronny

du verwendest hier eine Variable,

Ronny

die soll das eigentlich nicht mehr geben.

Ronny

Denk mal drüber nach, ob du die wirklich noch,

Ronny

ob da alles richtig ist bei dir.

Ronny

Man kann ja Systemchecks aktiv disablen und so,

Ronny

wenn jetzt jemand der Meinung ist, er braucht jetzt die Login,

Ronny

URL für irgendwas anderes oder ein ganz

Ronny

Party-Package, will unbedingt die Login, dann

Ronny

nimmt man es halt aus und lebt damit, dass die disabled ist.

Ronny

Gut, dann ist mehr oder weniger alles

Ronny

agreed worden, ich habe einen Pull-Request gemacht,

Ronny

hab mir

Ronny

sehr zum Ärger von manchen Leuten

Ronny

eine initiale Liste von

Ronny

GPT generieren lassen, weil ich dachte,

Ronny

damit ich erstmal was habe zum Testen, ob es

Ronny

überhaupt funktioniert, hab die dann nachher nochmal

Ronny

manuell abgeglichen, trotzdem waren direkt ein paar Leute

Ronny

böse, hab dann gesagt, hey, chill,

Ronny

wir sind noch nicht fertig.

Ronny

So, haben das dann gemacht, ich hab nochmal quasi

Ronny

alle Change-Logs gemacht, wir haben die nochmal verlinkt,

Ronny

ich hab nochmal Optimierungsideen,

Ronny

hey, wenn du ein Set verwendest statt

Ronny

eine Liste, 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 hat

Ronny

halt diese eine Person das halt dazu

Ronny

gebracht, dass es halt dann nicht passiert ist.

Ronny

Und, ähm...

Dominik

Wie der Diskussion von gestern. Wer darf denn merchen und wer sagt dann

Dominik

nein? Oder auch das, was

Johannes

Carlton gesagt hat, dass Konsens gesucht wird.

Johannes

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

Ronny

dass er hat, also selbst Carlton war ja auch in dem

Ronny

Thread da dabei. Und da hat

Ronny

er dann auch das durchklingen lassen, was

Ronny

glaube ich, teilweise hinter der Motivation

Ronny

dieses Vortrags stand, weil ihn das glaube ich

Ronny

auch manchmal einfach frustriert,

Ronny

dass es halt dann quasi, ne, alle

Ronny

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

Ronny

wie dieser schöne Spruch, ähm,

Ronny

komm ich jetzt drauf,

Ronny

safe enough, good enough for now, safe enough to

Ronny

try, so. Im allerschlimmsten Fall

Ronny

muss man halt so ein Security, baut man den Check

Ronny

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

Ronny

nach einem Major Release furchtbar ist und alle es

Ronny

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

Ronny

so, keine Ahnung. Und ich glaube,

Ronny

dass das so ein bisschen auch der, einer der

Ronny

Fairtrade-Mitglieder ist.

Ronny

Der Täter von, der Gedanken war, weil ich glaube, der erlebt

Ronny

sowas halt sehr, sehr oft. Ja. Und das hat

Ronny

eine Person, die Handbremse quasi, ne, einmal so

Ronny

quasi schönen Stock ins Getriebe,

Ronny

wo mehr oder weniger sich eine coole Dynamik entwickelt

Ronny

hat, wo man dann auch wirklich sagen kann, ey, guck mal, das ist

Ronny

ein, das hilft vor allem Newbies halt, ne?

Johannes

Und. Ja, man gibt halt vor allem dem

Johannes

Veto sehr viel Macht. Ja, man gibt dem

Johannes

jeder kann sagen nein und dann stimmt's. Und

Dominik

egal wie viele Leute vorher. Ein bisschen gespaltene

Dominik

Meinung zu. Ja, es ist auch

Johannes

schwierig, aber, aber wenn sowas

Johannes

unterwegs ist, das ist natürlich super frustrierend,

Johannes

ja, wenn da schon viel Zeit und viel Arbeit reingestellt

Johannes

hat und die Zustimmung gekriegt hat und dann sagt

Johannes

einer, ach nee, du. Also ich bin ganz auf

Dominik

der Meinung, so better ask for forgiveness than

Dominik

for permission. Ja, ist aber

Dominik

hier ja nicht so. Das ist aber genau bei so einem

Dominik

Framework aber vielleicht genau falsch

Dominik

rum ist, weil könnte ja sein, dass ein

Dominik

Flugzeug mit so einem Dango läuft

Dominik

und da muss man, ja, also. Es ist

Johannes

auch so, es ist auch so, dass man manche Sachen einfach

Johannes

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

Johannes

also es gibt da den Deprecation-Prozess, aber. Ja, aber auch, absolut.

Dominik

Das wieder rauszukriegen, einfach so mit dem Patch, ich weiß nicht. Das sammelt sich an.

Dominik

Ähm, und das ist so ein,

Dominik

deswegen verstehe ich sehr gut die Leute, die da so die

Dominik

Knüppel zwischen, wenn der es richtig machen will, man kann es halt

Dominik

auch missbrauchen und es kann halt ätzend werden. Ja, und das

Johannes

muss vor allem grün im Prozess sein. Genau,

Dominik

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

Dominik

ist halt, ach nee, übrigens doch nicht, ist halt

Dominik

ziemlich blöd. Also ich meine, im Endeffekt

Ronny

haben wir halt genau das gemacht, um auf den Tortag wieder

Ronny

zu kommen, was, äh, was Carlton

Ronny

halt auch vorgeschlagen hat, er sagt, das Ecosystem

Ronny

von Dango ist halt im Endeffekt

Ronny

einer der Haupt-USBs.

Ronny

Ich hab's schon wieder gesagt.

Ronny

Ich freu dich drauf hingewiesen.

Ronny

Ähm, und, äh,

Ronny

die, ähm, das neue,

Ronny

die Dinge erstmal in Packages leben sollen und

Ronny

wenn man wirklich das Gefühl hat, dass das

Ronny

unbedingt in Core rein muss und ansonsten

Ronny

ein gut gewartetes Package halt keinen Nachteil

Ronny

zum eigentlichen Django hat, vor allem

Ronny

gibt es diesen schönen Spruch aus Python,

Ronny

irgendwie, Features go to the main

Ronny

library to die, also sprich, sobald irgendwas

Ronny

in der Main Library ist, wird einfach nichts mehr daran

Ronny

entwickelt, weil die Zyklen einfach viel zu langsam

Ronny

sind, um, von daher gibt es jetzt

Ronny

Django Removals, ganz kurz, noch ein kurz, also

Ronny

wer 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 möchte,

Ronny

auch erst Development Dependence

Ronny

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

Ronny

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

Ronny

äh, Fun Fact, in jedem

Ronny

einzelnen alten Projekt, also alt, sag ich mal

Ronny

2018 und davor,

Ronny

hab ich mindestens eine Variable gefunden, die nicht

Ronny

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

Ronny

Auswirkung gehabt, die hat einfach nichts getan,

Ronny

aber trotzdem interessant, das mindestens einmal drüber

Ronny

laufen zu lassen und zu merken, äh, was

Ronny

man vielleicht vergessen hat. Hat mich auch schon desaufter

Dominik

gebissen, also irgendwie einfach ein altes Template genommen

Dominik

und dann mit neuem Pack angefangen, alte, äh,

Dominik

ja, bum, hup, huch,

Dominik

wenn man es dann merkt, ist gut. Jetzt hast du die Lösung.

Dominik

Ja.

Johannes

Das Problem, was ich hab mit dem,

Johannes

mit der Library-Lösung, ist Visibility.

Johannes

Ja. Weil niemand erfährt davon,

Johannes

dass es das gibt. Ja. Hast keine Chance,

Johannes

wenn du nicht Carlton Gibson heißt oder sonst was,

Johannes

äh, irgendwo Benutzer

Johannes

für deine Library anzukriegen. Ja. Wenn es irgendwie

Johannes

so ein Nischen-Use-Case ist, also ich hab so ein,

Johannes

so ein Feature, was ich gerne in Django drin hätte,

Johannes

wo ich jetzt auch schon mit mehreren Leuten drüber gesprochen hab,

Johannes

äh, wo ich mich jetzt mal... Einzig Grund, warum du hier bist.

Johannes

Richtig. Wo ich jetzt mich, weil

Johannes

so langsam rantasten werde und es ist auch

Johannes

wirklich was ganz Kleines. Welches ist denn in Django?

Johannes

Ja, das erzähl ich nachher mal. Da muss ich erst noch

Johannes

mehr politischen

Johannes

guten Wirklichkeiten, bevor ich das verraten kann.

Johannes

Aber, okay. Es wäre eine sehr

Johannes

einfache Änderung und es wäre auch was, was man einfach

Johannes

in der Bibliothek machen würde, aber wenn ich es in der Bibliothek

Johannes

machen würde, wäre es unsichtbar. Niemand

Johannes

würde das finden. Ja. Weil

Johannes

es eine Funktionalität von Django, die

Johannes

in Django Core drin ist, erweitert.

Johannes

Genauso wie bei den Unremovals, ja.

Johannes

Da ist doch ein Warnungsmechanismus

Johannes

drin. Warum muss ich jetzt nochmal was

Johannes

machen, damit ich andere Warnungen bekomme?

Johannes

Und ich glaube, dass das

Johannes

einfach... Also das ist das, was mich frustriert.

Johannes

Dass es Dinge gibt,

Johannes

die man mit wenig Aufwand machen könnte,

Johannes

die halt Django erweitern und die Antwort ist

Johannes

tu es in der Library. Ja, okay, aber

Johannes

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

Johannes

Ja, könnte ich auch machen.

Johannes

Entschuldigung.

Johannes

Darüber sprechen wir dann morgen.

Dominik

Das nächste Mal habe ich gehört, forken wir die Django-Con und machen die

Dominik

einfach bei uns in Germany. Gibt es ein großes Gerücht?

Dominik

Ja.

Dominik

Wir werden sehen.

Dominik

Wir werden sehen.

Johannes

Ich meine, wir Softwareentwickler sind

Johannes

ja, wir mögen es, technische Probleme

Johannes

zu lösen und jetzt hier geht es sehr viel

Johannes

um Menschen. Bei Karten ging es darum, bei der Django-Software-Foundation

Johannes

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

Dominik

Coaching-AI fragen.

Johannes

Aber mit AI sprechen ist ja noch

Johannes

schlimmer. Warum?

Johannes

War jemand bei dem Workshop? Nee.

Johannes

Nein. Okay, schade.

Johannes

Dann müssen wir den jetzt auslassen.

Johannes

Der Building-Unique-Voting-System.

Johannes

Achso, nur eine Minute.

Ronny

Klingt aber interessant.

Ronny

Ja, hatte ich mich auch.

Johannes

Aber der Workshop war halt sehr lang

Johannes

und der hat dann zwei andere Talks überlegt.

Johannes

Ich habe auch überlegt, wo ich gehe.

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.

Jochen

Genau, dann gab es doch den

Jochen

How to Enjoy Debugging in Production.

Jochen

Oh ja, stimmt.

Dominik

Von Karen Tracy.

Dominik

Ja, genau.

Johannes

Der war am Anfang sehr unterhaltsam,

Johannes

weil sie eine Kiste gekriegt hat,

Johannes

weil sie ein bisschen kleiner ist und nicht

Johannes

über dieses Pult gekommen ist.

Johannes

Das Audio-Setup ist dieses Mal ein bisschen

Johannes

schwierig, habe ich das Gefühl.

Johannes

Da ist nur ein Mikrofon da vorne.

Dominik

Ja, das Mastering war...

Dominik

Sie haben es dann ja quasi so weit aufgedreht,

Jochen

bis es halt kurz vorm Rückkoppeln war.

Jochen

Das war immer noch viel zu leise.

Johannes

Das war in einer anderen Konstanz.

Johannes

Aber das war eigentlich interessant,

Johannes

was sie erzählt hat.

Johannes

Es war super interessant.

Johannes

Was hat sie eigentlich gesagt?

Johannes

Es war aber auch wieder sowas,

Johannes

so ein...

Johannes

Ja, mache ich so.

Johannes

Ja, mache ich so.

Johannes

Kenne ich.

Johannes

Genau.

Johannes

Sie sagt halt quasi,

Johannes

dass man für Produktionssysteme

Johannes

ein Logging und ein Monitoring extra braucht,

Johannes

was auch LRs kann.

Johannes

Und dass man es halt dazu bauen muss.

Ronny

Und dass man halt...

Ronny

Also im Endeffekt,

Ronny

ich habe bei dem Talk ein bisschen was anderes erwartet.

Ronny

Das hat, glaube ich,

Ronny

auch irgendwer aus dem Publikum nachher gefragt.

Ronny

Weil ich dachte eigentlich eher,

Ronny

es ging jetzt darum,

Ronny

wie man halt wirklich tatsächlich

Ronny

in Produktion irgendwas debuggt.

Ronny

Und ich glaube,

Ronny

ein Großteil ging halt davon,

Ronny

wie man eigentlich vermeidet,

Ronny

dass es so weit kommt.

Ronny

Was ja auch genau,

Ronny

der richtige Weg ist.

Ronny

Ja, gut.

Ronny

Aber ich glaube,

Ronny

sie meinte,

Ronny

also Debugging hat sie tatsächlich

Ronny

hinter Logging und Monitoring verstanden.

Dominik

Also, dass tatsächlich automatisiert

Dominik

nach Fehlermeldungen gesucht wird.

Dominik

Weil ich glaube,

Dominik

die Menge, die sie hatte,

Dominik

war ziemlich viel.

Dominik

Also sowas wie, keine Ahnung,

Dominik

Tausende von Messages,

Dominik

die immer so aufpoppen,

Dominik

dass man die halt ordentlich filtern

Dominik

und nach Prioritäten sortieren kann

Dominik

und sowas.

Dominik

Und dann halt die richtigen weiterleitet.

Dominik

Also, dass dann bei jemandem

Dominik

so ein Licht angeht,

Dominik

dass er dann wirklich direkt drauf gucken kann.

Dominik

Und so.

Dominik

Und dafür muss man das natürlich

Dominik

alles ordentlich eingestellt haben.

Dominik

Ja, klar.

Dominik

Und sein eigenes Haus das betreiben.

Johannes

Fand ich eigentlich ziemlich gut.

Johannes

Weil sie hat halt gesagt,

Johannes

kannst du nicht.

Johannes

Du musst darauf vorbereitet sein,

Johannes

Fehler in Produktion zu haben.

Johannes

Und egal, was du machst,

Johannes

wenn du mehr Testing machst,

Johannes

hast du weniger.

Johannes

Aber du hast sie trotzdem.

Ronny

Was ich auch sehr interessant fand,

Ronny

also wie gesagt,

Ronny

ich glaube,

Ronny

vieles von dem,

Ronny

was sie gesagt ist,

Ronny

so ja, okay,

Ronny

man sollte Sentry haben.

Ronny

So, das ist eine gute Sache.

Ronny

Muss ich kurz was einwerfen.

Johannes

Ich habe jetzt kürzlich gelernt,

Johannes

es gibt Glitchtip.

Johannes

Glitchtip?

Johannes

Das benutzt,

Johannes

das hat die gleiche AP wie Sentry.

Johannes

Das heißt,

Johannes

man benutzt Sentry Client,

Johannes

aber es ist einfacher zu hosten,

Johannes

weil es einfach ist.

Johannes

Einfach so wie Sentry vor fünf Jahren ist.

Johannes

Okay.

Johannes

Für die kleinen Benutzer

Johannes

ist das einfacher als Sentry.

Johannes

Und wenn man dann groß wird,

Johannes

kann man auch auf Sentry umsteigen.

Johannes

Ja, cool.

Johannes

Entschuldigung, jetzt.

Ronny

Nein, also was ich ganz interessant fand,

Ronny

ist so diese Side Notes aus der Praxis,

Ronny

zum Beispiel so diese,

Ronny

jeder kennt das ja wahrscheinlich,

Ronny

wenn man als Entwickler fragt,

Ronny

was ist, wenn nichts passiert?

Ronny

Das kann nicht passieren.

Ronny

Was ist, wenn hier quasi,

Ronny

zum Beispiel man spricht DAPI an

Ronny

und zieht sich irgendwelche Daten,

Ronny

dann irgendwelche Nutzer

Ronny

haben dann eine Firma.

Ronny

Ja, okay, aber das ist eine Liste.

Ronny

Was ist, wenn jetzt zwei kommen?

Ronny

Ja, das passiert nicht.

Ronny

Ja, was, wenn doch?

Ronny

Nein, das passiert nicht.

Ronny

Und genau diese Cases sind halt meistens die,

Ronny

die einem dann nachher das Genick brechen,

Ronny

weil dann doch irgendwo

Ronny

die zweite Firma kommt.

Ronny

Und da schon quasi über diese Strategien nachzudenken,

Ronny

bevor sie passieren.

Ronny

Und nicht zu sagen,

Ronny

also ich meine,

Ronny

es gibt natürlich Cases,

Ronny

wo es sich immer lohnt,

Ronny

die Handbremse zu ziehen,

Ronny

aber selbst wenn,

Ronny

das bewusst zu tun

Ronny

und nicht in irgendeinem random,

Ronny

tiefen Python-Fehler dann zu explodieren.

Ronny

Oder einfach zu sagen,

Ronny

also zum Beispiel,

Ronny

es gibt ja auch so einfach,

Ronny

so dumme Strategien,

Ronny

dass man zum Beispiel sagt,

Ronny

oh, ich nehme zum Beispiel einfach

Ronny

die erste Firma

Ronny

und mache einfach weiter.

Ronny

So, ja.

Ronny

Je nachdem,

Ronny

das muss man halt dann mit dem Kunden

Ronny

oder wer auch immer das dann

Ronny

für die man es baut.

Ronny

Ja, man muss rausfinden,

Ronny

ob es richtig ist.

Ronny

Genau.

Ronny

Genau, oder dass man es irgendwo vermerkt

Ronny

oder sowas, ja.

Ronny

Aber ich glaube,

Ronny

da kann man sich echt

Ronny

sehr, sehr viel Ärger sparen

Ronny

und vor allem auch den Stress,

Ronny

weil ich meine,

Ronny

im Endeffekt der einzige Unterschied

Ronny

zwischen Produktions-Debugging

Ronny

und lokalem Debugging,

Ronny

es macht ja jetzt nicht mehr

Ronny

oder weniger Spaß an sich,

Ronny

sondern du weißt halt,

Ronny

dass du gerade aktiv

Ronny

hat jemand das,

Ronny

das Problem

Ronny

und im Zweifelsfall machst du gerade

Ronny

Daten kaputt,

Ronny

die du aufräumen musst.

Ronny

So, das sind ja die Sachen,

Ronny

die es ätzend machen.

Ronny

Ja, und du hast auch nicht

Ronny

so viel Sichtbarkeit rein.

Ronny

Wenn du es lokal hast,

Ronny

kannst du ja fünfmal hintereinander

Ronny

den Fehler machen.

Ronny

Gut, ich meine,

Ronny

oft kann man es ja auch reproduzieren,

Ronny

zum Glück,

Ronny

wenn irgendwie eine Möglichkeit ist.

Ronny

Ja, gut, dann hast du natürlich.

Ronny

Also, wir haben in mehreren

Ronny

großen Systemen das so eingebaut,

Ronny

dass wir so einen Job haben,

Ronny

der anonymisierte Dumps postet.

Ronny

Da gibt es ja auch

Ronny

ein cooles Package,

Ronny

auch aus Stuttgart.

Ronny

Django Scrubber heißt das.

Ronny

Da kann man über so eine Metaklasse,

Ronny

das heißt, du hast dann quasi

Ronny

produktionsnahe Daten

Ronny

gegen zu Random-Daten,

Ronny

mit denen es keinen Spaß macht

Ronny

zu arbeiten

Ronny

und die auch meistens irgendwie

Ronny

nicht ins UI passen und so.

Ronny

Also, Django Scrubber

Ronny

könnt ihr euch mal anschauen,

Ronny

auf jeden Fall.

Ronny

Das ist auch so,

Ronny

was du für sie meintest, ne?

Ronny

Also, so Staging erzeugen,

Ronny

das von der Daten-Volume

Ronny

genauso groß ist wie...

Ronny

Genau, sie hat das nicht gesagt,

Ronny

aber im Endeffekt,

Ronny

das ist, glaube ich,

Ronny

das, was sie gemeint hat.

Ronny

Und wir haben halt dann immer

Ronny

so einen S3,

Ronny

also in den größeren Projekten

Ronny

einen S3-Bucket,

Ronny

wo dann halt diese quasi, ne,

Ronny

so dieses typische logarithmische

Ronny

von der letzten Stunde,

Ronny

von der letzten Nacht,

Ronny

vom letzten Tag,

Ronny

von der letzten Woche,

Ronny

vom letzten Monat,

Ronny

die Dumps dann liegen,

Ronny

die auch immer aufgeräumt werden.

Ronny

Die kann man sich dann halt

Ronny

runterziehen und dann sagen,

Ronny

okay, da ist jetzt irgendein Bug

Ronny

mit User 27.

Ronny

Man kann ja Sentry

Ronny

auch so einstellen,

Ronny

dass die IDs geschickt werden

Ronny

nach Sentry,

Ronny

aber alle personenbezogenen Daten,

Ronny

also per Default nämlich,

Ronny

sind alle User-Daten raus,

Ronny

also man kriegt gar nichts mit,

Ronny

was natürlich schwierig ist,

Ronny

wenn man nicht weiß,

Ronny

was ist der Kontext.

Ronny

Welcher User war das?

Ronny

So, aber das kann man

Ronny

relativ einfach

Ronny

ein Miniscript schreiben,

Ronny

du hast,

Ronny

im Endeffekt alles,

Ronny

was man nicht in Sentry

Ronny

haben möchte, rauswirft,

Ronny

das heißt vom GDPR

Ronny

ist man super safe

Ronny

und dann hast du halt

Ronny

die User-ID in Sentry,

Ronny

kannst damit das dann nachstellen,

Ronny

hast vielleicht noch die Produkt-ID,

Ronny

wo jemand geklickt hat,

Ronny

keine Ahnung

Ronny

und damit kann man

Ronny

viele Probleme,

Ronny

klar, wenn du irgendwas

Ronny

ganz fieses mit Concurrency

Ronny

oder verteilte Systeme

Ronny

oder sowas,

Ronny

das ist nochmal

Ronny

ein anderes Problem,

Ronny

aber ja.

Johannes

Ja, in solchen Systemen

Johannes

macht man halt einfach

Johannes

keine Fehler.

Johannes

Stimmt.

Ronny

Darum ist das auch einfach

Ronny

absolut gesehen besser,

Ronny

in jedem Fall.

Johannes

Es gibt ein Zitat

Johannes

von Deutschland,

Johannes

Donald Knuth,

Johannes

der geschrieben hat,

Johannes

beware the above code,

Johannes

I've only proved it,

Johannes

not tried it.

Johannes

Passt auf,

Johannes

was er mit diesem Code macht,

Johannes

ich habe nur bewiesen,

Johannes

dass er richtig ist,

Johannes

aber ich habe ihn

Johannes

nicht ausprobiert.

Johannes

Ganz der Mathematiker.

Johannes

Ja, da gibt es auch

Johannes

so einen Anspruch,

Johannes

ich weiß jetzt gar nicht mehr

Johannes

von wem,

Johannes

sagt dann so,

Johannes

Definition von

Jochen

funktionierender Software,

Jochen

also funktionierende Software

Jochen

kann man nur so nennen,

Jochen

wenn sie zumindest

Jochen

in Produktion gewesen ist

Jochen

und da gescheitert

Jochen

und man sie dann

Jochen

schon mal ein paar Mal

Jochen

verbessert hat

Jochen

und dann so vorher

Jochen

kann man nicht sagen,

Jochen

dass sie funktioniert,

Jochen

weil wahrscheinlich

Jochen

nicht.

Jochen

Genau.

Jochen

Muss man erst

Jochen

nochmal da durch.

Jochen

Dann gab es

Jochen

noch einen Vortrag

Jochen

und zwar

Jochen

100 Million

Jochen

Parking Transactions

Jochen

per Year

Jochen

with Django.

Jochen

Ja, die meinen halt

Jochen

mit Transaktionen

Jochen

was anderes als andere Leute,

Jochen

daher war das so ein bisschen

Jochen

verwirrend für mich,

Jochen

aber sie meinen damit

Jochen

tatsächlich,

Jochen

wie viele Leute

Jochen

sich so ein Parkzettel

Jochen

umsetzen.

Jochen

Ja, genau.

Jochen

Hat er auch gesagt,

Jochen

gibt es verschiedene Sorten,

Jochen

je nachdem wo du parkst.

Jochen

Das ist das Backup

Jochen

von den Parkplätzen

Jochen

in den Niederlanden, oder?

Jochen

Und jetzt auch in Deutschland

Jochen

hat er auch gesagt.

Jochen

Ja, genau.

Jochen

War langsam reinwachsen.

Jochen

War aber nicht auf der Karte drauf,

Jochen

hätte mich jetzt interessiert.

Jochen

Ja, ich habe auch so eine App,

Jochen

ich weiß nicht,

Dominik

Pay by Phone oder was das heißt,

Dominik

vielleicht benutzt ihr was ähnliches

Dominik

oder sogar den gleichen

Dominik

Telefon.

Jochen

Ja, also da waren schon

Jochen

viele schöne Sachen drin

Jochen

und das ist halt

Jochen

schön zu sehen,

Jochen

dass man halt irgendwie,

Jochen

das sind ja nur irgendwie

Jochen

vier Leute oder so

Jochen

und die machen das halt

Jochen

quasi für alle Parkplätze

Jochen

und das machen sie mit Django

Jochen

und das funktioniert super.

Jochen

Es war also ein ETL-System

Jochen

haben die gebaut.

Jochen

Genau, die haben so ein ETL-System

Jochen

mit Django Admin gebaut, ne?

Jochen

Das fand ich so ein bisschen

Dominik

was ich dann gedacht hätte.

Dominik

Also, ne, du musst Daten,

Dominik

musst du erst irgendwo herbekommen

Dominik

und dann musst du dich transformieren

Dominik

und wieder zurückladen.

Johannes

Also Extract, Transform und Load.

Johannes

Genau.

Johannes

Weiß ja nicht jeder.

Ronny

Aber es ist trotzdem interessant,

Ronny

dass es mit dem Django-Framework,

Ronny

dass es auf der Skala funktioniert,

Ronny

dass die es mit vier Leuten

Ronny

maintained bekommen

Ronny

und sich auch noch gut dabei fühlen,

Ronny

sagt er.

Ronny

Das würde ich unterschreiben,

Ronny

ich hätte das auch das Gefühl,

Ronny

dass es gut geht.

Ronny

Ich glaube,

Ronny

es gibt viele Sachen,

Ronny

Setups, wo du das nicht

Ronny

mit vier Mann hinbekommst.

Ronny

Absolut.

Johannes

Das ist so ein bisschen

Johannes

der Take-away, oder?

Johannes

Wie weit du es treiben kannst.

Dominik

Es müssen auch vier gute Leute

Dominik

sein dann tatsächlich,

Dominik

die das gut organisieren können,

Dominik

weil es reicht ja, ja.

Dominik

Oder drei gute Leute

Dominik

und einer macht das,

Dominik

worauf die anderen keinen Bock haben.

Johannes

Das kam auch bei diesen anderen Talks,

Johannes

bei dem von Hake Benita.

Johannes

Ich.

Johannes

Gestern bei dem,

Johannes

wie man von Integer

Johannes

zu Big Integer wechselt,

Johannes

wenn du mehr als

Johannes

eine Milliarde Zeilen hast.

Johannes

Da kam das durchaus

Johannes

für mich so ein bisschen raus,

Johannes

wie weit man mit diesen Tools

Johannes

gehen kann.

Johannes

Wie viel Schmerz

Johannes

die doch die meiste Zeit

Johannes

von einem fernhalten.

Johannes

Man könnte ja jetzt,

Johannes

also wir haben ja vorhin

Johannes

über diesen Talk

Johannes

von Hake Benita gesprochen,

Johannes

da könnte man jetzt rausziehen,

Johannes

dass das Migrationssystem blöd ist

Johannes

und dass man gleich von Anfang an

Johannes

SQL machen sollte

Johannes

und lieber eigene Indizes

Johannes

und so weiter.

Johannes

Aber für mich das Fazit

Johannes

ist ein anderes.

Johannes

Für mich das Fazit ist,

Johannes

du kannst das eigentlich

Johannes

so machen, wie du willst

Johannes

und sobald du dann

Johannes

an die Grenze stößt,

Johannes

gibt es trotzdem Mittel,

Johannes

um über diese Grenze zu kommen.

Johannes

Um die Grenze noch hinauszukommen.

Johannes

Und auch unkompliziert.

Johannes

Ja.

Johannes

Weil das war ja kein Hexenwerk,

Johannes

was er gemacht hat.

Johannes

Ja.

Johannes

Und er hat auch gesagt,

Johannes

wenn es eine Möglichkeit gibt,

Johannes

das mit den Django-Mitteln zu machen,

Johannes

dann macht er das,

Johannes

weil es einfach komfortabler ist

Johannes

und zukunftssicherer

Johannes

und Datenbanktransferierbar

Johannes

und so weiter.

Johannes

Ja.

Johannes

Und das ist so ein bisschen

Johannes

eine schöne Bestätigung,

Johannes

dass man eigentlich

Johannes

sich erstmal keine Sorgen

Johannes

darüber machen muss

Johannes

über den Erfolg.

Johannes

Ganz viele Leute

Johannes

machen sich dann Sorgen,

Johannes

was ist,

Johannes

wenn ich mal eine Million

Johannes

User habe?

Johannes

Okay.

Johannes

Zu viele Sorgen

Johannes

über den Erfolg gemacht.

Johannes

Und für mich ist das

Johannes

so ein bisschen die Botschaft,

Johannes

da man kann das machen

Johannes

und das funktioniert

Johannes

und das ist gar nicht schlimm.

Johannes

Wenn ich jetzt noch drei Nutzer habe,

Johannes

vielleicht funktioniert das ja dann

Johannes

auch trotzdem.

Johannes

Ja, das,

Johannes

vielleicht.

Johannes

Beim ersten geht es noch,

Johannes

beim zweiten,

Johannes

ja.

Johannes

Als Mathematiker,

Johannes

der größte Sprung

Johannes

ist eigentlich von eins zu zwei.

Johannes

Alle anderen sind dann,

Johannes

das ist egal.

Johannes

Ja,

Dominik

man kann ja auch

Dominik

nur noch mit Agenten reden.

Dominik

Ja.

Dominik

Ist das dann schon viele?

Dominik

Ist der Agent,

Dominik

ist dann,

Dominik

das ist ein anderes Thema.

Dominik

Anderes Thema.

Dominik

Genau, das war's.

Johannes

Jetzt ist gerade Mittagspause.

Johannes

Ja.

Dominik

Es war Mittagspause,

Dominik

wir haben schon was verpasst.

Dominik

Ja, es läuft schon wieder was.

Johannes

Aber was tut man nicht

Johannes

für seine Hörer?

Dominik

Ja, dann schaltet uns wieder ein.

Dominik

Vielleicht morgen wieder,

Dominik

wir wissen es noch nicht ganz genau.

Dominik

Ja, mal schauen.

Dominik

Wenn wir Zeit finden.

Dominik

Ja, morgen ist auch noch

Dominik

die Party abends

Dominik

und wir können ja nicht eigentlich

Dominik

oder vielleicht auch am Samstag

Dominik

noch eine.

Dominik

Ja, schauen wir mal.

Dominik

Ja, also wie auch immer,

Dominik

wenn ihr uns wieder hört,

Dominik

bleibt uns gewogen,

Dominik

schaltet wieder rein.

Dominik

Hallo at peisenpodcast.de

Dominik

für alles Feedback.

Dominik

Vielen Dank, Manni.

Dominik

Das sind wir effektiv am Ende.

Dominik

Ja, vielen Dank.

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.