Transcript: DjangoCon Europe 2021

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Hallo liebe Hörerinnen und Hörer, willkommen zum Python-Podcast, heute in der Episode 2 to the Power of 5, Episode 32.

Heute geht es vor allen Dingen um DjangoCon und so ein paar Sachen drumherum.

Jochen hat einen kleinen Stream aufgemacht und sowas.

Heute ist wieder Johannes dabei. Hi Johannes.

Hallo.

Hi Jochen.

Hallo.

Ich bin der Dominik.

Ich bin der Dominik, hallo.

Genau.

Jao.

Wollen wir direkt mit der DjangoCon starten oder haben wir noch andere News, die da irgendwie reingehören?

Ja, DjangoCon sind die wichtigsten News.

Okay.

Also die paar News, die ich habe, die kann ich auch sagen, weil ich habe nicht so viel verfolgt, weil es passieren die ganze Zeit irgendwelche Dinge und ich habe keine Zeit mehr irgendwas zu machen.

Ja, Entschuldigung übrigens auch an der Stelle, dass wir euch so lange haben warten lassen, diese neue Episode, aber das war gerade absolut drunter und drüber im Privatleben, da mussten wir mal kurz ein bisschen warten.

Ja, das habe ich aber nicht vergessen. Wir machen auch weiter.

Genau, genau. Ja, dann können wir eigentlich direkt einsteigen.

Ja, genau.

Waren wir alle auf der Django-Kon?

Nein, ich nicht.

Du nicht?

Hm.

Ach, dann können wir dir ja davon erzählen

Genau, ich wollte gerade sagen, war mir zu virtuell

und ich bin gespannt, was da losgeht. Ich habe gehört, es ging los

mit Programming for Pleasure

oder wollt ihr erstmal generell was sagen?

Das ist auch gleich das erste große Highlight, würde ich sagen

Ja

Ja, ja, das war auch so ein Ding, was mich total überrascht

hat, also hätte ich jetzt

mit so einem Talk hätte ich gar nicht

gerechnet. Vielleicht mal kurz am Anfang

worum es ging, jemand hat erzählt

die meisten Menschen programmieren aus Spaß

weil es irgendwie cool ist, aber das ist gar nicht so toll

Ja, das ist so ein bisschen die Hypothese davon, genau. Also Daniela Prosida hat diesen Talk gehalten, der erste Talk in der ganzen Konferenz und war direkt großartig. Ich hatte Daniela Prosida 2018 in Heidelberg schon mal gesehen und auch da hat er einen großartigen Talk gehalten, auch völlig untechnisch, aber sehr relevant.

und die Hypothese, die er da aufstellt, ist halt, dass Programmierer Spaß an ihrem Job haben

und dass das gut für die Programmierer ist, aber schlecht für alle anderen,

weil dann machen wir das nämlich zum Spaß und nicht für das Ergebnis.

Das heißt, für uns als Softwareentwickler ist es viel wichtiger,

dass wir möglichst viel und möglichst lange programmieren können

und was dann dabei rauskommt, ist gar nicht so wichtig, weil das ist nicht das, woran wir Interesse haben.

Für mich als Chef ist das jetzt totaler Mist, das heißt, ich muss jetzt irgendwie versuchen, euch anders zu erziehen.

Also tatsächlich, ich fühlte mich, als ich den Vortrag gehört habe, und ich dachte so, wir gingen ja auch schon so los,

irgendwie so, ja, programmieren, voll gut, irgendwie total bessere...

Jeder macht das ja auch selber zu Hause.

Zu Hause noch, und ja, dachte ich so, ja, ja, voll gut.

Und dann kam irgendwann der Punkt, wo das dann umschlug und ich so, ja, kann es nicht auch sein, dass das vielleicht total schlecht ist?

und da fühlte ich mich schon ziemlich ertappt, weil ich fürchte, auf mich trifft das ziemlich genau zu.

Er wischt, oh ja.

Und es ist auch leider tatsächlich so, dass ich das Gefühl habe manchmal so, ja,

aber das ist halt auch, manchmal sind halt auch die Projekte, die man macht,

so vom Ergebnis her, da ist man gar nicht so sehr am Ergebnis interessiert, weil...

Aber das ist schlecht, Jochen.

Das ist schlecht, ich weiß.

Das hat mir jetzt jemand letztens in einem Jungle-Con-Talk erzählt.

Wo ist dein Perfect Driven Commitment?

Ja, das ist auch manchmal, aber das ist auch wirklich schwierig, finde ich, bei manchen Projekten.

also, naja

aber das Programmieren selber macht ja Spaß

und da kann man sich auch drüber motivieren, aber

stimmt, dann hat man halt mit dem Ergebnis

wenn es dann nicht so richtig passt, dann denkt man sich so

naja Gott, also mir hat es schon Spaß gemacht

Ja genau

deshalb gibt es so viel schlechte Software

und das Schlimmste ist ja, selbst wenn es schlecht ist

dann bedeutet es ja nur, dass wir noch mehr

programmieren müssen

Was ich noch nicht verstanden habe ist, warum wird die Software

denn schlechter, wenn man Spaß dabei hat?

Die wird nicht automatisch

schlechter, aber

sie wird auch nicht automatisch besser.

Und das ist so das Problem.

Was heißt denn besser? Da sind wir ja wieder

vielleicht bei so einem Quantifizierungsbeispiel.

Was das denn überhaupt ist? Ja, das spielt keine Rolle.

Weniger Fehler wäre vielleicht auch was, was Spaß macht.

Das spielt gar keine Rolle, wie du es quantifizierst,

weil das ist nicht das Ziel der Sache. Du orientierst

dich nicht daran, wie kann ich die Software besser machen,

sondern du orientierst dich

erstmal und unterbewusst daran,

wie kann ich mehr Software machen.

Das ist halt normalerweise

nicht das Ziel, mehr Software zu produzieren.

Beziehungsweise

da hat niemand was davon.

Da ist doch einer.

Ja, genau.

Derjenige, der ist hinterher nicht bezahlt.

Ja.

Okay.

Ich meine natürlich, also besonders schlimm

und das ist natürlich auch so etwas, das wird ja auch immer

gesagt und ich erlebe das auch in Projekten so,

dass es halt besonders dann

schwierig ist, wenn man halt wenig

Kontakt zu den tatsächlichen

Benutzern und zum Endkunden hat.

und das kann natürlich auch nochmal sein, dass das da so eine Rolle spielt, weil

wenn einem sozusagen der Endnutzer tatsächlich

mehr oder weniger häufiger auf dem Schoß sitzt und sagt, was ihn

quält, dann kann man ja da vielleicht so eine gewisse

Empathietransferleistung erbringen und sagen, na gut, okay,

wenn der so drunter leidet, dann kann ich da vielleicht auch mal was machen.

Das ist was anderes als ein Quengel der Manager, der wird dann gerne mal...

Ja, aber auch wenn man die Kunden nie sieht.

Quengel der Manager hat jeder.

Ja, deswegen, das ist nicht so effektiv.

oder Jira-Tickets.

Jira-Tickets machen jetzt nicht unbedingt

so eine empathische Reaktion.

Ehrlich gesagt nicht.

Ja, also

Vor allem die Art und Weise, wie man

diese Tickets dann irgendwie schätzt, wie lange das dauert,

ist halt auch so eine subjektive Sache und man kann

sich auch mal mehr Zeit lassen, mal weniger und so.

Mehr Zeit verbringen mit der

schönen ästhetischen Herangehensweise,

diese Aufgabe zu

lösen. Das ist für mich aber auch

ein bisschen die Gegenhypothese. Also auch

Software, die keinen Spaß macht zu schreiben, ist auch nicht gut.

Auch Kobol-Programme sind meistens nicht

super.

Da möchte ich niemandem vorwerfen, dass er

Spaß dran hatte, die zu schreiben.

Ist das nicht die 13. Kolonie in Battlestar Galactica?

Ja, das ist wahr.

Letztes Jahr hat man ja gesagt, das Schlimmste an

Covid-19 ist, dass es auch ein Jira-Ticket sein könnte.

Ja.

Ja.

Wir müssen ein Projekt intern umbenennen, weil

weil irgendjemand das Delta genannt hatte.

Ja.

Aber ja, man fühlt sich auf jeden Fall

ertappt, weil ich meine,

jeder von uns hat schon mal Sachen so

vor sich hingedudelt und

die dann auf GitHub hochgeladen

und irgendjemand anderes muss jetzt drunter leiden.

Ja.

Also es ist auf jeden Fall schon so.

Und es ist auch genau wie

Daniel Puschida da sagt,

nicht gängig in anderen

Berufsgruppen, dass die ihre Arbeit mit nach Hause

nehmen. Also das Beispiel, was er da bringt, ist, dass

der Zahnarzt in seiner Freizeit normalerweise

keine Zähne richtet.

Sondern das macht er halt nur

Beruf. Ich stelle mir gerade so einen Zahnarzt vor,

der eine Sammlung von Gebissen in seinem Garten

legt. Ja, und dann

vielleicht auch mal ein bisschen drin rumbohrt und sagt,

hier ist aber ein Wurzelkanal, den wir

mal ganz dringend rausbohren müssen.

Ich glaube, zu so einem Zahnarzt würde

ich nicht gehen wollen. Ja, das Einzige, was mich

tatsächlich nervt am Weiterprogrammieren ist, dass ich

und Jochen unterhalten sich über die Programmiersprache Python

und das ist ja auch so ein bisschen

und so etwas Ähnliches, nur dass die Rahmenbedingungen nicht so schrecklich sind, wenn man einen Schrein hat.

Ja, und dass es auch egal ist.

Es ist kein Manager, der hinter einem steht und sagt, mach mal das hier, sondern es geht wirklich nur darum.

Aber auch da geht es ja auch tatsächlich mehr um das Ergebnis.

Da ist auch das Ergebnis sichtbarer.

Du kannst hinterher sagen, der Schrank ist gerade oder nicht.

Genau, wäre dann nicht ein möglicher Ausweg, ganz naiv, wenn man sein eigener Kunde wird,

wo man dann quasi...

Dogfooding.

Ja, dass man sagt, okay, ich bin halt dann derjenige, der am Ergebnis auch interessiert ist, weil es ist halt auch mein Produkt.

Genau, also das würde ich halt auch sagen, ganz wichtig, halt dieses Purpose Driven, dass du halt wichtig dafür brennst, dass du das machst, so wie du dir das vorstellst, weil du halt diese User Story quasi selber in dir drin trägst, ja, zum Benutzen.

Aber will ich ja meistens gar nicht.

Ja, genau, aber wenn das halt so ist

und halt irgendwie ein Management das halt nicht hinkriegt,

das verkackt, dass du halt so eine

Informationsasymmetrie bekommst zwischen

User-Story oder Management,

weiß, was richtig ist und du weißt, was du machen willst,

das wird halt schwierig zu managen.

Also das ist eigentlich unmöglich zu managen, weil du kannst,

die meisten Manager sind ja technisch jetzt nicht so affin,

kannst du irgendwas vom Pferd erzählen und das machen dann auch

irgendwann viele Leute, die halt keine Lust haben auf

irgendwas, erzählen halt auch noch von ganz, ganz

komplizierten Funktionen, die da geschrieben werden

müssen und so und dann dauert das

halt gefühlt ein bisschen länger,

bis nach zwei Zeilen fertig

und hast wieder Teil für die schönen Dinge oder so.

Du meinst,

dann kannst du noch ein paar Unit-Tests schreiben?

Ja, zum Beispiel.

So nutzt man doch dann

die Zeit, oder? Man schreibt Tests und

Dokumentation.

Ja, das fällt ja auch dann meistens immer runter, weil die Leute

sagen, ja, das ist alles total unwichtig.

Oder so Refactoring oder sowas.

Für einen selber als Programmierer

ist das nicht ganz so wichtig.

Ja, für alle Leute, die mitarbeiten, vielleicht.

Das war auf jeden Fall ein großer Paukenschlag

so direkt zur Eröffnung der Konferenz

hat auch, ist super gut

angekommen und

Programming for pleasure, Daniel Fruchti

Der macht auch sonst gute Talks, der hat auch schon welche über Dokumentation

gemacht, die ich auch sehr gut fand

Sind die eigentlich schon online, die Talks?

Ich glaube nicht, ne?

Ich glaube 30 Tage

habe ich irgendwo gehört, aber ich weiß es nicht

Wann war die nochmal genau?

Am 2. Juni

2. bis 6. Juni

Dann ist er jetzt in 10 Tagen

Müsste demnächst soweit sein

Also ich weiß nicht, wie sie es machen

Aber cool

Was hat euch denn noch super gut gefallen?

Das habt ihr vielleicht noch gar nicht gesagt

Die beiden hatten auch einen Talk

Ja, der nächste Talk, der mir sehr gut gefallen hat

war der von Jochen Wersdorfer

Fand ich sehr, sehr gut

Jochen, hast du den auch geguckt?

Ja, ich habe gerade das erste Mal

deinen vollen Namen gesagt in diesem Podcast

Oh je

Ich glaube auf der Webseite war der auch schon irgendwie drauf

Hab ich dich gedockt

Ja

Nö, das, genau

Also ich hab den auch ein paar mal

Ich hab den tatsächlich so ein bisschen dann geübt und so

Und dachte

Oh, vielleicht kann ich den auch live halten

Das hat dann irgendwie nicht geklappt, weil

mein Video, mein

vielleicht ein wenig zu elaboriertes Video-Setup

das nicht zugelassen hat, weil wenn man das als Webcam

bei Zoom registriert, dann

wird die Schrift so unscharf, dass man es nicht mehr lesen kann

und... Also um mal kurz euch vorzustellen, wie Jochen das macht.

Jochen schmeißt tatsächlich ein megakrasses

Technik-Setup, wie er schon mal gesagt hat. So, oh, Content

interessiert dich gar nicht so. Technik ist das, was wichtig ist.

Schmeißt er dann alles

halt irgendwie in OBS rein mit einer ziemlich

krassen Webcam und ziemlich coolem

Setup da auch mit seinem großen...

Was ist das für ein...

Fernsehstudio-Kontrollpult.

So ein Atem-Mini von Blackmagic.

Und tatsächlich braucht man dann keinen OBS mehr.

Das Ding streamt selber. Ah ja, okay.

Also siehst du noch nicht mal OBS, du hast einfach selbst

konfiguriert und dann...

Ja, das sah auch schon ziemlich cool aus, muss ich sagen.

Aber wir wollten das gar nicht annehmen,

hast du gerade gesagt. Ja, zurück zum Content.

Genau, das hat halt dann nicht funktioniert live.

Sonst hätte ich das auch live gemacht.

Ach, wegen Zoom? Genau, und dann musste halt die Aufnahme

verwendet werden, die überraschend früh

eingereicht werden musste. Das hatte mich auch so ein bisschen

Schweiß gekostet. Oh ja.

Und ja,

so, weil ich hatte doch gar keine Slides fertig

und so.

Ja, die Story habe ich ja noch im Ohr.

Aber jetzt haben wir schon darüber gesprochen,

was oder wie du getrugt hast.

über was denn?

Das ist ein Thema, mit dem ich seit einiger

Zeit irgendwie so ein bisschen hadere oder wo ich

dann rum

feile und zwar

was ich irgendwie ein bisschen

doof finde, ist, wenn man so

mit Files zu tun hat, also tatsächlich Dateien

irgendwie größere vor allen Dingen, also Bilder

können auch schon größer werden oder Videos

oder Audiodateien und Audiodateien hat man natürlich

irgendwie beim Podcasten

hat man das schon zu tun und

irgendwie die Seite für

diesen Podcast hier, den habe ich ja auch mal irgendwann gebaut

und da

ist es so, da verwende ich so ein CDN, um

die Audio-Files auszuliefern und

auch wenn ich das bei, jetzt in irgendwelchen

Kundenprojekten sehe oder so, wenn Leute mit Files umgehen,

dann hinterlässt das meistens

so ein, das ist irgendwie

noch nicht so richtig optimal Ding

bei mir, weil oft

hat man dann so Anforderungen wie, das habe ich

jetzt beim Podcast nicht, aber

so in

quasi, ja, wo man so

Auftragsarbeiten, dann hat man halt oft

Leute, die irgendwie Authentifizierung

und Autorisierung haben wollen

für die Dateien, weil das Sachen sind,

die nicht unbedingt öffentlich sind.

Und dann wird es schon schwierig.

Und das, was halt alle machen eigentlich, oder die meisten

jedenfalls, wo ich das bisher gesehen habe, ist,

dass sie

einfach irgendwie als Dateiname

den Hash des

Files nehmen oder so

und das irgendwo auf den öffentlichen Webserver packen

und dann sagen, naja, also

wird schon keiner finden.

Wird schon keiner erraten.

Ja, genau.

Ja, das ist wirklich so, das wird schon keiner erraten.

Nee, das ist richtig, aber das Problem ist, es kann halt

irgendwie aus anderen Kanälen halt auch rausliegen,

wie zum Beispiel irgendwelchen Logfiles oder

auf der kleinen Seite, dass halt irgendjemand

die links verschickt.

Oder das verschickt oder so.

Und dann hat man halt...

Du kannst es auch nie wieder zurücknehmen, wenn das einmal jemandem gezeigt hat,

der hat es für immer.

Genau. Und das ist halt so ein bisschen

vielleicht nicht unbedingt das, was man will.

Und wenn man dann sagt so, oh, das ist aber eigentlich vielleicht nicht so ganz so optimal,

dann kommt halt häufig so,

und Jochen unterhalten sich über die Programmiersprache Python

eigentlich nicht so richtig, dass man das haben möchte.

Und das hat mich schon immer so ein bisschen geärgert.

Also ich habe auch schon gesehen, dass Leute das richtig machen,

aber das ist halt eher so die Ausnahme.

Was wäre denn richtig?

Was gibt es denn für Alternativen?

Genau, also das, was man tun kann,

wäre halt, wenn man

jetzt quasi

das komplett alles selber hosten möchte,

vielleicht so ein Nginx davor

zu nehmen, davor zu haben.

Man hat ja sowieso immer irgendeine Art

Reverse-Proxy vom Applikationsserver

bei Django.

und da kann man ja jetzt,

also auch

diesen Lösungsansatz,

den habe ich ja von dir, Johannes.

Gibt es da was, was man mit Nginx

machen kann?

Genau.

Dann geht der Request

vom Browser aus, geht halt

direkt zum Applikationsserver, aber der

Applikationsserver schickt halt nicht

das File zurück, sondern

der schickt halt eine leere Response zurück,

der nur in Header gesetzt ist

also Xen-File oder

X-Excel heißt der glaube ich bei

Nginx, wo dann drin steht

ja, das ist schon okay und dann ersetzt der

Nginx die

leere File-Response durch die echte File-Response

und dann hat man

Wo kriegt der die her? Ja, der braucht dann halt

Zugriff auf, wie auch immer

das Verzeichnis oder was auch immer

Also halt aus einer Datei, oder?

Ja, genau

Okay, aber das ist ja schon mal ziemlich cool, oder?

dann kann ich ja sagen, diese Datei darfst du nur ausliefern, wenn folgende Vorbedingungen gelten.

Also ich kann die Vorbedingungen in meinem App-Server prüfen und das Ausliefern macht dann aber Nginx.

Also das ist ja schon mal ziemlich gut.

Und damit ist eigentlich ziemlich super, also das funktioniert tatsächlich.

Das einzige Problem, wo ich sagen würde, naja, das ist halt so ein bisschen hässlich an der Lösung,

ist, dass man jetzt plötzlich zwei Systeme hat, die Zugriff auf alle Daten haben müssen.

Also zumindest auf alle Dateien haben müssen.

Ja, okay, klar. Und es muss halt auch so verbunden sein, dass die das beide korrekt finden.

Genau, und du kannst es halt nicht mehr gut testen, ob jetzt deine

Applikation alle Sicherheitsanforderungen noch erfüllt, kannst du in Django-Tests

allein nicht mehr machen, weil dein Applikationsserver kann ja sagen,

nee, da darf jemand nicht drauf zugreifen, dein Test überprüft das und sagt so, super, hier ist

alles richtig und dein Nginx kann aber die Datei trotzdem ausliefern, weil der irgendwie falsch

konfiguriert ist oder keine Ahnung, weil da sonst irgendwie was schiefgegangen ist

und das heißt, du merkst unter Umständen nicht, wenn dein System kaputt geht, weil du jetzt

weil du den einen Teil nicht mehr so wirklich

mittesten kannst, weil es halt auch schwierig ist

das komplette System dann halt immer beim entwickeln

hochzufahren mit Nginx und dem ganzen Kram

also eigentlich müsstest du es ja dann mittesten

aber das ist halt

man verschiebt quasi so ein bisschen

was von dieser Testlast in den

operativen Bereich

im Endeffekt musst du ja dann das operative System

testen und überprüfen

und du müsstest ja eigentlich sogar

einen negativen Test machen, du musst ja nachweisen

dass Nginx diese Datei unter

keinen Umständen ausliefert, außer wenn

und das ist natürlich sehr, sehr schwierig.

Aber gibt es denn da

Echtweltbeispiele? Das passiert doch in der Echten Welt nicht, oder?

Dass irgendwas offen konfiguriert ist?

Passiert so gut wie die.

Also auch diese Leaks, die dann immer gibt.

Das passiert ja nicht.

Also ich meine, das ist auch eine der häufigsten Sachen, die man so sieht,

dass dann irgendwo jemand sich mal

irgendwelche Sachen angeguckt hat und dann

oh, was ist denn da? Hier sehe ich meine Dateien.

Was ist denn da? Gibt es da vielleicht noch mehr?

oder dass irgendwelche Backup-Server offen sind

oder dass irgendwelche Log-Server offen sind

oder dass irgendwelche...

Ja, und dann sind halt plötzlich alle Daten von allen Leuten

irgendwie öffentlich und das ist halt furchtbar eigentlich.

Genau.

Also so kann man das halt machen,

aber dafür muss man jetzt, also ich würde sagen,

das ist auf jeden Fall schon somit die beste Lösung,

die ich so gesehen habe,

wie man das richtig machen kann.

Man kann das auch noch machen,

also wenn man jetzt die eigene Infrastruktur

komplett unter Kontrolle hat, wenn man das nicht hat...

Ja, das hört sich halt auch so ein bisschen an, als wäre es ein bisschen komplexer,

zu dem NGINX zu erzählen, dass er

dieselben Sachen versteht für Authentifizierung

und Autorisierung, wie zum Beispiel die Applikations-Server

mit dem Django dahinter oder so.

Nee, das muss er ja gar nicht.

Das muss er nicht. Der Request geht ja durch

eine Applikations-Server. Das heißt, der Applikations-Server

entscheidet. Der NGINX

sieht nur den Header und macht dann

oder macht eben nicht. Das heißt, das Einzige, was man quasi machen muss,

die richtigen Header setzen und dann läuft.

Vom Applikations-Server aus, ja genau.

Das ist auch sowas. Da gab es dann in der Reaktion

auf den Talk, glaube ich, in Slack

oder so, hat dann jemand gesagt, da gibt es doch in der NGINX

und Jochen unterhalten sich über die Programmiersprache Python

und das Einzige, was daran so ein bisschen blöd ist,

ist halt, es funktioniert nur, wenn man,

also es macht die Infrastruktur komplizierter

und es funktioniert nur, wenn man die komplette Kontrolle drüber hat.

Wenn man jetzt ein CDN verwendet oder so,

geht das halt nicht mehr so richtig.

Ja, was könnte ich denn machen, wenn ich meine Dateien auf S3 habe?

Die könnte ich ja auch auf Private schalten

oder Public. Gibt es denn da auch eine Möglichkeit,

Jochen, erzähl mal. Genau, ja, also was man da tun kann,

ist, man benutzt entweder

signed cookies oder halt

signierte URLs

und

über den Applikationsserver aus. Also das bedeutet,

und Jochen unterhalten sich über die Programmiersprache Python

oder sowas, einen Aufruf oder sowas?

Ja, weiß ich nicht, ob man das da einstellen kann.

Also IP-Adressen und Zeit weiß ich,

dass es bei Amazon geht auf jeden Fall.

Und das kann man halt entweder in die URL packen

oder man kann es halt sozusagen

vom Server aus als Cookie setzen.

Und wenn das dann quasi,

wenn dieser Request, der kommt

dann darauf an, wie die Domains aussehen

und wenn das eine andere Domain ist, ist es manchmal vielleicht schwierig.

Also ob man jetzt

als Applikationsserver einen Cookie setzen kann

für die Domain, unter der dann tatsächlich

die Files liegen. Aber wenn das kann,

kann man das halt auch einfach so als Cookie setzen.

Und

ja, das

funktioniert halt auch.

Das ist auch

richtig, eigentlich sozusagen

in Anführungsstrichen ordentlich, aber

man hat halt immer noch das gleiche Problem,

dass, oder eigentlich ist es ein bisschen

schlechter als die Lösung mit

dem Nginx, weil man halt nicht wirklich

von dem CDN aus überprüfen kann,

ob die Autorisierung noch da ist oder nicht.

Also wenn man jetzt im Django-Admin sagt,

diese Files dieser User darf ich nicht mehr sehen,

dann kann das halt nicht sofort

funktionieren, sondern wenn man halt eine gültige URL hat,

dann

funktioniert die erstmal weiter,

zumindest 30 Minuten lang oder so. Gut,

ist dann halt nicht mehr so schlimm, als wäre die für immer gültig,

aber

auch da reicht es ja unter Umständen schon,

um irgendwie die Daten

rauszukriegen.

Es ist halt so ein bisschen, also es ist besser als nichts

zu machen, aber es ist halt immer noch so ein bisschen so,

so richtig schön ist es eigentlich nicht.

ja, und

genau.

Ja, also das sind halt so die beiden Ansätze, wie man das ordentlich macht eigentlich.

Aber was ist denn jetzt die richtige Lösung? Was kann man denn heutzutage noch besser machen?

Genau, meine Idee an der Stelle war, okay, naja, es muss im Grunde über den Applikationsserver gehen, weil der der Einzige ist, der weiß, ob jetzt ein User irgendwas sehen darf oder nicht.

Das kann man auch nicht irgendwie großartig anders machen, ohne Probleme zu bekommen.

wie wäre es denn, wenn der einfach selber

die Files ausliefert?

Aber davon wird ja erstmal abgeraten,

oder? Weil dann sind die Worker beschäftigt

und dann hast du nur so und so viele

App-Server und dann

sind die langsam und brauchen viel

Speicher und so. Genau, also

in allen Tutorials und so steht immer drin so,

ne, macht das nicht, also wenn ihr irgendwie Files ausliefern wollt,

macht das über einen getrennten

App-Server, der da statische Files direkt ausliefern kann, oder

macht das mit White Noise und CDN oder so,

aber macht das nicht über den Applikations-

Server, weil das Problem beim Applikations-

Server ist halt, dass es normalerweise standardmäßig

ein Pre-Forked

also sozusagen es gibt

mehrere Prozesse, die halt Requests

beantworten, davon gibt es halt so ein paar, eine Handvoll

vielleicht oder sagen wir mal so im Allgemeinen

vielleicht zweimal Anzahl der

Koas plus eins oder so, was halt

halbwegs optimal ist

und

solange die irgendwas ausliefern,

sind die halt belegt und wenn ich jetzt ein File

ausliefer, das groß ist oder

und Jochen unterhalten sich die Programmiersprache Python und wenn alle Workerprozesse belegt sind dann kann niemand mehr anrufen Ah ich wei worauf das hinausl Und genau Ja daher sollte man das nicht machen weil wenn und das kann schnell passieren

wenn man eine Webseite hat, da sind ja viele Bilder drauf.

Auch die Browser, die

fragen ja inzwischen concurrent ab

und so, dann ist halt relativ schnell

vorbei mit den Workern.

Und ja, dann

müssen halt andere Clients

warten und das ist natürlich schlecht, weil das

hat halt direkten Einfluss auf die

User Experience, weil entweder dauert es länger oder

noch schlimmer, es gibt halt eine Fehlermeldung, weil

irgendwas timeoutet. Das heißt, man müsste

die auch concurrent bedienen. Genau.

Und das kann dieses Preforged Worker

Modell synchron Sachen ausliefern

eigentlich nicht leisten.

Deswegen wird immer davon abgeraten.

Aber wir haben

ja jetzt Async Await

in Python seit einiger Zeit.

In Django

noch nicht so lange, weil da konnte es halt lange

nicht so richtig verwendet werden, weil

die Standard-Schnittstelle zwischen Applikationsserver

und Web-Framework

ist halt WSGI

und WSGI kann das halt einfach nicht.

Das sind halt

synchrone Funktionsaufrufe, da kannst du auch nichts machen.

Und

ASGI, also der

Nachfolger, der halt dann auch

sozusagen asynchrone

Dinge

kann, der ist halt noch nicht so alt,

ist auch quasi im Kontext von

im

Django-Kontext irgendwie entstanden.

Der ist, glaube ich, von Andrew Godwin geschrieben worden.

Ja, das ist, glaube ich, ein Janals-Projekt.

Ja.

Genau, und damit geht das

dann, aber Unterstützung

für die Syntax war auch lange nicht möglich, weil

weil halt

Django lange Zeit noch Python 2 zum Beispiel

unterstützt hat, bis Dezember 2019,

also bis Django 3 rausgekommen ist.

Und mit Python 2 geht es gar nicht,

weil da gibt es einfach nicht die Syntax für,

so Async-Awaid-Syntax

geht damit nicht

und auch mit

Python 3.5 ging das nicht gut

ich weiß ehrlich gesagt nicht genau, woran das liegt

also die Syntax kam eigentlich mit 3.5

aber alle Bibliotheken, die das irgendwie

die Async-Awaid unterstützen, die sagen alle immer

ja, erst ab Python 3.6, da ist wohl irgendwas

Wichtiges noch passiert, aber ich habe nie so richtig rausgefunden

was, vielleicht sind es auch einfach nur

die F-Strings und alle sagen so

wenn wir jetzt schon was Modernes haben, wollen wir auch F-Strings haben

und dann geht das halt erst ab 3.6

ich habe keine Ahnung

und

Ja, aber ich meine 3.5 und 3.6

macht jetzt für uns nicht so den Riesenunterschied, oder?

Wir sind ja alle modern.

Debian ist inzwischen auf 3.8 und

Oh wow, okay.

Genau, jedenfalls also

die Syntax kann man

also dass es überhaupt geht

ist halt ab Django 3.0 so

Support für Python 2

und für Python 3.5

gedroppt und seitdem

gibt es auch Unterstützung für SGI

und halt auch prinzipiell die Möglichkeit

Async-IO-Syntax zu verwenden

in Django. Aber es gab noch keine

Async-Views. Das heißt, man

konnte keine Async-File-Response

schreiben, weil

Async-Views gab es halt einfach nicht.

Und das kam erst dazu im

August letzten Jahres, August 2020.

Das heißt, es geht noch gar nicht so lange.

Also 2019 meinst du?

Nee, 2020.

Django 3.2.

Ja, war doch 2019.

Ach ja.

Ach ja.

Ja, okay, auf jeden Fall gibt es das erst seit ungefähr einem Jahr

Genau, und damals hatte ich ja auch schon

Warum ist das cool?

Ja, das ist eigentlich, genau, das ist halt total cool, weil

das bedeutet eigentlich, dass man jetzt so richtig

Async-Sachen mit Django tun kann

was man auch nicht tun kann, was auch

total cool wäre, aber das wird halt noch ein bisschen dauern, ist halt

tatsächlich

Async die Datenbank fragen

oder so, aber man hat zumindest schon mal Async-Views

und das ist halt

hilfreich, ich hatte dann

Ich hatte damals einen Artikel auch drüber geschrieben

mit Dominik zusammen.

Genau, der ist sogar in der Zeitung erschienen,

auch bei euch dann und auf deinem Blog.

Echt? Cool.

Darf man das sagen, Entwickler?

Ja, schick das Magazin.

Und

genau, da haben wir

überlegt, okay, was für Anwendungsfälle gibt es denn

jetzt eigentlich, wenn man schon Async-Kram machen kann?

Und

der Anwendungsfall, den wir dann

da benutzt haben, war, du machst halt

in der Django-Applikation

vielleicht ganz viele API-Zugriffe irgendwo nach außen hin

und möchtest halt nicht, dass

sich die Latenzen, die du dann beim

Abfragen dieser Requests hast, halt

aufsummieren, sondern dass halt

die Latenz nur

so lang ist wie der längste Request, den du machst.

Und dann schickst du einfach all die Requests, die du zu

irgendwelchen APIs machst, gleichzeitig los

und die Antworten

kommen halt sozusagen dann auch concurrent zurück

und nur

die Latenz wird bestimmt durch die

langsamste API, aber nicht mehr

durch die Summe aller Requests.

Und das macht es dann halt schon deutlich

schneller. Also wenn du da viele APIs fragst,

dann kann es sein, dass du da halt in Größenordnungen

schneller bist oder so.

Und das ist dann ja schon praktisch.

Und das war so der Anwendungsfall.

Haben wir da nicht auch drüber gesprochen

in der Async-Episode?

Ja, ja, bestimmt.

Da haben wir ja auch schon mal zwei Episoden dazu gemacht.

Ja, das ist halt...

Wir brauchen noch mehr.

Da kann man immer noch mal drüber sprechen.

Wenn man ein Thema einmal drin hat,

Da muss man das auch ein bisschen ausschlafen.

Ja, genau.

Aber jetzt ist mir dann halt irgendwann,

das war so Anfang des Jahres,

dann dachte ich so, ach, wenn man jetzt schon so async await hat,

vielleicht ist ja tatsächlich Files-Serve

ein guter Anwendungsfall,

weil es ist ja immer so ein bisschen hässlich,

so richtig toll ist es nie

und eigentlich könnte man ja jetzt

eine async-file-response schreiben,

die die Daten sozusagen

da so asynchron rausstreamt,

ohne zu blockieren

und dann müsste das ja eigentlich,

müsste ich ja quasi beliebig viele

Clients

den Files ausliefern können.

Und dann habe ich dann halt so ein bisschen rumprobiert

und ja, hat so ein bisschen gedauert

und irgendwann aber

okay, das funktioniert tatsächlich und

ja, dann habe ich daraus halt

dann hat der Johannes

erzählt, dass er dann irgendwas bei der

Django EU eingereicht hat und da dachte ich so

das muss ich dann auch machen.

Den Talk eingereicht haben.

Der soziale Druck.

Ja und

und genau, das war dann auch Thema des Talks im Grunde und es funktioniert auch tatsächlich.

Ich habe unterwegs auch Methoden gefunden, wie man das Gleiche hinkriegt und auch schon vorher hinkriegen konnte, ohne sich so zu verrenken.

Insofern war es vielleicht alles nicht so richtig notwendig.

Ja, aber das ist ja schon sauberer, was du da geschrieben hast.

Wir haben ja die Tests gesehen und in einigen Tagen kann vielleicht jeder auch sich diesen Talk selber angucken.

Ja, ich packe das.

Ist ja schon deutlich sauberer und deutlich einfacher.

Wirst du das auch

an Django schicken?

Ich mache dann einfach ein

Party-Package draus.

Das wäre ja prinzipiell was, was

vielleicht auch für Django an sich ein Gegenstand ist.

Ja, das Problem ist,

leider funktioniert es nicht so

richtig, kann man es nicht einfach in Django,

könnte man es nicht in Django reinbauen

oder könnte man schon, aber dazu müsste man

den SGI-Händler,

das Ding, was halt mit

die Applikation ist, quasi die

SGI-Applikationen, das ist halt der

SGI-Händler in Django.

Ach, den hast du einfach mal gemunkeypatcht, oder?

Naja, den müsste man

anpassen und das ist natürlich nicht so schön.

Aber das ist in NPR auch prinzipiell möglich.

Oder dass man Subklassen

anbietet oder sowas.

Ja, muss man vielleicht mal

mit jemandem drüber sprechen.

Ja genau, dann machst du halt den ASCII mit

Async-File-Response-Händler.

Genau, aber den habe ich jetzt einfach

erstmal in einem anderen Paket drin und wenn man

das verwenden möchte, dann muss man halt

muss man halt entweder get

async-file-response-handler

oder so eine Application

irgendwie importieren oder halt den Händler direkt

und dann die Applikation selber instanziieren

und dann geht das, aber das ist halt schon

ein Umbau an Django. Das Problem ist, ich weiß halt nicht, was das

alles kaputt machen würde.

Da kann es schon sein, dass einige Dinge nicht mehr

auf der Händler sind.

Ja, klingt auf jeden Fall ziemlich cool.

Das heißt, man kann jetzt einfach mit dem Django-Applikations-Server

seine Files direkt ausliefern.

Man muss sie nicht mehr irgendwie außen

vom Web-Server quasi routen lassen.

Man kann direkt sagen, Django, hey, nimm die doch mal direkt aus.

Weiß nicht, was nutzt man dafür? Django Storage ist raus

oder so und liefert die mal mit.

Ja, und das war damals,

als ich den, damals, vor zwei Wochen,

war das noch nicht so klar.

Also man kann auch

irgendwie ein selbst gehostetes

S3 oder so benutzen, weil das ist ja eigentlich,

das war auch mein Ziel. Ich habe es mit dem

File-System gezeigt, aber File-System ist ja eigentlich so ein bisschen langweilig,

weil... Wie hostet man S3 selber?

Minio? Minio, genau.

weil man möchte eigentlich nicht, dass

User

selbst so Content

Files, wo sie Content kontrollieren, in das gleiche Filesystem

nehmen kann, in dem die Applikation läuft

das ist halt auch so ein bisschen gefährlich

und man hat dann das Synchronisationsproblem

kann man natürlich irgendwie so ein

Samba-Share nehmen oder NFS oder was weiß ich

geht alles

aber ist halt auch so ein bisschen

Ancient Relay

ja

also die Standard

Standard

Geschichte, wie man das selber hostet momentan,

also so ein Object Store wie S3

oder so, ist halt

wohl momentan Minio.

Da müssen wir ja quasi direkt so einen kleinen Exkurs machen,

weil an der Stelle, das hast du alles gezeigt

auf deinem neuen Twitch-Stream.

Genau, genau, genau.

Das und die Entwicklung daran,

die habe ich jetzt gerade mal gestreamt, weil ich dachte so,

jetzt konnte ich dieses Atem-Mini-Dings da gar nicht

auf den Talk einsetzen, da muss ich es

auf irgendwas anderes benutzen.

Also Jochen hat tatsächlich in der letzten Woche oder in den letzten

zwei Wochen ein bisschen mehr auf Twitch gestreamt und auf YouTube

gleichzeitig und da seine Sachen hochgeladen,

da könnt ihr ein bisschen beim Live-Programmieren mal gucken,

das ist vielleicht ein bisschen was anderes, als nur so zu

theorisieren,

sondern halt auch mal tatsächlich live zu sehen, wie Jochen

das denn so macht. Wie ich da vorsitze und keine Ahnung, was ich da eigentlich

tue. Genau, Jochen ist auch noch Mensch und macht die ganze Zeit

Fehler und so und mir fällt es, wenn ich da vorsitze,

ich möchte die ganze Zeit hier so einen Stock nehmen.

Ja, bitte?

Kann man sich wünschen, was du programmierst?

Du programmierst nur, was dir Freude macht.

Ja,

prinzipiell kein

Problem, ja klar.

Vielleicht gegen eine kleine Spende

kannst du vielleicht

Requests annehmen.

Ja, genau.

Mir sind auch immer wieder aufgefallen, schöne Sachen da bei dir,

die du schön gemacht hast.

Ich packe den Link mal rein, mal gucken,

ob da...

Das hätte ich doch ganz anders gemacht, fällt Jochen dann eine halbe Stunde

später auf, oh, das kann man ja auch anders machen.

Ja, aber ich meine, so ist das halt.

Mir sind da auch schon tatsächlich live Dinge

passiert, wie...

Ich habe da live einen Bug in irgendeinem

in einer Library gefunden sozusagen

und dann sitzt er da. Also ich hatte

bisher immer so den Impuls dann zu sagen so, okay,

das muss ich dann mal irgendwann debuggen, wenn ich Zeit

habe, weil das ist zu langweilig.

Immer wieder.

Aber das ging, glaube ich. Also ich meine,

aber es ist ja vielleicht auch ganz gut mal zu sehen,

wie man das rumsucht.

Also Jochen benutzt dafür übrigens NBDEV.

Da hatten wir auch schon mal ein bisschen eingeleitet.

Genau, das mache ich eigentlich nur, weil

ich das Projekt ganz cool fand.

Das mache ich jetzt nicht unbedingt mit allen Sachen so, aber

für das Ding dachte ich...

Ja, du musst das nämlich dann nochmal anders machen.

Also nochmal in VI

und einmal in VS Code oder so, da kann man schauen.

Vielleicht sogar in PyCharm, dass man so ein bisschen einmal zeigt,

wie das denn überall so geht.

Genau, das habe ich auf jeden Fall auch vor.

Ja, genau.

Ja, vielleicht kriegen wir das ja auch mit dem Podcast

nochmal so ein bisschen

ja, den

vielleicht so ein bisschen Video

live schalten.

Ja, also jetzt mal gucken, ob wir dafür

Zuschauer bekommen, begeistern können.

Ja, cool.

Genau, so, das war das

Ja, ich glaube, noch jemand hat halt tatsächlich einen Workshop bei der

Dank bekommen. Was, noch jemand?

Ja, ich bin ja quasi schuld dran,

dass Jochen den Talk

überhaupt eingereicht hat, weil ich habe das nämlich auch gemacht

und das war bei mir auch so ein bisschen

so halb spontan

Also danke, klar

Nee, eigentlich überhaupt nicht, weil

die Botschaft auf der Webseite

die die Organisierer, die übrigens

großartig sind

so verbreiten, ist ja

ja, selbst wenn du dir nicht sicher bist, probier es halt

mal. Komm, reich was ein, im schlimmsten Fall machst du keinen Talk. Im schlimmsten Fall musst du einen Talk machen.

Und so war es dann auch so ein bisschen. Ich habe mir überlegt, was

andere Menschen interessieren könnte und was ich Interessantes sagen könnte

und habe es einfach mal so ein kleines bisschen reingeschrieben. Die Talk-Beschreibung

hat sich dann auch im Laufe der Zeit noch mehrmals geändert. Es ist auch nicht

genau das gewesen, was ich mir anfänglich gedacht hätte. Aber ja, ich habe einen

Talk eingereicht, der dann als Workshop akzeptiert wurde.

und es ging so ein bisschen darum, wie ich Django-Projekte mache.

Also so ein bisschen das, was du auch von dir in unseren Podcast-Folgen erzählt hast wahrscheinlich.

Genau, so ein bisschen Best Practices oder Programmierer-Erfahrung.

Ich programmiere jetzt schon sehr lange in Django.

Ich habe mal nachgeguckt, welches die erste Version war, die ich benutzt habe.

Das war die 0.96.

Ist schon eine ganze Weile her, das war 2005.

Also ich habe jetzt tatsächlich 15 Jahre Django-Erfahrung 15? Das sind ja noch 2020 Ja, wieso? Ich habe das eben nicht verstanden Wir müssen das jetzt einfach so lange wiederholen, bis wirklich jeder glaubt Ich habe also über 15 Jahre Django-Erfahrung und da sammeln sich einfach so Dinge an, die man sich angewöhnt, an die man tut und die dann auch sinnvoll sind

Best Practices dazu zu sagen, ist ein bisschen zu hoch geflogen, weil Best Practices heißt ja, dass das jeder so macht oder jeder so machen sollte und so weit will ich gar nicht gehen. Ich will eigentlich nur sagen, hier folgende Dinge haben sich für mich bewährt und hier ist auch die Begründung.

und ja, das habe ich dann so ein bisschen da reingepackt.

Also ich hatte vier Bereiche

mir aufgeschrieben.

Während des Live-Talks

sind es dann leider nur drei Bereiche geworden,

aber es gibt ja genau

wie beim Jochen auch eine sehr frühzeitig

eingereichte Aufnahme,

die auch auf meiner

Webseite zur Verfügung steht. Können wir nachher gerne

verlinken. War glaube ich auch ein bisschen mehr

für Einsteiger geeignet, glaube ich, den Talk, den du gemacht hast,

als das, was Jochen jetzt... Ja, es

war so ein bisschen gedacht, dass ich vier verschiedene

Bereiche habe und manche sind für Einsteiger

gut und manche sind eher für

Fortgeschrittenere gut.

Was dann halt am Ende

so ein kleines bisschen rausgefallen ist.

Diese Einsteiger-Sachen, wobei auch

erfahrene Leute,

ich wechsle da immer so hin und her,

der Bereich, der mich da

hauptsächlich beschäftigt war, ist Projektstruktur.

Wo kommt Code hin?

Wie heißen die Dateien? Wie sorge ich

dafür, dass ich die Sachen alle wiederfinde?

Wie sorge ich dafür, dass ich auch

in einem großen Projekt den Überblick bewahre?

und sowas halt.

Ich wechsle da immer so hin und her. Es gibt ja Leute,

die sind da ganz krass drauf. Die haben dann ihre

extrem angepassten Cookie-Cutter-Vorlagen,

wo alles anders ist,

wo alles Custom ist.

Und es gibt Leute, die benutzen

Django Start Project.

Ich wechsle da immer so ein bisschen hin und her.

Ich sehe die Vorteile von beidem.

In den letzten Jahren bin ich mehr so in Richtung

Django Start Project gegangen,

weil das schon eine gute Basis ist

und weil das jeder machen kann.

und

weil das jeder auch versteht.

Aber das hat so ein paar Dinge, die mir

da nicht so gut gefallen. Zum Beispiel das Appsfolder.

Zum Beispiel der Appsfolder, ja.

Ich finde, alle Apps, die man

selbst in seinem Code hat, die gehören in ein eigenes

Verzeichnis. Die gehören nicht in das Projektverzeichnis

rein. Bei dem Projektverzeichnis sind ganz viele

andere Sachen drin. Config zum Beispiel.

Und dass das Configverzeichnis nicht Config heißt,

ist auch sowas.

Passe ich in jedem meiner Projekte an, ja.

Und das einfach mal sozusagen

zusammenzuholen und zusammenzufassen und ein bisschen

drüber zu sprechen, auch was

da für Schritte drin sind.

War super hilfreich.

Inzwischen habe ich das Ganze auch in ein Template verpasst.

Django hat tatsächlich

einen Template-Mechanismus für Startproject und

für Startapp. Den kannte ich auch noch nicht.

Das fand ich auch sehr interessant.

Das wusste ich nicht und das ist voll nützliche Information.

Echt sehr gut.

Ich habe da jetzt auch inzwischen

das so eben zusammengefasst, dass man also mit

Startproject

Template dir geht tatsächlich

sogar von GitHub direkt.

dass man da meine

Konventionen reinnehmen kann, die fast

genauso sind wie die von Django

und eben da mehr Struktur

reinbringen. Oh, das finde ich

auch nochmal interessant, wie man das nochmal aufsetzt und das editiert

dass man sein eigenes Skeleton

Start Template über das Django

Start Project Kommando reinbekommt, das fände ich auch nochmal

spannend. Ja, können wir gerne mal

besprechen oder vielleicht machen wir da einfach

eine Bibliothek dafür, Dominik. Wollte ich sowieso

nochmal, können wir mal

zusammenprogrammieren. Ja, machen wir. Genau, also es war einfach

so ein bisschen, wie entwickle ich und was hat sich für mich bewährt und dann eben

genau so ein bisschen im Dialog so ein bisschen drüber sprechen, was bei den anderen so ist.

Und das hat super gut funktioniert.

Das ist auch, glaube ich, ganz gut angekommen.

Klingt spannend.

Müsst ihr euch auch hinterher mal einbuchen, kommt auch in zehn Tagen.

Ja, genau.

Wir verlinken das.

Und auf deiner Seite hast du das.

Genau.

Oder eben meine Aufnahme ist schon auf der Seite.

Das war so die sechste oder siebte Aufnahme, die ich gemacht habe.

Also die ist ganz okay.

Okay.

Ja, das hatte ich auch ehrlich gesagt, damit hätte ich nicht gerechnet, wie oft man dann ein paar Mal aufgenommen und dann passiert irgendein Scheiß.

Fällt einem die Kaffeekante aus der Hand.

Bei der letzten Aufnahme, die ich nehmen wollte, das war dann auch schon am Tag der Abgabe, habe ich drei verschiedene Aufnahmen gemacht, Audioaufnahme und Kameraaufnahme und Screencast.

Und da wollte ich zusammenschneiden und dann war der Screencast kaputt.

und Jochen unterhalten sich über die Programmiersprache Python

gut waren und dann gab es alle die ganz okay.

Also ihr merkt, dass es noch relativ viel technische

Detailarbeit hängt. Ja, aber tatsächlich

erstaunlich viel mehr Vorbereitung

als ich gedacht hätte.

Genau, aber

was ich sagen muss, also das war

dann, da war Johannes' Vertrag auch

echt einer der

positiv herausstechendsten,

also sowohl Video-Audio-Qualität war gut,

während

das aber...

Ja, ja.

Weil tatsächlich muss man leider sagen,

Also ich fand, oft war das nicht so gut.

Ich hatte dann

während der Konferenz gar nicht so richtig Zeit, das live zu verfolgen,

weil

Dinge passieren.

Aber ich habe

die dann alle versucht nachzuhören,

hinterher, und habe die dann halt

auf dem Telefon

laufen lassen, weil

ja, auch ich komme nicht von Rechner sitzen, muss halt

Dinge passieren.

Und das ging auch ganz gut,

aber was mich halt dann schon

so nach dem dritten, vierten Talk, den ich gehört habe,

angenervt hat, ist halt, dass die Audioqualität

oft nicht gut ist. Weil was

viele Leute dann machen ist, sie

nehmen halt ihr Laptop oder sonst irgendwas

und stellen sich dann halt ein paar Meter dahinter, damit sie

halt irgendwie zu sehen sind und dann

sind sie halt weit vom Mikrofon weg und das

Mikrofon ist schon schlecht und dann

wird das nochmal kaputt komprimiert.

Dann geht der Laptop-Lüfter an.

Und dann ist es

schwer zu verstehen. Also ich hatte tatsächlich

bei einigen Talks das Problem, dass ich sie kaum

verstanden habe. Ich habe die Lautstärke

auf dem Telefon komplett aufgedreht und trotzdem

Schwierigkeiten gehabt, das richtig zu verstehen.

Und es ist vor allen Dingen auch anstrengend,

selbst wenn man es verstehen kann,

Audio zu hören, wo man immer

so schlecht ist, dass man

sich wirklich anstrengen muss, um es zu hören zu können.

Und da denke ich

vielleicht auch manchmal,

da gab es ja auch so einen Talk,

ich glaube es diesmal nicht, aber glaube ich bei der letzten

DjangoCon EU,

How to get on the stage.

Der war verlinkt

für die Sprecher, damit die wissen,

was auf sie zukommt.

Ja, und

vielleicht kann man auch irgendwie so, wie kriegt man eigentlich

zumindest verständliches Audio und

nicht so, beim Video ist ja fast egal,

das ist ja gar nicht so furchtbar wichtig, aber ich finde

das Audio ist halt schon so das halt, was

man verstehen können sollte, wenn man

den Inhalt mitbekommen möchte

und wie kriegt man das so hin, dass man das verstehen kann

und dass das nicht total schrecklich ist

und ja, weil das war durchgängig

fand ich bei den, bei vielen

nicht gut. Es gab ein paar Ausnahmen,

eben Johannes eine

eine löbliche Ausnahme, aber bei vielen war das nicht so richtig toll.

Man tut, was man kann.

Ja, das ist schade, dass es dann oft an so technischen Sachen auch hängt,

aber das ist halt wirklich bei so einer Remote-Konferenz eine sehr inhomogene Mischung

von Technik und Menschen und Ideen und Anforderungen und Zeit auch.

Ja, das liegt mir jetzt auch völlig klar, dass ich hier damit sprechen möchte.

und Jochen unterhalten sich über die Programmiersprache Python

Was mir so ein bisschen negativ aufgefallen ist, war, dass diese Zoom-Meetings oft qualitativ nicht so cool waren. Also ich habe jetzt auch nicht die beste Kamera aufgestellt gehabt, aber ich sah halt auf dem Bild echt krümelig aus auch.

und danach, nach den Talks, waren immer noch Jitsi, hatten sie immer noch einen Jitsi-Raum für den jeweiligen Talk, auch super, ja, großartige Idee,

dass man sozusagen noch so dieses Gefühl hat, ich gehe jetzt vor zu dem Sprecher, ich gehe zur Bühne und spreche noch fünf Minuten mit dem,

haben sie super hingekriegt und da war die Bildqualität bei den Sprechern dann oft wesentlich besser als vorher in diesem Zoom-Meeting.

Das ist natürlich schon irgendwie schade.

Das ist schon irgendwie schade.

Aber vielleicht noch eine ganze Technikkritik

jetzt hier an den Bildern.

Was hat euch denn inhaltlich noch super gefallen?

Aber das ist halt das Einzige, was man kritisieren kann.

Das alles andere war halt super.

Die Vorträge waren super

und die Community war super.

Die hatten ein Tool, das heißt

Gather Town.

Oh ja, Gather Town ist großartig.

Da kann man nicht rumlaufen mit einem kleinen Avatar

und sich dann quasi live auf dem Konferenzgelände treffen

mit so einem Pixel-Avatar.

Und da kann man sich auch dann sehen, weil wenn man sich da live begegnet,

und dann geht nämlich die Kamera an und man kann den Ton hören

und dann kann man sich irgendwie auf dem Dorfplatz versammeln

oder ich weiß jetzt nicht genau, ich war gar nicht bei der Dankokon

live im Gettertau.

Es hat einfach eine Räumlichkeit.

Wenn du in einem Jitsi bist oder

in einem Slack oder so, dann bist du ja immer mit allen Leuten

gleichzeitig am Sprechen.

Und das ist zwar schön, weil du mit

allen Leuten gleichzeitig sprechen kannst, aber es ist auch so ein bisschen

erschreckend, weil dir alle Leute immer

zuhören, weil alles public ist.

Und außerdem meinten sich die Leute vielleicht dann gar nicht, weil

irgendwer immer redet. Ja genau, weil man sich nicht traut.

und den Gersatron

habe ich in der Ecke gestellt und warte, bis jemand vorbeikommt.

Ja, genau. Oder man kann an den Stand gehen von den Sponsoren

und kann sich da was zeigen lassen.

Oder man kann sich an den Tisch setzen, wo schon vier Leute

sitzen und dann weißt du, es sind genau vier Leute da

und nicht 80.

Und das macht einfach ein ganz hartes Gefühl.

Also man kann eigentlich gar nicht so richtig

viel kritisieren, außer eben die Bildqualität.

Und ja.

Jochen, was war denn der...

Du hast alle Talks angeguckt, oder?

Was war denn der Talk, der dich am meisten überrascht hat?

Tatsächlich der erste, würde ich sagen, insofern ist das ein bisschen langweilig immer.

Dann sprechen wir da nicht nochmal drüber.

Ansonsten fand ich die, also man muss auch unterhalten, es gibt halt mehrere Dimensionen

sozusagen es gab halt Talks die mich halt inhaltlich haben so wie der erste und die ich auch gut fand Oder es gab welche die ich technisch gut fand Oder es gab welche

wo ich den Inhalt fachlich super fand.

Aber das muss alles nicht

unbedingt gleichzeitig passiert sein,

sondern das war teilweise...

Hast du vielleicht noch eine Empfehlung von einem Talk,

den man unbedingt gucken sollte, wenn du jetzt beitraust bist?

Also einer meiner Lieblingstalks

war auf jeden Fall der von Carlton Gibson.

Carlton ist auch generell großartig.

Static Sites mit Sphinx,

weil ich hatte auch selber da schon mal so Dinge

gemacht. Ich habe auch überlegt, ob ich da nicht

irgendwie

ViewPress oder WhitePress,

ich habe da schon auch Dinge mitgemacht,

für Dokumentation von Software verwenden soll

und dann

dieses, diese

Read the Docs

Geschichte, wie heißt das noch da?

Restructured Text, das ist ja eigentlich auch

ganz nett, da kann man auch viele schöne Sachen, aber es ist meistens

nicht so vielleicht unbedingt

eben auch vor Nachteile

und das, was er da vorgestellt hat,

das fand ich schon großartig, dass man halt sozusagen

auf der einen Seite diese

etablierte Dokumentations-

Erstellungsgeschichte benutzen kann,

aber auf der anderen Seite dann halt, das war mir auch

völlig überhaupt gar nicht klar, dass die Django-Dokumentation

das so macht, dass da nicht

ein fertig gerendertes statisches HTML

ist, sondern dass das dynamische Elemente hat

und dass das halt, dass sozusagen

die Art, wie der Dokumentations-

Content in die Django-Dokumentations-

reinkommt, ist halt über Jason.

Das war mir

überhaupt nicht klar und das ist eigentlich aber

voll gut.

Und deswegen, also

den Talk fand ich auch technisch gut,

also das Audio war super.

Carlton macht das auch total gut, der ist total entspannt

und ein bisschen flapsig und kurz

und echt cool.

Carlton Gibson, Static Pages.

Genau. Carlton Gibson ist generell

so einer, der in der Community ganz viel

macht. Er ist einer von den Django Fellows.

Der macht die ganze

und er macht die ganze Drecksarbeit. Er bezeichnet sich

selbst als Janitor.

Django ist Janitor und

der ist schon

jahrelang in der Community

drin und der ist großartig. Also das kann ich jedem

empfehlen. Oh, er macht ja auch einen Podcast

mit Will Vincent zusammen,

Django Chat. Ach, das ist auch gut.

Hatte ich kürzlich im Auto die Zeit, acht Episoden

anzuhören.

Also auch das, da muss man die Konkurrenz

einmal hier hervorheben. Du hast ja demnächst

öfter mal Zeit wieder für die Podcasts

im Auto, habe ich gehört. Ja, es kann passieren,

dass ich demnächst mehr Auto fahren muss.

Der Talk, der mich am meisten

überrascht hat, wusste ich aber

vorher schon, weil ich kenne die Person auch

von anderen

Django-Kons, wo ich schon war, ist

Rewriting Django from Scratch in 2021

von Emma Deliscore,

die sich die Frage gestellt hat, wenn wir

kein Django hätten

und es aus

Bibliotheken zusammensetzen müssten, wie

schwierig wäre das denn?

Und die Antwort ist, erstaunlich wenig.

Ja, wäre gar nicht so schwer.

Ja genau, man findet quasi für alle Bauteile

was und sie hat dann eben wenige

wenige hundert Zeilen Glue-Code geschrieben,

die das Ganze zu einem Django machen und

das so als Denkanstoß für Django 4,

weil das steht ja demnächst

an, wo wohl

auch einige technische Änderungen drin sein sollen.

Fand ich super spannend.

Ja, ja, aber ich meine,

also in gewisser Weise wäre das,

aber das kann auch sein, dass ich das nicht so

richtig verstanden habe, weil ich dachte so

Er ist so, ja, interessant, die ganzen Dinge, die sie dann nennt, aber warum sollte man das so machen?

Weil für mich ist ja eigentlich der Vorteil von Django jetzt gegenüber zum Beispiel sowas wie Flask oder so,

oder könnte man auch gleich nochmal kurz was zu sagen, dass man das eben nicht machen muss,

dass man auch nicht sich darum kümmern muss, dass die ganzen Sachen immer noch gemaintained sind

und wenn sie das nicht mehr sind, das austauscht, sondern Django kriegst du sozusagen das Komplettpaket,

wo andere Leute sich drum gekümmert haben

vielleicht nicht alle Funktionen

und nicht so

im Detail ausgefeilt, aber dafür

halt irgendwie stimmig.

Integriert.

Ja, aber was wäre denn, wenn Django

nicht ein Paket wäre, sondern wenn Django

ein Metapaket wäre, was

zwölf andere Pakete reinzieht

wo wenn du Django installierst, kriegst du es immer noch

integriert und immer noch stimmig

aber hast dann trotzdem die Möglichkeit

einen Baukasten zu haben. Hast trotzdem die

Möglichkeit zu sagen, ah, Moment mal, ich möchte

eigentlich lieber Templates haben, die

X machen oder Templates Y haben.

Oder auch eben so Contrib-Pakete.

Was ist denn, wenn ich mal den Admin nicht brauche?

Was ist denn,

wenn ich mal eine Seite habe, die den Admin nicht braucht?

Im Moment kann ich ja nicht viel machen.

Ich kann die App deaktivieren

und ich kann die URLs deaktivieren.

Aber der Code ist auf jeden Fall drin, ja.

Aber der Code ist immer noch da.

Und sich diese Frage zu stellen,

was wäre denn, wenn Django modular wäre?

Es ist ja modular, ja.

und Python.

dass ich über SendGrid

verschicke.

Ich muss nur pip install django sendgrid machen

und dann ist das komplett nach.

Diese Frage ist

eine großartige, gute Frage.

Okay, ja, gut. Also so gesehen doch.

Weil im Grunde ist Django ja schon,

viele Teile sind ja schon pluggable.

Eben Storage oder halt

Authentication.

Ich installiere dann halt ein anderes

Paket, sondern auf der Ebene von

in den Settings sage ich halt,

du bist jetzt für mehrere Pakete

und dann stelle ich sie in den Settings ein, welche sie benutzen werden.

Genau. Aber stimmt.

Also, dass man den Code

gar nicht mit drin haben muss, das ist natürlich schon so ein Punkt.

Ah, das

ist aber auch noch ein interessanter...

Genau, jetzt fällt mir doch noch was ein,

zu welcher Talk hat mich am meisten überrascht.

Und zwar, ich weiß nicht, ob ihr den, oder

Johannes, ob du den auch gehört hast,

von Jannis Leidl, der

Jazzband

Talk. Ja, habe ich gehört.

Er ist auch live während des Talks

Jazzband beigetreten. Ah, okay.

Genau, ich habe es mir nicht getan, aber ich habe stark daran gedacht, das zu tun.

Und genau, ich hatte das immer nur gesehen,

Was ist denn JS-Fan, Jochen? Erklär mal.

Ja, ich hatte das immer nur gesehen bisher als, das ist irgendwie eine Organisation,

in der viele der im Django-Kosmos befindlichen Pakete halt so auch mit drin sind

und was da gemainted wird, irgendwie so Django-Filter und weiß ich nicht, ganz, ganz viel Zeug.

Storages und viele Anwendungen.

Ja, und Commands.

All of.

Ja, also ganz viel

und dann dachte ich immer so, ja

und dann wusste ich auch irgendwie so, ja das ist halt irgendwie so, wenn man keine Lust mehr hat

das selber zu maintainen, dann kann man das vielleicht dahin

das loswerden

irgendwie

weiß ich nicht, irgendwie ein Schleifchen dran binden

und das dann da aussetzen, wie an der Autobahnraststätte

Die Apache Foundation

der Django-Welt

Ja, aber

genau

Die sind ja tatsächlich sehr aktiv, habe ich jetzt gehört

in dem Talk

Ja, aber

dann, was mich in dem Talk dann halt

überrascht hat und was ich nicht wusste, ist,

dass das tatsächlich etwas ist, wo man

selber sehr leicht

beitreten kann und

man hat so ein bisschen die Anforderungen

an ein Projekt, aber sie sind auch relativ leicht zu erfüllen

und dann kann man

quasi Projekte davon

maintainen lassen und also der entscheidende Punkt

und der war mir überhaupt nicht klar, ist

bei diesen Projekten ist es so,

dass man das so ein bisschen umkehrt, weil normalerweise

hast du halt immer in vielen Projekten

irgendwie so Core-Entwickler oder Leute, die

halt da reinkommitten dürfen.

Dieses Privileg

bekommt man halt normalerweise, weiß ich nicht, nach ein paar

erfolgreichen Pull-Requests oder so oft bei vielen

Projekten.

Und vielleicht bei noch größeren ist es

so, dass es dann Leute gibt, die überwiegend

sich um den Issue-Tracker kümmern

oder sowas. Und es gibt halt einen Unterschied

zwischen diesen sozusagen offiziell

Beteiligten und den ganzen

Leuten, die halt tatsächlich die

Pull-Requests erstellen

und

dieses Jazzband dreht das halt um

und sagt, also du kannst halt einfach da

reinkommitten, kannst halt einfach dann

es funktioniert halt und dann

es gibt halt nur weniger Release.

Jeder kann beitreten. Ja, kann beitreten und erst beim Release

wird dann halt geguckt, okay, macht das denn irgendwie Sinn

oder ist das irgendwie Quatsch?

Und das passiert halt deutlich seltener, sodass du halt

diese Hürde, dass du halt

das ist tatsächlich eine Hürde, das habe ich mir auch schon oft gedacht

muss ich das jetzt wirklich

Ja und ein Pull-Request stellen

und dann hörst du acht Wochen lang nichts

und dann sagst du, ja hier ist was und dann

weißt du schon alles gar nicht mehr oder geht ganz unter

Ja und was ich dann oft mache ist

dann fork ich es doch mal schnell selber

fix das da und dann

dann vielleicht

mache ich doch tatsächlich nochmal ein Pull-Request, aber

eigentlich auch egal und

tatsächlich habe ich das auch bei Projekten gemacht, die in

Jasmine drin sind und dann hätte ich dann so

okay, eigentlich hätte ich die

direkt fixen können.

Und dann hätte man

diese ganzen

Tons um GitHub-Pull-Requests-Issue

gar nicht machen müssen, sondern ich hätte es einfach gefixt,

committet und fertig.

Was heißt bei Django Field?

Django Field ist all out.

Ja, ganz viele von diesen Sachen,

die man kennt, ich glaube auch Django Extensions

und Debug-Toolbar sind inzwischen Jazzband-Projekte.

Wo, apropos

Debug-Toolbar, da gibt es ja auch was für.

Der Jazzband, weil

das irgendwie sozusagen

und ja, Django ist ja auch vom Namen her, wird das drückerführt auf Django Reinhardt und daher kommt das.

Ein Band.

Cooler Name, finde ich.

Ja, also Django Extensions, hast du noch irgendwas Schönes geteilt, Johannes?

Und zwar hast du da was entdeckt, das heißt die Kolo-App, was auch für Debug für Django relativ lustig sein soll.

Da musst du mir auf die Sprünge helfen, Dominik, weiß gar nicht, was du meinst gerade.

Du hast das schon schon link geteilt, am Kolo-App, das ist eine Django-Applikation zum Debuggen.

Vor allem auch in VS Code, du kannst halt so den Toast-Tweet anschauen.

Ja, genau, das hat mir gar nicht so richtig geholfen, weil ich VS Code nicht benutze.

Aber die haben eben einen Django-Debugger in VS Code integriert und zwar so richtig tief, also der zeigt einem direkt alle Innereien.

Genau, Best Response, die Queries und so.

und auch mit Profiling drin und wenn Fehler auftreten,

kommst du gleich an eine richtige Stelle.

Man kann sogar den Executed-Code-Pass visualisieren.

Es ist ein richtig, richtig ausgefeilter Debugger,

geht allerdings nur in Visual Studio Code.

Das ist ein Salary-Task, kann man damit machen.

Also der zeigt dann wirklich alles an

und das ist sehr beeindruckend.

Ja, ich habe es leider nicht weiter benutzt,

weil ich bin ja, ich komme ja aus einer anderen Richtung.

Charming.

Ich bin sehr charming, ja.

Hi, charming.

Ja

Auch was, was ich da gesehen habe

Okay, ich habe noch eine andere Sache, die mich überrascht hat

bei der DjangoCon

und das war HTMLX

Du hattest das schon mal erwähnt, Jochen

Ja

Du hattest HTMLX schon mal gesagt

HTMLX ist eine JavaScript-Bibliothek

ohne JavaScript

Das heißt, anstatt

dass ich selber JavaScript schreibe

schreibe ich nur spezifische Tags

an meinen HTML dran

die dann irgendwelches dynamisches Verhalten auslösen

zum Beispiel kann ich einem Button sagen, dass er das

Formular submitten soll. Oder

ich kann sagen, wenn

ein Item

in den Bildschirmbereich gescrollt wird, dann

refresht sich das mit einem

dann macht das ein AJAX-Request und holt

neue Listen-Einträge

und kann ich Infinite Scrolling machen.

Oder ich kann sagen, ich möchte Formvalidierung haben

oder ich kann sagen, ich möchte Animationen haben oder so.

Und das Ganze nur über HTML-Tags

ohne selbst

JavaScript schreiben zu müssen.

Und

das kam in drei oder vier

Talks hintereinander, haben sie alle

auf HTMLX verwiesen

und offensichtlich auch nicht

abgestimmt, weil

die Sprecher dann auch gesagt haben, ja, es ist

jetzt schon wieder, ich weiß, es kam jetzt eben schon in den

anderen Talks, aber jetzt ist es schon wieder.

Auch im Slack kam das

dann auf,

dass da jetzt schon wieder HTMLX vorkommt

und ich glaube, das ist was, was ich

mir, also ich wusste, dass es das gibt,

aber mir war gar nicht

so klar gewesen, wie sinnvoll das ist und wie

nützlich das ist. Und dass man ja

tatsächlich sehr viel Dynamik in seiner

Seite mit diesen einfachen Mitteln

hinkriegen kann. Also das, wo

man früher jQuery verwendet hat,

Button.click

und dann

$ajax machen, ist

jetzt einfach in dieses

htmx-Attribut reingewandert.

Und ich glaube, ich muss mir das

mal noch genauer angucken,

wie weit man da gehen

kann. Also ich meine, einen

Talk gab es damit, der hat es quasi zu Ende

gedacht. Was ist denn, wenn wir diese Sachen alle

aus dem Django Form,

aus der Formklasse generieren und aus dem Django

Modell generieren? Auch

großartige Idee.

Data Binding automatisch erzeugen

über Django

Template Syntax. Geht vielleicht

einen Schritt zu weit.

Möchte ich schon noch die Kontrolle drüber haben.

Aber

ja, dass man quasi JavaScript schreibt

ohne JavaScript schreiben zu müssen.

Großartige Idee.

noch genauer anschauen.

Ja, genau, würde ich auch sagen.

Das war auf jeden Fall auch eines der großen Themenfelder,

die es auf der DjangoCon gab, nämlich

wie macht man eigentlich sozusagen

etwas interaktivere

oder so modernere, so

Single-Page-App

mäßige

Applikationen mit Django, weil wohl auch

der Druck größer wird von da außen.

Und vielleicht kann man aber,

muss man dafür nicht jetzt irgendwie,

Es gibt einen Weg, den halt auch viele Leute beschreiben,

der ist halt, naja, du machst halt Django REST-Framework

oder halt, weiß ich nicht, GraphQL irgendwie.

Gab's auch einen Talk dazu.

Ja, und machst halt deine Applikationen im Frontend

halt quasi als, weiß ich nicht, ReactView, Angular.

Django Headless.

Und Headless, genau.

Und dein Backend ist sozusagen, dein Django ist halt nur noch das Backend

und rennt halt nur noch JSON raus und sonst nix.

Das ist eine Möglichkeit.

Das ist aber eigentlich irgendwie traurig, oder?

Das ist irgendwie traurig.

Genau.

weil man die ganzen guten Teile

hat. Ja, es gibt halt

schöne Teile von

Formulare, Formvalidation

oder so, das kann man halt alles nicht mehr nutzen.

Template, da gibt es sehr schöne Geschichten für.

Authentifizierung auch, alles mögliche.

Genau, man verliert halt

viele Dinge, die halt

Django eigentlich total nützlich machen

und die muss man dann selber machen und dann,

wenn man das dann macht in JavaScript, stellt man

auch fest,

Ja, man schreibt

Die langweiligen Teile von Django schreibt man sich dann in JavaScript nochmal nach.

Genau.

Und man hat dann immer noch eine andere Programmiersprache,

mit der man auch kämpfen muss.

Aber mit JavaScript muss man doch.

Das findet man ja teils in der Programmiersprache.

Ja, also es ist besser geworden, sagen wir mal so.

Aber ehrlich gesagt, mir ist Python immer noch lieber.

Auch angenehmer.

Ja, ja, durchaus.

Und eben, was kann man denn jetzt eigentlich noch tun?

da gibt es ja dann mehrere Gegenbewegungen

aber wir hatten das ja auch schon ein paar Mal

sowas wie dieses ganze

Hotwire

Zeugs, irgendwie Ruby on Rails macht das ja auch

dass man halt sozusagen, oder Elixir

Felix

man rendert halt HTML

auf der Serverseite und

hat nur noch wenig JavaScript auf der kleinen

Seite, was halt dann irgendwie

die Seite updatet und

tatsächlich fällt für mich HTMLX halt auch in diese

Klasse von Dingen rein

oder sagen wir mal so

und

von HTMX.

Und

der beschrieb so ein bisschen, was er damit vorhatte

und das fand ich auch sehr interessant, weil das hat mich tatsächlich an die

Episode, wo wir das

letzte Mal zusammengesetzt haben, REST erinnert.

Und da

haben wir auch das erste Mal

HTMX erwähnt.

Und

dass er das Ding HTMX nennt, heißt,

das ist kein Zufall.

Er hat

aber mit jQuery angefangen

und dann hat er sich überlegt, okay, eigentlich ist das ja blöd.

und hat

dann versucht, die Funktionalität

da hat er irgendwie das Gefühl,

das müsste ja eigentlich in HTML oder so drin sein

und das bricht ja auch mit diesem ganzen REST-Ding

und er hat wohl auch die Dissertation

von Roy Feeley da gelesen

und er hat so, was wäre denn, wenn ich eine Bibliothek

schreiben würde, die es

erlaubt, dass das irgendwie so ist,

wie das eigentlich sein sollte,

aber man selber das

JavaScript dafür nicht schreiben muss. Also ich

erweitere sozusagen

HTML so, wie das

eigentlich gehören würde, wenn es Browser-Supporter

für gäbe und das mache ich dann halt in JavaScript.

Und das Ding nennt er irgendwie Intercooler.js

und das war am Anfang noch so ein bisschen grude und sehr

Jackfairy-mäßig und das

hat man schon mal davon gehört,

auch noch gelobt heutzutage.

Ist aber irgendwie, er meinte so, naja,

der Name ist halt schlecht, weil das JS am

hinten dran, das vermittelt so den Eindruck,

das wäre so eins von diesen

JavaScript-Frameworks, was es eigentlich nicht ist

von den Frameworks und Intercooler

versteht auch keiner und dann hat er

irgendwie so ein bisschen, so ähnlich

auch wie wir, wie nennen wir diesen Podcast?

Naja, gucken wir mal, Python oder Python,

dann macht es halt so.

Eigentlich möchte ich HTML, aber erweitert,

Extended, HTMLX, okay, HTMLX.org

noch frei, oh super.

Und dann ist das Ding halt HTMLX.

Und die Idee ist...

Die Buchstaben Org Demands ist auch nicht schlecht.

Ja, gibt es eigentlich gar nicht mehr so häufig,

aber hat wohl funktioniert.

Und deswegen hat er das

dann halt jetzt nochmal so, ist halt so

ein Nachfolger von Intercooler.js.

und die Idee ist

tatsächlich, was wäre denn,

also was ist das Hauptproblem bei,

wenn man jetzt einfach nur ganz stinknormal

HTML rendert

und dieses HateOS

verwenden möchte,

also Hypermedia ist die Engine of

Replication State Dings und

quasi die Prinzipien beibringen möchte,

die halt auch in dieser

Dissertation von Ray Frieden drin sind,

also das Hauptproblem, weshalb

das nicht gut ist und weshalb alle irgendwie

JavaScript zusätzlich machen, ist, dass

sobald du irgendwas änderst

in diesem alten Modell,

musst du deinen kompletten DOM neu aufbauen,

also einen Request-Response-Type.

Du musst einen kompletten Page-Reload machen.

Und das ist halt etwas, was

nicht gut funktioniert, weil

wenn die Seite komplizierter wird,

dann dauert das halt einfach schon mal über eine Sekunde,

bis sich die Seite wieder aufgebaut hat.

Und das heißt, alles fühlt sich dann einfach

nicht mehr flüssig an.

Ja, aber

mit AJAX und so,

konnte man ja da immer schon so ein bisschen was machen, so

Web 2.0 mäßig.

Aber das ist halt eben dann

JQuery, aber das ist halt eben nicht

REST eigentlich.

Und auch diese Single-Page-Apps sind auch

nicht REST, weil die sind halt, die sagen, okay,

naja, der Application-State ist halt im

Frontend und Backend ist halt nur,

liefert halt Daten, aber, oder vielleicht so ein bisschen

State, aber es ist eigentlich, du hast halt

Synchronisationsproblemen,

aber die eigentliche Applikation läuft

halt im Browser. Und er meinte,

okay, wie ist es denn, wenn wir jetzt sagen, okay, wir erweitern

HTML eigentlich um die Elemente,

warum ist es so, dass nur

Form, nur das Form-Tag

einen Post auslösen kann?

Warum kann das nur einen Post auslösen? Warum gibt es nichts,

was irgendwie einen Put auslösen kann?

Ja, okay, aber

gut, man kann das ja einfach dann so machen,

weil aus JavaScript heraus kann man das ja dann tun,

dann schüttet man halt Attribute ein, wo dann

Elemente eben auch einen Put machen können oder halt

eben auch andere Elemente einen Post machen können

und dann kommt

dabei, wenn man das dann halt sozusagen

so ein bisschen standardisiert, kommt halt

HTML eigentlich raus, sodass du halt

sozusagen diese ganzen anderen netten Sachen

halt auch einfach nur in deinem

HTML sozusagen machst und

ja, es gibt halt dann noch so eine Bibliothek,

die das, solange die Browser das nicht unterstützen,

halt dann für dich in JavaScript tut,

aber im Grunde könnte man das auch einfach so...

Ja.

Und das ist eigentlich ein sehr, sehr

interessanter Gedanke, also fand ich auch sehr gut.

Ja.

Ja, und es kam einfach so häufig

vor. Ja, so man merkt,

und man merkt, dass man gezwungen war, sich das anzusehen.

Also es scheint irgendwie so im Zeitgeist

drin zu sein oder im Gedanken

der Moment, das Moment ist.

Ja, der Zeitgeist geht auf jeden Fall Richtung

ja, was wäre denn, wenn wir einfach HTML

rüberschicken und nicht irgendwie JSON.

So ein bisschen, ja.

Ja gut, diese ganzen

Single-Page-Apps,

so eine React-App oder so eine Angular-App

oder so eine Ember-App oder was auch immer,

sind ja im Wesentlichen gar keine Webseiten.

Das sind ja Desktop-Anwendungen,

die halt, okay, zufällig

in so einer VM laufen, die Browser und

JavaScript heißt.

Die aber

im Wesentlichen ja selbstständig sind.

Und es geht ja bei vielen Sachen auch

total gut, dass du halt

eine Anwendung hast im Vordergrund. Also es gibt ja inzwischen

alle möglichen Sachen. Es gibt ja Fotobearbeitungssoftware

im Browser.

Ja, gut.

Es braucht ja überhaupt gar keinen

Riller, dass das Internet da ist.

Ja, wenn man so eine Applikation hat, die

selber sehr viel macht und die ab und zu

oder vielleicht mal mit einem Backend reden muss, okay,

dann ist das dafür vielleicht auch super geeignet.

Aber ich meine, die meisten Webseiten sind

ja gar nicht unbedingt so.

Genau, das meine ich.

Das meine ich ja. Es gibt ja ganz viele solche

Anwendungen, die halt einfach Desktop-Anwendungen

sind, die zufällig im Browser laufen.

Und es gibt aber auch

sicherlich den größeren Teil

der Webseiten, die halt

die gerne so wären,

aber es eigentlich gar nicht nötig

haben. Und so diese

Brücke dazwischen zu schaffen,

und das ist glaube ich

das ist eben das, was im Zeitgeist ist

dass man jetzt eben von den ganz

statischen Webseiten

sind wir ja schon lange weg

auf eine gewisse Art und Weise lange weg

die ganz dynamischen Sachen, die ja eigentlich Anwendungen sind

selbst freistehende Anwendungen

die zufällig halt auch noch Internetrequests

machen

das ist die andere Seite und eine Weile lang hat man versucht

das alles, ja alles muss so eine Anwendung

sein, was ja aber auch nicht sinnvoll ist

so auf einen Zwischenschritt

zu gehen, dass du eigentlich statische

Informationen anzeigst, die aber trotzdem

irgendwie auf Events reagieren können und sich dann

trotzdem so ein bisschen zumindest verändern können.

Ist glaube ich einfach

der Kompromiss in der Mitte

und der deckt sicherlich da

super viele Use Cases ab und super viele

Sachen ab, die man eben

früher entweder so oder so machen musste

und deshalb

in die Mitte ist richtig.

Das Nash-Gleichgewicht ist immer in der Mitte.

Na, wie heißt es bei Alexander Kluge, glaube ich, in Gefahr und großer Not, es bringt der Mittelweg den Tod.

Ja, aber in der Mitte der Herde zu sein, ist der sicherste Ort, das hört man.

Genau, zu der letzten Rest-Episode, da gab es dann auch eine Erwähnung im Podlovers-Podcast,

wo es um die Entwicklung von so einer Podcast-Plattform geht, im Grunde, basierend auf WordPress und so einem Plugin.

und da wurde durchaus wahrgenommen dass wir irgendwie XML gel haben So was So was Habt ihr euch ger worden Ja

Es wurde sogar ein gewisses Verständnis dafür gezeigt, dass Entwickler vielleicht doch lieber JSON mögen

unter Umständen als XML.

Was hat dir denn gefehlt an der DjangoCon? Was müsste die DjangoCon mehr haben?

Schwer zu sagen.

und Jochen unterhalten sich über die Programmiersprache Python

Das ist ja Vor- und Nachteil.

Ich habe das auch sehr genossen, dass ich da nicht hinfahren musste,

weil ich konnte mich halt trotzdem um meine Kinder kümmern,

konnte trotzdem dann abends mit der Familie essen

und dann trotzdem abends noch die Talks machen.

Ob du es nicht genossen hättest, wenn du auch mal ausnahmsweise

ohne die Familie und ohne die Kinder irgendwie frei in den Ort runterbiegst.

Klar, hätte ich auch genossen,

wäre aber einfach schwieriger gewesen, das zu machen.

Ich glaube, in Zukunft wäre das sehr schön,

wenn solche Konferenzen so ein Hybridmodell hätten.

und Jochen unterhalten sich über die Programmiersprache Python

gibt, aber eigentlich, wenn man die Online-Konferenz

macht, dann braucht man keine DjangoCon

EU und keine DjangoCon

India und keine DjangoCon Amerika,

sondern es müsste eigentlich eine DjangoCon Worldwide geben

und dann ist die Sache

klar, du kannst nicht bei allen Talks dabei sein, aber

du kannst halt bei denen dabei sein, wo du dabei sein kannst.

Aber das ist

mehr Umbruch als

Also ich würde sagen,

das hat auch ein bisschen was familiäres, wenn man da hingehen kann,

kann die Leute wirklich treffen, wie

kleiner das ist, das familiäre ist das und je größer es wird,

desto anonymer wird das und das Problem, was wir gerade

schon beschrieben an diesen Online-Talks,

dass halt vor allen Dingen dieses Frontalunterrichtsthema,

dass irgendwie alle Leute einen Speaker

in einem Raum hängen und sich diese ganzen

Nebengespräche halt nicht entwickeln, sich diese ganze soziale

Interaktion irgendwie nicht so entwickelt, wie man sich das wünscht,

man sich nicht mal gemeinsam Kaffee trinkt,

irgendwelche zufälligen Bekanntschaften auf einem Gang

hat oder so. Und das ist ja auch das, wovon

irgendwie so eine Community lebt und so.

Und das ist halt virtuell,

ja, vielleicht ist sowas wie Gather Town

so ein bisschen repräsierbar,

aber ist halt doch

schon was ganz anderes.

Ja klar, aber du schließt halt auch manche Leute aus, die das nicht können oder nicht wollen

und die Leute sind auch ein wichtiger Teil der Community

die irgendwie mitnehmen und deshalb denke ich

es wird Mischlösungen geben in der Zukunft

und muss es auch geben. Okay, aber ich habe noch was ganz konkretes

was mir jetzt leider gefehlt hat an der Konferenz

und das waren die Lightning Talks. Es gab Lightning Talks

Oh ja, stimmt. Und die waren auch alle sehr gut

und sehr schön und es war wirklich cool, dass da die Leute sich

Ich kann es jedem nur empfehlen.

Das ist ein guter Einstieg. Fünf Minuten, das schafft jeder.

Die waren alle

pre-recorded, das heißt, man hat auch nicht den

Stress des Live-Daseins

gehabt. Ich kann es jedem nur empfehlen.

Aber die Auswahl war dieses Mal

nicht so groß.

Es waren alles technische Talks.

Es waren auch nur eine Handvoll.

Und die

waren nicht so promoted, wie sie bei einer

Konferenz wären. Also so ganz cool wie

bei euch beim Baumhaus, das hat Ihnen noch gefehlt.

Genau. Also ich habe einfach

in Heidelberg hat einen einen Talk gehalten, wie baue ich ein Baumhaus?

Fünf Minuten Lightning Talk.

Großartig, ja. Hatte überhaupt nichts mit der DjangoCon zu tun, aber war großartig.

Es ist so ein bisschen so ungefähr der einzige Talk, an den ich mich erinnern kann,

von der DjangoCon 2019 oder 2018 war es, ich weiß nicht mehr.

Einfach, weil es so etwas ganz anderes war und das gab es dieses Mal gar nicht.

und das fand ich ein bisschen schade,

dass es da nicht mehr

so ein bisschen drüber hinausging,

weil es war schon sehr fokussiert

auf Django, was ja

okay ist, aber bei den Lightning Talks darf man

durchaus, finde ich, auch so ein bisschen über die Stränge

schlagen und das hätte ich mir

mehr gewünscht.

Ja.

Das ist keine Kritik an irgendjemandem, sondern das ist eher

Kritik an jemandem, der nicht dabei war.

Schämt euch was, ihr hättet dabei sein sollen

und hättet coole Talks über abgefahrene Dinge.

halten können. Jeder hat ein Hobby und jeder kann das

fünf Minuten präsentieren. Das interessiert ganz viele Leute.

Meine Hobbys sind alle illegal.

Meine Hobbys sind Python und Django.

Deshalb bin ich schon

als Habt.

Ja.

Das ist ein Bereich.

Ja, stimmt. Das hat mich auch

gewundert, dass ich die Lightning-Stocks

schon vorbei hupsala.

Ja, waren zu wenige und waren auch

nicht divers genug, sagen wir mal so.

Ja, ansonsten so große, große Themen. Wir hatten jetzt so genau dieses ganze HTMLX. Das war auf jeden Fall ein großes Thema. Es gab viele Talks zu Datenbankgeschichten. Das fand ich auch voll gut.

Also da waren auch einige...

Der von Haki Benita, großartig.

Ja, Markus Holtermann auch.

Let's use another index.

Can we do better? You've been in this talk

long enough to know that yes, we can do better.

Ja, oder

auch der, wie macht man Migration eigentlich

ordentlich, wenn man ein Produktionssystem hat, das

vielleicht nicht so verträgt.

Das fand ich auch sehr gut.

Oder auch, was können wir denn machen,

ohne den Django ORM zu benutzen? Was ist denn, wenn wir

nur SQL benutzen wollen? Auch super.

Fand ich auch gut, weil

und das war auf jeden Fall auch ein großes Thema.

und

ja, dann, was hat man denn noch

an größeren, dann

GraphQL war halt auch

war halt auch ein großes Thema,

aber auch vor allen Dingen in Kombination, ein Talk

gab es, fand ich,

in Zusammenhang

mit Domain-Driven Design

und genau.

Sehr gut. Genau, aber da war

auch, das muss ich, ja, es ist halt

tatsächlich nicht so ganz einfach, das miteinander

zu verknüpfen. Da wäre auch nochmal

interessant gewesen, wie du das in dem

dritten Teil, der da nicht vorgekommen ist,

der ist ja in der Aufzeichnung.

Genau,

wie macht man das eigentlich, wenn man jetzt

erfüllt?

Genau, wenn man jetzt

irgendwie

Business-Logik hat, wo packt man die denn jetzt in Django

eigentlich hin, wenn

doch viele sagen, dass es gar nicht so gut

ist, das in die Models zu packen.

Server, Helpers, Services,

Helpers, Utils.

Jochen, da haben wir doch schon drüber gesprochen.

Wenn du das in die Models packst, ist das überhaupt nicht Solid.

Die sind überhaupt nicht mehr

Single Responsibility, die sind überhaupt nicht mehr

ersetzbar, die sind überhaupt nicht mehr...

Ja, ist das jetzt der klassische

Strafrecht? Fad Models gegen Sin Models.

Ist direkt verletzt.

Aber ja, das Problem ist halt

andererseits auch irgendwie nicht, weil das

andererseits ist... Das ist halt auch schon sehr praktisch.

Das ist auch richtig.

Aber da

Auf jeden Fall, ich kann darauf erinnern, weil ich auch, glaube ich, eben in dieser

Domain-Driven-Design-Plus-GraphQL-Geschichte

hatte ich auch, oder vielleicht war es ein anderer,

vielleicht kriege ich es nochmal zusammen,

hatte ich auch jemanden dann so, ja, wie macht man das eigentlich mit Django?

Und dann, okay, irgendwie geht es

nicht so richtig gut, weil

wenn man es in die Models schreibt,

dann macht man da etwas,

was man eigentlich nicht tun sollte.

Aber anders geht es irgendwie auch nicht gut.

Ja, das ist einfach so eine ungelöste

Frage.

Da ist auf jeden Fall noch eine Baustelle

und ich fand, man hat diesmal auch gemerkt, dass

irgendeine ordentliche Menge,

ordentlichen Anteil der Leute tut es halt weh,

aber es gibt irgendwie keine Lösung,

jedenfalls keine Best Practice, die man einfach so verwenden könnte.

Die Graphs heilen statt in der Modus Phi.

Das ist so ein bisschen

der letzte Punkt, den ich bringen möchte,

der letzte Kritikpunkt, den ich bringen möchte.

Die

Django-Community ist großartig,

die ist ganz große Klasse und es gab

quasi nichts, wo

und Jochen unterhalten sich über die Programmiersprache Python

und Jochen unterhalten sich über die Programmiersprache Python

Django wurde auch auf der Konferenz mehrmals als

the boring old framework bezeichnet

und

das ist was, was man Django und der Community

vorwerfen kann. Die Innovation

kommt aus anderen Sachen.

Die innovativen Sachen kommen aus der

Ruby-Welt, die viel kleiner ist.

Aus der Rails-Welt.

Die innovativen Sachen kommen aus der JavaScript-Welt,

die halt

tun müssen, weil sie nicht anders können.

Aber

warum haben wir denn nicht

so viel Innovation in der Django und in der Python-Welt?

Warum beäugen wir die Sachen nicht auch mal viel skeptischer und sagen,

ja, das ist ja schon ganz gut, aber es könnte noch viel cooler sein?

So ein bisschen sieht man das ja mit dem HTMLX und mit dem Fullstack without writing JavaScript.

Aber das sind immer nur Sachen, die, wir zeigen jetzt mal eine Lösung, die jemand gemacht hat.

und es gab wenig so, lasst uns doch mal Folgendes machen oder lasst uns mal ausprobieren

oder hier ist was, was ihr noch nie gesehen habt, weil es das noch nicht gibt irgendwo anders.

Und ich hatte das Gefühl, oder ich habe schon länger das Gefühl,

dass die Django-Community eben so ein kleines bisschen weniger,

weniger, ja, es ist schwer das in Worte zu fassen ohne zu negativ zu sein.

Das ist einfach so gut, dass man einfach den Nied nicht hat,

sich so schnell in eine andere Richtung zu bringen.

Ja, vielleicht.

Ja, das wäre natürlich gut.

Ja, aber das ist ja so ein lokales Maximum.

Vielleicht ist das ja so.

Vielleicht ist ja Django so ein lokales Maximum,

wo es eben sehr schwer ist,

sich rauszuoptimieren, weil

jeder Schritt nach draußen erstmal ein Schritt nach unten ist.

Vielleicht ist es das, aber ich würde es mir halt wünschen.

Ich habe in der Rails-Welt

total coole Sachen gesehen.

Hotwire kommt, glaube ich, aus der Rails-Welt.

Es wurde mehrmals darauf verwiesen,

wie Rails das macht, während Konferenztalks.

Transparenz Talks. Und das ist schade, weil Django sollte der Vorreiter sein. Django ist nicht der Vorreiter. Django ist die beste Lösung, aber nicht der Vorreiter.

Ja, das ist das, was man auf der anderen Seite ist. Django damit natürlich auch so ein bisschen wie Python selber, das zweitbeste Framework.

Und es ist der absolut beste Platz, wo man sein kann, der zweitbeste zu sein, weil der erste wird immer angegriffen und zerlegt.

Mach doch mal, Johannes, sei doch mal innovativ. Bring doch mal was Neues raus.

Ja, ich versuch's ja.

Ich versuch's ja, aber

erstmal muss ich Geld verdienen.

Ja, da kommt wieder her

der Greed und so.

Ja, ja, ja.

Diese Sache mit

Anvil, Jochen, die ist ja großartig.

Anvil ist ja eine ganz

verrückte, abgefahrene Sache.

Was ist Anvil? Ein Schmiede-Amboss

für... Ja, das ist quasi

JavaScript aus Python.

Die haben dann

Compiler für

JavaScript, der JavaScript erzeugt.

Das heißt, du kannst dein System komplett in Python

schreiben und hast dann aber

trotzdem hinterher eine JavaScript-Webseite.

Großartig.

Großartige Idee.

Funktioniert auch, ja. Kann man

jetzt schon benutzen. Er hat auch eine Live-Demo

gemacht, die dann sofort live war.

Auch sehr großartig. Weiß nicht,

ob das Ding noch live ist. Müsste man mal gucken.

Aber

Ja, aber es geht auch, das ist dann schon nicht mehr Django.

Anvil ist, glaube ich, relativ wenig Django.

Ja, ja, ja. Genau.

Aber vielleicht ist das ja genau das Indiz dafür, dass das aus dem lokalen Maximum da raus...

Ich glaube auch, es ist einfach schwer, du kannst auch Django nicht mehr so leicht verändern.

Du kannst ja nicht einfach sagen, wir bauen ja Django so um, dass es sowas wie Anvil ist.

Ja, das würde halt...

Das ist einfach so viel Arbeit.

Das ist so, dass Johannes eben gesagt hat, dass wir Module daraus machen.

Ja, das wäre möglicherweise ein Grund, das zu tun.

wenn man sagt, also ich meine, es fängt ja schon bei sowas an wie

Django Admin, haben ja auch schon viele Leute gesagt

aber es wäre doch auch cooler, wenn das irgendwie

ein bisschen reaktiver wäre und wenn man da irgendwie so ein paar

Modellere, es geht halt nicht, weil Django Admin

neu schreiben könnte.

Ja, aber es wird halt

auch da wird dann immer gesagt, so ja, Django Admin neu schreiben

vergiss es einfach, das kriegst du ja nicht mehr hin.

Das ist nicht zu machen.

Es ist halt das lokale

Maximum, ja, du kannst ein Django Admin schon neu schreiben

aber der wird erstmal eine ganze Weile lang

sehr viel schlechter sein als der Django Admin, den du jetzt hast.

und dann ist die Motivation

schon so ein bisschen so, ach ja,

dann nehme ich halt wieder ab.

Und das vielleicht, ja,

vielleicht ist das der richtige Weg, das zu

modularisieren.

Ich meine, ich würde da sagen

Flask, um da nochmal,

weil da gab es noch News zu.

Das ist ja der andere

Ansatz, das ist ja sozusagen,

alles ist modular und du

bastelst dir das halt selber zusammen.

Und es gibt auch keine Standardmodule, sondern du musst

dir selber Standardmodule suchen.

Da gab es jetzt

eine neue Release, Flask 2.0

und ich hatte ja mal so

irgendwie, Cass behauptet,

das wird nie async,

weil ich hatte das

noch so in Erinnerung, dass

da ja auch mal sehr, sehr stark geachtet wurde

auf Abwechskompatibilität und möglichst, also

gerade, na, wie heißt der noch?

Dings da,

Armin, der

hält das ja total, dass irgendwie

der hätte ja am liebsten

Abwechskompatibilität bis

weiß ich nicht, eigentlich bis ganz weit

bis Jahrzehnte zurück,

was ich auch verstehen kann in gewisser Weise.

Ja, hat auch Vorteile.

Aber auf der anderen Seite würde das eben bedeuten,

sowas wie Async Await, das wird dann halt nie gehen.

Und Flask ist halt auch direkt

als der erste Frame, das sich direkt auf

WSGI aufsetzt, was halt

ein Problem ist, weil

naja, das ist halt nicht Async

und das kriegst du auch nicht dazu.

Und Django hat es da sogar ein bisschen einfacher, weil Django ist

nämlich älter als WSGI

und WSGI ist schon irgendwie da so

dran gebastelt

und jetzt kann man halt auch noch was anderes ranbasteln.

Man hat auf jeden Fall eine Stelle, an der man was ranbasteln kann,

die bei Flask so nicht da ist.

Deswegen dachte ich so, naja, also das Flask

asyncfähig wird nicht passieren.

Aber es ist tatsächlich passiert, jetzt mit 2.0

geht das und sie haben auch

eine Menge, eben sie haben halt

die Abwärtskompetitivität

beendet,

jedenfalls.

Aufgegeben.

gleichzeitig aufgegeben.

Aber in einer Major-Release kann man das auch machen.

Aber dann hätten sie es geschickt,

weil sie hätten das Flask 3 nennen müssen.

Weil das ist doch das, wo in Python immer die

Kompetenzen zerbrechen.

Genau.

Das braucht jetzt mindestens Python 3.6.

Und genau, man hat jetzt auch

Async-Geschichten da drin und SGI.

Und es gab da immer so ein

Ding dafür, Quad. Das gibt es auch immer noch.

Ja, da hatte ich

ist übrigens auch her die Idee

aus einer Podcast-Episode mit

dem jetzigen Mentainer von

Flask,

dass man doch,

weil der sagte so, ja, irgendwo, wozu braucht man das denn?

Das ist doch irgendwie, in der Flask-Welt

machen wir das schon seit jeher

mit Eventlets und

G-Vent.

Okay.

Und das geht?

Und das geht? Und dann habe ich es probiert und ja, es geht.

Tatsächlich, das kann man machen. Und das ist halt

möglicherweise auch tatsächlich eine einfachere Lösung für

dieses File-Surf-Problem

einfach einen G-Event-Worker

nimmt, der dann halt die Standard-Bibliothek

monkeypatcht und alle synchronen

I.O. Calls ersetzt durch

nicht-blockierende und

das funktioniert dann einfach magisch.

Über monkeypatching ist halt so ein bisschen gefährlich,

aber wenn das nur für die Worker macht, die die

Files ausliefern, ist es vielleicht auch nicht so schlimm.

Ja, aber

und was man da auch machen kann,

ist, man kann das gleichzeitig machen. Man macht halt

G-Event irgendwie auf dem

Main-Thread und

packt halt, und das macht Django ja auch, und zwar auch aus dem Grund, um G-Event und Eventlets

nicht zu brechen, den ganzen, die lässt die Event-Gloob in einem

anderen Thread laufen. Und dann alles, was I think await macht, läuft dann halt in einem anderen Thread

und trotzdem funktioniert diese ganze Eventlet-G-Event-Geschichte

weiterhin. Also interessant wusste ich alles gar nicht,

aber auf der anderen Seite sagten die auch, ja, also tatsächlich, um kompatibel zu sein

zu moderneren Bibliotheken und so, wo man await-Syntax

als ein erweitertes Syntax verwenden

muss dann, weil die nur noch das können.

Ja, bleibt uns wohl auch nichts anderes übrig,

müssen wir das auch irgendwie können, weil

du kannst halt in einem synchronen Funktionsaufruf

nicht irgendwas erweiten, das geht einfach nicht.

Ja, und deswegen ist es auch

in Flask jetzt drin und ja, das wird

also Flask immer noch weiterentwickelt

voll gut. Ich weiß nicht so recht,

ich habe mit dieser ganzen

Welt nicht so wahnsinnig viel zu tun,

weil ich jetzt ehrlich gesagt auch keine Flask-Projekte

oder sowas habe oder Dinge, wo ich was

schreibe. Ich benutze dann immer,

ich habe noch ein paar Sachen, die Fast

API sind und das finde ich auch sehr nett und ich glaube,

das wäre so ähnlich wie Fast quasi.

Also auch

in der Hinsicht, dass es halt nicht

dir vorgibt, was, also

es ist halt nicht integriert, sondern

es geht gar nichts mit, sondern du musst alles

dann halt selber

konfigurieren und zusammenstecken.

Ja, aber es ist halt, war halt

nativ direkt Async und macht alles über Type

Annotation und so.

Ja, insofern,

Aber ja, es ist schön, dass das

Pflaster halt auch jetzt einen neuen Release hat.

Ja, sehr cool. Wenn wir jetzt schon bei den ganzen

Webprogrammings sind, liebt Pyramid eigentlich noch?

Ja, da gab es ja auch,

weiß nicht, ist jetzt ein paar Monate her, glaube ich, aber

gab es auch einen neuen Release.

Ja, habe ich allerdings auch nichts

mehr zu tun, keine Ahnung, kann ich nicht mehr drüber erzählen.

Aber es ist,

in unserem Bekanntenkreis gibt es Leute, die

das ganz stark

ja, in der

Pi-DDF-Politik.

Kommt immer wieder was auf.

Ja, genau.

Ja, ich finde, dann haben wir einen kleinen Überblick

über die Jungle-Kurve tatsächlich jetzt gegeben.

Guckt euch die ganzen Videos an,

wenn sie alle draußen sind. Das ist bestimmt nochmal

interessant.

Ja, mache ich auf jeden Fall.

Genau.

Wollen wir noch was vergessen? Habt ihr noch was dazu?

Wollen wir noch Pics machen?

Oh ja, können wir machen.

Jochen, was war dein Pick dieses Mal?

Ich habe

dieses Mal keinen Pick mitgebracht.

Na gut. Doch, doch, ich habe einen Pick.

DevDocs.

DevDocs, ah, ja, achso.

Tja, die hatten wir leider schon in der letzten

Episode. Hattet ihr schon? Okay, gut.

Dann wiederhole ich das, dann bekräftige ich das.

Jeder sollte sich das sofort auf seinen Rechner

runterladen und für alles benutzen.

Ich fand es ja sehr schön, ich habe das

jetzt kürzlich gefunden und habe dann natürlich

direkt alle Dokumentationen runtergeladen, die es runtergeladen hat.

Vielleicht, weil du unseren Podcast gehört hast?

Natürlich.

Ich habe es nachgeholt, quasi.

Was mich sehr belustigt hat war, ich habe diese Dokumentation runtergeladen in den Offline-Modus

und die Django-Dokumentation sind glaube ich 6 MB

und die Python-Dokumentation sind etwas über 9 MB

und die Dokumentation für die DOM sind 64 MB

Also 6,5 Pythons muss man komplett kennen, um die DOM benutzen zu dürfen

Fand ich erschreckend.

Erschreckend-belüstigend.

Ja,

damit ihr nochmal wisst, was das ist, man kann

sich halt tatsächlich auf einer einzigen Seite

die Dokumentation von verschiedensten Frameworks

und Sprachen irgendwie auf seine

Favorites legen und hat dann direkt einen Zugriff

auf das Buch.

Jochen, was ist deine

Faktion?

Was ich tatsächlich sehr schick fand,

habe ich jetzt, meine ich auch,

habe ich das,

AIO SQL ist so eine ganz

eigene Art, wie man

jetzt nochmal, also ich dachte dran,

musste dran denken, ich weiß nicht mehr, wie ich drauf gekommen bin,

als ich den Talk

zu RAW, SQL und Django

gehört hatte und da hatte ich so,

ja, also man kann halt

auch sich

so als alternatives Konzept zu

dem klassischen ORMs, wie man so hat,

einfach alles über

Statements definieren und dann dieses

Statements halt so ein bisschen parametrisierbar machen

und das ist halt, das ist auch alles Async und so

und das ist

auch eine sehr nette Geschichte, kann man sich mal angucken.

Also direkt erst so GEL-Statements aus Python.

Ja, ganz, ganz anderer Ansatz als

der OAM-Ansatz, den man so kennt, aber auch

irgendwie interessant.

Und, ah, eine Geschichte,

das fand ich sehr verwunderlich,

ich dachte jetzt eigentlich, ich fange jetzt mal mit so einem Stream an,

ich habe ja auch nirgendwo gesagt, dass ich das tue oder so,

außer euch jetzt.

In dem Twitch-Stream waren eigentlich relativ sofort irgendwie Leute drin und da muss ich mich auch erstmal dran gewöhnen.

Und da hat jemand gesagt, also als ich da irgendwie mit Git die ganze Zeit so rumgemurkst habe auf der Kommandozeile, nimm doch einfach Tick.

So, das gebe ich jetzt einfach mal so weiter. Ich habe es noch nicht benutzt, ich weiß gar nicht, ob das gut ist, aber das ist wohl ein Endcursus-Client für Git, der vielleicht ein bisschen besser ist.

Aha, interessant. Muss man sich mal angucken.

Ja, ich habe auch noch einen kleinen Pick. Ich würde

diesmal eine Business-Anwendung nehmen

und zwar Lifetimes, das gehört auf PyPy

und wenn man da quasi

Bestelldaten von Kunden reinpipet,

dann bekommt man quasi die

Absprungrate, die Turnrate ausgerechnet.

Das ist tatsächlich

gar nicht so schlecht, wenn man so Sales machen möchte

oder so.

Das habe ich so entdeckt und fand ich gut.

Das funktioniert echt gut für gute Businesses.

Kann man wahrscheinlich auch verkaufen, also an Endkunden

oder so, die wollen das alle haben.

die Library, dass du einfach nur die Library

verkaufst. Ja, du musst ja natürlich schon

rechnen auf die Churnrate.

Durch die Daten der Kundenpipen, aber ja.

Ja klar,

das als Service anzubieten,

ist eine coole Idee.

Ja, vielen Dank, dass ihr wieder eingeschaltet habt,

dass ihr zugehört habt. Bleibt uns gewogen, heute

nachts, morgens, mittags, abends,

am Wochenende und seit der Woche beim Schwimmen gehen.

Ja,

schönen Tag, schönen Zeit.

Bis dann. Tschüss.

Das hoffe ich nicht so. Tschüss.

Spät, ja. Tschüss!

Ja, diesmal lassen wir uns nicht so viel Zeit.

Bis dann, tschüss!