Transcript: DjangoCon Europe 2024

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Hallo, liebe Hörerinnen und Hörer. Willkommen beim Python-Podcast, Episode 57.

Dominik

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

Jochen

Hallo, Dominik. Und hallo.

Jochen

Und hallo, Ronny.

Jochen

Ronny.

Jochen

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

Jochen

Ja, wunderbar.

Jochen

Freue mich auch.

Dominik

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

Dominik

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

Jochen

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

Dominik

Das ist ja nichts Neues.

Dominik

Ja.

Dominik

Das sind keine News.

Dominik

Wann war die nicht angekommen?

Dominik

Vielleicht erst mal damit an.

Dominik

Ah ja, ja.

Ronny

Die war Anfang Juni in Vigo in Spanien,

Ronny

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

Es ist ein sehr schöner Nationalpark,

Ronny

ein Inselnationalpark direkt vor der Küste.

Ronny

Wäre mal die Gelegenheit, da hinzufahren.

Ronny

Das sollte man nicht verpassen.

Ronny

Zeit, wandern zu gehen.

Jochen

Ist das so quasi da irgendwo diese Santiago de Compostela?

Ronny

Ja, genau.

Ronny

Das ist so ein bisschen südwestlich davon.

Ronny

Also genau nördlich von Portugal.

Ronny

Und genau, ich hatte einen Tag

Ronny

Zeit, wandern zu gehen, auf der

Ronny

Isla Cies, glaube ich.

Ronny

Und das ist

Ronny

wirklich sehr zu empfehlen.

Ronny

Klingt sehr gut.

Ronny

Ja.

Dominik

Nächste Woche ist Europython, vielleicht das News.

Dominik

Ich weiß nicht, ob man das noch hört. Wenn ihr darüber hört,

Dominik

vielleicht ist es ja schon vorbei. Ja, wahrscheinlich.

Dominik

Ja.

Dominik

Wir möchten

Dominik

gerne ein paar Themen von der DangoCon hören.

Dominik

Und es gibt aber noch ein, zwei andere News.

Dominik

Ja, genau. Also wir haben ja jetzt schon einige

Jochen

Zeit keine Sendung mehr.

Dominik

Das ist immer dasselbe Problem im Moment,

Dominik

aber gut.

Jochen

Also ein News ist ganz interessant.

Jochen

Google ist ja so ein bisschen unter Druck in letzter

Jochen

Zeit. Man sieht sie halt öffentlich schwitzen.

Jochen

Dieses

Jochen

ganze AI-Thema, das ist irgendwie

Jochen

ja,

Jochen

können sie nicht so richtig entscheiden. Steigen sie jetzt voll ein

Jochen

oder doch nicht? Was machen sie? Oh nein.

Jochen

Ja, und jetzt haben sie sich für etwas anderes

Jochen

entschieden, nämlich ihr Patentime-Team zu feuern.

Dominik

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

Dominik

Ich glaube, in Deutschland sogar.

Jochen

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

Dominik

Die Amerikaner wollten alle 300.000 Dollar haben pro Jahr.

Dominik

Haben sich irgendwann gedacht, das können wir in Deutschland auch für die Hälfte haben.

Jochen

Genau, dann gehen wir halt in so ein Billiglohnland

Jochen

und dann in so eine, keine Ahnung, Billigvorstadt.

Jochen

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

Jochen

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

Jochen

Aber ich bin mal gespannt, ob das klappt.

Jochen

ob sie da jetzt irgendwie, keine Ahnung,

Jochen

äquivalent rekrutieren können.

Jochen

Mal sehen.

Jochen

Aber ja.

Dominik

Ja, dann bestimmt erkannt, wo die guten Peißenleute sitzen.

Dominik

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

Dominik

wenn man sie fragt.

Dominik

Entschuldigung, ich wollte jetzt keinen Lokalpatriotismus hier auffangen.

Dominik

Ja.

Jochen

Genau, also das ist schon mal irgendwie,

Jochen

aber normalerweise ist das ja nie passiert.

Jochen

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

Jochen

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

Jochen

neu. Vielleicht ist aber jetzt

Dominik

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

Dominik

Ja, kann auch sein, ja. Also vielleicht ist auch,

Jochen

muss man da nicht so viel rein interpretieren, das ist schon richtig.

Jochen

Es gibt tatsächlich von Python 3.13

Jochen

jetzt so erste Beta-Versionen.

Jochen

Das heißt, wenn man mal ausprobieren

Jochen

will, ob das eigene Zeugs, was man so baut,

Jochen

irgendwie damit tut, dann kann man das jetzt mal

Jochen

machen und...

Jochen

Tut eigentlich, ne? Ja, es gibt glaube ich

Jochen

jetzt auch, wo war das? Irgendwas kann jetzt auch,

Jochen

man kann jetzt auch Wheels bauen für

Jochen

3.13.

Jochen

Ich habe heute echt keine Zeit gehabt,

Jochen

mich die News nochmal anzugucken.

Jochen

Insofern tut mir leid, wird etwas durcheinander.

Jochen

Aber ja.

Jochen

Da müssen wir auch mal durch.

Jochen

Python 3.13 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,

Jochen

ich weiß aber nicht, ob das News ist,

Jochen

aber es gibt ein Software-Development-Kit für One Password.

Jochen

Also ich bin immer noch bei One Password.

Jochen

Mir tut das zwar etwas weh, dass das alles super teuer ist und so,

Jochen

aber ich finde es immer noch so, der beste

Jochen

Passwortmanager und der hat

Jochen

jetzt auch einen Python-API

Jochen

im Software

Jochen

Development Kit gekriegt. Das heißt, man kann von

Jochen

Python aus irgendwie One Password anfragen.

Jochen

Also sozusagen, man kann halt Python

Jochen

Sachen schreiben und dann fragt das Ding halt

Jochen

One Password und dann sagt das Ding halt da,

Jochen

guck hier mal in die Kamera oder hier,

Jochen

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? Weißt du das?

Dominik

Wenn wir Werbung machen. Eigentlich hätten wir die

Jochen

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

Dominik

Und das ist halt schon, ja.

Dominik

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

Jochen

Ja, es gab einen auch über Okta, der war aber nicht so furchtbar schlimm, also ist auch so ein halbes Jahr her, glaube ich, oder so.

Jochen

Ja, ich wollte gerade sagen.

Jochen

Ja, genau. Was haben wir noch? Achso, ja, es gibt auch gute Nachrichten. Das ist ja auch so ein Ding, da kriege ich immer Angst, wenn ich mir angucke, wie das so funktioniert. PyPI macht wahnsinnig viel Traffic. Also was darüber geht, ist halt atemberaubend und es kostet auch wahnsinnig viel Geld.

Jochen

Und das funktioniert halt darüber, dass es einen CDN, so Content Delivery Network Anbieter gibt, der sponsert das halt, der hostet PyPI. Und ich weiß nicht, was man zahlen müsste, wenn man das nicht irgendwie kostenlos kriegen würde. Es wäre sehr viel und das wäre ein Riesenproblem, weil ja, per Pip installieren würde dann halt nicht mehr funktionieren.

Jochen

Und die haben jetzt gerade auf der Python US verkündet,

Jochen

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

Jochen

Cool, cool.

Jochen

Das ist natürlich praktisch.

Dominik

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

Dominik

Ja, genau.

Jochen

Dann tatsächlich jetzt im Juni vor zwei, drei Wochen

Jochen

ist NumPy 2.0 erschienen.

Jochen

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

Jochen

Das war eine ganze Zeit lang in Progress.

Jochen

Und

Jochen

genau, ist vielleicht

Jochen

jetzt nicht der günstigste Moment, um zu steigen,

Jochen

sondern man sollte vielleicht das erst mal auf

Jochen

kleiner zwei pinnen oder so und dann mal gucken,

Jochen

bis alle anderen irgendwie sich

Jochen

angepasst haben, weil das bricht halt

Jochen

einige

Jochen

Geschichten. Aber ja,

Jochen

schön, dass es jetzt raus ist und dann

Jochen

es macht einige...

Jochen

Wie gesagt, ich habe keine

Jochen

Ahnung, was alles genau passiert ist oder ich wusste es mal,

Jochen

hab es wieder vergessen.

Jochen

ja, Performance ist irgendwie besser geworden.

Dominik

Es sind auch ein paar Updates, das heißt,

Dominik

ihr müsst ein bisschen aufpassen, weil wenn ihr da irgendwie einfach

Dominik

updatet, dann kann es sein, dass euch

Dominik

relativ viele Dinge kaputt gehen.

Dominik

Also ich habe so ein paar Updates gehabt, da war es

Dominik

so ein bisschen hässlich, weil

Dominik

ich tatsächlich downgraden musste,

Dominik

weil da irgendwie Pakete irgendwo

Dominik

ganz tief drin waren, die dann

Dominik

leider nicht mehr wollten und die man halt

Dominik

umbauen hätte müssen oder sowas, wo man dann erstmal

Dominik

verstehen muss, was alles ist. Das dauert alles relativ viel Zeit.

Dominik

Nicht so schön, aber

Dominik

waren ein paar Upper Boundaries dann

Dominik

in den Projekten auf einmal drin.

Dominik

Ja. Aber gut,

Dominik

das ist eigentlich super, dass man

Dominik

halt, das ist auch eh ein Semantic-Version-Ding,

Dominik

2.0, Breaking-Api-Changes,

Dominik

what happens. Genau.

Jochen

Genau, dann gibt's

Jochen

eine neue, also eine erste

Jochen

1.0-Release von Polars,

Jochen

was ja auch vielleicht ganz

Jochen

nett ist, dass man sich

Jochen

jetzt halt so drauf verlassen kann, dass die Api da mal

Jochen

eine Zeit lang stabil bleibt und so.

Jochen

Und da ist auch sonst nichts Großartiges

Dominik

dazugekommen. Nutzt du das

Dominik

irgendwo viel oder ein bisschen?

Jochen

Nee, viel nutze ich das nicht. Ich nutze das ab und zu mal, aber

Jochen

Pandas oder ist das egal? Ich nutze eher Pandas,

Jochen

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

Dominik

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

Dominik

Ja. Pandas haben die auch ein bisschen schneller gemacht. Ich weiß gar nicht,

Dominik

gibt es irgendwie wirklich jemand, der das mal getestet hat,

Dominik

was so für was besser geht?

Jochen

Ja, also Polars ist tatsächlich,

Jochen

wenn man einfache Sachen macht, ist es halt

Jochen

ein gutes Stückchen schneller.

Jochen

Es gibt halt Dinge, die gehen mit

Jochen

Polars gar nicht so und die gehen mit Pandas und dann

Jochen

und ich meine, ich habe mich an diese, also viele Sachen

Jochen

sind halt auch total komisch. Und ich habe mich halt dran gewöhnt.

Jochen

Zum Beispiel an diese Multi-Index-Geschichten

Jochen

und so. Und

Jochen

wahrscheinlich ist es keine gute Idee. Und es ist richtig,

Jochen

dass Bollers das alles nicht gemacht hat. Und auch selbst

Jochen

die Leute, die Pandas gebaut haben.

Jochen

McKinney sagt heute im Podcast so,

Jochen

ja, das mit diesen ganzen komplizierten Index-Geschichten

Jochen

und so, das war wahrscheinlich alles nicht so richtig.

Jochen

Aber wenn man sich mal dran gewöhnt hat,

Jochen

dann

Jochen

ist das halt klar, wie man das damit macht.

Jochen

Und alles andere muss man halt dann denken.

Jochen

Ja, deswegen benutze ich halt eigentlich

Jochen

immer noch lieber Pandas. Aber

Jochen

ja, ich glaube

Jochen

Polas ist schon der richtige Weg eigentlich.

Jochen

Ja, genau.

Jochen

Was gibt es noch? Psycho-PG

Jochen

3.2 ist raus, also

Jochen

auch etwas, ich weiß

Jochen

nicht, ob alle schon umgestiegen sind auf 3,

Jochen

also ich habe das wahrscheinlich...

Dominik

Es gab ja Psycho-PG 2 explizit

Dominik

und wenn man jetzt aber normal Psycho-PG nimmt,

Dominik

dann ist das jetzt normal 3. Ja, genau.

Jochen

Und

Jochen

ja, super, da ist halt auch

Jochen

so Essing-Support

Jochen

jetzt mit drin und diverse

Jochen

Geschichten. Also

Dominik

Auf Postgres 15, was ist das Minimum

Dominik

für Seiko BD?

Dominik

Warte mal, lass mal grad gucken.

Dominik

Bestimmt auch bei Tifa.

Jochen

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

Jochen

Minimum steht da nicht.

Jochen

Nee, steht, steht,

Dominik

ich weiß es. Keine Low-Hanging Fruit.

Dominik

Auch nicht so wichtig. Die meisten

Dominik

Leute, sind die bei alten Datenbanken oder bei neuen? Was meint ihr?

Jochen

Ich denke alte Datenbanken,

Jochen

weil die meisten halt nicht die Kontrolle haben

Jochen

über die Distributionen, auf denen ihr Zeugs läuft.

Jochen

Und dann haben sie halt irgendwie entweder alte Datenbanken,

Jochen

weil Datenbanken auch oft nicht kontinuierisiert sind.

Jochen

Oder sie haben es kontinuiert und haben dann vergessen,

Jochen

dass es irgendwie ...

Jochen

Aber in der Praxis sehe ich ganz oft alte Datenbanken.

Jochen

Ja, stimmt.

Jochen

Und ehrlich gesagt, ich finde es komisch,

Jochen

weil das ist halt so ...

Jochen

Ich meine, es kostet eigentlich ja nicht viel,

Jochen

das abzudaten oder da abzudaten zu bleiben

Jochen

und es bringt halt ordentlich was, also

Jochen

eben, wenn ich jetzt mir angucke, so

Jochen

Postgres 12 oder so, was ich häufig sehe, oder

Jochen

äh, selbst, also

Jochen

bis, wenn man jetzt stattdessen ein

Jochen

Postgres 16 nimmt, dann ist es halt schon, da hat sich

Jochen

schon einiges getan, also

Jochen

kriegt man irgendwie so 30% Performance

Jochen

Proofment einfach so gerade.

Jochen

Ja, also, ja.

Jochen

Genau, ähm,

Jochen

ja, äh, dann, oh,

Jochen

HTMLX 2.0 ist erschienen,

Jochen

auch ganz interessant, da hat sich auch nichts

Jochen

geändert, sondern das ist einfach nur

Jochen

hochgezählt und

Jochen

gut, ist ein paar Sachen entfernt worden.

Jochen

Also ein paar Extensions,

Jochen

die Websockers-Extension ist nicht mehr drin

Jochen

oder ein paar Dinger.

Jochen

Genau.

Jochen

Du benutzt das immer noch so gern?

Jochen

Ich benutze das immer noch super gern.

Jochen

Ich auch. Ich habe es auch jetzt letztens wieder

Jochen

in einem Projekt gehabt

Jochen

und das war echt

Jochen

total super.

Dominik

Wie würdest du denn einen Chat umsetzen?

Jochen

Ja gut, okay.

Jochen

Chat, da muss man dann drüber nachdenken,

Jochen

vielleicht ist es da besser, dann was anderes zu

Jochen

nehmen. Ja. Könnte schon sein.

Jochen

Ich meine, man kann es bauen, aber

Jochen

ob das so viel Spaß macht, weil da ist ja

Jochen

manchmal vielleicht die Echtzeit dann tatsächlich,

Jochen

wenn die Echtzeit eine Reaktion hat, irgendwie interessant.

Jochen

Wenn man jetzt pollen würde, dann

Jochen

hast du immer so ein bisschen Latenz.

Ronny

Server-Send-Events, glaube ich,

Jochen

geht damit. Ja, das geht damit

Jochen

natürlich auch, aber das ist ja dann

Jochen

fast das Gleiche, also es ist auf jeden Fall ähnlich wie

Jochen

WebSockets auch. Also es ist

Jochen

halt nicht bidirektional, aber du hast halt auch die ganze

Jochen

Zeit eine stehende Verbindung, die halt die

Jochen

ganzen anderen komischen Schwierigkeiten

Jochen

hat, die man dann halt so hat, wie

Jochen

ja, wie loadbalancen wir das jetzt denn eigentlich?

Jochen

Was ist denn, wenn ich jetzt irgendwie ein Deployment

Jochen

mache und ich restarte das Ding?

Jochen

Was passiert denn da mit der Verbindung?

Jochen

Ist sie jetzt erstmal weg? Kommt sie wieder?

Jochen

Kommt sie nicht wieder?

Jochen

Der Mensch am anderen

Jochen

Ende des Chats merkt ja einfach nach drei Tagen

Jochen

irgendwie, dass

Jochen

keiner mit ihm redet und denkt alle, er stinkt

Jochen

irgendwie und niemand will mit ihm reden,

Jochen

tatsächlich ist einfach nur diese Verbindung weg.

Jochen

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

Jochen

rein und

Jochen

das ist halt bei WebSockets und bei

Jochen

Server-Send-Events so.

Jochen

Insofern, ich weiß nicht.

Jochen

Also wenn man es irgendwie ohne sowas machen kann, würde ich es

Jochen

ohne sowas machen, aber kann sein, dass Chat

Jochen

eine der wenigen Sachen ist, wo man das halt tatsächlich braucht.

Jochen

Ja.

Dominik

Und was ist mit Chat mit dem Server?

Jochen

Chat mit dem Server ist

Dominik

Also keine Ahnung, du schickst mit dem Server

Dominik

eine Frage und nicht einem anderen

Dominik

Menschen.

Jochen

Nee, da brauchst du es nicht. Achso, du meinst jetzt so was

Jochen

wie Chat-GPT, wenn man das implementieren

Jochen

wollte. Genau, da brauchst du es nicht.

Jochen

Das geht, Request-Response, super.

Jochen

Dann wartest du einfach drauf.

Jochen

Ja, also du kannst halt dann,

Jochen

du kannst ja auch das anzeigen, was dann zurückkommt

Jochen

direkt, aber

Jochen

da brauchst du keine stehende

Jochen

Verbindung. So gechankt jetzt, oder?

Jochen

Ja, du kannst einfach

Jochen

mal da rauskommen, kannst

Jochen

ja das anzeigen,

Jochen

das geht.

Jochen

Genau.

Jochen

Ja, genau, das ist auch so was.

Jochen

Genau, dafür braucht man

Jochen

keine

Jochen

direktionale

Jochen

Verbindung oder keine stehende Verbindung.

Jochen

Okay, dann

Jochen

5.1 hast du noch.

Jochen

5.1 Alpha erschienen, genau.

Jochen

Ich weiß nicht,

Jochen

ob hier irgendjemand genau die Liste der

Jochen

Neuigkeiten und so mit dabei hat.

Jochen

Also ich meine, es dauert auch noch ein Momentchen,

Jochen

bis das erscheint, aber...

Jochen

Ist das die erste Alpha?

Jochen

Ja, also was ich hier schon sehe,

Jochen

Query-String, super, das habe ich hier halt schon ein paar Mal

Jochen

selber gebaut. Aber warum gibt es das denn nicht?

Jochen

Genau, also das Problem

Jochen

ist, wenn man quasi

Jochen

ein paar

Jochen

Dinge hinzufügen

Jochen

will zu einem Query-String, zum Beispiel, wenn man

Jochen

irgendeinen Filter angeschaltet hat oder so,

Jochen

dann ist halt die Frage, okay,

Jochen

aber da sind jetzt möglicherweise schon Sachen gesetzt

Jochen

und dann muss man das irgendwie,

Jochen

wie updatet man das denn?

Jochen

Und da gibt es jetzt ein Template-Tag für,

Jochen

wo man halt einfach den Query-String

Jochen

kriegt und das ist natürlich praktisch.

Jochen

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

Ronny

dabei sind. Es sind nicht die großen Game-Changer,

Ronny

die sind jetzt eher dann für 5.2, glaube ich, geplant.

Ronny

Später mehr.

Ronny

Ja, sondern eher Kleinigkeiten,

Ronny

die einem einfach helfen, besser

Ronny

und angenehmer zu arbeiten.

Jochen

Ja, oh, es gibt

Jochen

Connection-Pool-Support

Jochen

für Postgres, was dann auch praktisch ist.

Jochen

Also ich meine, ehrlich gesagt, für meine Sachen

Jochen

ist es nicht so, also da komme ich

Jochen

sowieso nie so an die Grenzen, dass ich da wirklich

Jochen

ein Pool lieber hätte oder so,

Jochen

sondern es ist alles egal.

Jochen

Aber wenn man das Problem hat, dann ist es natürlich

Jochen

doof, wenn man da irgendwie was anderes machen muss.

Jochen

Ja.

Jochen

Ja, ja, ja, ja.

Jochen

Middleware to require authentication

Jochen

by default. Keine Ahnung, was das ist.

Dominik

Aber ich würde sagen, über die ganzen Neuigkeiten bei Django,

Dominik

da können wir doch tatsächlich den Ronny gleich besser fragen,

Dominik

weil der von Django-Con wahrscheinlich mehr erzählen kann,

Dominik

als er aus dem 5.1...

Jochen

Ich glaube, das ist so wahnsinnig...

Jochen

Ja, genau.

Jochen

Ist auch nichts Weltbewegendes mehr.

Jochen

Alles klar, dann, genau, haben wir nur

Jochen

ein Event, dass es das gibt und

Dominik

Dann sind wir vielleicht mit der News heute schon ein bisschen durch

Dominik

oder habt ihr noch irgendwas, was ganz total relevant, wichtig war?

Dominik

Nicht von meiner Seite.

Dominik

Okay. Gut.

Dominik

Dann erzähl doch mal von der DangoCon, lieber Ronny.

Dominik

Also ich hab, du, also erstmal,

Dominik

du, eigentlich müsstest du ja von dir selber erzählen, weil du hast ja auch

Dominik

was gesagt, glaube ich sogar, ne? Genau.

Dominik

Und was Cooles erzählt und vielleicht fangen wir doch einfach damit an,

Dominik

dann können wir danach so von allgemeinen Sachen erzählen.

Ronny

Ja, genau. Also wie gesagt,

Ronny

ich heiße Ronny, ich arbeite

Ronny

seit 2012

Ronny

mit Django. Ich habe damals mit 1.4

Ronny

angefangen, was

Ronny

lange, lange her ist.

Ronny

Damals hatten wir auch noch ein anderes Versionsschema,

Ronny

also das ist länger her, als es klingt.

Ronny

Und

Ronny

bin jetzt seit vielen Jahren

Ronny

Tech Evangelist in meiner

Ronny

Firma. Ich arbeite bei der Agentur

Ronny

Ambient in Köln und

Ronny

habe da durch die Möglichkeit

Ronny

mich mit der

Ronny

Thematik zu beschäftigen und

Ronny

mich in dem ganzen Django-Backend-Kontext

Ronny

so ein bisschen auch up-to-date

Ronny

zu halten und da auch

Ronny

Sachen zu machen, zum Beispiel auch mal

Ronny

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

Ronny

echten Konferenz-Stage. Ich war

Ronny

man könnte vielleicht sagen zum Warmlaufen

Ronny

letztes Jahr bei dem

Ronny

Django-Day in Kopenhagen. Das war sehr cool.

Ronny

Das ist so eine Mini-Konferenz. Das ist so ein Raum

Ronny

für so 60 bis 70 Leute, würde ich sagen.

Ronny

Und das ist nur ein Tag.

Ronny

Und das war sehr nett, sehr familiär und das war so das erste Mal, dass ich irgendwie vor, naja, literally laufender Kamera das gemacht habe.

Ronny

Das stimmt überhaupt nicht, wir haben dich schon ganz oft live was erzählen hören.

Ronny

Ja, aber das war nicht mit Livestream zu.

Dominik

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

Dominik

Ja, die Django Meetups machen wir nicht. Ach so, das meinst du. Ja, okay.

Dominik

Ja, doch.

Ronny

Genau, ich bin nämlich beim Django Meetup Köln, ich organisiere das und da halte ich auch gelegentlich meinen Vortrag, längst nicht mehr so oft wie früher, was glaube ich ein gutes Zeichen ist, 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. Das nennt sich Django Pony Express. Das löst im Endeffekt das Problem, wer 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 50s-Based-Template hat, die entsprechende Heller gesetzt hat, die einen Unsubscribe-Link hat, die irgendwie ansprechend aussieht etc. Und da habe ich mir was überlegt, dass wer Django kennt, kennt ja wahrscheinlich auch Class-Based-Views und ich habe das ganze Thema Class-Based-E-Mails genannt 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.

Ronny

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ür das 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 drei oder vier Zeile 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, 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 Django-Test-Framework bringt einem da so ein paar Tools mit, aber die sind alle so ein bisschen versteckt. Und da habe ich dann so einen Wrapper 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 an irgendwen, dass man auf diese Liste so ein bisschen wie in einem Query-Set zugreifen kann.

Ronny

Also 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 Context-Parts da bestimmte Dinge drin sind und so weiter. Und da habe ich einen Vortrag drüber gehalten, das hat sehr viel Spaß gemacht, ich war sehr nervös.

Ronny

Ich war sehr aufgeregt, aber es hat sehr viel Spaß gemacht tatsächlich. Ich war unendlich viel schneller als bei den Malen, wo ich geübt habe. Das ist glaube ich so eine Sache, das ist man immer, aber ich war wirklich schnell. Ich glaube, ich habe auf 21 Minuten Testzeit 16 Minuten Vortragszeit gehabt.

Ronny

immer so schnell geredet wie ich.

Ronny

Ich weiß es nicht. Ich habe mir versucht, extra ein bisschen

Ronny

Zeit zu lassen, aber

Ronny

ja, hat so mittelgut funktioniert.

Ronny

Nichtsdestotrotz auch viel

Ronny

positives Feedback bekommen und

Ronny

ist auch tatsächlich nochmal eine ganz andere

Ronny

Art, auf so einer Konferenz

Ronny

zu sein. Das war jetzt, glaube ich, meine

Ronny

fünfte oder sechste DjangoCon mit

Ronny

ein paar, ich glaube fünfte, mit

Ronny

zwei Remote wegen Corona

Ronny

und das ist echt

Ronny

nochmal ein ganz anderes Gefühl. Also ich finde generell

Ronny

kann ich das jedem nur ans Herz legen, wäre es noch nicht

Ronny

gemacht hat, geht mal auf eine Konferenz.

Ronny

Auf meiner allerersten Django-Con

Ronny

habe ich halt Unistyle erwartet.

Ronny

Da steht irgendwer und erzählt was Langweiliges

Ronny

und dachte, ich gehe eigentlich wegen den Leuten dahin.

Ronny

Tatsächlich gehe ich auch gerne wegen den Leuten dahin,

Ronny

jetzt wo ich auch viele kenne, aber die Vorträge

Ronny

sind auch wirklich gut und wenn man

Ronny

denkt, dass das halt auch alles auf einem

Ronny

kleinen Budget läuft, da jetzt keine große Tech-Company

Ronny

dahinter steht, die da irgendwie Millionen

Ronny

einfach mal so verschenkt, sondern das alles irgendwie von

Ronny

von Volonteers

Ronny

getragen wird und dann

Ronny

die sich freuen, wenn da halt irgendeine Firma irgendwie

Ronny

Tausi reinwirft, ist

Ronny

das schon echt beeindruckend und

Ronny

genau, da waren echt

Ronny

coole Sachen dabei.

Ronny

Das, glaube ich, der

Ronny

große Game Changer

Ronny

sind die Background Workers.

Ronny

Das ist eine von diesen DEP, also so eine

Ronny

Django, ich weiß gar nicht, was die Abkürzung bedeutet.

Jochen

Django Enhancement Proposal.

Ronny

Ah ja, genau. Dieses DEP, ich glaube

Ronny

14 oder sowas. Die sind auch irgendwie

Ronny

in letzter Zeit erst wieder entdeckt worden.

Ronny

Ich glaube, dass es die gibt und

Ronny

die werden jetzt auch wieder recht populär.

Ronny

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

Ronny

Und diese Background Work ist im Endeffekt eine Idee,

Ronny

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

Dominik

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

Dominik

vielleicht so als Extrathema,

Dominik

weil da haben wir vielleicht noch ein, zwei coole Links zu.

Dominik

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

Dominik

bevor wir auf die Background-Tasche gehen.

Dominik

Okay.

Ronny

Ja, genau.

Ronny

Also die ...

Ronny

Ja, was habe ich denn?

Ronny

Was kann ich dazu noch sagen?

Jochen

Irgendwie, war das nicht auch irgendwas, wo so ein Architektur-Design-Pattern irgendwie so ein bisschen eine Rolle spielte?

Jochen

Ne, vielleicht habe ich das auch einfach falsch.

Jochen

Einfach nur objektorientierte E-Mails quasi.

Ronny

Genau, und es ist halt einfach ein Wrapper 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.

Dominik

Genau.

Ronny

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

Ronny

Es gibt auch gerade eine große Diskussion,

Ronny

weil bei Python da scheinbar etwas deprecated wurde.

Ronny

In der letzten Version.

Ronny

Und Django noch auf den alten Sachen.

Ronny

Ich glaube, es wird nicht deprecated,

Ronny

aber es gibt so etwas Neueres, Cooleres.

Ronny

Und die Django-Sachen unter der Haube benutzen noch die alten.

Ronny

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

Ronny

Interessanterweise, ich bin da ganz aus Versehen

Ronny

auf diesen Zug aufgesprungen.

Dominik

direkt eine blöde Anwendungsfrage, wie

Dominik

verschickt ihr denn E-Mails?

Ronny

Also tatsächlich, das ist auch

Ronny

eine Frage, die ich jedes Mal gestellt werde,

Ronny

wenn ich diesen Vortrag, ich muss gestehen, ich bin an

Ronny

mehreren Occasions recycelt,

Ronny

das ist eine Frage, die sehr oft

Ronny

kommt. Bei mir geht es wirklich

Ronny

im Endeffekt nur um die Developer

Ronny

Experience und um die Maintainability.

Ronny

Also sprich, wie erstelle ich

Ronny

programmatisch diese E-Mail,

Ronny

wie stelle ich sicher,

Ronny

dass da alles drin ist und wie kann ich das nachher

Ronny

testen. Alles, was danach kommt,

Ronny

also im Endeffekt, das ist alles

Ronny

nicht das, wo das Package ansieht.

Ronny

Also da hört es quasi auf. Also bei den Unit-Tests,

Ronny

je nachdem, wie man es definiert, ist quasi

Ronny

dann das Ende und danach kann man halt

Ronny

dann die E-Mail so verschicken, wie man sie halt

Ronny

mit Django sonst verschicken möchte. Also ob man da jetzt irgendeinen

Ronny

Mail-Hawk reinhängt oder irgendein super

Ronny

abgefahrenes E-Mailing-Cluster hat oder seine

Ronny

eigene Gmail-Adresse dafür nutzt oder

Ronny

einfach das bei

Ronny

SES reinwirft, das ist

Ronny

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

Ronny

Wie macht ihr das? Wir selbst

Ronny

nutzen, SES. Das ist

Ronny

von Amazon. Ich glaube, das gibt's

Ronny

aber auch in, also ich glaube, das ist ein Standard

Ronny

sogar. Ich bin nicht ganz sicher. Ich glaube, Amazon hat ja viele von diesen

Ronny

Standards definiert.

Ronny

Und das ist ein Service, der ist

Ronny

halt sehr günstig und sehr leistungsfähig.

Ronny

Ich habe für ein

Ronny

Privatprojekt, ich engagiere mich da

Ronny

für Kinder in Bolivien,

Ronny

haben wir früher

Ronny

unseren Spendern und Interessenten

Ronny

so einen Jahresbericht

Ronny

per PDF geschickt, das damals

Ronny

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 hat, war immer so 500, 800 Kilo bei, das ist schon relativ groß für eine E-Mail. Und unsere alten Mail-Server sind regelmäßig da irgendwie abgekackt, hängen geblieben, mühsam. Dann habe ich irgendwann auf SCS umgestellt. Alle E-Mails zu versenden kostet dann vielleicht ein Euro oder zwei, ich weiß es nicht genau. Und das läuft halt einfach. Also du kannst dir eine beliebige Menge von E-Mails geben und die kommen halt an. Das ist halt sehr, sehr angenehm.

Ronny

Genau. Ja und tatsächlich, eine Sache kann ich dazu sagen, was mich auch sehr gefreut hat, ich habe ja wie gesagt für den Vortrag auf der Con 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, was da Sachen drin sind, die meiner Meinung nach auch gut ins Django Core, also in das Framework passen würden und dass wir dort, dass ich mich freuen würde halt was zu contributen, aber ich halt bis jetzt halt noch nicht so die richtigen Sachen hatte, es hat nie richtig funktioniert.

Ronny

Da habe ich ein paar Tipps bekommen, wie ich das mache. 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 centralisieren und da dann einfach meine Idee, also mit etwas kleinem Anliegen.

Ronny

fangen, zum Beispiel dieser Testing-Helper,

Ronny

dass man halt quasi

Ronny

durch einen, also

Ronny

dass man alle textbasierten

Ronny

Medieninhalte einer E-Mail, also

Ronny

in den meisten Fällen HTML und Plaintext,

Ronny

wirklich einfach gucken kann, ist

Ronny

dieser String da drin, also zum Beispiel

Ronny

weiß ich nicht, ist, da steht da drin

Ronny

lieber Jochen als Anrede oder steht da

Ronny

drin Auftragsbestätigung oder ist da diese

Ronny

Auftragsnummer drin, solche Geschichten.

Ronny

Und diesen Helper haben wir

Ronny

dann in einem Forum-Thread ausdiskutiert.

Ronny

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

Ronny

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

Ronny

alleine überlegt hatte. Es war viel

Ronny

weniger zu implementieren, lustigerweise auch,

Ronny

was man alleine gemacht hat.

Ronny

Es gibt diesen schönen Spruch,

Ronny

Weeks of Programming can save hours of

Ronny

Planning, das war wieder sehr wahr.

Ronny

Und genau, dann

Ronny

ist vor zwei Wochen, glaube ich,

Ronny

dann das auch gemerged

Ronny

worden in Django Core. Also in 5.2

Ronny

habe ich meinen ersten Commit, was mich sehr freut,

Ronny

jetzt nach zwölf Jahren.

Ronny

Cool. Vielen Dank.

Ronny

Genau.

Dominik

Ja, das klingt cool. Also ja, ich muss es eigentlich auch mal ausprobieren. Ich hatte das zwischendurch mal so angeguckt, aber nicht dann angefasst, weil die E-Mail-Lösung bei mir war schon fertig und ich hätte hier alles umbauen müssen.

Dominik

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, weil halt auch, wie du gesagt hast, diese ganzen Features, Templates per HTML und so weiter, sehr gerne genutzt werden.

Ronny

Tatsächlich ein Feature, was ich persönlich sehr mag, einfach so ein Convenience-Feature, de facto interessiert die wenigsten Leute wirklich der Plaintext-Part, weil die normalen, die modernen E-Mail-Clients oder die Web-basierten Clients den 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 oder wenn halt irgendjemand auf seinem Linux-1980-Konsolen-basierten E-Mail-Programm noch sitzt, da gibt es auch so ein paar Spezies, die das machen.

Ronny

Aber ansonsten sieht es halt niemand. 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. Die Struktur ist nicht schön, es funktioniert, auch Links und sowas kriegt der hin. 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 dann hat man keine doppelten Templates mehr 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 und da wurde ständig vergessen, eine von beiden Teilen anzupassen.

Ronny

Das kann man natürlich in gewissen Maßen durch diesen Testhelper lösen, dass man das einfach unit testet. Nichtsdestotrotz, wenn es ein Rechtschreibfehler oder sowas ist, hat man vielleicht darauf gerade nicht geschaut. Das war ein ständiger Pain und das kann man sehr gut damit halt einfach erschlagen und löst das Problem damit. Das ist sehr angenehm.

Dominik

Sehr gut. Und du hast gesagt, macht auch sowas dann wie Opt-out-Links oder für E-Mail-Newsletter oder sowas dann direkt mit drin? Ist das da in einem Package drin?

Ronny

Also das Package nicht, die Idee ist quasi, dass man, also 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, gegebenenfalls noch Kontextvariable 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, also die E-Mails, die man schickt aus dem System, sollen ja irgendwie einheitlich sein. Wie auch bei einer Webseite hättest du ein Basis-Template. Du hast da das Logo oben drin, du hast da vielleicht eine generelle Anrede, du hast ein Footer, wo ein paar legale Sachen drinstehen, wo vielleicht ein Unsubscribe-Link drin ist und diese ganzen Sachen, die ganzen Informationen, die man dafür braucht, das sind auch die dynamischen Sachen.

Ronny

Zum Beispiel, wenn man sagt, der Unsubscribe-Link enthält ein Hash oder sowas, dass der Nutzer identifiziert werden kann, der das draufgeklickt hat und solche Geschichten. Wenn man da einfach von der meiner Pony Express Basisklasse ableitet, eine eigene Basisklasse macht, dort dann halt die zum Beispiel die Get-Context-Data, wer Django kennt, weiß, was ich meine, überschreibt, dann kann man da halt einmal die ganzen Sachen definieren oder zum Beispiel, dass man 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 geprefixed sind oder zum Beispiel dann irgendwie meinwebshop.de minus und dann halt Account erstellt, Passwort reset und was auch immer und diese Sachen kann man einmal definieren und jede E-Mail, die man dann weiter erstellt, leitet dann halt von dieser eigenen Klasse ab und das, ich meine, das ist halt ganz normale Objektorientierung, das hat jetzt nichts mit dem Pony Express zu tun, aber das ist halt, das macht es sehr angenehm und führt auch dazu, dass die eigentlichen E-Mails, die ich am Schluss dann, wo ich dann auch die N, die N-te,

Ronny

dokumentieren muss, dass das wirklich dann meistens halt nur zwei oder drei Zeilen Code sind. Was es natürlich auch wieder sehr angenehm macht, neue E-Mails hinzuzufügen. Genau.

Dominik

Cool, cool. 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, da lande ich immer bei dem gleichen GitHub-Repo, das es schon seit, ich glaube, 2015 oder sowas gibt. Das ist immer noch überraschend gut und das funktioniert auch.

Dominik

Das müssen wir unbedingt in die Show noch stellen.

Ronny

Das ist super simpel, es tut es aber irgendwie, ich weiß auch nicht genau warum, aber wenn man sich halt da ein paar Regeln hält, je nachdem wie alte E-Mail-Clients man unterstützen möchte, die früheren Outlook-Versionen sind ja ziemlich wild, die dann unter der Haube so ein Indexbrowser 5 oder sowas haben, das tut dann schon weh, wenn man die unterstützen möchte, aber wie gesagt, kommt halt auch immer dann drauf an, wie wichtig das dann ist, also vielleicht akzeptiert, wie halt auch mit Browsern, vielleicht ist es auch einfach okay, wenn dann der eine, der halt noch den Indexbrowser 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. Ich habe selbst überlegt, ob ich diese Sache mit den Class-Based-E-Mails und die Sache mit der Testsuit, ob ich die auseinanderziehen soll, weil es ja im Endeffekt die Testsuit einen eigenständigen Nutzen hat, auch wenn ich keine Class-Based-E-Mails verwende.

Ronny

Es ist einfach nur ein Django-Ding 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. Von daher habe ich mich auch entschieden, dann da nicht noch weitere Dinge reinzubauen und auch persönlich, weil ich da halt auch nicht so die Pain-Points hatte.

Dominik

Also hast du eh schon trotzdem mal Copy-Paste, musstest aber erst nicht bereitstellen mit dem Package, okay, verstehe.

Dominik

Genau.

Dominik

Ja, klingt gut.

Dominik

Aber jetzt kommen wir tatsächlich, glaube ich,

Dominik

dann zu Django Tasks, weil, wenn man

Dominik

ihm es verschicken möchte, möchte man das ja

Dominik

wahrscheinlich nicht sequenziell.

Dominik

Genau, nicht im Main Thread.

Ronny

Und genau,

Ronny

da gibt es

Ronny

ein neues Konzept, wie gesagt, das

Ronny

nennt sich Background Workers, das lebt aktuell in einem

Ronny

Package namens Django-Tasks.

Ronny

Da muss man aufpassen, es gibt ganz viele, die ähnlich

Ronny

klingen. Django-Background-Tasks,

Dominik

Ja, Background-Task-Manager.

Ronny

Genau, auf jeden Fall dieses Django-Task-Package.

Ronny

Das ist von Jake Howard.

Ronny

Der hat das jetzt relativ schnell zusammengenagelt.

Ronny

Das ist echt erstaunlich.

Ronny

Der freut sich auf jeden Fall über ...

Dominik

Doch, das ist nicht Django-Background-Task.

Jochen

Ja, ich merke schon.

Jochen

Ich merke schon, ich google hier.

Ronny

Der freut sich auf jeden Fall immer über Leute,

Ronny

die das ausprobieren.

Ronny

Also wer von euch Interesse an Django hat,

Ronny

möge das gerne anschauen.

Ronny

Jetzt muss ich auch noch einen Satz sagen,

Ronny

was das überhaupt ist.

Ronny

Ja.

Ronny

Genau.

Ronny

Also in den meisten Projekten, wenn man irgendwas asynchron machen möchte, da meine ich jetzt gar nicht dieses in ganzem Sinne relativ moderne Async, sondern einfach, ich möchte irgendwelche Prozesse nachgelagert machen, 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, ich muss ja mit der externen API kommunizieren, um die E-Mail zu versenden, da möchte ich ja im Optimalfall nicht meinen externen Thread blockieren, äh, meinen Main Thread blockieren.

Ronny

Genau, deshalb gibt es in jedem Projekt, in dem ich gearbeitet habe, irgendeine Art von asynchronem Processing, meistens in der Form von Celery, das ist in der Python-Welt sehr bekannt, in der Django-Welt.

Dominik

Sehr gehasst und gefürchtet.

Dominik

Ja. Gibt es Django Q oder Q2? Ist jetzt aufgekommen, das ist so eine leichtgewichtigere Alternative, weil das Hauptproblem ist, dass Celery erzwingt, dass man irgendeinen Broker dazwischen stellt, der als Message-Queue dient.

Jochen

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

Dominik

Oder der hat eine lokale Datei, in der er irgendwas reinschreiben kann und macht irgendeine SQLite noch extra auf.

Jochen

Okay, das weiß ich, ja, aber ich glaube, man muss es nicht unbedingt, also es ist üblich, ja.

Ronny

Und es ist auch, also ich habe das mehrfach schon gesucht und für die Result Backends, also bei Celery, wenn quasi um die Ergebnisse zu speichern und das im Endeffekt so eine Art Log, was passiert ist, dafür geht das, das ist relativ einfach, aber für den Broker selbst bin ich zumindest immer damit gescheitert.

Ronny

Ich war tatsächlich nie so viel investiert darin. Auf jeden Fall für die allermeisten Cases ist es halt einfach harter Overkill, wenn man da halt irgendeine Postgres oder MariaDB hat. Die kann in den, zum Beispiel bei uns in den meisten Fällen, kann die paar hundert Tasks, die am Tag laufen, problemlos abfrühstücken, ohne dass sie da irgendwie in Verlegenheiten kommen.

Ronny

und selbst bei ein paar tausend Tasks ist es immer noch

Ronny

kein Problem. Vor allem, wenn man dann

Ronny

vielleicht auch sagt, dass

Ronny

die, dass die ein großer Task vielleicht auch eher

Ronny

nachts läuft für irgendwelche Sachen,

Ronny

dann, da ich auch keine Userlast habe

Ronny

und das wird allgemein

Ronny

sehr stark als Overkill angesehen. Dazu,

Ronny

wie Dominik gerade schon gesagt hat, viele Leute fürchten

Ronny

auf Celery für, aus verschiedenen

Ronny

Gründen.

Dominik

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

Dominik

Aber vielleicht, also ist die Frage, ob es an Celery liegt oder

Dominik

daran, dass Icing halt ein bisschen schwieriger ist?

Jochen

Also da würde ich

Jochen

gerne nochmal kurz eine Begriffsklärung machen, weil

Jochen

viele sagen ja, Async,

Jochen

und ich höre auch immer, wenn von

Jochen

Async die Rede ist, dass dann Leute sagen so,

Jochen

das merke ich

Jochen

dann irgendwie nach einer gewissen Zeit, dass Leute eigentlich

Jochen

sowas wie Celery meinen.

Jochen

Aber das hat ja jetzt zum Beispiel mit

Jochen

Async.io oder so

Jochen

damit überhaupt gar nichts zu tun, das ist etwas ganz anderes.

Dominik

Ja, also Celery ist ein eigener Worker-Prozess,

Dominik

wenn ich mich nicht verstehe, der halt einfach Taster

Dominik

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

Dominik

und dann also diese Queue

Jochen

leert. Ja, du hast so eine Anzahl von Workern

Jochen

und du hast halt irgendwie

Jochen

genau

Jochen

ein Ding, das halt eventuell auf so einer

Jochen

Queue drauf sitzt und dann verteilt es halt Jobs an

Jochen

diese Worker und die machen dann halt

Jochen

Dinge und schreiben ihre Resultate wieder

Jochen

irgendwo hin.

Dominik

Ich glaube, warum die Leute denken, dass es Essing ist,

Dominik

weil das halt meistens, wie schon gesagt, nicht im

Dominik

Main-Prozess läuft, obwohl man das auch machen kann. Du kannst ja

Dominik

mit Django mitstarten oder so.

Dominik

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

Dominik

Also weil, Jochen weiß das

Dominik

bestimmt besser, weil es ja irgendwie verschiedene Event-Queues

Dominik

die man nutzen kann, G-Event oder Event

Jochen

oder irgendwas? Nee, nee, gar nicht. Damit hat es

Jochen

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

Jochen

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

Dominik

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

Dominik

mit der Django selber macht, dann muss man sich überlegen, welche

Jochen

da benutzt wird. Ja, aber nichts, also

Jochen

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

Jochen

gar nicht. Also das ist einfach was ganz anderes.

Jochen

Das ist auch nicht

Jochen

eine Geschichte, die im gleichen Prozess normalerweise stattfindet,

Jochen

sondern du hast halt tatsächlich andere Prozesse.

Dominik

Ja, wenn man die hat, genau,

Dominik

wenn man die anderen Prozesse hat, dann schon. Anders

Dominik

geht es nicht.

Dominik

okay. Also, genau.

Jochen

Das geht anders, jedenfalls nicht, dass ich

Jochen

wüsste, dass das irgendwie anders gehen würde, weil

Jochen

wie soll das funktionieren, wenn du halt jetzt

Jochen

irgendwie, keine Ahnung,

Jochen

also, nehmen wir an, du

Jochen

stößt halt an einem Request,

Jochen

also du hast halt irgendwie einen Button, da steht drauf, send email,

Jochen

drückst du auf email

Jochen

und wie soll das jetzt gehen, dass

Jochen

dann eine email,

Jochen

ja, so vielleicht geht es tatsächlich irgendwie,

Jochen

aber das ist alles sehr hässlich, also

Jochen

ne, du willst eigentlich

Jochen

ein Task dafür schrauben, der ganz woanders ist.

Dominik

Du hast recht, du willst das auf jeden Fall.

Dominik

Da würde ich dir auf jeden Fall zustimmen.

Dominik

Definitiv. Ja, aber diese beiden Dinge haben eigentlich

Jochen

nichts miteinander zu tun. Auch wenn man das eine für das andere

Jochen

vielleicht so halb irgendwie verwenden kann, aber

Jochen

nee, das ist eigentlich was ganz anderes.

Jochen

Wie gesagt, es ist halt,

Ronny

es ist halt, also die, wenn du dir,

Ronny

wenn du quasi auf den Main Thread schaust,

Ronny

dann läuft es halt irgendwie nicht da drin.

Ronny

Von daher liegt es halt nahe, das irgendwie

Ronny

asynchron zu nennen. Auch wenn das mit dem

Ronny

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

Ronny

hat, technisch. Ja.

Jochen

Genau, aber es läuft halt nicht irgendwie Async oder in einem anderen Thread, sondern es läuft in einem anderen Prozess. Also hat überhaupt gar nichts mehr mit dem Ding zu tun, mit dem der Interpreter da läuft.

Ronny

Genau und insgesamt das Salary Setup ist halt auch relativ, also da schießt man wirklich schon mit sehr großen Kanonen, weil ja meistens man dann mehrere Worker hat, man hat einen Beat für Scheduling, also der im Endeffekt diesen Contab dann ersetzt, 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. Dazu, das 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. Und das ist halt für viele Projekte, vor allem am Anfang, ist das halt ein enormer Setup-Aufwand. Wer das erste Mal in seinem Leben Celery einrichten muss, der wird daran keinen Spaß haben.

Dominik

Nicht, weil, wenn du halt zum Beispiel auf das redest, wo du sonst nichts anderes benutzt oder sowas, das läuft halt halt die ganze Zeit rum.

Ronny

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

Ronny

Wie gesagt, die Popularität von Django Q oder Q2, wie der 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. Er hat erstmal ein Package gemacht, wie man das halt optimalerweise auch so macht, dass Leute es auch separat testen können. Und das Ganze hat er vorgestellt. Das war, ich weiß nicht, ob es wirklich eine Keynote war, aber es war auf jeden Fall de facto eine Keynote. Ich glaube, das war das, 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 aus der 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, das macht natürlich Sinn, da was Explizites zu haben, nur wie immer, es macht halt vor allem, wenn man jetzt auf ein Budget achtet, macht das natürlich schon Sinn, da erst mal mit einer einfachen Lösung anzufangen, einer einfachen, soliden Lösung.

Ronny

Billig und schnell rächt sich meistens irgendwann. Genau. Was übrigens auch ganz interessant war, ich habe der Talk von Carlton Gibson, ging im Endeffekt um mal wieder HTMX ist super und mit Alpine.js kann man zusammen coole Dinge machen 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 in 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. Und das ist halt nicht so, wir bauen jetzt die in der perfekten Welt, sondern es muss schnell gehen. Es muss irgendwie solide sein, aber es muss halt vor allem effizient sein. Und das hat deshalb nochmal den HTMX Tech verkauft, was ich persönlich auch absolut unterschreiben würde. 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. 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ß.

Ronny

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 Vue kannst du ausgefallene Referendums bauen, kannst du mehr Dinge tun.

Ronny

Die Frage ist, brauchst du das

Ronny

und schaffst du das in dem Geld, das du hast?

Ronny

Und das, finde ich, ist halt

Ronny

so der spannende USP da dran.

Ronny

Klar, wenn man erstmal seine

Ronny

komplette Applikation in HTMX ohne API gebaut hat

Ronny

und man kommt ein und sagt, ich möchte das jetzt alles anders

Ronny

haben, das ist natürlich auch nochmal teuer.

Ronny

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

Ronny

also nicht nur sagen, wie viel Geld haben wir jetzt, sondern wo geht

Ronny

das Ganze hin? Nichtsdestotrotz

Ronny

persönlich finde ich das auch sehr spannend.

Ronny

Der Talk war auch sehr cool und sehr

Ronny

energetisch, wie Carlton Gibson halt immer so ist.

Ronny

Genau,

Ronny

War echt super spannend.

Jochen

Ich glaube,

Jochen

dieses Django-Template-Partials kommt halt

Jochen

auch irgendwie jetzt, ich weiß es rein,

Jochen

ich weiß nicht, ob das schon bei 5.1 war,

Jochen

oder doch eher 5.2, wahrscheinlich eher 5.2,

Jochen

nehme ich mal an.

Jochen

Oder hat er auch über

Jochen

dieses Neapolitan-Ring

Jochen

gesprochen, was er da...

Jochen

Genau. Das ist ja auch so ein...

Dominik

Neue Quad-Views oder so? Ja, genau.

Ronny

Also das dreht sich alles um diese Idee

Ronny

des Locality of

Ronny

Behavior. Carlton Gibson hat jetzt

Ronny

vor nicht allzu langer Zeit einen

Ronny

Newsletter angefangen, Stack Report heißt

Ronny

der, wo er einmal im Monat sehr

Ronny

ausführlich zu einem Thema schreibt. Ich habe den

Ronny

abonniert, das kostet glaube ich irgendwie 5 Euro

Ronny

oder sowas. Bis jetzt hat es sich,

Ronny

also ich glaube es gibt es erst seit 2 oder 3 Monaten,

Ronny

bis jetzt hat es sich gelohnt, also ich mache da gerne

Ronny

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

Ronny

geschrieben und das hat in dem aktuellen von diesem

Ronny

Monat ging es halt um Locality of Behavior

Ronny

und er versucht halt im Endeffekt

Ronny

das Konzept zu verkaufen, also er sagt halt,

Ronny

dass wenn halt alles, was du brauchst, in einer

Ronny

Datei steht, ist es halt einfacher zu verstehen

Ronny

und er argumentiert

Ronny

nicht, dass man alle guten

Ronny

Principles, die man gelernt hat, sofort wegwirft,

Ronny

sondern dass man halt dieses Premature Optimizing

Ronny

aufhört, dass man sagt, okay,

Ronny

ich fange jetzt schon mit, weiß ich nicht,

Ronny

die, die, die an und mache das alles perfekt in

Ronny

vielen Dateien, ein Neueinsteiger in dem Projekt

Ronny

hat keine Chance zu verstehen, was eigentlich

Ronny

passiert, sondern fangt erstmal klein an

Ronny

und refactored, wenn ihr es wirklich braucht.

Ronny

Weil viel von dem, ah ja, ich brauch das

Ronny

nochmal, ich mach das mal irgendwie woanders hin,

Ronny

kommt dann nachher mit, naja, ist doch

Ronny

irgendwie anders geworden, war doch nicht so, wie ich es mir

Ronny

gedacht habe. Und dann hat man halt immer diese doppelte

Ronny

Refactoring-Schleife. Und dieses

Ronny

Django Template Views ist halt die Idee,

Ronny

Django Template Partials,

Ronny

sorry, Partials,

Ronny

dass man halt wirklich sagen kann, okay,

Ronny

diesen Block kann ich jetzt mit HTMLX

Ronny

neu rendern lassen, der ist aber trotzdem noch

Ronny

in der großen Datei und ich muss es nicht zerpflücken,

Ronny

wie man es halt vorher, also Stand jetzt mit

Ronny

Vanilla Django macht

Ronny

und diese Neapolitan

Ronny

Crudviews ist auch die Idee, dass du halt wirklich mehr

Ronny

Sachen an einer Stelle zusammen

Jochen

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

Jochen

ganzen, also GetPost und sonst wie Dinge,

Jochen

die da passieren, halt alle drin sind.

Jochen

Ich persönlich

Jochen

finde, dass Locality of Behaviour ist, glaube ich,

Ronny

eine gute Sache. Ich meine, das geht auch so ein bisschen nach

Ronny

Yagni, also You Ain't Gonna Need It,

Ronny

dass man halt nicht, dass man erstmal überlegt,

Ronny

so muss ich jetzt wirklich anfangen,

Ronny

alles so hoch zu skalieren, wie es unbedingt

Ronny

notwendig ist. Nichtsdestotrotz,

Ronny

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

Ronny

wird eine gewisse Größe erreichen,

Ronny

die Dinge zu tun, die ich jetzt schon

Ronny

weiß, die sinnvoll sind,

Ronny

glaube ich, dass man sich da dann andererseits auch

Ronny

wieder ein paar Refactoring-Zyklen spart.

Ronny

Aber ich glaube, generell ist man schon sehr

Ronny

prone, als Entwickler over zu

Ronny

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

Ronny

so muss ich das jetzt wirklich tun.

Dominik

So ein bisschen so ein Trade-off mit KISS oder so was

Dominik

und schon simpel und dass du irgendwie tatsächlich

Dominik

versuchst, vielleicht, also was ich

Dominik

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

Dominik

Datei drinstehen, selbst wenn das irgendwie am Anfang

Dominik

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

Dominik

Und wenn eine gute Modulstruktur

Dominik

darunter liegt einfach, also einfach nur vom

Dominik

Namespacing her, hilft das fast

Dominik

am meisten, finde ich.

Dominik

Was dann auch gar nicht schwer zu verstehen macht,

Dominik

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

Dominik

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

Dominik

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

Dominik

Das ist so, ja.

Dominik

Oh, ich würde ganz kurz

Jochen

nur einmal kurz einlaufen

Jochen

nochmal zu dieser Task-Geschichte,

Jochen

was ich halt oft sehe, was ich finde,

Jochen

was man vermeiden sollte,

Jochen

wenn Leute sowas machen

Jochen

und das halt irgendwie, weil oft

Jochen

macht man das dann ja, man braucht

Jochen

es schon meistens, aber dann doch nicht

Jochen

irgendwie so dauernd, dass man da,

Jochen

dass alle Leute da irgendwie

Jochen

viel Erfahrung mit hätten.

Jochen

Und was ich jetzt schon häufiger gesehen

Jochen

habe und was in der Praxis dann so

Jochen

zusätzlich zu diesem ganzen

Jochen

Infrastrukturding auch nochmal ordentlich Schmerzen macht,

Jochen

ist halt, wenn Leute anfangen,

Jochen

irgendwie so ganz Kaskaden von Tasks

Jochen

irgendwie zu schreiben,

Jochen

so gerade bei Celery ist das dann halt auch sehr

Jochen

einfach und dann hat man da Abhängigkeiten

Jochen

inzwischen und dann, und Leuten

Jochen

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

Jochen

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

Jochen

irgendwie wieder irgendwas wieder realisiert, dann muss der

Jochen

Kanzlerrahmen wieder so heraussehlich realisiert werden

Jochen

und dann geht es irgendwo zwischendurch schief und dann hast du halt

Jochen

irgendwie so ein

Jochen

explodiertes Gedärm irgendwie, was da rumliegt

Jochen

und das ist halt so schön.

Jochen

Und also was ich nur empfehlen kann,

Jochen

ist, man macht halt eine Funktion oder

Jochen

so eine Methode an irgendeinem Modell oder so

Jochen

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

Jochen

und dann testet man das ganz normal, synchron,

Jochen

irgendwie wie man

Jochen

Sachen halt so testet und dann

Jochen

sagt man in einem

Jochen

Celery-Task eigentlich nur, okay, man ruft halt dieses Ding

Jochen

auf, fertig. Wie man

Jochen

auch im Vue schreiben würde, möglichst schlank

Jochen

und eigentlich nur die Dinge

Jochen

komponieren, denn wirklich da implementieren.

Jochen

Ja, und keine Logik

Jochen

in die Tasks packen, sondern

Jochen

von den Tasks, also in dem eigentlichen

Jochen

Celery-Task immer nur irgendwie Logik,

Jochen

die irgendwo anders ist, aufrufen.

Jochen

Aber wenn du halt Logik hast, oder am besten Logik verteilt

Jochen

über mehrere Tasks, dann passieren

Jochen

scharröckelige Dinge unter Umständen.

Jochen

Und ja. Absolut.

Jochen

Genau. Das war nur so ein kurzer

Jochen

Einwurf. Ja.

Jochen

Es gab da noch so ein tolles

Dominik

Thread zu im Chaos Social,

Dominik

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

Dominik

der sehr, sehr interessant war.

Dominik

Zu dem, ja. Einige coole Leute.

Dominik

Unter anderem Carlton Gibson selber und

Jochen

der Hüneck und so. Ja, Hüneck. Ja, genau.

Jochen

Und diverse Leute. Da gab es ein Thread

Jochen

zu, was braucht man jetzt bei Background-Tasks

Jochen

eigentlich alles. Ja. Und was sind

Jochen

da die Anforderungen genau?

Dominik

Neu geschrieben oder anders implementiert.

Dominik

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

Jochen

Ja, ich kann das mal,

Jochen

genau das Ding verlinke ich auch mal.

Jochen

Ja, Fediverse ist halt zur Zeit, also wenn

Jochen

er noch nicht ist, da sind halt

Dominik

alle. Es steht tatsächlich auf meiner Liste

Dominik

und ich lese halt immer so ein bisschen mit, aber naja.

Jochen

Ja, also da ist,

Jochen

also das fühlt sich an wie Twitter früher,

Jochen

so ein bisschen Blümchenwiese mäßig.

Jochen

Weil alle Leute sind,

Jochen

oder viele der Leute, die man so kennt,

Jochen

und da und man kann

Jochen

sich mit denen einfach so unterhalten und so.

Jochen

Ja, cool. Genau.

Jochen

Ja,

Jochen

das ist ein interessantes Thema.

Ronny

Genau.

Ronny

Was ich auch interessant fand,

Ronny

ich habe mit auf der Konferenz

Ronny

noch ein Wort mit dem

Ronny

Creator da gewechselt

Ronny

und er meinte auch, dass

Ronny

früher wurde, also wenn ich es richtig

Ronny

verstanden habe, ich will mir jetzt keine Worte in den Mund legen, aber wenn ich es

Ronny

richtig verstanden habe, meinte er, dass früher bei Django

Ronny

eher so die Idee war, alles was nach

Ronny

Chor kommt, muss mehr oder weniger

Ronny

so die eierlegende Wollmilchsau

Ronny

110%-Lösung sein, weil das ist ja

Ronny

Django, das muss ja so. Und jetzt

Ronny

war halt die Idee wirklich zu sagen, naja, aber lass uns

Ronny

doch erst mal mit was anfangen, was halt alleine

Ronny

steht, also dieser MVP-Gedanke.

Ronny

Natürlich kann man noch 400 Sachen nach

Ronny

und dazu bauen, aber braucht man

Ronny

die wirklich? Will das

Ronny

die Crowd so?

Ronny

Und dass die jetzt wirklich anfangen und versuchen,

Ronny

ja,

Ronny

also wirklich mit einem kleinen

Ronny

Inkrement zu shippen, dass halt

Ronny

stehen kann, das laufen kann

Ronny

und alles, was halt danach kommt, einfach

Ronny

zu gucken, wie reagieren die Leute,

Ronny

was für Sachen werden wirklich angefragt, das finde ich halt

Ronny

sehr interessant, weil ich glaube, das ist einfach so ein generelles

Ronny

Ding, wenn man irgendwie in der Softwareentwicklung ist,

Ronny

dieser MVP-Gedanke ist so, so,

Ronny

so zentral und da kann man

Ronny

so viel falsch machen und so viel Geld und Projekte

Ronny

und Chaos verlieren,

Ronny

wenn man halt nicht dem MVP

Ronny

denkt, weil

Ronny

schöner geht halt immer und

Ronny

ja,

Ronny

genau.

Jochen

Genau, bei Ruby on Rails

Jochen

ist halt auch diese

Jochen

Background-House-Geschichte schon seit Ewigkeiten drin

Jochen

und das war halt mal eine

Jochen

der Geschichten, die in Django halt, ja, wo man

Jochen

da halt irgendwie dann immer sagen musste,

Jochen

ja, nimm mal Terry, ja, es tut weh,

Jochen

nimm's halt trotzdem, das ist das, was es

Jochen

gibt.

Jochen

Ja, und

Jochen

wenn sich das jetzt ändert, dann ist auf jeden Fall

Jochen

ein Pain-Point irgendwie auch weniger.

Jochen

Die haben gesagt, dass wenn es

Ronny

gut läuft, landet das in 5.2, du

Ronny

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

Ronny

Äh, April hatte, ja.

Ronny

Genau.

Ronny

Dann wird dann neben meinem kleinen

Ronny

Testhelper das zweite große Ding,

Ronny

während du dann die Background hast.

Ronny

Oh, sehr gut, sehr gut.

Ronny

Ähm,

Ronny

genau.

Jochen

Ja, also, HTMX war diesmal auf der

Jochen

JungleCon also auch quasi wieder so ein,

Jochen

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

Ronny

Genau. Ja, ich meine,

Ronny

HTMX ist halt, ist halt

Ronny

im Endeffekt die Silver Bullet, mit der

Ronny

sehr, sehr viele Leute dann HTMX

Ronny

vermeiden können,

Ronny

was natürlich so ein bisschen

Ronny

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

Ronny

JavaScript braucht und das auch sehr viel mit JavaScript geschrieben ist.

Ronny

Nichtsdestotrotz

Ronny

vermeidet das halt, dass man in Projekten

Ronny

JavaScript verwenden muss,

Ronny

was natürlich für viele tendenziell eher

Ronny

Backendler, wie ja Django aktuell

Ronny

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

Ronny

Das ist

Ronny

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

Ronny

Ich habe es auch irgendwie nie geschafft,

Ronny

mich ernsthaft mit einem

Ronny

JavaScript-Framework zu beschäftigen und

Ronny

ich bin

Ronny

auch in meinem Beruf immer wieder damit konfrontiert,

Ronny

bei den Entscheidungen, wenn man

Ronny

ein neues Projekt startet, was nehmen wir jetzt?

Ronny

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

Ronny

auch aktiv für HTMX entschieden.

Ronny

Auch mit einem Team, die tendenziell

Ronny

eher JavaScript-Front-Endy

Ronny

sind.

Ronny

Ja, das ist natürlich interessant.

Ronny

Und weil wir einfach auch gesagt haben,

Ronny

das Projekt ist halt

Ronny

eine ganz klassische Backend-Applikation. Man hat viele

Ronny

Listen, man hat viele Crud-Views. Es gibt

Ronny

zwei, drei, vier Sachen, die so ein bisschen

Ronny

ausgefallen sind, aber auch nicht so wirklich.

Ronny

Also da hat man mal so ein Drag-and-Drop-Element

Ronny

oder sowas. Und wir sind

Ronny

einfach der Meinung, dass

Ronny

das dafür halt HTMX wirklich

Ronny

gut funktioniert, weil das ist das, was Django wirklich

Ronny

gut kann.

Ronny

Und das Projekt

Ronny

ist es auch nicht etwas, wo man sagt, das ist jetzt

Ronny

irgendwie, wenn

Ronny

die Firma durch die Decke geht, dann so und

Ronny

so, sondern das wird immer eine Backend-Applikation

Ronny

bleiben. Logischerweise wird die wachsen, wenn

Ronny

die Firma wächst, etc.

Ronny

Aber das wirkte einfach nach dem

Ronny

nach dem perfekten Hammer für diesen Nagel.

Ronny

Was nicht heißt, dass wenn man

Ronny

jetzt sagt, ich möchte jetzt keine Ahnung, das

Ronny

nächste Instagram oder sowas bauen,

Ronny

dass das vielleicht, wenn man schon die Kohle dafür hat am Anfang,

Ronny

dass das vielleicht nicht unbedingt

Ronny

die beste Wahl ist. Geht wahrscheinlich auch

Ronny

alles trotzdem, aber

Ronny

ich glaube umso mehr, sag ich mal,

Ronny

wirkliche Endnutzer, also jetzt nicht Mitarbeiter

Ronny

der Firma oder Administratoren, sondern wirkliche Endnutzer

Ronny

man auf der Plattform hat, wahrscheinlich schwingt da

Ronny

dann immer so die Notwendigkeit für

Ronny

ein richtiges, volles Frontend-Framework,

Ronny

wo man das ja auch in Gänzefüßen sehen muss, React und

Ronny

Vue sind ja auch keine Frontend-Libraries,

Ronny

schwingt dann doch eher so das

Ronny

Pendel in diese Richtung.

Ronny

Und ich glaube, diese Frage kann man halt

Ronny

wie jede einzelne Tech-Frage damit

Ronny

beantworten. Es kommt drauf an.

Ronny

Nichtsdestotrotz wird das natürlich

Ronny

hart gefeiert in der Community, weil, wie das

Ronny

auch bei mir so ist, das ist es halt, ich meine,

Ronny

ich bin seit zwölf Jahren dabei, das erste

Ronny

Mal, dass man, dass ich

Ronny

jetzt wirklich ein Werkzeug

Ronny

bekomme, das vernünftig funktioniert

Ronny

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

Ronny

wie JQuery und sowas, definiere ich

Ronny

definitiv nicht als vernünftig funktionieren.

Jochen

Ja, das hat nicht, also

Jochen

man kommt damit erstaunlich, aber das hat nie wirklich

Jochen

gut funktioniert, das ist richtig, ja.

Jochen

Wobei ich

Jochen

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

Jochen

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

Jochen

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

Jochen

richtige Richtung, sind halt so Web Components,

Jochen

das ist eigentlich auch ganz nett,

Jochen

da muss man dann halt JavaScript schreiben, das ist halt

Jochen

so ein bisschen doof, aber

Jochen

man kann halt irgendwie, das hält sich

Jochen

dann halt in Grenzen. Also und

Jochen

man weiß halt, also das habe ich

Jochen

letztens wieder erlebt und das tut jedes Mal weh,

Jochen

irgendwie größere

Jochen

Projekte, die man lange nicht angefasst hat, irgendwie

Jochen

das ist immer schmerzhaft.

Jochen

Also wenn man jetzt irgendwie

Jochen

ja da so, zum Beispiel das war

Jochen

jetzt mein View-Projekt, es ist halt

Jochen

irgendwas geht nicht mehr

Jochen

und es dauert immer, bis man rausgefunden hat,

Jochen

was denn da jetzt eigentlich das Problem ist und bis das

Jochen

alles wieder rund läuft und dann

Jochen

vergehen vielleicht auch nochmal ein paar Tage

Jochen

oder Wochen, bis man wirklich alles gefunden hat, was

Jochen

vielleicht nicht mehr ging, weil manchmal war es das nicht so offensichtlich

Jochen

und das ist einfach total

Jochen

nervtötend, also

Jochen

genau, das Problem hat man mit Web

Jochen

Components halt auch nicht, weil das ist halt Standard

Jochen

und wenn das jetzt funktioniert,

Jochen

funktioniert das in

Jochen

zehn Jahren halt auch noch ganz genauso und

Jochen

ja.

Ronny

Tatsächlich haben wir zu dem Projekt mal

Ronny

Django Components ausprobiert, das ist ja auch eine von diesen

Ronny

vielen Ansätzen, da gibt es auch Django Slippers und wie die

Ronny

alle heißen, um

Dominik

Was war das letzte? Django Slit?

Dominik

Slippers.

Dominik

Um im Endeffekt dieses

Dominik

Komponentendenken in die

Ronny

Django-Welt zu bringen, weil de facto

Ronny

die Django-Template-Welt ist ja immer noch, wie sie

Ronny

vor 15 Jahren mal irgendwann angefangen hat

Ronny

und da zu überlegen, dass man

Ronny

Komponenten bauen möchte, vor allem in so einer Kombination mit

Ronny

Tailwind, die ja dann eher diese

Ronny

Utility-Base-Klasse, also ein normales

Ronny

Tailwind-Diff hat noch

Ronny

10, 15 Klassen.

Ronny

Das eskaliert ziemlich hart.

Ronny

Ich finde es gut, aber

Ronny

wie gesagt, es ist nicht schön

Ronny

anzugucken und von daher die Sachen eher zu kapseln

Ronny

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

Ronny

zum Beispiel früher, ich habe hier

Ronny

eine Button-Class und dann sieht jeder Button halt so aus, wenn ich

Ronny

was überschreiben muss, bin ich halt arm dran,

Ronny

dann wird es schwierig,

Ronny

sondern dass man wirklich die Sachen individuell

Ronny

mit diesen Klassen halt definieren kann, ohne halt

Ronny

die ganze CSS-Magie dahinter 100% verstehen

Ronny

zu müssen. Und da

Ronny

diese Komponenten in der Django-Welt

Ronny

zu machen, klingt super interessant.

Ronny

Das konnte man vorher auch schon mit Includes machen.

Dominik

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

Dominik

von Includes irgendwie, die das so ein bisschen

Dominik

zwischenspeichern können irgendwie auch.

Dominik

Ja, auf jeden Fall, da gibt es Packages,

Ronny

die explizit dafür da sind, um diese

Ronny

Frontend-Learnings auch in die Django-Welt

Ronny

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

Ronny

Das scheint auch okay gut zu

Ronny

funktionieren. Habe auch von einem Freund gehört,

Ronny

der das ausprobiert hat, der da meinte, dass er damit

Ronny

gut und der eigentlich auch sehr viel

Ronny

und gerne im Frontend gemacht hat, jetzt aber aus

Ronny

besagten Effizienzgründen halt gewechselt ist.

Ronny

Und

Ronny

genau, das

Ronny

ist auf jeden Fall eine interessante Sache. Also wer sich

Ronny

damit beschäftigt und halt ein Frontend

Ronny

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

Ronny

nicht schämen muss, dann glaube ich, ist

Ronny

diese HTMX, AlpineJS und dann irgendwas

Ronny

an diesen Komponentenlibraries, die sich gerade, die

Ronny

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

Ronny

diesen de facto Standard.

Ronny

Aber wenn man sich da so ein bisschen rein

Ronny

liest, da findet man relativ, also

Ronny

nicht viel, viel, aber da gibt es auf jeden

Ronny

Fall schon Inhalte und

Ronny

da kann man sich am Ende vielleicht auch irgendwas aussuchen.

Ronny

Das ist alles nicht so kompliziert,

Ronny

was einem gefällt.

Dominik

Habt ihr mal schon mal herumgespielt mit dem

Dominik

HTMX-Ding

Dominik

für Mobile?

Dominik

Das ist ja in dem Hypermedia-Systems-Buch

Dominik

das letzte Kapitel,

Dominik

wo es dann darum geht, dass man

Dominik

das Ganze auch in Mobile einsetzen kann

Dominik

oder soll oder so.

Dominik

Als so

Dominik

Ja, so eine Art von

Dominik

XML-Endpunkt,

Dominik

die dann irgendwie gerendert werden kann

Dominik

von, ich glaube, React war es tatsächlich,

Dominik

React Native. Ach so, ja.

Dominik

Und dann Apps hat auf dem

Dominik

Telefon, die dann diese einzelnen Komponenten

Dominik

halt mitziehen können, einfach

Dominik

von deinem normalen Endpunkt

Jochen

klingen will. Ja, klingen will. Ich habe es noch nicht,

Jochen

nee, habe ich nicht angeguckt.

Jochen

Also ich habe auch für

Jochen

so

Jochen

Mobile, finde ich, eigentlich sind die Webviews

Jochen

oder wie heißen die noch?

Jochen

Progressive Web Apps, genau.

Jochen

Ist eigentlich eine sehr, sehr schicke

Jochen

Geschichte. Geht auf iOS auch deutlich

Jochen

mehr inzwischen als früher. Wurden die nicht irgendwie

Jochen

gebannt? Ne, also

Jochen

das, ah ja, Apple hat da gedroht,

Jochen

aber das ist dann nicht passiert.

Jochen

Glücklicherweise. Ja, hat doch

Jochen

ein bisschen zu viel Gegenwind gegeben.

Jochen

Ja, und

Jochen

ich denke, dass man vieles, was

Jochen

halt man irgendwie

Jochen

vielleicht mit nativen Apps früher gemacht hat,

Jochen

auch mit, ja genau,

Jochen

Progressive Web Apps hinbekommt

Jochen

und

Jochen

ansonsten sind halt die Mobile

Jochen

Geschichten halt immer so eine komplizierte Geschichte, wenn man

Jochen

da wirklich eigene, es ist halt,

Jochen

Ich meine, für manche Sachen, wenn man

Jochen

eh dafür ein Team hat und genug

Jochen

Geld, dann kann man schon machen.

Jochen

Ich würde das tatsächlich irgendwie mal ausprobieren.

Dominik

Ich finde diesen Ansatz ganz cool.

Dominik

Media für

Dominik

für Mobile

Dominik

auszuprobieren, das klingt irgendwie super.

Dominik

Das ist derselbe Standard da und derselbe Prinzip.

Dominik

Ist jetzt eigentlich, glaube ich, eine ganz

Ronny

gute Überleitung zu dem nächsten Mini-Thema,

Ronny

nämlich Lightning Talks.

Ronny

Wer es nicht kennt,

Ronny

die Lightning Talks, das ist bei den

Ronny

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

Ronny

aber ich glaube, es gibt so Online-Konferenzen,

Ronny

die jetzt am Ende des Tages

Ronny

fünf bis zehn Leute einen

Ronny

hart getimten fünf Minuten

Ronny

Maximalfortrag halten können bei irgendeinem

Ronny

Thema. Das heißt, die Vorbereitung ist

Ronny

sehr gering bis nicht vorhanden

Ronny

bei den Leuten. Aber das ist ja cool.

Dominik

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

Dominik

Fuck it. Zwei Minuten.

Ronny

Und die Idee dahinter

Ronny

ist einfach, genau das, was du gerade

Ronny

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

Ronny

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

Ronny

wollte ich euch mal mitgeben. Oder, was ich

Ronny

vorhin gemacht habe, ey, es gibt Jungle Components, wer

Ronny

sich dafür interessiert, schau ich das mal an.

Ronny

Und da ist normalerweise die

Ronny

Informationsdichte sehr hoch

Ronny

und auch die Unterhaltungsdichte sehr hoch, weil natürlich

Ronny

Leute auch dann einfach mal einen Spaßvortrag machen

Ronny

oder irgendwas Absurdes aus ihrem

Ronny

Alltag erzählen.

Ronny

Ja, und dann kannst du deine Ukulele mitbringen.

Ronny

Ja, genau. Und ich finde,

Ronny

dass wir haben jetzt das auch bei uns

Ronny

intern in unserem, also bei

Ronny

meiner Firma

Ronny

bei den internen

Ronny

Barcamps so gemacht, dass wir auch einen expliziten

Ronny

Lightning-Talk-Blog haben, weil viel

Ronny

von so Content-Teilen

Ronny

und Wissensmanagement scheitert daran, dass die Leute

Ronny

sich wirklich aufraffen müssen, Sachen

Ronny

vorzubereiten, Sachen zu recherchieren. Es gibt gewisse

Ronny

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

Ronny

Erwartungshaltungen, die existieren

Ronny

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

Ronny

Lightning-Talk gibt es das halt nicht. Du stellst dich

Ronny

da hin oder in dem Fall jetzt in der

Ronny

Post-Corona-Neuen-Moderne,

Ronny

du sitzt dann vor deiner Webcam

Ronny

und teilst dann halt kurz deinen Browser oder deine

Ronny

zwei Slides und sagst, Leute, das habe ich

Ronny

gesehen, das habe ich gelernt voll gut.

Ronny

Oder auch Vollkacke. Und das ist ein echt cooles Format, den man auch, wie gesagt, gut, glaube ich, in Firmen oder auf Meetups auch sehr gut. Wir haben mal einmal vor ein paar Monaten, ich glaube im Februar diesen Jahres, haben wir eine komplette Lightning Talk Session gemacht beim Django Meetup Köln hier. 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 finde auch, also gerade in jedem Format,

Dominik

also das irgendwie für Konferenzen oder Barcamp

Dominik

oder was man auch immer hat, wo man zusammen arbeitet,

Dominik

ist dieses Lightning Camp, äh,

Dominik

Lightning Talk Format

Dominik

echt cool geeignet, um so ein bisschen

Dominik

lockere Atmosphäre reinzubringen.

Dominik

Entweder am Ende eines Tages oder am Anfang

Dominik

von diesem, wir teilen uns irgendwelche Sessions auf,

Dominik

so kurze Slots, selbst wenn es nur eine Viertelstunde ist,

Dominik

zwei Minuten oder eine halbe oder sowas,

Dominik

um so ein bisschen mit den Leuten so

Dominik

reinzukommen, das ist echt schön. Ich glaube auch

Dominik

außerhalb vom Coding, ehrlicherweise.

Dominik

Man muss halt, glaube ich, immer noch so auffassen, dass man halt wirklich hart

Dominik

guckt, dass die nicht überschritten werden,

Dominik

weil einige Leute dann ihr Co-Referat halten,

Dominik

dass dann doch ein bisschen länger wird.

Dominik

Ja, das nervt die meisten

Dominik

immer, glaube ich, aber ja.

Dominik

Und eine andere super Sache ist halt auch einfach mal

Ronny

ein Gefühl zu bekommen, ob man selber mal einen Vortrag halten möchte.

Ronny

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

Ronny

und ich habe

Ronny

auf der letzten Konferenz in Edinburgh

Ronny

habe ich auch einfach mal

Ronny

einen Lightning Talk gehalten, um mal

Ronny

zu sehen, um mal so den Fuß ins Wasser zu

Ronny

halten, wie ist das überhaupt?

Ronny

Über was?

Ronny

Um den Fuß ins Wasser zu halten.

Dominik

Über was soll der? Ach so.

Dominik

Über Füße ins Wasser halt.

Dominik

Nur über Füße und Wasser.

Dominik

Angeln mit den Zehen.

Dominik

Das war die Frage.

Dominik

Ich habe tatsächlich

Ronny

keine Ahnung. Ich habe dieses Jahr einen

Ronny

über meinen Django Migration Zero

Ronny

Package gehalten.

Ronny

Ich beantworte meine Frage aber mit diesem Jahr,

Ronny

weil ich es beim letzten Mal vergessen habe.

Ronny

Ist ganz cool. Es ist ein Pattern, das hat sich

Ronny

2018 jemand ausgedacht. Wer schon mal mit

Ronny

Django Migrations gearbeitet hat und

Ronny

länger auf einem Projektbeweis, da sammeln sich ziemlich

Ronny

viele Migrations nach kürzester Zeit an.

Ronny

Diese Migrations, wenn man die

Ronny

volle Kontrolle über seine Datenbank hat,

Ronny

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

Ronny

installiert sich irgendjemand und dann macht irgendwer was damit.

Ronny

Das ist außerhalb der

Ronny

Macht des Creators. Aber in so einer klassischen

Ronny

Applikation, die man baut, hat man eigentlich die volle

Ronny

Kontrolle über die Datenbanken. Dann ist irgendwann

Ronny

es auf dem letzten

Ronny

Product-Release-System angekommen und die Migrationen haben de facto

Ronny

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

Ronny

der aber auch sehr relativ zu sehen ist,

Ronny

weil abgesehen von natürlich Custom-Datenmigration

Ronny

die ganzen Sachen auch im Git irgendwie, die ganzen

Ronny

Modeländerungen hinterlegt sind.

Ronny

Viele Migrationen führen dazu,

Ronny

dass die Tests langsamer laufen, dass die

Ronny

Testdatenbank aufgebaut wird, weil

Ronny

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

Ronny

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

Ronny

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

Ronny

18. Mal irgendwas geändert und

Ronny

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

Ronny

Squash Migrations, um das aufzuräumen.

Ronny

Das Problem ist, das kann sehr, sehr schlecht mit

Ronny

Circular Imports umgehen.

Ronny

Also sprich, ich habe einen User

Ronny

und der hat ein Projekt und das Projekt

Ronny

hat, keine Ahnung,

Ronny

Kommentare und die Kommentare haben wieder den User.

Ronny

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

Ronny

diese Migration

Ronny

sehr stark auseinanderziehen. Also wie man das

Ronny

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

Ronny

Python-Thema.

Ronny

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

Dominik

Lazy importieren und die Sachen da als Strings hinschreiben.

Ronny

Genau. Und wie das halt dann immer so ist

Ronny

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

Ronny

sie nicht. Umso einfacher Sachen sind, umso schneller

Ronny

und umso besser werden sie getan.

Ronny

Und es gibt einen Pattern, das nennt sich Migration Zero

Ronny

Und das hat sich jemand bei Medium 2018 ausgedacht, da sitzt er 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, also ich hatte 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. Und da habe ich halt dann dieses Package gebaut, das dieses Pattern implementiert und das ist im Endeffekt ein zweistufiges Ding. Einmal habe ich einen Helfer gebaut, der halt einem Verein quasi durch alle Apps geht, 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 in der Datenbank in so einem Log, in so einer Historientabelle hinterlegt, da quasi noch die Änderungen anpasst. Das heißt, du kannst einfach in die Pipeline hängen, du hast den Django-Admin in Switch, du kannst sagen, ja, jetzt habe ich Migration gelöscht, jetzt bitte beim nächsten Deployment, 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 es 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

Ich weiß, da hat es schon mal drüber gefallen, dass sie irgendwie dann Migrations erinnert haben, dann bumm, oh, Daten-Migrate nicht.

Ronny

Genau und ja, aus 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. Es ist super, wenn man einen coolen Namen für sein Package hat. Man sollte aber vorher gucken, ob der vielleicht schon belegt ist, weil es gibt nämlich ein Django Zero Migration und Migration Zero ohne Django, glaube ich, bin ich ganz sicher.

Ronny

Du hast es dann Zero Migration 2 genannt.

Ronny

Django Migration Zero gab es tatsächlich

Ronny

noch nicht. Aber es ist

Ronny

natürlich trotzdem allein schon wegen SEO extrem

Ronny

blöd, wenn halt dann Leute ständig aus falschem

Ronny

Package kommen, weil das andere halt schon seit 2014

Ronny

da rumsitzt mit einem Commit.

Ronny

Genau, von daher, wenn jemand ein Package

Ronny

erstellt, dann checkt vorher die Namen ab, das hilft.

Ronny

Genau.

Dominik

Jochen sollte das Package unbedingt mal benutzen.

Dominik

Ich habe ja gestern nochmal über die Schultern geguckt, als du DjangoCast

Dominik

migriert hast und irgendwie wie viele Migrations

Dominik

da allein von weg herangekommen sind. Das waren ja hunderte.

Jochen

Ich habe mir das auch überlegt, dass ich das überall

Jochen

wegschmeißen möchte. Aber dann denke ich mir immer,

Jochen

das sollte ich vielleicht dann machen, wenn sich an der Datenbank

Jochen

nicht mehr so viel ändert.

Jochen

Aber ich werde das auf jeden Fall

Ronny

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

Jochen

ausprobieren würdest. Ja, kann ich mal

Jochen

probieren, genau. Aber das Problem

Jochen

ist auch bei mir, es ist halt

Jochen

blöderweise eine Library und ich werde

Ronny

Leuten... Bei der Library geht es eh nicht.

Ronny

Da musst du ja mit

Ronny

Squashen arbeiten.

Ronny

Du weißt ja nicht, in welchem Stand

Ronny

quasi, dass die letzte Person

Ronny

dein Package

Ronny

oder die Person dein Package nutzen?

Ronny

Ja, vielleicht werde ich

Jochen

bei irgendeiner Major-Version...

Jochen

Release-Update und wer weiß,

Dominik

wie viele Leute aus der Jochen sein Jochen-Paket

Dominik

haben. Ja, kann sein, dass es nicht so viele sind.

Dominik

Das ist schon richtig, genau.

Dominik

Schieße ich nur in meinen Fuß

Jochen

und nicht in den Fuß von noch 100 anderen Leuten.

Jochen

Das kann ich vertreten.

Dominik

Das Risiko von Open-Source-Hafen, ja genau.

Dominik

Und man kann ja dann downgraden.

Dominik

Datenbank brennt, sorry, Downgrader einfach.

Dominik

Ja, ja, ja,

Jochen

aber ja, das ist ein Problem.

Jochen

Ich meine, das ist auch so ein Problem wie bei so Projekten

Jochen

wie zum Beispiel Wagtail.

Jochen

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

Jochen

und das ist halt auch, das verwendet man ja auch

Jochen

als Library und da hat sich so viel Zeug

Jochen

angesammelt, dass halt das mit dem Testen,

Jochen

also wenn man jetzt quasi

Jochen

und mein Paket hängt zum Beispiel auch von Wagtail ab,

Jochen

deshalb muss ich für alle Tests

Jochen

und so immer so Wege drumherum finden,

Jochen

dass ich auf jeden Fall beim Testen nicht die

Jochen

Migration laufen lassen

Jochen

muss, weil sonst werden die Tests

Jochen

irre langsam. Ah, dann machst du ReuseDB.

Dominik

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

Dominik

dass alle Funktionen so wieder aufgeräumt werden.

Jochen

Minus Minus ReuseDB, Minus Minus No Migrations, genau.

Jochen

Aber dann gibt es halt dann so Fälle, wo

Jochen

ah, nee, dann muss man es doch haben. Wie man zum Beispiel

Jochen

wenn man dann halt vertroxt die ganzen

Jochen

unterschiedlichen Versionen durchgeht,

Jochen

dann muss man natürlich wenden, wenn man jetzt, dann kann man

Jochen

nicht die gleiche Datenbank verwenden. Dann muss man halt schon

Jochen

die Datenbank wieder wegschmeißen, wieder neu.

Jochen

Es geht, aber es ist halt

Jochen

es ist hacklich, ja.

Dominik

Ja, ja. Ja, einzelne Pipeline.

Ronny

Ja, du hattest ja gerade mich schon wegen Edinburgh gefragt, 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 Community Talks und Tech Talks mit vielleicht Meta Talks, die so irgendwie dazwischen sitzen, aufteilen und in Edinburgh war es relativ stark auf der Community Seite.

Ronny

Also Leute, die über Community-Erfahrungen berichtet haben, wo Parallelen gezogen werden zwischen anderen Arten von Communities. Meine Erfahrung, wie ich das erste Mal zu Django Contributed habe, solche Geschichten. Das gab in Edinburgh von mehreren Leuten die Kritik, dass das halt relativ viel war und das ist mir positiv aufgefallen, dass ich fand, dass die Mischung aus den Community-Talks und aus den Tech-Talks und aus den Meta-Talks richtig gut war.

Ronny

Und ich sehr, sehr happy war mit der Thema-Auswahl.

Ronny

Ich meine, wie gesagt, es sind halt immer eine große Menge auch von Leuten,

Ronny

die das mit Absicht zum ersten Mal machen,

Ronny

die Englisch nicht als Muttersprache haben und sowas.

Ronny

Das ist natürlich immer Sachen...

Dominik

Ich habe immer gehört, dass Spanien immer so ein bisschen anstrengender ist,

Dominik

was so das angeht.

Dominik

Also für Englisch, weil halt da Englisch nicht so verbreitet ist

Dominik

und viele Leute halt dann nicht so...

Ronny

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

Ronny

Ich glaube, eine Frau aus Katalonien,

Ronny

was so ein bisschen Definitionssache

Ronny

aus Spanien ist oder nicht.

Ronny

Und ansonsten,

Ronny

ja, vielleicht ein, zwei, aber

Ronny

wie gesagt, generell fand ich das

Ronny

diesmal gut. Es war

Ronny

sehr angenehm, waren viele interessante Sachen dabei.

Ronny

Da gab es zum Beispiel einen

Ronny

von Octopus Energy, das ist einer von den großen

Ronny

Django-Playern, die auch eigentlich immer so mit Platinum-Sponsor

Ronny

bei den Konferenzen sind, über

Ronny

Layered Architecture bei Django. Ich bin schon sehr gespannt, wenn das

Ronny

Video rauskommt. Das war sehr, also

Ronny

bei YouTube werden die ja alle veröffentlicht.

Ronny

Das war sehr, sehr viel

Ronny

Informationen da drin und ich habe

Ronny

mir nur ein ganz, ganz paar wenige Fotos gemacht

Ronny

und ich bin sehr gespannt, mir das Ganze noch mal in Ruhe

Ronny

zu Hause anzuhören.

Ronny

Genau, wie geht die Background Workers,

Ronny

die Sache von Carlton Gibson, es gab coole Meta-Talks.

Ronny

Also

Ronny

das fand ich von der Auswahl

Ronny

her, bin ich da mit vielen schlauen Gedanken

Ronny

nach Hause gegangen.

Ronny

Und was ich auch

Ronny

sehr interessant fand bezüglich des Community-Talks,

Ronny

direkt die allererste Keynote

Ronny

ging um Django Girls. Das ist

Ronny

eine Vereinigung,

Ronny

ein Non-Profit, glaube ich, inzwischen auch,

Ronny

die dafür da ist,

Ronny

explizit Frauen ans Programmieren

Ronny

ranzuführen, weil es ja immer noch so ist,

Ronny

dass halt die IT-Branche immer noch hart in Männerhand

Ronny

ist und das soll einfach

Ronny

vor allem die Mädels

Ronny

so ein bisschen ermutigen, dass sie das können.

Ronny

Also nicht irgendwie, ich glaube, da ist

Ronny

gar nicht so groß der Faktor, dass du da rausgehst.

Ronny

Also das ist immer so ein Wochenende-Workshop.

Ronny

Positiv bestärken viele und so, genau.

Ronny

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

Ronny

für Tango Girls.

Ronny

Und ich war, als das mal hier in Köln war, 2015 glaube ich, war ich auch mal da Coach und das war eine sehr interessante Erfahrung, hat echt Spaß gemacht und war auch interessant, 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, 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 Werkstudenten betreut oder sowas, echt interessant zu sehen.

Ronny

dieses Coaching

Ronny

zu machen. Und wie gesagt, das ist halt

Ronny

vor zehn Jahren, das war jetzt Jubiläum, in Berlin

Ronny

gegründet worden, was ich auch ganz cool finde.

Ronny

Also sprich, wenn

Ronny

jemand jemand kennt, der

Ronny

also jemand eine Frau

Ronny

kennt, der die potenziellen

Ronny

sowas Interesse hat, die werden immer wieder mal

Ronny

hier und da angeboten, diese Workshops.

Ronny

Und das ist glaube ich

Ronny

echt cool, so für

Ronny

den ersten Fuß ins Wasser

Ronny

halten mal wieder. Und

Ronny

die Idee dabei ist, dass die halt im Endeffekt

Ronny

ihre erste Django-Seite erstellen

Ronny

und auch irgendwo hindeployen. Und

Ronny

der Fokus ist halt eher darauf, wie du schon gesagt hast,

Ronny

positive Bestärkung, denn

Ronny

ja, pädagogisch

Ronny

wertvoll. Das Tutorial ist auch relativ

Dominik

gut und relativ komplett.

Dominik

Wenn man überhaupt mit Django ansteigen will.

Dominik

Ich meine, das hätten wir jetzt vielleicht früher sagen müssen,

Dominik

die Leute, die jetzt noch drin sind, sind wahrscheinlich

Dominik

eher schon tiefer auch in Django, aber ja.

Dominik

Vielleicht können wir das da weiter verraten auch.

Jochen

Ja, aber das sind dann auch die Motivierten.

Jochen

Bei denen lohnt sich das dann.

Dominik

Ja, vielleicht tragen das in ihre eigenen

Dominik

Communities weiter auf. Genau. Du kannst einfach

Ronny

in der Linksammlung noch hinzufügen, da freuen die sich.

Ronny

Ja, ja, mach ich auf jeden Fall.

Dominik

Ich hab das auch tatsächlich an die Neulinge

Dominik

bei uns mit Django, auch einmal Django Girls.

Dominik

Also erst natürlich offizielles

Dominik

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

Dominik

schnelles Einstiegsding.

Jochen

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

Jochen

einzu... Ich hab mich dann irgendwann

Jochen

kurz danach daran erinnert, es gab auch

Jochen

jetzt irgendein...

Jochen

Muss ich auch nachgucken, welcher das war.

Jochen

Podcast-Episode Django Chat mit

Jochen

einer von Octopus Energy

Jochen

und die erzählte

Jochen

da auch irgendwie, ja,

Jochen

dass sie halt

Jochen

auf so ein Problem

Jochen

gestoßen hat, dass sie eigentlich nicht

Jochen

wollen, dass in Templates irgendwie Datenbank

Jochen

Queries passieren oder so. Und das

Jochen

ist auch etwas, was mir inzwischen halt,

Jochen

ich habe ja versucht, so ein bisschen Performance-Optimierung

Jochen

zu machen, auch bei den

Jochen

beim DjangoCast-Ding, was ich

Jochen

baue, und das ist

Jochen

mir auch ganz böse auf die Füße. Also

Jochen

Also eigentlich, da dachte ich auch so, oh ja, eigentlich möchte man nicht, also wenn man in Templates Datenbank-Queries macht, ganz blöde Idee, die sind dann so weit gegangen zu sagen, sie benutzen so eine Art Class-Based Views, wo sie halt verhindern, 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, das ist eine, also du willst eigentlich, wenn du zum Beispiel eine Daten, die Anzahl der Datenbank-Querys und so toll überhalten willst, willst du halt irgendeinen Punkt haben, wo du sagst, also hier, da sind alle Queries 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?

Dominik

auf... Nee, Angriffe, also es ist einfach

Jochen

irgendwie, das ist halt

Jochen

unheimlich,

Jochen

macht Dinge halt deutlich langsamer und man

Jochen

weiß gar nicht so, warum irgendwie.

Jochen

Und, ja.

Dominik

Also zum Beispiel... Warum wird das

Dominik

langsamer? Vielleicht müssen wir das nochmal genauer erklären.

Dominik

Datenbank-Queries sind immer super langsam. Ja, aber warum

Dominik

muss das, also wenn man die eh machen muss,

Dominik

warum dann nicht im Template, also man muss ja eh

Dominik

drauf warten. Naja, wenn man die halt

Jochen

an einer Stelle macht, dann ist es halt auch nicht so schlimm.

Jochen

Also was auch, das weiß ich nicht so genau.

Jochen

Das ist ein Gefühl. Das habe ich noch nicht wirklich gemessen,

Jochen

aber ich habe auch das Gefühl, dass

Jochen

wenn man die Datenbank-Credits sehr

Jochen

verstreut macht, dass das halt

Jochen

besonders schlecht ist auch. Warum das genau ist,

Jochen

weiß ich nicht.

Ronny

Also an verschiedenen Stellen im Code,

Ronny

meinst du halt. Oder an verschiedenen

Ronny

Orten des Frameworks, glaube ich.

Jochen

Meinst du? Ja, also wenn ich

Jochen

jetzt zum Beispiel gucke von, es kommt ein Request

Jochen

rein, ja, dann passieren

Jochen

ja Dinge, Dinge, Dinge, Dinge. Auch erstaunlich

Jochen

viele, das weiß ich jetzt, weil ich es halt so ein bisschen

Jochen

geproffelt habe. Bei mir sind es

Jochen

halt von, also wenn man jetzt

Jochen

einen Blog nimmt und da die Listpage und dann

Jochen

halt nur so fünf Artikel oder sonst irgendwas, also

Jochen

aus diesem Listview, dann macht das

Jochen

halt so 110.000

Jochen

Funktionsaufrufe oder sowas, was

Jochen

eine Menge ist. Ich dachte so, wow, shit, warum ist

Jochen

das so viel? Das ist ganz schön viel.

Jochen

Und mein Ding wäre jetzt, wenn jetzt so

Jochen

alle tausend

Jochen

Funktionsaufrufe kommt, irgendwie Datenbankquery.

Jochen

Das ist schlecht. Also so war

Jochen

es quasi vorher irgendwie implizit,

Jochen

weil sind die Datenbankqueries halt da passiert,

Jochen

wo es halt

Jochen

wo es halt

Jochen

aufgetreten ist und das war

Jochen

und einfach nur dadurch, dass

Jochen

ich jetzt das einfach mal so umgebaut habe,

Jochen

dass jetzt diese Datenbank-Queries, an denen ich

Jochen

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

Jochen

ist es irgendwie doppelt so schnell geworden.

Jochen

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

Jochen

auf jeden Fall irgendwie, scheint das so

Jochen

zu sein, dass auch der

Jochen

nicht nur, dass man halt

Jochen

blockiert und dann muss man auf die Datenbank warten,

Jochen

sondern auch dieses Ganze irgendwie

Jochen

ja, man ist da in diesem Bereich,

Jochen

wo dann Dinge, die Jungle-Modelle

Jochen

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

Jochen

scheint alles nicht so richtig kostenlos

Dominik

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

Dominik

an der Stelle und warst du irgendwie vorbereitet

Dominik

oder tiered down oder so hin und her,

Dominik

kostet dann unheimlich viel, oder? Ja, also

Jochen

ja, das allein,

Jochen

dass man da halt irgendwie viele Objekte erzeugt

Jochen

und dann, ja,

Jochen

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

Jochen

einmal und wenn das halt verteilt ist, dann

Jochen

macht es das irgendwie nochmal langsamer

Jochen

und ja, ich versuche immer noch momentan gerade

Jochen

rauszukriegen, woran liegt das eigentlich, dass da so viele

Jochen

Funktionsaufrufe passieren, weil das ist einfach zu viel.

Jochen

Kann man nicht eventuell,

Jochen

kann ich, also meine Idealvorstellung wäre natürlich,

Jochen

dass ich irgendwann sozusagen

Jochen

nur noch eine Datenbankquery mache oder so,

Jochen

in der ich alle Informationen aus der Datenbank hole.

Jochen

Geht das nicht

Jochen

vielleicht? Ja, Tim, wie groß

Dominik

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

Jochen

das ist alles gar kein Problem.

Jochen

Aber kann ich so eine

Jochen

Query formulieren und wenn ich jetzt die Daten

Jochen

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

Jochen

daraus wieder Django-Objekte machen kann.

Jochen

Das ist halt so. Aber das mache ich jetzt auch schon.

Jochen

Also ich benutze nicht mehr irgendwie

Jochen

einfach so, ich mache

Jochen

aus,

Jochen

ich benutze nicht quasi den

Jochen

ORM, um halt Django-Modelle, sondern ich

Jochen

ziehe die Daten halt in einer

Jochen

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

Jochen

cachen will, dann muss man das ja auch irgendwie

Jochen

zum Beispiel als Sticked haben.

Jochen

Dass man halt auch irgendwie serialisieren kann.

Jochen

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

Jochen

also es gibt viele Dinge an Django,

Jochen

die kannst du nicht serialisieren.

Jochen

Du kannst es auch nicht cachen, weil

Jochen

Curry-Sets kannst du nicht gut cachen. Geht nicht.

Jochen

Aber wenn du jetzt das in eine

Jochen

Dict-Geschichte

Jochen

überführt hast, wie im Prinzip

Jochen

JSON sehr realisierbar ist, dann

Jochen

kannst du halt auch das, was du aus der Datenbank kriegst,

Jochen

einfach nehmen, irgendwie auf eine Platte schreiben oder so

Jochen

und sage, okay, die nächsten fünf Minuten einfach

Jochen

das Pfeil nehmen und nicht mehr die Datenbank fragen.

Jochen

Oder irgendwo in den Hauptspeicher oder in Redis oder sonst

Jochen

irgendwo hin. Und dann kannst du

Jochen

das halt cachen. Aber das, genau.

Jochen

Und aus

Jochen

den Dingern wieder Jungle-Modelle zu bauen, ist

Jochen

jetzt gar nicht so schlimm. Da dachte ich auch so, das ist vielleicht schlimm.

Jochen

Nö, ist gar nicht. Das geht ziemlich leicht.

Jochen

Ja. Und ja,

Jochen

genau. Also ja, ich mache momentan so ein bisschen

Jochen

Performance-Optimierungsgeschichten.

Jochen

Ja. Ja. Tja, ja.

Dominik

Ja. Ja, aber wenn Performance

Dominik

auch dazu führt, dass du weniger Rechenleistung aufwenden musst,

Dominik

ist das ja sogar Green Engineering.

Dominik

Ja, ja. Da gab es auch Vorträge

Jochen

dazu. 110.000 Funktionsaufrufe

Jochen

für ein Webseiten-Rendering ist nicht so richtig

Jochen

green. Ehrlich gesagt, das ist eher so mehr so braun.

Ronny

ja. Aber Walter, ich habe gerade

Ronny

deinen Einstiegspunkt

Ronny

vergessen, der mich daran erinnert hat, aber es war

Ronny

super interessant, bei diesem Jungle Girls Vortrag

Ronny

gab es auch so eine,

Ronny

ja, so Success Stories einfach,

Ronny

von Mädels, die das halt teilgenommen

Ronny

haben und die jetzt halt irgendwo einen coolen Job

Ronny

haben oder irgendwie eine coole Erfahrung haben oder irgendwo

Ronny

sich halt irgendwas Positives in ihrem Leben geändert hat,

Ronny

so im Sinne von, das hat einen Impact

Ronny

und was ich da echt

Ronny

krass fand war, dass eine US-Amerikanerin,

Ronny

die daran teilgenommen hat, die halt vorher irgendwas

Ronny

gearbeitet hat und jetzt halt dann in Tech eingestiegen

Ronny

ist, weil sie halt am Ball geblieben ist,

Ronny

dass sie deshalb jetzt mit dem

Ronny

neuen Job eine Familie gegründet hat, also

Ronny

sprich ein Kind bekommen hat, weil vorher

Ronny

nach ihrer Aussage sie es in den USA

Ronny

sich nicht hätte leisten können. Ich kann

Ronny

es nicht bewerten, ob das stimmt, also ob das

Ronny

jetzt so eine absolut richtige

Ronny

Aussage ist, aber allein,

Ronny

dass es subjektiv so ist, hat mich echt

Jochen

schockiert. Ja gut, aber ich meine,

Jochen

ich würde sagen, dass halt, wenn man, also so

Jochen

Programmierer ist jetzt schon, ist jetzt auch nicht

Jochen

das Bestbezahlte überhaupt, aber

Jochen

sagen wir mal so, ist halt schon

Jochen

deutlich besser wahrscheinlich als viele andere Sachen.

Dominik

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

Dominik

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

Dominik

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

Dominik

Ja.

Dominik

Ich glaube auch, es ist ja

Ronny

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

Ronny

Flexibilität hat. Ich meine, es gibt

Ronny

immer noch diese Marketingagenturen,

Ronny

wo man dann irgendwie bis nachts um

Ronny

zwölf irgendwie irgendwelche

Ronny

Marketing-One-Pager zusammen lötet, aber

Ronny

bei...

Dominik

Nein, du hast völlig recht. 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 Familie und Beruf.

Dominik

Genau, ich ziehe mit reicher Arbeit von zu Hause aus eine Menge Geld verdienen. Hier ist idealer Angewohn.

Dominik

Nein, aber ich glaube, gesellschaftliche Transformation wäre sowas wie Vereinbarkeit eine der Hauptdinge, glaube ich.

Dominik

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

Dominik

wenn irgendjemand den ganzen Tag irgendwo hinfahren

Dominik

muss, und dann mit Kinderbetreuung ist es schon schwer, ne?

Jochen

Ja, also ich meine

Jochen

auch jetzt die Erfahrung, in den letzten Jahren

Jochen

Erfahrung mit Kinderbetreuung, es passiert immer so

Jochen

viel Zeugs, wo man dann, also ich,

Jochen

ja, das wäre übel gewesen,

Jochen

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

Jochen

Ja, oder hinfahren jeden Tag, du fährst abends mal

Dominik

abends abends abends nach Hause. Du kannst auch nicht wirklich wegfahren,

Dominik

das wäre echt übel gewesen, ja. Oder Schichtdienst,

Dominik

einfach die ganze Nacht. Ja, ganz übel, also

Dominik

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

Dominik

Ja, es ist sehr beeindruckend.

Dominik

Ja, du wolltest jetzt

Dominik

über Party reden, auch wenn wir gerade für Kinderkriegen reden.

Dominik

Ja, für manche Leute ein Thema.

Dominik

Nach der Party kommt der Kater.

Ronny

Genau, nein, tatsächlich

Ronny

bei den Dungercons gibt es immer eine Party

Ronny

und ich finde das ein ganz

Ronny

interessantes Thema, weil

Ronny

in Edinburgh war es so, dass man

Ronny

wenn man sich die Tickets kauft,

Ronny

musste man ein Opt-in machen,

Ronny

ob man auf die Party geht, dann gab es so eine Art

Ronny

Aufwandsentschädigung von

Ronny

10 Pfund oder so und

Ronny

was die nicht bedacht haben ist, dass

Ronny

in vielen, also

Ronny

viele Leute gehen halt über ihre Agentur

Ronny

dahin, also auf irgendeine Art von Weiterbildungsbudget

Ronny

und da buchen die Leute nicht selbst

Ronny

die Tickets und die werden halt am Blog von irgendjemand

Ronny

aus zum Beispiel

Ronny

der Buchhaltung gebucht und die natürlich

Ronny

mit der Information Party kostet extra

Ronny

nichts anfangen können und

Ronny

dann bei uns und auch bei anderen

Ronny

war es dann so, dass wir halt auf einmal alle nicht dahin gehen

Dominik

konnten. Weil nicht eingeladen zur Party.

Dominik

Ach so.

Ronny

Und einfach, weil halt das Heck hier nicht gesetzt wurde

Ronny

und das war halt irgendwie einfach

Ronny

so ein bisschen die Realität zu

Ronny

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

Ronny

naja, so ist es halt. Gehört eigentlich dazu.

Ronny

Und ich persönlich finde nämlich die Party

Ronny

eigentlich immer eine sehr schöne Art, nochmal

Ronny

mit Leuten, die man halt vielleicht auch auf der Stage

Ronny

gesehen hat an den Tagen. Die sind ja auch meistens

Ronny

eher am Ende.

Dominik

Das ist mir in den Videopeisen auch aufgefallen, da gibt es auch mehrere Partys, wo man sich extra

Dominik

registrieren muss.

Ronny

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

Ronny

lockeren, weniger

Ronny

ernsten Umfeld mit den Leuten.

Ronny

Ich meine, viele Leute haben da irgendwie

Ronny

da noch mit den Leuten

Ronny

reden zu können, einfach auch noch mal

Ronny

mit Leuten connecten zu können.

Ronny

Zum Beispiel in Porto, also jetzt vor zwei Jahren, die Party

Ronny

war, glaube ich, eine der besten

Ronny

Partys. Also die war super, die war echt gut organisiert,

Ronny

richtig schöne Location, bestes Wetter,

Ronny

alles draußen.

Ronny

Und da bin ich dann einfach in eine Runde

Ronny

von Leuten reingestolpert und dann bin ich

Ronny

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

Ronny

irgendwann meinte er, weißt du echt, wer ich bin?

Ronny

Ich sage, keine Ahnung, ich bin Präsident

Ronny

hier von Django Software, von der ich sage, oh,

Ronny

ups, sorry,

Ronny

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

Ronny

und es ist halt einfach, das würde halt

Ronny

so, ich meine, das kann passieren, wenn man

Ronny

so auf der Konferenz rumläuft, aber man ist

Ronny

da schon immer relativ getaktet mit,

Ronny

dann gibt es da eine Verlosung

Ronny

und dann ist der nächste Vortrag und dann muss man sich

Ronny

vielleicht selber auf irgendwas vorbereiten,

Ronny

dann will irgendwie die eigene Crew irgendwas

Ronny

und Konferenz-Experiments,

Ronny

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 es ja immer dann auch, ne, auch dann so, naja, nö, sie nehmen es auf, nö, aber ich finde es ist schon sehr, sehr schöne Atmosphäre und Möglichkeit mit Leuten nochmal so zu socialisen, auch mal Leute ein bisschen persönlicher vielleicht auch kennenzulernen und genau, also fand das wirklich schön und jetzt bei diesem Mal, das war so ein bisschen doppelt unglücklich, dieses Konferenzgebäude in Vigo, das war direkt am Hafen, das war nicht so ein schöner Hafen,

Ronny

Aber es war halt, immerhin hat man Meerblick. Und die andere Seite der Bucht war schön. Hatte eine gigantische Dachterrasse, also riesig. Und genau oder fast genau als die Party anfing, kam ja 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. Und um neun war Schluss, was halt auch schade war, weil, wie gesagt, in Porto, glaube ich, waren bis eins oder zwei. Ich glaube, in Kopenhagen davor war auch relativ lang, solange die Organisatoren halt Lust hatten, so dass das nicht abschließen zu wollen. Und ja, das fand ich tatsächlich ein bisschen schade.

Ronny

Er wird bestimmt seine Gründe gehabt haben, ich will mich da jetzt gar nicht irgendwie, ich habe nichts dazu beigetragen, ich will da nicht rummosern, ich persönlich fand es nur schade, weil, wie gesagt, ich das eigentlich meine, es ist ein sehr schöner Ort, finde 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 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, ich finde das ja auch, gestern war ja wieder bei DDF auch immer super, dass man danach noch was essen geht, weil auch immer der Hauptteil des Spaßes ist, also nichts gegen die ganz tollen Vorträge, die alle tollen Menschen machen, mir halt auch bestimmt bei der DangoCon, wo ich irgendwann auch dahin fährt und so, aber das Socializing ist ein großer Teil, dass man so Leute kennenlernt, 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.

Dominik

Das machen einige Leute gerne.

Dominik

Aber auch manchmal zuhören ist auch super.

Dominik

Und das ist irgendwie was Gutes.

Dominik

Ich kann das auch sehr nachvollziehen.

Dominik

Ich finde das auch mit den wichtigeren Teilen.

Dominik

Also manchmal ist man halt auch im Gang so ein bisschen.

Dominik

Und weil du gerade sagtest, das fand ich interessant.

Dominik

Deine Art und Weise war wahrscheinlich sehr strukturiert

Dominik

und sehr organisiert,

Dominik

möglichst viel von dem Content mitzubekommen.

Dominik

Und also von der Europython kenne ich es zum Beispiel so,

Dominik

die ist ja lang.

Dominik

Und wenn man da halt die ganze Woche da ist,

Dominik

dann sind es ja sieben Tage.

Dominik

Also zwei Tage Workshop, drei Tage Vorträge, zwei Tage irgendwas anderes. Da tut es immer ganz gut, wenn man sich 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 näher nochmal an irgendeinem Stand.

Dominik

Und man hält sich dann mit den Leuten länger, anstatt dass man jetzt sagt, okay, meine Uhr in zehn Minuten geht der nächste Vortrag los, der Kopf ist ja irgendwann eh voll 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 das ganz anders machen. Es gibt Leute, die kommen halt nur für zwei Tage und da ist das halt dann sehr intensiv. Oder es gibt Leute, die sind nur bei den Workshops da und haben nie wieder gesehen. Oder Leute, die schaffen sogar nur zu ein oder zwei Vorträgen, was manche an Kinderbetreuung liegt oder sowas, die man da auch netterweise hinbringen kann. Oder halt sogar nur zu den Sprints, 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. 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-Connect auf jeden Fall auch mal reinziehen, ehrlicherweise. Ich finde das auch mal ganz nett. Ist halt ein bisschen mehr Fokus auf Django, was auch mal cool ist.

Dominik

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

Dominik

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

Dominik

Ich auch, ich fahre trotzdem gerne nochmal hin.

Dominik

Dublin ist toll. Weißt du auch schon wo?

Dominik

Gibt es da einen Ort?

Dominik

Es gibt glaube ich

Dominik

eine Webseite,

Dominik

wo literally das Logo drauf ist.

Dominik

Alles weitere

Dominik

folgt dann.

Dominik

Ich finde es auf jeden Fall sehr cool.

Dominik

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

Dominik

Vigo kann ich noch nicht, Edinburgh schon.

Dominik

Dublin, ja, ist das einfach eine tolle Stadt.

Dominik

Wenn ich noch Bier trinken dürfte,

Dominik

wäre ganz toll.

Dominik

Überall wunderschöne Sachen.

Dominik

Du musst halt Whisky trinken.

Dominik

Ja, wir waren ja immer, ja, am Schennen entlang ist ja immer toll, da gibt es tolle Sachen, ich meine, es ist halt sehr moderne Hilfestadt auch, ne, naja, gut, das sind die meistens alle irgendwo, bis auf hier noch ein, ja.

Jochen

Aber wie, das waren jetzt aber drei Tage quasi, ne?

Ronny

Genau, das waren drei Tage Konferenz, 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, ich habe die Workshops nicht teilgenommen, ich nehme irgendwie von diesen Workshops nicht so viel mit, ich war letztes Mal in Edinburgh mal bei den Sprints dabei und man muss auch sagen, das ist kein Umfeld, wo ich wirklich produktiv arbeiten kann, also dann sitzen da ganz viele Leute in einem Raum und es ist halt so ein gewisser Geräuschpegel, weiß ich nicht, jedem zweiten fehlt irgendwie Strom und dann hast du da kein Ladekabel

Ronny

und es ist

Ronny

also es ist unruhig.

Ronny

Interessant, also ich finde das mit dem Workshop sehe ich total

Dominik

anders, also weil, vielleicht bist du schon

Dominik

viel weiter als ich in vielen Punkten, aber

Dominik

die Dinge, die ich da so mitgenommen habe,

Dominik

habe ich immer super viel gelernt und das hängt

Dominik

wahrscheinlich total davon ab, was für einen Workshop

Dominik

man da hat und welches Niveau da ist und

Dominik

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

Dominik

Also ich habe wirklich immer da am meisten von

Dominik

bekommen, mehr als von den vielen Talks.

Ronny

Aber ich glaube auch, ich gehe halt auch ganz gerne

Ronny

auf die Konferenzen, nehme mir

Ronny

die Stichpunkte mit und

Ronny

sortiere dann quasi danach nochmal so ein bisschen

Ronny

aus, so was speichere ich ab, also es

Ronny

existiert irgendwo, zum Beispiel diese Sache mit

Ronny

der Architektur, das finde ich super spannend, ich

Ronny

müsste auch nochmal, also ich gehe

Ronny

da auch nochmal ins Gespräch mit ihr

Ronny

und gucke mal, ob wir

Ronny

sie vielleicht mal zum Django Meetup Köln oder sowas

Ronny

einladen können oder sowas, weil das ist halt ein Thema, das halt für

Ronny

mich super spannend ist und wo ich

Ronny

auch noch definitiv zu wenig weiß

Ronny

und

Ronny

das ist, so gehe ich dann damit um.

Dominik

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

Dominik

waren halt mindestens einmal einen halben Tag, also vier Stunden

Dominik

oder so. Die sind kürzer da.

Dominik

Ich bin da richtig tief in die Themen reingekommen,

Dominik

hab mich da richtig reingehackt, hab da auch wirklich was gemacht

Dominik

und hab dann auch teilweise noch wirklich nachgearbeitet

Dominik

und die Dinge wirklich umgesetzt und benutzt.

Ronny

Also da sind die eher kürzer, also ich glaube

Ronny

so ein bis zwei Stunden, glaube ich.

Ronny

Ich bin nicht ganz sicher.

Ronny

Letztes oder letztes Mal hab ich mal welche mitgemacht.

Ronny

Aber wie gesagt, irgendwie die Atmosphäre ist nicht so ganz meins.

Dominik

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

Dominik

Wo ich dir recht geben muss, ist bei den Sprints.

Dominik

Sprints sind immer sehr chaotisch.

Dominik

Meistens, also ich nutze Sprints oft dann auch zum Socializen,

Dominik

mit den Leuten quatschen, um nochmal rumzustehen.

Dominik

Aber ich muss ehrlich

Dominik

gestehen, ich habe bei den Sprints auch immer nicht das Thema

Dominik

gefunden, wo ich dachte so, wow, das finde ich jetzt super

Dominik

toll und da will ich jetzt mitmachen.

Dominik

Weil ich glaube, das ist, wenn du

Dominik

idealerweise vielleicht, wenn man ein Thema

Dominik

bei dem Sprint hat, wo man vielleicht sogar schon drin ist,

Dominik

wo man das ganze Setup schon gemacht hat, wo man

Dominik

die Entwicklungsumgebung bei sich auf dem Rechner schon eh

Dominik

drauf hat und dann sich einfach einloggen kann, dann kann man das

Dominik

Feature zu nehmen, das mit anderen Leuten mal so

Dominik

diskutieren, durchdenken und dann von mehreren

Dominik

Seiten mal echt mal die Lösung, die man gerade hat

Dominik

mit drei oder vier Leuten, die da fokussiert dran arbeiten,

Dominik

wirklich implementieren. Das ist auch cool, glaube ich.

Ronny

Auf jeden Fall, auf jeden Fall. Also wir haben ja auch beim Django Meetup in Köln jetzt im Januar hatten wir Sarah A. und Thibaut, also die sind beide Django Board Members, ganz frisch geworden, hatten wir eingeladen, sind netterweise vorbeigekommen, da haben wir dann auch einen Open Source Sprint gemacht.

Dominik

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

Dominik

Und das war

Dominik

auch echt cool. Also es war eine coole Erfahrung.

Dominik

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

Ronny

drauf Lust hatte. Es sind mehrere Tickets

Ronny

auch erstellt worden.

Ronny

Und

Ronny

also wurden mehrere Pulls erstellt

Ronny

worden. Und danach

Ronny

hat man noch so ein bisschen Diskussionen, so Future of Django.

Ronny

War auch super interessant, weil man halt wirklich

Ronny

mal zwei Boardminers am Start hat und

Ronny

wirklich mit denen so ins 1 zu 1 gehen kann.

Ronny

Aber wirklich, ich bin da gar nicht dagegen oder so.

Ronny

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

Ronny

Ich finde, für das wirklich Programmieren ...

Dominik

Also kategorisch, ja.

Dominik

Also es ist nicht nur so zufällig gewesen,

Dominik

sondern du denkst wirklich, du brauchst eher deine Ruhe.

Dominik

Ja, definitiv.

Dominik

Aber was ich dann interessant finde, ist, dass du zwischendurch,

Dominik

also ich weiß nicht, ob sich das geändert hat,

Dominik

sagtest, dass du im Büro total die schöne Arbeitsatmosphäre hast

Dominik

und das sogar zu Hause vorziehst.

Dominik

Wo ich immer sagen würde, im Büro habe ich immer den Stress,

Dominik

das mache ich lieber zu Hause.

Dominik

Also jetzt, wo ich wieder öfters ins Büro gehe,

Ronny

also ich mache so drei Tage Büro, zwei Tage zu Hause,

Ronny

ist, als ich nur

Ronny

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

Ronny

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

Ronny

musst, das lenkt dann schon sehr ab, aber wenn du drei Tage

Ronny

da bist, dann hast du halt deine Nasen alle gesehen

Ronny

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

Ronny

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

Ronny

braucht, wenn man kurz vor die Tür geht oder so, dass man halt

Ronny

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

Ronny

Und

Ronny

tatsächlich ist auch, dass

Ronny

Post-Corona bei uns auch einfach nicht so

Ronny

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

Ronny

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

Ronny

Ich telefoniere vielleicht mal irgendwer, irgendwo oder so.

Ronny

Aber es gibt ja immer noch Kopfhörer.

Dominik

Dann bin ich ins Boot, dann muss ich eine Hose anziehen.

Dominik

Das ist so fürchterlich.

Ronny

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

Ronny

Hey, jetzt hast du wieder gespoilert.

Ronny

Nein.

Dominik

Ich wollte jetzt niemanden zu nahe drehen.

Jochen

Ja.

Jochen

Ja, wir könnten noch Pics machen.

Jochen

Das klingt, glaube ich, ganz gut.

Jochen

Und dann ist es eigentlich auch schon

Jochen

eine runde Sache.

Dominik

Ja, dann bin ich

Dominik

ja mal gespannt, was für Picks

Dominik

wollt ihr denn nehmen?

Dominik

Soll ich anfangen?

Dominik

Du hast einen von mir geklaut.

Dominik

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

Jochen

Hab ich den geklaut? Ja, das kann sein.

Jochen

Ich hab mich in

Jochen

letzter Zeit noch mal so ein bisschen

Jochen

also es gibt da auch einen sehr schönen, das kann ich vielleicht

Jochen

dazu sagen, Vortrag von

Jochen

Simon Willison zu einem Kommando-Zahlen-Tool,

Jochen

was er geschrieben hat namens

Jochen

LLM und das LLM

Jochen

picke ich mal, weil da habe ich jetzt auch wieder

Jochen

ein bisschen mehr mitgemacht und

Jochen

das ist halt wirklich nett, weil man da

Jochen

ja

Jochen

unterschiedliche Modelle mal so ausprobieren kann,

Jochen

damit man so ein bisschen rumspielen kann.

Dominik

Aber auch, du kannst halt einfach

Jochen

in deine Kommandos halt reinpipen. Genau,

Jochen

du kannst halt, ja,

Jochen

also ich benutze es dann halt auch

Jochen

für solche Dinge wie alle,

Jochen

ich habe jetzt sogar eine Funktion tatsächlich für

Jochen

Django Cars geschrieben, wo ich sagen kann,

Jochen

gib mir doch mal den gesamten

Jochen

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

Jochen

mit Tests aus oder so

Jochen

und dann, und mach mir das zu einem

Jochen

Prompt, wo dann halt die Dateinamen auch noch

Jochen

immer mit drüberstehen und dann

Jochen

kann ich sagen, okay, pipe das mal irgendwie

Jochen

in ein Modell rein und dann mach ich da irgendwie

Jochen

ein System-Prompt zu, von wegen, ja,

Jochen

hab ich bei der Dokumentation irgendwas vergessen

Jochen

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

Jochen

die man irgendwie besser machen kann und so

Jochen

und ja, das funktioniert

Jochen

tatsächlich ziemlich gut. Alle

Jochen

Anfragen und Antworten

Jochen

landen in der SQLite. Das heißt, hinterher kann man sich

Jochen

auch gut angucken, was da, also man hat

Jochen

alle Sachen, die man je irgendwie gepromptet hat

Jochen

und wo man Antworten gekriegt hat, hat man

Jochen

in einem strukturierten Format, das man halt auch

Jochen

wieder irgendwie auslesen kann und analysieren kann.

Dominik

Und dann kann man totalerseits deine Templates verwenden,

Dominik

die man halt auch dann hintereinander pipen kann

Dominik

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

Dominik

Dann hat man halt immer schon sein

Dominik

System prompt und sein Alignment so ein bisschen

Dominik

vor oder hinter dem ganzen

Dominik

Zeugs, was man da kommuniziert. Das finde ich

Dominik

auch super cool.

Dominik

Man kann jetzt, also ich habe zum Beispiel so einen,

Dominik

den nenne ich dann den Senior,

Dominik

dann gibt der mir immer schnüppelische Antworten,

Dominik

wie ich das von Jochen immer kenne.

Dominik

Es funktioniert super, es macht sehr viel Spaß.

Dominik

Und dann sagt der mir so,

Dominik

warum hast du das denn nicht selber rausgefunden?

Dominik

Jetzt auch die Anleitung.

Dominik

Es ist toll und es macht so ein bisschen Spaß beim Arbeiten,

Dominik

wenn man dann Fragen stellt und jemand, der dann so antwortet.

Dominik

Das ist sehr lustig.

Dominik

Sehr gut.

Dominik

Genau.

Jochen

Ja, also das Ding, ups.

Jochen

Das wäre dann mein Pick, genau.

Dominik

Ja, Ronny.

Dominik

Boah,

Ronny

so ganz spontan fallen mir

Ronny

nicht mehr Sachen ein.

Ronny

Du kennst etwa die Praxis nicht

Dominik

von dem Pick der Woche, des Monats

Dominik

hier bei uns im Podcast. Also ich kenne das doch,

Ronny

aber mir fällt gerade irgendwie nichts wirklich ein, was ich

Ronny

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

Jochen

Oder hast du vielleicht mal einen interessanten Talk gesehen?

Jochen

Oder du kannst ja, genau, wenn du einen Talk

Jochen

zum Beispiel bei der DjangoCon super gefallen hast,

Jochen

dann können die Leute ihn jetzt noch nicht sehen,

Jochen

aber irgendwie sich schon mal

Jochen

darauf freuen, dass es den dann später irgendwo auf YouTube

Ronny

gibt oder so. Also wie gesagt, der Talk

Ronny

über die Layered Architect

Ronny

über Django,

Ronny

ich weiß nicht genau, wie er hieß,

Ronny

der war auf jeden Fall sehr spannend

Ronny

und auch einen Talk, wenn man sich für Django

Ronny

interessiert und auch in das,

Ronny

die Idee bezüglich

Ronny

großer Applikationen und wie lässt

Ronny

man eine Django-Applikation wachsen, weil ich bin schon davon

Ronny

überzeugt, dass man auch große Applikationen

Ronny

damit bauen kann. Es ist nicht nur zwingend

Ronny

nur dieses kleine Blog-Ding,

Ronny

womit es mal angefangen hat, da gibt es

Ronny

einen Talk, Scaling Django to 500

Ronny

Apps, das ist auch

Ronny

Kraken-basiert, Kraken,

Ronny

hier, Octopus Energy

Ronny

related, glaube ich, und die haben

Ronny

eine Idee von, also Django-Apps ist halt

Ronny

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

Ronny

das haben ja viele Frameworks

Ronny

und die haben da eine Idee,

Ronny

ja, in general, sie missbrauchen da ein bisschen das

Ronny

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

Ronny

trotzdem funktioniert, nämlich die machen Sub-Apps

Ronny

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

Ronny

um im Endeffekt zu sagen,

Ronny

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 und das finde ich super spannend, 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, weil ich jetzt zum Beispiel in meinem Projekt, 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 diesem Structure-View, also wo man quasi sieht, welche Klassen gibt es in meiner Datei, 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, also es war super schnell, wie so Sachen reingehen, wo man auch sagt, okay, das gehört hier echt gar nicht rein, das muss eigentlich komplett woanders hin, einfach nur mit einem Blick und diesem Gedanken, dass es dieses Sub-App-Pattern gibt.

Ronny

Dann auch bei ein paar Sachen gesagt, okay, das ist definitiv

Ronny

keine Subwebs, das ist einfach Standalone.

Ronny

Das kann man gut rausziehen.

Ronny

Das finde ich auf jeden Fall einen sehr interessanten Vortrag,

Ronny

den ich jedem ans Herz legen kann, der sich

Ronny

für sowas interessiert.

Dominik

Subwebs habe ich auch letzte Woche in irgendeinem Projekt eingebaut,

Dominik

aber ohne das Pattern dazu.

Jochen

Aber ich bin eigentlich eher,

Jochen

vielleicht bin ich da auch irgendwie falsch abgebogen,

Jochen

aber ich bin eigentlich eher so auf dem,

Jochen

ich mache gar keine Django-Webs mehr.

Jochen

Also immer wenn ich...

Jochen

Wie sonst?

Jochen

Naja, einfach ganz stinknormal

Jochen

mit Python-Bordmitteln

Jochen

Dinge modularisieren.

Jochen

Weil das Problem bei den Apps ist halt

Jochen

einmal,

Jochen

ja, es ist halt irgendwie so eine Spezialgeschichte,

Jochen

die halt irgendwie anders funktioniert als

Jochen

alles andere und du musst es halt

Jochen

auch in den Settings ja immer dann mitsetzen

Jochen

und so. Und dann,

Jochen

das, was ich eigentlich am

Jochen

fiesesten finde, ist,

Jochen

dass man halt, man kann halt Sachen schlecht

Jochen

refactoren, so von einer App zum Beispiel in eine andere,

Jochen

weil man kann die Migration nicht umziehen.

Dominik

Aber so Modelle, genau, wäre so ein Punkt, wo ich sagen würde,

Dominik

oder eine App, wenn es irgendwo Modelle gibt,

Dominik

ist für mich immer bisher so eine App.

Jochen

Ja, aber was machst du dann, wenn

Jochen

du mal das eine Modell in eine andere App ziehen willst?

Jochen

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

Jochen

Es geht, aber es ist mühsam.

Ronny

Also musst du halt

Ronny

mit RAW-SQL und

Ronny

Daten halt...

Jochen

Ja, klar, das geht schon, aber es ist halt nicht einfach,

Jochen

man verschiebt es...

Jochen

Da kann man auch gut was kaputt machen.

Jochen

Ja, genau.

Jochen

Wenn man es halt alles in einer App hat,

Jochen

dann kann man es einfach umziehen.

Ronny

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

Jochen

Ich habe meistens dann zum Beispiel Models.

Jochen

Also wenn es größer wird, dann habe ich halt ein Models-Verzeichnis.

Jochen

Alle Models 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,

Jochen

dann würde ich denken, na gut, wahrscheinlich sollte man es mal ein bisschen aufteilen.

Jochen

Und ja, dann kann man die ja auch so gruppieren.

Jochen

Und dann hat man noch eine Init-Py, in der man dann halt irgendwie festlegt,

Jochen

welche überhaupt exportiert werden sollen.

Jochen

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

Jochen

Das ist interessant, da habe ich noch nie drüber nachgedacht

Dominik

Ja, das finde ich auch

Dominik

Also unterverzeichnet ist, wo halt nur bestimmte Sachen

Dominik

rauskommen und die anderen Sachen, also implizit

Dominik

intern, aber

Ronny

Das ist interessant, da habe ich heute noch drüber nachgedacht

Ronny

aber auf diesen

Ronny

das ist ein Benefit, da bin ich

Ronny

drauf gekommen, das ist interessant

Ronny

Ja, cool

Dominik

Und dein Pick?

Dominik

Mein Pick, ich habe natürlich wieder von Jens

Dominik

geklaut, der das in unsere Gruppe geschrieben hat, das ist

Dominik

Monkey Type

Dominik

von Instagram

Dominik

entwickelt worden, wenn ich das richtig verstanden habe.

Dominik

Und das baut dir Type Annotations.

Dominik

Das heißt, du gehst

Dominik

einfach hin und hast

Dominik

irgendeine Python-Funktion oder sowas und sagst

Dominik

dann Command-Teile MonkeyType und

Dominik

dann nimmt der halt die File oder das Ding

Dominik

und schreibt da die Annotations dran.

Dominik

Und das ist gar nicht so schlecht.

Dominik

Das funktioniert besser, als man vielleicht denkt.

Dominik

Und

Dominik

wenn man halt gerade nicht so weiß,

Dominik

man möchte irgendwas Type Annotieren, also warum

Dominik

wenn man das mal möchte, dann

Dominik

macht man das doch. Und dann sieht man, was da passiert.

Dominik

Das kann einem schon ein bisschen Arbeit abnehmen.

Dominik

Und irgendwie

Dominik

man entdeckt manchmal sogar auch Bugs, weil man halt so, hä, nee, das stimmt

Dominik

aber eigentlich gar nicht oder so.

Dominik

Wenn man andere Sachen erwartet oder

Dominik

oh, Mist, dann kommt auf einmal der Delinther

Dominik

oder Maipai sagt halt so, nee, Moment, der stimmt

Dominik

aber jetzt gar nicht, das ist schon ganz gut.

Dominik

Interessant.

Dominik

Ja, gut, dann würde ich sagen,

Dominik

haben wir für heute die Episode.

Dominik

Dann herzlichen Dank, dass du wieder da warst.

Dominik

Ja, vielen Dank.

Dominik

Dann machen wir es gleich noch unter uns weiter,

Dominik

würde ich sagen. Herzlichen Dank fürs

Dominik

Zuhören. Bleibt uns gebogen, wo immer ihr auch seid.

Dominik

Danke, Jochen.

Dominik

Und ja, Feedback

Dominik

an hallo.at, peißenpodcast.de, Feedback,

Dominik

Anregungen, Kommentare, Lob, Kritik und so weiter.

Dominik

Was ihr alles möchtet. Bis bald.

Dominik

Bis dann. Bis bald.

Dominik

Tschüss.