Transkript: DjangoCon Europe 2024

· Zurück zur Episode

Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.

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.

Jochen

Und hallo.

Dominik

Und hallo Ronny.

Dominik

Ronny.

Dominik

Schön, dass du wieder da bist.

Ja, Moderau.

Dominik

Dann fangen wir vielleicht mit ein bisschen News an und dann schreiben

Jochen

wir direkt ein, was du hast.

Jochen

Kapitelmarke für News.

Jochen

Okay, ähm.

Jochen

Capitelmark hat nicht funktioniert.

Ah, toll.

Jochen

Nichts funktioniert hier.

Dominik

Das ist ja nichts Neues.

Ja.

Das sind keine News.

Dominik

Schrecken wir erstmal damit an.

Ah ja, ja.

Ronny

Die war Anfang Juni in Vigo in Spanien, Nordspanien, Galicien.

Ronny

Eine sehr schöne Stadt.

Ronny

Ohne jetzt tatsächlich große Highlights.

Ronny

Aber mir hat es trotzdem gut gefallen.

Ronny

Das ist ein sehr schöner Nationalpark, ein Inselnationalpark, direkt vor der Küste.

Ronny

Wäre mal die Gelegenheit, dort hinzufahren, das sollte man

nicht verpassen.

Dominik

Zeit wandern zu gehen eben.

Jochen

Ist das so quasi da irgendwo diese Santiago de Compostela?

Ronny

Ja, genau, das ist so ein bisschen südwestlich davon.

Ronny

Also genau nördlich von Portugal.

Ah ja.

Ronny

Und genau, ich hatte einen Tag Zeit, wandern zu gehen auf der Isla Cies, glaube ich.

Ronny

Und das ist wirklich sehr zu empfehlen.

Klingt sehr gut.

Jochen

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 mehr hört, vielleicht ist ja schon vorbei.

Jochen

Ja, wahrscheinlich.

Dominik

Ja.

Dominik

Wir möchten gerne aber ein paar Themen von der Dunlockon hören.

Dominik

Und es gibt aber noch ein, zwei andere News, die.

Jochen

Ja, genau.

Jochen

Also wir haben ja jetzt schon einige Zeit keine Sendung.

Dominik

Das ist immer dasselbe Problem im Moment, aber gut.

Jochen

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

Jochen

Man sieht sie halt öffentlich schwitzen.

Jochen

Dieses ganze AI-Thema, das ist irgendwie, ja, können sie nicht so richtig entscheiden, schlagen sie jetzt voll ein oder doch nicht, was machen sie?

Jochen

Oh nein.

Jochen

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

Dominik

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

Dominik

Ich glaube in Deutschland sogar.

Jochen

Ja.

Jochen

Sie wollen jetzt, sie sind jetzt was alles zu teuer mit den Teuerbauern.

Dominik

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

Jochen

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

Jochen

Und zwar gehen sie nach München.

Jochen

Und mal wollen da ein neues Zuckboard.

Da sind sie ja schon ein bisschen gewachsen, ja.

Jochen

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

Mal sehen.

Jochen

Aber ja.

Dominik

Ja, bestimmt, der kann vor die guten Python-Leute sitzen.

Dominik

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

Entschuldigung, ich wollte jetzt

keinen Lokalpatriotismus hier aufhören.

Jochen

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

Jochen

Das ist ja immer so irgendwie immer mehr Python-Leute einstellen und so voll gut.

Jochen

Und jetzt und welche, wo hat man das irgendwie so abrückgebaut?

Jochen

Das ist neu.

Dominik

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

Jochen

Ja, kann auch sein, ja.

Jochen

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

Jochen

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

Jochen

Das heißt, wenn man mal ausprobieren will, ob das eigene Zeug, was man so baut, irgendwie damit tut, dann kann man das jetzt mal machen.

Tut eigentlich, oder?

Jochen

Ja, es gibt, glaube ich, jetzt auch.

Jochen

Wo war das?

Jochen

Irgendwas kann jetzt auch, man kann jetzt auf Wheels bauen für 313.

Jochen

Ich habe es jetzt wieder, ich habe heute echt keine Zeit gehabt, mich die News nochmal anzugucken.

Jochen

Insofern tut mir leid, wird etwas durcheinander.

Jochen

Aber ja.

Jochen

Python 313 kann man auf jeden Fall jetzt mal so.

Jochen

Jetzt ist der richtige Zeitpunkt, um das mal auszuprobieren.

Jochen

Was habe ich 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 OnePasswort.

Jochen

Also ich bin immer noch nicht, ich bin immer noch bei OnePasswort.

Jochen

Mir tut das zwar etwas weh, dass das alles super teuer ist und so, aber ich finde es immer noch so der beste Passwort-Manager und der hat jetzt auch ein Python-API im Software Development Kit gekriegt.

Jochen

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

Jochen

Also sozusagen man kann halt Python-Sachen schreiben und dann fragt das Ding halt OnePasswort und dann sagt das Ding halt da, guck hier mal in die Kamera oder hier, leg mal da deinen Finger drauf und dann kann man sich authentifizieren.

Jochen

Was ja für manche Sachen ganz nett ist.

Dominik

Wie teuer ist denn das?

Dominik

Weißt du das?

Dominik

Wenn wir Werbung machen würden, eigentlich hätten wir die Episodensponsor wegen.

Jochen

Also OnePasswort kostet, das ist wirklich, die haben ja auch wahnsinnig viel Fremdkapital aufgenommen und das kostet pro User irgendwie sowas 35 Dollar oder Euro im Jahr ungefähr.

Jochen

Und das ist halt schon, ja.

Dominik

Und es gab 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.

Dominik

Nee, ich wollte gerade sagen, noch im Kopf, ja.

Jochen

Genau, was haben wir noch?

Jochen

Achso, ja, es gibt auch gute Nachrichten, also das ist ja auch so ein Ding, da kriege ich mal 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 ein 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 per Sachen bei PIP installieren würde dann halt nicht mehr funktionieren.

Jochen

Und die haben jetzt gerade auf der PyCon US verkündet, dass sie für fünf weitere Jahre PyPI sponsoren wollen.

Jochen

Cool, cool.

Jochen

Das ist natürlich praktisch.

Dominik

Also gibt es Pyst noch mindestens fünf Jahre.

Dominik

Ja.

Jochen

Genau.

Jochen

Dann tatsächlich jetzt im Juni vor gar nicht vor zwei, drei Wochen ist NumPy 2.0 erschienen, nach irgendwie, ich weiß nicht, 14 Jahren Entwicklungszeit oder was auch so.

Jochen

Das war eine ganze Zeit lang in Progress.

Jochen

Und genau.

Jochen

Ist vielleicht jetzt nicht der günstigste Moment, umzusteigen, sondern man sollte vielleicht das erstmal auf kleiner zwei Pinnen oder so und dann mal gucken, bis alle anderen irgendwie sich angepasst haben, weil das bricht halt einige Geschichten.

Jochen

Aber ja, schön, dass es jetzt raus ist und dann macht einige.

Jochen

Wie gesagt, ich habe keine Ahnung, was alles genau passiert ist, oder ich wusste es mal, hab's wieder vergessen.

Jochen

Ja, Performance ist irgendwie besser geworden.

Dominik

Es sind ein paar API-Changes drin, das heißt, ihr müsst ein bisschen aufpassen, weil wenn ihr da irgendwie einfach updatet, dann kann es sein, dass solche relativ viele Dinge kaputt gehen.

Dominik

Also ich habe 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.

Jochen

Ja.

Dominik

Aber gut, das ist eigentlich super, dass man halt auch eh eine Semantic Version Ding, 2.0 Breaking API Changes, genau.

Jochen

Genau, dann gibt es eine neue, also eine erste 1-0-Release von Pullers, was ja auch vielleicht ganz nett ist, dass man sich jetzt halt so drauf verlassen kann, dass die API-Daten 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?

Jochen

Nee, viel nutze ich das nicht.

Jochen

Ich nutze das ab und zu mal.

Dominik

Pandas oder ist das?

Jochen

Ich nutze eher Pandas, weil ich mich halt da so an Pandas gewöhnt habe.

Dominik

Ja, aber nur weil ich daran gewöhnt habe.

Dominik

Aber bei Pandas haben die auch ein bisschen schneller gemacht.

Dominik

Ich weiß gar nicht, gibt es irgendwie wirklich jemanden, der das mal getestet hat, was so für was besser geht.

Jochen

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

Jochen

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

Jochen

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

Jochen

Und wahrscheinlich ist es keine gute Idee und es ist richtig, dass Pullass das alles nicht gemacht hat und auch selbst die Leute, die Pandas gebaut haben.

Jochen

Also das Basement 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, da muss man halt dann denken.

Jochen

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

Ja.

Jochen

Genau, was gibt's noch?

Jochen

Psycho PG 3.2 ist raus, also auch etwas, ich weiß nicht, ob alle schon umgestiegen sind auf 3.

Jochen

Also ich habe das in wahrscheinlich.

Dominik

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

Jochen

Ja, genau, klar.

Ja.

Jochen

Und ja, super, da ist halt auch so Essen Support jetzt mit drin und diverse Geschichten.

Jochen

Also auf

Dominik

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

Jochen

Oh, das, warte mal, lass mal grad gucken.

Bestimmt noch bei einem Tiefer, oder?

Jochen

Wahrscheinlich, wahrscheinlich.

Jochen

Ich würde jetzt tippen, Postgres 12 oder so.

Minimum steht da nicht.

Jochen

Nee, steht, steht, ich weiß, ich weiß nicht.

Keine Low Hamming Food.

Dominik

Auch nicht so wichtig.

Dominik

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.

Jochen

Und dann haben sie halt irgendwie entweder alte Datenbanken, weil Datenbanken auch oft nicht kontainerisiert sind.

Jochen

Oder sie haben es kontinuierisiert und haben dann vergessen, dass es irgendwie.

Jochen

Also, aber ich sehe in der Praxis, sehe ich ganz oft alte Datenbanken.

Dominik

Ja, ja.

Jochen

Stimmt.

Jochen

Und ich ehrlich gesagt, ich finde es komisch, weil das ist halt so, ich meine, es kostet eigentlich ja nicht viel, das upzudaten oder da up-to-date zu bleiben.

Jochen

Und es bringt halt ordentlich was.

Jochen

Also, eben, wenn ich jetzt mir angucke, so Postgres 12 oder so, was ich häufig sehe.

Jochen

Oder selbst, also bis wenn man jetzt stattdessen ein Postgres 16 nimmt, dann ist es halt schon, da hat sich schon einiges getan.

Jochen

Also da kriegt man irgendwie so 30% Performance Movement einfach zum Gratis.

Jochen

Also, ja.

Jochen

Genau.

Jochen

Ja, dann, oh, HTMX 2.0 ist erschienen.

Jochen

Auch ganz interessant.

Jochen

Da hat sich auch nichts geändert, sondern das ist einfach nur hochgezählt.

Jochen

Und gut, es sind ein paar Sachen entfernt worden.

Jochen

Also ein paar Extensions.

Jochen

Die Websockers-Extension ist nicht mehr drin und ein paar Dinger.

Jochen

Genau.

Dominik

Du benutzt das immer noch so gern?

Jochen

Ich benutze das immer noch super gern.

Jochen

Ich auch.

Jochen

Ich habe es auch jetzt letztens wieder in einem Projekt gehabt und das ist, ja, es war echt total super.

Jochen

Ich hatte irgendwie eine Menge.

Dominik

Wie würdest du denn einen Chat umsetzen?

Jochen

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.

Ronny

Ich meine, man kann es bauen, aber.

Jochen

Man kann, aber ob das so viel Spaß macht, weil da ist ja manchmal vielleicht eine Echtzeit dann tatsächlich, wenn eine Echtzeit eine Reaktion hat, irgendwie interessant.

Jochen

Wenn man jetzt polen würde, dann hast du immer so ein bisschen Latenz.

Ronny

Server-Sent-Events, glaube ich, geht dann auch.

Jochen

Ja, das geht dann natürlich auch, aber das ist ja dann fast das Gleiche, also es ist auf jeden Fall ähnlich wie Websockets auch.

Jochen

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 Loadbalanced man das jetzt denn eigentlich?

Jochen

Was ist denn, wenn ich jetzt irgendwie ein Deployment mache und ich restarte das Ding?

Jochen

Was passiert denn da mit der Verbindung?

Jochen

Ist jetzt erstmal weg.

Kommt sie wieder?

Jochen

Kommt sie nicht wieder?

Jochen

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

Jochen

Ja, also da kommt man in all diese blöden Fehlerfälle rein.

Jochen

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.

Dominik

Und was ist mit Chat mit dem Server?

Jochen

Chat mit dem Server ist.

Dominik

Also keine Ahnung, du schließlich mit 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.

Jochen

Request-Response, super.

Dominik

Dann wartest du einfach drauf.

Jochen

Ja, also du kannst halt dann, du kannst ja auch das anzeigen, was dann zurückkommt, direkt.

Jochen

Aber da brauchst du keine, da brauchst du keine stehende Verbindung.

Dominik

So gechained jetzt, oder?

Jochen

Ja, du kannst einfach Stream mal Daten.

Jochen

Kannst du ja das anzeigen.

Jochen

Das geht.

Jochen

Genau.

Jochen

Genau, das ist auch sowas.

Jochen

Dafür braucht man das, da braucht man keine bidirektionale Verbindung oder keine stehende Verbindung, ja.

Okay, dann Django 5.1 hat es.

Jochen

Django 5.1 Alpha erschienen, genau.

Jochen

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

Jochen

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

Ronny

Es ist erst die erste Alpha.

Ja.

Jochen

Also was ich hier schon sehe, ah, Query String, super, das habe ich ja halt schon ein paar Mal selber gebaut.

Jochen

Aber warum gibt es das denn nicht?

Jochen

Genau, man hat, also das Problem ist, wenn man quasi ein paar Dinge hinzufügen will zu einem Query-String, zum Beispiel, wenn man irgendeinen Filter angeschaltet hat oder so, dann ist halt die Frage, okay, aber da sind jetzt möglicherweise so schon Sachen gesetzt und dann muss man das irgendwie, ja, wie updatet man das hin?

Jochen

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

Jochen

Und das ist natürlich praktisch, genau.

Ronny

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.

Später mehr.

Ronny

Ja, sondern eher Kleinigkeiten, die einem einfach helfen, besser und angenehmer zu arbeiten.

Jochen

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, 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 machen muss.

Jochen

Ja.

Jochen

Ja, ja, ja, ja, ja.

Jochen

Middleware to require authentication by default, keine Ahnung, was das ist.

Dominik

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

Jochen

Ich glaube, da so wahnsinnig.

Jochen

Ja, genau.

Jochen

Ist auch nichts Weltbewegendes mehr.

Jochen

Alles klar, dann haben wir nur erwähnt, dass es das gibt und dann.

Dominik

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

Ronny

Nicht von meiner Seite.

Okay.

Gut.

Dominik

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

Dominik

Also ich habe ja du, also erstmal, du eigentlich müsst ihr ja von dir selber erzählen, weil du hast ja auch was gesagt, glaube ich, sogar, ne?

Dominik

Genau.

Dominik

Was Cooles erzählt.

Dominik

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

Ja, genau.

Ronny

Also wie gesagt, ich heiße Ronny.

Ronny

Ich arbeite seit 2012 mit Django.

Ronny

Ich habe 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

Und bin jetzt seit vielen Jahren Tech Evangelist in meiner Firma.

Ronny

Ich arbeite bei der Agentur Ambient in Köln und habe dadurch die Möglichkeit, mich ja 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 Konferenzdate.

Ronny

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

Ronny

Das war sehr cool.

Ronny

Das ist so eine Minikonferenz.

Ronny

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

Ronny

Und das war ein Tag und das war sehr nett, sehr familiär.

Ronny

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

Dominik

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

Ronny

Ja, aber das war nicht mit Livestream zu.

Dominik

Das ganze Internet konnte zugucken bei euren Livestreams bei Ambient während der ganzen Zeit, in der letzten Zeit, ja?

Ronny

Ja, die Djungo Meters machen wir nicht.

Ronny

Achso, das meinst du.

Ronny

Ja, okay.

Ronny

Fair enough.

Ronny

Genau.

Ronny

Ich bin nämlich beim Django Meetup Köln, 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ß dran 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

Das löst im Endeffekt das Problem, wäre schon mal mit Django, also wir machen meistens, so von meinem Job her, 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, nur die, ich mag diesen Begriff sehr, die Developer Experience ist nicht so richtig gut, weil man da relativ viel Low-Level-Sachen machen muss, vor allem wenn man jetzt nicht nur irgendeine E-Mail rausschicken möchte, sondern halt eine, die modernen Business-Ansprüchen genügt.

Ronny

Also sprich eine HTML-E-Mail, die ein 50-Space-Template hat, die entsprechende Header 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 der wahrscheinlich auch Class-Based Views 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, um einfach mal eine Lösung zu bauen, wo es halt angenehmer ist, dass halt, wenn ich halt eine E-Mail habe, die halt dann HTML-Templates hat oder Inhalt hatten, Plaintext-Part-Inhalt, Übersetzungen, bestimmte Header, bestimmte Variablen, die fürs Base-Template benötigt werden, dass ich da halt nicht jedes Mal so riesige Funktionen hin und her kopiere, sondern im Endeffekt halt wirklich nur einen Drei- oder Vier Zeiler habe 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, dass E-Mails, weil die ja irgendwie so ein bisschen eine externe API sind, weil das halt, ne, man schickt die irgendwie raus und die kommen dann quasi vielleicht wieder bei mir an, wenn ich es mir selber schicke, dass wir die nicht so richtig getestet haben, weil es einfach auch mühsam ist.

Ronny

Und das Dango-Test-Framework bringt einem da so ein paar Tools mit, aber die sind alle so ein bisschen versteckt.

Ronny

Und da habe ich dann so einen Rapper gebaut, der auch so ein bisschen, dass man diese E-Mail-Outbox, wenn man E-Mails in einem Test verschickt, dann landen die in so einer Liste, in einer Outbox, werden die gesammelt, dass sie nicht aus Versehen rausgeschickt werden dann 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, ob zum Beispiel in beiden Content-Parts, es gibt ja mehr als nur HTML und Plaintext, ob in den Kontext-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.

Dominik

Ich wollte gerade sagen, was war aufgeregt?

Ronny

Ich war sehr aufgeregt.

Ronny

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

Ich weiß es nicht.

Ronny

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

Ronny

Nichtsdestotrotz auch viel positives Feedback bekommen und ist auch tatsächlich nochmal eine ganz andere, 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, ich glaube fünfte, mit zwei Remote über 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, wer es noch nicht gemacht hat, geht mal auf eine Konferenz.

Ronny

Auf meiner allerersten DjangoCon 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, da jetzt keine große Tech-Company dahinter steht, die da irgendwie Millionen einfach mal so verschenkt und dass alles irgendwie von Volunteers getragen wird und dann, die sich freuen, wenn da halt irgendeine Firma irgendwie einen Tausy reinwirft, ist das schon echt beeindruckend.

Ronny

Und genau, da waren echt coole Sachen dabei.

Ronny

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

Ronny

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

Jochen

Django Enhancement Proposal nehme ich.

Ronny

Ah ja, genau.

Ronny

Dieses Dab, ich glaube 14 oder sowas.

Ronny

Die sind auch irgendwie in letzter Zeit erst wieder entdeckt worden.

Ronny

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

Ronny

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

Ronny

Und diese Background-Walk ist im Endeffekt eine Idee, dass man, wenn man in einem Django-Projekt asynchrone

Dominik

Ich glaube, da müssen wir gleich noch ein bisschen genauer drauf eingehen, 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, bevor wir auf die Background-Text eingehen.

Ronny

Okay.

Ronny

Ja, genau.

Ronny

Also die ja, was habe ich denn?

Ronny

Was kann ich dazu noch sagen?

Jochen

Irgendwie, weil das hat, war das nicht auch irgendwas mit einem, wo so ein Architekturdesign-Pattern irgendwie so ein bisschen eine Rolle spielte oder 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 Rapper um die relativ low-levelige API, wenn man halt wie gesagt ein bisschen aufwendigere E-Mails bauen möchte.

Dominik

Das macht Sendmail mit ein bisschen Fluff.

Ronny

Genau.

Ronny

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

Ronny

Das gibt auch gerade eine große Diskussion, weil bei Python da scheinbar etwas deprecated wurde.

Ronny

In einer letzten Version.

Ronny

Und Django noch auf den alten Sachen.

Ronny

Ich glaube, das hätte nicht deprecated, aber da gibt es irgendwas Neueres, cooleres.

Ronny

Und die Django-Sachen unter der Haube benutzen auch die alten und dann ist gerade viel in Bewegung bezüglich E-Mails.

Ronny

Interessanterweise, ich bin da ganz aus Versehen auf diesen Zug aufgesprungen.

Dominik

Das ist direkt eine blöde Frage.

Dominik

Wie verschickt ihr denn E-Mails?

Ronny

Also tatsächlich, das ist auch eine Frage, die eigentlich jedes Mal gestellt wird, wenn ich diesen Vortrag, ich muss gestehen, ich habe ihn 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 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 an.

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.

Ronny

Und danach kann man halt dann die E-Mail so verschicken, wie man sie halt mit Django sonst verschicken möchte.

Ronny

Also ob man da jetzt irgendein Mailhawk reinhängt oder irgendein super abgefahrenes 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

Dominik

zu lösen.

Dominik

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, ich bin nicht ganz sicher.

Ronny

Ich glaube, Amazon hat ja viele von diesen Standards definiert.

Ronny

Und das ist ein Service, 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 früher unsere Spendern und Interessenten so einen Jahresbericht per PDF geschickt, das damals noch, bevor wir HTML-E-Mails hatten.

Ronny

Und diese PDFs, das war dann immer so mit den Bildern, auch wenn man die dann runtergerechnet, da war immer so 500, 800 Kilo bei, das ist schon relativ groß für eine E-Mail.

Ronny

Und unsere alten Mail-Server sind regelmäßig da irgendwie abgekackt hängen geblieben, mühsam.

Ronny

Dann habe ich irgendwann auf SCS umgestellt.

Ronny

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

Ronny

Und das läuft halt einfach.

Ronny

Also du kannst dir mal eine bliebige 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 dir dazu sagen, was mich auch sehr gefreut hat.

Ronny

Ich habe ja, wie gesagt, für den Vortrag auf der Corn ein gutes Feedback bekommen, habe mich da mit ein paar Leuten unterhalten und habe ja noch ein paar Tipps bekommen, weil ich halt in der Conclusion auch überlegt habe, dass da Sachen drin sind, die meiner Meinung nach auch gut ins Django Core, also in das Framework passen würden.

Ronny

Und dass wir dort, dass ich mich freuen würde, halt was zu contributen, aber ich habe bis jetzt halt noch nicht so die richtigen Sachen hat, es hat nie richtig funktioniert.

Ronny

Habe ich ein paar Tipps bekommen, wie ich das mache.

Ronny

Es gibt nämlich ein Django-Forum, das wird es auch gerade noch ein bisschen, die versuchen gerade so ein bisschen die Kommunikation da auch drin zu zentralisieren und da dann einfach meine Idee, also mit etwas Kleinem anfangen, zum Beispiel dieser Testing Helper, dass man halt quasi durch einem, also dass man alle textbasierten Medieninhalte einer E-Mail, also in den meisten Fällen HTML und Plantext, wirklich einfach gucken kann, ist dieser String da drin.

Ronny

Also zum Beispiel, weiß ich nicht, ist, da steht da drin, lieber Jochen als Anrede oder steht da drin Auftragsbestätigung oder ist da diese Auftragsnummer drin, solche Geschichten.

Ronny

Und diesen Helper haben wir dann in einem Forums-Thread ausdiskutiert.

Ronny

Die Lösung, da haben sich sehr viele Leute beteiligt, die Lösung, die rausgekommen ist, ist viel besser als das, was ich mir alleine überlegt hatte.

Ronny

Es war viel weniger zu implementieren, lustigerweise auch, was man leider gemacht hat.

Ronny

Es gibt diesen schönen Spruch, weeks of programming can save hours of planning.

Ronny

Das ist mal wieder sehr wahr.

Ronny

Und genau, dann ist vor zwei Wochen, glaube ich, dann das auch gemerkt worden in Django Core.

Ronny

Also in 5.2 habe ich meinen ersten Curmit, was mich sehr freut, jetzt nach zwölf Jahren.

Ja, ich cool.

Ronny

Vielen Dank.

Ronny

Genau.

Dominik

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, weil die E-Mail-Lösung bei mir war schon fertig.

Ja, ich kenne das.

Dominik

Und ja, aber eigentlich für das Template wäre es eigentlich cool, das drin zu haben, weil das klingt danach, als müsste man das an verschiedenen Stellen schön benutzen können.

Dominik

Weil halt auch du, wie du sagtest, diese ganzen Features, ne, Templates per HTML und so weiter.

Dominik

Also sehr

gerne genutzt werden.

Ronny

Tatsächlich ein Feature, was ich persönlich sehr mag, einfach so ein Convenience-Feature.

Ronny

De facto interessiert die wenigsten Leute wirklich der Plaintext-Part, weil die normalen, die modernen E-Mail-Clients oder die Witweb-basierten Clients denen eh nicht anzeigen.

Ronny

Das heißt, die einzigen Arten, wo man das sieht, ist, wenn man so ein E-Mail-Client hat, dann geht so ein Pop-Up auf, das nimmt meistens den Plaintext-Part.

Ronny

Oder wenn halt irgendjemand auf seinem Linux 1980 konsolenbasierten E-Mail-Programm noch sitzt, gibt es auch so ein paar Spezies, die das machen.

Ronny

Aber ansonsten sieht es halt niemand.

Ronny

Und ich habe mir mit einem externen Package, als Default rendert der einfach das HTML-Template als Plaintext und tauscht dann halt die Tabellen durch Pipes und sowas.

Ronny

Die Struktur ist nicht schön, es funktioniert, auch Links und sowas kriegt der hin.

Ronny

Also das kriegt dann quasi wieder der Client dann hin, der das dann auch trotzdem auch Plaintext meistens zumindest dann wieder irgendwie interpretiert.

Ronny

Und das ist sehr angenehm, weil da hat man keine doppelten Templates mehr.

Ronny

Und das ist natürlich schon ein Problem, dass man durch diese doppelten Inhalte, wie zum Beispiel bei uns in einem Projekt, wo wir gearbeitet haben, hatten wir bestimmt 50 verschiedene E-Mails, alles Mögliche, um halt den Kunden zu informieren, was so mit seinen Dingen passiert ist.

Ronny

Und da wurde ständig vergessen, eine von beiden Teilen anzupassen.

Ronny

Das kann man natürlich in gewissen Maßen durch diesen Test-Helper lösen, dass man das einfach unit-testet.

Ronny

Nichtsdestotrotz, wenn es ein Rechtschreibfehler oder so oder sowas ist, hat man vielleicht darauf gerade nicht geschaut.

Ronny

Das war ein ständiger Pain und das kann man sehr gut damit halt einfach erschlagen und ja, löst das Problem damit.

Das ist sehr angenehm.

Dominik

Und du hast gesagt, macht auch sowas dann wie Opt-out-Links oder für E-Mail-Newsletter oder sowas dann direkt mit drin.

Dominik

Ist das da in einem Package drin?

Ronny

Also das Package nicht.

Ronny

Die Idee ist quasi, dass man, also diese, diese, dass man, also ich biete quasi, also das Package, nicht ich, nicht ich persönlich, biete so eine Basisklasse und wenn man von dieser Basisklasse erbt, dann kann man halt dann eine E-Mail definieren, kann ein paar Attribute setzen, zum Beispiel das Subject setzen, das Template setzen, dann halt gegeben, noch Kontextvariablen mitgeben, zum Beispiel den Auftrag oder den Link oder irgendwas, was halt der Inhalt der E-Mail ist.

Ronny

Jetzt hat man aber natürlich oft einfach so eine, so ein, also die E-Mails, die man schickt aus dem System, sollen ja irgendwie einheitlich sein.

Ronny

Du hast, wie auch bei der Webseite, hättest du ein Basistemplate.

Ronny

Du hast da das Logo oben drin, du hast da vielleicht eine generelle Anrede, du hast einen Foot, wo ein paar legale Sachen drin stehen, wo vielleicht ein Unsubscribe-Link drin ist.

Ronny

Und diese ganzen Sachen, die ganzen Informationen, die man dafür braucht, ist auch die dynamischen Sachen.

Ronny

Zum Beispiel, man sagt, der Unsubscribe-Link enthält einen Hash oder sowas, dass der Nutzer identifiziert werden kann, der es draufgeklickt hat und solche Geschichten.

Ronny

Wenn man da einfach von der Minor Pony Express Basisklasse ableitet, eine eigene Basisklasse macht, dort dann halt die zum Beispiel die GetContext Data, Weddango kennt, weißt du was ich meine, überschreibt, dann kann man da halt einmal die ganzen Sachen definieren.

Ronny

Oder zum Beispiel, dass man einen Subject-Prefix hat.

Ronny

Ich persönlich finde, es sieht immer schön professionell aus, wenn alle E-Mails, die vom System kommen, halt irgendwie geprefixt sind.

Ronny

Oder zum Beispiel dann irgendwie meinWebshop.de minus und dann halt Account erstellt, Passwort-Reset und was auch immer.

Ronny

Und diese Sachen kann man einmal definieren und jede E-Mail, die man dann weiter erstellt, leitet dann halt von dieser eigenen Klasse ab.

Ronny

Und das, ähm, ich meine, das ist halt ganz normale Objektorientierung, das hat jetzt nichts mit dem PonyExpress zu tun.

Ronny

Aber das ist halt, das macht es sehr angenehm und führt auch dazu, dass die eigentlichen E-Mails, die mich dann am, die ich am Schluss dann, wo ich dann auch die N, die Ente, implementieren muss, dass das wirklich dann meistens halt nur nur zwei oder drei Zeilen Code sind.

Ronny

Was es natürlich auch viele sehr angenehm macht, neue E-Mails hinzuzufügen.

Genau.

Cool, cool.

Dominik

Hast du da auch so White-Label-Templates dabei, die quasi gar nichts vorgeben, aber die es schon gibt und die man einfach benutzen kann?

Ronny

Also ich tatsächlich, wenn ich das mache, ich fange immer an mit einer Google-Suche nach Responsive-E-Mail-Template.

Ronny

Da lande ich immer bei dem gleichen GitHub-Repo, das es schon seit, ich glaube, 2015 oder sowas gibt.

Ronny

Das ist immer noch überraschend gut und das funktioniert auch.

Dominik

Das muss man ja unbedingt in die Show notes stellen.

Ronny

Das ist super simpel.

Ronny

Es tut es aber irgendwie.

Ronny

Ich weiß auch nicht genau warum, wenn man sich halt da ein paar Regeln hält, je nachdem, wie alt die E-Mail-Clients man unterstützen möchte.

Ronny

Die früheren Outlook-Versionen sind ja ja ziemlich wild, die dann unter der Haube so ein Intexplorer 5 oder sowas haben.

Ronny

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

Ronny

Aber wie gesagt, kommt halt auch immer dann darauf an, wie wichtig das dann ist.

Ronny

Also vielleicht akzeptiert wie halt auch mit Browsern.

Ronny

Vielleicht ist es auch einfach okay, wenn dann der eine, der halt noch den Intex-Porter 11 nutzt, wenn das dann die Webseite halt nicht perfekt aussieht.

Ronny

Von daher, das ist auch, wie gesagt, ein Thema, auf das ich mich gar nicht fokussiert habe, weil ich versucht habe, nicht zu viele Probleme in einem zu lösen.

Ronny

Ich habe selbst überlegt, ob ich diese Sache mit den Class-Based-E-Mails und die Sache mit der Testsuite, ob ich die auseinanderziehen soll, weil es ja im Endeffekt die Test-Suiten eigenständigen Nutzen hat, auch wenn ich keine Class-Based-E-Mails verwende.

Ronny

Es ist einfach nur ein Django-Ding.

Ronny

Und man soll ja Packages eigentlich immer so bauen, dass die nach Möglichkeit genau ein Problem lösen, weil es auch dann einfacher zu verkaufen, einfacher zu verstehen ist.

Ronny

Von daher habe ich mich auch entschieden, dann da nicht noch weitere Dinge reinzubauen.

Ronny

Und auch persönlich, weil ich da halt auch nicht so die Pain Points hatte.

Dominik

Also hast du eh schon konnte immer Copy-Paste und musst du aber jetzt nicht bereitstellen mit den Package-Occupy Pastor.

Jochen

Ja, klingt gut.

Dominik

Aber jetzt kommen wir tatsächlich, glaube ich, dann zu Django Tasks, weil, wenn man ihm es verschicken möchte, möchte man das ja wahrscheinlich nicht sequentiell, oder?

Ronny

Genau, nicht den Main Thread.

Ronny

Und genau, die da gibt es ein neues Konzept, wie gesagt, das nennt sich Background Workers.

Ronny

Das lebt aktuell in einem Package namens Django-Tasks.

Ronny

Da muss man aufpassen.

Ronny

Es gibt ganz viele, die ähnlich klingen.

Ronny

Das ist echt jemand.

Dominik

Django Background Task, Django, ja, ja, Background Task Manager, ja,

ja, ja.

Ronny

Genau, auf jeden Fall dieses Django Task-Package, das ist von Jake Howard, der hat das jetzt relativ schnell zusammengenagelt.

Ronny

Das ist echt über echt erstaunlich.

Ronny

Der freut sich auf jeden Fall über Dankes.

Dominik

Das sind nicht Django Background Tasks.

Jochen

Ja, ich merke schon, ich merke schon, ich google hier noch den Fall.

Ronny

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

Ronny

Also wer von euch Interesse an Django hat, möge das gerne anschauen.

Ronny

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

Ronny

Genau.

Ronny

Also in den meisten Projekten, wenn man irgendwas asynchron machen möchte, da meine ich jetzt gar nicht dieses Ingänze relativ moderne Async, sondern einfach, ich möchte irgendwelche Prozesse nachgelagert machen.

Ronny

Zum Beispiel irgendeine große Berechnung machen, irgendeinen Cache befüllen oder halt auch eine E-Mail schicken, weil ich möchte ja mit dem, E-Mail ist ja eine, ich muss ja mit der externen API kommunizieren, um die E-Mail zu versenden, dann möchte ich ja im Optimalfall nicht meinen externen Thread blockieren, äh, mein Main-Thread blockieren.

Ronny

Und genau, deshalb gibt es in jedem Projekt, in dem ich gearbeitet habe, irgendeine Art von asynchronem Processing, meistens in der Form von Salary.

Ronny

Das ist in der Python-Welt sehr bekannt.

Ronny

In der Django Welt.

Dominik

Sehr gefasst und gefürchtet.

Ronny

Ja.

Ronny

Gibt es Django Q oder Q2, ist jetzt aufgekommen, das ist so eine leichtgewichtigere Alternative, weil das Hauptproblem ist, dass Salary erzwingt, dass man irgendeinem Broker dazwischen stellt, der als Message Q dient.

Jochen

Man kann das auch so konfigurieren, dass die direkt die Datenbank nimmt.

Dominik

Oder der hat eine lokale Dateiendessung, was reinschreiben kann, dann macht irgendein SQLite noch extra auf.

Jochen

Okay, das weiß ich.

Jochen

Ja, aber ich glaube, man muss es nicht unbedingt, also es ist üblich, ja.

Ronny

Und es ist auch, also ich habe das, ich habe das mehrfach schon gesucht und für die Result-Backends, also bei Salary, wenn quasi um die Ergebnisse zu speichern und dass im Endeffekt so eine Art Lok, was passiert ist.

Ronny

Dafür geht das, es ist relativ einfach, aber für den Broker selbst bin ich zumindest immer damit gescheitert.

Ronny

Ich habe tatsächlich nie so viel investiert darin.

Ronny

Auf jeden Fall für die allermeisten Cases ist es halt einfach harter Overkill, wenn man da halt irgendeine Postgres oder Maria DP hat.

Ronny

Die kann in den, zum Beispiel bei uns, in den meisten Fällen, kann die paar hundert Tags Tasks, die am Tag laufen, problemlos abfrühstücken, ohne dass sie da irgendwie in Verlegenheiten kommen.

Ronny

Selbst bei ein paar Tausend Tasks ist es immer noch kein Problem.

Ronny

Vor allem, wenn man dann vielleicht auch sagt, dass dir ein großer Task-Feld auch eher nachts läuft für irgendwelche Sachen, da ich auch keine Userlast habe.

Ronny

Und das wird allgemein sehr stark als Overkill angesehen dazu, wie Dominik gerade schon gesagt hat, viele Leute fürchten auf Salary aus verschiedenen Gründen.

Die ist dann oft

Dominik

kaputt auch eingestellt, verhält sich komisch.

Dominik

Aber vielleicht ist die Frage, ob es an Salary liegt oder daran, dass Async halt ein bisschen schwieriger ist.

Jochen

Nee, also da würde ich gerne nochmal kurz eine Begriffsklärung machen, weil viele sagen ja, Async, ja, und ich höre auch immer, wenn von Async die Rede ist, dass dann Leute sagen, so, das merke ich dann irgendwie nach einer gewissen Zeit, dass Leute eigentlich sowas wie Salary meinen.

Jochen

Aber das hat ja jetzt mit zum Beispiel mit Async.io oder so, damit überhaupt gar nichts zu tun.

Jochen

Das ist was

ganz anderes.

Dominik

Ja, also Salary ist ein eigener Worker-Prozess, wenn ich verstehe, der halt einfach Tasterarbeitet zu einer bestimmten Zeit, weil die halt in der Liste stehen und da also diese Que leert.

Jochen

Ja, du hast so eine Anzahl von Workern und du hast halt irgendwie genau ein Ding, das halt eventuell auf so einer Que drauf sitzt und dann verteilt es halt Jobs an diese Worker und die machen dann halt Dinge und schreiben ihre Resultate wieder irgendwo hin.

Jochen

Ja.

Und genau.

Dominik

Ich glaube, warum die Leute denken, dass das Async ist, weil das halt meistens, wie schon gleich gesagt, nicht im Main-Prozess läuft, obwohl man das auch machen kann.

Dominik

Du kannst ja mit Django mitstar oder so.

Dominik

Die Frage ist auch da, was das halt heißt.

Dominik

Also weil Jochen weiß das bestimmt besser, aber es gibt ja irgendwie verschiedene Event-Ques, die man nutzen kann.

Dominik

G-Event oder Event oder irgendwas.

Nee, nee, gar nicht.

Jochen

Damit hat es überhaupt nichts zu tun.

Jochen

Also mit G-Event oder sowas hat es überhaupt nichts zu tun.

Jochen

G-Event ist sowas wie Async-IO, ganz anderes.

Dominik

Aber kann man machen, also wenn man das mit Django selber macht, dann muss man sich überlegen, welche da benutzt wird.

Jochen

Ja, aber also nicht sowas wie G-Event oder auch nicht sowas wie Async.io, gar nicht.

Jochen

Also das ist einfach was ganz anderes.

Jochen

Das ist auch nicht eine Geschichte, die im gleichen Prozess normalerweise stattfindet, sondern du hast halt tatsächlich andere Prozesse.

Dominik

Ja, und wenn man die hat, genau, wenn man die anderen Prozesse hat, dann schon.

Jochen

Anders geht es nicht.

Okay.

Jochen

Also, genau.

Jochen

Anders, jedenfalls nicht, dass ich wüsste, dass das irgendwie anders gehen würde, weil wie soll das funktionieren, wenn du halt jetzt irgendwie, keine Ahnung, in dem Regel, also nehme mal an, du stößt halt an in einem Request, also du hast halt irgendwie einen Button, da steht drauf, send E-Mail, drückst auf E-Mail und wie soll das jetzt gehen, dass dann eine E-Mail, ja, so vielleicht geht es tatsächlich irgendwie, aber das ist alles sehr hässlich.

Jochen

Also du willst eigentlich einen Task dafür starten, ganz

woanders hast du.

Dominik

Du hast recht, du willst das auf jeden Fall.

Dominik

Da würde ich dir auf jeden Fall zustimmen, aber ich glaube, das ist unbedingt definitiv.

Jochen

Ja, also aber diese beiden Dinge haben eigentlich nichts miteinander zu tun.

Jochen

Auch wenn das eine für das andere vielleicht so halb irgendwie verwenden kann, aber nee, das ist eigentlich was ganz anderes.

Ronny

Wie gesagt, es ist halt, es ist halt, also die, wenn du dir, wenn du quasi auf den Main-Thread schaust, dann läuft es halt irgendwie nicht da drin.

Ronny

Von daher liegt es halt nahe, das irgendwie asynchron zu nennen.

Ronny

Auch wenn das mit dem Async, mit dem Python-Async natürlich nichts zu tun hat, technisch.

Ja.

Jochen

Genau, aber es läuft halt nicht irgendwie Async, sondern oder in einem anderen Thread, sondern es läuft in einem anderen Prozess.

Jochen

Also hat überhaupt gar nichts mehr mit dem Ding zu tun, mit dem da Interpreter da läuft.

Jochen

Also, ja.

Ronny

Genau, und insgesamt das Salary-Setup ist halt auch relativ, also es ist halt da, da schießt man wirklich schon auf, also mit sehr großen Kanonen, weil ja meistens man dann mehrere Worker hat, man hat einen Beat, der für Scheduling, also der im Endeffekt diesen Crontub dann ersetzt.

Ronny

Dann gibt es noch dieses Monitoring-Tool Flower, was so mittelgut funktioniert und eher schlecht als Recht meiner Meinung nach gewartet ist.

Ronny

Nichtsdestotrotz, wenn man mal irgendwie reingucken möchte, hilft es schon.

Ronny

Dazu kommt halt noch, dass man, wie gesagt, meistens halt dann diesen Message Broker braucht, der halt dann meistens ein Redis oder ein RabbitMQ oder irgendein Derivat davon ist.

Ronny

Und das ist halt für viele Projekte, vor allem am Anfang ist das halt enormer, ist das ein normaler Setup-Aufwand.

Ronny

Wer das erste Mal in seinem Leben Salary einrichten muss, der wird daran keinen Spaß haben.

Dominik

Ich weiß, weil auch wenn du halt zum Beispiel auf das Redest, wo du sonst nichts anderes benutzt oder sowas.

Dominik

Das läuft halt halt die ganze Zeit rum so wie.

Ronny

Genau.

Ronny

Und es blätter das Setup halt enorm auf und es ist jetzt halt seit seit scheinbar auch Jahren ist es halt irgendwie allen bewusst, dass es halt schon cool wäre, wenn Django da selber was könnte, um man halt eben nicht mit da, ne, mit Salary kommen muss.

Ronny

Wie gesagt, die Popularität von Django Q oder Q2, wie das wieder Nachfolger davon heißt, der ist ja tatsächlich jetzt auch nicht aus der Welt, weil der im Endeffekt wirklich sehr, sehr leichtgewichtig einfach nur halt Dinge irgendwann außerhalb in einem anderen Prozess abarbeitet.

Ronny

Und die Idee von Jack Howard ist jetzt, das wirklich in Django zu integrieren, hat es erstmal ein Package gemacht, wie man das halt optimalerweise auch so macht, dass Leute es auch separat testen können.

Ronny

Und das Ganze hat er vorgestellt.

Ronny

Das war, ich weiß nicht, ob es wirklich eine Keynote war, aber es war auf jeden Fall de facto eine Keynote.

Ronny

Ich glaube, das war das, was die Leute, wo die Leute am meisten und am heißesten drauf waren.

Ronny

Und das ist sehr spannend, weil ich tatsächlich auch bei mir in meinen diversen Projekten, glaube ich, auch einfach aktiv zurückbauen würde, weil ich einfach happy damit wäre und auf das Salary-Setup in den allermeisten Fällen verzichten kann.

Ronny

Es gibt jetzt wirklich Cases, wo man sagt, okay, wir machen so viele, wir machen so komplizierte Dinge.

Ronny

Es macht natürlich Sinn, das Explizites zu haben.

Ronny

Nur wie immer, es macht halt, vor allem, wenn man jetzt auf ein Budget achtet, macht es natürlich schon Sinn, da erstmal mit einer einfachen Lösung anzufangen, einer einfachen, soliden Lösung, billig und schnell, rächt sich meistens irgendwann.

Genau.

Ronny

Was übrigens auch ganz interessant war, ich hab der Talk von Carlton Gibson, ging im Endeffekt um mal wieder HTMX ist super und mit Alpine.js kann man zusammen coole Dinge machen.

Ronny

Und sein Treiber davon war, dass er halt sagt, dass jetzt, wo wir in einer Zeit leben, wo die Zinsen seit langer Zeit wieder ein bisschen höher sind, Venture Capital deutlich seltener geworden ist und deutlich kleinere Mengen vergeben wird.

Ronny

Und dass deshalb dieses, ich habe ein Startup und ich möchte irgendwas ausprobieren, dass die einfach mit viel weniger Geld die Sachen bauen müssen.

Ronny

Und dass es halt nicht so, wir bauen es die in der perfekten Welt, sondern es muss schnell gehen, es muss irgendwie solide sein, aber es muss halt vor allem effizient sein.

Ronny

Und dass er deshalb nochmal ein HTMX-Tag verkauft hat, was ich persönlich auch absolut unterschreiben würde.

Ronny

Und das Interessante ist halt, dass ich zum Beispiel habe jetzt noch nie, ich meine, ich habe an ein paar Startup-Projekten mitgearbeitet, aber jetzt nicht mit riesigem Venture Capital.

Ronny

Das ist halt eher so in deutschen Scales gewesen.

Jochen

Ja, genau, da gibt es das auch nicht so.

Ronny

Und es war immer für uns im Agenturbusiness, wir haben halt ein Budget und das ist eigentlich eher tendenziell zu klein als zu groß.

Ja, wie immer.

Ronny

Und das ist einfach, das ist interessant, weil das, ja, ich meine, wird ihm vorher auch schon klar gewesen sein, aber das nochmal so auf den Punkt zu bringen und dann zu sagen, ja, genauso sehe ich das auch, weil ja natürlich kannst du, wenn du mit React oder View, kannst du ausgefallene Reference bauen, kannst du mehr Dinge tun.

Ronny

Die Frage ist, brauchst du das und schaffst du das in dem Geld, das du hast?

Ronny

Und das finde ich ist halt so der spannende USB daran.

Ronny

Klar, wenn man erstmal seine komplette Applikation in HTMX ohne API gebaut hat, irgendwann kommt einer und sagt, ich möchte das alles anders haben, das ist natürlich auch nochmal teuer.

Ronny

Also ich glaube, man muss da auch ein bisschen in die P.

Ronny

Also nicht nur sagen, wie viel Geld haben wir jetzt, sondern wo geht das Ganze hin?

Ronny

Nichtsdestotrotz persönlich finde ich das auch sehr spannend.

Ronny

Der Talk war auch sehr cool und sehr energetisch, wie Kalten Gibson halt immer so ist.

Ronny

Genau, war echt, echt super spannend.

Jochen

Ich glaube, dieses Django Template Partials kommt halt auch irgendwie jetzt, ich weiß, rein.

Jochen

Ich weiß nicht, ob das schon mal 5.1 war oder doch eher 5.2, wahrscheinlich eher 5.2 nehme ich mal an.

Jochen

Oder hat er auch über dieses Neapolitan-Ring gesprochen, was er da?

Jochen

Genau.

Jochen

Das ist ja auch so ein.

Dominik

Neue Quad-Views oder so.

Ronny

Ja, genau.

Ronny

Also das dreht sich alles um diese Idee des Locality of Behavior.

Ronny

Kalten gibt es dann jetzt vor nicht allzu lange Zeit einen Newsletter angefangen, Stack Report heißt der, wo er einmal im Monat sehr ausführlich zu einem Thema schreibt.

Ronny

Ich habe den abonniert, das kostet, glaube ich, irgendwie fünf Euro oder sowas.

Ronny

Bis jetzt hat es sich, also ich glaube, jetzt gibt es erst seit drei Monaten, bis jetzt hat sich es gelohnt, dass ich mache da gerne auch nochmal Werbung für ihn, unbezahlt.

Ronny

Das finde ich echt cool.

Ronny

Also es war echt interessant.

Ronny

Er hat jetzt über diverse Dinge da geschrieben und in dem Aktuellen von diesem Monat ging es halt um Locality of Behavior.

Ronny

Und er versucht halt im Endeffekt das Konzept zu verkaufen.

Ronny

Also er sagt halt, dass wenn halt alles, was du brauchst, in einer Datei steht, ist es halt einfacher zu verstehen.

Ronny

Und er argumentiert nicht, dass man alle guten Principles, die man gelernt hat, sofort wegwirft, sondern dass man halt dieses Premature Optimizing aufhört.

Ronny

Dass man sagt, okay, ich mache, ich fange jetzt schon mit, weiß ich nicht, DDD an und mache das alles perfekt in vielen Dateien.

Ronny

Ein Neuansteiger in einem Projekt hat keine Ahnung, keine Chance zu verstehen, was eigentlich passiert, sondern fangt erstmal klein an und refactoret, wenn es wirklich braucht.

Ronny

Weil viel von dem, ah ja, ich brauche es nochmal, ich mach das mal irgendwie woanders hin, kommt dann nachher mit, naja, ist doch irgendwie anders geworden, war doch nicht so, wie ich es mir gedacht habe.

Ronny

Und dann hat man halt immer diese doppelte Refactoring-Schleife.

Ronny

Und dieses Tango Django Template Views ist halt die Idee, äh,

Jochen

dieses Django Template Partials,

Ronny

Partials, sorry, Partials, dass man halt wirklich sagen kann, okay, diesen Block kann ich jetzt mit HTMX neu rendern lassen.

Ronny

Der ist aber trotzdem noch in der großen Datei und ich muss es nicht zerpflücken, wie man es halt vorher, also stand jetzt mit Vanilla Django macht.

Ronny

Und diese Neapolitan Crud Views ist auch die Idee, dass du halt wirklich mehr Sachen an einer Stelle zusammen hast.

Jochen

Dass man im Grunde eine Klasse hat, wo die ganzen, also Getposts und sonst die Dinge, die da passieren, halt alle drin sind.

Ronny

Ich persönlich finde, dass Locality of Behavior ist, glaube ich, eine gute Sache.

Ronny

Ich meine, das geht auch so ein bisschen nach Yagni, also you ain't gonna need it.

Ronny

Dass man halt nicht, dass man erstmal überlegt, so muss ich jetzt wirklich anfangen, alles so hoch zu skalieren, wie es unbedingt notwendig ist.

Ronny

Nichtsdestotrotz, wenn ich halt in einem Projekt, wenn ich weiß, ein Projekt wird eine gewisse Größe erreichen, die Dinge zu tun, die ich jetzt schon weiß, die sinnvoll sind, glaube ich, dass man sich da dann andererseits auch wieder ein paar Refactoring-Zyklen spart.

Ronny

Aber ich glaube, generell ist man schon sehr prone als Entwickler over zu engineieren und ich glaube, dass dich im Kopf zu behalten, so muss ich das jetzt wirklich tun?

Dominik

Also ein bisschen so ein Trade-Off mit KISS oder sowas und schon simpel und dass du irgendwie tatsächlich versuchst, vielleicht, also was ich zum Beispiel finde, ist, dass wenn halt zu viele Sachen in einer Datei drin stehen, das heißt, wenn das irgendwie am Anfang überblicklich ist, wird es halt auch dann wieder hässlich.

Dominik

Und wenn da eine gute Modulstruktur darunter liegt, einfach, also einfach nur vom Namespacing her, hilft das fast am meisten, finde ich.

Dominik

Was dann auch gar nicht schwer zu verstehen macht, wenn das halt alles in einem Directory liegt zum Beispiel, dann ist das schon vielleicht ein bisschen näher dran.

Dominik

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

Dominik

Das ist so, ja.

Jochen

Oh, ich würde ganz kurz nur einmal kurz einwerfen, nochmal zu dieser Task-Geschichte, was ich halt oft sehe, was ich finde, was man vermeiden sollte.

Jochen

Wenn Leute sowas machen und das halt irgendwie, weil oft macht man das dann ja, man braucht es schon meistens, aber dann doch nicht irgendwie so dauernd, dass man da, dass die, dass viele, dass alle Leute da irgendwie viel Erfahrung mit hätten.

Jochen

Und was ich jetzt schon häufiger gesehen habe und was in der Praxis dann so zusätzlich zu diesem ganzen Infrastrukturding auch nochmal ordentlich Schmerzen macht, ist halt, wenn Leute anfangen, irgendwie so ganz Kaskaden von Tasks irgendwie zu schreiben.

Jochen

So gerade bei Celeries ist dann halt auch sehr einfach.

Jochen

Und dann, weil man da Abhängigkeiten zwischen und dann und Leuten ist gar nicht so bewusst, dass es bedeutet, ja, dass es geht jedes Mal über eine Prozessgrenze, dann wird da irgendwie wieder so irgendwas wieder realisiert, dann muss der ganze Kram wieder so hauptsächlich realisiert werden.

Jochen

Und dann geht es irgendwo zwischendurch schief und dann hast du halt irgendwie so ein explodiertes Gedarm irgendwie, was dann rumliegt.

Jochen

Also was ich nur empfehlen kann, ist, man macht halt eine Funktion oder so eine Methode an irgendeinem Modell oder so, wo man halt das, was man tun möchte, halt reinschreibt und dann testet man das ganz normal, synchron irgendwie, wie man Sachen halt so testet.

Jochen

Und dann sagt man in einem Salary-Task eigentlich nur, okay, man ruft halt dieses Ding auf, fertig.

Ronny

Wie man auch im Video schreiben würde.

Ronny

Möglichst schlank und eigentlich nur die Dinge komponieren, denn wirklich da implementieren.

Jochen

Und keine Logik in die Tasks parken, sondern die von den Tasks, also in dem eigentlichen Salary-Task immer nur irgendwie Logik, die irgendwo anders ist aufrufen.

Jochen

Aber wenn du halt Logik hast, oder am besten Logik verteilt über mehrere Tasks, dann passieren scharöckliche Dinge oder Umständen und ja.

Absolut.

Jochen

Genau, das war nur so ein kurzer Einwurf.

Dominik

Es gab da noch so ein tolles Thread zu im Carlos Sochel, den du auch den, wo du den Link vorhin geteilt hattest, der sehr interessant war.

Dominik

Einige coole Leute, unter anderem Carlton Gibson selber und der Hönick und so.

Jochen

Ja, genau.

Jochen

Und diverse Leute dagegen gab es einen Thread zu, was braucht man jetzt bei Background-Tasks eigentlich alles.

Jochen

Und was sind da die Anforderungen genau und was sind die Bildung?

Dominik

Und auch alle haben sich über Salary beschwert aus Gründen.

Jochen

Ja, ich kann das mal, ich kann, ja genau, das Ding verlinke ich auch mal.

Jochen

Ja, Fediverse ist halt zurzeit, also wenn er noch nicht ist, da sind halt alle.

Dominik

Das geht tatsächlich auf meiner Liste.

Dominik

Ich lese halt immer so ein bisschen mit, aber naja.

Jochen

Ja, also da ist, also das fühlt sich an wie so Twitter früher, so ein bisschen Blümchenwiesemäßig.

Jochen

Weil alle Leute sind, oder viele, viele der Leute, die man so

Dominik

kennt, sind da, Kleistranzen.

Jochen

Und man kann sich mit denen einfach so unterhalten und so.

Ja, cool.

Genau.

Jochen

Ja, ist ein interessantes Thema.

Ronny

Genau.

Ronny

Und ich bin, was ich auch interessant fand, ich habe mit auf der Konferenz noch ein Wort mit dem Creator da gewechselt.

Ronny

Und er meinte auch, dass früher wurde, also wenn ich es richtig verstanden habe, ich will mir jetzt keine Worte im Mund legen, aber wenn ich es richtig verstanden habe, meinte er, dass früher bei Django eher so die Idee war, alles, was nach Chor kommt, muss mehr oder weniger so die eierlegende Wollmilchsau, 110% Lösung sein, weil das ist ja Django, das muss ja so.

Ronny

Und jetzt war halt die Idee, wirklich zu sagen, naja, aber lass uns doch erstmal mit was anfangen, was halt alleine steht, also dieser MVP-Gedanke.

Ronny

Und natürlich kann man noch 400 Sachen nach und dazu bauen, aber braucht man die wirklich?

Ronny

Will das die Crowd so?

Ronny

Und dass die jetzt wirklich anfangen und versuchen, ja, also wirklich mit einem kleinen Inkrement zu shippen, dass das halt stehen kann, das laufen kann und alles, was halt danach kommt, einfach zu gucken, wie reagieren die Leute.

Ronny

So, was für Sachen werden wirklich angefragt.

Ronny

Das finde ich halt sehr interessant, weil ich glaube, das ist einfach so ein generelles Ding.

Ronny

Wenn man irgendwie in der Softwareentwicklung ist, dieser MVP-Gedanke ist so, so, so zentral.

Ronny

Und da kann man so viel falsch machen und so viel Geld und Projekte und Chaos verlieren, wenn man halt nicht dem MVP denkt.

Ronny

Weil schöner geht halt immer und ja, genau.

Jochen

Ja, und genau, bei Ruby on Rails ist halt auch diese Background-Horse-Geschichte schon seit Ewigkeiten drin.

Jochen

Und das war halt mal eine der Geschichten, die in Django halt, ja, wo man da halt irgendwie dann immer sagen musste, ja, nimm halt Terry.

Jochen

Ja, es tut weh, nimm es halt trotzdem.

Jochen

Das, was es gibt.

Jochen

Ja.

Jochen

Und wenn sich das jetzt ändert, dann ist auf jeden Fall ein Pain point irgendwie auch weniger sehr gut.

Ronny

Also die haben gesagt, dass wenn es gut läuft, landet das mit 5.2.

Ronny

Du weißt, wann 5.2 rauskommt, hattest du gesagt?

Jochen

April hatte, ja.

Ronny

Genau.

Ronny

Dann wird dann neben meinem kleinen Testhelper das zweite große Ding, wenn dann die Background has.

Dominik

Sehr gut, sehr gut.

Jochen

Genau.

Jochen

Ja, also HTMX war diesmal auf der Djungle Korn also auch quasi wieder so ein.

Jochen

Es war die letzten Male eigentlich immer ein großes Thema gewesen.

Genau.

Ronny

Ja, ich meine, HTMX ist halt, ist halt im Endeffekt die Silver Bullet, mit der sehr, sehr viele Leute dann HTMX vermeiden können.

Ronny

HTMX JavaScript vermeiden können, sorry.

Ronny

Was natürlich so ein bisschen ein Gänsefüßchen ist, aber natürlich immer noch ein bisschen JavaScript braucht und das auch sehr mit JavaScript geschrieben ist.

Ronny

Nichtsdestotrotz vermeidet das halt, dass man in Projekten JavaScript verwenden muss, was natürlich für viele tendenziell eher Backendler, wie ja Django aktuell verwendet wird, weil es ja auch ein sehr Data-Driven-Framework ist.

Ronny

Das ist natürlich sehr angenehm.

Ronny

Da zähle ich mich auch dazu.

Ronny

Ich habe es auch irgendwie nie geschafft, mich ernsthaft mit einem JavaScript-Framework zu beschäftigen.

Ronny

Und ich bin auch in meinem Beruf immer wieder damit konfrontiert, bei den Entscheidungen, wenn man ein neues Projekt startet, was nehmen wir jetzt?

Ronny

Und wir haben uns jetzt tatsächlich bei dem letzten Projekt, das gestartet ist, auch aktiv für HTMX entschieden.

Ronny

Auch mit einem Team, die tendenziell eher auf JavaScript-Front-endy sind.

Jochen

Oh, das ist interessant.

Ronny

Und weil wir einfach auch gesagt haben, wir glauben, dass das Projekt ist halt, das ist eine ganz klassische Backend-Applick.

Ronny

Man hat viele Listen, man hat viele Crud-Views.

Ronny

Es gibt zwei, drei, vier Sachen, die so ein bisschen ausgefallen sind, aber auch nicht so wirklich.

Ronny

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

Ronny

Und wir sind aber der Meinung, dass man, dass dafür halt HTMX wirklich gut funktioniert, weil das ist das, was Django wirklich gut kann.

Ronny

Und das Projekt wird, ist es auch nicht etwas, wo man sagt, das ist jetzt irgendwie, wenn die Firma durch die Decke geht, dann so und so, sondern das wird immer eine Backend-Applikation bleiben.

Ronny

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

Ronny

Aber das wirkt einfach nach dem perfekten Hammer für diesen Nagel.

Ronny

Was nicht heißt, dass wenn man jetzt sagt, ich möchte es, keine Ahnung, das nächste Instagram oder sowas bauen, dass das vielleicht, wenn man schon die Kohle dafür hat am Anfang, dass das vielleicht dann nicht unbedingt die beste Wahl ist.

Ronny

Geht wahrscheinlich auch alles trotzdem.

Ronny

Aber ich glaube, umso mehr, sag ich mal, wirkliche Endnutzer, also jetzt nicht Mitarbeiter der Firma oder Administratoren, sondern wirkliche Endnutzer, wenn man auf der Plattform hat, wahrscheinlich schwingt da dann immer so die Notwendigkeit für ein richtiges, volles Frontend-Framework, wo man das ja auch in ganz Füßen sehen muss, React und Bio sind ja auch keine Front-end Libraries, schwingt dann doch eher so das Pendel in diese Richtung.

Ronny

Und ich glaube, diese Frage kann man halt wie jede einzelne Tech-Frage damit beantworten.

Ronny

Es kommt drauf an.

Ronny

Ja, ja, klar.

Ronny

Nichtsdestotrotz wird das natürlich hart gefeiert in der Community, weil wie das auch bei mir so ist, das ist es halt, ich meine, wie gesagt, ich bin seit zwölf Jahren dabei, das erste Mal, dass man, dass ich jetzt wirklich ein Werkzeug bekomme, das vernünftig funktioniert.

Ronny

Und das, was man früher so mal gemacht hat, wie jQuery und sowas, definiere ich definitiv nicht als vernünftig funktionieren.

Jochen

Ja, das hat nicht.

Jochen

Also ging, also man konnte man da schon nicht, aber das hat nie wirklich gut funktioniert.

Jochen

Das ist richtig, ja.

Jochen

Wobei ich eine Sache hinzufügen würde, etwas, was ich in letzter Zeit auch häufiger mache und wo ich auch denke, oh, das ist auch alles gar nicht schlecht und es geht in die richtige Richtung, sind halt so Webcomponents.

Jochen

Das ist eigentlich auch ganz nett.

Jochen

Da muss man dann halt JavaScript schreiben.

Jochen

Das ist halt so ein bisschen doof.

Jochen

Aber man kann halt, irgendwie, das hält sich dann halt in Grenzen.

Jochen

Also und man weiß halt, also das ist, habe ich letztens wieder erlebt und das tut jedes Mal weh.

Jochen

Irgendwie größere Projekte, die man lange nicht angefasst hat, irgendwie, das ist immer schmerzhaft.

Jochen

Also wenn man jetzt irgendwie, ja, da so, zum Beispiel, das war jetzt beim View-Projekt, ist es halt, irgendwas geht nicht mehr und es dauert immer, bis man rausgefunden hat, was denn da jetzt eigentlich das Problem ist und bis das alles wieder rund läuft und dann vergehen vielleicht auch nochmal ein paar Tage oder Wochen, bis man wirklich alles gefunden hat, was vielleicht nicht mehr ging, weil manchmal war es nicht so offensichtlich.

Jochen

Und das ist einfach total nervtötend.

Jochen

Also, und genau, das Problem hat man mit Web Components halt auch nicht, weil das ist halt Standard und das, wenn das jetzt funktioniert, funktioniert das in zehn Jahren halt auch noch ganz genauso und ja.

Ronny

Tatsächlich haben wir jetzt dem Projekt mal Django Components ausprobiert, das ist ja auch eine von diesen vielen Ansätzen, da gibt es ja auch Django Slippers und wie die alle heißen,

Dominik

um das letzte Django Slip Slippers,

Ronny

um im Endeffekt dieses Komponentendenken in die Django-Welt zu bringen, weil de facto die Django-Template-Welt ist ja immer noch, wie sie vor 15 Jahren mal irgendwann angefangen hat.

Ronny

Und da zu überlegen, dass man Komponenten bauen möchte, vor allem in so einer Konvention mit Tailwind, die ja dann eher diese Utility-Based-Klasse, also ein normales Tailwind-Div hat noch 10, 15 Klassen.

Ronny

Das eskaliert ziemlich hart.

Ronny

Ich finde es gut, aber wie gesagt, es ist nicht schön anzugucken und von daher die Sachen eher zu kapseln und zu sagen, ich habe jetzt nicht wie bei Bootstrip zum Beispiel früher, ich habe hier eine Button-Class und dann sieht jeder Button halt so aus.

Ronny

Wenn ich was überschreiben muss, bin ich halt arm dran, dann wird es schwierig.

Ronny

Sondern dass man halt wirklich die Sachen individuell mit diesen Klassen halt definieren kann, ohne halt die ganze CSS-Magie da hinter 100% verstehen zu müssen.

Ronny

Und da diese Komponenten in der Djungle Welt zu machen, klingt super interessant.

Ronny

Das konnte man vorher auch schon mit Includes machen.

Dominik

Ja, genau, mit Includes, ja.

Dominik

Es gibt auch eine neue Version von Includes irgendwie, die das so ein bisschen zwischenspeichern können, irgendwie auch.

Ronny

Ja, auf jeden Fall, da gibt es Packages, die expliziter dafür da sind, um diese Frontend Learnings auch in die Django Welt zu bringen.

Ronny

Wir haben uns jetzt für Django Components entschieden.

Ronny

Das scheint auch okay gut zu funktionieren.

Ronny

Habe auch von einem Freund gehört, der das ausprobiert hat, der meinte, dass er damit gut und der eigentlich auch sehr viel und gerne im Frontend gemacht hat, jetzt aber aus besagten Effizienzgründen halt gewechselt ist.

Ronny

Und genau, das ist auf jeden Fall eine interessante Sache.

Ronny

Also wer sich damit beschäftigt und halt ein Frontend bauen möchte, für das man sich in 2024 nicht schämen muss, dann glaube ich, ist diese HTMX, L PanJS und dann irgendwas an diesen Komponentenlibraries, die sich gerade, die emergieren gerade alles.

Ronny

Ich glaube, da gibt es noch nicht so diesen De facto-Standard.

Ronny

Aber wenn man sich da so ein bisschen reinliest, da findet man relativ, also nicht viel, viel, aber da gibt es auf jeden Fall schon Inhalte und da kann man sich im Endeffekt auch irgendwas aussuchen.

Ronny

Das ist alles nicht so kompliziert, was einem gefällt.

Dominik

Habt ihr immer schon mal herumgespielt mit dem HTMX-Ding für Mobile?

Dominik

Also in einem Hyper Media Systems Buch das letzte Kapitel, wo es dann darum geht, dass man das Ganze auch in Mobile einsetzen kann oder soll oder so.

Jochen

Als so,

Dominik

also eine Art von XML-Endpunkt, die dann irgendwie gerendert werden kann von, ich glaube, React war es tatsächlich, React Native.

Jochen

Ach so, ja.

Dominik

Und dann Apps hat auf dem Telefon, die dann diese einzelnen Komponenten halt mitziehen können.

Dominik

Einfach von deinem normalen Endpunkt.

Jochen

Klingt.

Jochen

Klingt will, ich hab's noch nicht, nee, nicht angeguckt.

Jochen

Also ich habe auch für so Mobile, finde ich, eigentlich sind die Webviews oder wie haben die nach, wie heißen die noch?

Jochen

Progressive Web Apps, genau.

Jochen

Ist eigentlich eine sehr, sehr schicke Geschichte.

Jochen

Da geht auf iOS auch deutlich mehr inzwischen als früher.

Dominik

Wurden die nicht irgendwie gebannt?

Jochen

Nee.

Jochen

Also das, ah ja, Apple hat da gedroht, aber das ist dann nicht passiert.

Jochen

Glücklicherweise hat doch ein bisschen zu viel Gegenwind gegeben.

Jochen

Ja, und ich denke, dass man vieles, was halt man irgendwie vielleicht mit nativen Apps früher gemacht hat, auch mit Progressive Web-Apps hinbekommt.

Jochen

Und ansonsten sind halt die Mobile-Geschichten halt immer so eine komplizierte Geschichte, wenn man da wirklich eigene für manche Sachen, wenn man, wenn man eh dafür ein Team hat und genug Geld, dann ja, das ist ein bisschen.

Dominik

Ich mache das tatsächlich irgendwie mal ausprobieren.

Dominik

Ich finde diesen Ansatz ganz cool, halt Par-Media für Mobile auszuprobieren.

Das klingt irgendwie super.

Dominik

Und das ist der selbe Standard da und dasselbe Prinzip.

Ronny

Es ist eigentlich, glaube ich, eine ganz gute Überleitung zu dem nächsten Mini-Thema, nämlich Lightning Talks.

Ronny

Wer es nicht kennt, die Lightning Talks ist in ihr, das ist bei den Django Cons zumindest.

Ronny

Ich war noch auf keiner anderen Konferenz, aber ich glaube, es gibt auch an anderen Konferenzen.

Ronny

Die ist, dass am Ende des Tages, fünf bis zehn Leute einen hart getimten fünf Minuten Maximalvortrag halten könnte bei irgendeinem Thema.

Ronny

Das heißt, die Vorbereitung ist sehr gering bis nicht vorhanden bei den Leuten.

Aber das war sehr cool.

Dominik

Der coolste Vortrag, den ich gehört habe, war fuck it.

Zwei Minuten.

Ronny

Und die Idee dahinter ist einfach, genau das, was du gerade gesagt hast, ey, ich habe dann ein Buch, dieses Kapitel gelesen, finde ich total spannend, habe ich noch nicht ausprobiert, wollte ich euch mal mitgeben.

Ronny

Oder was ich vorhin gemacht habe, ey, es gibt ja noch Components, wer sich dafür interessiert, schau euch das mal an.

Ronny

Und da ist normalerweise die Informationsdichte sehr hoch und auch die Unterhaltungsdichte sehr hoch, weil natürlich Leute auch dann einfach mal einen Spaßvortrag machen oder irgendwas Absurdes aus ihrem Alltag erzählen.

Ronny

Ja, und dann

Dominik

kannst du deine Ukulele mitbringen.

Ronny

Genau.

Ronny

Und ich finde, dass wir haben jetzt das auch bei uns intern in unserem, also bei meiner Firma bei den internen Barcamps so gemacht, dass wir auch einen expliziten Lightning Talk-Block haben, weil viel von so Content-Teilen und Wissensmanagement scheitert halt daran, dass die Leute sich wirklich aufrauffen müssen, Sachen vorzubereiten, Sachen zu recherchieren.

Ronny

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

Ronny

Es gibt vielleicht Erwartungshaltungen, die existieren mögen oder auch nicht existieren mögen.

Ronny

Aber so einen Lightning Talk gibt es das halt nicht.

Ronny

Du stellst dich da hin oder in dem Fall jetzt in der Post-Corona-Nuen Moderne, du sitzt dann hinter deiner Webcam und teilst dann halt kurz dein Browser oder deine zwei Slides und sagst, Leute, das habe ich gesehen, das habe ich gelernt, voll gut oder auch voll kacke.

Ronny

Und das ist ein echt cooles Format, dem man auch, wie gesagt, gut, glaube ich, in Firmen oder auf Meetups auch sehr gut.

Ronny

Wir haben mal einmal vor ein paar Monaten eine, ich glaube im Februar diesen Jahres haben wir eine komplette Lightning Talk-Session gemacht beim Django Meetup Köln hier.

Ronny

Und das ist echt ein cooles Format, was viele von den Problemen löst, die man sonst so hat, wenn man Content teilen möchte.

Dominik

Ja, ich bin auch, also gerade in Nebenformat, also das irgendwie für Konferenz oder Barcamp oder was man auch immer hat, wo man zusammenarbeitet, ist dieses Lightning Camp, oder Lightning Camp sage ich schon, das Lightning Talk-Format echt cool geeignet, um so ein bisschen lockere Atmosphäre reinzubringen.

Dominik

Entweder am Ende eines Tages oder am Anfang von diesem, wir teilen uns irgendwelche Sessions auf Dingen, so kurze Slots, selbst wenn es nur eine Viertelstunde ist, zwei Minuten und eine halbe oder sowas, um so ein bisschen mit den Leuten so reinzukommen.

Dominik

Das ist echt schön.

Dominik

Ich glaube auch außerhalb vom Coding, ehrlicherweise.

Dominik

Man muss halt, glaube ich, immer noch so auffassen, dass man halt wirklich hart guckt, dass die nicht überschritten werden, weil wenn einige Leute dann ihr Co-Referat halten, dass dann doch ein bisschen länger wird.

Dominik

Ja, das nervt die meisten immer, glaube ich.

Dominik

Aber ja.

Ronny

Und eine andere super Sache ist halt auch einfach mal ein Gefühl zufür, ob man selber mal einen Vortrag halten möchte.

Ronny

Eigentlich habe ich ja gesagt, das war echt eine richtig coole Erfahrung.

Ronny

Und ich habe auf der letzten Konferenz in Edinburgh auch einfach mal einen Lightning Talk gehalten, um mal zu sehen, um mal so den Fuß ins Wasser zu halten.

Wie ist das überhaupt?

Über was?

Über was?

Ronny

Um den Fuß ins Wasser zu halten.

Über was

für der Auto.

Dominik

Ach so.

Fuß ins Wasser halten.

Dominik

So keinen Satz möglich.

Nein.

Jochen

Nur über Füße und Wasser.

So wie schon erhalten.

Angeln mit den Szenen.

Dominik

Das war die Frage.

Ronny

Ich habe tatsächlich keine Ahnung.

Ronny

Ich habe dieses Jahr einen über mein Django Migration Zero Package gehalten.

Ronny

Ich beantworte meine Frage aber auch mit diesem Jahr, weil ich es beim letzten Mal vergessen habe.

Ronny

Ist ganz cool, es ist ein Pattern, das hat sich 2018 jemand ausgedacht, wer schon mal mit Django Migrations gearbeitet hat und länger auf einem Projekt beweist, da sammeln sich ziemlich viele Migrations nach kürzester Zeit an.

Ronny

Diese Migrations, wenn man die volle Kontrolle über Daten, über die seine Datenbank hat, also zum Beispiel beim Package hat man das nicht, weil das installiert sich irgendjemand und dann macht irgendwer was damit.

Ronny

Das ist außerhalb der Machen des Creators.

Ronny

Aber in so einer klassischen Applikation, die man baut, hat man eigentlich die volle Kontrolle über die Datenbanken.

Ronny

Dann ist irgendwann auf dem letzten Produktree-System angekommen und die Migrationen haben de facto eigentlich keinen Wert mehr, außer vielleicht einen historischen, der aber auch sehr relativ zu sehen ist, weil abgesehen von natürlich Custom-Datenmigration die ganze Tag noch im Git irgendwie die ganzen Model-Änderungen hinterlegt sind.

Ronny

Viele Migrationen führen dazu, dass die Tests langsamer laufen, dass die Testdatenbank aufgebaut wird, weil oft ist es ja so, dass es ja nicht ist, man fügt immer was hinzu, sondern da kommt was hinzu, dann kommt wieder was weg, dann habe ich was geändert, dann habe ich zum 18.

Ronny

Mal irgendwas geändert.

Ronny

Und Django bietet dafür eine Möglichkeit an, das nennt sich Squash Migrations, um das aufzuräumen.

Ronny

Das Problem ist, das kann sehr, sehr schlecht mit Circular Imports umgehen.

Ronny

Also sprich, ich habe einen User und der hat ein Projekt und das Projekt hat, keine Ahnung, Kommentare und die Kommentare haben wir den User.

Ronny

Das heißt, man muss dann, wenn man das macht, diese Migration sehr stark auseinanderziehen.

Ronny

Also wie man das halt bei Circular Imports machen würde, das ist ja ein generelles Python-Thema.

Ronny

Und das ist sehr, sehr mühsam, was dazu sagt.

Dominik

Lazy importieren und die Sachen da als Strings hinschreiben.

Genau.

Ronny

Und wie das halt dann immer so ist mit Sachen, die mühsam sind, Leute machen sie nicht.

Ronny

Umso einfacher Sachen sind, umso schneller werden und umso besser werden sie getan.

Ronny

Und es gibt ein Pattern, das nennt sich Migration Zero und das hat sich jemand bei Medium 2018 ausgedacht, da sitzt da schon eine Weile und die Idee ist halt einfach auf Deutsch gesagt, du löscht halt einfach alles, haust alles weg, was du hast und lässt einfach Django initial neue Migrationen erstellen.

Ronny

Das klappt auch für große Projekte sehr gut.

Ronny

Also ich habe das beim richtig großen Projekt, mit großem Entwicklungsteam, fünf, sechs Jahren Laufzeit, hatte ich einen Mini-Konflikt, der aber auch so offensichtlich war, dass ich ihn sofort lösen konnte.

Ronny

Also es war wirklich gar kein Problem.

Ronny

Und da habe ich halt dann dieses Package gebaut, dass dieses Pattern implementiert und das ist im Endeffekt ein zweistufiges Ding.

Ronny

Einmal habe ich einen Helper gebaut, der halt einem Verein quasi durch alle Apps die Sachen aufräumt, weil das tatsächlich auch, wenn man das öfter macht, ist es, je nachdem wie viele Apps man hat, ist es auch Arbeit, auch wenn es doof klingt.

Ronny

Und das zweite ist, ein Skript, das in die Pipeline geht, weil Django hat ja alle Migrationen, werden ja in der Datenbank in so einer Log, in so einer Historientabelle hinterlegt, da quasi noch die Änderungen anpasst.

Ronny

Das heißt, du kannst es einfach in die Pipeline hängen, du hast dem Django-Admin in Switch, den du sagen kannst, ja, jetzt habe ich Migration gelöscht, jetzt bitte beim nächsten Deployment, lass bitte, ne, bereite bitte die Datenbank auf, um diesen Prozess zu streamlinen.

Ronny

Und das ist ein Thema, das verkauft sich sehr schwer, weil es ist halt, wie wahrscheinlich jetzt auch der geneigte Zuhörer gemerkt hat, relativ tief und auch nur so ein Edge Case und eigentlich sollte man es tun, aber so richtig Lust hat da keiner drauf.

Dominik

Meistens schon mal darüber gefallen, dass ihr irgendwie dann Migrations erinnert haben, dann bumm, oh, Datenmarkred nicht.

Ronny

Genau.

Ronny

Und ja, auf dem Grund fand ich das eigentlich für ein Lightning Talk ein ganz cooles Thema, weil so war das den Leuten so, Leute, wenn ihr das Problem habt, guckt euch das an, das gibt's.

Ronny

Ich habe dabei, als ich das Package gemacht habe, auch direkt noch eine zweite Sache gelernt.

Ronny

Es ist super, wenn man einen coolen Namen für sein Package hat.

Ronny

Man sollte aber vorher gucken, ob der vielleicht schon belegt ist.

Ronny

Weil es gibt nämlich ein Django Zero Migration und Migration Zero ohne Django, glaube ich, bin ich ganz sicher.

Dominik

Du hast es dann Migration 2 genannt.

Ronny

Ne, Django Migration Zero gab es tatsächlich noch nicht.

Ronny

Aber es ist natürlich trotzdem allein schon wegen SEO extrem blöd, wenn halt dann Leute ständig aufs falsche Package kommen, weil das andere halt schon seit 2014 da rumsitzt mit einem Commit.

Ronny

Genau, von daher, wenn ihr mal ein Package erstellt, dann checkt vorher die Namen ab, das hilft.

Ronny

Genau.

Dominik

Jochen sollte das Package irgendwie immer benutzen.

Dominik

Ich habe ja gestern nochmal über die Schultern geguckt, als du Django Cast migriert hast und irgendwie wie viele Migrations da allein von Weg her reingekommen sind.

Dominik

Das waren ja hunderte.

Jochen

Ich habe mir das auch überlegt, dass ich dich überall alle wegschmeißen möchte und normal.

Jochen

Aber dann denke ich mir immer, das sollte ich vielleicht dann machen, wenn sich an der Datenbank nicht mehr so viel ändern hat.

Jochen

Genau.

Jochen

Aber ich werde das auf jeden Fall tun.

Ronny

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

Jochen

Ja, kann ich mal probieren, genau.

Jochen

Aber das Problem ist auch bei mir, es ist halt eine blöderweise eine Library und ich werde Leuten.

Ronny

Bei der Library geht es eh nicht, dann musst du dir, also da musst du ja mit Squashen arbeiten.

Jochen

Ja.

Ronny

Du weißt ja nicht, in welchem Stand quasi die letzte Person dein Package oder die Person dein Package nutzen.

Jochen

Ja, vielleicht wenn ich bei irgendeiner Major, wie wir es

Dominik

sagen, Release-Update und wer weiß, wie viele Leute außer Jochen seinen Jochen-Paket haben.

Dominik

Ja, kann sein,

dass es nicht so viele sind.

Jochen

Das ist schon richtig.

Jochen

Schließlich nur in meinen Fuß und nicht in den Fuß von noch hundert anderen Leuten.

Jochen

Das kann ich vertreten.

Dominik

Das Risiko von Open Source Software, ja, genau.

Dominik

Und man kann ja dann downgraden.

Ronny

Datenbank brennt, sorry, downgrade einfach.

Jochen

Ja, ja, ja, ja.

Jochen

Aber ja, das ist ein Problem.

Jochen

Ich meine, das ist auch so ein Problem wie bei so Projekten wie zum Beispiel Ragtail.

Jochen

Da hat sich halt, es ist ja auch schon recht alt.

Jochen

Und das ist halt auch, das verwendet man ja auch als Library und da hat sich so viel Zeug angesammelt, dass halt das mit dem Testen, also wenn man jetzt quasi, und mein Paket hängt zum Beispiel auch von Ractile ab, deshalb muss ich für alle Tests und so immer so Wege drumherum finden, dass ich auf jeden Fall beim Testen nicht die Migration laufen lassen muss, weil sonst werden die Tests irre langsam.

Ah, dann machst du Reuse DB.

Dominik

Ja.

Dominik

Und dann musst du halt dafür ganz hart sorgen, dass alle Minus so wieder ausgeräumt werden.

Jochen

Minus, minus, no Migrations, genau.

Jochen

Aber dann gibt es halt dann so Fälle, wo, ah, nee, dann muss man es doch haben.

Jochen

Wie man es zum Beispiel, wenn man dann halt per Talks die ganzen unterschiedlichen Versionen durchgeht, dann muss man natürlich wenden, dass wenn man jetzt, da kann man nicht die gleiche Datenbank verwenden.

Jochen

Da muss man halt schon die Datenbank wieder wegschmeißen, wieder neu machen.

Jochen

Ja, es ist geht, aber es ist halt, es ist haklich, ja.

Dominik

Ja, ja.

Dominik

Ja, in seiner Pipeline.

Ronny

Ja, du hattest ja gerade mich schon wegen Edinburgh gefragt.

Ronny

Was ich sehr interessant fand jetzt in Vigo, in Edinburgh gab es von mehreren Leuten, die, ich glaube auch berechtigte Kritik, dass die Themenauswahl zwischen, meistens kann man das ja grob in Community Talks oder ja, Community Talks und Tech-Talks mit vielleicht Metatalks, die irgendwie dazwischen sitzen, aufteilen.

Ronny

Und in Edinburgh was relativ stark auf der Community-Seite.

Ronny

Also Leute, die über Community-Erfahrung berichtet haben, die wo Parallelen gezogen werden zwischen anderen Arten von Communities, meine Erfahrung, wie ich das erste Mal zu Django contributed habe, solche Geschichten.

Ronny

Das ist egal mit Edinburgh von mehreren Leuten die Kritik, dass das halt relativ viel war.

Ronny

Und das ist mir jetzt positiv aufgefallen, dass ich fand, dass die Mischung aus den Community-Talks und aus den Tech-Talks und aus den Metatalks richtig gut war.

Ronny

Und ich sehr, sehr happy war mit der Themaauswahl.

Ronny

Ich meine, wie gesagt, das sind halt immer eine große Menge auch von Leuten, die das mit Absicht zum ersten Mal machen, die Englisch nicht als Muttersprache haben und sowas.

Das ist natürlich immer Sachen.

Dominik

Ich finde das natürlich auch interessant, weil ich habe immer gehört, dass Spanien immer so ein bisschen anstrengender ist, was so das angeht.

Dominik

Also für Englisch, weil halt da Englisch nicht so verbreitet ist, sind viele Leute halt dann nicht so.

Ronny

Ja, also es ist, also das ist, wir hatten auch, glaube ich, gar nicht so viele Spanier.

Ronny

Ich glaube, eine Frau aus Katalonien, was ist so ein bisschen Definitionssache, was Spanien ist oder nicht.

Ronny

Und ansonsten, ja, vielleicht ein, zwei, aber ich, wie gesagt, generell ist es, fand ich das diesmal gut.

Ronny

Es war sehr angenehm, waren viele interessante Sachen dabei.

Ronny

Da gab es zum Beispiel einen von Octopus Energy, das ist einer von den großen Django-Playern, die auch eigentlich immer so mit Platin-Sponsor bei den Konferenzen sind über Layered Architecture bei Django.

Ronny

Ich bin schon sehr gespannt, wenn das Video rauskommt.

Ronny

Das war sehr, also bei YouTube werden die alle veröffentlicht.

Ronny

Das war sehr, ähm, sehr viel Information da drin.

Ronny

Und ich habe mir nur ein ganz, ganz paar wenige Fotos gemacht und ich bin sehr gespannt, mir das Ganze noch in Ruhe zu Hause anzuhören.

Ronny

Genau, wie die Background Workers, die Sache von Carlton Gibson, es gab coole Metatalks.

Ronny

Also das fand ich von der, von der Auswahl her bin ich da mit vielen schlauen Gedanken nach Hause gegangen.

Ronny

Und was ich auch sehr interessant fand bezüglich des Community Talks, direkt die allererste Keynote ging um Django Girls.

Ronny

Das ist eine Vereinigung, ein Non-Profit, glaube ich, inzwischen auch, die dafür da ist, explizit Frauen ans Programmieren ranzuführen, weil es ja immer noch so ist, dass halt die IT-Branche immer noch harte Männerhand ist und das soll einfach vor allem die Mädels so ein bisschen ermutigen, dass sie das können.

Ronny

Also nicht irgendwie das, ich glaube, da ist gar nicht so groß der Fakt, dass du da rausgehst.

Ronny

Also das ist immer so ein Wort.

Dominik

Positive Bestärkung viel und so, genau.

Ronny

Genau.

Dominik

Der U-Python ist auch, glaube ich, ein ganzer Workshop für Untergoogle zu.

Ronny

Und ich habe, ich war, als das mal hier in Köln war, 2015, glaube ich, war ich auch mal da Coach.

Ronny

Und das war eine sehr interessante Erfahrung.

Ronny

Hat echt Spaß gemacht.

Ronny

Und war auch interessant, wie, weil die Mädels da habe ich alle komplett noch nie irgendwas programmiert haben, also wirklich, die waren komplett bei Null, die drei, die in meiner Gruppe waren und wie die da auch unterschiedlich rangegangen sind.

Ronny

Das war wirklich auch für mich, also im Sinne von, man hat ja auch immer wieder mal mit neuen Leuten zu tun, wenn mal jemand Neues anfängt, wenn man mal einen Werkstudenten betreut oder sowas, echt interessant zu sehen, da diese, diese, dieses Coaching zu machen.

Ronny

Und wie gesagt, das ist halt vor zehn Jahren, die war jetzt Jubiläum in Berlin gegründet worden, was ich auch ganz cool finde.

Ronny

Also sprich, wenn jemand jemanden kennt, der, also ne, jemand eine Frau kennt, der die potenziell sowas Interesse hat, die werden immer wieder mal hier und da angeboten, diese Workshops.

Ronny

Und das ist, glaube ich, echt cool.

Ronny

So für einen ersten, ja, Fuß ins Wasser halt mal wieder.

Ronny

Und die Idee dabei ist, dass die halt im Endeffekt ihre erste Django-Seite erstellen und auch irgendwo hin deployen.

Ronny

Und wie gesagt, der Fokus ist halt eher darauf, wie du schön gesagt hast, positive Bestärkung, denn ja, pädagogisch wertvoll.

Dominik

Das Tutorial ist auch relativ gut und relativ komplett.

Dominik

Wenn man auch mit Django ansteigen will.

Dominik

Ich meine, das haben wir jetzt, vielleicht hätten wir es früher sagen müssen, die Leute, die jetzt noch drin sind, sind wahrscheinlich eher schon tiefer auch in Django, aber ja, das wir weiter verraten.

Jochen

Ja, aber das sind dann auch die Motivierten.

Jochen

Bei denen lohnt sich das dann.

Dominik

Ja, vielleicht tragen es in ihre eigenen Communities weiter.

Genau.

Ronny

Du kannst ja einfach in der Linksammlung noch hinzufügen, da freuen die sich.

Jochen

Ja, ja, mach ich auf jeden Fall.

Dominik

Ja, ich habe das auch tatsächlich an die Neulinge bei uns mit Dango, auch einmal Dango Girls.

Dominik

Also erst natürlich offizielles Tutorial ist nicht schlecht, aber Dango Girls auch so schönes, schnelles Einstiegsding.

Jochen

Ich erinnere mich gerade, ich war jetzt zu langsam, um da einzugrufen, ich habe mich dann irgendwann kurz danach daran erinnert.

Jochen

Es gab auch jetzt irgendein, muss ich auch nachgucken, welche das war, Podcast-Episode Django Chat mit einer von Octopus Energy.

Jochen

Und die erzählte da auch irgendwie, ja, dass sie halt auf so ein Problem gestoßen hat, dass sie eigentlich nicht wollen, dass in Templates irgendwie Datenbankqueries passieren oder so.

Jochen

Und das ist auch etwas, was mir inzwischen halt, ich habe ja versucht, so ein bisschen Performance-Optimierung zu machen, auch bei den Django Casp-Ding, was ich baue.

Jochen

Und das ist mir auch ganz böse auf die Füße.

Jochen

Also eigentlich, da dachte ich auch so, oh ja, das habe ich.

Jochen

Eigentlich möchte man nicht.

Jochen

Also wenn man in Templates Datenbankqueries macht, ganz blöde Idee, die sind dann so weit gegangen zu sagen, sie haben, sie benutzen so eine Art Class-Base-Views, wo sie halt verhindern.

Jochen

Also sie nehmen nicht die Modelle, sondern sie machen irgendwie da so Data-Class-mäßig irgendwie Read-only-Kopien von den Dingern, sodass wenn du da irgendwo was versuchst aus der Datenbank zu holen, dass das halt einfach nicht geht.

Jochen

Und das kann ich gut verstehen.

Jochen

Das ist eine, also du willst eigentlich, wenn du zum Beispiel eine Daten, die Anzahl der Datenbankqueries unter Tolle behalten willst, willst du halt irgendeinen Punkt haben, wo du sagst, also hier, da sind alle Querys und ich mache nirgendwo anders welche, weil das ist so schwer zu containen, wenn man, wenn da irgendwas passieren kann, dass es halt ganz blöde Performance-Implikationen hat.

Dominik

Und wo man dann quasi durch das Frontend auch Angriffe machen kann oder was?

Jochen

Nee, Angriffe, als es einfach irgendwie das ist halt unheimlich, macht Dinge halt deutlich langsamer und man weiß gar nicht so, warum irgendwie.

Jochen

Und ja.

Also zum Beispiel.

Dominik

Warum wird das langsam?

Dominik

Vielleicht müssen wir es nochmal genau erklären.

Jochen

Die Datenbankqueries sind immer super langsam.

Dominik

Ja, aber warum muss das, also wenn man die eh machen muss, warum dann nicht im Template?

Dominik

Also man muss ja eh drauf warten, wenn man irgendwie.

Jochen

Naja, wenn man die halt alle an einer Stelle macht, dann ist es halt auch nicht so schlimm.

Jochen

Also was auch, das ist, weiß ich nicht so genau, das ist ein Gefühl.

Jochen

Das habe ich noch nicht wirklich gemessen, aber ich habe auch das Gefühl, dass wenn man die Datenbankqueries sehr verstreut macht, dass das halt besonders schlecht ist auch.

Jochen

Warum das genau ist, weiß ich nicht.

Dominik

Was meinst du?

Ronny

Weißt du, was, also an verschiedenen Stellen im Code, meint man halt, oder an verschiedenen Orten des Frameworks, glaube ich, meinst du?

Jochen

Ja, also wenn ich jetzt zum Beispiel gucke von, es kommt ein Request rein, ja, dann passieren ja Dinge, Dinge, Dinge, Dinge, Dinge, Dinge.

Jochen

Auch erstaunlich viele.

Jochen

Das weiß ich jetzt, weil ich es halt so ein bisschen geproffelt habe.

Jochen

Bei mir sind es halt von, also weil wenn man jetzt einen Blog nimmt und da die List-Page und dann halt nur so fünf Artikel oder sonst irgendwas so, also aus diesem List-View, dann macht das halt so 110.000 Funktionsaufrufe oder sowas.

Jochen

Was eine Menge ist.

Jochen

Ich dachte so, wow, shit, warum ist denn das so viel?

Jochen

Das ist ganz schön viel.

Jochen

Und ich, mein Ding wäre jetzt, wenn jetzt so alle 1000 Funktionsaufrufe kommt, irgendwie die Datenbankquery, das ist schlecht.

Jochen

Also so war es quasi vorher, irgendwie implizit, weil halt sind die Datenbankqueries halt da passiert, wo es halt aufgetreten ist.

Jochen

Und das war, und einfach nur dadurch, dass ich jetzt das einfach mal so umgebaut habe, dass es jetzt diese Datenbankqueries, an denen ich selber noch gar nicht viel geändert habe, alle an einer Stelle passieren, ist es irgendwie doppelt zu schnell geworden.

Jochen

Krass.

Jochen

Und ich weiß nicht genau, woran das liegt, aber es ist auf jeden Fall, irgendwie scheint das so zu sein, dass auch der, nicht nur, dass man halt blockiert und dann muss man auf die Datenbank warten, sondern auch dieses Ganze irgendwie, ja, man ist da in diesem Bereich, wo dann Dinge, die Junge-Modelle gebaut werden oder ich weiß es nicht so genau.

Jochen

Also das scheint alles nicht so richtig kostenlos zu sein, sondern das.

Dominik

Also das heißt, wann irgendwas geladen wird an der Stelle und war es da irgendwie vorbereitet oder Tiert down oder so hin und her, kostet dann unheimlich viel, oder?

Jochen

Ja, also das allein, dass man da halt irgendwie viele Objekte erzeugt und dann ja, und wenn das halt an einer Stelle ist, dann passiert das halt einmal und wenn das halt verteilt ist, dann macht es das irgendwie nochmal langsamer.

Jochen

Und ja, ich versuche immer noch momentan gerade rauszukriegen, woran liegt das eigentlich, dass da so viele Funktionsaufrufe passieren, weil das ist einfach zu viel.

Jochen

Kann man nicht eventuell, kann ich, also meine Idealvorstellung wäre natürlich, dass ich irgendwann sozusagen nur noch eine Datenbankquery mache oder so, in der ich alle Informationen aus der Datenbank hole.

Jochen

Geht das nicht vielleicht?

Dominik

Ja, Timmy wusste ich und wenn das in den Ran passt.

Jochen

Ja, das ist alles gar kein Problem.

Jochen

Aber kann ich so eine Query formulieren?

Jochen

Und wenn ich jetzt die Daten aus dieser Quer habe, kann ich die so transformieren, dass ich 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 einfach so, ich mache aus, ich benutze nicht quasi den ORM, um halt Django-Modelle, sondern ich ziehe die Daten halt in einer Form, dass ich die halt auch, das ist auch sowas, wenn man cachen will, dann muss man das ja auch irgendwie in, zum Beispiel als Dikt haben, dass man halt auch irgendwie serialisieren kann.

Jochen

Wenn du Django-Objekte hast, die kannst du nicht, also es gibt viele Dinge an Django, auf denen die kannst du nicht serialisieren.

Jochen

Also du kannst es auch nicht cachen, weil Curry-Sets kannst du nicht gut cachen.

Jochen

Geht nicht.

Jochen

Aber wenn du jetzt das in eine Dikt-Geschichte überführt hast, wie im Prinzip JSON serialisierbar ist, dann kannst du halt auch das, was du aus der Datenbank kriegst, einfach nehmen, irgendwie auf eine Platte schreiben oder so und sagen, okay, die nächsten fünf Minuten einfach das Pfeil nehmen und nicht mehr die Datenbank fragen.

Jochen

Oder irgendwo in den Hauptspeicher oder in Reddites oder sonst irgendwo hin.

Jochen

Und dann kannst du das halt cachen.

Jochen

Aber das, äh, genau.

Jochen

Und aus den Dingern wieder Jungle-Modelle zu bauen, ist jetzt gar nicht so schlimm.

Jochen

Da dachte ich auch so, das ist vielleicht schlimm.

Jochen

Nö, ist gar nicht.

Jochen

Das geht ziemlich leicht.

Jochen

Und ja, genau, also ja, ich mache momentan so ein bisschen Performance-Optimierungsgeschichten.

Ja.

Jochen

Ja.

Dominik

Ja, aber wenn Performance auch dazu führt, dass du weniger Rechenleistung aufwenden musst, ist das ja sogar Green Engineering.

Ja, ja.

Jochen

110.000 Funktionsaufrufe für ein Webseiten-Rendering ist nicht so richtig green.

Jochen

Ehrlich gesagt, es ist eher so mehr so braun.

Ronny

Aber weil du, ich hab gerade deinen Einstiegspunkt vergessen, der mich daran erinnert hatte.

Ronny

Aber was war super interessant, bei diesem Dung of Girls Vortrag gab es auch so Success-Stories einfach, ne, von Mels, die das halt teilgenommen haben und die jetzt halt irgendwo einen coolen Job haben oder irgendwie eine coole Erfahrung haben oder irgendwo sich halt irgendwas Positives in ihrem Leben geändert hat.

Ronny

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

Ronny

Und was ich da echt krass fand, war, dass eine US-Amerikanerin, die da teilgenommen hat, die halt vorher irgendwas gearbeitet hat und jetzt halt dann in Teingestiegen ist, weil sie halt am Ball geblieben ist, dass sie deshalb jetzt mit dem neuen Job eine Familie gegründet hat, also sprich ein Kind bekommen hat, weil vorher nach ihrer Aussage sie es in den USA sich nicht hätte leisten können.

Ronny

Ich kann jetzt nicht bewerten, ob das stimmt, also ob das jetzt also eine absolut richtige Aussage ist.

Ronny

Aber allein, dass es subjektiv so ist, hat mich echt schockiert.

Jochen

Ja gut, aber ich meine, ich würde sagen, es ist halt, aber wenn man, also so ein Programmierer ist jetzt schon, ist jetzt auch nicht das Bestbezahlte überhaupt, aber sagen wir so, ist es halt schon deutlich besser wahrscheinlich als viele andere Sachen.

Dominik

Vielleicht sollten wir gar nicht so viele Leute schulen, damit nicht so viel Wettbewerb da ist.

Dominik

Das ist immer noch weiter gut bezahlt, wenn man sich auch hinter Probleme haben, unsere Kinder zu ernähren.

Dominik

Ja, wie das man sagt.

Ronny

Aber auch die, es ist ja nicht nur das Geld, sondern auch, dass man so eine gewisse Flexibilität hat.

Ronny

Ich meine, ich meine, es gibt immer noch diese Marketingagenturen, wo man dann irgendwie bis nachts um zwölf irgendwie irgendwelche Marketing-One-Pager zusammenlötet, aber bei.

Nein, du hast völlig recht.

Dominik

Also ich glaube, das ist einer der Jobs, die von Hause aus sehr dafür geeignet sind, dass man das remote machen kann und es relativ kompatibel ist zur Vereinbarkeit von Familienbuch.

Ja.

Dominik

Was übrigens, glaube ich,

Jochen

Arbeit von zu Hause aus, als Mein Geld verdienen.

Jochen

Hier ist ideal angewogen.

Dominik

Nein, aber ich glaube, da sind tatsächlich so eine gesellschaftliche Transformation wäre ja sowas wie Vereinbarkeit einer der Hauptdinge auch, glaube ich.

Dominik

Also fällt mir auch immer wieder auf, ja, das ist halt total hart, also wenn irgendjemand den ganzen Tag irgendwo hinfahren muss und mit Kinderbetreuung, das ist schon schwer, ne?

Jochen

Ja, also ich meine auch jetzt die Erfahrung, in den letzten Jahren Erfahrung mit Kinderbetreuung, es passiert immer so viele Zeugs, wo man dann.

Jochen

Also ich, ja, das wäre übel gewesen, wenn ich jetzt irgendwie hätte in einem Büro sitzen müssen.

Oder hinfahren jeden Tag.

Dominik

Du wärst abend mal halb und abend ab.

Das ist gewesen.

Ronny

Oder Schichtdienst einfach die ganze Nacht.

Jochen

Ja, ganz übel.

Dominik

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

Dominik

Das ist mein Sword.

Ronny

Das ist sehr beeindruckend.

Du wolltest jetzt über Party reden, auch wenn wir gerade für Kinderkriegen reden, dann

Ronny

für manche Leute ein Thema.

Jochen

Nach der Party kommt der Kater und

Ronny

genau, nein, tatsächlich bei den Dungercons gibt es immer eine Party und ich fand das ein ganz interessantes Thema, weil in Edinburgh war es so, dass man, wenn man sich die Tickets kauft, musste man ein Opt-in machen, ob man auf die Party geht.

Ronny

Dann gab es so eine Art Aufwandsentschädigung von nicht irgendwie 10 Pfund oder so.

Ronny

Und was die nicht bedacht haben, ist, dass in vielen, also viele Leute gehen halt über ihre Agentur dahin, also auf irgendeine Art von Weiterbildungsbudget.

Ronny

Und da buchen die Leute nicht selbst die Tickets und die werden halt am Blog von irgendjemandem aus zum Beispiel der Buchhaltung gebucht und die natürlich mit der Information, Party kostet extra, nichts anfangen können.

Ronny

Und dann bei uns und auch bei anderen war es dann so, dass wir halt auf einmal alle nicht dahin gehen konnten.

Ach so.

Ronny

Und weil einfach, weil halt das Häckchen nicht gesetzt wurde und das war halt irgendwie einfach so ein bisschen die Realität zu Theorie.

Ronny

In der Theorie ist es kein Problem, in der Praxis, naja, so ist es halt.

Dominik

Gehört eigentlich dazu.

Ronny

Und ich persönlich finde nämlich die Party eigentlich immer eine sehr schöne Art, nochmal mit Leuten, die man halt vielleicht auch auf der Stage gesehen hat an den Tagen.

Ronny

Die sind ja auch meistens den CD am Ende.

Ronny

Aber das ist.

Dominik

Die Real Pyson auch aufgefahren, da gibt es auch mehrere Partys, bei denen man sich extra registrieren muss, ja.

Ronny

Und ich finde das eine sehr schöne Gelegenheit, nochmal in einem etwas lockeren, weniger ernsten Umfeld mit den Leuten.

Ich meine, viele Leute haben da irgendwie da noch mit den Leuten reden zu können, einfach auch nochmal mit Leuten connecten zu können.

Ronny

Zum Beispiel in Porto, also jetzt vor zwei Jahren die Party war, glaube ich, eine der besten Partys.

Ronny

Also die war super, das war echt gut organisiert, richtig schön Location, bestes Wetter, alles draußen.

Ronny

Und da bin ich dann einfach in eine Runde von Leuten reingestolpert und dann bin ich halt nach mit einem im Gespräch hängen geblieben und nachher irgendwann meint er, weißt du echt, wer ich bin?

Ronny

Ich so, keine Ahnung, ich bin Präsident hier von Jungle Software Foundation.

Ronny

Oh, ups, sorry.

Ronny

Ja, da kannte ich halt noch nicht so viele Leute in dem Umfeld.

Ronny

Und das ist halt einfach, das würde halt so, ich meine, das kann passieren, wenn man so auf der Konferenz rumläuft, aber man ist da schon immer relativ getaktet mit, ne?

Ronny

Dann ist irgendwie, dann gibt es da eine Verlosung und dann ist der nächste Vortrag und dann muss man sich vielleicht selber auf irgendwas vorbereiten, dann will irgendein, dann will irgendwie die eigene Crew irgendwas.

Dominik

Oh, Konferenz-Experiments, da kann man auch eine eigene Folge zu machen, glaube ich, ja.

Ronny

Und das fand ich tatsächlich, ich finde das einen sehr wichtigen Punkt, weil sie immer dann auch, ne, auch dann zusammen, naja, ne, sie sehen um so auf, nö.

Ronny

Aber ich finde, das ist schon ein sehr, sehr schöner, sehr, sehr schöne Atmosphäre und eine Möglichkeit, mit Leuten nochmal so zu socializen, auch mal Leute ein bisschen persönlicher vielleicht auch kennenzulernen.

Ronny

Und genau, also fand das wirklich schön.

Ronny

Und jetzt bei diesem Mal, das war so ein bisschen doppelt unglücklich, dieses Konferenzgebäude in Vigo, das war direkt am Hafen.

Ronny

Das war nicht so ein schöner Hafen, aber es war halt immerhin hat man mehr Blick.

Ronny

Und die andere Seite der Bucht war schön.

Ronny

Hat er eine gigantische Dachterrasse.

Ronny

Also riesig.

Ronny

Und genau oder fast genau die Party anfing, kam er das Gewitter, auf das wir drei Tage gewartet haben.

Ronny

Ja, war dann blöd, weil dann mussten wir halt in die kleinen Gänge rein, die halt irgendwie so die Räume verbunden haben.

Ronny

Und um neun war Schluss, was halt auch schade war, weil, wie gesagt, in Porto, glaube ich, waren bis eins oder zwei.

Ronny

Ich glaube, in Kopenhagen davor war auch relativ lang, solange die Leute mehr oder weniger, oder wie lange, solange die Organisatoren halt Lust hatten, so dass das nicht abschließen zu wollen.

Ronny

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

Ronny

Er wird bestimmt seine Gründe gehabt haben.

Ronny

Ich will mich da jetzt gar nicht auch irgendwie, ich habe nichts dazu beigetragen, ich will da nicht rummosern.

Ronny

Ich persönlich fand es nur schade, weil, wie gesagt, ich das eigentlich meine, es ist einen sehr schönen Ort finde.

Ronny

Und ich meine, auch da habe ich mich mit Leuten unterhalten, mit denen ich mehr oder weniger im gleichen Raum saß für drei Tage und halt vorher noch nicht gesehen habe, hatten interessante Gespräche.

Ronny

Und genau, das finde ich immer einen schönen Ort und kann da auch nur eine Lanze dafür brechen.

Dominik

Also ich würde auch sagen, Socializing bei diesen Konferenzen ist mit so der Hauptgrund, warum man da.

Dominik

Ich finde das ja auch gestern war ja wieder bei DDF auch immer super, dass man danach noch was essen geht, weil da auch immer der Hauptteil des Spaß ist.

Dominik

Das ist also nichts gegen die ganz tollen Vorträge, die alle tollen Menschen machen.

Dominik

Mir halt auch bestimmt bei der DamboCon, wo gegen man auch dahin fährt und so, aber das Socializing ist ein großer Teil, dass man so Leute kennenlernt.

Dominik

Also dass diese Experience, die man von anderen Menschen mitbekommt, die was ähnliches machen, vielleicht ein bisschen anders als man selber und sich darüber austauschen, ist schon super.

Dominik

Also manchmal kann man auch selber mal ganz viel reden, das machen einige Leute gerne, aber auch manchmal zuhören ist auch super.

Dominik

Und das ist irgendwie ja was Gutes.

Dominik

Ich kann das auch sehr nachvollziehen.

Dominik

Ich finde das auch mit den wichtigeren Teilen dann.

Dominik

Also manchmal ist man das ja auf dem Gang so ein bisschen, ne?

Dominik

Und weil du gerade sagtest, das fand ich interessant.

Dominik

Deine Art und Weise war wahrscheinlich sehr strukturiert und sehr organisiert, möglichst viel von dem Content mitzubekommen.

Dominik

Und also ich kenne ja, also von der EuroPisen kenne ich es zum Beispiel so, die ist ja lang und wenn man da halt die ganze Woche da ist, dann sind es ja sieben Tage.

Dominik

Also zwei Tage Workshop, drei Tage Vorträge, zwei Tage irgendwas anderes.

Dominik

Da tut es immer ganz gut, wenn man es die ein oder zwei Tage nicht ganz so vollpackt, weil man so ein bisschen sich so fließen lässt, weil dann kommt man mehr mit Leuten ins Gespräch, die auch irgendwo rumstehen, vielleicht, vielleicht näher nochmal an irgendeinen Stand und er hält sich da mit den Leuten länger, anstatt dass man jetzt sagt, okay, meine Uhr in zehn Minuten geht der nächste Vortrag los und der Kopf ist ja irgendwann eh voll.

Dominik

Oder man bleibt halt dann nochmal länger auf der Party oder man geht halt dann am Wochenende mit Leuten, die man kennengelernt hat, nochmal in die Stadt oder spazieren oder was von der Natur anschauen oder sowas, was auch irgendwie, glaube ich, mit dazugehören kann.

Dominik

Aber das ist halt witzig, weil es so unterschiedliche Herangehensweisen gibt und ich halt auch Leute gesehen habe, die jetzt ganz anders machen.

Dominik

Es gibt Leute, die kommen halt nur für zwei Tage und da ist das halt dann sehr intensiv.

Dominik

Oder es gibt Leute, die sind nur in den Workshop standard und dann nie wieder gesehen.

Dominik

Oder Leute schaffen sogar nur zu ein oder zwei Vorträgen, was manchmal an Kinderbetreuung liegt oder sowas, die man da auch netterweise hinbringen kann.

Dominik

Oder halt nur sogar Notrin-Sprints gab es, glaube ich, auch Menschen, die halt wirklich nur da hingegangen sind, um mit den Leuten an Sachen zu arbeiten.

Dominik

Aber das ist so witzig, weil diese, das ist so ein bisschen, ich weiß nicht, ob es eine Kulturfrage ist, aber so diese Art und Weise ändert sich je nach Lebensphase oder wo du gerade selber bist, total.

Dominik

Und das ist, glaube ich, auch eine der Herausforderungen für so Konferenzen, für die unterschiedlichen Ziele, die die Leute so mitbringen, irgendwie gut ausgestattet zu sein.

Dominik

Absolut.

Dominik

Und mich würde dieses Django-Conding auf jeden Fall auch mal reizen, ehrlicherweise.

Ich finde das auch mal ganz nett.

Dominik

Ist halt ein bisschen mehr Fokus auf Django, was auch mal cool ist.

Ronny

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

Dominik

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

Dominik

Aber ja.

Ronny

Ich auch, ich fahre trotzdem gerne nochmal hin.

Ronny

Ich bin Dublin super.

Dominik

Toll, ja.

Dominik

Weißt du auch schon wo?

Gibt es schon ein Ort?

Dominik

Okay.

Ronny

Nein, also es gibt, glaube ich, die eine Webseite, wo literally das Logo drauf ist.

Ronny

Alles weitere folgt dann.

Ronny

Find's auf jeden Fall sehr cool.

Dominik

Ja, der Edinburgh und Vigo hätte ich wahrscheinlich beide auch gemacht.

Dominik

Und Vigo kann ich noch nicht, Edinburgh schon.

Dominik

Und ja, der Dublin, ja, ist das einfach eine tolle Stadt.

Dominik

Wenn ich noch Bier trinken dürfte, wäre irgendwie ganz toll.

Dominik

Überall wunderschöne Sachen.

Jochen

Du musst halt Whisky trinken.

Dominik

Ja.

Dominik

Am Shannon entlang ist ja immer toll.

Da gibt es tolle Sachen.

Dominik

Ich meine, das ist halt sehr moderne, Hilfe Stadt auch, ne?

Dominik

Naja.

Dominik

Gut, das sind die meistens alle irgendwo bis auf vier Wochen.

Tja.

Jochen

Aber das waren jetzt aber drei Tage quasi.

Ronny

Genau, das waren drei Tage Konferenz.

Ronny

Da waren immer wieder, also die hatten eigentlich nur eine, also es gab einen Konferenztrack und dazwischen gab es immer wieder mal in einem anderen Raum dann die Workshops.

Ronny

Ich habe die Workshops nicht teilgenommen, ich nehme irgendwie von diesen Workshops nicht so viel mit.

Ronny

Ich habe auch, ich war letztes Mal in Ellenburg mal bei den Sprints dabei und man muss auch sagen, das ist kein Umfeld, wo ich wirklich produktiv arbeiten kann.

Ronny

Also dann sitzen da ganz viele Leute in einem Raum und es ist halt so ein gewisser Geräuschpegel.

Ronny

Weiß ich nicht, jedem zweiten fehlt irgendwie Strom und dann hast du da kein Ladekabel und es ist, also es ist unruhig.

Dominik

Interessant, also ich finde das mit dem Workshop total anders.

Dominik

Alle weil, vielleicht bist du schon viel weiter als ich mit vielen Punkten, aber unwahrscheinlich.

Dominik

Die Dinge, die ich da so mitgenommen habe, habe ich immer super viel gelernt.

Dominik

Und das hängt wahrscheinlich total davon ab, was für einen Workshop man da hat und welches Niveau da ist.

Dominik

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

Dominik

Also ich habe wirklich immer da am meisten von bekommen, mehr als von den vielen Talks.

Ronny

Aber ich glaube auch, was, ich gehe halt auch ganz gerne auf die Konferenzen, nehm dir die Stichpunkte mit und sortiere dann quasi danach nochmal so ein bisschen aus, so was speichere ich ab, als es existiert irgendwo.

Ronny

Zum Beispiel diese Sache mit der Architektur, das finde ich super spannend.

Ronny

Ich müsste auch nochmal, also ich gehe da auch nochmal ins Gespräch mit ihr und guck mal, ob wir sie vielleicht mal zum Django Meetup Köln oder sowas einladen können oder sowas.

Ronny

Weil das ist halt ein Thema, das halt für mich super spannend ist und wo ich auch noch definitiv zu wenig weiß.

Ronny

Und das ist das ist, wo gehe ich dann damit um?

Also das

Dominik

heißt jetzt nicht, vielleicht dass ich dann eine Länge der Workshop habe.

Dominik

Also die Workshop ich hatte, waren halt mindestens einmal einen halben Tag, also vier Stunden oder so.

Dominik

Und das, also ich bin da richtig tief in die Themen reingekommen, hab mich da richtig reingehackt, hab auch wirklich was gemacht und hab dann auch teilweise noch wirklich nachgearbeitet und die Dinge wirklich umgesetzt und benutzt.

Also da sind

Ronny

die eher kürzer, also ich glaube so ein bis zwei Stunden, glaube ich.

Ronny

Ja, nicht ganz sicher.

Ronny

Ich habe letztes vor letzten Mal habe ich mal welche mitgemacht, aber wie gesagt, irgendwie die Atmosphäre ist nicht so ganz.

Dominik

Also ich konnte zum Beispiel auch konzentriert arbeiten, weil es da ruhig war.

Dominik

Und wo ich direkt gehen muss, bei den Sprints, Sprints sind immer sehr chaotisch.

Dominik

Meistens, also ich nutze Sprints oft dann auch zum Socializen, mit den Leuten quatschen, um nochmal rumrum zu stehen.

Ja, genau.

Dominik

Aber ich muss ehrlich geschehen, ich habe bei den Sprints auch immer nicht das Thema gefunden, wo ich sagte so, wow, das finde ich jetzt super toll, da will ich jetzt mitmachen.

Dominik

Weil ich glaube, dass das, wenn du idealerweise vielleicht, wenn man ein Thema bei dem Sprint hat, wo man vielleicht sogar schon drin ist, wo man das ganze Setup schon gemacht hat, wo man die Entwicklungsumgebung bei sich auf dem Rechner schon eh drauf hat und dann sich einfach einloggen kann, dann kann man sich ein Feature zunehmen, das mit anderen Leuten mal so diskutieren, durchdenken und dann von mehreren Seiten mal echt mal die Lösung, die man gerade hat, mit drei oder vier Leuten, die da fokussiert dran arbeiten, wirklich implementieren.

Dominik

Das ist auch cool,

Ronny

glaube ich.

Ronny

Auf jeden Fall, auf jeden Fall.

Ronny

Also wir haben ja auch beim Django Meetup in Köln jetzt im Januar, hatten wir Sarah A.

Ronny

und Thibaut, also die sind beide Django Board-Members, ganz frisch geworden, hatten wir eingeladen, sind netterweise vorbeigekommen.

Ronny

Da haben wir auch einen Open Source-Sprint gemacht.

Dominik

Der schon am Mittags war, wo ich leider erst zu spät konnte, ja.

Ronny

Und das war auch echt cool.

Also es war eine coole Erfahrung.

Ronny

Jeder hat da so ein bisschen an dem gearbeitet, wo er, wo er drauf Lust hatte.

Ronny

Es sind mehrere Tickets auch erstellt worden.

Ronny

Und also wurde da mehrere Pull-Requests auch erstellt worden.

Ronny

Und danach hat man noch so ein bisschen Diskussion, so Future of Django, was auch super interessant, weil man halt wirklich mal zwei Boardmanners am Start hat und die dann wirklich mit denen so ins Eins zu eins gehen kann.

Ronny

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

Ronny

Ich sage nur, das ist halt nicht so mein Arbeitsumfeld.

Ronny

Ich finde es fürs wirklich programmiert.

Dominik

Also kategorisch, ja, also es ist nicht nur so zufällig gewesen, sondern denkst du wirklich, brauchst du eher deine Ruhe.

Ja, definitiv.

Dominik

Aber das, was ich dann interessant finde, ist, dass du zwischendurch, also ich weiß nicht, ob sich das geändert hat, sagtest, dass du im Büro total dich für eine Arbeitsatmosphäre hast und dass sogar zu Hause vorziehst.

Dominik

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

Ronny

Also jetzt, wo ich wieder öfters ins Büro gehe, also ich mache so drei Tage, Büro, zwei Tage zu Hause, ist am, also nur einen Tag die Woche im Büro war, dann hast du halt ständig irgendjemanden, mit dem du dich über die letzte Woche austauschen musst.

Ronny

Das lenkt dann schon sehr ab, aber du drei Tage da bist, dann hast du halt deine Nasen alle gesehen und dann streckt sich das so ein bisschen über die drei Tage und dann ist es eher, dass wenn man eh mal gerade eine Pause braucht und mal kurz zu die Tür geht oder so, dass man halt damit jemanden hat, mit dem man reden kann.

Ronny

Das finde ich ganz angenehm.

Ronny

Und tatsächlich ist auch, dass post Corona bei uns auch einfach nicht so viele Leute in Brosen, dass wirklich da ein gewisser Lärmpegelob entstehen könnte.

Ronny

Ich meine, natürlich telefoniert vielleicht mal irgendwer, irgendwo oder so, aber es gibt ja immer noch Kopfhörer.

Dominik

Dann bin ich ein Boden, dann muss ich eine Hose anziehen, das ist ja fürchterlich.

Ronny

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

Dominik

Jetzt hast du mir gespoilert.

Nein.

Dominik

Ich wollte jetzt keine niemanden nahe drehen.

Jochen

Ja.

Jochen

Ja, wir könnten noch Picks machen.

Jochen

Das klingt, glaube ich, ganz gut.

Jochen

Und dann ist eigentlich auch schon eine runde Sache.

Dominik

Ja, dann bin ich ja mal gespannt, was für Pics wollt ihr denn nehmen?

Vielleicht doch ein Willst du halt.

Dominik

Du hast den Familie geklaut.

Dominik

Ich weiß gar nicht, habe ich den schon gesagt.

Jochen

Das kann sein.

Jochen

Ich habe mich in letzter Zeit nochmal so ein bisschen, also es gibt da auch einen sehr schönen, das kann ich vielleicht dazu sagen, Vortrag von Simon Willison zu einem Kommandozeilen-Tool, was er geschrieben hat, namens LLM.

Ja, das ist ein bisschen.

Jochen

Und das LLM picke ich mal, weil da habe ich jetzt auch wieder ein bisschen mehr mitgemacht.

Jochen

Und das ist halt wirklich nett, weil man da unterschiedliche Modelle mal so ausprobieren kann, damit man so ein bisschen rüber spielen kann.

Aber auch,

Dominik

du kannst halt einfach in deine Kommando-Zeit reinpipen.

Jochen

Genau, du kannst halt, also ich benutze es dann halt auch für solche Dinge wie alle.

Jochen

Ich habe jetzt sogar eine Funktion tatsächlich für Django Cars geschrieben, wo ich sagen kann, gib mir doch mal den gesamten Source-Code aus oder gib mir mal den gesamten Source-Code mit Tests aus.

Jochen

Oder so.

Jochen

Und dann und mach mir das zu einem Prompt, wo dann halt die Dateinamen auch noch immer mit drüberstehen.

Jochen

Und dann kann ich sagen, okay, pipe das mal irgendwie in ein Modell rein und dann mache ich da irgendwie einen System-Prompt zu, von wegen, ja, habe ich bei der Dokumentation irgendwas vergessen oder kann man das irgendwie, gibt es so offensichtliche Dinge, die man irgendwie besser machen kann und so.

Jochen

Und ja, das funktioniert tatsächlich ziemlich gut.

Jochen

Alle Anfragen und Antworten landen in der SQLite.

Jochen

Das heißt, hinterher kann man sich auch gut angucken, was da, also man hat alle Sachen, die man je irgendwie gepromptet hat und wo man Antworten gekriegt hat, hat man in einem strukturierten Format, das man halt auch wieder irgendwie auslesen kann und analysieren kann.

Dominik

Total hast halt deine Templates verwenden, die man halt auch dann hintereinander pipen kann und dann kann man auch das Default-Template überschreiben, wenn man will und so.

Dominik

Da hat man halt immer schon sein Systemprompt und sein Alignment so ein bisschen vor oder hinter dem ganzen Zeugs, was man da kommuniziert.

Dominik

Das finde ich auch super cool.

Dominik

Man kann jetzt, also ich habe zum Beispiel so einen, den nenne ich dann den Senior, brauche ich dann das Template Senior, dann gibt er eben immer schnippische Antworten, wie sich das von Jochen immer kenne.

Dominik

Nein, ähm.

Dominik

Es funktioniert super, es macht Spaß und der sagt immer so, ha, warum hast du das denn nicht selber rausgefunden?

Dominik

Du hättest auch die Anleitung lesen gehört.

Dominik

Das ist toll und es macht so ein bisschen Spaß beim Arbeiten, wenn man dann Fragen stellt und jemand der dann so antwortet.

Sehr lustig, ja.

Sehr gut.

Genau.

Jochen

Ja, also das Ding, ups.

Jochen

Ja, das wäre dann mein Pick, genau.

Dominik

Ja, äh, Ronny.

Ronny

Boah, so ganz spontan fallen mir nicht mehr Sachen ein.

Dominik

Du kennst etwa die Praxis nicht von dem Pick der Woche, des Monats hier bei uns im Podcast.

Ronny

Also ich kenne das doch, aber mir fällt gerade irgendwie nichts wirklich ein, was ich nicht gerade schon irgendwie in irgendeiner Art und

Jochen

Weise erwähnt habe.

Jochen

Interess gesehen.

Jochen

Oder du kannst ja, genau, wenn du einen Talk zum Beispiel bei der Django-Con super gefallen hast, dann können die Leute ihn jetzt noch nicht sehen, aber irgendwie sich schon mal darauf freuen, dass es den dann später irgendwo auf YouTube

Ronny

gibt oder so.

Ronny

Also wie gesagt, der Talk über die Layered Architecture bei Django, ich weiß nicht genau, wie er hieß, der war auf jeden Fall sehr spannend.

Ronny

Und auch einen Talk, wenn man sich für Django Django interessiert und auch in die Idee bezüglich großer Applikationen und wie lässt man eine Django-Applikation wachsen, weil ich bin schon davon überzeugt, dass man auch große Applikationen damit bauen kann.

Ronny

Es ist nicht nur zwingend, nur dieses kleine Blockding, womit es mal angefangen hat.

Ronny

Da gibt es einen Talk, Scaling Django to 500 Apps.

Ronny

Das ist auch Kraken, hier Octopus Energy Related, glaube ich.

Ronny

Und die haben eine Idee von, also Django-Apps ist halt im Endeffekt eine Art und Weise, wie man den Code kapselt.

Ronny

Das haben ja viele Frameworks.

Ronny

Und die haben da eine Idee, die, ähm, ja, Ingenieur, sie missbrauchen da ein bisschen das Framework, machen was, was nicht vorgesehen war, was aber trotzdem funktioniert, nämlich die machen Sub-Apps.

Ronny

Und haben da so eine Spitze-Naming-Konvention, um im Endeffekt zu sagen, ich hab, ich möchte, ich habe immer noch eine Domäne, die sich um mein Projekt oder mein Accounting oder mein Weiß der Geier was kümmert, mein Produkt, aber da drin, das ist so groß geworden, ich möchte das weiter strukturieren.

Ronny

Und das finde ich super spannend.

Ronny

Das ist gerade auch eine Sache, über die ich sehr aktiv nachdenke, wie ich das in mein Projekt, in dem ich aktuell arbeite, reinbringen kann.

Ronny

Weil ich jetzt zum Beispiel in meinem Projekt, wir haben es, wir haben da so ein bisschen, also manche Apps sind einfach riesig geworden, wo man sagen muss, die müssen aufgeteilt werden.

Ronny

Und mit diesem Sub-App-Gedanken bin ich heute einfach nur in der, in diesem Structure View, also wo man quasi sieht, welche Klassen gibt es in meiner Datei.

Ronny

Einfach mal mit einem Blick sind mir und meinem Kollegen wirklich einfach so, okay, das ist ein Kontext, also das ist so eine Sub-App, das ist eine, das ist eine, also es war super schnell wie so Sachen reingefunden, wo man auch sagt, okay, das gehört hier echt gar nicht rein, das muss eigentlich komplett woanders hin.

Ronny

Einfach nur mit einem Blick und diesem Gedanken, dass es dieses Sub-App-Pattern gibt, dann auch bei ein paar Sachen gesagt, okay, das ist definitiv keine Sub-App, das muss einfach, das ist Standalone so, das kann man gut rausziehen.

Ronny

Das finde ich auf jeden Fall einen sehr interessanten Vortrag, den ich jedem ans Herz legen kann, der sich für sowas interessiert.

Dominik

Sub-Apps habe ich auch immer letzte Woche in irgendeinem Projekt eingebaut, aber ohne das Pattern jetzt so zu.

Jochen

Aber ich bin eigentlich eher, gut, vielleicht bin ich da irgendwie falsch abgebogen, aber ich bin eigentlich eher so auf dem, ich mache gar keine Django-Apps mehr.

Jochen

Weil, also immer wenn ich, wenn ich so, naja, einfach ganz stinknormal mit Python-Bortmitteln Dinge modularisieren.

Modulare, ja.

Jochen

Weil das Problem bei den Apps ist halt einmal, ja, es ist halt irgendwie so eine Spezialgeschichte, die halt irgendwie anders funktioniert als alles andere und musst es halt auch in den Settings ja immer dann mitsetzen und so.

Jochen

Und dann, das, was ich eigentlich am fiesesten finde, ist, dass man halt, wenn man kann halt Sachen schlecht refactoren, so von einer App zum Beispiel in eine andere, man kann die Migration nicht umziehen.

Dominik

Aber so Modelle, genau, wäre so ein Punkt, wo ich sagen würde, eine App, wenn es irgendwo Modelle gibt, ist für mich immer bisher so eine App.

Jochen

Ja, aber was machst du dann, wenn du mal das eine Modell in eine andere App ziehen willst?

Ronny

Das ist mühsam, das habe ich schon gemacht.

Ronny

Es geht, aber es ist mühsam.

Jochen

Also weil, ja.

Ronny

Also musst du halt mit Raw SQL und Daten halt schon.

Jochen

Ja, ja, klar, du kannst natürlich, das geht schon, aber es ist halt nicht einfach, man verschiebt es und da kann man auch was kaputt machen.

Jochen

Ja, genau.

Jochen

Wenn man es halt alles in einer App hat, sozusagen, dann kann man es einfach umziehen und es kann.

Ronny

Das ist eine interessante Idee, habe ich nicht drüber nachgedacht.

Dominik

Dass wir diese Model Micro-Diskussion haben.

Jochen

Ich hab meistens dann das Modell Models, also wenn es größer wird, dann habe ich halt ein Models-Verzeichnis.

Aber wir haben Models

Dominik

in einer Datei.

Jochen

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

Jochen

Also, wenn Models irgendwie größer wird als tausend Zeilen oder so, dann würde ich denken, na gut, wahrscheinlich sollten wir es mal ein bisschen aufteilen.

Jochen

Und ja, dann kann man die ja auch so gruppieren und dann hat man noch eine Init-PY, in der man dann halt irgendwie festlegt, welche überhaupt exportiert werden sollen, weil viele Dinge braucht man gar nicht nach außen reichen, sondern rein intern.

Ronny

Das ist interessant, da habe ich nicht drüber nachgedacht, um so ein API zu sehen.

Dominik

Ja, das finde ich auch.

Dominik

Also ich mache halt so unter Verzeichnis, dass nur bestimmte Sachen rauskommen und die anderen Sachen, also dann implizit intern.

Das ist interessant.

Ronny

Da habe ich heute noch darüber nachgedacht, aber auf diese, auf diesen, das ist ein Benefit, das habe ich nicht drauf gekommen.

Interessant.

Jochen

Ja.

Dominik

Ja, cool.

Und dein Pick?

Dominik

Mein Pick, ich habe natürlich wieder von Jens geklaut, der das in unsere Gruppe geschrieben hat, das ist Monkey-Type.

Dominik

Das wird auch von Instagram entwickelt worden, wenn ich das richtig verstanden habe.

Dominik

Und das baut dir Type-Annotations.

Dominik

Das heißt, du gehst einfach hin und hast irgendeine Python-Funktion oder sowas und sagst dann Kommandozeile Monkey-Type und dann nimmt der halt die Pfeile oder das Ding und schreibt da da die Annotations dran.

Dominik

Und das ist gar nicht so schlecht.

Dominik

Also es funktioniert besser, als man vielleicht denkt.

Dominik

Ja.

Dominik

Und ja, wenn man halt gerade nicht so weiß, dann möchte ich irgendwas Hype-Ontieren, also warum man auch immer das mal möchte, dann macht man das doch.

Dominik

Und dann sieht man, was da passiert.

Dominik

Das kann einem schon ein bisschen Arbeit abnehmen.

Dominik

Und irgendwie nicht.

Dominik

Man entdeckt manchmal sogar auch Bugs, dann hast du, hä, nee, das stimmt aber eigentlich gar nicht oder so.

Dominik

Dann hat man andere Sachen erwartet.

Dominik

Oder oh, Mist, dann bekommt auf einmal der Delinter oder MyPay sagt halt so, nee moin, der Das stimmt aber jetzt gar nicht.

Das ist schon ganz gut.

Interessant.

Ja.

Jochen

Ja, dann würde ich sagen, haben wir

Dominik

für heute die Episode.

Dominik

Dann herzlichen Dank, dass du wieder da warst von dir.

Ja, ja, ja.

Vielen Dank.

Dominik

Dann machen wir es gleich noch unter uns weiter, würde ich sagen.

Dominik

Herzlichen Dank fürs Zuhören.

Dominik

Bleibt mit dem Bogen, wo ihr mir auch seid.

Dominik

Danke, Jochen.

Dominik

Und ja, Feedback an hallo.pythonpodcast.de, Feedback an Regon, Kommentare, Lob, Kritik und so weiter.

Dominik

Was ihr alles möchtet.

Bis bald.

Bis dann.

Dominik

Diesmal ganz lange warten.

Dominik

Tschüss.