Transcript: DjangoCon Europe 2024

· 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 57.

Dominik

Heute reden wir über die DjangoCon. Hallo, Jochen.

Jochen

Hallo, Dominik. Und hallo.

Jochen

Und hallo, Ronny.

Jochen

Ronny.

Jochen

Hi. Schön, dass du wieder da bist.

Jochen

Ja, wunderbar.

Jochen

Freue mich auch.

Dominik

Dann fangen wir vielleicht mit ein bisschen News an und dann schlagen wir direkt ein, was denn da so kommt.

Dominik

Jo, ich mache hier meine Kapitelmarke für News.

Jochen

Okay, Kapitelmarke hat nicht funktioniert. Ah, toll. Nichts funktioniert hier?

Dominik

Das ist ja nichts Neues.

Dominik

Ja.

Dominik

Also, es sind keine News.

Dominik

Wann war die News angekommen? Fangen wir erst mal damit an.

Dominik

Ah ja, ja.

Ronny

Die war Anfang Juni in Vigo in Spanien, Nordspanien, Galicien. Eine sehr schöne Stadt. Ohne jetzt tatsächlich große Highlights, aber mir hat es trotzdem gut gefallen.

Ronny

Es ist ein sehr schöner Nationalpark, ein Inselnationalpark direkt vor der Küste. Wäre mal die Gelegenheit, da hinzufahren.

Ronny

Das sollte man nicht verpassen.

Ronny

Zeit, wandern zu gehen.

Jochen

Ist das so quasi da irgendwo diese Santiago de Compostela?

Ronny

Ja, genau. Das ist so ein bisschen südwestlich davon. Also genau nördlich von Portugal.

Ronny

Ah ja.

Ronny

Und genau, ich hatte einen Tag Zeit, wandern zu gehen. Auf der Isla Cies, glaube ich. Und das ist wirklich sehr zu empfehlen.

Ronny

Klingt sehr gut.

Ronny

Ja.

Dominik

Ja, nächste Woche ist Europython. Vielleicht das News.

Dominik

Ich weiß nicht, ob man das noch hört. Wenn ihr darüber hört, vielleicht ist es dann schon vorbei.

Dominik

Ja, wahrscheinlich.

Dominik

Ja.

Dominik

Wir möchten gerne ein paar Themen von der DangoCon hören. Und es gibt aber noch ein, zwei andere News.

Dominik

Ja, genau.

Jochen

Wir haben jetzt schon einige Zeit keine Sendung mehr.

Dominik

Ja, der Termin ist direkt. Dann ist das immer dasselbe Problem im Moment. Aber gut.

Jochen

Also, ein News ist ganz interessant. Google ist ja so ein bisschen unter Druck in letzter Zeit.

Jochen

Man sieht sie halt öffentlich schwitzen. Dieses ganze AI-Thema, das ist irgendwie, ja.

Jochen

Können sie nicht so richtig entscheiden? Steigen sie jetzt voll ein oder doch nicht? Was machen sie? Oh nein.

Jochen

Ja, und jetzt haben sie sich für etwas anderes entschieden, nämlich ihr Patentime-Team zu feuern.

Dominik

Die haben dabei, glaube ich, direkt wieder ein neues eingestellt.

Dominik

Ich glaube, in Deutschland sogar.

Jochen

Ja, sie wollen jetzt, sie sind jetzt, was, alles zu teuer mit dem, mit den teuren...

Dominik

Die Amerikaner wollten alle 300.000 Dollar haben pro Jahr. Haben sich irgendwann gedacht, das können wir in Deutschland auch für die Hälfte haben.

Jochen

Genau, dann gehen wir halt in so ein Billiglohnland und dann in so eine, so eine, irgendwie, keine Ahnung, Billigvorstadt.

Jochen

Und zwar gehen sie nach München und wollen da ein neues Team aufbauen.

Jochen

Da sind sie ja auch schon, da sind sie ja auch schon ein bisschen weiter gewachsen.

Jochen

Aber ich bin mal gespannt, ob das klappt. Ob sie da jetzt irgendwie, keine Ahnung, äquivalent rekrutieren können. Mal sehen.

Jochen

Aber ja.

Dominik

Die haben bestimmt erkannt, wo die guten Peißenleute sitzen.

Dominik

Und wenn man in München guckt, die sind ja eh immer ganz oben, wenn man sie fragt.

Dominik

Entschuldigung, ich wollte jetzt keinen Lokalpatriotismus hier auffangen.

Dominik

Ja.

Jochen

Genau, also das ist, das ist schon mal irgendwie, war irgendwie, aber normalerweise ist das ja nie passiert.

Jochen

Das ist ja immer so, irgendwie mehr Peitenleute einstellen und so, voll gut.

Jochen

Und jetzt, und welche, hat man das irgendwie so abgerückt, rückgebaut? Das ist neu.

Dominik

Vielleicht ist aber jetzt einfach nur so eine normale Glättung, die irgendwann mal ist, oder?

Dominik

Ja, kann auch sein, ja.

Jochen

Also vielleicht ist auch, muss man da nicht so viel reininterpretieren.

Jochen

Das ist schon richtig.

Jochen

Es gibt tatsächlich von Peiten 3.13 jetzt so erste Beta-Versionen.

Jochen

Ja.

Jochen

Das heißt, wenn man mal ausprobieren will, ob das eigene Zeugs, was man so baut, irgendwie damit tut,

Jochen

dann kann man das jetzt mal machen und, tut eigentlich, ne?

Jochen

Ja, es gibt, glaube ich, jetzt auch, wo war das, irgendwas kann jetzt auch, man kann jetzt auch Wheels bauen für 3.13.

Jochen

Ich habe heute echt keine Zeit gehabt, mich die News nochmal anzugucken.

Jochen

Insofern tut mir leid, wird etwas durcheinander, aber, ja.

Jochen

Da müssen wir auch mal durch.

Jochen

3.13 kann man auf jeden Fall jetzt mal so, jetzt ist der richtige Zeitpunkt, um das mal auszuprobieren.

Jochen

Was habe ich denn noch?

Jochen

Oh, ich habe gesehen, es gibt, ich weiß aber nicht, ob das News ist, aber es gibt ein Software-Development-Kit für One Password.

Jochen

Also ich bin immer noch nicht, ich bin immer noch bei One Password.

Jochen

Mir tut das zwar etwas weh, dass das alles super teuer ist und so, aber ich finde es immer noch so der beste Password-Manager.

Jochen

Und der hat jetzt auch einen Python-API im Software-Development-Kit gekriegt.

Jochen

Das heißt, man kann von Python aus irgendwie One Password anfragen.

Jochen

Also sozusagen, man kann halt Python-Sachen schreiben und dann fragt das Ding halt One Password.

Jochen

Und dann sagt das Ding halt, ja, guck hier mal in die Kamera oder hier, leg mal da deinen Finger drauf.

Jochen

Und dann kann man sich authentifizieren, was ja für manche Sachen ganz nett ist.

Dominik

Wie teuer ist denn das? Weißt du das?

Dominik

Wenn wir Werbung machen, eigentlich hätten wir nicht beides Episoden-Sponsorien.

Jochen

Also One Password kostet, das ist wirklich, die haben ja auch wahnsinnig viel Fremdkapital aufgenommen.

Jochen

Und das kostet pro User irgendwie sowas 35 Dollar oder Euro im Jahr ungefähr.

Jochen

Und das ist halt schon...

Dominik

Und gab es Debatten, wie lange ist der letzte Breach her?

Jochen

Ja, es gab einen auch über Okta, der war aber nicht so furchtbar schlimm.

Jochen

Also ist auch so ein halbes Jahr her, glaube ich, oder so.

Jochen

Ja, ich wollte gerade sagen, ich habe irgendwas im Kopf hier.

Jochen

Genau, was haben wir noch?

Jochen

Ach so, ja, es gibt auch gute Nachrichten.

Jochen

Also das ist ja auch so ein Ding, da kriege ich immer Angst, wenn ich mir angucke, wie das so funktioniert.

Jochen

PyPI macht wahnsinnig viel Traffic.

Jochen

Also was darüber geht, ist halt atemberaubend und es kostet auch wahnsinnig viel Geld.

Jochen

Und das funktioniert halt darüber, dass es einen CDN, so Content Delivery Network Anbieter gibt, der sponsert das halt, der hostet PyPI.

Jochen

Und ich weiß nicht, was man zahlen müsste, wenn man das nicht irgendwie kostenlos kriegen würde.

Jochen

Es wäre sehr viel und das wäre ein Riesenproblem, weil, ja, per Pippe installieren würde dann halt nicht mehr funktionieren.

Jochen

Und die haben jetzt gerade auf der Python, PyCon US verkündet, dass sie...

Jochen

... für fünf weitere Jahre PyPI sponsern wollen.

Jochen

Cool, cool.

Jochen

Das ist natürlich praktisch.

Dominik

Also es gibt Py ist noch mindestens fünf Jahre.

Dominik

Ja, genau.

Jochen

Dann tatsächlich jetzt im Juni vor gar nicht, ja, vor zwei, drei Wochen ist NumPy 2.0 erschienen.

Jochen

Nach irgendwie, ich weiß nicht, 14 Jahren Entwicklungszeit oder so.

Jochen

Das war eine ganze Zeit lang in Progress.

Jochen

Und, ähm...

Jochen

Genau.

Jochen

Ist vielleicht jetzt nicht der günstigste Moment, um zu steigen, sondern man sollte vielleicht das jetzt mal auf kleiner zwei pinnen oder so.

Jochen

Und dann mal gucken, bis alle anderen irgendwie sich angepasst haben, weil das bricht halt einige, äh, einige Geschichten.

Jochen

Aber, ja, schön, dass es jetzt raus ist und dann, äh, es macht einige, ich, äh, wie gesagt, ich hab keine, keine Ahnung, was alles genau passiert ist.

Jochen

Oder ich wusste es mal, hab's wieder vergessen.

Jochen

Ähm, ja, Performance ist irgendwie besser geworden.

Dominik

Es sind auch ein paar Upchains drin, das heißt, wir müssen ein bisschen aufpassen.

Dominik

Ja, genau.

Dominik

Weil, wenn ihr da irgendwie einfach updatet, dann kann es sein, dass euch irgendwie relativ viele Dinge kaputt gehen.

Dominik

Also, ich hab so ein paar Updates gehabt, da war es so ein bisschen hässlich, weil ich tatsächlich downgraden musste, weil da irgendwie Pakete irgendwo ganz tief drin waren, die dann leider nicht mehr wollten und die man halt umbauen hätte müssen oder sowas, wo man dann erstmal verstehen muss, was alles ist.

Dominik

Das dauert alles relativ viel Zeit.

Dominik

Nicht so schön, aber waren ein paar Upper Boundaries dann in den Projekten auf einmal drin.

Dominik

Ja.

Dominik

Aber gut, also, das ist eigentlich super.

Dominik

Das ist auch eh ein Semantic-Version-Ding.

Dominik

2.0, Breaking Up, Changes.

Dominik

Ja, ja, genau.

Jochen

Genau, dann gibt's eine neue, also eine erste 1.0-Release von Polars, was ja auch vielleicht ganz, ganz nett ist, dass man sich jetzt halt so darauf verlassen kann, dass die API da mal eine Zeit lang stabil bleibt und so.

Jochen

Und da ist auch sonst nichts Großartiges dazugekommen.

Dominik

Nutzt du das irgendwo viel oder ein bisschen?

Dominik

Nee, viel nutze ich das nicht.

Jochen

Ich nutze das ab und zu mal, aber...

Jochen

Ja, Pandas, weil ich mich halt da so an Pandas gewöhnt habe.

Dominik

Ja, aber nur, weil du dich dran gewöhnt hast.

Dominik

Ja.

Dominik

Aber bei Pandas haben die auch ein bisschen schneller gemacht.

Dominik

Ich weiß gar nicht, gibt's irgendwie wirklich jemand, der das mal getestet hat, was so für was besser geht?

Jochen

Ja, also Polars ist tatsächlich, wenn man einfache Sachen macht, ist es halt ein gutes Stückchen schneller.

Jochen

Es gibt halt Dinge, die gehen mit Polars gar nicht so und die gehen mit Pandas und dann...

Jochen

Und ich meine, ich hab mich an diese, also viele Sachen sind halt auch total komisch und ich hab mich halt dran gewöhnt, zum Beispiel an diese Multi-Index-Geschichten und so.

Jochen

Wahrscheinlich ist es keine gute Idee und das ist richtig...

Jochen

Ja, das ist richtig, dass Polars das alles nicht gemacht hat und auch selbst die Leute, die Pandas gebaut haben, also das weiß man, McKinney sagt heute im Podcast so, ja, das mit diesen ganzen komplizierten Index-Geschichten und so, das war wahrscheinlich alles nicht so richtig.

Jochen

Aber, ja, wenn man sich mal dran gewöhnt hat, dann ist das halt klar, wie man das damit macht und alles andere muss man halt dann denken.

Jochen

Ja, deswegen benutze ich halt eigentlich immer noch lieber Pandas, aber, ja, ich glaube, Polars ist schon der richtige Weg eigentlich.

Jochen

Ja.

Jochen

Genau.

Jochen

Genau, was gibt's noch? Psycho-PG, 3-2 ist raus, also auch etwas, ich weiß nicht, ob alle schon umgestiegen sind auf 3, also ich hab das wahrscheinlich...

Dominik

Ja, also es gab ja Psycho-PG 2 explizit und wenn man jetzt aber normal Psycho-PG nimmt, dann ist das jetzt normal 3.

Jochen

Ja, genau, klar. Ja. Und, ja, super, da ist halt auch so Essing-Support jetzt mit drin und diverse Geschichten. Also...

Dominik

Auf Postgres 15, was ist das Minimum für Psycho-PG?

Dominik

Oh, das...

Dominik

Warte mal, lass mal grad gucken.

Dominik

Bestimmt auch bei Tifa.

Jochen

Na, wahrscheinlich, wahrscheinlich, ich würde jetzt tippen Postgres 12 oder so.

Jochen

Minimum steht da nicht.

Jochen

Nee, steht, steht, ich weiß es, ich weiß es.

Dominik

Keine Low-Hanging Fruit, okay, auch nicht so wichtig. Die meisten Leute, sind die bei alten Datenbanken oder bei neuen, was meint ihr?

Jochen

Ich denke alte Datenbanken, weil die meisten halt nicht die Kontrolle haben über die Distributionen, auf denen ihr Zeugs läuft und dann haben sie halt irgendwie entweder alte Datenbanken, weil Datenbanken auch oft nicht...

Jochen

Kontrollerisiert sind, ne?

Jochen

Mhm.

Jochen

Und, oder sie haben es kontrollerisiert und haben dann vergessen, dass irgendwie, also, aber ich sehe in der Praxis, sehe ich ganz oft alte Datenbanken.

Jochen

Ja, ja, stimmt.

Jochen

Und ich, ehrlich gesagt, ich finde es komisch, weil das ist halt so, ich meine, es kostet eigentlich ja nicht viel, das abzudaten oder da abzudaten zu bleiben und es bringt halt ordentlich was, also, wenn ich jetzt mir angucke, so Postgres 12 oder so, was ich häufig sehe oder...

Jochen

Also bis, also bis, wenn man jetzt stattdessen ein Postgres 16 nimmt, dann ist es halt schon, da hat sich schon einiges getan, also, da kriegt man irgendwie so 30% Performance-Proofment einfach so gerade.

Jochen

Einfach umsonst, ja.

Jochen

Ja, also, ja.

Jochen

Genau, ähm, ja, äh, dann, oh, hm, HTMLX 2.0 ist erschienen.

Jochen

Aha.

Jochen

Auch ganz interessant, da hat sich auch nichts geändert, sondern das ist, äh, einfach nur hochgezählt, äh, und gut, ist ein paar Sachen entfernt worden, also ein paar Extensions, die WebSockets-Extension ist nicht mehr da.

Jochen

Ja.

Jochen

Nicht mehr drin, oder ein paar Dinger, äh, genau, ja, und...

Jochen

Du benutzt das immer noch so gern?

Jochen

Ich benutze das immer noch super gern.

Jochen

Ich auch.

Jochen

Ja, ich habe es auch jetzt letztens wieder in einem, äh, in einem Projekt, äh, gehabt und das ist, äh, ja, es war echt total super, ich habe damit irgendwie eine Menge...

Dominik

Wie würdest du denn einen Chat umsetzen?

Jochen

Äh, ja, gut, okay, Chat, da muss man dann drüber nachdenken, vielleicht ist es da besser, dann was anderes zu nehmen.

Jochen

Ja.

Jochen

Könnte schon sein.

Jochen

Ich meine, man kann es bauen, aber...

Jochen

Ja, ist ja manchmal vielleicht der Echtzeit dann tatsächlich, wenn der Echtzeit eine Reaktion hat, irgendwie interessant, wenn man jetzt pollen würde, dann hast du immer so ein bisschen Latenz.

Ronny

Server-Send-Events, glaube ich, geht damit?

Jochen

Ja, das geht damit natürlich auch, aber das ist ja dann fast das Gleiche, also es ist auf jeden Fall ähnlich wie WebSockets auch, also es ist halt nicht bidirektional, aber du hast halt auch die ganze Zeit eine stehende Verbindung, die halt die ganzen anderen komischen Schwierigkeiten hat, die man dann halt so hat, wie, ja, wie loadbalancen wir das jetzt denn eigentlich, was ist denn, wenn ich jetzt irgendwie...

Jochen

Deployment mache und ich restarte das Ding, was passiert denn da mit der Verbindung?

Jochen

Ist jetzt erstmal weg.

Jochen

Kommt sie wieder?

Jochen

Kommt sie nicht wieder?

Jochen

Der Mensch am anderen Ende des Chats merkt ja einfach nach drei Tagen irgendwie, dass keiner mit ihm redet und denkt alle, er stinkt irgendwie und niemand will mit ihm reden, tatsächlich ist einfach nur diese Verbindung weg.

Jochen

Ja, also da kommt man in all diese blöden Fehlerfälle rein und das ist halt bei WebSockets und bei Server-Send-Events so.

Jochen

Insofern, ich weiß nicht.

Jochen

Also wenn man es irgendwie ohne sowas machen kann, würde ich es ohne sowas machen, aber kann sein, dass Chat eine der wenigen Sachen ist, wo man das halt tatsächlich braucht.

Jochen

Ja.

Dominik

Und was ist mit Chat mit dem Server?

Jochen

Chat mit dem Server ist...

Dominik

Also keine Ahnung, du schickst dem Server eine Frage und nicht einem anderen Menschen.

Jochen

Nee, da brauchst du es nicht.

Jochen

Achso, du meinst jetzt sowas wie Chat-GPT, wenn man das implementieren wollte.

Jochen

Genau, da brauchst du es nicht.

Jochen

Das geht, Request-Response, super.

Jochen

Dann wartest du einfach drauf.

Jochen

Ja, also du kannst halt dann...

Jochen

Du kannst ja auch das anzeigen, was dann zurückkommt direkt.

Jochen

Aber da brauchst du keine stehende Verbindung.

Jochen

So gejankt jetzt, oder?

Jochen

Ja, du kannst einfach, sobald da was kommt, kannst du ja das anzeigen.

Jochen

Das geht.

Jochen

Genau.

Jochen

Genau, das ist auch sowas.

Jochen

Genau, dafür braucht man keine direktionale Verbindung oder keine stehende Verbindung.

Jochen

Okay, dann 5.

Jochen

5, 1.

Jochen

5, 1, Alpha erschienen, genau.

Jochen

Ich weiß nicht, ob hier irgendjemand genau die Liste der Neuigkeiten und so da mit dabei hat.

Jochen

Also ich meine, es dauert auch noch ein Momentchen, bis das erscheint, aber...

Jochen

Ist das die erste Alpha?

Jochen

Ja.

Jochen

Also was ich hier schon sehe...

Jochen

Ah, Query-String, super.

Jochen

Das habe ich hier halt schon ein paar Mal selber gebaut.

Jochen

Aber warum gibt es das denn nicht?

Jochen

Genau, man hat...

Jochen

Also das Problem ist, wenn man quasi ein paar Dinge hinzufügen will, dann...

Jochen

Query-String zum Beispiel, wenn man irgendeinen Filter angeschaltet hat oder so, dann ist halt die Frage, okay, aber da sind ja jetzt möglicherweise schon Sachen gesetzt und dann muss man das irgendwie...

Jochen

Ja, wie updatet man das denn?

Jochen

Und da gibt es jetzt ein Template-Tag für, wo man halt einfach den Query-String kriegt.

Jochen

Und das ist natürlich praktisch.

Jochen

Genau.

Jochen

Ich hatte das Gefühl, dass da viel Quality-of-Life-Sachen dabei sind.

Ronny

Jetzt nicht die großen Game-Changer, die sind jetzt eher dann für 5.2, glaube ich, geplant.

Ronny

Später mehr.

Ronny

Ja.

Ronny

Ja, sondern eher Kleinigkeiten, die einem einfach helfen.

Ronny

Besser.

Ronny

Und angenehmer zu arbeiten.

Ronny

Ja.

Jochen

Oh, es gibt Connection-Pool-Support für Postgres, was dann auch praktisch ist.

Jochen

Also ich meine, ehrlich gesagt, für meine Sachen ist es nicht so...

Jochen

Also da komme ich sowieso nie so an die Grenzen, dass ich da wirklich ein Pool lieber hätte oder so, sondern es ist alles egal.

Jochen

Aber wenn man das Problem hat, dann ist es natürlich doof, wenn man da irgendwie was anderes tun muss.

Jochen

Ja.

Jochen

Ja, ja, ja, ja, ja.

Jochen

Keine Ahnung, was das ist.

Dominik

Aber ich würde sagen, über die ganzen Neuigkeiten bei Dango, da können wir doch tatsächlich den Ronny gleich besser fragen, weil der von der Dango-Con wahrscheinlich mehr erzählen kann als der 5.1.

Jochen

Ich glaube, das ist so wahnsinnig...

Jochen

Ja, genau.

Jochen

Ist auch nichts Weltbewegendes mehr.

Jochen

Alles klar, dann, genau.

Jochen

Haben wir nur ein Event, dass es das gibt und...

Dominik

Dann sind wir vielleicht mit den News heute schon ein bisschen durch oder habt ihr noch irgendwas, was ganz total relevant wichtig war?

Dominik

Nicht von meiner Seite.

Dominik

Okay.

Dominik

Gut.

Dominik

Dann erzähl doch mal von der Dango-Con, lieber Ronny.

Dominik

Danke, Ronny.

Dominik

Also, ich hab...

Dominik

Also, erstmal, du...

Dominik

Eigentlich müsstest du ja von dir selber erzählen, weil du hast ja auch was gesagt, glaube ich sogar, ne?

Dominik

Genau.

Dominik

Und was Cooles erzählt.

Dominik

Und vielleicht fangen wir doch einfach damit an, dann können wir danach so von allgemeinen Sachen erzählen.

Dominik

Ja, genau.

Ronny

Also, wie gesagt, ich heiße Ronny.

Ronny

Ich arbeite seit 2012 mit Dango.

Ronny

Ich hab damals mit 1.4 angefangen, was lange, lange her ist.

Ronny

Damals hatten wir auch noch ein anderes Versionsschema, also das ist länger her, als es klingt.

Ronny

Ich bin jetzt seit vielen Jahren Tech-Evangelist in meiner Firma.

Ronny

Ich arbeite bei der Agentur Ambient in Köln und hab da durch die Möglichkeit, mich mit der Thematik zu beschäftigen und mich in dem ganzen Django-Backend-Kontext so ein bisschen auch up-to-date zu halten und da auch Sachen zu machen.

Ronny

Zum Beispiel auch mal zu einer Konferenz zu fahren und einen Vortrag zu halten.

Ronny

Das habe ich dieses Mal das erste Mal gemacht.

Ronny

Das ist das erste Mal auf einer echten Konferenz.

Ronny

Ich war, man könnte vielleicht sagen, zum Warmlaufen letztes Jahr bei dem Django-Day in Kopenhagen.

Ronny

Das war sehr cool.

Ronny

Das ist so eine Mini-Konferenz.

Ronny

Das ist so ein Raum für so 60 bis 70 Leute, würde ich sagen.

Ronny

Und das ist nur ein Tag.

Ronny

Und das war sehr nett, sehr familiär.

Ronny

Und das war so das erste Mal, dass ich irgendwie vor, naja, literally laufender Kamera das gemacht habe.

Ronny

Das stimmt überhaupt nicht.

Dominik

Wir haben dich schon ganz oft live was erzählen hören.

Ronny

Ja, aber das war nicht mit Livestream zu.

Dominik

Das ganze Internet konnte zu gucken bei euren Livestreams bei Ambient.

Dominik

Während der ganzen Zeit, in der letzten Zeit, ja.

Dominik

Ja, die Django-Meetups machen wir nicht.

Dominik

Ach so, das meinst du.

Dominik

Ja, okay.

Dominik

Ja, doch.

Dominik

Genau, ich bin nämlich beim Django-Meetup Köln.

Ronny

Ich organisiere das und da halte ich auch gelegentlich meinen Vortrag.

Ronny

Längst nicht mehr so oft wie früher, was, glaube ich, ein gutes Zeichen ist.

Ronny

Das heißt, das Meetup funktioniert, wenn sich Leute finden, die da Spaß daran haben, was vorzutragen.

Ronny

Genau, und da habe ich einen Vortrag gehalten über mein Package, das ich für Django gemacht habe.

Ronny

Das nennt sich Django Pony Express.

Ronny

Böse ist im Endeffekt das Problem, wer schon mal mit Django, also wir machen meistens, so von meinem Job her,

Ronny

machen meistens Business-Applikationen und meistens baut man da relativ viele E-Mails.

Ronny

Und E-Mails mit Django zu bauen, das geht alles, das funktioniert auch technisch alles sauber,

Ronny

nur die, ich mag diesen Begriff sehr, die Developer Experience ist nicht so richtig gut,

Ronny

weil man da relativ viel Low-Level-Sachen machen muss, vor allem, wenn man jetzt nicht nur irgendeine E-Mail rausschicken möchte,

Ronny

sondern halt eine, die modernen Business-Ansprüchen genügt, also sprich eine HTML-E-Mail, die in 50 Sekunden,

Ronny

die entsprechende Heller gesetzt hat, die einen Unsubscribe-Link hat, die irgendwie ansprechend aussieht, etc.

Ronny

Und da habe ich mir was überlegt, dass wer Django kennt, kennt ja wahrscheinlich auch Class-Based-Views

Ronny

und ich habe das ganze Thema Class-Based-E-Mails genannt.

Ronny

Und diese Class-Based-E-Mails habe ich mich sehr an den Class-Based-Views orientiert,

Ronny

um einfach mal eine Lösung zu bauen, wo es halt angenehmer ist, dass halt, wenn ich halt eine E-Mail habe,

Ronny

die halt dann HTML-Templates hat oder Inhalt hat, einen Plain-Text-Part-Inhalt,

Ronny

Übersetzungen, bestimmte Header, bestimmte Variablen, die für das Base-Tempel benötigt werden,

Ronny

dass ich da halt nicht jedes Mal so riesige Funktionen hin und her kopiere,

Ronny

sondern im Endeffekt halt wirklich nur drei oder vier Zeile habe

Ronny

und die restlichen Sachen halt an einer sinnvollen Stelle gekapselt sind.

Ronny

Und ein zweites großes Problem, was mich halt auch persönlich immer sehr gestört hat, ist,

Ronny

dass E-Mails, weil die ja irgendwie so ein bisschen eine externe API sind,

Ronny

weil das halt, ne, man schickt die irgendwie raus und die kommen dann quasi vielleicht wieder bei mir an,

Ronny

wenn ich es mir selber schicke, dass wir die nicht so richtig getestet haben,

Ronny

weil es einfach auch mühsam ist.

Ronny

Und das Django-Test-Framework bringt einem da so ein paar Tools mit,

Ronny

aber die sind alle so ein bisschen versteckt.

Ronny

Und da habe ich dann so einen Wrapper gebaut, der auch so ein bisschen,

Ronny

dass man diese E-Mail-Outbox, wenn man E-Mails in einem Test verschickt,

Ronny

dann landen die in so einer Liste, in einer Outbox, werden die gesammelt,

Ronny

dass sie nicht aus Versehen rausgeschickt werden an irgendwen,

Ronny

und dass man auf diese Liste so ein bisschen wie in einem Query-Set zugreifen kann,

Ronny

dass man kann nach Subject, nach Inhalt filtern, man kann gewisse Assertions machen,

Ronny

ob zum Beispiel in beiden Content-Parts, es gibt ja mehr als nur HTML und Plain-Text,

Ronny

ob in den Context-Parts da bestimmte Dinge drin sind und so weiter.

Ronny

Und da habe ich einen Vortrag drüber gehalten, das hat sehr viel Spaß gemacht,

Ronny

ich war sehr nervös.

Ronny

Ich wollte gerade sagen, warst du aufgeregt?

Ronny

Ich war sehr aufgeregt, aber es hat sehr viel Spaß gemacht tatsächlich.

Ronny

Ich war unendlich viel schneller als bei den Malen, wo ich geübt habe.

Ronny

Das ist glaube ich so eine Sache, das ist man immer, aber ich war wirklich schnell.

Ronny

Ich glaube, ich habe auf 21 Minuten Testzeit 16 Minuten Vortragszeit gehabt.

Ronny

Ach, du hast immer so schnell geredet wie ich.

Ronny

Ich weiß es nicht.

Ronny

Ich habe versucht, extra ein bisschen Zeit zu lassen, aber ja, hat so mittelgut funktioniert.

Ronny

Nichtsdestotrotz auch viel positives Feedback bekommen

Ronny

und ist auch tatsächlich nochmal eine ganz andere Art, auf so einer Konferenz zu sein.

Ronny

Das war jetzt, glaube ich, meine fünfte oder sechste DjangoCon mit ein paar,

Ronny

ich glaube fünfte, mit zwei Remote wegen Corona.

Ronny

Und das ist echt nochmal ein ganz anderes Gefühl.

Ronny

Also ich finde generell kann ich das jedem nur ans Herz legen,

Ronny

wer es noch nicht gemacht hat, geht mal auf eine Konferenz.

Ronny

Auf meiner allerersten DjangoCon.

Ronny

Dachte, habe ich halt Uni-Style erwartet.

Ronny

Da steht irgendwer und erzählt was langweiliges und dachte, ich gehe eigentlich wegen den Leuten dahin.

Ronny

Tatsächlich gehe ich auch gerne wegen den Leuten dahin, jetzt wo ich auch viele kenne.

Ronny

Aber die Vorträge sind auch wirklich gut.

Ronny

Und wenn man denkt, dass das halt auch alles auf einem kleinen Budget läuft,

Ronny

da jetzt keine große Tech-Company dahinter steht, die da irgendwie Millionen einfach mal so verschenkt,

Ronny

sondern das alles irgendwie von Volunteers getragen wird und dann die sich freuen,

Ronny

wenn halt irgendeine Firma irgendwie ein Tausi reinwirft, ist das schon echt beeindruckend.

Ronny

Und genau, da waren echt coole Sachen dabei.

Ronny

Das, glaube ich, der große Game-Changer sind die Background-Workers.

Ronny

Das ist eine von diesen DEP, also so eine Django, ich weiß gar nicht, was die Abkürzung bedeutet.

Jochen

Django Enhancement Proposal.

Jochen

Ah ja, genau.

Ronny

Dieses DEP, ich glaube 14 oder sowas.

Ronny

Die sind auch irgendwie letzte Zeit erst wieder entdeckt worden.

Ronny

Ich glaube, dass es die gibt und die werden jetzt auch wieder recht populär.

Ronny

Ich glaube auch mit den neuen Fellows, Sarah und Natalia.

Ronny

Und diese Background-Workers sind im Endeffekt eine Idee,

Ronny

dass man, wenn man in einem Django-Projekt Asynchrone...

Dominik

Ich glaube, da müssen wir gleich noch ein bisschen genauer drauf eingehen,

Dominik

vielleicht so als extra Thema, weil da haben wir vielleicht noch ein, zwei coole Links zu.

Dominik

Deswegen erzähl gerne noch ein bisschen mehr zu deinem Talk über E-Mails,

Dominik

bevor wir auf die Background-Tasche gehen.

Dominik

Okay.

Ronny

Ja, genau.

Ronny

Also die, ja, was habe ich denn, was kann ich dazu noch sagen?

Jochen

Irgendwie, war das nicht auch irgendwas, wo so ein Architektur-Design,

Jochen

dann irgendwie so ein bisschen eine Rolle spielte oder,

Jochen

ne, vielleicht habe ich das auch einfach falsch.

Jochen

Einfach nur objektorientierte E-Mails quasi.

Ronny

Genau, und es ist halt, es ist halt einfach ein Wrapper um die relativ low-levelige API,

Ronny

wenn man halt, wie gesagt, ein bisschen aufwendigere E-Mails bauen möchte.

Dominik

Ja, das macht Sendmail mit ein bisschen Fluff.

Dominik

Genau.

Dominik

Ja, genau.

Ronny

Weil Sendmail selbst, das erstellt ein Python-E-Mail-Objekt, glaube ich.

Ronny

Das gibt doch gerade eine große Diskussion, weil bei Python, das scheinbar etwas deprecated

Ronny

wurde, in einer letzten Version.

Ronny

Und Django noch auf den alten Sachen, ich glaube tatsächlich deprecated, aber da gibt

Ronny

es noch etwas Neueres, Cooleres und die Django-Sachen unter der Haube benutzen noch die alten und

Ronny

dann ist gerade viel in Bewegung bezüglich E-Mails, interessanterweise.

Ronny

Ich bin da ganz aus Versehen auf diesen Zug aufgesprungen.

Dominik

Direkt eine blöde, andere Frage, wie verschickt ihr denn E-Mails?

Ronny

Also tatsächlich, das ist auch eine Frage, die ich jedes Mal gestellt werde, wenn ich

Ronny

diesen Vortrag, ich muss gestehen, ich habe den eigentlich nicht.

Ronny

An mehreren Occasions recycelt.

Ronny

Das ist eine Frage, die sehr oft kommt.

Ronny

Bei mir geht es wirklich im Endeffekt nur um die Developer Experience und um die Maintainability.

Ronny

Also sprich, wie erstelle ich programmatisch diese E-Mail, wie stelle ich sicher, dass da

Ronny

alles drin ist und wie kann ich das nachher testen?

Ronny

Alles, was danach kommt, also im Endeffekt, das ist alles nicht das, wo das Package ansieht.

Ronny

Also da hört es quasi auf.

Ronny

Also bei den Unit-Tests, je nachdem, wie man es definiert, ist quasi dann das Ende und

Ronny

danach.

Ronny

Kann man halt dann die E-Mail so verschicken, wie man sie halt mit Django sonst verschicken

Ronny

möchte.

Ronny

Also ob man da jetzt irgendeinen Mail-Hawk reinhängt oder irgendein super abgefahrenes

Ronny

E-Mailing-Cluster hat oder seine eigene Gmail-Adresse dafür nutzt oder einfach das bei SES reinwirft.

Ronny

Das ist nichts, was man im Package versucht zu lösen.

Ronny

Wie macht ihr das?

Ronny

Wir selbst nutzen SES.

Ronny

Das ist von Amazon.

Ronny

Ich glaube, das gibt es aber auch in, also ich glaube, das ist ein Standard sogar.

Ronny

Ich bin nicht ganz sicher.

Ronny

Ich glaube, Amazon hat ja viele von diesen Standards definiert und das ist ein Service,

Ronny

der ist halt sehr günstig und sehr leistungsfähig.

Ronny

Ich habe für ein Privatprojekt, ich engagiere mich da für Kinder in Bolivien, haben wir

Ronny

früher unseren Spendern und Interessenten so einen Jahresbericht per PDF geschickt, das

Ronny

damals noch, bevor wir HTML-E-Mails hatten und diese PDFs, das war dann immer so mit

Ronny

den Bildern, auch wenn man die runtergerechnet hat, war immer so 500, 800 Kilo bei, das ist

Ronny

schon relativ groß für eine E-Mail und unsere alten Mail-Server sind regelmäßig, da ist

Ronny

irgendwie abgekackt, hängen geblieben, mühsam.

Ronny

Dann habe ich irgendwann auf SES umgestellt.

Ronny

Alle E-Mails zu versenden kostet dann vielleicht ein Euro oder zwei, ich weiß es nicht genau

Ronny

und das läuft halt einfach.

Ronny

Also du kannst dir eine beliebige Menge von E-Mails geben und die kommen halt an.

Ronny

Das ist halt sehr, sehr angenehm.

Ronny

Genau.

Ronny

Ja und tatsächlich eine Sache kann ich dazu sagen, was mich auch sehr gefreut hat.

Ronny

Ich habe ja wie gesagt für den Vortrag auf der Con gutes Feedback bekommen, habe mich

Ronny

dann mit ein paar Leuten unterhalten und habe ja noch ein paar Tipps bekommen, weil ich

Ronny

halt in der Conclusion auch überlegt habe, was da Sachen drin sind, die meiner Meinung

Ronny

nach auch gut ins Django Core, also in das Framework passen würden und dass wir dort,

Ronny

dass ich mich freuen würde halt was zu contributen, aber ich habe bis jetzt halt noch nicht so

Ronny

die richtigen Sachen hatte, es hat nie richtig funktioniert, habe ich ein paar Tipps bekommen,

Ronny

wie ich das mache.

Ronny

Es gibt nämlich ein Django Forum, das wird es auch gerade noch ein bisschen, die versuchen

Ronny

gerade so ein bisschen die Kommunikation da auch drin zu zentralisieren und da dann einfach

Ronny

meine Idee, also mit etwas kleinem Anfang.

Ronny

fangen, zum Beispiel dieser Testing-Helper,

Ronny

dass man halt quasi

Ronny

durch einen, also

Ronny

dass man alle textbasierten

Ronny

Medieninhalte einer E-Mail, also

Ronny

in den meisten Fällen HTML und Plaintext,

Ronny

wirklich einfach gucken kann, ist

Ronny

dieser String da drin, also zum Beispiel

Ronny

weiß ich nicht, ist, da steht da drin

Ronny

lieber Jochen als Anrede oder steht da

Ronny

drin Auftragsbestätigung oder ist da diese

Ronny

Auftragsnummer drin, solche Geschichten.

Ronny

Und diesen Helper haben wir

Ronny

dann in einem Forum-Thread ausdiskutiert.

Ronny

Die Lösung, da haben sich auch sehr viele Leute beteiligt,

Ronny

die Lösung, die rausgekommen ist, ist viel besser als das, was ich mir

Ronny

alleine überlegt hatte. Es war viel

Ronny

weniger zu implementieren, lustigerweise auch,

Ronny

was man alleine gemacht hat.

Ronny

Es gibt diesen schönen Spruch,

Ronny

Weeks of Programming can save hours of

Ronny

Planning, das war wieder sehr wahr.

Ronny

Und genau, dann

Ronny

ist vor zwei Wochen, glaube ich,

Ronny

dann das auch gemerged

Ronny

worden in Django Core, also in 5.2

Ronny

habe ich meinen ersten Commit, was mich sehr freut,

Ronny

jetzt nach zwölf Jahren.

Ronny

Cool. Vielen Dank.

Ronny

Genau.

Ronny

Ja, das klingt cool.

Dominik

Also, ja, ich muss es eigentlich auch mal ausprobieren.

Dominik

Ich hatte das zwischendurch mal so angeguckt, aber nicht dann angefasst,

Dominik

weil die E-Mail-Lösung bei mir war schon

Dominik

fertig und ich hätte hier alles umbauen müssen.

Dominik

Ja, ich kenne das.

Dominik

Aber eigentlich, für das Template wäre es eigentlich cool,

Dominik

das drin zu haben, weil das klingt danach, als müsste man

Dominik

das an verschiedenen Stellen schön benutzen können.

Dominik

Weil halt auch, wie du sagst, diese ganzen

Dominik

Features, Templates per

Dominik

HTML und so weiter, sehr gerne

Dominik

genutzt werden. Also, tatsächlich ein Feature,

Dominik

was ich persönlich sehr mag,

Ronny

einfach so ein Convenience-Feature,

Ronny

der Faktor interessiert

Ronny

die wenigsten Leute wirklich der Plain-Text-Part,

Ronny

weil die normalen, die modernen E-Mail-Clients

Ronny

oder die Web-basierten Clients, den

Ronny

eh nicht anzeigen. Das heißt, die einzigen

Ronny

Arten, wo man das sieht, ist, wenn man

Ronny

so ein E-Mail-Client hat, dann geht so ein Pop-Up auf,

Ronny

das nimmt meistens den Plain-Text-Part.

Ronny

Oder wenn halt irgendjemand auf seinem

Ronny

Linux-1980-Konsolen-basierten

Ronny

E-Mail-Programm noch

Ronny

sitzt. Da gibt es auch so ein paar Spezies, die das

Ronny

machen. Aber ansonsten sieht das halt niemand.

Ronny

Und ich habe mir mit einem externen

Ronny

Package als Default

Ronny

rendert der einfach das HTML-Template

Ronny

als Plain-Text und tauscht dann halt die Tabellen

Ronny

durch Pipes und sowas. Die Struktur ist

Ronny

nicht schön, es funktioniert. Auch Links und sowas

Ronny

kriegt der hin. Also das kriegt

Ronny

dann quasi wieder der

Ronny

Client dann hin, der

Ronny

das dann auch trotzdem, auch Plain-Text

Ronny

meistens zumindest, dann wieder

Ronny

irgendwie interpretiert. Und das ist sehr

Ronny

angenehm, weil dann hat man keine doppelten Templates mehr. Und das

Ronny

ist natürlich schon ein Problem, dass man durch diese doppelten

Ronny

Inhalte, wie zum Beispiel bei uns in einem Projekt, wo wir

Ronny

gearbeitet haben, hatten wir bestimmt 50

Ronny

verschiedene E-Mails, alles mögliche

Ronny

um halt den Kunden zu informieren, was so mit

Ronny

seinen Dingen passiert ist.

Ronny

Und da wurde ständig vergessen, eine von

Ronny

beiden Teilen anzupassen. Das kann man natürlich in gewissen

Ronny

Maßen durch diesen Test-Helper

Ronny

lösen, dass man das einfach unit-testet.

Ronny

Nichtsdestotrotz, wenn es ein Rechtschreibfehler oder sowas ist,

Ronny

hat man vielleicht darauf gerade nicht geschaut.

Ronny

Das war ein ständiger Pain. Und

Ronny

das kann man sehr gut damit halt einfach

Ronny

erschlagen und löst

Ronny

das Problem damit. Das ist sehr angenehm.

Ronny

Sehr gut. Und

Dominik

du hast gesagt, er macht auch sowas dann wie

Dominik

Opt-Out-Links oder

Dominik

für E-Mail-Newsletter oder sowas dann direkt mit drin.

Dominik

Ist das da in einem Package drin, oder?

Ronny

Also das Package nicht. Die Idee ist quasi,

Ronny

dass man, also diese, dass man,

Ronny

also ich biete quasi, also

Ronny

das Package, nicht ich, nicht ich persönlich,

Ronny

biete so eine

Ronny

Basisklasse. Und wenn man von dieser Basisklasse

Ronny

erbt, dann kann man halt dann

Ronny

eine E-Mail definieren, kann ein paar Attribute setzen, zum Beispiel

Ronny

das Subject setzen,

Ronny

das Template setzen und halt gegebenenfalls noch Kontextvariable

Ronny

mitgeben, zum Beispiel den Auftrag oder

Ronny

den Link oder irgendwas, was halt der

Ronny

Inhalt der E-Mail ist.

Ronny

Jetzt hat man aber natürlich oft einfach

Ronny

so ein, also die E-Mails, die man schickt

Ronny

aus dem System, sollen ja irgendwie

Ronny

einheitlich sein. Du hast, wie auch

Ronny

bei einer Webseite, hättest du ein Basis-Template.

Ronny

Du hast das Logo oben drin, du hast dann

Ronny

vielleicht eine generelle Anrede, du hast ein Footer,

Ronny

wo ein paar legale Sachen drinstehen, wo vielleicht

Ronny

ein Unsubscribe-Link drin ist. Und

Ronny

diese ganzen Sachen,

Ronny

die ganzen Informationen, die man dafür braucht,

Ronny

das sind auch die dynamischen Sachen. Zum Beispiel, wenn man

Ronny

sagt, der Unsubscribe-Link enthält ein Hash oder sowas,

Ronny

dass der Nutzer identifiziert werden kann,

Ronny

der das draufgeklickt hat und solche Geschichten.

Ronny

Und wenn man da einfach von der

Ronny

meiner Pony Express Basisklasse

Ronny

ableitet, eine eigene Basisklasse macht,

Ronny

dort dann halt die zum Beispiel, die

Ronny

GetContextData, wer Django kennt, weiß, was ich meine,

Ronny

überschreibt,

Ronny

dann kann man da halt einmal die ganzen Sachen definieren.

Ronny

Oder zum Beispiel, dass man Subject-Prefix hat.

Ronny

Ich persönlich finde, es sieht immer schön professionell aus,

Ronny

wenn alle E-Mails, die vom System kommen,

Ronny

halt irgendwie geprefixet sind. Oder zum Beispiel dann irgendwie

Ronny

mein-webshop.de

Ronny

und dann halt Account erstellt, Passwort-Reset

Ronny

und was auch immer. Und diese Sachen kann man

Ronny

einmal definieren und jede E-Mail, die man dann

Ronny

weiter erstellt, leitet dann halt von dieser eigenen

Ronny

Klasse ab. Und das,

Ronny

ich meine, das ist halt ganz normale Objektorientierung,

Ronny

das hat jetzt nichts mit dem Pony Express zu tun,

Ronny

aber das ist halt, das macht es sehr angenehm und führt

Ronny

auch dazu, dass die eigentlichen E-Mails, die mich dann

Ronny

am, die ich am Schluss dann, wo ich dann auch die N,

Ronny

die N-te,

Ronny

implementieren muss,

Ronny

dass das wirklich dann meistens halt nur

Ronny

zwei oder drei Zeilen Code sind. Was es natürlich auch vieler

Ronny

sehr angenehm macht, neue E-Mails

Ronny

hinzuzufügen.

Ronny

Genau.

Ronny

Cool, cool.

Dominik

Ähm, hast du da auch so White-Label-Templates

Dominik

dabei, die quasi gar nichts vorgeben,

Dominik

aber die es schon gibt und die man einfach benutzen kann?

Ronny

Also ich tatsächlich, wenn ich das mache,

Ronny

ich fange immer an mit einer Google-Suche

Ronny

nach Responsive-E-Mail-Template, da lande ich

Ronny

immer bei dem gleichen GitHub-Report,

Ronny

das es schon seit, ich glaube, 2015 oder sowas gibt.

Ronny

Das ist immer noch überraschend gut und

Dominik

das funktioniert auch. Das müssen wir unbedingt

Dominik

in die Show noch stellen.

Dominik

Das ist super simpel,

Ronny

es tut es aber irgendwie. Ich weiß

Ronny

auch nicht genau warum, aber wenn man sich halt da ein paar Regeln hält,

Ronny

je nachdem, wie alte E-Mail-Clients man unterstützen möchte,

Ronny

ähm,

Ronny

die früheren Outlook-Versionen

Ronny

sind da ja ziemlich wild, die dann unter der Haube so

Ronny

einen Indexbrowser 5 oder sowas haben.

Ronny

Das tut dann schon weh, wenn man die unterstützen möchte.

Ronny

Aber, ähm, wie gesagt, kommt halt auch immer dann

Ronny

drauf an, ähm, wie wichtig das dann ist.

Ronny

Also vielleicht akzeptiert, wie halt auch mit

Ronny

Browsern, ne, vielleicht ist auch einfach okay, wenn dann der eine,

Ronny

der halt noch den Indexbrowser 11 nutzt, wenn das dann die Webseite

Ronny

halt nicht perfekt aussieht. Von daher, das ist

Ronny

auch, wie gesagt, ein Thema, ähm, auf das ich

Ronny

mich gar nicht fokussiert hab, weil ich

Ronny

versucht hab, nicht zu viele Probleme in einem

Ronny

zu lösen. Ich hab selbst diese, überlegt, ob ich diese

Ronny

Sache mit den Class-Based-E-Mails und die Sache mit der

Ronny

Test-Suite, ob ich die auseinanderziehen soll, weil es ja

Ronny

im Endeffekt die Test-Suite einen

Ronny

eigenständigen Nutzen hat, auch wenn ich

Ronny

keine Class-Based-E-Mails

Ronny

verwende. Das ist einfach nur ein Django-Ding.

Ronny

Und man soll ja Packages eigentlich immer

Ronny

so bauen, dass die nach Möglichkeit genau

Ronny

ein Problem lösen, weil es auch dann einfacher zu

Ronny

verkaufen, einfacher zu verstehen ist.

Ronny

Von daher hab ich mich auch entschieden, dann da nicht

Ronny

noch weitere Dinge reinzubauen.

Ronny

Und auch persönlich, weil ich da halt auch

Ronny

nicht so die Pain-Points hatte.

Dominik

Okay. Also hast du eh schon konzentriert.

Dominik

Immer Copy-Paste. Du musst es aber erst nicht bereitstellen

Dominik

mit dem Package. Okay, verstehe ich.

Dominik

Genau.

Dominik

Ja. Klingt gut.

Dominik

Aber jetzt kommen wir tatsächlich, glaube ich, dann zu

Dominik

Django-Tasks, weil, wenn man ihm es verschicken möchte,

Dominik

möchte man das ja wahrscheinlich nicht

Dominik

sequenziell berechnen, oder?

Dominik

Genau. Nicht dem Main-Thread.

Ronny

Und genau.

Ronny

Da gibt es ein neues

Ronny

Konzept. Wie gesagt, das nennt sich Background-Workers.

Ronny

Das lebt aktuell in einem Package namens

Ronny

Django-Tasks. Da muss man aufpassen.

Ronny

Es gibt ganz viele, die ähnlich klingen.

Ronny

Django-Background-Tasks.

Dominik

Ja, Background-Tasks-Manager.

Ronny

Genau. Auf jeden Fall dieses Django-Tasks-Package.

Ronny

Das ist von Jake Howard. Der hat das jetzt relativ schnell

Ronny

zusammengenagelt. Das ist echt erstaunlich.

Ronny

Der freut sich auf jeden Fall

Ronny

über...

Dominik

Doch, es ist nicht Django-Background-Tasks.

Jochen

Ja, ich merke schon. Ich merke schon. Ich google hier.

Jochen

Der freut sich

Ronny

auf jeden Fall immer über Leute, die das ausprobieren.

Ronny

Also wer von euch Interesse an Django hat,

Ronny

möge das gerne anschauen.

Ronny

Jetzt muss ich auch noch einen Satz sagen, was das überhaupt ist.

Ronny

Ja. Genau.

Ronny

Also in den meisten Projekten,

Ronny

wenn man irgendwas asynchron machen möchte,

Ronny

da meine ich jetzt gar nicht dieses

Ronny

in ganzem Sinne relativ moderne Async, sondern einfach

Ronny

ich möchte irgendwelche Prozesse nachgelagert machen.

Ronny

Zum Beispiel irgendeine große Berechnung machen,

Ronny

irgendeinen Cache befüllen oder halt auch eine E-Mail

Ronny

schicken, weil ich möchte ja mit dem... E-Mail ist ja...

Ronny

Ich muss ja mit der externen API kommunizieren,

Ronny

um die E-Mail zu versenden. Da möchte ich ja im optimalen Fall

Ronny

nicht meinen externen Thread blockieren.

Ronny

Äh, meinen Main-Thread blockieren.

Ronny

Ähm, und, ähm,

Ronny

genau. Deshalb, ähm,

Ronny

gibt es in jedem Projekt, in dem ich gearbeitet

Ronny

habe, irgendeine Art von

Ronny

asynchronem Processing. Meistens

Ronny

in der Form von Celery. Ja, Celery.

Ronny

Das ist in der Python-Welt sehr bekannt, in der Django-Welt.

Dominik

Sehr gehasst und gefürchtet.

Dominik

Ja. Ähm, gibt es

Dominik

Django-Queue oder Queue2?

Dominik

Ähm, gibt es, ist jetzt aufgekommen,

Dominik

das ist, ähm,

Ronny

ähm, das ist so eine leichtgewichtigere

Ronny

Alternative, weil der, das Hauptproblem

Ronny

ist, dass Celery erzwingt,

Ronny

dass man irgendeinen Broker dazwischen stellt,

Ronny

der als Message-Queue dient.

Jochen

Ja, man kann das auch so konfigurieren,

Jochen

dass der direkt die Datenbank nimmt, aber...

Dominik

Oder der hat eine lokale Datei, in der er irgendwas reinschreiben kann,

Dominik

dann macht er irgendeine SQLite noch extra auf.

Jochen

Okay, das weiß ich.

Jochen

Ja, aber ich glaube, man muss es nicht unbedingt,

Jochen

also das ist üblich, ja. Und es ist auch,

Ronny

also ich habe das mehrfach schon

Ronny

gesucht und, ähm, für die

Ronny

Result-Backends, also bei Celery,

Ronny

wenn quasi, um die Ergebnisse zu speichern

Ronny

und das im Endeffekt so eine Art Log, was

Ronny

passiert ist, äh, dafür geht

Ronny

das, das ist relativ einfach, aber für die,

Ronny

für den Broker selbst bin ich zumindest immer

Ronny

damit

Ronny

gescheitert.

Ronny

Ich war aber auch tatsächlich nie so viel

Ronny

investiert darin. Auf jeden Fall, für die

Ronny

allermeisten Cases ist es halt einfach harter

Ronny

Overkill, wenn man da halt irgendeine Postgres oder MariaDP

Ronny

hat, die kann in den, zum Beispiel

Ronny

bei uns, in den meisten Fällen, kann die paar hundert

Ronny

Tasks, die am Tag laufen,

Ronny

problemlos abfrühstücken, ohne

Ronny

dass sie da irgendwie in Verlegenheiten kommen.

Ronny

Selbst bei ein paar tausend Tasks ist es immer noch kein

Ronny

Problem. Vor allem, wenn man dann vielleicht auch

Ronny

sagt, dass, ähm, die, äh,

Ronny

dass die ein großer Task vielleicht auch eher nachts

Ronny

läuft, für irgendwelche Sachen, dann,

Ronny

und da ich auch keine Userlast habe,

Ronny

und das wird allgemein, äh, sehr stark

Ronny

als Overkill angesehen dazu, wie Dominik

Ronny

gerade schon gesagt hat, viele Leute fürchten auf Celery

Ronny

für, aus verschiedenen Gründen.

Ronny

Ähm.

Dominik

Das wird oft kaputt auch eingestellt, verhält sich komisch, aber vielleicht,

Dominik

also ist die Frage, ob es an Celery liegt oder daran, dass

Dominik

Async halt ein bisschen schwieriger ist?

Jochen

Also, da, da, da würde ich gerne noch mal

Jochen

kurz eine Begriffsklärung machen, weil

Jochen

viele sagen ja, Async, ja, und ich höre

Jochen

auch immer, wenn von Async die Rede

Jochen

ist, dass dann Leute sagen so,

Jochen

das, das merke ich dann irgendwie

Jochen

nach einer gewissen Zeit, dass Leute eigentlich sowas wie Celery

Jochen

meinen. Mhm. Aber das hat ja

Jochen

jetzt mit, mit, zum Beispiel, mit, äh,

Jochen

Async.io oder so, damit überhaupt

Jochen

gar nichts zu tun ist, das ist ganz anderes. Ja, also,

Dominik

Celery ist ein eigener Worker-Prozess, wenn ich dich

Dominik

verstehe, der halt einfach Tastarbeite

Dominik

zu einer bestimmten Zeit hat, die halt in der Liste stehen,

Dominik

und dann also diese Queue, äh, leert.

Jochen

Ja, du hast so eine Anzahl von, von Workern, und

Jochen

du hast halt, äh, irgendwie, ähm,

Jochen

genau ein Ding,

Jochen

das halt eventuell auf so einer Queue drauf sitzt,

Jochen

und dann verteilt es halt Jobs an diese Worker,

Jochen

und, äh, die machen dann halt Dinge und

Jochen

schreiben ihre, äh, Resultate wieder irgendwo hin.

Jochen

Mhm. Ja. Und, ähm,

Dominik

genau. Ich glaube, warum die Leute denken, dass es Async ist, weil das halt

Dominik

meistens, wie schon gleich gesagt, nicht im Main-Prozess

Dominik

läuft, obwohl man das auch machen kann, du kannst ja mit Django

Dominik

mitstarten oder so. Mhm. Ähm, aber die Frage

Dominik

ist auch da, was das halt heißt, also, weil,

Dominik

äh, Jochen weiß das bestimmt besser,

Dominik

weil es ja irgendwie verschiedene Event-Queues, die man

Dominik

nutzen kann, G-Event oder Event,

Jochen

irgendwas. Nee, nee, gar nicht, damit hat es

Jochen

überhaupt nichts zu tun, also mit G-Event oder sowas hat es

Jochen

überhaupt nichts zu tun. G-Event ist sowas wie Async.io,

Dominik

ganz anderes. Aber kann man machen, also wenn man das mit Django

Dominik

selber macht, dann muss man sich überlegen, welche da benutzt

Jochen

wird? Ja, aber nicht, also nicht sowas wie

Jochen

G-Event oder auch nicht sowas wie Async.io,

Jochen

gar nicht. Also, das ist einfach was ganz anderes.

Jochen

Das, äh, ist auch nicht, äh, eine Geschichte,

Jochen

die im gleichen Prozess normalerweise stattfindet, sondern

Jochen

du hast halt tatsächlich andere Prozesse.

Dominik

Ja, wenn man die hat, genau, wenn man die

Dominik

andere Prozesse hat, dann schon. Anders geht es

Dominik

nicht. Äh,

Dominik

okay. Also,

Jochen

genau, anders geht, anders, jedenfalls

Jochen

nicht, dass ich wüsste, dass das irgendwie anders gehen würde,

Jochen

weil, wie soll das funktionieren, wenn du halt

Jochen

jetzt irgendwie, äh, keine Ahnung,

Jochen

in dem Reg, äh, also, nehmen wir an,

Jochen

du,

Jochen

du stößt halt an in einem

Jochen

Request, also, du hast halt irgendwie einen Button, da steht drauf

Jochen

Send E-Mail, drückst du auf E-Mail

Jochen

und wie soll das jetzt gehen,

Jochen

dass dann eine E-Mail,

Jochen

ja, so, vielleicht geht es tatsächlich

Jochen

irgendwie, aber das ist alles sehr hässlich, also,

Jochen

äh, nee, du willst eigentlich

Jochen

ein Task dafür starten, der ganz woanders

Dominik

ist. Du hast recht, du willst das auf jeden Fall, da würde ich

Dominik

dir auf jeden Fall zustimmen, aber ich glaube nicht, dass du mit

Dominik

Definitiv. Ja, also, aber diese beiden Dinge haben

Jochen

eigentlich nichts miteinander zu tun, auch wenn man das eine für das andere

Jochen

vielleicht so halb irgendwie verwenden kann, aber

Jochen

nee, das ist eigentlich was ganz anderes.

Jochen

Wie gesagt, es ist halt,

Ronny

es ist halt, also, die, wenn du dir,

Ronny

wenn du quasi auf den Main Thread schaust,

Ronny

dann läuft es halt irgendwie nicht da drin,

Ronny

von daher liegt es halt nahe, das irgendwie asynchron

Ronny

zu nennen, auch wenn das mit dem Async,

Ronny

mit dem Python Async natürlich nichts zu tun hat,

Ronny

technisch. Ja.

Jochen

Genau, aber es

Jochen

läuft halt nicht irgendwie Async,

Jochen

sondern, oder in einem anderen Thread, sondern es läuft

Jochen

in einem anderen Prozess. Ja. Also, hat überhaupt gar

Jochen

nichts mehr mit dem Ding zu tun, mit dem

Jochen

Interpreter da läuft, also,

Jochen

ähm, ja, äh, genau.

Ronny

Genau, und insgesamt, das

Ronny

Celery Setup ist halt auch, äh, relativ,

Ronny

es ist halt, da, da schießt man wirklich schon, äh,

Ronny

auf, äh, also mit sehr großen

Ronny

Kanonen. Ja. Weil ja meistens man dann mehrere

Ronny

Worker hat, man hat einen Beat, der, der für,

Ronny

für Scheduling, also der im Endeffekt diesen

Ronny

Contab dann, dann ersetzt. Ja. Ähm,

Ronny

dann gibt es noch dieses Monitoring Tool Flower,

Ronny

ähm, was so mittelgut

Ronny

funktioniert und eher schlecht als recht,

Ronny

meiner Meinung nach, gewartet ist.

Ronny

Ähm, nichtsdestotrotz, wenn man mal irgendwie reingucken möchte,

Ronny

hilft es schon. Dazu, das kommt halt noch,

Ronny

dass man, wie gesagt, meistens halt dann diesen, äh,

Ronny

diesen Message Broker, ähm,

Ronny

braucht, der halt dann meistens ein

Ronny

Redis oder ein Revitim Queue oder

Ronny

ein Derivat davon ist. Und das ist halt

Ronny

für viele Projekte, vor allem am Anfang

Ronny

ist das halt enormer, ist das ein enormer Setup

Ronny

Aufwand. Wer das erste Mal in seinem Leben

Ronny

Celery, ähm, einrichten muss,

Ronny

ähm, der wird daran keinen Spaß haben.

Dominik

Ja. Nicht, weil, wenn du halt zum Beispiel auf das Redis

Dominik

sonst nichts anderes benutzt oder sowas, das läuft halt

Dominik

halt die ganze Zeit rum, so irgendwie. Genau. Ja.

Ronny

Und es, es bläht das Setup halt enorm

Ronny

auf und es ist jetzt halt seit, seit

Ronny

scheinbar auch Jahren ist es halt irgendwie allen bewusst,

Ronny

dass es halt schon cool wäre, wenn Django da selber was

Ronny

könnte und man halt eben nicht mit,

Ronny

ähm, da, ne, mit, mit Celery

Ronny

kommen muss. Wie gesagt, die Popularität von

Ronny

Django Queue oder Q2, ähm,

Ronny

wie das, äh, wie der Nachfolger davon heißt,

Ronny

ähm, der ist ja tatsächlich jetzt auch nicht

Ronny

aus der Welt, weil der im Endeffekt wirklich sehr, sehr

Ronny

leichtgewichtig einfach nur halt

Ronny

Dinge irgendwann außerhalb in einem

Ronny

anderen Prozess abarbeitet. Und

Ronny

die Idee von Jack Howard ist jetzt,

Ronny

ähm, das wirklich in Django zu integrieren.

Ronny

Er hat erst mal ein Package gemacht, wie man das halt

Ronny

optimalerweise auch so macht, dass Leute es auch separat testen

Ronny

können. Und, ähm,

Ronny

das Ganze hat er vorgestellt.

Ronny

Das war, ähm, ich weiß

Ronny

nicht, ob es wirklich eine Keynote war, aber es war

Ronny

auf jeden Fall de facto eine Keynote. Ich glaube, das

Ronny

war das, was die Leute, wo die Leute am meisten und am heißesten

Ronny

drauf waren. Ähm,

Ronny

und das ist sehr spannend, weil, ähm,

Ronny

ich tatsächlich auch bei mir in meinen diversen Projekten

Ronny

glaube ich auch einfach aktiv zurückbauen würde,

Ronny

ähm, weil ich einfach

Ronny

happy damit wäre,

Ronny

ähm, und aus der Celery Setup

Ronny

in den allermeisten Fällen verzichten kann.

Ronny

Es gibt jetzt wirklich Cases, wo man sagt, okay,

Ronny

wir machen so viele, wir machen so komplizierte Dinge.

Ronny

Das macht natürlich Sinn, da was

Ronny

Explizites zu haben. Nur, wie immer, es macht

Ronny

halt vor allem, wenn man jetzt auf ein Budget

Ronny

achtet, ähm, macht

Ronny

das natürlich schon Sinn, ähm,

Ronny

da erst mal mit einer einfachen Lösung anzufangen.

Ronny

Einer einfachen, soliden Lösung. Billig und

Ronny

schnell rächt sich meistens irgendwann.

Ronny

Ähm, genau.

Ronny

Was übrigens auch ganz interessant war,

Ronny

ähm, ich hab, äh, der, der

Ronny

Talk von Carlton Gibson ging im Endeffekt

Ronny

um mal wieder, HTMX ist super

Ronny

und mit Alpine.js kann man zusammen coole

Ronny

Dinge machen. Ja. Und sein Treiber

Ronny

davon war, dass er halt sagt, dass

Ronny

jetzt, wo wir in einer Zeit leben, wo die Zinsen

Ronny

seit langer Zeit wieder ein bisschen höher

Ronny

sind, Venture Capital deutlich, äh,

Ronny

deutlich, deutlich seltener geworden

Ronny

ist und deutlich kleinere, in deutlich

Ronny

kleinere Mengen vergeben wird. Und dass

Ronny

deshalb, ähm, dieses

Ronny

ich hab ein Startup und ich möchte irgendwas ausprobieren,

Ronny

dass die einfach mit viel weniger Geld die

Ronny

Sachen bauen müssen. Und das ist halt nicht so, wir bauen

Ronny

jetzt die in der perfekten Welt, sondern es muss schnell gehen,

Ronny

es muss, es muss irgendwie solide sein,

Ronny

aber es muss halt vor allem effizient sein.

Ronny

Und dass er deshalb nochmal den HTMX-Tag verkauft hat,

Ronny

was ich persönlich auch absolut unterschreiben würde.

Ronny

Und das Interessante ist halt, dass

Ronny

ich zum Beispiel hab jetzt noch nie,

Ronny

ich mein, ich hab an ein paar Startup-Projekten mitgearbeitet,

Ronny

aber jetzt nicht mit riesigem Venture Capital, das ist halt

Ronny

eher so in deutschen Scales gewesen.

Jochen

Ja, genau, da gibt's das auch nicht so.

Ronny

Und es war immer für uns, also im

Ronny

Agenturbusiness, wir haben halt ein Budget und das ist

Ronny

eigentlich eher tendenziell zu klein

Ronny

als zu groß. Ja, wie immer. Und, ähm,

Ronny

das ist einfach, das ist interessant,

Ronny

weil das, ja,

Ronny

ich mein, wird ihm vorher auch schon klar gewesen,

Ronny

aber das nochmal so auf den Punkt zu bringen

Ronny

und dann zu sagen, ja, genauso sehe ich das auch,

Ronny

weil, ja, natürlich kannst du, wenn du mit

Ronny

React oder Vue, kannst du

Ronny

ausgefallene Referenzen bauen, kannst du mehr Dinge

Ronny

tun. Die Frage ist, brauchst

Ronny

du das und schaffst du das in dem

Ronny

Geld, das du hast? Und

Ronny

das, finde ich, ist halt so der spannende USP da dran.

Ronny

Ähm, klar, wenn man erst mal

Ronny

seine komplette Applikation mit HTMX

Ronny

ohne API gebaut hat und man kommt ein und sagt, ich möchte

Ronny

das jetzt alles anders haben, ähm, das ist natürlich

Ronny

auch nochmal teuer. Also, ich glaub, man muss da auch ein bisschen

Ronny

in die, also, nicht nur sagen, wie viel Geld haben wir

Ronny

jetzt, sondern wo geht das Ganze hin?

Ronny

Ähm, nichtsdestotrotz persönlich finde ich das auch

Ronny

sehr spannend. Der Talk war auch sehr cool

Ronny

und sehr energetisch, wie

Ronny

Carlton Gibson halt immer so ist. Ähm,

Ronny

genau, war, war echt, äh, echt

Ronny

super spannend.

Ronny

Ähm, war, spielt,

Jochen

ich glaub, dieses Django-Template-Partials

Jochen

kommt halt auch irgendwie jetzt, ich weiß

Jochen

rein, ich weiß nicht, ob das schon bei

Jochen

5.1 war oder doch eher 5.2, wahrscheinlich eher

Jochen

5.2, nehme ich mal an, ne? Ähm,

Jochen

äh, oder hat er auch über

Jochen

dieses, äh, Neapolit, äh,

Jochen

äh, Neapolitan-Ring gesprochen,

Jochen

was er da, das ist ja auch so ein

Dominik

neue Quatsch-Views oder so. Ja, genau.

Ronny

Also, das dreht sich alles um diese

Ronny

Idee des, ähm,

Ronny

Locality of Behavior. Ja. Ähm, Carlton

Ronny

Gibson hat jetzt vor nicht allzu langer Zeit einen,

Ronny

einen Newsletter angefangen, Stack Report

Ronny

heißt der, wo er einmal im Monat

Ronny

sehr ausführlich zu einem Thema schreibt. Ich

Ronny

hab den abonniert, das kostet, glaub ich, irgendwie 5

Ronny

Euro oder sowas. Ähm, bis jetzt hat

Ronny

sich's, also, ich glaub, jetzt gibt's erst seit 2 oder

Ronny

3 Monaten, bis jetzt hat sich's gelohnt, also ich mach

Ronny

da gerne auch nochmal Werbung für ihn, unbezahlt. Ah, ja,

Ronny

ja, ja. Ähm, das find ich echt, echt cool.

Ronny

Ähm, äh, also es war echt

Ronny

interessant, er hat jetzt über diverse Dinge

Ronny

da geschrieben und es hat in dem aktuellen von

Ronny

diesem Monat ging's halt um Locality of Behavior

Ronny

und, ähm, er versucht halt im Endeffekt

Ronny

das Konzept zu verkaufen, also er sagt

Ronny

halt, dass wenn halt alles, was du brauchst, in

Ronny

einer Datei steht, ist es halt einfacher zu verstehen.

Ronny

Und er, er argumentiert

Ronny

nicht, dass man alle guten

Ronny

Principles, die man gelernt hat, sofort wegwirft,

Ronny

sondern dass man halt dieses Premature Optimizing

Ronny

aufhört, dass man sagt, okay, ich

Ronny

mache, ich fang jetzt schon mit, weiß ich

Ronny

nicht, die, die, die an und mach das alles perfekt

Ronny

in vielen Dateien, ein Neueinsteiger in dem

Ronny

Projekt hat keine, keine Chance zu verstehen, was eigentlich

Ronny

passiert, sondern fangt erstmal klein an

Ronny

und refactored, wenn die's wirklich braucht.

Ronny

Ähm, weil viel von dem, ah ja, ich brauch's

Ronny

nochmal, ich mach das mal irgendwie woanders hin,

Ronny

kommt dann nachher mit, naja, ist

Ronny

doch irgendwie anders geworden, war doch nicht so, wie ich's

Ronny

mir gedacht hab und dann hat man halt immer diese doppelte

Ronny

Refactoring-Schleife und dieses

Ronny

Django Template Views ist halt die Idee,

Ronny

äh, nicht, Django Template Partials,

Ronny

Partials, sorry, Partials,

Ronny

dass man halt wirklich sagen kann, okay, ich

Ronny

diesen Block kann ich jetzt mit HTMX neu

Ronny

rendern lassen, der ist aber trotzdem noch in der

Ronny

großen Datei und ich muss es nicht zerpflücken, wie man's

Ronny

halt vorher, also Stand jetzt mit

Ronny

Vanilla Django macht, ähm,

Ronny

und, ähm, diese Neapolitan

Ronny

Crud Views ist auch die Idee, dass du halt wirklich mehr

Ronny

Sachen in einer, an einer Stelle zusammen

Jochen

hast. Dass man im Grunde eine, eine Klasse hat, wo die

Jochen

ganzen, also Get Post und sonst wie Dinge,

Jochen

die da passieren, halt alle drin sind, äh,

Jochen

genau, ja. Ich persönlich

Jochen

finde, dass, äh, Locality of Behavior ist, glaub ich,

Ronny

eine, eine gute Sache, ich mein, das geht auch so ein bisschen nach

Ronny

Jagni, also You Ain't Gonna Need It,

Ronny

ähm, dass man halt nicht, dass man erst mal überlegt,

Ronny

so muss ich jetzt wirklich anfangen,

Ronny

alles so hoch zu skalieren, wie es unbedingt

Ronny

notwendig ist. Nichtsdestotrotz,

Ronny

wenn ich halt in einem Projekt, wenn ich weiß, ein Projekt

Ronny

wird eine gewisse Größe erreichen,

Ronny

die Dinge zu tun, die ich jetzt schon

Ronny

weiß, die sinnvoll sind, ähm,

Ronny

glaube ich, dass man sich da dann andererseits auch

Ronny

wieder ein paar Refactoring-Zyklen spart,

Ronny

aber ich glaube, generell ist man schon sehr

Ronny

prone, als Entwickler over zu

Ronny

ingenieren und ich glaube, das sich im Kopf zu behalten,

Ronny

so muss ich das jetzt wirklich tun.

Dominik

Ja, also so ein bisschen so ein Trade-off, ne, mit KISS oder so was

Dominik

und schon simpel und dass du irgendwie tatsächlich

Dominik

versuchst, vielleicht, also was ich zum Beispiel

Dominik

finde, ist, dass wenn halt zu viele Sachen in einer

Dominik

Datei drinstehen, selbst wenn das irgendwie am Anfang

Dominik

überblicklich ist, wird es halt auch dann wieder hässlich.

Dominik

Und wenn eine gute Modulstruktur

Dominik

darunter liegt einfach, also einfach nur vom

Dominik

Namespacing her, hilft das fast

Dominik

am meisten, finde ich. Ja.

Dominik

Ähm, was dann auch gar nicht so schwer zu verstehen

Dominik

macht, wenn das halt alles in einem Directory liegt, zum Beispiel,

Dominik

dann ist das schon vielleicht ein bisschen näher dran. Aber wenn das

Dominik

Directory dann groß wird, dann ist das wieder ein Problem.

Dominik

Ne, das ist so, ja.

Dominik

Oh, ich würde ganz kurz

Jochen

nur einmal kurz einwerfen

Jochen

nochmal zu dieser Task-Geschichte,

Jochen

was ich halt oft sehe, was ich finde,

Jochen

was man vermeiden sollte,

Jochen

wenn Leute sowas machen

Jochen

und das halt irgendwie, weil oft

Jochen

macht man das dann ja, man braucht's

Jochen

schon meistens, aber dann doch nicht

Jochen

irgendwie so dauernd, dass man da,

Jochen

dass alle Leute da irgendwie

Jochen

viel Erfahrung mit hätten.

Jochen

Und was ich jetzt schon häufiger gesehen

Jochen

habe und was in der Praxis dann so

Jochen

zusätzlich zu diesem ganzen

Jochen

Infrastruktur-Ding auch nochmal ordentlich Schmerzen macht,

Jochen

ist halt, wenn Leute anfangen,

Jochen

irgendwie so ganz Kaskaden von Tasks

Jochen

irgendwie zu schreiben,

Jochen

so gerade bei Celery ist das dann halt auch

Jochen

sehr einfach, ne, und dann hat man mal da Abhängigkeiten

Jochen

dazwischen und dann, und Leuten

Jochen

ist gar nicht so bewusst, dass es bedeutet, ja,

Jochen

es geht jedes Mal über eine Prozessgrenze, dann wird da

Jochen

irgendwie wieder irgendwas wieder realisiert, dann muss der

Jochen

Kanzlerrahmen wieder so raussehen, wie das realisiert wird,

Jochen

dann geht's irgendwo zwischendurch schief und dann hast du halt

Jochen

irgendwie so ein

Jochen

explodiertes Gedärm irgendwie, was da rumliegt

Jochen

und was das halt so steht.

Jochen

Und, also was ich nur empfehlen kann,

Jochen

ist, man macht halt eine Funktion oder so

Jochen

eine Methode an irgendeinem Modell oder so,

Jochen

wo man halt das, was man tun möchte, halt reinschreibt

Jochen

und dann testet man das ganz normal, synchron,

Jochen

irgendwie, wie man

Jochen

Sachen halt so testet und dann

Jochen

sagt man in einem Celery-Task

Jochen

eigentlich nur, okay, man ruft halt dieses Ding auf,

Jochen

fertig. Wie man auch

Jochen

im Vue schreiben würde, möglichst schlank

Jochen

und eigentlich nur die Dinge

Jochen

komponieren, denn wirklich da implementieren.

Jochen

Ja, und keine Logik in die

Jochen

Tasks packen, sondern

Jochen

von den Tasks, also in den eigentlichen

Jochen

Celery-Tasks immer nur irgendwie Logik,

Jochen

die irgendwo anders ist, aufrufen.

Jochen

Aber wenn du halt Logik hast, oder am besten Logik verteilt über mehrere Tasks,

Jochen

dann passieren scharröckelige

Jochen

Dinge unter Umständen und

Jochen

ja. Absolut.

Jochen

Genau, das war nur so ein kurzer Einwurf.

Jochen

Ich hab da noch

Dominik

so ein tolles Thread zu

Dominik

im Chaos Social,

Dominik

den du auch, wo du den Link vorhin geteilt hast,

Dominik

der sehr interessant war.

Dominik

Einige coole Leute, unter anderem

Dominik

Carlton Gibson selber und der Hüneck und so.

Jochen

Ja, Hüneck, genau, und diverse Leute,

Jochen

da gab's ein Thread zu,

Jochen

was braucht man jetzt bei Background-Tasks eigentlich alles?

Jochen

Ja. Und was sind da die Anforderungen

Jochen

genau? Und was ist auch in der Praxis?

Dominik

Neugeschrieben oder anders implementiert, genau. Und auch alle haben sich

Dominik

über Celery beschwert aus Gründen.

Jochen

Ja, ich kann das mal, ich kann, ja genau, das Ding

Jochen

verlinke ich auch mal. Ja, Fettyverse

Jochen

ist halt zur Zeit, also wenn er noch nicht ist,

Jochen

da sind halt alle,

Dominik

also. Es steht tatsächlich auf meiner Liste und ich lese

Dominik

halt immer so ein bisschen mit, aber naja.

Jochen

Ja, also da ist, also das fühlt sich an

Jochen

wie so Twitter früher, so

Jochen

ein bisschen Blümchenwiese-mäßig.

Jochen

Alle Leute sind, oder viele, viele

Jochen

der Leute, die man so kennt, sind halt da.

Jochen

Und man kann sich mit denen

Jochen

einfach so unterhalten und so, ja.

Jochen

Ja, cool. Genau.

Jochen

Ja.

Jochen

Ja, ist ein interessantes Thema.

Ronny

Genau. Und ich bin, was ich auch

Ronny

interessant fand, die,

Ronny

ich hab mit auf der Konferenz noch ein Wort

Ronny

mit dem Creator da

Ronny

gewechselt und er meinte

Ronny

auch, dass früher wurde,

Ronny

also wenn ich's richtig verstanden hab, ich will ihm jetzt keine Worte

Ronny

in den Mund legen, aber wenn ich's richtig verstanden hab, meint er,

Ronny

dass früher bei Django eher so die Idee war,

Ronny

alles, was nach Core kommt, muss

Ronny

mehr oder weniger so die

Ronny

eierlegende Wollmilchsau, 110%-Lösung

Ronny

sein, weil das ist ja Django, das muss ja so.

Ronny

Und jetzt war halt die Idee wirklich zu

Ronny

sagen, naja, aber lass uns doch erst mal mit was anfangen,

Ronny

was halt alleine steht, also dieser MVP-Gedanke.

Ronny

Und natürlich kann man noch 400

Ronny

Sachen nach und dazu bauen, aber

Ronny

braucht man die wirklich?

Ronny

Will das die Crowd

Ronny

so? Und dass die jetzt wirklich anfangen

Ronny

und versuchen,

Ronny

ja, also wirklich mit einem kleinen,

Ronny

mit einem kleinen Inkrement zu shippen,

Ronny

dass das halt stehen kann, das laufen

Ronny

kann und alles, was halt danach

Ronny

kommt, einfach zu gucken, wie reagieren

Ronny

die Leute, so was für Sachen werden wirklich angefragt.

Ronny

Das finde ich halt sehr interessant, weil ich glaube, das ist

Ronny

einfach so ein generelles Ding, wenn man irgendwie

Ronny

in der Softwareentwicklung ist, dieser MVP-Gedanke ist so,

Ronny

so, so zentral

Ronny

und da kann man so viel falsch machen und so viel Geld

Ronny

und Projekte und Chaos verlieren,

Ronny

wenn man halt nicht

Ronny

dem MVP denkt.

Ronny

Weil schöner geht halt immer

Ronny

und ja,

Ronny

genau.

Jochen

Ja, und genau, bei

Jochen

Ruby on Rails ist halt auch

Jochen

diese Background-House-Geschichte schon

Jochen

seit Ewigkeiten drin und

Jochen

das war halt mal eine der Geschichten, die in Django halt,

Jochen

ja, wo man da halt irgendwie dann immer sagen

Jochen

musste, ja, nimm halt Terri,

Jochen

ja, es tut weh, nimm's halt trotzdem,

Jochen

das ist das, was es gibt.

Jochen

Ja, und

Jochen

das, wenn sich das jetzt ändert,

Jochen

dann ist auf jeden Fall ein Pain-Point irgendwie

Jochen

auch weniger.

Jochen

Ja, also die haben gesagt,

Ronny

dass wenn es gut läuft, landet das mit 5.2,

Ronny

du weißt, wann 5.2 rauskommt,

Ronny

hattest du gesagt?

Ronny

April, ja.

Ronny

Genau. Dann wird dann neben meinem

Ronny

kleinen Testhelper das zweite

Ronny

große Ding werden dann die Background-House.

Ronny

Oh. Sehr gut, sehr gut.

Ronny

Ähm,

Ronny

genau.

Jochen

Ja, also, HTMX war diesmal

Jochen

auf der DjangoCon also auch quasi wieder so ein,

Jochen

es ist ja die letzten Male eigentlich immer ein großes Thema gewesen.

Jochen

Genau.

Ronny

Ja, ich mein, HTMX ist halt,

Ronny

ist halt im Endeffekt die Silver Bullet mit,

Ronny

der sehr, sehr viele Leute dann hat im Existenzbereich.

Ronny

vermeiden können.

Ronny

HTMLX-JavaScript vermeiden können, sorry.

Ronny

Was natürlich so ein bisschen

Ronny

ein Gänsefüßchen ist, aber natürlich immer noch ein bisschen

Ronny

JavaScript braucht und das auch selber mit JavaScript geschrieben ist.

Ronny

Nichtsdestotrotz

Ronny

vermeidet das halt, dass man in Projekten

Ronny

JavaScript verwenden muss,

Ronny

was natürlich für viele tendenziell eher

Ronny

Backendler, wie ja Django aktuell

Ronny

verwendet wird, weil es ja auch ein sehr data-driven Framework ist.

Ronny

Das ist

Ronny

natürlich sehr angenehm, da zähle ich mich auch dazu.

Ronny

Ich habe es auch irgendwie nie geschafft,

Ronny

mich ernsthaft mit einem

Ronny

JavaScript-Framework zu beschäftigen und

Ronny

ich

Ronny

bin auch in meinem Beruf immer wieder damit konfrontiert,

Ronny

bei den Entscheidungen, wenn man

Ronny

ein neues Projekt startet, was nehmen wir jetzt?

Ronny

Wir haben uns jetzt tatsächlich bei dem letzten Projekt, das gestartet ist,

Ronny

auch aktiv für HTMLX entschieden.

Ronny

Auch mit einem Team, die tendenziell

Ronny

eher JavaScript-Front-Endy

Ronny

sind.

Ronny

Oh, ja, das ist natürlich interessant.

Ronny

Und weil wir einfach auch

Ronny

gesagt haben, wir glauben, es ist immer halt, dass

Ronny

das Projekt ist halt so eine ganz klassische

Ronny

Backend-Applikation, man hat viele Listen, man hat viele

Ronny

Crud-Views, es gibt zwei, drei, vier

Ronny

Sachen, die so ein bisschen ausgefallen

Ronny

sind, aber auch nicht so wirklich. Also

Ronny

da hat man mal so ein Drag-and-Drop-Element oder sowas

Ronny

und wir sind einfach der Meinung,

Ronny

dass man das dafür

Ronny

halt HTMLX wirklich gut funktioniert,

Ronny

weil das ist das, was Django wirklich gut kann.

Ronny

Und

Ronny

das Projekt ist es auch nicht

Ronny

etwas, wo man sagt, das ist jetzt irgendwie,

Ronny

wenn die Firma durch die

Ronny

Decke geht, dann so und so, sondern das

Ronny

wird immer eine Backend-Applikation bleiben.

Ronny

Logischerweise wird die wachsen, wenn die Firma wächst,

Ronny

etc.

Ronny

Aber das wirkt

Ronny

einfach nach dem perfekten

Ronny

Hammer für diesen Nagel, was

Ronny

nicht heißt, dass wenn man jetzt sagt, ich möchte

Ronny

keine Ahnung, das nächste Instagram oder

Ronny

sowas bauen, dass das vielleicht, wenn man schon

Ronny

die Kohle dafür hat am Anfang, dass das

Ronny

vielleicht nicht unbedingt die beste Wahl ist.

Ronny

Geht wahrscheinlich auch alles trotzdem,

Ronny

aber ich glaube, umso mehr

Ronny

sage ich mal, wirkliche Endnutzer,

Ronny

also jetzt nicht Mitarbeiter der Firma oder Administratoren,

Ronny

sondern wirkliche Endnutzer, man auf der Plattform hat

Ronny

wahrscheinlich schwingt da dann immer so die

Ronny

die Notwendigkeit für ein

Ronny

richtiges, volles Frontend-Framework, wo man

Ronny

das ja auch in Gänzefüßen sehen muss, React und Vue sind ja auch

Ronny

keine Frontend-Libraries,

Ronny

schwingt dann doch eher so das Pendel in

Ronny

diese Richtung.

Ronny

Und ich glaube, diese Frage kann man halt wie

Ronny

jede einzelne Tech-Frage damit beantworten.

Ronny

Es kommt drauf an.

Ronny

Nichtsdestotrotz wird das natürlich hart gefeiert

Ronny

in der Community, weil, wie das auch bei mir so ist,

Ronny

das ist es halt, ich meine, wie gesagt, ich bin seit

Ronny

zwölf Jahren dabei, das erste Mal,

Ronny

dass man, dass ich jetzt wirklich

Ronny

ein Werkzeug bekomme,

Ronny

das vernünftig funktioniert.

Ronny

Und das, was man früher so immer gemacht hat,

Ronny

wie JQuery und sowas, definiere ich

Ronny

nicht als vernünftig funktionieren.

Jochen

Ja, das hat nicht, also es ging,

Jochen

also man kommt damit erstaunlich, aber das hat nie wirklich

Jochen

gut funktioniert, das ist richtig, ja.

Jochen

Wobei ich

Jochen

eine Sache hinzufügen würde, etwas, was

Jochen

ich in letzter Zeit auch häufiger mache und wo ich auch

Jochen

denke, oh, das ist auch alles gar nicht schlecht und es geht in die

Jochen

richtige Richtung, sind halt so Web-Components,

Jochen

das ist eigentlich auch ganz nett, es ist,

Jochen

da muss man dann halt JavaScript schreiben, das ist halt

Jochen

so ein bisschen doof, aber

Jochen

man kann halt irgendwie, das hält

Jochen

sich dann auch nicht so gut.

Jochen

Man kann halt in Grenzen, also, und

Jochen

man weiß halt, also, das ist, habe ich

Jochen

letztens wieder erlebt und es tut jedes Mal weh,

Jochen

irgendwie, größere

Jochen

Projekte, die man lange nicht angefasst hat, irgendwie,

Jochen

das ist immer schmerzhaft, also

Jochen

wenn man jetzt irgendwie,

Jochen

ja, da so, zum Beispiel, das war

Jochen

jetzt mein View-Projekt, es ist halt,

Jochen

irgendwas geht nicht mehr

Jochen

und es dauert immer, bis man rausgefunden hat,

Jochen

was denn da jetzt eigentlich das Problem ist und bis das

Jochen

alles wieder rund läuft und dann

Jochen

vergehen vielleicht auch nochmal ein paar Tage oder

Jochen

Wochen, bis man wirklich alles gefunden hat, was vielleicht nicht

Jochen

mehr ging, weil manchmal war es, es ist nicht so offensichtlich

Jochen

und das ist einfach total nervtötend,

Jochen

also, und

Jochen

genau, das Problem hat man mit Web-Components

Jochen

halt auch nicht, weil das ist halt Standard und

Jochen

das, wenn das jetzt funktioniert,

Jochen

funktioniert das in 10 Jahren

Jochen

halt auch noch ganz genauso und

Jochen

ja.

Ronny

Tatsächlich haben wir zu dem Projekt mal Django-Components

Ronny

ausprobiert, das ist ja auch eine von diesen vielen

Ronny

Ansätzen, da gibt es auch Django-Slippers und wie die alle heißen,

Ronny

um, um,

Dominik

das letzte, Django-Slippers,

Dominik

um,

Dominik

um,

Dominik

im Endeffekt dieses Komponentendenken

Ronny

in die Django-Welt zu bringen,

Ronny

weil de facto die Django-Template-Welt

Ronny

ist ja immer noch, wie sie vor 15 Jahren mal

Ronny

irgendwann angefangen hat und da zu

Ronny

überlegen, dass man Komponenten bauen möchte,

Ronny

vor allem in so einer Kombination mit Tailwind, die ja

Ronny

dann eher diese Utility-Based-Klasse,

Ronny

also ein normales Tailwind-Diff

Ronny

hat noch 10, 15 Klassen,

Ronny

das eskaliert

Ronny

ziemlich hart. Ich finde es gut,

Ronny

aber wie gesagt, das ist nicht

Ronny

schön anzugucken und von daher die Sachen eher

Ronny

zu kapseln und zu sagen, ich habe jetzt nicht, wie bei

Ronny

Bootstrap zum Beispiel früher,

Ronny

ich habe hier eine Button-Klasse und dann sieht die da Button halt so aus,

Ronny

wenn ich was überschreiben muss, bin ich halt

Ronny

arm dran, dann wird es schwierig,

Ronny

sondern dass man halt wirklich die Sachen individuell

Ronny

mit diesen Klassen halt definieren kann,

Ronny

ohne halt die ganze CSS-Magie dahinter 100%

Ronny

verstehen zu müssen und

Ronny

da diese Komponenten in der Django-Welt

Ronny

zu machen, klingt super interessant.

Ronny

Das konnte man vorher auch schon mit Includes machen.

Dominik

Ja genau, mit Includes, ja. Es gibt auch eine neue Version

Dominik

von Includes irgendwie, die das so ein bisschen

Dominik

zwischenspeichern können irgendwie auch.

Dominik

Ja, auf jeden Fall, da gibt es Packages,

Ronny

die explizit dafür da sind, um diese

Ronny

Frontend-Learnings auch in die Django-Welt

Ronny

zu bringen. Wir haben uns jetzt für Django-Components entschieden.

Ronny

Das scheint auch okay gut zu

Ronny

funktionieren. Habe auch von einem Freund

Ronny

gehört, der das ausprobiert hat, der da meinte, dass er

Ronny

damit gut, der eigentlich auch sehr viel

Ronny

und gerne im Frontend gemacht hat, jetzt aber aus

Ronny

besagten Effizienzgründen halt gewechselt

Ronny

ist und

Ronny

genau, das

Ronny

ist auf jeden Fall eine interessante Sache. Also wer

Ronny

sich damit beschäftigt und halt ein

Ronny

Frontend bauen möchte, für das man sich in 2024

Ronny

nicht schämen muss, dann glaube ich,

Ronny

ist diese HTMX, AlpineJS und dann

Ronny

irgendwas an diesen Komponenten-Libraries, die sich gerade,

Ronny

die emergieren gerade alle. Also ich glaube, da gibt es noch nicht so

Ronny

diesen de facto Standard.

Ronny

Aber wenn man sich da so ein bisschen

Ronny

reinliest, da findet man relativ,

Ronny

also nicht viel, viel, aber da gibt es

Ronny

auf jeden Fall schon Inhalte und

Ronny

da kann man sich am Ende vielleicht auch irgendwas ausruhen.

Ronny

Das ist alles nicht so kompliziert,

Ronny

was einem gefällt.

Dominik

Habt ihr mal schon mal herumgespielt mit

Dominik

dem HTMX-Ding

Dominik

für Mobile?

Dominik

Also in einem Hypermedia

Dominik

Systems Buch das letzte

Dominik

Kapitel, wo es dann

Dominik

darum geht, dass man das Ganze auch in Mobile einsetzen

Dominik

kann oder soll oder so.

Dominik

Als

Dominik

so

Dominik

Ja, so eine Art von XML-Endpunkt,

Dominik

die dann irgendwie gerendert werden

Dominik

kann von, ich glaube React war es

Dominik

tatsächlich, React Native. Ach so, ja.

Dominik

Und dann Apps hat auf dem

Dominik

Telefon, die dann diese einzelnen Komponenten

Dominik

halt mitziehen können, einfach

Dominik

von deinem normalen Endpunkt.

Jochen

Ja, klingt wild. Ich hab's noch nicht,

Jochen

nee, hab ich nicht angeguckt.

Jochen

Also ich hab auch für

Jochen

für so

Jochen

Mobile, finde ich, eigentlich sind die Webviews

Jochen

oder wie heißen die noch?

Jochen

Progressive Web Apps, genau.

Jochen

Ist eigentlich eine sehr, sehr schicke

Jochen

Geschichte. Geht auf iOS auch deutlich

Jochen

mehr inzwischen als früher. Wurden die nicht

Jochen

irgendwie gebannt? Nee.

Jochen

Ah ja, Apple hat da gedroht,

Jochen

aber das ist dann nicht passiert.

Jochen

Glücklicherweise. Ja, hat doch

Jochen

ein bisschen zu viel Gegenwind gegeben.

Jochen

Ja, und

Jochen

ich denke, dass man vieles, was

Jochen

halt man irgendwie

Jochen

vielleicht mit nativen Apps früher gemacht hat,

Jochen

auch mit, ja genau,

Jochen

Progressive Web Apps hinbekommt

Jochen

und

Jochen

ansonsten sind halt die Mobile

Jochen

Geschichten halt immer so eine komplizierte Geschichte, wenn man da

Jochen

wirklich eigene, ist halt, ich meine

Jochen

für manche Sachen, wenn man eh

Jochen

dafür ein Team hat und genug Geld,

Jochen

dann kann man schon machen. Also ich würde das tatsächlich irgendwie mal

Dominik

ausprobieren. Ich finde diesen Ansatz ganz cool.

Dominik

Ja, ausprobieren.

Dominik

Ja, für Mobile

Dominik

auszuprobieren, das klingt irgendwie super.

Dominik

Das ist der selbe Standard da und das selbe

Dominik

Prinzip. Ist jetzt eigentlich, glaube ich,

Ronny

eine ganz gute Überleitung zu dem nächsten

Ronny

Minithema, nämlich Lightning Talks.

Ronny

Wer es nicht kennt,

Ronny

die Lightning Talks, das ist bei

Ronny

den Django-Cons zumindest, ich war noch auf keiner anderen Konferenz,

Ronny

aber ich glaube, es gibt es auch an anderen Konferenzen,

Ronny

die ist jetzt am Ende des Tages

Ronny

fünf bis zehn Leute einen

Ronny

hart getimten fünf Minuten

Ronny

Maximal-Vortrag halten können bei

Ronny

irgendeinem Thema. Das heißt, die Vorbereitung ist

Ronny

sehr gering bis nicht vorhanden

Ronny

bei den Leuten. Aber das ist ja cool.

Dominik

Der coolste Vortrag, den ich gehört habe, war

Dominik

Fuck it. Zwei Minuten.

Ronny

Und die Idee

Ronny

dahinter ist einfach, genau das, was du

Ronny

gerade gesagt hast. Ey, ich habe dann im Buch dieses Kapitel gelesen,

Ronny

finde ich da halt spannend, habe ich noch nicht ausprobiert,

Ronny

wollte ich euch mal mitgeben. Oder was ich

Ronny

vorhin gemacht habe. Ey, es gibt Django Components, wer sich

Ronny

dafür interessiert, schau ich das mal an.

Ronny

Und da ist normalerweise die

Ronny

Informationsdichte sehr hoch

Ronny

und auch die Unterhaltungsdichte sehr hoch,

Ronny

weil natürlich Leute auch dann einfach mal einen Spaßvortrag machen

Ronny

oder irgendwas Absurdes aus ihrem

Ronny

Alltag erzählen.

Ronny

Kannst du dann Ukulele mitbringen?

Ronny

Genau. Und ich finde,

Ronny

wir haben jetzt das auch bei uns

Ronny

intern in unserer, also bei

Ronny

meiner Firma,

Ronny

bei den internen Barcamps

Ronny

so gemacht, dass wir auch einen expliziten

Ronny

Lighting Talk Blog haben, weil viel

Ronny

von so Content-Teilen

Ronny

und Wissensmanagement scheitert daran, dass die Leute

Ronny

sich wirklich aufraffen müssen, Sachen

Ronny

vorzubereiten, Sachen zu recherchieren. Es gibt gewisse

Ronny

Ansprüche, die Leute an sich haben. Es gibt vielleicht

Ronny

Erwartungshaltungen, die existieren

Ronny

mögen oder nicht existieren mögen. Aber so ein

Ronny

Lighting Talk gibt es das halt nicht. Du stellst dich

Ronny

da hin oder in dem Fall jetzt in der

Ronny

Post-Corona-Neuen-Moderne.

Ronny

Du sitzt dann hinter, vor deiner Webcam

Ronny

und teilst dann halt kurz deinen Browser oder deine

Ronny

zwei Slides und sagst, Leute, das habe ich

Ronny

gesehen, das habe ich gelernt voll gut

Ronny

oder auch voll kacke.

Ronny

Und das ist ein echt

Ronny

cooles Format, den man auch, wie gesagt, gut glaube ich

Ronny

in Firmen oder auf Meetups

Ronny

auch sehr gut, wir haben

Ronny

mal vor ein paar Monaten, ich glaube

Ronny

im Februar diesen Jahres, haben wir eine komplette

Ronny

Lighting Talk Session gemacht

Ronny

beim Django Meetup Köln hier

Ronny

und das ist echt ein

Ronny

cooles Format, was

Ronny

viele von den Problemen löst, die man

Ronny

sonst so hat, wenn man

Ronny

Content teilen möchte.

Dominik

Ja, ich finde auch, gerade in jedem Format, also das

Dominik

irgendwie für Konferenzen oder Barcamp oder was man

Dominik

auch immer hat, wo man zusammen arbeitet, ist dieses

Dominik

Lighting Camp, äh, Lighting Camp zeige ich schon,

Dominik

das Lighting Talk Format echt

Dominik

cool geeignet, um so ein bisschen

Dominik

lockere Atmosphäre reinzubringen, entweder

Dominik

am Ende eines Tages oder am Anfang von diesem

Dominik

wir teilen uns irgendwelche Sessions auf Dingen, so kurze

Dominik

Slots, selbst wenn es nur eine Viertelstunde ist,

Dominik

zwei Minuten oder eine halbe oder sowas, um

Dominik

so ein bisschen mit den Leuten so reinzukommen,

Dominik

das ist echt schön, ich glaube auch außerhalb vom Coding

Dominik

ehrlicherweise. Man muss halt, glaube ich, immer noch

Dominik

so auffassen, dass man halt wirklich hart guckt,

Dominik

dass die nicht überschritten werden, weil

Dominik

einige Leute dann ihr Co-Referat halten, dass dann doch ein bisschen länger

Dominik

wird. Ja, das

Dominik

nervt die meisten immer, glaube ich,

Dominik

aber ja. Und eine andere super

Ronny

Sache ist halt auch einfach mal ein Gefühl zu bekommen,

Ronny

ob man selber mal einen Vortrag halten möchte. Eingangs habe ich ja

Ronny

gesagt, das war echt eine richtig coole Erfahrung

Ronny

und ich habe auf der letzten

Ronny

Konferenz in Edinburgh

Ronny

habe ich auch einfach mal einen Lightning Talk gehalten,

Ronny

um mal zu sehen, um mal

Ronny

so den Fuß ins Wasser zu halten, wie ist das

Ronny

überhaupt so? Über was?

Ronny

Um den Fuß ins Wasser zu halten.

Dominik

Über was? Ach so. Über Füße ins Wasser halten, also kein

Dominik

Lightning Talk. Nein. Nur

Dominik

über Füße ins Wasser.

Dominik

Angeln mit den Zehen.

Dominik

Das war die Frage.

Dominik

Ich habe tatsächlich,

Ronny

keine Ahnung, ich habe dieses Jahr einen über

Ronny

meinen Django Migration Zero Package

Ronny

gehalten.

Ronny

Ich beantworte meine Frage aber mit diesem Jahr,

Ronny

weil ich es beim letzten Mal vergessen habe.

Ronny

Ist ganz cool, es ist ein Pattern, das hat sich

Ronny

2018 jemand ausgedacht. Wer schon mal mit

Ronny

Django Migrations gearbeitet hat und

Ronny

länger auf einem Projekt war, weiß, da sammeln sich ziemlich

Ronny

viele Migrations nach kürzester Zeit an.

Ronny

Diese Migrations, wenn man die volle

Ronny

Kontrolle über seine Datenbank hat,

Ronny

also zum Beispiel beim Package hat man das nicht, weil das installiert

Ronny

sich irgendjemand und dann macht irgendwer was damit.

Ronny

Das ist außerhalb der Macht,

Ronny

des Creators. Aber in so einer klassischen

Ronny

Applikation, die man baut, hat man eigentlich die volle

Ronny

Kontrolle über die Datenbanken. Dann ist irgendwann

Ronny

es auf dem letzten

Ronny

Produktivis-System angekommen und die Migrationen haben de facto

Ronny

eigentlich keinen Wert mehr, außer vielleicht einen historischen,

Ronny

der aber auch sehr relativ zu sehen ist,

Ronny

weil abgesehen von natürlich Custom-Datenmigration

Ronny

die ganzen Sachen auch im Git irgendwie, die ganzen

Ronny

Modeländerungen hinterlegt sind.

Ronny

Viele Migrationen führen dazu,

Ronny

dass die Tests langsamer laufen, dass die

Ronny

Test-Datenbank aufgebaut wird, weil

Ronny

oft ist es ja so, dass es ja nicht ist, man

Ronny

fügt immer was hinzu, sondern da kommt was hinzu,

Ronny

da kommt wieder was weg, dann habe ich was geändert, dann habe ich zum

Ronny

18. Mal irgendwas geändert. Und

Ronny

Django bietet dafür eine Möglichkeit an, das nennt sich

Ronny

Squash Migrations, um das aufzuräumen.

Ronny

Das Problem ist, das kann sehr, sehr schlecht mit

Ronny

Circular Imports umgehen.

Ronny

Also sprich, ich habe einen User

Ronny

und der hat ein Projekt und das Projekt

Ronny

hat, keine Ahnung, Kommentare

Ronny

und die Kommentare haben wieder den User.

Ronny

Das heißt, man muss dann, wenn man das macht,

Ronny

diese Migrationen sehr

Ronny

stark auseinanderziehen. Also wie man das

Ronny

bei Circular Imports machen würde, das ist ja ein generelles

Ronny

Python-Thema. Und das

Ronny

ist sehr, sehr mühsam, was dazu führt.

Dominik

Lazy importieren und die Sachen da als Strings hinschreiben.

Ronny

Genau. Und wie das halt dann immer so ist

Ronny

mit Sachen, die mühsam sind, die Leute machen

Ronny

sie nicht. Umso einfacher Sachen sind, umso schneller

Ronny

werden und umso besser werden sie getan.

Ronny

Und es gibt einen Pattern, das nennt sich Migration Zero

Ronny

und das hat sich jemand bei

Ronny

Medium 2018 ausgedacht, da sitzt er schon

Ronny

eine Weile. Und die Idee ist halt einfach

Ronny

auf Deutsch gesagt, du löscht halt einfach

Ronny

alles, haust alles weg, was du hast und lässt einfach

Ronny

Django initial

Ronny

neue Migrationen erstellen. Das

Ronny

klappt auch für große Projekte sehr gut

Ronny

Also ich hatte das beim richtig großen Projekt

Ronny

mit großem Entwicklungsteam, 5-6

Ronny

Jahre Laufzeit, hatte ich einen Mini-Konflikt

Ronny

der aber auch so offensichtlich war, dass ich ihn sofort

Ronny

lösen konnte. Also es war wirklich gar kein Problem

Ronny

und da habe ich halt dann dieses Package gebaut,

Ronny

das dieses Pattern

Ronny

implementiert und das ist im Endeffekt

Ronny

ein zweistufiges Ding. Einmal habe ich einen Helfer gebaut,

Ronny

der halt einem Verein quasi durch alle Apps

Ronny

geht, die Sachen aufräumt, weil das tatsächlich auch, wenn man

Ronny

das öfter macht, ist es, je nachdem wie viele Apps man hat,

Ronny

ist es auch Arbeit, auch wenn es doof klingt.

Ronny

Und das zweite ist ein Skript, das in die Pipeline

Ronny

geht, weil Django hat ja alle Migrationen,

Ronny

werden in der Datenbank in so einer

Ronny

ja, in so einem Log, in so einer

Ronny

Historientabelle hinterlegt, da quasi noch

Ronny

die Änderungen anpasst.

Ronny

Das heißt, du kannst es einfach in die Pipeline hängen, du hast

Ronny

den Django-Admin in Switch, du kannst sagen, ja, jetzt habe ich

Ronny

Migration gelöscht, jetzt bitte beim nächsten Deployment

Ronny

lass bitte, bereite bitte die Datenbank

Ronny

auf, um diesen Prozess zu streamlinen

Ronny

und das ist ein Thema, das verkauft

Ronny

sich sehr schwer, weil

Ronny

es ist halt, wie wahrscheinlich es auch

Ronny

der geneigte Zuhörer gemerkt hat,

Ronny

relativ tief und auch nur so ein

Ronny

Edge-Case, eigentlich sollte man es tun, aber so richtig Lust hat da keiner

Ronny

drauf.

Ronny

Ich weiß, da ist mir schon mal drüber gefallen,

Dominik

dass sie irgendwie dann Migrations erinnert haben, dann bumm,

Dominik

oh, Datenbank geht nicht. Genau, und

Ronny

ja, aus dem Grund fand ich

Ronny

das eigentlich für ein Lightning Talk ein ganz cooles Thema,

Ronny

weil so war das den Leuten so, Leute, wenn ihr das Problem habt,

Ronny

guckt euch das an, das gibt's.

Ronny

Ich habe dabei, als ich das Package gemacht habe,

Ronny

auch direkt noch eine zweite Sache gelernt.

Ronny

Es ist super, wenn man einen coolen Namen für

Ronny

sein Package hat, man sollte aber vorher gucken, ob der vielleicht

Ronny

schon belegt ist, weil es gibt

Ronny

nämlich ein Django

Ronny

Zero Migration

Ronny

und Migration Zero ohne Django, glaube ich

Ronny

bin ich ganz sicher. Und du hast es dann Zero Migration

Ronny

2 genannt? Ne, Django Migration

Ronny

Zero gab es tatsächlich noch nicht,

Ronny

aber es ist natürlich trotzdem allein schon

Ronny

wegen SEO extrem blöd, wenn

Ronny

halt dann Leute ständig aus falschem Package kommen, weil das andere

Ronny

halt schon seit 2014 da rumsitzt mit einem

Ronny

Commit. Genau,

Ronny

von daher, wenn jemand ein Package erstellt, dann checkt

Ronny

vorher die Namen ab, das hilft.

Ronny

Genau. Jochen sollte

Dominik

das Package unbedingt mal benutzen, ich habe ja gestern nochmal über die Schultern

Dominik

geguckt, als du Django Cast migriert hast

Dominik

und irgendwie wie viele Migrations da allein von weg da rangekommen sind,

Jochen

das waren ja hunderte. Ja, ich habe mir das auch

Jochen

überlegt, dass ich das überall wegschmeißen möchte

Jochen

und nochmal, aber dann denke ich mir immer, das sollte ich vielleicht

Jochen

dann machen, wenn sich an der Datenbank nicht mehr so viel

Jochen

ändert, aber es ändert sich immer.

Jochen

Genau, aber ich werde das auf jeden Fall tun.

Ronny

Ich würde mich freuen, wenn du mal ein Package ausprobieren würdest.

Jochen

Ja, kann ich mal, kann ich mal probieren,

Jochen

genau, ja. Aber das Problem ist auch bei mir,

Jochen

ist es halt blöderweise

Jochen

eine Library und ich werde Leuten...

Ronny

Bei der Library geht es eh nicht, dann musst du dir

Ronny

also, da musst du ja mit Squashen arbeiten.

Ronny

Ja. Das, weil, ne, du weißt

Ronny

ja nicht, in welchem Stand quasi das

Ronny

die letzte Person deinen

Ronny

Package, äh, oder die Person

Ronny

deinen Package nutzen, welcher Version, also...

Ronny

Ja, vielleicht werde ich bei irgendeiner

Jochen

Major-Version... Ich wollte gerade sagen, Release-Update

Jochen

und wer weiß, wie viele Leute

Dominik

außer Jochen sein Jochen-Paket... Ja, ich kann sagen,

Dominik

dass es nicht so viele sind, das ist schon richtig, ja, genau.

Dominik

Und dann schieße ich mir nur,

Dominik

schieße ich nur in meinen Fuß und nicht

Jochen

in den Fuß von noch hundert anderen Leuten, das

Jochen

kann ich vertreten. Das Risiko von

Dominik

Open-Source-Hafen, ja, genau. Und man kann ja dann

Dominik

downgraden.

Dominik

Ja. Datenbank brennt,

Dominik

sorry, downgrade einfach.

Dominik

Ja, ja, ja, ja, aber

Jochen

ja, das ist ein Problem. Ich meine, das ist auch so ein Problem

Jochen

wie bei so Projekten wie zum Beispiel

Jochen

Wagtail, da hat sich halt,

Jochen

es ist ja auch schon recht alt, und das

Jochen

ist halt auch, das verwendet man ja auch als Library, und da hat sich

Jochen

so viel Zweig angesammelt, dass halt das

Jochen

mit dem Testen, also, wenn

Jochen

man jetzt quasi, und mein Paket

Jochen

hängt zum Beispiel auch von Wagtail ab, das

Jochen

halb muss ich für alle Tests und so immer so

Jochen

Wege drumherum finden, dass ich auf jeden Fall

Jochen

beim Testen nicht die Migration

Jochen

laufen lassen muss, weil

Jochen

sonst werden die Tests irre langsam.

Jochen

Also machst du ReuseDB.

Dominik

Ja. Und dann musst du halt dafür ganz hart sorgen, dass alle

Dominik

Funktionen so wieder aufgeräumt werden. Minus Minus ReuseDB, Minus Minus

Jochen

No Migrations, genau. Aber dann

Jochen

gibt's halt dann so Fälle, wo, ah, nee, dann

Jochen

muss man's doch haben. Wie man's, zum Beispiel, wenn man

Jochen

dann halt vertrockst, die ganzen

Jochen

unterschiedlichen Versionen durchgeht, dann muss man natürlich, wenn

Jochen

das, wenn man jetzt, dann kann man nicht die gleiche Datenbank

Jochen

verwenden, dann muss man halt schon die Datenbank wieder wegschmeißen,

Jochen

wieder neu. Ja. Ja, es ist,

Jochen

es geht, aber es ist halt, es ist hacklich.

Jochen

Ja. Ja.

Dominik

Ja, ja. Ja, einzelne Pipeline.

Dominik

Ja.

Dominik

Ja,

Dominik

ja, du hattest ja gerade mich schon wegen

Dominik

Edinburgh gefragt. Ja. Was ich

Dominik

sehr interessant fand jetzt in Vigo,

Ronny

in Edinburgh gab es von mehreren Leuten,

Ronny

die, ich glaube, auch berechtigte

Ronny

Kritik, dass die

Ronny

Themenauswahl zwischen,

Ronny

meistens kann man das ja grob in

Ronny

Community Talks oder, ja,

Ronny

Community Talks und Tech Talks mit vielleicht

Ronny

Meta Talks, die so irgendwie dazwischen sitzen,

Ronny

aufteilen und in Edinburgh war's relativ stark

Ronny

auf der Community Seite. Also, Leute,

Ronny

die über Community Erfahrungen berichtet haben, die,

Ronny

wo Parallelen gezogen

Ronny

werden,

Ronny

zwischen anderen Arten von Communities,

Ronny

meine

Ronny

Erfahrung, wie ich das erste Mal zu Django

Ronny

Contributed hab, solche Geschichten, ja, das

Ronny

gab in Edinburgh von mehreren Leuten die

Ronny

Kritik, dass das halt relativ

Ronny

viel war und

Ronny

das ist mir jetzt positiv aufgefallen,

Ronny

dass, ich fand, dass die Mischung aus den

Ronny

Community Talks und aus den

Ronny

Tech Talks und aus den Meta Talks

Ronny

richtig gut war

Ronny

und ich

Ronny

sehr, sehr happy war mit

Ronny

der Themauswahl. Ich meine, wie gesagt, das sind halt immer

Ronny

eine große Menge auch von Leuten,

Ronny

die das mit Absicht zum

Ronny

ersten Mal machen, die

Ronny

Englisch nicht als Muttersprache haben und sowas, ne, das ist

Ronny

natürlich immer Sachen,

Dominik

also ich hab immer gehört, dass Spanien immer so ein bisschen anstrengender ist,

Dominik

was so das angeht, also für Englisch,

Dominik

weil halt da Englisch nicht so verbreitet ist und viele Leute

Dominik

halt dann nicht so. Ja, also es ist,

Ronny

wir hatten auch, glaube ich, gar nicht so viele Spanier,

Ronny

ich glaube, eine Frau aus

Ronny

Katalonien, was jetzt so ein bisschen

Ronny

Definitionssache ist, was Spanien ist oder nicht

Ronny

und ansonsten,

Ronny

ja, vielleicht ein, zwei,

Ronny

aber ich, wie gesagt, generell ist es,

Ronny

fand ich das diesmal

Ronny

gut, es war sehr angenehm, waren viele interessante

Ronny

Sachen dabei,

Ronny

da gab es zum Beispiel einen von Octopus Energy,

Ronny

das ist einer von den großen Django-Playern, die auch eigentlich immer

Ronny

so mit Platinum-Sponsor bei den Konferenzen sind,

Ronny

über Layered Architecture bei Django,

Ronny

ich bin schon sehr gespannt, wenn das Video rauskommt, das war

Ronny

sehr, also bei YouTube werden die ja alle veröffentlicht,

Ronny

das war sehr,

Ronny

sehr viel Information da drin und ich

Ronny

hab mir nur ein ganz, ganz paar

Ronny

wenige Fotos gemacht und ich bin sehr gespannt,

Ronny

mir das Ganze nochmal in Ruhe zu Hause

Ronny

zu hören, genau,

Ronny

wie die Background-Workers, die Sache von Carlton Gibson,

Ronny

es gab coole Meta-Talks,

Ronny

also das fand ich

Ronny

von der Auswahl her, bin ich da mit

Ronny

vielen schlauen Gedanken nach Hause gegangen

Ronny

und

Ronny

was ich auch sehr interessant fand,

Ronny

bezüglich des Community-Talks, direkt die allererste

Ronny

Keynote ging um Django Girls,

Ronny

das ist eine

Ronny

Vereinigung, ein Non-Profit, glaube ich

Ronny

inzwischen auch, die

Ronny

dafür da ist, explizit

Ronny

Frauen ans Programmieren ranzuführen, weil es ja

Ronny

immer noch so ist, dass halt die IT-Branche

Ronny

immer noch hart in Männerhand ist und das

Ronny

soll einfach vor allem die

Ronny

Mädels so ein bisschen ermutigen,

Ronny

dass sie das können, also nicht

Ronny

irgendwie, ich glaube, da ist gar nicht so groß der Faktor,

Ronny

dass du da rausgehst, also das ist immer so ein Wochenende-Workshop.

Ronny

Positive Bestärken, viel und so, genau.

Ronny

Und der YouTube-Python ist auch, glaube ich, ein ganzer

Ronny

Workshop für Django Girls, ja.

Ronny

Und ich hab, als das mal hier in Köln war,

Ronny

2015, glaube ich, war ich auch mal

Ronny

da Coach

Ronny

und das war eine sehr interessante Erfahrung,

Ronny

hat echt Spaß gemacht und

Ronny

war auch interessant,

Ronny

wie, weil die Mädels, glaube ich,

Ronny

alle komplett noch nie irgendwas

Ronny

programmiert haben, also wirklich, die waren komplett

Ronny

bei Null, die drei, die in meiner Gruppe

Ronny

waren und wie die da auch unterschiedlich rangegangen sind,

Ronny

das war wirklich auch für mich, also im Sinne

Ronny

von, man hat ja auch immer wieder mal mit neuen Leuten zu tun,

Ronny

wenn mal jemand Neues anfängt, wenn man mal

Ronny

Werkstudenten betreut oder sowas, echt interessant zu sehen,

Ronny

da

Ronny

dieses Coaching zu machen

Ronny

und wie gesagt, das ist halt vor zehn Jahren,

Ronny

das war jetzt Jubiläum, in Berlin gegründet worden, was ich auch

Ronny

ganz cool finde, also sprich...

Ronny

Wenn jemand jemanden kennt,

Ronny

der, also, ne,

Ronny

jemand eine Frau kennt, der

Ronny

die potenziellen sowas Interesse hat, die werden

Ronny

immer wieder mal hier und da angeboten,

Ronny

diese Workshops und

Ronny

das ist, glaube ich, echt cool,

Ronny

so für einen ersten, ja,

Ronny

Fuß ins Wasser halten mal wieder

Ronny

und

Ronny

die Idee dabei ist, dass die halt im Endeffekt ihre erste

Ronny

Django-Seite erstellen und auch irgendwo

Ronny

hindeployen und der Fokus ist

Ronny

halt eher darauf, wie du schon gesagt hast, positive

Ronny

Bestärkung, denn, ja,

Ronny

äh, pädagogisch wertvoll.

Ronny

Das ist total, das ist auch relativ gut

Dominik

und relativ komplett. Ja, genau.

Dominik

Wenn man überhaupt mit Django ansteigen will, ich meine, das haben wir jetzt

Dominik

vielleicht, hätten wir es früher sagen müssen, die Leute, die jetzt noch

Dominik

drin sind, sind wahrscheinlich eher schon tiefer auch

Dominik

in Django, aber ja, vielleicht können wir das da weiter

Jochen

verraten auch. Ja, aber das sind dann auch

Jochen

die Motivierten. Ja. Bei denen lohnt sich das dann.

Dominik

Ja, vielleicht tragen das in ihre eigenen

Dominik

Communities weiter auch. Genau. Du kannst einfach in der

Ronny

Linksammlung noch hinzufügen, da freuen die sich.

Ronny

Ja, ja, mach ich auf jeden Fall.

Dominik

Ja, ich hab das auch tatsächlich an die Neulinge

Dominik

bei uns mit Django, auch einmal Django Girls,

Dominik

also er ist natürlich offizielles, ne, Tutorial

Dominik

ist nicht schlecht, aber Django Girls auch so schönes

Dominik

schnelles Einstiegsding, ja.

Jochen

Ich erinnere mich gerade, ich war jetzt zu langsam, um da

Jochen

einzuholen, ich hab mich dann irgendwann

Jochen

kurz danach daran erinnert, es gab auch

Jochen

jetzt irgendein, äh, muss ich auch

Jochen

nachgucken, welcher das war, ähm,

Jochen

Podcast-Episode Django Chat mit

Jochen

einer von Octopus

Jochen

Energy und die

Jochen

erzählte da auch irgendwie, äh, ja,

Jochen

dass sie halt, äh,

Jochen

auf so ein

Jochen

Problem gestoßen hat, dass sie eigentlich

Jochen

nicht wollen, dass in Templates irgendwie

Jochen

Datenbank-Queries passieren oder so.

Jochen

Und das ist auch etwas, was mir, äh, inzwischen

Jochen

halt, ich hab ja versucht, so ein bisschen Performance-Optimierung

Jochen

zu machen, auch bei den, äh,

Jochen

beim Django-Cast-Ding,

Jochen

was ich baue, und

Jochen

das ist mir auch ganz böse auf die Füße, also

Jochen

eigentlich, das, da dachte ich auch so, oh ja,

Jochen

das hab ich, eigentlich möchte man nicht, also

Jochen

wenn man in Templates Datenbank-Queries

Jochen

macht, ganz blöde Idee, die haben, die sind dann so weit

Jochen

gegangen zu sagen, sie haben, sie benutzen

Jochen

so eine Art Class-Based Views, wo sie

Jochen

halt verhindern, also sie nehmen nicht die Modelle

Jochen

mehr, sondern sie machen irgendwie da so

Jochen

so Data-Class-mäßig irgendwie

Jochen

Read-Only-Kopien von den Dingern,

Jochen

sodass, wenn du da irgendwo was versuchst

Jochen

aus der Datenbank zu holen, dass das halt

Jochen

einfach nicht geht, ja, und, ähm,

Jochen

das kann ich gut verstehen, das ist eine, also

Jochen

du willst eigentlich, wenn du, wenn du zum Beispiel

Jochen

deine Daten, die Anzahl der Datenbank-Queries

Jochen

in der Kontrolle behalten willst, willst du halt

Jochen

irgendeinen Punkt haben, wo du sagst, also hier, da

Jochen

sind alle Queries, und ich mach nirgendwo

Jochen

anders welche, weil das, äh,

Jochen

äh, das ist so schwer zu containen,

Jochen

wenn man, wenn da irgendwas passieren

Jochen

kann, dass das halt ganz blöde

Jochen

Performance-Implikationen hat.

Dominik

Und wo man dann quasi durch das Frontend auch

Dominik

Angriffe machen kann, oder was? Ne, Angriffe,

Jochen

also es ist einfach irgendwie, äh,

Jochen

das ist halt unheimlich, äh,

Jochen

macht, macht Dinge halt deutlich

Jochen

langsamer, und man weiß gar nicht so, warum

Jochen

irgendwie, ne, und, äh,

Jochen

ja, also

Dominik

zum Beispiel... Warum wird das langsamer? Das, vielleicht müssen wir

Dominik

es nochmal genau erklären. Datenbank-Queries sind immer super langsam.

Dominik

Ja, aber warum muss das, also wenn man

Dominik

die eh machen muss, warum dann nicht im Template,

Dominik

also man muss ja eh drauf warten, wenn irgendwo... Naja, wenn

Jochen

man die halt alle an einer Stelle macht, dann ist

Jochen

es halt auch nicht so schlimm. Also was auch,

Jochen

das ist, weiß ich nicht so genau, das ist ein Gefühl. Das hab ich

Jochen

noch nicht wirklich gemessen, aber ich hab auch das Gefühl,

Jochen

dass, wenn man die Datenbank-Queries

Jochen

sehr verstreut macht,

Jochen

dass das halt besonders schlecht ist auch.

Jochen

Warum das genau ist, weiß ich nicht.

Ronny

Was meinst du, wenn die verstreut, was, also an verschiedenen

Ronny

Stellen im Code, meinst du halt? Ja.

Ronny

Ähm, oder an verschiedenen, äh, Orten des

Ronny

Frameworks, glaub ich, meinst du?

Jochen

Ja, ja, also wenn ich jetzt zum Beispiel gucke von,

Jochen

ähm, es kommt ein Request rein, ja, dann

Jochen

äh, passieren ja Dinge, Dinge, Dinge, Dinge,

Jochen

Dinge, auch erstaunlich viele, so beim, das weiß

Jochen

ich jetzt, weil ich's halt so ein bisschen, äh, geproffelt

Jochen

hab. Bei mir sind es halt von,

Jochen

also bei, wenn man jetzt einen Blog nimmt und da

Jochen

die List-Page und dann halt nur so fünf Artikel

Jochen

oder sonst irgendwas, also aus diesem

Jochen

List-View, dann macht das halt so

Jochen

110.000 Funktionsaufrufe oder

Jochen

sowas, was eine Menge ist. Ich dachte so,

Jochen

wow, shit, warum ist das so viel?

Jochen

Das ist ganz schön viel. Und ich, mein, mein Ding

Jochen

wär jetzt, wenn jetzt so alle tausend,

Jochen

äh, ähm, Funktionsaufrufe

Jochen

kommt irgendwie in die Datenbank-Query, das ist schlecht.

Jochen

Also, so war's quasi vorher,

Jochen

irgendwie implizit, weil halt, sind die

Jochen

Datenbank-Querys halt da passiert, wo es es halt,

Jochen

äh, äh, wo es halt

Jochen

aufgetreten ist. Und das war,

Jochen

und einfach nur dadurch, dass ich

Jochen

jetzt das einfach mal so umgebaut hab,

Jochen

dass es jetzt diese Datenbank-Querys, an denen ich selber

Jochen

noch gar nicht viel geändert hab, alle an einer Stelle passieren,

Jochen

ist es irgendwie doppelt so schnell geworden.

Jochen

Und ich weiß nicht genau, woran das liegt, aber es ist

Jochen

auf jeden Fall irgendwie, scheint das so zu

Jochen

sein, dass auch der, äh,

Jochen

nicht, nicht nur, dass man halt

Jochen

blockiert und dann muss man auf die Datenbank warten,

Jochen

sondern auch dieses Ganze irgendwie,

Jochen

Untertitelung des ZDF, 2020

Jochen

ja, man ist da in diesem Bereich,

Jochen

wo dann Dinge, die Jungle-Modelle

Jochen

gebaut werden oder ich weiß es nicht so genau, also das

Jochen

scheint alles nicht so richtig kostenlos

Dominik

zu sein, sondern das... Also das heißt, wann irgendwas geladen wird

Dominik

an der Stelle und warst du irgendwie vorbereitet

Dominik

oder tiered down oder so hin und her,

Dominik

kostet dann unheimlich viel, oder? Ja, also

Jochen

ja, das allein,

Jochen

dass man da halt irgendwie viele Objekte erzeugt

Jochen

und dann, ja,

Jochen

und wenn das halt an einer Stelle ist, dann passiert das halt

Jochen

einmal und wenn das halt verteilt ist, dann

Jochen

macht es das irgendwie nochmal langsamer

Jochen

und ja, ich versuche immer noch momentan gerade

Jochen

rauszukriegen, woran liegt das eigentlich, dass da so viele

Jochen

Funktionsaufrufe passieren, weil das ist einfach zu viel.

Jochen

Kann man nicht

Jochen

eventuell, kann ich, also meine Idealvorstellung wäre

Jochen

natürlich, dass ich irgendwann

Jochen

sozusagen nur noch eine Datenbank-Query mache

Jochen

oder so, in der ich alle Informationen aus der Datenbank hole.

Jochen

Geht

Jochen

das nicht vielleicht? Ja, Tim, wie groß

Dominik

hältst du, wenn das in den RAM passt? Ja,

Jochen

das ist alles gar kein Problem.

Jochen

Aber kann ich so eine

Jochen

Query formulieren und wenn ich jetzt die Daten

Jochen

aus dieser Query habe, kann ich die so transformieren, dass ich

Jochen

daraus wieder Django-Objekte machen kann.

Jochen

Das ist halt so, aber das mache ich jetzt auch schon,

Jochen

also ich benutze nicht mehr irgendwie

Jochen

einfach so, ich mache

Jochen

aus,

Jochen

ich benutze nicht quasi den

Jochen

ORM, um halt Django-Modelle, sondern ich

Jochen

ziehe die Daten halt in einer

Jochen

Form, dass ich die halt auch, das ist auch sowas, wenn man

Jochen

cachen will, dann muss man das ja auch irgendwie

Jochen

zum Beispiel als Sticked haben,

Jochen

dass man halt auch irgendwie serialisieren kann.

Jochen

Wenn du Django-Objekte hast, die kannst du nicht,

Jochen

also es gibt viele Dinge an Django, die kannst

Jochen

du nicht serialisieren.

Jochen

Du kannst es auch nicht cachen, weil Query-Sets kannst du

Jochen

nicht gut cachen, geht nicht.

Jochen

Aber wenn du jetzt das in eine

Jochen

Dict-Geschichte

Jochen

überführt hast, wie im Prinzip JSON

Jochen

serialisierbar ist, dann kannst du halt

Jochen

auch das, was du aus der Datenbank kriegst, einfach

Jochen

nehmen, irgendwie auf eine Platte schreiben oder so und sage,

Jochen

okay, die nächsten fünf Minuten einfach das Pfeil nehmen

Jochen

und nicht mehr die Datenbank fragen oder irgendwo

Jochen

in den Hauptspeicher oder in Redis oder sonst irgendwo hin

Jochen

und dann kannst du das halt cachen.

Jochen

Aber das, genau.

Jochen

Und aus den Dingern

Jochen

wieder Django-Modelle zu bauen, ist jetzt gar nicht so

Jochen

schlimm. Da dachte ich auch so, das ist vielleicht schlimm.

Jochen

Nö, ist gar nichts, das geht ziemlich leicht.

Jochen

Und ja, genau.

Jochen

Also ja, ich mache momentan so ein bisschen Performance-Optimierungsgeschichten.

Jochen

Ja.

Jochen

Ja. Tja, ja.

Dominik

Ja, aber wenn Performance auch dazu

Dominik

führt, dass du weniger Rechenleistung aufwenden musst, ist das ja sogar

Dominik

Green Engineering.

Dominik

Da gab es auch Vorträge dazu.

Jochen

110.000 Funktionsaufrufe für

Jochen

ein Webseiten-Rendering ist nicht so richtig green.

Jochen

Ehrlich gesagt, das ist eher so mehr so braun.

Ronny

Ja. Aber weil du, ich habe gerade

Ronny

den, deinen, deinen

Ronny

Einstiegspunkt vergessen, der mich daran erinnert hat,

Ronny

aber es war super interessant. Bei diesem Django Girls

Ronny

Vortrag gab es auch so eine,

Ronny

ja, so Success-Stories einfach,

Ronny

ne, von Mädels, die das halt

Ronny

teilgenommen haben und die jetzt halt irgendwo einen

Ronny

coolen Job haben oder irgendwie eine coole Erfahrung haben

Ronny

oder irgendwo sich halt irgendwas Positives in ihrem Leben geändert

Ronny

hat, sondern im Sinne von, ne, das hat einen Impact.

Ronny

Und was ich da echt

Ronny

krass fand, war, dass eine

Ronny

US-Amerikanerin, die daran teilgenommen hat, die halt

Ronny

vorher irgendwas gearbeitet hat und jetzt halt dann in

Ronny

Tech eingestiegen ist, weil sie halt am Ball geblieben ist,

Ronny

dass sie deshalb

Ronny

jetzt mit dem neuen Job eine Familie gegründet

Ronny

hat, also sprich ein Kind bekommen hat, weil vorher

Ronny

nach ihrer Aussage, sie es in

Ronny

USA sich nicht hätte leisten können.

Ronny

Ich kann jetzt nicht bewerten, ob das stimmt,

Ronny

also ob das jetzt so eine absolut

Ronny

richtige Aussage ist, aber

Ronny

allein, dass das subjektiv so ist, hat

Ronny

mich echt schockiert.

Jochen

Ja gut, aber ich meine, ich würde sagen, dass halt, wenn man,

Jochen

also so ein Programmierer ist jetzt schon,

Jochen

ist jetzt auch nicht das Bestbezahlte überhaupt, aber

Jochen

sagen wir mal so, ist halt schon

Jochen

deutlich besser wahrscheinlich als viele

Jochen

andere Sachen.

Dominik

Vielleicht sollten wir gar nicht so viele Leute schulen, damit nicht so viel

Dominik

Wettbewerb da ist, dass es immer noch weiter gut bezahlt wird.

Dominik

Auch wenn wir Probleme haben, unsere Kinder zu ernähren.

Dominik

Ja.

Dominik

Ich glaube auch, es ist ja

Ronny

nicht nur das Geld, sondern auch, dass man so eine gewisse

Ronny

Flexibilität hat. Ich meine, es gibt

Ronny

immer noch diese Marketing

Ronny

Agenturen, wo man dann irgendwie bis nachts

Ronny

um zwölf irgendwie irgendwelche

Ronny

Marketing-One-Pager zusammenlötet, aber

Ronny

bei...

Dominik

Nein, du hast völlig recht, also ich glaube, das ist einer der Jobs, die

Dominik

von Hause aus sehr dafür geeignet

Dominik

sind, dass man das remote machen kann und es

Dominik

relativ kompatibel ist zur Vereinbarkeit von

Dominik

Familie und Beruf.

Dominik

Ich ziehe mit reicher Arbeit von zu Hause

Dominik

aus eine Menge Geld verdienen.

Dominik

Hier ist es in die Halle angewogen.

Dominik

Gesellschaftliche

Dominik

Transformation wäre ja sowas wie Vereinbarkeit

Dominik

eine der Hauptdinge

Dominik

auch, glaube ich.

Dominik

Also fällt mir auch immer wieder auf, ja, das ist halt total

Dominik

hart, wenn irgendjemand den ganzen Tag irgendwo

Dominik

hinfahren muss und dann mit Kinderbetreuung ist es schon schwer.

Jochen

Ja, also ich meine

Jochen

auch jetzt die letzten Jahre

Jochen

Erfahrung mit Kinderbetreuung, es passiert immer

Jochen

so viel Zeugs, wo man dann...

Jochen

Ja, das wäre übel gewesen,

Jochen

wenn ich jetzt irgendwie hätte in einem Büro sitzen müssen oder...

Jochen

Ja, oder hinfahren jeden Tag.

Dominik

Du kannst auch nicht wirklich wegfahren.

Dominik

Oder Schichtdienst

Dominik

einfach die ganze Nacht. Ja, ganz übel.

Dominik

Ja gut, aber es gibt Leute, die kriegen das trotzdem irgendwie hin.

Dominik

Ja, das ist beeindruckend.

Dominik

Ja.

Dominik

Ja, du wolltest jetzt über Party

Dominik

reden, auch wenn wir gerade über Kinderkriegen reden.

Dominik

Ja.

Dominik

Für manche Leute ein Thema. Nach der Party kommt

Jochen

der Kater und...

Ronny

Genau. Nein, tatsächlich,

Ronny

bei den Dungercons gibt es immer eine Party

Ronny

und ich finde das ein ganz interessantes

Ronny

Thema, weil

Ronny

in Edinburgh war es so, dass man,

Ronny

wenn man sich die Tickets kauft,

Ronny

musste man ein Opt-in machen, ob man

Ronny

auf die Party geht, dann gab es so eine Art

Ronny

ja,

Ronny

Aufwandsentschädigung von

Ronny

10 Pfund oder so und

Ronny

was die nicht bedacht haben ist, dass

Ronny

in vielen, also viele

Ronny

Leute gehen halt über ihre Agentur dahin,

Ronny

also auf irgendeine Art von Weiterbildungsbudget,

Ronny

und da buchen die Leute nicht selbst die Tickets

Ronny

und die werden halt am Block von irgendjemand

Ronny

aus, zum Beispiel der

Ronny

Buchhaltung gebucht und die natürlich mit

Ronny

der Information Party kostet extra nichts

Ronny

anfangen können und dann

Ronny

bei uns und auch bei anderen war es dann

Ronny

so, dass wir halt auf einmal alle nicht dahin gehen konnten,

Dominik

weil...

Dominik

Ach so.

Ronny

Und einfach, weil halt das Häkchen nicht gesetzt wurde und das war

Ronny

halt irgendwie einfach so ein bisschen

Ronny

die Realität zu Theorie.

Ronny

In der Theorie ist es kein Problem, in der Praxis, naja,

Ronny

so ist es halt. Gehört eigentlich dazu.

Ronny

Ähm, ich persönlich finde nämlich die Party

Ronny

eigentlich immer eine sehr schöne Art, nochmal mit

Ronny

Leuten, die man halt vielleicht noch auf der Stage gesehen

Ronny

hat an den Tagen, die sind ja auch meistens

Ronny

am Ende. Aber das ist mir in den Review-Piecen

Dominik

auch aufgefallen, da gibt es auch mehrere Partys, wo man sich extra

Dominik

registrieren muss, ja. Und ich finde

Ronny

das eine sehr schöne Gelegenheit, nochmal in einem etwas

Ronny

lockeren, weniger

Ronny

ernsten Umfeld mit den Leuten,

Ronny

ich meine, viele Leute haben da irgendwie...

Ronny

da noch mit den Leuten

Ronny

reden zu können, einfach auch nochmal

Ronny

mit Leuten connecten zu können, zum Beispiel

Ronny

in Porto, also jetzt vor zwei Jahren, die Party war,

Ronny

glaube ich, eine der besten Partys,

Ronny

also die war super, die war echt gut organisiert, richtig

Ronny

schöne Location, bestes Wetter, alles draußen.

Ronny

Ähm, und

Ronny

da bin ich dann einfach in eine Runde von

Ronny

Leuten reingestolpert und dann bin ich halt nachher

Ronny

mit einem im Gespräch hängen geblieben und nachher

Ronny

irgendwann meinte er, weißt du echt,

Ronny

wer ich bin? Ich so, ja, keine Ahnung. Ja, ich bin

Ronny

Präsident hier von Jungle Software, von der ich so,

Ronny

oh, äh, ups, sorry.

Ronny

Ja, da kannte ich halt noch nicht so viele Leute

Ronny

in dem Umfeld. Und es ist halt einfach, das

Ronny

würde halt so, ich meine, das kann passieren,

Ronny

wenn man so auf der Konferenz rumläuft, aber

Ronny

man ist da schon immer relativ getaktet mit,

Ronny

ne, also die kommt dann, ist irgendwie, dann gibt's dann

Ronny

eine Verlosung und dann ist der nächste Vortrag und dann

Ronny

muss man sich vielleicht selber auf irgendwas vorbereiten, dann

Ronny

will irgendwie die eigene Crew irgendwas

Ronny

ähm. Oh, ein Konferenz-Experiment,

Ronny

da kann man auch eine eigene Folge zu machen, glaube ich, ja.

Ronny

Ähm, und das fand ich tatsächlich, ähm,

Ronny

ich, das finde das einen sehr wichtigen Punkt,

Ronny

weil es ja immer dann auch, ne, auch dann so,

Ronny

naja, nö, sie gehen umsaufen, nö, aber ich finde,

Ronny

es ist schon ein sehr, sehr schöner, ähm,

Ronny

sehr, sehr schöne Atmosphäre und

Ronny

eine Möglichkeit, mit Leuten nochmal so

Ronny

zu socialisen, auch mal Leute ein bisschen persönlicher,

Ronny

vielleicht auch kennenzulernen und, ähm,

Ronny

genau, also fand das wirklich schön

Ronny

und jetzt bei diesem Mal, ähm,

Ronny

das war so ein bisschen doppelt unglücklich, ähm,

Ronny

die, äh, dieses Konferenzgebäude in Vigo,

Ronny

das war direkt am Hafen, das war nicht so

Ronny

ein schöner Hafen, aber es war halt, immerhin hat man

Ronny

Meerblick, ähm,

Ronny

äh, und die andere Seite der Bucht war schön,

Ronny

äh, hatte eine

Ronny

gigantische Dachterrasse, also riesig

Ronny

und genau, oder fast

Ronny

genau als die Party anfing, kam ja das Gewitter auf,

Ronny

das wir drei Tage gewartet haben, ähm,

Ronny

ja, war dann blöd, weil,

Ronny

dann mussten wir halt in die kleinen Gänge rein,

Ronny

die halt irgendwie so die Räume verbunden haben

Ronny

und um neun war Schluss,

Ronny

was halt auch schade war, weil, ähm,

Ronny

wie gesagt, in, äh, Porto, glaube ich, waren

Ronny

bis eins oder zwei,

Ronny

ich glaube, in Kopenhagen davor

Ronny

war auch relativ lang, so lange wie Leute mehr da

Ronny

oder wie lang, solange die Organisatoren halt Lust hatten,

Ronny

so, dass das nicht abschließen zu wollen

Ronny

und, ähm, ja,

Ronny

das, das fand ich tatsächlich ein bisschen schade.

Ronny

Wird bestimmt seine Gründe gehabt haben,

Ronny

ich will mich da jetzt gar nicht irgendwie, ich hab nichts dazu

Ronny

beigetragen, ich will da nicht rummosern, ich persönlich fand's

Ronny

nur schade, weil, ähm, wie gesagt,

Ronny

ich das eigentlich, ich meine, es ist ein sehr schöner Ort,

Ronny

finde, und ich meine, auch da habe ich mich mit Leuten

Ronny

unterhalten, mit denen ich, mit denen ich

Ronny

mehr oder weniger im gleichen Raum saß für drei Tage

Ronny

und halt vorher noch nicht gesehen habe, hatten interessante

Ronny

Gespräche und, ähm,

Ronny

genau, das finde ich immer ein, äh,

Ronny

ein schöner Ort und, ähm, kann da auch

Ronny

nur eine Lanze dafür brechen.

Dominik

Ja, ich würde auch sagen, Socializing bei diesen Konferenzen ist mit

Dominik

so der Hauptgrund, warum man da, ich finde das ja auch

Dominik

gestern war ja wieder bei DDF auch immer

Dominik

super, dass man danach noch was essen geht, weil da auch immer

Dominik

der Hauptteil des Spaßes ist, also nichts gegen die ganz

Dominik

tollen Vorträge, die alle tollen Menschen machen,

Dominik

wie halt auch bestimmt bei der DangoCon, wo ich irgendwann

Dominik

auch da hinfährt und so, aber das Socializing ist ein großer Teil,

Dominik

dass man so Leute kennenlernt und, also

Dominik

dass diese Experience, die man von anderen Menschen mitbekommt,

Dominik

die was ähnliches machen, vielleicht ein bisschen anders

Dominik

als man selber und sich darüber austauschen, ist schon

Dominik

super, also, manchmal

Dominik

kann man auch selber mal ganz viel reden, das machen

Dominik

einige Leute gern, aber auch manchmal zuhören ist auch

Dominik

super und das ist irgendwie ja was, was

Dominik

Gutes, ich kann das auch, äh, sehr

Dominik

nachvollziehen, ich finde das auch mit den wichtigeren

Dominik

Teilen, dann, also, manchmal ist man da auch

Dominik

im Gang so ein bisschen, ne, und weil du gerade

Dominik

gesagt hast, das fand ich interessant, deine Art und Weise war

Dominik

wahrscheinlich sehr strukturiert und sehr organisiert,

Dominik

möglichst viel von dem Content mitzubekommen

Dominik

und, also, äh, ich

Dominik

kenne ja, also von der Europe-Python kenne ich zum Beispiel so,

Dominik

die ist ja lang und wenn man da halt die ganze Woche da ist,

Dominik

dann sind es ja sieben Tage, also zwei Tage

Dominik

Workshop, drei Tage Vorträge, zwei Tage

Dominik

irgendwas anderes, da tut es immer

Dominik

ganz gut, wenn man sich ein oder zwei Tage nicht

Dominik

ganz so vollpackt, weil man so ein bisschen

Dominik

sich so, ähm,

Dominik

fließen lässt, weil dann kommt man mehr mit Leuten

Dominik

ins Gespräch, die auch irgendwo rumstehen, vielleicht, vielleicht

Dominik

näher nochmal an irgendeinen Stand und dann hat sich dann mit den Leuten

Dominik

länger, anstatt dass man jetzt sagt, okay, meine Uhr, in zehn Minuten

Dominik

geht der nächste Vortrag los, der Kopf ist ja

Dominik

irgendwann eh voll oder man bleibt halt dann nochmal länger

Dominik

auf der Party oder man geht halt dann am

Dominik

Wochenende mit Leuten, die man kennengelernt hat, nochmal in die Stadt

Dominik

oder spazieren oder was von der Natur anschauen

Dominik

oder sowas, was auch irgendwie, glaube ich,

Dominik

mit dazugehören kann, aber das ist halt witzig, weil

Dominik

es so unterschiedliche Herangehensweisen gibt

Dominik

und ich halt auch Leute gesehen habe, die das ganz anders machen,

Dominik

es gibt Leute, die kommen halt nur für zwei Tage

Dominik

und da ist das halt dann sehr intensiv oder

Dominik

es gibt Leute, die sind nur bei den Workshops da und dann nie wieder gesehen

Dominik

oder Leute, die schaffen sogar nur so ein oder zwei Vorträgen,

Dominik

was manche an Kinderbetreuung liegt oder sowas,

Dominik

die man da auch netterweise hinbringen kann

Dominik

oder halt nur sogar Notzinssprings, glaube ich, auch Menschen,

Dominik

die halt wirklich nur da hingegangen sind, um mit den Leuten

Dominik

an Sachen zu arbeiten, aber

Dominik

das ist so witzig, weil diese, das ist so ein bisschen,

Dominik

ich weiß nicht, ob es eine Kulturfrage ist, aber so diese Art und Weise

Dominik

ändert sich je nach Lebensphase oder

Dominik

wo du gerade selber bist, total

Dominik

und das ist, glaube ich, auch eine der Herausforderungen

Dominik

für so Konferenzen, für die unterschiedlichen

Dominik

Ziele, die die Leute so mitbringen,

Dominik

irgendwie gut ausgestattet zu sein.

Dominik

Und mich würde dieses Django-Condi auf jeden Fall auch mal

Dominik

reizen, ehrlicherweise, ich finde das auch mal ganz nett.

Dominik

Es ist halt ein bisschen mehr

Dominik

Fokus auf Django, was auch mal cool ist.

Dominik

Also nächstes Mal ist es in Dublin, das ist auch nicht

Dominik

verkehrt. Ah, okay, da war ich jetzt schon, ja.

Dominik

Ich auch, ich fahre trotzdem gerne

Dominik

nochmal hin, ich finde das super. Dublin ist toll, ja.

Dominik

Weißt du auch schon, wo gibt es so einen Ort?

Dominik

Nein, also es gibt, glaube ich,

Dominik

eine

Dominik

Webseite, wo literally

Dominik

das Logo drauf ist, alles

Dominik

weitere folgt dann.

Dominik

Ich finde es auf jeden Fall sehr cool.

Dominik

Also Edinburgh und Vigo

Dominik

hätte ich wahrscheinlich beide auch gemacht, aber Vigo kann ich noch nicht,

Dominik

Edinburgh schon und Dublin, ja,

Dominik

ist das einfach.

Dominik

Das ist eine tolle Stadt, ne, Irland, das ist eh,

Dominik

wenn ich noch Bier trinken dürfte,

Dominik

wäre ganz toll.

Dominik

Überall wunderschöne Sachen. Gut, musst du halt Whisky trinken.

Dominik

Ja.

Dominik

Wir waren ja irgendwann mal cool, ja.

Dominik

Am Shannon entlang ist da immer

Dominik

toll, da gibt es tolle Sachen. Ich meine, es ist halt sehr

Dominik

moderne, hippe Stadt auch, ne.

Dominik

Naja, gut, das sind die meistens alle, irgendwo.

Dominik

Bis auf hier

Dominik

noch ein, ja.

Dominik

Aber wie, das waren

Jochen

jetzt aber drei Tage quasi, ne? Genau, das waren

Ronny

drei Tage Konferenz, da waren immer wieder,

Ronny

also die hatten eigentlich nur eine, also es gab einen Konferenztrack

Ronny

und dazwischen gab es immer wieder mal in einem

Ronny

anderen Raum dann die Workshops. Ich habe die Workshops

Ronny

nicht teilgenommen, ich nehme irgendwie von diesen

Ronny

Workshops nicht so viel mit.

Ronny

Ich habe auch, ich war letztes Mal

Ronny

in Edinburgh mal bei den Sprints dabei und

Ronny

da muss man auch sagen, das ist kein Umfeld, wo

Ronny

ich wirklich produktiv arbeiten kann, ne. Also

Ronny

dann sitzen da ganz viele Leute in einem Raum und

Ronny

es ist halt so ein gewisser Geräuschpegel.

Ronny

Weiß ich nicht, jedem zweiten fehlt irgendwie

Ronny

Strom und dann hast du da kein Ladekabel

Ronny

und es ist,

Ronny

also es ist unruhig,

Ronny

Interessant, also ich finde das mit den Workshops

Dominik

total anders, also weil, vielleicht bist du

Dominik

schon viel weiter als ich in vielen Punkten, aber

Dominik

die Dinge, die ich da so mitgenommen hatte,

Dominik

habe ich immer super viel gelernt und das

Dominik

hängt wahrscheinlich total davon ab, was für ein

Dominik

Workshop man da hat und welches Niveau da ist und

Dominik

wenn man eine gute Auswahl hat, findet man bestimmt was.

Dominik

Also ich habe wirklich immer da am meisten

Dominik

von mir genommen, mehr als von den vielen Talks.

Ronny

Aber ich glaube auch was, ich gehe halt auch ganz

Ronny

gerne auf die Konferenzen, nehme

Ronny

mir die Stichpunkte mit und

Ronny

sortiere dann quasi danach nochmal so ein bisschen

Ronny

aus, so was speichere ich ab, also es gibt

Ronny

hier irgendwo, zum Beispiel diese Sache mit der Architektur,

Ronny

das finde ich super spannend, ich

Ronny

müsste auch nochmal, also ich gehe da auch nochmal

Ronny

ins Gespräch mit ihr

Ronny

und gucke mal, ob wir sie vielleicht

Ronny

mal zum Django Meetup Köln oder sowas einladen können

Ronny

oder sowas, weil das ist halt ein Thema, das halt für mich

Ronny

super spannend ist und wo ich auch noch

Ronny

definitiv zu wenig weiß

Ronny

und

Ronny

das ist, so gehe ich dann damit um.

Dominik

Ich weiß jetzt nicht, vielleicht gleich deine Länge der Workshop, also die Workshop, die ich hatte, waren halt

Dominik

mindestens einmal einen halben Tag, also vier Stunden oder so.

Dominik

Die sind kürzer da.

Dominik

Ich bin da richtig tief in die Themen reingekommen, habe mich da richtig

Dominik

reingehackt, habe da auch wirklich was gemacht und habe dann auch

Dominik

teilweise noch wirklich nachgearbeitet und die Dinge wirklich

Dominik

umgesetzt und benutzt.

Ronny

Also da sind die eher kürzer, also ich glaube so ein bis zwei

Ronny

Stunden, glaube ich, ich bin nicht ganz

Ronny

sicher. Ich habe letztes oder letztes Mal

Ronny

habe ich mal welche mitgemacht, aber wie gesagt, irgendwie

Ronny

die Atmosphäre ist nicht so ganz meins. Also ich konnte zum Beispiel auch

Dominik

konzentriert arbeiten, weil es da ruhig war und

Dominik

wo ich direkt gehen muss, ist bei den Sprints.

Dominik

Sprints sind immer sehr chaotisch, meistens, also ich

Dominik

nutze Sprints oft dann auch zum Socializen, mit den Leuten quatschen,

Dominik

um nochmal rumzustehen.

Dominik

Aber ich muss ehrlich gestehen,

Dominik

ich habe bei den Sprints auch immer nicht das Thema gefunden

Dominik

und ich sagte so, wow, das finde ich jetzt super toll

Dominik

und da will ich jetzt mitmachen.

Dominik

Weil ich glaube, das ist, wenn du

Dominik

idealerweise vielleicht, wenn man ein Thema bei dem Sprint

Dominik

hat, wo man vielleicht sogar schon drin ist,

Dominik

wo man das ganze Setup schon gemacht hat, wo man die

Dominik

Entwicklungsumgebung bei sich auf dem Rechner schon eh drauf hat

Dominik

und dann sich einfach einloggen kann, dann kann man das Feature

Dominik

zu nehmen, das mit anderen Leuten mal so diskutieren,

Dominik

durchdenken und dann von mehreren Seiten mal

Dominik

echt mal die Lösung, die man gerade hat, mit drei

Dominik

oder vier Leuten, die da fokussiert dran arbeiten,

Dominik

wirklich implementieren. Das ist auch cool, glaube ich.

Ronny

Auf jeden Fall, auf jeden Fall. Also wir haben

Ronny

ja auch beim Django Meetup in Köln

Ronny

jetzt im Januar hatten wir

Ronny

Sarah A. und Thibaut, also die

Ronny

sind beide Django Board Members, ganz frisch geworden,

Ronny

hatten wir eingeladen,

Ronny

sind netterweise vorbeigekommen, da haben wir

Ronny

dann auch einen Open Source Sprint gemacht.

Dominik

Der schon am Mittag war, wo ich leider erst so spät konnte, ja.

Dominik

Und das war

Dominik

auch echt cool. Also es war eine coole Erfahrung.

Dominik

Jeder hat da so ein bisschen an dem gearbeitet, wo er

Ronny

drauf Lust hatte. Es sind mehrere Tickets auch

Ronny

erstellt worden.

Ronny

Und

Ronny

also wurde an mehreren Podcasts auch erstellt

Ronny

worden. Und danach hat man

Ronny

auch so ein bisschen Diskussionen, so Future of Django,

Ronny

was auch super interessant war, weil man halt wirklich mal

Ronny

zwei Board Members am Start hat und die dann

Ronny

wirklich mit denen so ins 1 zu 1 gehen kann.

Ronny

Aber wie gesagt, ich bin da gar nicht dagegen oder so. Ich sage

Ronny

nur, das ist halt nicht so mein Arbeitsumfeld.

Ronny

Ich finde, fürs wirklich Programmieren

Dominik

Also kategorisch, ja. Also es ist nicht nur so zufällig

Dominik

gewesen, sondern du denkst halt wirklich, brauchst eher deine Ruhe.

Dominik

Ja, definitiv. Aber das, was ich dann interessant

Dominik

finde, ist, dass du zwischendurch, also ich weiß nicht,

Dominik

ob sich das geändert hat, sagtest, dass du im

Dominik

Büro total die schöne Arbeitsatmosphäre hast und

Dominik

das sogar zu Hause vorziehst. Wo ich immer

Dominik

sagen würde, im Büro habe ich immer den Stress, das mache ich lieber

Dominik

zu Hause. Also jetzt, wo ich wieder öfters

Ronny

ins Büro gehe, also ich mache so drei Tage

Ronny

Büro, zwei Tage zu Hause,

Ronny

ist,

Ronny

als ich nur einen Tag

Ronny

die Woche im Büro war, dann hast du halt ständig

Ronny

irgendjemanden, mit dem du dich über die letzte Woche austauschen

Ronny

musst. Das lenkt dann schon sehr ab. Aber wenn du drei Tage

Ronny

da bist, dann hast du halt deine Nasen alle gesehen

Ronny

und dann streckt sich das so ein bisschen über die drei Tage und

Ronny

dann ist es eher das, wenn man eh mal gerade eine Pause

Ronny

braucht und mal kurz zu die Tür geht oder so, dass man halt damit

Ronny

jemanden hat, mit dem man reden kann. Das finde ich ganz angenehm.

Ronny

Und tatsächlich ist auch, dass

Ronny

Post-Corona bei uns auch einfach nicht so

Ronny

viele Leute im Büro sind, dass wirklich da ein gewisser

Ronny

Lärmpegel entstehen könnte. Ich meine, natürlich

Ronny

telefoniert vielleicht mal irgendwer irgendwo oder so,

Ronny

aber es gibt ja immer noch Kopfhörer.

Dominik

Dann bin ich ins Büro, dann muss ich eine Hose anziehen, das ist so

Dominik

fürchterlich.

Ronny

For the record, du hast jetzt auch eine Hose an.

Ronny

Hey, jetzt hast du wieder gespoilert.

Ronny

Nein.

Dominik

Ich wollte jetzt niemanden zu nahe drehen.

Jochen

Ja, wir könnten noch Pics machen.

Jochen

Das klingt, glaube ich,

Jochen

ganz gut und dann ist es eigentlich auch schon

Jochen

so eine runde Sache.

Dominik

Ja, dann bin ich ja mal gespannt, was für Pics

Dominik

wollt ihr denn nehmen?

Dominik

Du hast einen von mir geklaut, ich weiß gar nicht,

Dominik

ob ich den schon gesagt habe.

Jochen

Hab ich den geklaut? Ja, das kann sein.

Jochen

Ich habe mich in letzter Zeit

Jochen

nochmal so ein bisschen, also es gibt

Jochen

da auch sehr schön, das kann ich vielleicht dazu sagen,

Jochen

Vortrag von Simon Willison

Jochen

zu einem Kommandozeilentool, was er

Jochen

geschrieben hat, namens LLM.

Jochen

Und das LLM picke ich mal,

Jochen

weil da habe ich jetzt auch wieder ein bisschen mehr mitgemacht

Jochen

und das ist halt wirklich

Jochen

nett, weil man da

Jochen

ja, unterschiedliche

Jochen

Modelle mal so ausprobieren kann, damit man so ein bisschen

Jochen

rumspielen kann. Aber auch,

Dominik

du kannst halt einfach in deine Kommandozeile

Jochen

reinpipen. Genau, du kannst halt

Jochen

ja, für solche, also ich

Jochen

benutze es dann halt auch für solche Dinge

Jochen

wie alle, ich habe jetzt jetzt

Jochen

sogar eine Funktion tatsächlich für DjangoCast

Jochen

geschrieben, wo ich sagen kann,

Jochen

gib mir doch mal den gesamten

Jochen

Source-Code aus oder gib mir mal den gesamten Source-Code

Jochen

mit Tests aus oder so

Jochen

und dann, und mach mir das zu einem

Jochen

Prompt, wo dann halt die Dateinamen auch

Jochen

noch immer mit drüberstehen und

Jochen

dann kann ich sagen, okay, pipe das mal irgendwie

Jochen

in ein Modell rein und dann mache ich da irgendwie

Jochen

einen System-Prompt zu, von wegen, ja,

Jochen

habe ich bei der Dokumentation irgendwas vergessen

Jochen

oder kann man das irgendwie, es gibt so offensichtliche Dinge,

Jochen

die man irgendwie besser machen kann und so

Jochen

und ja, das funktioniert

Jochen

tatsächlich ziemlich gut. Alle

Jochen

Anfragen und Antworten

Jochen

landen in der SQLite, das heißt, hinterher kann man sich auch

Jochen

gut angucken, was da, also man hat alle Sachen,

Jochen

die man je irgendwie gepromptet hat und

Jochen

wo man Antworten gekriegt hat, hat man in

Jochen

einem strukturierten Format, das man halt auch wieder

Jochen

irgendwie auslesen kann und analysieren kann.

Dominik

Total heißt halt, deine Templates verwenden, die man halt auch

Dominik

dann hintereinander pipen kann und dann kann man

Dominik

auch das Default-Template überschreiben, wenn man will und so.

Dominik

Da hat man halt immer schon sein System-Prompt

Dominik

und sein Alignment so ein bisschen

Dominik

vor oder hinter dem ganzen Zeugs, was man

Dominik

da kommuniziert. Das finde ich auch super

Dominik

cool. Man kann jetzt, also ich habe

Dominik

zum Beispiel so einen, den nenne ich dann den Senior,

Dominik

bereite ich dann das Template Senior, dann gibt der mir immer

Dominik

schnippische Antworten, wie ich das von Jochen immer kenne.

Dominik

Nein.

Dominik

Es funktioniert super, es macht

Dominik

sehr viel Spaß und der sagt immer so,

Dominik

warum hast du das denn nicht selber rausgefunden? Jetzt auch die Anleitung

Dominik

und die ist gut. Es ist toll und es macht so ein bisschen

Dominik

Spaß beim Arbeiten, wenn man dann Fragen

Dominik

stellt und jemand, der dann so antwortet.

Dominik

Sehr lustig.

Dominik

Sehr gut. Genau.

Jochen

Ja, also das Ding,

Jochen

ups, ja, das wäre

Jochen

mein Pick, genau.

Jochen

Ja.

Dominik

Ja, äh, Ronny.

Dominik

Boah, ähm,

Ronny

so ganz spontan fallen

Ronny

mir nicht mehr

Ronny

Sachen ein. Wie, du kennst etwa die Praxis

Dominik

nicht von dem Pick der Woche,

Dominik

des Monats hier bei uns im Podcast? Also ich

Ronny

kenne das doch, aber mir fällt gerade irgendwie nichts wirklich ein,

Ronny

was ich nicht gerade schon irgendwie in einer Art und Weise erwähnt habe.

Jochen

Oder hast du vielleicht mal einen interessanten Talk gesehen?

Jochen

Oder du kannst ja, genau, wenn du einen Talk

Jochen

zum Beispiel bei der DjangoCon super gefallen hast,

Jochen

dann können die Leute ihn jetzt noch nicht

Jochen

sehen, aber irgendwie

Jochen

sich schon mal darauf freuen, dass es den dann später irgendwo

Ronny

auf YouTube gibt oder so. Also wie gesagt, der, der Talk

Ronny

über die, äh, die Layered Architect

Ronny

über Django. Ah, ja, okay, gut zu hören, ja.

Ronny

Ähm, ich weiß nicht genau, wie er hieß,

Ronny

der war auf jeden Fall sehr spannend

Ronny

und auch einen Talk, wenn man sich für

Ronny

Django interessiert und auch in das, in das,

Ronny

die Idee bezüglich, ähm,

Ronny

großer Applikationen und wie lässt

Ronny

man eine Django-Applikation wachsen, weil ich bin schon

Ronny

davon überzeugt, dass man auch große Applikationen

Ronny

damit bauen kann. Ja. Es ist nicht nur zwingend

Ronny

nur dieses kleine, äh, Blog-Ding,

Ronny

was man, womit's mal angefangen hat. Ja. Da gibt es

Ronny

einen Talk, äh, Scaling Django to 500

Ronny

Apps. Ähm, das ist auch

Ronny

Kraken-basiert, Kraken, äh,

Ronny

hier, Octopus Energy

Ronny

related, glaube ich. Und die haben

Ronny

eine Idee von, also Django-Apps ist halt

Ronny

im Endeffekt eine Art und Weise, wie man den Code kapselt.

Ronny

Das haben ja viele, ähm, Frameworks.

Ronny

Und die haben da eine Idee, ähm,

Ronny

naja, in ganz einfach, sie missbrauchen da ein bisschen das

Ronny

Framework, machen was, was nicht vorgesehen war, was aber

Ronny

trotzdem funktioniert, nämlich die machen Sub-Apps.

Ronny

Und haben da so eine Sprint-to-Naming-Konvention,

Ronny

um im Endeffekt zu sagen,

Ronny

ähm, ich hab, ich mö, ich hab immer noch eine Domäne,

Ronny

die sich um mein Projekt oder

Ronny

mein Accounting oder mein weiß der Geier was

Ronny

kümmert, mein Produkt, aber da drin,

Ronny

das ist so groß geworden, ich möchte das weiter strukturieren.

Ronny

Mhm. Und, ähm, das

Ronny

finde ich super spannend, das ist gerade auch eine Sache, über die ich sehr

Ronny

aktiv nachdenke, wie ich das in meinen

Ronny

Projekt, in dem ich aktuell arbeite, reinbringen kann.

Ronny

Ähm, weil ich, ich jetzt

Ronny

zum Beispiel in meinem Projekt, wir haben's, ähm, wir haben

Ronny

da so ein bisschen, also manche

Ronny

Apps sind einfach riesig geworden, wo man sagen muss, die müssen

Ronny

aufgeteilt werden. Und mit diesem Sub-App-Gedanken

Ronny

bin ich heute einfach nur in der, in diesem

Ronny

Structure-View, also wo man quasi sieht, welche Klassen

Ronny

gibt es in meiner Datei. Einfach mal mit

Ronny

einem Blick, ähm, sind mir und meinem Kollegen

Ronny

wirklich einfach so, okay, das ist ein

Ronny

Kontext, also das ist so eine Sub-App, das ist eine,

Ronny

das ist eine, also es war super schnell, wie so Sachen

Ronny

so reingehen, wo man auch sagt, okay, das gehört hier echt gar nicht rein,

Ronny

das muss eigentlich komplett woanders hin.

Ronny

Einfach nur mit einem Blick und diesem Gedanken, dass es dieses,

Ronny

dieses Sub-App-Pattern gibt. Mhm.

Ronny

Und dann auch bei ein paar Sachen gesagt, okay, das ist definitiv keine

Ronny

Sub-App, das muss einfach, das ist ein Standalone so, ne,

Ronny

das kann man gut rausziehen. Ähm, das finde ich

Ronny

auf jeden Fall einen sehr interessanten Vortrag, den ich, äh,

Ronny

jedem ans Herz legen kann, der sich für

Ronny

sowas interessiert.

Dominik

Sub-Apps habe ich auch in letzter Woche in irgendeinem Projekt eingebaut,

Dominik

aber ohne das Pattern jetzt so zu. Aber ich bin

Jochen

eigentlich eher, äh, gut, vielleicht

Jochen

bin ich da auch irgendwie, irgendwie falsch abgebogen,

Jochen

aber ich bin eigentlich eher so auf dem, ich mach

Jochen

gar keine Django-Apps mehr, weil, äh,

Jochen

also, immer wenn ich, wenn ich, wie sonst?

Jochen

Naja, einfach ganz

Jochen

stinknormal mit Python, äh,

Jochen

Wortmitteln Dinge modularisieren. Modular,

Jochen

ja, ja, ja. Weil, weil das Problem bei den

Jochen

Apps ist halt, äh, einmal,

Jochen

äh, ja, es ist halt

Jochen

irgendwie so eine

Jochen

Spezialgeschichte, die halt irgendwie anders

Jochen

funktioniert als alles andere.

Jochen

Und du musst es halt auch in den Settings ja immer

Jochen

dann mit setzen und so. Und dann,

Jochen

äh, das, was ich eigentlich am,

Jochen

am, äh, äh, fiesesten

Jochen

finde, ist, dass man halt, wenn man, man kann

Jochen

halt Sachen schlecht refactoren, so von

Jochen

einer App zum Beispiel in eine andere, dann man kann die Migration

Dominik

nicht umziehen. Nicht so richtig. Aber so Modelle, genau,

Dominik

wäre so ein Punkt, wo ich sage, wo deine App für, wenn es

Dominik

irgendwo Modelle gibt, ist für mich

Dominik

immer bisher so eine App. Ja, aber was, was

Jochen

machst du dann, wenn, wenn du mal das eine Modell

Jochen

in eine andere App ziehen willst? Das ist mühsam, das habe ich schon

Jochen

gemacht. Ja.

Jochen

Es geht, aber es ist mühsam. Also, weil,

Ronny

ja. Also musst du halt mit

Ronny

RAW, RAW SQL und

Ronny

Daten halt. Ja, ja, klar, du kannst natürlich,

Jochen

das geht schon, aber es ist halt nicht einfach mal

Jochen

ein verschiebtes. Nee, nee, da kann man auch was kaputt

Jochen

machen. Ja, genau.

Jochen

Wenn, wenn man es halt alles in einer App hat,

Jochen

sozusagen, dann kann man es einfach umziehen.

Ronny

Ist eine interessante Idee, habe ich nicht drüber nachgedacht,

Dominik

dass wir diese Modellis des Maiko

Jochen

diskutieren. Ich habe, ich habe meistens dann zum Beispiel

Jochen

Models, äh, also wenn es größer wird, dann halt,

Jochen

ich habe jetzt halt ein Models-Verzeichnis

Jochen

und dann habe ich halt. Alle Models in einer Datei.

Jochen

Nee, genau, das eben nicht mehr, weil das wird dann halt riesig.

Jochen

Ja. Also, also, wenn,

Jochen

wenn Models irgendwie größer wird als, als tausend

Jochen

Zeilen oder so, dann würde ich denken, na gut, dann wahrscheinlich

Jochen

sollte man es mal ein bisschen aufteilen. Und,

Jochen

ähm, ja, dann kann man die ja auch so gruppieren

Jochen

und dann macht man, hat man noch eine Init-Py,

Jochen

in der man dann halt irgendwie festlegt,

Jochen

welche überhaupt exportiert werden sollen, weil viele Dinge

Jochen

braucht man gar nicht nach außen reichen, sondern die sind ja rein intern.

Jochen

Und, äh. Das ist interessant,

Jochen

da habe ich noch nicht drüber nachgedacht, um so eine API zu sehen.

Dominik

Ja, ja, das, das finde ich auch, also ich mache halt, also

Dominik

unterverzeichnet, wo halt nur bestimmte Sachen rauskommen und die anderen

Dominik

Sachen, also dann implizit intern, aber.

Ronny

Das ist, das ist interessant. Habe ich

Ronny

heute noch drüber nachgedacht, aber, ähm,

Ronny

auf diese, auf diesen, also dass das ein Benefit

Ronny

ist, habe ich, äh, bin ich drauf gekommen.

Ronny

Das ist interessant.

Ronny

Ja. Ja, cool.

Dominik

Und dein Pick? Ähm, mein Pick,

Dominik

ich habe natürlich wieder von Jens geklaut, der das in unsere

Dominik

Gruppe geschrieben hat, das ist, äh, Monkey Type.

Dominik

Ähm, das,

Dominik

glaube ich, von Instagram entwickelt worden ist, wenn ich das richtig verstanden habe.

Dominik

Äh, und das baut dir Type Annotations.

Dominik

Ah.

Dominik

Das heißt, du gehst einfach hin und, äh,

Dominik

hast irgendeine Python-Funktion oder sowas

Dominik

und sagst dann Command-Teile Monkey Type

Dominik

und dann nimmt der halt die File

Dominik

oder das Ding und, äh, schreibt da die Annotations

Dominik

dran. Mhm. Und das ist gar nicht so schlecht.

Dominik

Da, also, das funktioniert besser, als man

Dominik

vielleicht denkt. Mhm. Ja.

Dominik

Und, äh, ja, das, also, wenn man halt gerade

Dominik

nicht so weiß, hey, man möchte irgendwas Type Annotieren, also,

Dominik

warum man, wenn man das mal möchte,

Dominik

dann macht man das doch. Und dann sieht man,

Dominik

was da passiert, das kann einem schon ein bisschen Arbeit abnehmen.

Dominik

Mhm. Und irgendwie,

Dominik

man entdeckt manchmal sogar auch Bugs, weil man halt so,

Dominik

hä, nee, das stimmt aber eigentlich gar nicht oder so, dann.

Dominik

Ja. Man andere Sachen erwartet.

Dominik

Oder, oh, Mist, dann kommt auf einmal

Dominik

der Delinther oder MyPy sagt halt so, nee,

Dominik

der stimmt aber jetzt gar nicht, das ist schon ganz gut.

Dominik

Interessant.

Dominik

Ja. Ja, gut, dann würde ich

Dominik

sagen. Haben wir für heute die Episode.

Dominik

Dann herzlichen Dank, dass du wieder da warst, Freunde. Ja, ja.

Dominik

Ja, vielen Dank. Ähm, dann machen wir jetzt gleich

Dominik

noch, äh, unter uns weiter, würde ich sagen.

Dominik

Ja. Äh, herzlichen Dank fürs Zuhören.

Dominik

Bleibt uns gebogen, wo immer ihr auch seid.

Dominik

Danke, Jochen. Ähm, und, äh, ja.

Dominik

Feedback an hallo-at-python-podcast.de

Dominik

Feedback-Anregungen kommen

Dominik

Kommentare, Lobkritik und so weiter.

Dominik

Was ihr alles möchtet. Bis bald.

Dominik

Bis dann. Tschüss.