WEBVTT

00:00:00.000 --> 00:00:07.960
Hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, Episode 64, heute nochmal von der DjangoCon, eine Sonderausgabe.

00:00:08.220 --> 00:00:09.400
Ja, zweite Live-Episode.

00:00:09.660 --> 00:00:11.040
Ja, freut mich wieder da zu sein. Hey Jochen.

00:00:11.200 --> 00:00:12.000
Ja, hallo Dominik.

00:00:12.560 --> 00:00:13.040
Hallo Johannes.

00:00:13.380 --> 00:00:13.860
Hallo zusammen.

00:00:14.220 --> 00:00:15.300
Und hey Ronny, heute alles ganz.

00:00:15.300 --> 00:00:15.560
Hallo Ronny.

00:00:15.760 --> 00:00:16.680
Hi, schön hier zu sein.

00:00:16.900 --> 00:00:17.740
Ja, schön, dass du da bist.

00:00:18.300 --> 00:00:18.540
Ja.

00:00:18.960 --> 00:00:22.780
Ja, wir wollten noch ein bisschen wieder von der DjangoCon erzählen, auf der wir gerade sind in Dublin.

00:00:23.460 --> 00:00:23.600
Ja.

00:00:23.600 --> 00:00:27.540
Das hatten wir gestern schon getan, die Folge ist tatsächlich auch pünktlich online gegangen, danke.

00:00:27.620 --> 00:00:28.560
Ja, fast pünktlich.

00:00:28.700 --> 00:00:37.140
So nach dem Pappbesuch ist das immer so ein bisschen schwieriger, also das Hotelzimmer wiederzufinden und dann auch noch eine Episode online zu stellen.

00:00:37.240 --> 00:00:39.440
Insofern, das ging nur so irgendwie unterschiedlich.

00:00:39.440 --> 00:00:43.520
Ich habe noch mein Sweater vermisst und dann habe ich mein Sweater gefunden. Das war wahnsinnig gut.

00:00:43.840 --> 00:00:46.540
Dann hatte ich aber meine Hotelzimmer-Eintrittskarte nicht.

00:00:48.900 --> 00:00:50.620
Am ersten Tag einmal alles mitgebracht.

00:00:50.620 --> 00:00:52.400
Ja, und wenn man das Zimmer wechselt, ist auch schlecht.

00:00:53.140 --> 00:00:53.780
Ja, genau.

00:00:53.780 --> 00:00:54.680
Alles anders.

00:00:55.360 --> 00:00:57.480
Ja, aber es hat irgendwie alles geklappt.

00:00:58.160 --> 00:00:58.780
Es ist immer noch da.

00:00:59.020 --> 00:01:02.660
Wir haben ja gestern bis zum Mittagsscheit erzählt, was so war.

00:01:02.740 --> 00:01:04.460
Was war denn gestern noch Interessantes?

00:01:04.680 --> 00:01:07.040
Oh, jetzt müssen wir zurück scrollen.

00:01:07.040 --> 00:01:08.620
Tan, es tut mir leid, du warst schon bei heute.

00:01:09.120 --> 00:01:12.060
Ich glaube, das Erste, was wir tatsächlich gesehen haben,

00:01:12.300 --> 00:01:14.400
oder zumindest teilweise gesehen haben, war HTMX.

00:01:15.100 --> 00:01:18.340
Ja, da kamen wir gerade nach dem Podcast noch so rein.

00:01:18.340 --> 00:01:18.780
Ja.

00:01:19.940 --> 00:01:24.420
Und ja, war solide, aber auch nichts Überraschendes oder so.

00:01:24.420 --> 00:01:28.600
Ich weiß nicht genau, ob jemand von euch da irgendwas Neues gesehen hat oder Interessantes.

00:01:29.100 --> 00:01:30.820
Ja, nachdem wir die erste Hälfte verpasst haben.

00:01:30.940 --> 00:01:32.920
Ja, stimmt, da kann man auch nicht so wirklich was zu sagen.

00:01:33.000 --> 00:01:35.840
Und ich war kurz im Gym- und Spa-Bereich.

00:01:36.920 --> 00:01:39.280
Also ich habe es gesehen und ich würde mich da anschließen.

00:01:39.440 --> 00:01:42.980
Also ich fand es solide, wenn man sich nicht damit beschäftigt hat, auf jeden Fall super hilfreich.

00:01:43.520 --> 00:01:46.100
Wenn man sich damit beschäftigt hat, glaube ich, nicht allzu viele neue Dinge.

00:01:47.140 --> 00:01:48.700
Kurzes Sidenote, bevor du runtergehst.

00:01:49.320 --> 00:01:51.460
Den Talk mittags von Sebastian

00:01:51.460 --> 00:01:53.540
hattet ihr den besprochen, weil der ist ja auch aus der Region

00:01:53.540 --> 00:01:55.420
bei uns, aus Köln.

00:01:56.480 --> 00:01:57.380
Achso, den hatten wir nicht besprochen.

00:01:57.640 --> 00:01:58.400
Nee, den hatten wir nicht besprochen.

00:01:58.540 --> 00:02:03.560
Genau, da freue ich mich

00:02:03.560 --> 00:02:05.320
ein bisschen, dass es geklappt hat, weil er hatte mich

00:02:05.320 --> 00:02:07.440
noch gefragt, weil ich

00:02:07.440 --> 00:02:09.120
ja schon mal letztes Mal bei der DjangoCon

00:02:09.120 --> 00:02:11.020
mich beworben hatte und

00:02:11.020 --> 00:02:13.840
genommen wurde, wie es

00:02:13.840 --> 00:02:14.800
denn aussieht und

00:02:14.800 --> 00:02:18.600
Und ob er meint, dass die Idee, ob ich meine, dass die Idee fliegt.

00:02:18.920 --> 00:02:21.140
Und genau, fand das eine coole Sache.

00:02:22.180 --> 00:02:24.820
Ich fand den Vortrag tatsächlich noch cooler.

00:02:25.020 --> 00:02:28.020
Also für mich, ich habe mehr mitgenommen, als ich jetzt persönlich erwartet hätte noch.

00:02:28.300 --> 00:02:29.840
Vielleicht erst mal kurz, worum ging es denn überhaupt?

00:02:29.840 --> 00:02:30.720
Sorry, natürlich.

00:02:31.200 --> 00:02:33.740
Genau, also der hieß The Fine Print in Jungle Release Notes.

00:02:33.740 --> 00:02:36.500
Und es ging um neue Features in den neuen Versionen.

00:02:36.660 --> 00:02:39.680
Also im Endeffekt, der Aufhänger ist, lies die Release Notes,

00:02:39.820 --> 00:02:43.160
abgesehen von dem einen mega krassen, geilen Feature,

00:02:43.300 --> 00:02:44.920
weil man halt

00:02:44.920 --> 00:02:46.920
da sehr viele Dinge immer kommt, die einem das Leben

00:02:46.920 --> 00:02:48.660
leichter machen, wo man Coach sparen kann,

00:02:48.800 --> 00:02:50.900
irgendwelche fiesen Hex-Walkarounds ausbauen

00:02:50.900 --> 00:02:52.620
kann und hat sich dann dadurch die

00:02:52.620 --> 00:02:54.680
5.x-Version durchgehangelt.

00:02:54.800 --> 00:02:56.520
Da waren tatsächlich Sachen dabei, die ich noch nicht gesehen hatte.

00:02:56.920 --> 00:02:58.800
Ja, der Carlton hatte das ja vorhin auch

00:02:58.800 --> 00:03:00.780
so erwähnt, dass er auf keinen Fall wieder zu 4.2

00:03:00.780 --> 00:03:02.780
zurückgehen würde, wenn sich das

00:03:02.780 --> 00:03:03.980
vermeiden lässt. Genau.

00:03:04.520 --> 00:03:06.760
Und genau, freut mich sehr, weil der ist jetzt auch bei

00:03:06.760 --> 00:03:08.720
auch ein Regular beim

00:03:08.720 --> 00:03:11.200
Colone-Meeting, Jungle Colone.

00:03:11.420 --> 00:03:12.840
Was hat der denn alles Schönes

00:03:12.840 --> 00:03:14.540
erzählt. Vielleicht kannst du so ein paar

00:03:14.540 --> 00:03:17.040
Da fragst du mich Sachen, es ist immer so schwer, sich in Details

00:03:17.040 --> 00:03:18.360
zu erinnern, wenn man sich am Tag

00:03:18.360 --> 00:03:20.720
Wenn man nicht so Notizen hat wie der Johannes hier vor

00:03:20.720 --> 00:03:22.860
Ja, ich war aber nicht in dem Talk, deshalb habe ich keine

00:03:22.860 --> 00:03:24.080
Notizen zu dem Vortrag

00:03:24.080 --> 00:03:27.080
Es ging um

00:03:27.080 --> 00:03:29.020
diverse Verbesserungen im Admin

00:03:29.020 --> 00:03:31.080
Es ging um Custom Error

00:03:31.080 --> 00:03:32.860
Messages, die man jetzt bei Constraints

00:03:32.860 --> 00:03:35.180
hinterlegen kann, die auch übersetzbar sind

00:03:35.180 --> 00:03:36.840
Und es waren

00:03:36.840 --> 00:03:38.700
im Endeffekt alles relativ kleine Dinge, aber

00:03:38.700 --> 00:03:40.680
immer auf Use Cases bezogen, wie sie es halt

00:03:40.680 --> 00:03:42.680
vorher gelöst haben und nachher. Also es war ein ganz

00:03:42.680 --> 00:04:06.160
Also selbst wenn man jetzt sagt, oh, diesen Case hatte ich noch nie, ich muss noch nie eine Custom Unique Constraint definieren, dann war halt immer so, ah, aber das sieht tatsächlich nützlich aus, weil diesen Fall kann ich mir nicht vorstellen, weil man ihn halt präsentiert bekommen. Also wie gesagt, das war deutlich, auch für mich, deutlich nützlicher, als ich es mir eigentlich vorgestellt hatte, weil ich dachte eigentlich, ich weiß schon alles, aber tatsächlich habe ich scheinbar das Frontend auch nicht so genau gelesen.

00:04:06.460 --> 00:04:08.160
Ja, dann hat er es gut gelöst.

00:04:08.560 --> 00:04:11.460
Das ist aber auch wirklich so eine Sache, dass in vielen Frameworks

00:04:11.460 --> 00:04:13.120
hat man ja diesen Death by a Thousand

00:04:13.120 --> 00:04:14.960
Papercuts. Das sind einfach

00:04:14.960 --> 00:04:17.080
viele, viele kleine Sachen, die gut

00:04:17.080 --> 00:04:18.940
oder nicht so gut sind und

00:04:18.940 --> 00:04:21.160
ich glaube, dass das tatsächlich eine der Stärken von Django

00:04:21.160 --> 00:04:23.240
ist, dass die halt auch an diesen Kleinigkeiten arbeiten

00:04:23.240 --> 00:04:25.280
und dann auch sagen, wir haben an diesen Kleinigkeiten

00:04:25.280 --> 00:04:27.140
gearbeitet und dass die sich dann so langsam mit

00:04:27.140 --> 00:04:28.880
der Zeit auflösen.

00:04:29.340 --> 00:04:31.200
Ich kann ja auch nochmal in diesem

00:04:31.200 --> 00:04:33.200
Kontext erwähnen, dass ich jetzt in 5.2 meine erste

00:04:33.200 --> 00:04:34.560
Django-Contribution drin habe.

00:04:34.700 --> 00:04:36.680
Oh, herzlichen Glückwunsch.

00:04:37.020 --> 00:04:38.600
Was bringst du uns denn?

00:04:38.660 --> 00:04:41.600
Ich habe für, im Zuge von meinem Pony Express Package,

00:04:41.640 --> 00:04:43.920
habe ich nach der Django Con Vigo einen Vortrag darüber gehalten.

00:04:44.020 --> 00:04:47.460
Das ist ein Package, was E-Mailing ein bisschen vereinfacht.

00:04:47.560 --> 00:04:51.600
Also wirklich die programmatische Erstellung und Testen von E-Mails,

00:04:51.720 --> 00:04:53.800
was ich relativ verbose finde,

00:04:53.900 --> 00:04:56.060
wenn man das mit den gegebenen Django Tools macht.

00:04:56.720 --> 00:05:01.260
Und fürs Testing, eine E-Mail hat ja nicht nur Text,

00:05:01.260 --> 00:05:05.140
sondern die hat ja verschiedene Text, also Inhalte.

00:05:05.240 --> 00:05:07.140
Also die kann theoretisch Medieninhalte haben.

00:05:07.500 --> 00:05:09.320
Es gibt den HTML-Inhalt und den Plaintext-Inhalt.

00:05:09.360 --> 00:05:12.200
Die sind, glaube ich, die relevantesten für die meisten modernen E-Mail-Clients.

00:05:12.960 --> 00:05:17.320
Und man musste im Endeffekt wirklich manuell sich durch ein multidimensionales Dictionary

00:05:17.320 --> 00:05:19.940
in den E-Mail-Alternatives durchgraben, wenn man das testen möchte.

00:05:20.440 --> 00:05:23.120
Dafür haben wir in dem Package für die Testsuit einen Wrapper geschrieben.

00:05:23.380 --> 00:05:26.500
Also die Testsuit nicht fürs Package, sondern für die E-Mail-Klassen,

00:05:26.560 --> 00:05:27.820
die man produziert mit dem Package.

00:05:28.640 --> 00:05:31.900
Und habe dann vorgeschlagen, ob das nicht ein relativer No-Brainer wäre,

00:05:31.900 --> 00:05:34.900
wenn man sowas auch irgendwie den E-Mail-Alternatives geben könnte.

00:05:35.240 --> 00:05:44.520
Das ist quasi alle, also diese, wie nennt man das, dieses Text-slash-JavaScript-Script-slash-irgendwas,

00:05:44.620 --> 00:05:46.380
diese, ich komme gerade nicht drauf, Name-Types?

00:05:46.420 --> 00:05:47.360
Diese Trainer-Types.

00:05:48.100 --> 00:05:49.120
Content-Types, genau.

00:05:49.200 --> 00:05:49.940
Ja, ach so, Content-Types.

00:05:49.960 --> 00:05:53.680
Ja, genau, Content-Types, dass man quasi alles, was mit Text-slash anfängt und was man hinzugefügt,

00:05:53.680 --> 00:05:57.800
was in 99% der Fälle wahrscheinlich immer nur Plain und HTML sein wird,

00:05:58.200 --> 00:06:02.320
trotzdem, dass man das dann aus dem Objekt zurückbekommt und dann halt im Test sehr einfach darauf ersorgen kann,

00:06:02.400 --> 00:06:05.900
ohne halt sich durch irgendwelche nicht dokumentierten APIs durchzugraben.

00:06:06.840 --> 00:06:09.100
Und genau, das ging auch tatsächlich relativ gut durch.

00:06:09.220 --> 00:06:12.860
Ich habe dann nochmal was anderes probiert nach meinem Erfolgserlebnis

00:06:12.860 --> 00:06:16.400
und habe dann genau gemerkt, was Carlton heute in seinem Vortrag, ich greife vor,

00:06:16.700 --> 00:06:21.280
aber was er sagt, kann ich nachher nochmal meine persönliche Erfahrung dazu spiegeln.

00:06:22.560 --> 00:06:23.820
Ja, da werden wir auf jeden Fall gleich nochmal eingehen.

00:06:23.880 --> 00:06:26.260
Das ist doch das Thema von gestern, was wir dann, glaube ich, nochmal ein bisschen aufmachen,

00:06:26.260 --> 00:06:29.300
wo es umgeht, wie man denn partizipieren kann an Django.

00:06:30.160 --> 00:06:32.120
Aber vielleicht machen wir chronologisch weiter mit den Talks.

00:06:32.180 --> 00:06:33.620
das ist ja gleich mal echt so eine blöde Idee.

00:06:34.000 --> 00:06:35.900
Ja, der nächste war Solving a Python Mystery.

00:06:36.520 --> 00:06:38.100
Ah ja. Oder wart ihr bei jemandem bei dem

00:06:38.100 --> 00:06:39.840
Quality-Workshop? Den da

00:06:39.840 --> 00:06:42.200
war ich auch nicht drin. Nee, leider nicht.

00:06:42.680 --> 00:06:44.140
Wollte ich zwar auch irgendwie, aber irgendwie

00:06:44.140 --> 00:06:46.320
hat es nicht geklappt.

00:06:46.980 --> 00:06:48.180
Genau, Solving a Python Mystery, der war

00:06:48.180 --> 00:06:49.660
großartig. Aber der war gut, der war sehr gut.

00:06:50.060 --> 00:06:51.920
Insofern ist er jetzt nicht so traurig. Nicht so, dass ich den jetzt

00:06:51.920 --> 00:06:54.160
anwenden könnte, aber einfach mal

00:06:54.160 --> 00:06:55.620
mit SJS überall reingucken

00:06:55.620 --> 00:06:57.920
und schauen, was da für Dateien

00:06:57.920 --> 00:06:58.560
offen sind und so.

00:06:59.620 --> 00:07:01.980
Genau, da ging es hauptsächlich um so

00:07:01.980 --> 00:07:04.540
Dinge, die man halt, also was ist, wenn man

00:07:04.540 --> 00:07:06.560
ein Produktionssystem hat, wo man nicht so gut drauf gucken kann

00:07:06.560 --> 00:07:08.000
und man hat bloß halt

00:07:08.000 --> 00:07:10.600
vielleicht Log-Files oder man kann nur extern drauf gucken,

00:07:10.680 --> 00:07:12.340
man kommt nicht in die Prozesse rein. Ja, oder hat man

00:07:12.340 --> 00:07:14.240
eine eingeschränkte Shell drauf, sowas? Ja.

00:07:14.700 --> 00:07:16.520
Aber man kann halt, ja, also zum Beispiel

00:07:16.520 --> 00:07:18.480
man hat einen Docker-Container, wie kommt man an das Environment?

00:07:19.700 --> 00:07:20.200
Halt über das

00:07:20.200 --> 00:07:22.240
Proc-File-System kommt man da halt dann ran

00:07:22.240 --> 00:07:24.400
und dann hat man die ganzen

00:07:24.400 --> 00:07:26.520
Credentials, die man so braucht, um halt in die anderen Sachen

00:07:26.520 --> 00:07:27.640
reingucken zu können

00:07:27.640 --> 00:07:30.480
und dann kann man

00:07:30.480 --> 00:07:32.320
viel mit S-Trace machen. Und ja, das

00:07:32.320 --> 00:07:33.340
mache ich auch sehr gern.

00:07:35.200 --> 00:07:36.480
Und naja,

00:07:36.640 --> 00:07:38.340
es gibt halt noch so ein paar andere Sachen, die man halt auch

00:07:38.340 --> 00:07:40.200
sich angucken muss. So wie viel I.O.

00:07:40.500 --> 00:07:42.400
Operationen pro Sekunde gibt es denn eigentlich auf der

00:07:42.400 --> 00:07:44.360
Maschine? Was macht die denn? Was schreibt die?

00:07:44.480 --> 00:07:46.100
Was lief die denn so? Und

00:07:46.100 --> 00:07:48.160
er hatte, ich glaube, das erste Beispiel, was er hatte, war irgendwie

00:07:48.160 --> 00:07:50.080
ein Kafka, was irgendwie

00:07:50.080 --> 00:07:52.180
25 Messages pro Sekunde

00:07:52.180 --> 00:07:53.980
gemacht hat oder so. Und alle waren so halbwegs zufrieden.

00:07:54.200 --> 00:07:56.280
Das ist übrigens auch etwas, was ich immer wieder sehe bei Kunden oder so,

00:07:56.340 --> 00:07:58.080
dass sie halt mit Dingen zufrieden sind und man

00:07:58.080 --> 00:08:00.040
sagt, Moment, das kann nicht sein.

00:08:00.320 --> 00:08:05.000
Das ist einfach so weit, dass es mehrere Größenordnungen von dem entfernt, was man erwarten würde.

00:08:05.300 --> 00:08:06.320
Das kann einfach nicht sein.

00:08:06.620 --> 00:08:12.300
Aber oft wissen Leute halt nicht, dass das eigentlich irgendwie anders aussehen sollte und denken dann, ja, so ist das halt.

00:08:12.680 --> 00:08:16.640
Und dann machen sie halt einen Kafka-Cluster, statt halt mal zu gucken, warum das nicht so richtig funktioniert.

00:08:18.220 --> 00:08:24.080
Genau, war da halt so eine Geschichte, TCP, No-Delay kann man irgendwie setzen, wenn man…

00:08:24.080 --> 00:08:25.160
Macht Python ja auch an Stellen weit.

00:08:25.180 --> 00:08:25.820
Genau, macht Python.

00:08:25.840 --> 00:08:26.900
Der Kafka-Client macht es nicht.

00:08:26.940 --> 00:08:28.900
macht es irgendwie nicht. Und dann sieht man

00:08:28.900 --> 00:08:31.020
so ein typisches 40-Millisekunden-Delay

00:08:31.020 --> 00:08:32.980
irgendwie. Und wenn man das irgendwo

00:08:32.980 --> 00:08:34.800
sieht, dann weiß man schon so, oha.

00:08:35.640 --> 00:08:36.740
Genau. Und

00:08:36.740 --> 00:08:38.980
ja, solche Sachen halt. Und

00:08:38.980 --> 00:08:40.840
was war das? Was hat er noch alles

00:08:40.840 --> 00:08:42.420
erzählt? Ich weiß nicht.

00:08:43.700 --> 00:08:45.140
Es war schon, es ging schon

00:08:45.140 --> 00:08:46.840
sehr weit runter in den Kernel. Das war eigentlich

00:08:46.840 --> 00:08:48.620
das Interessante, dass der halt nicht

00:08:48.620 --> 00:08:50.600
Python debugt hat, sondern er hat eigentlich

00:08:50.600 --> 00:08:52.780
Linux und File Handles

00:08:52.780 --> 00:08:54.160
und Kernel Traces debugt.

00:08:54.260 --> 00:08:56.840
Ja, also von außen solche Sachen,

00:08:56.940 --> 00:08:58.360
debuggen, das ist eigentlich super einfach.

00:08:58.640 --> 00:09:00.720
Und dann hat er ein Diagramm irgendwie auf einer Slide

00:09:00.720 --> 00:09:02.540
gezeigt und das war halt ultra kompliziert,

00:09:02.640 --> 00:09:03.880
was er alles an Teilen irgendwie

00:09:03.880 --> 00:09:06.280
vom Kernel bis zu...

00:09:06.280 --> 00:09:07.580
Und dann gibt es auch noch irgendwie

00:09:07.580 --> 00:09:10.600
eBPF-Trace oder so, es gibt ja dieses tolle neue Interface

00:09:10.600 --> 00:09:11.940
da, so Berkeley

00:09:11.940 --> 00:09:15.180
Packet-Filter-Interface

00:09:15.180 --> 00:09:16.740
im Kernel, da kannst du halt auch tatsächlich

00:09:16.740 --> 00:09:18.620
die Syscrolls selber tracen,

00:09:18.700 --> 00:09:20.620
du kannst eigenen Code in den Kernel

00:09:20.620 --> 00:09:22.680
injecten.

00:09:22.720 --> 00:09:23.980
Ja, das hört sich simpel an.

00:09:25.380 --> 00:09:26.680
Der dann im Kernel

00:09:26.680 --> 00:09:28.580
vom Kernel formal bewiesen wird,

00:09:28.700 --> 00:09:30.440
dass er nichts Böses tut und dann ausgeführt werden kann.

00:09:31.440 --> 00:09:31.700
Ja, dann.

00:09:32.640 --> 00:09:34.720
Und jemand, den wir

00:09:34.720 --> 00:09:35.920
auch schon im Podcast hatten, Martin, hat dafür

00:09:35.920 --> 00:09:38.760
einen Python-to-intermediate-language

00:09:38.760 --> 00:09:40.320
Compiler mal geschrieben.

00:09:40.640 --> 00:09:41.500
Dann kann man das auch in Python machen.

00:09:42.320 --> 00:09:44.840
Er meinte auch, das verwendet er auch häufig,

00:09:45.740 --> 00:09:46.580
wenn er noch mal tiefer

00:09:46.580 --> 00:09:47.020
gehen muss.

00:09:48.520 --> 00:09:50.640
Ja, ansonsten weiß ich,

00:09:50.640 --> 00:09:52.260
ich kann mich nicht mehr so wirklich erinnern an alle

00:09:52.260 --> 00:09:54.540
Details, aber es war halt so, ja, also man

00:09:54.540 --> 00:09:55.920
muss immer mal gucken und

00:09:55.920 --> 00:10:04.620
Und oft kann man halt mit so Standard-Linux-Tools irgendwie dann doch rauskriegen, was da irgendwie schiefläuft an Produktionssystemen.

00:10:04.780 --> 00:10:08.540
Also ja, aber man merkte, der hatte richtig viel Erfahrung und schon eine Menge gesehen.

00:10:09.380 --> 00:10:14.100
Mein Hauptgedanke war, ich bin dankbar für die Abstraktionsebene, die wir inzwischen in unserem Berufsfeld haben.

00:10:14.360 --> 00:10:16.720
Dass das Dinge sind, mit denen ich mich einfach nicht beschäftigen muss.

00:10:17.860 --> 00:10:22.320
Mein Gedanke war, dass ich dankbar bin, dass es so Leute gibt wie ihn, der das macht.

00:10:23.180 --> 00:10:28.080
Er meinte auch erst, wenn er irgendwo einen 500er-Fehler sieht oder sowas, dann kann er nicht mehr schlafen.

00:10:28.220 --> 00:10:29.060
Er muss das irgendwie rauskriegen.

00:10:29.080 --> 00:10:30.900
Das geht auch ohne Unix-Debugging.

00:10:36.380 --> 00:10:41.480
Danach war der Celery-Vortrag, also der Parallelisierungsvortrag mit Celery.

00:10:41.880 --> 00:10:47.320
Den fand ich jetzt nicht so, der ist nicht so tief reingegangen, wie ich gedacht hätte, dass man kann.

00:10:47.420 --> 00:10:53.300
Und für mich war es mehr so eine Bestätigung, dass die Sachen, die ich rausgefunden habe, nicht ganz abwegig sind.

00:10:54.300 --> 00:10:55.020
Und die waren?

00:10:55.840 --> 00:11:02.760
Ja, dass du Tasks in möglichst kleine Teile aufteilst, dass du ein Modell hast mit einem Status drauf, dass du den Status atomar änderst.

00:11:04.020 --> 00:11:08.840
Also in der Transaktion machst du ein Select for Update auf dieses Modell, änderst den Status, speicherst den.

00:11:09.480 --> 00:11:13.580
Das hat er nicht gezeigt, dann mache ich es normalerweise so, dass ich an dem Punkt die Transaktion beende.

00:11:14.280 --> 00:11:16.880
Weil dann habe ich ja mein Modell in der Hand mit dem korrekten Status,

00:11:16.980 --> 00:11:18.180
dass ich kein anderer mehr nehmen kann.

00:11:18.620 --> 00:11:21.200
Und dann kannst du diesen Task abarbeiten und dann hast du nochmal so einen Block,

00:11:21.320 --> 00:11:24.820
der dann den Status auf die nächste Stufe stellt, sodass es weiterverarbeitet werden kann.

00:11:25.400 --> 00:11:29.060
Und dieses Muster, das ist so was, ich weiß nicht,

00:11:29.140 --> 00:11:31.560
vielleicht bin ich da als Einziger draufgekommen oder auch nicht.

00:11:31.740 --> 00:11:33.760
Und dieser Vortrag war so ein bisschen die Bestätigung,

00:11:33.840 --> 00:11:34.980
ich bin nicht als Einziger draufgekommen.

00:11:35.480 --> 00:11:39.520
Das ist immer sehr gut, weil das eben bedeutet, dass man nicht was ganz Verrücktes macht.

00:11:39.780 --> 00:11:42.320
Also du hast ein Statusmodell, das hält dann immer da, wo bist du denn gerade

00:11:42.320 --> 00:11:44.380
und das wird dann immer transaktionsfroh angefasst

00:11:44.380 --> 00:11:46.600
und du füllst das dann auf Dinge,

00:11:46.780 --> 00:11:48.520
die auf dieses Statusmodell...

00:11:48.520 --> 00:11:50.900
Ja, und wenn du in so ein Task reingehst,

00:11:51.360 --> 00:11:52.380
dann erwartest du,

00:11:52.560 --> 00:11:54.420
dass das Objekt, was du bearbeitest,

00:11:54.500 --> 00:11:55.580
in einem bestimmten Status ist

00:11:55.580 --> 00:11:58.400
und änderst es in einen anderen Status,

00:11:58.500 --> 00:12:00.220
damit kein anderer Task das anfassen kann.

00:12:00.900 --> 00:12:01.620
Direkt am Anfang?

00:12:02.100 --> 00:12:03.640
Ja, das ist das allererste, was du machst,

00:12:03.760 --> 00:12:04.860
bevor du irgendwas anderes machst.

00:12:05.200 --> 00:12:07.000
Änderst du das auf ein Processing oder sowas?

00:12:07.280 --> 00:12:07.940
Ja, genau.

00:12:08.200 --> 00:12:08.960
Also es kommt darauf an,

00:12:09.000 --> 00:12:10.720
je nachdem, was du halt für Status hast.

00:12:11.900 --> 00:12:13.960
Es kann ja sein, dass du durch mehrere Stufen

00:12:13.960 --> 00:12:15.800
durch musst. Genau, ich meine, du änderst

00:12:15.800 --> 00:12:17.320
das nicht direkt in den nächsten, sondern in den

00:12:17.320 --> 00:12:19.580
Intermediaten. Sondern du änderst das in einen,

00:12:19.940 --> 00:12:21.560
der sagt, dass es gerade

00:12:21.560 --> 00:12:23.640
bearbeitet wird auf eine bestimmte Art und Weise

00:12:23.640 --> 00:12:25.680
und dass kein anderer dieses gerade bearbeiten

00:12:25.680 --> 00:12:27.520
darf. Und dann machst du

00:12:27.520 --> 00:12:29.620
deine Verarbeitung da drauf

00:12:29.620 --> 00:12:31.560
und wenn die fehlschlägt, dann

00:12:31.560 --> 00:12:33.700
machst du es rückgängig und gehst zurück auf den vorherigen

00:12:33.700 --> 00:12:35.260
Status, weil dann kannst du nämlich einen Retry machen.

00:12:35.860 --> 00:12:37.660
Wenn die funktioniert, dann stellst du

00:12:37.660 --> 00:12:39.620
auf den nächsten Status, sodass der nächste Prozess

00:12:39.620 --> 00:12:41.500
Schritt gehen kann. In der

00:12:41.500 --> 00:12:43.560
einfachsten Stufe ist es, du hast einen, der ist

00:12:43.560 --> 00:12:45.420
Pending, dann hast du Processing und dann hast du Done.

00:12:46.700 --> 00:12:47.520
Aber du kannst

00:12:47.520 --> 00:12:49.400
natürlich diesen Aufbau, kannst

00:12:49.400 --> 00:12:51.220
natürlich x Stufen haben. Du kannst ja 5

00:12:51.220 --> 00:12:53.560
verschiedene Verarbeitungsschritte oder 100 verschiedene

00:12:53.560 --> 00:12:54.760
oder dann auch verzweigt haben.

00:12:56.380 --> 00:12:57.480
Und das Wichtige

00:12:57.480 --> 00:12:59.380
ist aber, dass du tatsächlich dieses Statusfeld hast.

00:12:59.500 --> 00:13:01.340
Eins, was Warte auf Verarbeitung heißt

00:13:01.340 --> 00:13:03.140
und eins, das heißt, wird verarbeitet.

00:13:03.840 --> 00:13:05.460
Und dann kannst du sicher gehen, dass

00:13:05.460 --> 00:13:07.480
du den nicht doppelt verarbeitest. Wenn du das nämlich das erste

00:13:07.480 --> 00:13:09.440
machst, das erste, was du machst, du holst

00:13:09.440 --> 00:13:11.320
dir den aus der Datenbank mit

00:13:11.320 --> 00:13:13.920
Datenbanktransaktion, einem Select-for-Update.

00:13:14.260 --> 00:13:15.680
Das Select-for-Update und genau das, ja.

00:13:15.800 --> 00:13:17.540
Genau, das Select-for-Update sorgt genau dafür,

00:13:17.540 --> 00:13:19.680
dass wenn du den rausholst

00:13:19.680 --> 00:13:21.580
aus der Datenbank mit dem Status und

00:13:21.580 --> 00:13:23.480
der ID, das ist sozusagen der

00:13:23.480 --> 00:13:25.500
kritische Filter, du suchst nach der ID und nach

00:13:25.500 --> 00:13:27.560
dem Status und dann kriegst du von der

00:13:27.560 --> 00:13:29.300
Datenbank eben genau einen

00:13:29.300 --> 00:13:31.480
oder keinen. Wenn du keinen kriegst,

00:13:31.540 --> 00:13:33.480
sagst du, gut, dann hat es wohl schon jemand anders gemacht oder der

00:13:33.480 --> 00:13:35.000
ist schon fertig oder was auch immer.

00:13:35.500 --> 00:13:36.880
Und wenn du einen kriegst, machst du weiter.

00:13:38.360 --> 00:13:39.440
Und so schützt

00:13:39.440 --> 00:13:41.380
dich quasi davor, dass du

00:13:41.380 --> 00:13:43.260
diese Race Conditions in die Datenbank rein

00:13:43.260 --> 00:13:45.120
trägst. Dass du sagst,

00:13:45.760 --> 00:13:47.280
okay, der verarbeitet jetzt was und der

00:13:47.280 --> 00:13:48.980
verarbeitet jemand anderes auch noch irgendwas.

00:13:49.560 --> 00:13:51.480
Und er hat das gestern Idempotency

00:13:51.480 --> 00:13:52.720
genannt, also Idempotenz.

00:13:53.440 --> 00:13:55.400
Meiner Meinung nach nicht 100% korrekt

00:13:55.400 --> 00:13:57.180
genannt. Darfst du es ja nicht

00:13:57.180 --> 00:13:58.380
ein paar Mal ausführen.

00:13:58.840 --> 00:14:01.200
Weil Idempotenz eigentlich bedeutet, wenn du es mehrmals

00:14:01.200 --> 00:14:02.820
ausführst, hast du das gleiche Ergebnis.

00:14:04.240 --> 00:14:05.080
So ein bisschen

00:14:05.080 --> 00:14:07.300
der Outcome

00:14:07.300 --> 00:14:09.120
ist das gleiche. Du hast zwei nichtige

00:14:09.120 --> 00:14:10.880
Begriff dafür. Korrekte Idempotenz.

00:14:11.500 --> 00:14:13.020
Naja, der korrekte Begriff wäre hier

00:14:13.020 --> 00:14:14.620
irgendwie Locking oder sowas.

00:14:15.280 --> 00:14:16.860
Du hast einen Lock da drauf und das

00:14:16.860 --> 00:14:19.000
hast du so eingerichtet, dass es wirklich nur eine kommt.

00:14:19.700 --> 00:14:20.980
Wie gesagt, dieser Talk war

00:14:20.980 --> 00:14:23.020
für mich hauptsächlich Bestätigung dessen,

00:14:23.220 --> 00:14:24.940
dass das, was ich mir ausgedacht habe, nicht

00:14:24.940 --> 00:14:26.640
ganz verrückt ist.

00:14:26.760 --> 00:14:29.040
Das ist ja ungeheuer viel wichtig, ungeheuer viel

00:14:29.040 --> 00:14:30.720
wert, dass du nicht so,

00:14:31.280 --> 00:14:32.960
ja, man baut sich ja oft so Sachen und

00:14:32.960 --> 00:14:34.800
dann kommt man auf irgendwelche Lösungen und

00:14:34.800 --> 00:14:36.560
irgendwann findet man raus, das ist absoluter Quatsch.

00:14:37.480 --> 00:14:38.540
Oh, ich weiß nicht,

00:14:38.580 --> 00:14:40.460
leider. Das ist dir noch nie passiert.

00:14:40.680 --> 00:14:41.980
Bei mir passiert das ständig.

00:14:42.720 --> 00:14:44.620
Und jetzt mal das andere Erlebnis

00:14:44.620 --> 00:14:46.540
zu haben, es ist nicht ganz Quatsch, was du dir

00:14:46.540 --> 00:14:47.100
ausgedacht hast.

00:14:48.600 --> 00:14:48.960
Schön.

00:14:50.520 --> 00:14:52.500
Ja, genau, genau. Aber

00:14:52.500 --> 00:14:54.440
ja, Celery immer so ein bisschen. Aber der macht

00:14:54.440 --> 00:14:56.180
dann auch so Dinge mit Workflows und keine Ahnung,

00:14:56.280 --> 00:14:58.320
das ist kompliziert. Und ich denke so, ha, lieber nicht, so was

00:14:58.320 --> 00:15:00.360
macht man das nicht. Wie ist denn jetzt der Stand mit den

00:15:00.360 --> 00:15:02.320
Dango-Tasks? Die sollten doch jetzt langsam

00:15:02.320 --> 00:15:04.360
mal. Ja, ist aber noch nicht. Die kommen auch

00:15:04.360 --> 00:15:06.140
irgendwann. Kommt jetzt dann vielleicht demnächst.

00:15:06.660 --> 00:15:08.040
Aber ich glaube, es geht ja vor allem nur ums

00:15:08.040 --> 00:15:10.160
Interface erstmal. Es gibt ja

00:15:10.160 --> 00:15:11.400
dieses Package, wo das jetzt erstmal

00:15:11.400 --> 00:15:14.280
quasi so eine Art, ich glaube, die Datenbank-Task

00:15:14.280 --> 00:15:16.180
als Primärding

00:15:16.180 --> 00:15:17.880
implementiert werden und

00:15:17.880 --> 00:15:20.540
in Django Core soll tatsächlich nur der Dummy-Taskrunner,

00:15:20.560 --> 00:15:22.040
den man dann für Tests nutzen kann, und das

00:15:22.040 --> 00:15:24.060
Interface. Und diese Idee mit diesen

00:15:24.060 --> 00:15:26.120
Interfaces finde ich super spannend. Es gibt ja jetzt auch

00:15:26.120 --> 00:15:27.900
starke Überlegungen, die ganze

00:15:27.900 --> 00:15:30.200
Authentifizierung bei Django, was ja auch oft kritisiert

00:15:30.200 --> 00:15:32.320
wird, dass im User-Model ein sehr Western-

00:15:32.320 --> 00:15:34.220
centric, mit Vorname-Nachname-Konzept,

00:15:34.260 --> 00:15:36.280
das passt oft nicht in vielen Use-Cases

00:15:36.280 --> 00:15:37.640
oder auch anderen Kulturen,

00:15:38.040 --> 00:15:40.480
dann viele, also es wird dann username-standardmäßig

00:15:40.480 --> 00:15:42.200
genutzt, du kannst das irgendwie opt-outen,

00:15:42.280 --> 00:15:44.120
es gibt so Packages, E-Mail-Adresse

00:15:44.120 --> 00:15:45.700
ist nicht unik, also ganz viele Dinge und

00:15:45.700 --> 00:15:48.000
das eigentlich nicht die richtige Lösung wäre, zu sagen,

00:15:48.300 --> 00:15:50.140
wir ändern das jetzt oder wir bauen jetzt was Neues

00:15:50.140 --> 00:15:52.060
dazu, sondern dass man das einfach auch Plug-and-Play

00:15:52.060 --> 00:15:53.840
macht, wie halt auch die Datenbank-Anbindung

00:15:53.840 --> 00:15:55.880
Plug-and-Play ist, wie die Caches Plug-and-Play sind,

00:15:55.980 --> 00:15:58.060
wie mehr oder weniger eigentlich alles Plug-and-Play ist

00:15:58.060 --> 00:15:59.520
und da ein Authentifizierungssystem

00:15:59.520 --> 00:16:02.060
zu haben, wäre natürlich super und ich glaube, die auf diesem gleichen

00:16:02.060 --> 00:16:03.660
Konzept basiert auch dieses Tasks,

00:16:04.020 --> 00:16:06.000
ist im Endeffekt das Django Core, im Endeffekt mit

00:16:06.000 --> 00:16:08.060
jedem kompatiblen Task-Runner

00:16:08.060 --> 00:16:10.020
oder Task... Ist es Task-Runner? Ich weiß es

00:16:10.020 --> 00:16:12.320
nicht genau, was die dann... Background-Task

00:16:12.320 --> 00:16:13.820
Backend.

00:16:14.160 --> 00:16:16.000
Ja, Backend, genau. Task-Backend

00:16:16.000 --> 00:16:18.080
dann kommunizieren kann, wenn man dann sagt, ich möchte

00:16:18.080 --> 00:16:19.980
ein Eins mit Celery, dann baust du dir eins und wenn du

00:16:19.980 --> 00:16:21.900
sagst, mir reicht die Datenbank, dann baust du dir

00:16:21.900 --> 00:16:23.920
dafür eins oder nimmst das, was da ist und

00:16:23.920 --> 00:16:26.060
das... Ja, ich warte

00:16:26.060 --> 00:16:27.220
da aber auch schon sehnsüchtig drauf.

00:16:27.960 --> 00:16:29.900
Wir können auch noch kurz vorgreifen auf einen der

00:16:29.900 --> 00:16:32.040
Lightning-Talks, weil da war noch mal

00:16:32.040 --> 00:16:33.760
der...

00:16:33.760 --> 00:16:36.610
der Mann da, der auch über die Python-Mystery gesprochen hat

00:16:36.610 --> 00:16:38.570
und hat mit so ein kleines bisschen Zorn gesagt

00:16:38.570 --> 00:16:40.530
hier, Celery, das ist alles Mist

00:16:40.530 --> 00:16:42.550
und das ist viel zu viel Aufwand

00:16:42.550 --> 00:16:44.090
und deshalb habe ich mir mein eigenes geschrieben.

00:16:44.870 --> 00:16:46.650
Und das Interessante daran war,

00:16:46.770 --> 00:16:48.670
dass er das gleiche Interface benutzt hat

00:16:48.670 --> 00:16:50.410
wie das von Celery. Also das ist nicht

00:16:50.410 --> 00:16:52.650
das Django-Tasks-Interface, sondern

00:16:52.650 --> 00:16:54.510
das von Celery. Das heißt, es ist

00:16:54.510 --> 00:16:56.270
ein Drop-in-Replacement und man kann einfach seine Lösung

00:16:56.270 --> 00:16:58.230
verwenden, wenn man keinen Bock mehr hat auf Celery.

00:16:58.890 --> 00:17:00.410
Und wenn es nicht so funktioniert, wie man es möchte,

00:17:00.490 --> 00:17:02.350
geht man zurück. Fand ich auch

00:17:02.350 --> 00:17:03.490
eine interessante Idee.

00:17:04.310 --> 00:17:06.370
Was ich daran sehr interessant fand, ist,

00:17:07.130 --> 00:17:08.330
dass wenn man viele nutzen,

00:17:08.550 --> 00:17:10.570
also Celery kann ja nicht mit der Datenbank als Broker

00:17:10.570 --> 00:17:12.670
sprechen, aus Gründen, die niemand so genau

00:17:12.670 --> 00:17:14.390
weiß. Ja, aber es gibt so ein

00:17:14.390 --> 00:17:16.510
Interface dafür, oder? Ja, aber

00:17:16.510 --> 00:17:18.410
das wird immer, das ist rot umrandet

00:17:18.410 --> 00:17:20.350
und da habe ich nicht. So, das heißt, die

00:17:20.350 --> 00:17:22.330
meisten Leute nutzen halt dann Redis oder Revit im

00:17:22.330 --> 00:17:24.410
Queue, irgendein Derivator von Redis ist das bekannteste,

00:17:24.490 --> 00:17:26.370
viele Leute nutzen Redis und dann

00:17:26.370 --> 00:17:28.430
gibt es halt diesen Disclaimer auf der Webseite, dass wenn man

00:17:28.430 --> 00:17:29.990
halt Scheduled, also wenn man quasi

00:17:29.990 --> 00:17:31.970
Tasks in die Zukunft

00:17:31.970 --> 00:17:34.090
plant, dass es

00:17:34.090 --> 00:17:36.070
damit Redis-Issues gibt, das ist da seit

00:17:36.070 --> 00:17:37.970
also wir, uns ist das glaube ich 2018

00:17:37.970 --> 00:17:38.870
auf die Nase gefallen

00:17:38.870 --> 00:17:41.390
und unser

00:17:41.390 --> 00:17:44.270
wir haben ja immer gesagt, okay, dann nutzt man Redis-MQ, das war kein Problem

00:17:44.270 --> 00:17:46.070
aber im Endeffekt haben wir auch dann einfach

00:17:46.070 --> 00:17:47.930
angefangen, wir planen einfach keine Tasks mehr

00:17:47.930 --> 00:17:49.630
in die Zukunft, weil du kannst ja einfach

00:17:49.630 --> 00:17:51.610
quasi die schedulen lassen, so

00:17:51.610 --> 00:17:53.670
aber du kannst ja auch einen Scheduler verwenden, du kannst andere Sachen

00:17:53.670 --> 00:17:55.890
wir haben das wirklich mehr oder weniger

00:17:55.890 --> 00:17:58.210
gut ausgebaut bekommen, kein Problem mehr, Kuh vom Eis

00:17:58.210 --> 00:17:59.330
und dann meinte dann

00:17:59.330 --> 00:18:01.330
in einem Lightning-Talk erst, da meinte er so,

00:18:01.630 --> 00:18:03.910
ja, ja, ihr denkt, ihr nutzt

00:18:03.910 --> 00:18:05.610
die nicht. Aber in dem Moment, wo

00:18:05.610 --> 00:18:07.830
ein Retry kommt, nutzt die plötzlich

00:18:07.830 --> 00:18:09.670
schon. Und das war mir nicht bewusst. Und das ist dann

00:18:09.670 --> 00:18:11.530
so ein, oh, dann sollte ich vielleicht

00:18:11.530 --> 00:18:13.370
wirklich kein Redis zusammen mit Celery verwenden.

00:18:15.710 --> 00:18:17.330
Ja, Ivar Skalvans

00:18:17.330 --> 00:18:18.130
ist der Name.

00:18:19.730 --> 00:18:21.390
Ich verstehe auch nicht so genau, warum

00:18:21.390 --> 00:18:23.570
mit dem Schedule, das funktioniert immer nicht so,

00:18:23.630 --> 00:18:25.590
wie man das richtig will. Und das Package

00:18:25.590 --> 00:18:26.710
heißt übrigens Django

00:18:26.710 --> 00:18:29.070
minus Task Q, also

00:18:29.070 --> 00:18:30.990
wie der Buchstabe. Das heißt, irgendwer mal

00:18:30.990 --> 00:18:32.890
Spaß daran hat, das auszuprobieren. Ja, es gibt leider so ein bisschen

00:18:32.890 --> 00:18:35.090
viele Django-Task-Sachen, die alle so

00:18:35.090 --> 00:18:37.230
ganz ähnlichen Name-Mangels sind.

00:18:37.230 --> 00:18:38.210
Ja, kann ich verlinken, auf jeden Fall.

00:18:39.330 --> 00:18:39.730
Genau.

00:18:41.250 --> 00:18:42.870
Genau, dann kam so ein bisschen,

00:18:43.150 --> 00:18:44.810
ging es so ein bisschen ins Abendprogramm rein, da war es schon

00:18:44.810 --> 00:18:45.870
17 Uhr und

00:18:45.870 --> 00:18:48.970
dann kam der Words-Vortrag.

00:18:49.110 --> 00:18:51.390
Lock, Shells, Caches and other strange words.

00:18:52.250 --> 00:18:52.930
Von einem

00:18:52.930 --> 00:18:54.890
Dortmunder, das fand ich auch interessant.

00:18:54.990 --> 00:18:57.270
Ja, das ist auch relativ nah bei uns dran,

00:18:57.450 --> 00:18:58.330
aber noch nie gehört.

00:18:58.590 --> 00:18:59.850
Nee, ist ungeheuer weit weg, finde ich.

00:19:00.310 --> 00:19:01.110
Ja? Ja, gut.

00:19:04.010 --> 00:19:05.050
Hörertreffen in Stuttgart.

00:19:05.930 --> 00:19:07.210
Die machen sie jetzt dafür ab.

00:19:10.010 --> 00:19:10.770
Genau, der Vortrag...

00:19:10.770 --> 00:19:12.490
Wir haben übrigens ganz kurz zum Hörertreffen

00:19:12.490 --> 00:19:14.890
schon uns entschieden für...

00:19:14.890 --> 00:19:15.810
Er kam ja immer noch um.

00:19:18.330 --> 00:19:19.430
Da ging es dann schon so ein bisschen

00:19:19.430 --> 00:19:21.050
ins Amtprogramm rein, hat er auch selber gesagt.

00:19:21.470 --> 00:19:23.570
War ein sehr unterhaltsamer Vortrag, fand ich.

00:19:23.690 --> 00:19:29.010
War sehr schön gemacht, war sehr nett, hat einfach so ein bisschen über die Etymologie gesprochen

00:19:29.010 --> 00:19:36.290
und über die lustigen Herkünfte von den Wörtern, die wir benutzen, die aber eigentlich nautischen Ursprungs im 17. Jahrhundert sind.

00:19:36.990 --> 00:19:42.670
Was mich tatsächlich schockiert hat, ist, dass die Story mit dem Bug, also der Motte, in dem IBM kommt, dass das nicht stimmt.

00:19:42.670 --> 00:19:47.810
Also, dass das nicht die Ursache davon ist. Das habe ich schon oft rumerzählt.

00:19:48.990 --> 00:19:50.170
Das ist auch ein schönes Bild.

00:19:51.530 --> 00:19:54.890
Das musst du mir nochmal erzählen. Ich habe den Tag nämlich verpasst. Warum stimmt das nicht?

00:19:55.630 --> 00:20:10.330
Also es gibt diesen Eintrag von dieser Computermitarbeiterin, die die Motte aus dem Gerät gefischt hat und dann in ihrem handgeschriebenen Logs, also wirklich das, was heute halt auf dem System irgendwie im Hintergrund läuft, in einem Buch.

00:20:10.330 --> 00:20:40.170
Und da hat sich die Motte eingeklebt und hat das dann so geschrieben als, wir haben gerade den ersten Bug gefunden. Tatsächlich war das aber ironisch gemeint, weil das Wort Bug auf, ich glaube Edison war es, zurückgeht, der geschrieben hat, sein Ideenfindungsprozess ist so, wenn er eine neue Idee hat, dann kommt das so in einem Schwall heraus und danach kommen wie kleine, wie kleines Ungeziefer, diese ganzen Probleme in der Realität, mit denen er sich dann auseinandersetzen muss, bevor er dann irgendeine Lösung hat, die er wirklich verkaufen kann oder nicht.

00:20:40.170 --> 00:20:45.750
Achso, die kleinen Käfer. Und dann hat sie gesagt, okay, jetzt haben wir wirklich einen echten Käfer von ihr, die Mutter.

00:20:46.030 --> 00:20:49.150
Das fand ich aber auch sehr interessant, dieses Zitat, weil das ist ja auch ein Gefühl, was man so kennt.

00:20:49.430 --> 00:20:53.730
Dass man einmal so einen Inspirationsschub hat und dann stellt sich da die Realität in den Weg.

00:20:54.710 --> 00:21:01.210
Und du weißt aber eigentlich erst, wenn du diese ganze schmutzige Arbeit gemacht hast, ob es ein Erfolg oder ein Misserfolg ist.

00:21:02.310 --> 00:21:04.310
Ja, die Idee selber kannst du das nicht ansehen.

00:21:04.550 --> 00:21:07.290
Außer du kennst jemanden, der den Weg schon gegangen ist und kannst ihn fragen.

00:21:07.290 --> 00:21:10.010
Ja, aber das ist keine neue Idee. So erfindest du die Glühbirne nicht.

00:21:10.170 --> 00:21:10.310
Ja.

00:21:13.010 --> 00:21:14.250
Gut, und danach

00:21:14.250 --> 00:21:16.070
gab es natürlich noch Lightning Talks. Lightning Talks sind

00:21:16.070 --> 00:21:18.090
immer super, finde ich großartig. Da ist immer eine

00:21:18.090 --> 00:21:18.910
schöne Auswahl.

00:21:20.730 --> 00:21:21.850
Und das war auch gestern so.

00:21:22.710 --> 00:21:24.110
Apropos Lightning Talks, ich glaube, es gibt

00:21:24.110 --> 00:21:25.910
heute interessante Lightning Talks. Machst du ein bisschen Spoiler?

00:21:26.050 --> 00:21:27.910
Ich weiß nur von einem Lightning Talk, den es heute gibt,

00:21:27.990 --> 00:21:30.390
weil ich habe mich angemeldet, unvorsichtigerweise

00:21:30.390 --> 00:21:31.270
zu einem Lightning Talk.

00:21:32.050 --> 00:21:33.950
Und ich werde in fünf Minuten darüber sprechen,

00:21:33.950 --> 00:21:35.670
wie man in fünf Minuten einschlafen kann.

00:21:36.830 --> 00:21:38.190
Und wie man das hinkriegt, in fünf Minuten

00:21:38.190 --> 00:21:38.830
einzuschlafen.

00:21:39.570 --> 00:21:42.490
Ja, also wenn ihr dran seid, dann habt ihr es noch nicht geschafft.

00:21:45.170 --> 00:21:46.930
Ich habe heute Abend dann fünf Minuten Zeit.

00:21:46.990 --> 00:21:48.590
Mal schauen, bei wie vielen es klappt.

00:21:49.250 --> 00:21:49.530
Okay.

00:21:50.210 --> 00:21:52.930
Und Ronny, du wolltest auch was über deinen Lightning Talk erzählen.

00:21:53.230 --> 00:21:55.130
Genau, ich hatte eigentlich vor, mich gestern schon

00:21:55.130 --> 00:21:57.150
auch für einen Lightning Talk anzumelden.

00:21:57.270 --> 00:22:00.310
Ich habe leider gestern ein bisschen geschwächelt,

00:22:00.550 --> 00:22:02.570
gesundheitsbedingt, habe es dann nicht gemacht.

00:22:02.670 --> 00:22:04.590
Jetzt habe ich gerade gehört, dass alle Slots schon voll sind.

00:22:05.670 --> 00:22:08.850
Von daher werde ich nicht über das Thema reden,

00:22:08.930 --> 00:22:10.230
aber ich kann es ja hier ganz kurz präsentieren.

00:22:10.430 --> 00:22:12.790
Morgen ist ja auch schon voll, habe ich gehört.

00:22:13.130 --> 00:22:14.310
Auch schon voll, heile nein.

00:22:15.110 --> 00:22:18.130
Genau, es geht darum, dass ich habe vor einiger Zeit,

00:22:18.150 --> 00:22:19.370
ich habe da auch einen Blogpost drüber geschrieben,

00:22:20.010 --> 00:22:24.310
hatte ich den Fall, dass wir so eine Art Django-DevOps-Geschichte

00:22:24.310 --> 00:22:26.350
in so einem großen Monolithen brauchten.

00:22:26.510 --> 00:22:29.950
Es hatte zu tun, ganz konkret, um Django Migrations aufzuräumen

00:22:29.950 --> 00:22:33.470
für einen relativ spezifischen Case, für ein Projekt mit sehr, sehr langen

00:22:33.470 --> 00:22:35.370
Deployment-Zyklen und so.

00:22:35.870 --> 00:22:39.230
Und ja, das aus Gründen nicht funktioniert hat

00:22:39.230 --> 00:22:41.530
und so wegen der Circular Dependencies auflösen,

00:22:41.590 --> 00:22:42.670
dauert zu lange, etc., etc.

00:22:43.130 --> 00:22:46.830
Auf jeden Fall habe ich dann mich relativ stark dafür eingesetzt

00:22:46.830 --> 00:22:49.410
und habe da beim Kunden auch so ein paar Hierarchie-Ebenen,

00:22:49.590 --> 00:22:51.030
Hierarchie-Träbchen rauf und runter gemacht,

00:22:51.330 --> 00:22:52.490
um die davon zu überzeugen,

00:22:52.530 --> 00:22:54.430
dass wir das Ding dafür einfach Open Source machen könnten

00:22:54.430 --> 00:22:56.190
und sie es trotzdem voll zahlen.

00:22:57.230 --> 00:23:00.470
Was am Anfang für ein paar gehobene Augenbrauen geführt hat,

00:23:00.570 --> 00:23:02.290
weil warum Open Source?

00:23:02.730 --> 00:23:03.390
Hä, wir zahlen doch.

00:23:03.410 --> 00:23:04.170
Warum Sachen verschenken?

00:23:04.670 --> 00:23:04.930
Genau.

00:23:05.570 --> 00:23:11.370
Und ich habe dann aber nachher tatsächlich einen ganzen Haufen Argumente gefunden, warum das einfach für alle Beteiligten besser ist.

00:23:12.470 --> 00:23:15.970
Weil man dann endlich eure Fehler finden kann, die dann auch öffentlich verfügbar und einsehbar sind.

00:23:17.310 --> 00:23:20.250
Vor allem auch, weil wir ansonsten das halt irgendwie den Monolithen reingewurschelt hätten.

00:23:20.370 --> 00:23:23.830
Und sobald irgendwann mal ein Problem kommt, sowas fasst ja nie wieder einer freiwillig an.

00:23:24.250 --> 00:23:28.790
Wenn das jetzt Open Source ist, dann würde ich mich zumindest, solange ich es aktiv maintaine, mich drum kümmern.

00:23:30.130 --> 00:23:32.830
Und ich hatte bei zwei Themen, wo ich selber...

00:23:32.830 --> 00:23:35.330
Open Source war also ein Maintaining-Versprechen. Interessant, ja?

00:23:35.570 --> 00:23:37.390
solange ich mich drum kümmere zumindest.

00:23:38.910 --> 00:23:39.850
Da war die Kinderplanung

00:23:39.850 --> 00:23:40.930
noch nicht so weit fortgeschritten.

00:23:41.270 --> 00:23:42.950
Wird mich wahrscheinlich irgendjemand auf meine

00:23:42.950 --> 00:23:45.510
Python-Podcast-Folge von vor zwei, drei Jahren

00:23:45.510 --> 00:23:47.630
festnageln, wo ich gesagt habe,

00:23:47.630 --> 00:23:49.110
das muss man immer weiter maintainen.

00:23:51.370 --> 00:23:51.970
Nein, genau.

00:23:52.910 --> 00:23:54.390
Man kann ja auch schlecht maintainen.

00:23:54.450 --> 00:23:55.830
Ich maintaine Sachen aber teilweise

00:23:55.830 --> 00:23:56.890
sehr, sehr schlecht.

00:23:57.690 --> 00:23:59.570
Nein, aber vor allem, dass das Schöne an der Geschichte ist,

00:23:59.850 --> 00:24:01.290
nachdem ich das gemacht habe,

00:24:01.310 --> 00:24:02.590
den Artikel darüber geschrieben habe,

00:24:02.670 --> 00:24:05.390
und es halt wirklich auch im Endeffekt eine Win-Win-Situation war,

00:24:05.450 --> 00:24:07.310
auch wirklich die Entkoppelung auch dann da, weil man gar nicht in die

00:24:07.310 --> 00:24:09.410
Verlegenheit kam, irgendwas projektspezifisch zu machen,

00:24:10.910 --> 00:24:11.430
hatte ich dann

00:24:11.430 --> 00:24:12.290
irgendwann plötzlich

00:24:12.290 --> 00:24:15.150
ein Issue von

00:24:15.150 --> 00:24:17.230
einer

00:24:17.230 --> 00:24:19.670
scheinbar sehr, sehr kompetenten

00:24:19.670 --> 00:24:21.350
Entwicklerin, die geschrieben hat,

00:24:21.450 --> 00:24:23.410
dass sie folgende zwei Probleme

00:24:23.410 --> 00:24:25.410
identifiziert hat. Und

00:24:25.410 --> 00:24:27.390
das eine hatte ich sogar literally as to do im Code,

00:24:27.450 --> 00:24:29.150
weil ich wusste, dass ich das eigentlich noch fixen muss, aber

00:24:29.150 --> 00:24:31.330
ich brauchte es halt für einen Case gerade nicht, darum habe ich es dann

00:24:31.330 --> 00:24:33.270
offen gelassen. Dann hat sie mich gefragt,

00:24:33.350 --> 00:24:38.290
ob sie das lösen darf und hat dann zwei absolut perfekte Merge-Requests,

00:24:38.330 --> 00:24:40.850
wo ich wirklich absolut oder fast nichts daran aussetzen konnte,

00:24:41.550 --> 00:24:44.370
delivered, die einfach funktioniert haben, alles durchgetestet.

00:24:44.950 --> 00:24:48.850
Und das sind halt Sachen, die hätten die ansonsten halt niemals da reinbekommen.

00:24:49.950 --> 00:24:52.770
Und genau, ansonsten, ich nutze das natürlich auch für meine Projekte.

00:24:52.910 --> 00:24:54.490
Und das ist eine sehr schöne Success-Story.

00:24:54.990 --> 00:24:57.730
Und ich glaube, wenn das mehr Leute im Kopf haben, dass das geht,

00:24:57.730 --> 00:25:02.210
dann könnte man sehr, sehr viel mehr in Open Source einfach leveragen über Kundengeld.

00:25:03.350 --> 00:25:04.810
wenn man es halt einfach im Kopf hat.

00:25:04.850 --> 00:25:07.090
Und das wolltest du quasi als Access-Story verkaufen

00:25:07.090 --> 00:25:08.130
und ein bisschen Werbung zu machen.

00:25:08.550 --> 00:25:10.150
Was war das genau? Worum ging es da?

00:25:10.230 --> 00:25:12.230
Also ich habe, du hast gesagt, Deployment-Zeugs bei Django.

00:25:12.770 --> 00:25:15.050
Also genau, das Package heißt Django Migration Zero.

00:25:15.270 --> 00:25:16.890
Es gibt leider, ich habe auch eine Sache,

00:25:16.950 --> 00:25:18.570
wenn man Packages erstellt, checkt vorher mal,

00:25:18.650 --> 00:25:20.190
was es für Packages gibt, die ähnlich heißen.

00:25:20.490 --> 00:25:21.870
Ups. Es gibt nämlich

00:25:21.870 --> 00:25:24.510
Mig Zero und Migration Zero Django

00:25:24.510 --> 00:25:26.230
und ich glaube Migration Zero ohne Django.

00:25:26.910 --> 00:25:27.350
Ja.

00:25:28.390 --> 00:25:30.490
Ich habe einen Artikel, ich habe in Blog-Posts

00:25:30.490 --> 00:25:31.950
das verlinkt und noch einen Artikel drüber geschrieben.

00:25:32.050 --> 00:25:35.390
Das heißt, Google packt mich jetzt auf Platz 1, glaube ich.

00:25:35.710 --> 00:25:35.890
Yay!

00:25:36.990 --> 00:25:45.290
Aber genau, also es geht einfach darum, dass wenn man, wir bei uns nutzen aus historischen Gründen, wie du vorhin auch meintest, man hat mal so eine Lösung im Kopf und dann nutzt man die immer weiter.

00:25:45.470 --> 00:26:01.830
Wir haben, um quasi Object-Ownership zu haben, haben wir quasi in so einer, in unserer Toolbox-Package, wo so kleine Dinge, die sich nicht als eigenes Package lohnen, haben wir quasi so dieses Created-By, Last-Modified-By und das Ziertel auf den User, was dazu halber führt, dass wir sehr, sehr viele Circular Dependencies haben.

00:26:02.050 --> 00:26:05.050
Wenn wir ein Custom-User-Model haben, was wir aus historischen Gründen,

00:26:05.110 --> 00:26:07.010
weil früher war das alles sehr mühsam mit Django, mit Auth,

00:26:07.030 --> 00:26:11.410
wie immer mit auch Modelswitchen und haben wir meistens uns für ein Custom-Model entschieden,

00:26:11.890 --> 00:26:14.130
was wir heute nicht mehr tun, aber es war halt ein älteres Projekt.

00:26:14.730 --> 00:26:17.510
Und das heißt, du hast sehr, sehr, sehr, sehr viele Circle Dependencies.

00:26:17.630 --> 00:26:21.750
Und wenn du Squashen möchtest, musst du die, also das dauert, weiß ich nicht, Tage, glaube ich,

00:26:21.750 --> 00:26:26.010
hätte das gedauert zu lösen, für den Effekt, dass ich weiß, welche Migrations mal da waren,

00:26:26.110 --> 00:26:27.990
aber das ist halt kein Packages-Deployed-System.

00:26:28.230 --> 00:26:31.530
Also was auf ein Produktivsystem angekommen ist, da ist Ende.

00:26:31.810 --> 00:26:34.050
Ich muss nicht wissen, was danach passiert ist,

00:26:34.070 --> 00:26:36.030
was davor passiert ist. Das heißt, es ist einfach

00:26:36.030 --> 00:26:38.030
determiniert und ich kann mir halt einfach

00:26:38.030 --> 00:26:40.010
auch, was Migration Zero im Endeffekt ist,

00:26:40.590 --> 00:26:41.910
ist, du gehst halt einfach hin und löscht alles.

00:26:42.270 --> 00:26:43.170
Und startest halt neu.

00:26:44.010 --> 00:26:45.150
Haben wir alle schon oft gemacht.

00:26:45.310 --> 00:26:48.090
Create Migrations lustigerweise nicht das Problem

00:26:48.090 --> 00:26:50.010
hat, was Squashing hat. Das kriegt es einfach

00:26:50.010 --> 00:26:51.890
hin. Ich weiß nicht wie, aber es kriegt es hin.

00:26:53.870 --> 00:26:53.870
Und

00:26:53.870 --> 00:26:55.530
genau, von daher ist das halt für,

00:26:55.970 --> 00:26:57.690
wenn man einfach eine Applikation hat und regelmäßig

00:26:57.690 --> 00:26:59.750
aufräumen möchte. Der Trick ist halt, dass ich

00:26:59.750 --> 00:27:01.910
Du hast die Datenbank schon einmal so gezogen, dass der Stand

00:27:01.910 --> 00:27:03.950
stimmt und dann schmeißt du alle Migrations weg und machst neue Migrations hin.

00:27:03.990 --> 00:27:05.910
Genau und du musst halt, du kannst halt

00:27:05.910 --> 00:27:07.850
in ganz, ganz fiese Edge Cases kommen, die nicht

00:27:07.850 --> 00:27:09.870
so alt wahrscheinlich sind, aber wenn du halt ein Produktionssystem

00:27:09.870 --> 00:27:11.890
hast mit Uptime und sowas, möchte man halt einfach

00:27:11.890 --> 00:27:13.830
nicht sich solche Dinge einbauen.

00:27:13.950 --> 00:27:15.970
Das heißt, du musst halt auch gucken, dass die Django Migration Table

00:27:15.970 --> 00:27:16.730
im Endeffekt den

00:27:16.730 --> 00:27:19.930
Apply Cache von

00:27:19.930 --> 00:27:21.930
Django, muss man halt auch aufräumen und damit man

00:27:21.930 --> 00:27:23.750
halt, weil niemand gerne auf der Produktionsdatenbank

00:27:23.750 --> 00:27:25.370
herumfudelt, habe ich quasi ein Skript geschrieben,

00:27:25.690 --> 00:27:27.870
dass das für einen macht und du kannst es von Django Admin

00:27:27.870 --> 00:27:30.010
quasi an- und ausstellen, also sagst, okay, ich weiß,

00:27:30.090 --> 00:27:31.850
es kommt ein Deployment, das nächste Deployment, das ist,

00:27:32.210 --> 00:27:33.790
mach den Haken an, dann macht ihr das quasi für

00:27:33.790 --> 00:27:35.770
einen selber, das heißt, du musst nicht mehr auf der

00:27:35.770 --> 00:27:37.830
Datenbank rumfrudeln, du musst im Endeffekt einfach nur

00:27:37.830 --> 00:27:39.750
noch das tun, was du gerne machst, irgendwas im

00:27:39.750 --> 00:27:41.430
Code ändern, committest das und der Rest

00:27:41.430 --> 00:27:43.250
passiert dann automatisch und

00:27:43.250 --> 00:27:45.870
genau. Das ist sehr, ich finde das

00:27:45.870 --> 00:27:47.410
für den Use Case sehr konvenient.

00:27:48.290 --> 00:27:49.170
Ja, cool. Coole Sache.

00:27:50.410 --> 00:27:51.890
Nice. Aber habe ich das richtig

00:27:51.890 --> 00:27:53.850
rausgehört? Ihr nehmt kein Custom User Model mehr?

00:27:54.990 --> 00:27:55.990
Wir versuchen

00:27:55.990 --> 00:27:58.030
eher über diesen User-Profile-Ansatz zu gehen.

00:27:58.350 --> 00:27:59.690
Also, dass das Problem ist,

00:27:59.810 --> 00:28:03.330
ich glaube, Django lädt sehr, sehr, sehr, sehr, sehr stark dazu ein,

00:28:03.750 --> 00:28:07.210
dass man so gewisse zentrale Models mit immer mehr belädt

00:28:07.210 --> 00:28:08.850
und dass man halt nicht wirklich versucht,

00:28:09.330 --> 00:28:10.290
Domänen zu schneiden.

00:28:11.430 --> 00:28:14.590
Ich meine, Foreign Keys, so enorm praktisch die sind,

00:28:14.690 --> 00:28:17.190
ist halt auch, du bist halt einfach in irgendeiner Funktion

00:28:17.190 --> 00:28:20.050
plötzlich drei Domänen irgendwo weiter

00:28:20.050 --> 00:28:21.950
und hast dann plötzlich irgendwelche Daten dir gefischt,

00:28:21.990 --> 00:28:22.710
weil es geht halt.

00:28:23.530 --> 00:28:26.430
Und von daher versuchen wir jetzt in den neuen Projekten

00:28:26.430 --> 00:28:27.970
eher über Profile zu gehen.

00:28:28.090 --> 00:28:29.610
Also Profil ist für euch ein eigenes Modell,

00:28:29.690 --> 00:28:30.530
eine eigene Tabelle oder Zeug?

00:28:30.630 --> 00:28:31.690
Genau, also wir sagen quasi alle,

00:28:31.870 --> 00:28:34.750
also der Django-User ist nur für die Authentifizierung da.

00:28:34.870 --> 00:28:36.590
Also wir nutzen im besten Fall auch nicht den Namen

00:28:36.590 --> 00:28:38.550
oder E-Mail-Adresse, logischerweise schon,

00:28:38.690 --> 00:28:39.410
aber nicht den Namen.

00:28:40.050 --> 00:28:42.150
Und dann gibt es zum Beispiel dann irgendwie ein Account-Profil,

00:28:42.230 --> 00:28:43.270
wo dann der Name drinsteht,

00:28:43.350 --> 00:28:44.230
dann vielleicht die Adresse.

00:28:45.150 --> 00:28:47.530
Dann, das ist vielleicht gerade kein Beispiel,

00:28:47.630 --> 00:28:48.610
aber zum Beispiel, wenn ihr sagt,

00:28:48.630 --> 00:28:49.890
ich habe irgendwelche Konfigurationen,

00:28:49.910 --> 00:28:51.050
die ich machen kann in meiner Applikation,

00:28:51.050 --> 00:28:53.390
dann gibt es vielleicht ein User-Konfigurationsprofil.

00:28:53.530 --> 00:29:07.070
Und versucht das aufzuteilen und dann die verschiedenen kleinen Models in ihren Domänen zu haben, was halt auch dazu führt, dass du, wenn du zum Beispiel den User immer weiter aufbläst, teilweise hast du dann ja 50, 60 Felder in einer hinreichend großen Applikation, ist ja keine Seltenheit, die Daten werden auch immer gefetcht.

00:29:07.070 --> 00:29:23.050
Und die wenigsten Leute in Django machen ja auch, dass sie wirklich dann per Select sich nur die Felder holen, die sie brauchen, sondern eher so, ja gib mir mal alles. Das erzeugt auch wohl vor allem, also gegeben der Last, aber auch immer einen relativ großen Overhead. Plus ist natürlich auch für den nächsten Junior, der ins Projekt kommt, der muss halt 50 Felder verstehen und nicht nur drei.

00:29:23.530 --> 00:29:25.530
Das mit Daten habe ich

00:29:25.530 --> 00:29:27.630
noch nicht drüber nachgedacht, aber ich habe jetzt tatsächlich User-Profile

00:29:27.630 --> 00:29:29.510
an ein Profile-JSON-Field

00:29:29.510 --> 00:29:31.450
gehängt. Ja, also

00:29:31.450 --> 00:29:33.590
ich finde JSON-Fields sind ein sehr zweischneidiges

00:29:33.590 --> 00:29:34.830
Schwert. Das ist immer so ein bisschen,

00:29:35.510 --> 00:29:37.950
die führen so ein bisschen die Relational-Datemark-Adaptsodum.

00:29:38.090 --> 00:29:39.250
Manche Dinge sind die super.

00:29:39.650 --> 00:29:41.490
Ja, für solche Sachen im Profil möchte ich das nicht filtern.

00:29:41.610 --> 00:29:42.710
Also das ist nicht so Filter-Rebuild.

00:29:43.270 --> 00:29:45.570
Aber ich sage mal so, ich versuche die,

00:29:46.070 --> 00:29:47.490
ich nutze die, aber ich versuche

00:29:47.490 --> 00:29:49.610
da dreimal drüber nachzudenken, ob ich es wirklich nutzen möchte.

00:29:49.790 --> 00:29:51.770
Und wenn ich zum Beispiel so die Profil-Konfiguration

00:29:51.770 --> 00:29:53.590
habe, weiß ich nicht, die Farbe und die Sprache

00:29:53.590 --> 00:29:55.750
und keine Ahnung was, das kann

00:29:55.750 --> 00:29:57.750
ich ja relational speichern, dann versuche ich es auch

00:29:57.750 --> 00:29:59.810
zu tun. Ich bin tatsächlich

00:29:59.810 --> 00:30:01.550
gerade in die andere Richtung unterwegs

00:30:01.550 --> 00:30:02.890
zum Thema User Model.

00:30:03.450 --> 00:30:05.650
Ich bin jetzt eher wieder dazu übergegangen, Custom User Models

00:30:05.650 --> 00:30:07.710
zu machen, aber nicht um

00:30:07.710 --> 00:30:09.510
da Felder hinzuzufügen, sondern eben genau um Felder

00:30:09.510 --> 00:30:11.590
wegzuschneiden, weil ich keinen First Name brauche, ich brauche keinen

00:30:11.590 --> 00:30:13.490
Last Name, ich brauche keinen... Ich habe auch alles

00:30:13.490 --> 00:30:15.370
gestrichen, nur E-Mail gemacht.

00:30:15.610 --> 00:30:17.650
Ja genau, einfach nur E-Mail und Passwort und das ist

00:30:17.650 --> 00:30:19.510
eigentlich für die meisten Sachen

00:30:19.510 --> 00:30:21.670
reicht das ja schon aus. Aber dann spricht der tatsächlich

00:30:21.670 --> 00:30:22.970
ich meinem eigentlich gar nicht.

00:30:23.270 --> 00:30:24.650
Ja, genau. Das ist eigentlich das Gleiche.

00:30:25.770 --> 00:30:27.550
Vielleicht sogar noch ein logischer weiterer Schritt.

00:30:28.090 --> 00:30:29.510
Ja, aber halt mit Aufwand verbunden.

00:30:30.530 --> 00:30:31.570
Und das ist dann in meinem

00:30:31.570 --> 00:30:33.430
Projekt-Template drin und dann habe ich es einmal gemacht

00:30:33.430 --> 00:30:34.590
und dann ist es fertig.

00:30:36.710 --> 00:30:37.670
Ja, das ist auch so was,

00:30:37.790 --> 00:30:39.870
dass man baut sich ja dann irgendwie so eine

00:30:39.870 --> 00:30:41.770
Sammlung an so eine Schatzkiste an Lösungen

00:30:41.770 --> 00:30:43.550
auf und die benutzt man dann schon immer wieder.

00:30:43.650 --> 00:30:45.550
Und wenn die je verloren geht, dann bin ich wieder

00:30:45.550 --> 00:30:46.190
ein Jumbo-Anfänger.

00:30:48.190 --> 00:30:49.710
Darum haben wir damals mal angefangen,

00:30:49.770 --> 00:30:51.250
die ganzen Sachen in ein Package zu packen.

00:30:51.670 --> 00:31:11.290
Das ist zwar nicht der Weg, wie Packages sein, die sollen ja eigentlich Single Purpose und dass du einem eine Sache hast, aber es gibt so viele Kleinigkeiten auch für ein Admin, wo man sagt, ich will das jetzt nicht jedes Mal neu googeln, wie ich jetzt dieses eine Read-Only-Dingsbums da irgendwie machen kann oder sowas oder diesen einen Sonderfall mit weiß ich nicht was. Das ist schon praktisch, wenn man das da reingießen kann.

00:31:11.630 --> 00:31:20.250
Ja, man hat sich ja so ein kleines kariertes Maiglöckchen da gemacht, hat noch ein bisschen gehegt und gepflegt und ordentlich aufgezogen und dann noch die Ecken und Kanten ein bisschen richtig gestutzt, dass das genauso aussieht wie man es kennt.

00:31:20.590 --> 00:31:28.070
Also ich finde das zum Beispiel super, dieses Toolbox-Package, das wir haben. Also das nutzen wir in den Projekten. Da sind natürlich auch viele Sachen drin, die Leute einfach nicht brauchen.

00:31:28.070 --> 00:31:47.270
Aber ich meine, im Endeffekt, es ist halt, ja, also ich räume da auch regelmäßig auf. Also einfach, wenn ich dann sage, okay, jetzt ist der Zeitpunkt gekommen, wo das nicht mehr relevant ist oder habe einfach Sachen aktiv rausgezogen. Also mit das Pony Express Package, von dem ich vorhin am Anfang gesprochen habe, das war auch mal Teil davon. Habe ja gesagt, das ist sowas von Single Purpose. Also das macht keinen Sinn, das da mit reinzufudeln.

00:31:47.350 --> 00:31:48.130
Das kann man gut rausziehen.

00:31:48.210 --> 00:31:48.390
Genau.

00:31:50.090 --> 00:31:50.310
Cool.

00:31:51.050 --> 00:31:52.690
Dann sind wir mit gestern durch.

00:31:53.090 --> 00:31:54.190
Dann kommen wir nach heute.

00:31:54.730 --> 00:31:55.790
Heute der Tag hat angefangen.

00:31:55.970 --> 00:31:56.790
Er hat sehr früh angefangen.

00:31:56.790 --> 00:32:01.790
Einer, ihr habt so früh überlassen, auch wenn ich nach unserer Zeit neun Uhr nach Lokaler...

00:32:02.310 --> 00:32:03.490
Mein Jetlag ist schon vorbei.

00:32:05.530 --> 00:32:07.690
Ich fand es jedenfalls interessant, es war ja...

00:32:07.690 --> 00:32:13.810
Es war der Talk für die Django Software Foundation, die Versammlung und der offizielle 20. Geburtstag.

00:32:14.450 --> 00:32:17.730
Ja, war ja gar kein Talk, sondern es war das Django Software Foundation Board Meeting.

00:32:18.210 --> 00:32:18.430
Ja.

00:32:18.970 --> 00:32:22.190
Das jährliche Board Meeting, das erste jährliche Board Meeting.

00:32:22.670 --> 00:32:24.090
Weiß noch nicht, ob man davon jährlich sprechen kann.

00:32:24.090 --> 00:32:27.270
Gleichzeitig die Geburtstagsfeier, 20 Jahre Janko, es gab auch Kuchen.

00:32:27.290 --> 00:32:28.210
Es gab Kuchen, ja.

00:32:28.290 --> 00:32:28.870
Das war sehr schön.

00:32:29.530 --> 00:32:34.110
Aber es war halt heute früh um 8 und mir ist durchaus aufgefallen, dass dann so um 8.10 Uhr noch ein paar Leute gekommen sind.

00:32:34.270 --> 00:32:35.970
Oder um 8.15 Uhr oder um 8.20 Uhr.

00:32:36.190 --> 00:32:37.210
Oder um 8.30 Uhr, wie ich.

00:32:38.490 --> 00:32:41.870
Es scheint tatsächlich nicht ganz einfach zu sein, so früh aufzustehen.

00:32:42.670 --> 00:32:45.770
Ich meine, mit Kindern ist das eigentlich so, ja.

00:32:45.950 --> 00:32:48.870
Ich kam halt aus der Stadt und die Busse fahren so mittel von da ab.

00:32:48.870 --> 00:32:49.370
Ja, okay, gut.

00:32:49.570 --> 00:32:50.770
Das ist natürlich ein bisschen...

00:32:50.770 --> 00:32:52.490
Ja, der Bus ist ein eigenes Airbnb-Sus.

00:32:53.310 --> 00:32:55.210
Wir sind ja alle im Hotel, da ist es natürlich einfacher.

00:32:55.350 --> 00:32:55.430
Ja.

00:32:57.050 --> 00:32:58.530
Ich habe jemanden gesehen, der mit

00:32:58.530 --> 00:33:00.570
Badelatschen die ganze Zeit,

00:33:00.570 --> 00:33:03.030
da dachte ich mir so, oh, warum bin ich da nicht drauf gekommen?

00:33:03.270 --> 00:33:04.190
Ich nehme die Schuhe an.

00:33:04.690 --> 00:33:06.870
Ja, ich habe mich auch nicht gedacht, ich wollte eigentlich gerade eben nochmal

00:33:06.870 --> 00:33:07.510
ins Gym.

00:33:07.510 --> 00:33:09.710
und Steam, aber dann muss ich mit Bademantel

00:33:09.710 --> 00:33:11.050
an der Konferenz vorbei und kurz winken.

00:33:11.250 --> 00:33:12.890
Mit Bademantel zur Konferenz gehen.

00:33:13.310 --> 00:33:14.310
Das habe ich mir auch überlegt.

00:33:14.730 --> 00:33:16.270
Solange der Bademantel zu ist, ist doch alles okay.

00:33:16.590 --> 00:33:17.750
Das ist auch eine Frage.

00:33:18.350 --> 00:33:21.410
Ich passe da immerhin rein, ich habe ja nämlich meinen eigenen Bademantel.

00:33:22.550 --> 00:33:23.790
Das haben wahrscheinlich auch nicht so viele.

00:33:24.290 --> 00:33:25.550
Okay, also das Jungle of Software

00:33:25.550 --> 00:33:27.390
von der Board Meeting, das war...

00:33:27.390 --> 00:33:28.510
Ich bin da hingegangen, weil

00:33:28.510 --> 00:33:30.330
ich das mal sehen wollte.

00:33:30.990 --> 00:33:32.670
Ich weiß, dass ich da nichts beitragen kann.

00:33:32.770 --> 00:33:35.770
Ich weiß, dass ich diese Verantwortung nicht tragen kann, weil ich nicht genügend Zeit habe.

00:33:35.770 --> 00:33:36.490
Und was hast du gesehen?

00:33:37.090 --> 00:33:39.150
Es war interessant, die Diskussionskultur

00:33:39.150 --> 00:33:41.110
war interessant, die Menschen, die sich

00:33:41.110 --> 00:33:42.790
daran beteiligen, ich meine, viele von den Namen

00:33:42.790 --> 00:33:45.050
kennt man, wenn man so ein bisschen in der Szene ist.

00:33:46.630 --> 00:33:47.190
Aber es war trotzdem

00:33:47.190 --> 00:33:48.910
einfach mal interessant zu sehen, wie die so

00:33:48.910 --> 00:33:51.390
Zeit man mit so Dingen verbringen kann.

00:33:51.670 --> 00:33:52.930
Ja, richtig. Auch wie viele Meta-Dinge

00:33:52.930 --> 00:33:55.070
einfach passieren müssen und wenn sie

00:33:55.070 --> 00:33:57.290
nicht passieren, wie viele negative Konsequenzen

00:33:57.290 --> 00:33:59.110
das hat. Und wie viele Kommentare es gibt

00:33:59.110 --> 00:34:01.150
zu allem. Ja, da muss man noch mal reden,

00:34:01.270 --> 00:34:03.270
jeder darf auch was dazu sagen und dann wird dem auch zugehört.

00:34:03.890 --> 00:34:05.030
Also, sehr

00:34:05.030 --> 00:34:05.490
Corporate.

00:34:06.870 --> 00:34:08.430
Und dann gab es Kuchen, das war sehr schön.

00:34:08.430 --> 00:34:10.090
Ja, das hat sich gelohnt,

00:34:10.370 --> 00:34:11.590
früher aufzustehen und hinzugehen.

00:34:13.190 --> 00:34:13.550
Ja.

00:34:14.050 --> 00:34:16.150
Gut, dann gab es den Einführungsvortrag

00:34:16.150 --> 00:34:18.190
des heutigen Tages, so für die breite Masse,

00:34:18.230 --> 00:34:19.210
sag ich mal, im Mainstream.

00:34:19.450 --> 00:34:21.130
Oh, im Mainstream? Im Mainhall.

00:34:21.330 --> 00:34:22.410
Nee, das heißt ja Mainhall, ich meine.

00:34:23.030 --> 00:34:24.350
Gab es den? Habe ich den verpasst?

00:34:24.470 --> 00:34:27.010
Nein, da war es auch der Most Bizarre Software Bugs in History.

00:34:27.050 --> 00:34:28.690
Ach so, ach so, ja, das ist, ja, okay, klar.

00:34:29.750 --> 00:34:31.250
War eine schöne Aufstellung.

00:34:31.430 --> 00:34:32.650
Hast du, hat der Jochen

00:34:32.650 --> 00:34:35.650
den Lightning Talk vom Johannes vorher schon gehört?

00:34:36.870 --> 00:34:39.490
Ich habe ihm das vorher kurz

00:34:39.490 --> 00:34:40.570
gezeigt, das war

00:34:40.570 --> 00:34:42.410
eine Pause.

00:34:42.830 --> 00:34:44.810
Das war nur der Vulkanier

00:34:44.810 --> 00:34:46.570
Mindgrab.

00:34:47.970 --> 00:34:49.690
Genau, das war auch eine sehr schöne, war sehr unterhaltsam.

00:34:49.830 --> 00:34:51.510
Dieser Vortrag war erstaunlich lang.

00:34:53.030 --> 00:34:53.730
Er hat viele Sachen

00:34:53.730 --> 00:34:55.370
gesagt und viele von den Geschichten

00:34:55.370 --> 00:34:57.630
kennt man ja schon so ein bisschen.

00:34:57.990 --> 00:34:58.970
Man hat es ja schon mal gehört.

00:34:58.970 --> 00:35:00.730
Ein Lion Air Flight 110

00:35:00.730 --> 00:35:01.430
und

00:35:01.430 --> 00:35:06.630
ich habe gar nicht mehr die Geschichten

00:35:06.630 --> 00:35:08.210
alle notiert. Ich habe nur notiert, wie die

00:35:08.210 --> 00:35:09.430
Geschichten heißen.

00:35:10.010 --> 00:35:12.030
Das mit der Mars-Mission, mit dem metrischen System.

00:35:13.170 --> 00:35:14.110
Vielleicht gehen wir noch mal kurz

00:35:14.110 --> 00:35:15.770
darauf ein. Also ein Bagger ist natürlich

00:35:15.770 --> 00:35:17.070
in den Flugzeug abgestürzt, nicht so gut.

00:35:17.330 --> 00:35:20.370
Es sind zwei sogar, es sind zwei abgestürzt, wo was passiert ist.

00:35:20.630 --> 00:35:21.890
Boing, so ein System eingebaut hat,

00:35:21.930 --> 00:35:23.810
dass die Nase immer korrigieren sollte und dann ist

00:35:23.810 --> 00:35:25.910
der Sensor ausgefallen, der hat nur einen eingebaut und dann

00:35:25.910 --> 00:35:27.690
Und die Piloten wussten nichts davon?

00:35:28.090 --> 00:35:29.930
Ja. Bei dem zweiten Flug, der war

00:35:29.930 --> 00:35:31.050
sogar noch ein bisschen tragischer,

00:35:31.330 --> 00:35:33.190
weil da wussten die Piloten davon.

00:35:33.970 --> 00:35:35.150
Haben es nicht abgesteckt gekriegt.

00:35:35.450 --> 00:35:37.110
haben es nicht abgeschaltet gekriegt und vor allem

00:35:37.110 --> 00:35:39.550
dieses System ist gekoppelt

00:35:39.550 --> 00:35:40.490
an den Steuerknüppel.

00:35:41.370 --> 00:35:43.650
Das heißt, die haben versucht, an dem Steuerknüppel zu ziehen

00:35:43.650 --> 00:35:45.410
und das System hat dagegen gedrückt und irgendwann

00:35:45.410 --> 00:35:46.090
konnten die nicht mehr.

00:35:47.550 --> 00:35:49.410
Und das finde ich noch viel tragischer, wenn der

00:35:49.410 --> 00:35:51.530
halt gegen die Maschine kämpfen muss

00:35:51.530 --> 00:35:53.410
und die Maschine in dem Moment will dich

00:35:53.410 --> 00:35:55.550
umbringen, so fies gesagt

00:35:55.550 --> 00:35:56.190
und dann gewinnt sie auch noch.

00:35:56.190 --> 00:35:57.810
Das ist hart, das ist echt hart.

00:35:58.870 --> 00:36:00.490
Und dann, genau,

00:36:00.570 --> 00:36:02.510
nachdem diese beiden

00:36:02.510 --> 00:36:03.950
Flugzeuge abschürzt waren, ist ja auch die

00:36:03.950 --> 00:36:06.070
gesamte Flotte einfach stillgelegt worden

00:36:06.070 --> 00:36:07.570
mal für einen Moment, bis sie

00:36:07.570 --> 00:36:10.010
bis zu einer neuen Zertifikation durch war.

00:36:10.670 --> 00:36:11.770
Ja, die, die ja, ja.

00:36:12.130 --> 00:36:14.190
Also es war eine wirklich schöne Aufstellung

00:36:14.190 --> 00:36:16.150
von Dachern und so ein bisschen Hinweis.

00:36:16.190 --> 00:36:17.890
Auf der Mars-Mission ist vielleicht auch noch interessant.

00:36:18.290 --> 00:36:20.070
Ah ja, Mars-Mission, ja. Auch klassischer

00:36:20.070 --> 00:36:21.670
Fall. Ja, weil es dann einen kleinen Bug gab zwischen

00:36:21.670 --> 00:36:23.770
Umrechnung, zwischen metrischen und

00:36:23.770 --> 00:36:26.050
nur ein kleinerer. Wer ist nochmal das andere System?

00:36:26.230 --> 00:36:27.570
Genau, das eine, das imperiale.

00:36:29.010 --> 00:36:30.290
Genau, das eine hat halt

00:36:30.290 --> 00:36:32.210
den Zoll gerechnet und das andere hat den Millimeter

00:36:32.210 --> 00:36:33.410
gerechnet. Empire Strikes Back.

00:36:33.870 --> 00:36:51.890
Was ich total ironisch finde wirklich, wenn man mal in den USA war, da wird ja dieses Independence Day und diese Unabhängigkeit von England wirklich ganz, ganz, ganz, ganz hoch gehalten und keine Gelegenheit, nicht jedes Schiff und jeden Soldaten nochmal hervorzuheben, wie besonders das war, gegen England gewonnen zu haben, aber damit Händen und Füßen am imperialen System bei den Einheiten festzuhalten.

00:36:52.430 --> 00:36:53.890
Am Ende gewinnt der König doch.

00:36:56.470 --> 00:36:57.930
Ja, das war auch eine tragische Sache.

00:36:59.070 --> 00:37:00.090
Dieser Mars

00:37:00.090 --> 00:37:02.690
Reconnaissance Orbiter war das, glaube ich.

00:37:03.830 --> 00:37:04.730
Wo einfach

00:37:04.730 --> 00:37:06.370
die Positionierung nicht gestimmt hat. Das heißt,

00:37:06.450 --> 00:37:08.510
er wollte um den Mars kreisen, aber er hat

00:37:08.510 --> 00:37:10.050
ihn getroffen. Klabumm.

00:37:11.490 --> 00:37:12.490
Andererseits, das habe ich auch zum

00:37:12.490 --> 00:37:14.110
Jochen schon in dem Vortrag gesagt, ist auch so ein gewisser

00:37:14.110 --> 00:37:16.170
Power-Move von der Erde, dass wir da hier

00:37:16.170 --> 00:37:18.490
Jahre und Millionen reinstecken und dann einfach

00:37:18.490 --> 00:37:19.410
zack.

00:37:22.070 --> 00:37:23.210
Blüte im Orbit.

00:37:23.590 --> 00:37:24.850
Ja, und dann die anderen Geschichten.

00:37:25.090 --> 00:37:26.710
Da gibt es ja viele so Geschichten.

00:37:26.890 --> 00:37:29.410
Ich meine, die meisten Leute werden

00:37:29.410 --> 00:37:31.430
keine Software für Flugzeuge schreiben

00:37:31.430 --> 00:37:33.370
oder auch den Mars nicht mit irgendwas beschießen,

00:37:33.530 --> 00:37:35.670
aber was tatsächlich viel im Alltag

00:37:35.670 --> 00:37:38.250
irgendwie ja betrifft, und das ist tatsächlich

00:37:38.250 --> 00:37:39.630
auch immer eine sehr hübsche Fehler,

00:37:39.770 --> 00:37:41.610
dass Leute Excel-Sheets halt

00:37:41.610 --> 00:37:43.510
für alles mögliche verwenden. Und dann da

00:37:43.510 --> 00:37:45.790
halt diese ganzen normalen Standard-Software-

00:37:45.790 --> 00:37:47.470
Engineering-Practices, die man halt so hat,

00:37:47.470 --> 00:37:49.270
die einen vor dem Gröbsten irgendwie

00:37:49.270 --> 00:37:49.890
bewahren,

00:37:51.090 --> 00:37:52.410
Die gibt es da halt nicht.

00:37:52.850 --> 00:37:54.510
Man kann auch Excel dann das nachbauen.

00:37:54.530 --> 00:37:54.670
Bitte?

00:37:54.870 --> 00:37:55.630
Man kann das dann auch nachbauen.

00:37:55.770 --> 00:37:57.690
Ja, aber hast du schon mal gesehen,

00:37:57.770 --> 00:38:00.390
dass jemand Excel-Sheets in quasi...

00:38:00.390 --> 00:38:01.690
Habt ihr keine Unit-Tests auf euren Excel-Sheets?

00:38:01.690 --> 00:38:04.670
Ja, oder Unit-Tests oder irgendwie ein Repository eincheckt

00:38:04.670 --> 00:38:06.510
und das gibt es alles irgendwie nicht so richtig.

00:38:06.730 --> 00:38:07.050
Ja, ich habe...

00:38:07.050 --> 00:38:08.190
Nee, das geht alles über E-Mail.

00:38:08.190 --> 00:38:09.870
Du hast die Leiste von zwei Jahren nachgebaut.

00:38:09.990 --> 00:38:10.910
Das war eine ganz tolle Erfahrung.

00:38:11.610 --> 00:38:11.670
Ja.

00:38:12.050 --> 00:38:12.890
Ach so, du hast das mal nach...

00:38:12.890 --> 00:38:13.390
Oh Gott.

00:38:13.910 --> 00:38:14.270
Genau.

00:38:15.710 --> 00:38:16.690
Das kann ja dann auch...

00:38:16.690 --> 00:38:18.110
Also sie hat ja da so ein paar Sachen erwähnt,

00:38:18.230 --> 00:38:19.870
die einfach richtig schlimme Folgen haben.

00:38:20.070 --> 00:38:21.510
JP Morgan hat halt

00:38:21.510 --> 00:38:23.010
eine von den Berechnungen, haben sie

00:38:23.010 --> 00:38:25.550
addiert,

00:38:25.670 --> 00:38:27.230
statt zu mitteln.

00:38:27.490 --> 00:38:29.290
Und dann haben sie ihre Risikobewertung einfach

00:38:29.290 --> 00:38:31.430
um Faktor 2 falsch gehabt und Milliarden an Dollar

00:38:31.430 --> 00:38:31.790
verloren.

00:38:33.550 --> 00:38:35.570
Ja gut, als Softwareentwickler

00:38:35.570 --> 00:38:36.990
sagt man, selber schuld.

00:38:37.530 --> 00:38:38.370
Hättet ihr mal von uns gehört.

00:38:38.370 --> 00:38:39.430
Als Bank heißt es so.

00:38:40.550 --> 00:38:42.190
Passiert mir jedes zweite Wochenende.

00:38:43.870 --> 00:38:44.210
Ja,

00:38:44.290 --> 00:38:45.510
sechs Milliarden unter Freunden kommen.

00:38:47.710 --> 00:38:48.450
Ja, genau.

00:38:48.910 --> 00:38:51.530
Also es war wirklich eine schöne Zusammenstellung, war sehr unterhaltsam, war ein guter Anfang.

00:38:51.550 --> 00:38:52.730
Sie hat auch einen sehr guten Vortragsstil.

00:38:52.930 --> 00:38:54.230
Ja, war wirklich sehr angenehm.

00:38:55.910 --> 00:38:56.950
Ja, was gab es denn da noch?

00:38:57.210 --> 00:38:57.570
Danach.

00:38:58.190 --> 00:38:59.370
Oh ja, das war cool.

00:38:59.550 --> 00:39:02.990
Danach war so ein bisschen, für mich ein bisschen bisher das Highlight des Tages.

00:39:03.570 --> 00:39:05.470
Das Highlight der Woche bisher.

00:39:06.210 --> 00:39:07.010
Haki Benita.

00:39:07.170 --> 00:39:07.390
Genau.

00:39:08.070 --> 00:39:09.770
How to get foreign keys horribly wrong.

00:39:09.890 --> 00:39:14.870
Ja, das müsst ihr mir jetzt erzählen, weil ich bin nämlich in der Zeit rübergegangen zu dem anderen Workshop.

00:39:15.830 --> 00:39:19.210
Und ja, habe dann aber nicht wirklich zugehört, sondern gearbeitet.

00:39:20.430 --> 00:39:21.250
Ja gut, dann...

00:39:21.250 --> 00:39:22.530
Aber deswegen kann ich das für Wirtschaft kennen.

00:39:22.750 --> 00:39:25.030
Aber den Topf von Haki Benita hätte ich gerne noch mehr verstanden,

00:39:25.130 --> 00:39:26.330
wie man den Foreign Keys richtig macht.

00:39:27.250 --> 00:39:28.530
Indizes setzen oder was hat er gesagt?

00:39:28.770 --> 00:39:32.250
Ja, aber also die Sache an Haki Benita ist,

00:39:32.330 --> 00:39:35.930
der ist ein DBA, ein Database Admin,

00:39:36.110 --> 00:39:37.950
der seit 20 Jahren im Geschäft ist, der kennt alle Tricks.

00:39:40.150 --> 00:39:43.070
Und er hat einen sehr unterhaltsamen Vortragsstil.

00:39:43.430 --> 00:39:44.090
Sehr energetisch.

00:39:44.710 --> 00:39:59.250
Ja, und auch das Publikum mit einbezogen und Fragen und dann auf Leute gezeigt und so. Also es ist großartig. Aber er hat so ganz harmlos angefangen. Er hat gesagt, ja, was fällt euch da auf? Und dann kam natürlich so, ja, da muss man Index machen. Und er hat gesagt, ja, aber?

00:40:00.750 --> 00:40:14.930
Und dann hat er das gemacht und hat so ein bisschen da die Sachen erzählt und dann gesagt, was fällt euch denn jetzt auf? Und dann ist er noch eine Ebene runtergegangen und dann kamen schon weniger Kommentare und dann hat er gesagt, was fällt euch denn jetzt auf? Also er ist einfach ganz harmlos angefangen und dann so tief runtergegangen.

00:40:16.230 --> 00:40:16.910
Ja, okay.

00:40:17.670 --> 00:40:20.190
Aber als er dann aufgehört hat,

00:40:20.230 --> 00:40:21.870
hat das Publikum an seiner Stelle weitergemacht

00:40:21.870 --> 00:40:23.550
und hat ihm gesagt, weil er wusste noch nicht.

00:40:24.190 --> 00:40:25.930
Und sein Fazit war dann so,

00:40:26.030 --> 00:40:27.650
okay, das mit den Migrationen sollte man einfach lassen.

00:40:27.790 --> 00:40:29.050
Das ist keine gute Idee, das irgendwie

00:40:29.050 --> 00:40:31.930
nicht machen. Ja, also es ist wirklich

00:40:31.930 --> 00:40:33.850
problematisch. Je genauer man hinguckt, desto

00:40:33.850 --> 00:40:34.710
mehr Probleme

00:40:34.710 --> 00:40:37.110
sieht man da auch.

00:40:38.210 --> 00:40:39.850
Die natürlich aber auch nie, nur nicht in

00:40:39.850 --> 00:40:41.490
allen Cases wirklich realistisch.

00:40:41.790 --> 00:40:43.230
Bevor jetzt wieder so eintaucht,

00:40:43.550 --> 00:40:45.270
wir müssen erstmal kurz nochmal erkennen,

00:40:45.750 --> 00:40:48.110
Also, dass das ein interessanter Talk war, haben wir jetzt verstanden, aber

00:40:48.110 --> 00:40:49.850
worum ging es denn jetzt eigentlich?

00:40:50.230 --> 00:40:51.270
Also es... Willst du?

00:40:51.570 --> 00:40:53.910
Nee, sprich du, René. Also im Endeffekt ging es

00:40:53.910 --> 00:40:55.810
darum, es war im Endeffekt ein Standardmodel, also

00:40:55.810 --> 00:40:57.850
Django-Model, jetzt mehr oder weniger

00:40:57.850 --> 00:40:59.910
was man halt so kennt

00:40:59.910 --> 00:41:00.790
und

00:41:00.790 --> 00:41:02.010
die

00:41:02.010 --> 00:41:05.930
und dann ging es

00:41:05.930 --> 00:41:07.730
halt darum, so quasi, was

00:41:07.730 --> 00:41:09.570
kann man daran verbessern? Hat sich halt

00:41:09.570 --> 00:41:11.290
Expedition of Foreign Peace bezogen. Oder was ist gefährlich auch.

00:41:11.470 --> 00:41:13.210
Genau, oder was könnte gefährlich sein?

00:41:14.110 --> 00:41:15.430
Natürlich immer mit dem

00:41:15.430 --> 00:41:17.490
Hintergedanken, wenn man da jetzt eine Tabelle

00:41:17.490 --> 00:41:19.230
mit 50 Einträgen hat oder auch

00:41:19.230 --> 00:41:21.470
500.000, ist das wahrscheinlich alles relativ egal

00:41:21.470 --> 00:41:23.530
oder kein Hochverfügbarkeitssystem,

00:41:23.690 --> 00:41:25.210
aber halt, was für Systeme kann,

00:41:25.350 --> 00:41:27.170
was kann man halt theoretisch kaputt machen,

00:41:27.330 --> 00:41:29.350
ohne es zu wissen und dann hat er sich halt

00:41:29.350 --> 00:41:31.070
quasi dann darüber rausgehangelt,

00:41:31.290 --> 00:41:32.270
wie sieht es aus mit,

00:41:33.190 --> 00:41:35.330
wenn ich diesen Index setze, was ist mit automatisch

00:41:35.330 --> 00:41:37.270
gesetzten Indizes, kann ich die wegnehmen?

00:41:38.190 --> 00:41:39.410
Ja, genau

00:41:39.410 --> 00:41:41.070
und wie weit kann man da gehen?

00:41:41.850 --> 00:41:43.330
Genau. Was kann man alles

00:41:43.330 --> 00:41:45.330
kaputt machen, was kann einem alles implizit

00:41:45.330 --> 00:41:47.230
auf die Füße fallen. Genau. Und dann auch viel über

00:41:47.230 --> 00:41:49.410
Migrations, Migration-Anordnungen,

00:41:49.510 --> 00:41:51.310
was man damit noch anders machen kann, also indem

00:41:51.310 --> 00:41:53.210
man die einfach auseinanderzieht, atomare

00:41:53.210 --> 00:41:55.190
Transaktionen, also Datenbank-Atomare-Transaktionen,

00:41:55.610 --> 00:41:57.210
genau, Reihenfolge und da halt immer weiter

00:41:57.210 --> 00:41:59.270
runter und das halt in einem sehr, sehr

00:41:59.270 --> 00:42:01.210
energetischen, interaktiven

00:42:01.850 --> 00:42:03.130
Weg, um auch dieses Thema, das

00:42:03.130 --> 00:42:05.350
man auch perfekt, ultra-trocken irgendwie

00:42:05.350 --> 00:42:06.270
runterbeten könnte.

00:42:07.010 --> 00:42:09.130
Also das ist tatsächlich einer von den Talks, die ich mir auf die Liste

00:42:09.130 --> 00:42:11.370
geschrieben habe, für die muss ich später nochmal nachschauen.

00:42:11.590 --> 00:42:13.010
Ja, solltest du, also was

00:42:13.010 --> 00:42:15.050
konkrete Dinge drin waren, wie zum Beispiel ist sowas wie,

00:42:15.090 --> 00:42:18.090
du hast halt einen Foreign Key auf dein User-Modell

00:42:18.090 --> 00:42:21.030
als Created Ad oder sowas an irgendeinem Modell dran

00:42:21.030 --> 00:42:25.170
und wenn du jetzt sagst, okay, das wird jetzt schon allmählich relativ groß,

00:42:25.650 --> 00:42:28.510
das wird eh nicht benutzt und dann nimmst du den Index weg

00:42:28.510 --> 00:42:32.050
und dann löscht irgendein automatischer Job ab und zu mal User

00:42:32.050 --> 00:42:34.150
und legt dann deine Datenbank lahm,

00:42:34.230 --> 00:42:37.510
weil, naja, es gibt keinen Index mehr auf dem Ding

00:42:37.510 --> 00:42:39.530
und dann macht das halt ein Table-Scan bei jedem User,

00:42:39.590 --> 00:42:42.470
der gelöscht werden soll und wenn das viele sind, dann, naja, es ist halt...

00:42:42.470 --> 00:42:46.310
Ja, auch wenn es einmal auftritt, wenn du irgendwo eine Tabelle mit Millionen rein hast.

00:42:46.590 --> 00:42:48.970
Wenn du bei Instagram mit 500 Millionen Nutzern scheinst, dann bist du da.

00:42:49.090 --> 00:42:50.290
Ja, genau, die müssen da schon aufpassen.

00:42:51.010 --> 00:42:52.170
Das hat er am Ende auch gesagt.

00:42:52.290 --> 00:42:57.910
Viele von den Sachen sind halt jetzt rausgesucht als Probleme für einen Vortrag, sonst kannst du nichts zeigen.

00:42:59.050 --> 00:43:00.350
So für den Hausgebrauch.

00:43:01.390 --> 00:43:08.970
Weil wenn du 10.000 TPS hast, Transaktionen pro Sekunde, ist das sicherlich ein anderes Thema, als wenn du drei Transaktionen pro Sekunde hast.

00:43:09.670 --> 00:43:31.870
Also ich glaube, einer von den Learnings war, dass er quasi die Nutzer aware gemacht hat, dass Django sehr viele Dinge für einen mitdenkt und dass es halt Cases gibt, wo man das nicht tun, also wo man Django nicht das, also er hat am Anfang die Queries, glaube ich, mit angemacht, die bei den Queries, dass man sieht, was passiert.

00:43:31.870 --> 00:43:34.090
Ja, oder dass man auf jeden Fall immer die Queries

00:43:34.090 --> 00:43:35.290
sich bei einer Migration zum Beispiel,

00:43:35.370 --> 00:43:38.510
da hat er dann irgendwie eine schöne Stop-Slide,

00:43:39.070 --> 00:43:40.410
die dann ab und zu mal kamen,

00:43:40.470 --> 00:43:42.110
sondern erst einmal mal das SQL angucken,

00:43:42.190 --> 00:43:44.570
bevor man die Migration wirklich ausführt, weil...

00:43:44.570 --> 00:43:46.490
Den wichtigsten Schritt hat er da für mich

00:43:46.490 --> 00:43:47.950
eigentlich in den Fragen am Ende gesagt.

00:43:48.450 --> 00:43:50.790
Dann hat er nämlich gesagt, bei Ihnen machen Sie es so,

00:43:51.050 --> 00:43:52.610
dass Sie eine GitHub-Action haben,

00:43:53.290 --> 00:43:55.230
die das SQL, wenn du eine Migration machst,

00:43:55.230 --> 00:43:58.250
schreibt die dir das SQL als Kommentar in deine Review.

00:43:58.290 --> 00:43:59.270
Das fand ich auch krass.

00:44:00.150 --> 00:44:02.410
Das heißt, du bist gezwungen, dieses SQL anzugucken.

00:44:02.530 --> 00:44:05.730
Du kannst nicht zustimmen, ohne das SQL gesagt zu haben.

00:44:05.810 --> 00:44:11.090
Und das fand ich einen super Trick, weil das so ein, das ist psychologisch korrekt,

00:44:11.210 --> 00:44:14.730
das ist kein, wir halten dich ab, das zu tun, sondern ein, hier, guck doch mal.

00:44:16.150 --> 00:44:17.010
Absolut. Großartig.

00:44:17.390 --> 00:44:22.850
Und was auch noch echt cool war, der hat gesagt, dass sie exzessiv die Django-Checks verwenden,

00:44:22.850 --> 00:44:24.590
also die System-Check-Framework.

00:44:24.610 --> 00:44:25.690
Aber mit eigenen geschriebenen Regeln.

00:44:25.710 --> 00:44:28.930
Genau, also erstmal hängt es bei denen in der Pipeline, das geht relativ einfach,

00:44:28.990 --> 00:44:30.490
Das haben wir jetzt auch angefangen einzubauen.

00:44:30.690 --> 00:44:34.270
Also das führt auch dazu, dass man da einmal wirklich auch mal guckt, was Django so meldet.

00:44:34.370 --> 00:44:38.110
Manche Dinge machen jetzt auch zum Beispiel in der Pipeline keinen Sinn, manche Einstellungen.

00:44:38.210 --> 00:44:42.090
Aber trotzdem, dass man die da einmal so konfrontiert, dass der Pipeline grün ist, was schon mal super ist.

00:44:42.530 --> 00:44:48.430
Und eigene Checks wirklich zu verwenden, weil die laufen natürlich in jedem Mal, wenn der Development-Server startet.

00:44:48.430 --> 00:44:53.610
Das heißt, wenn man da sehr viele hat oder sehr langsame hat, kann man natürlich die Developer-Experience massiv beeinflussen, negativ.

00:44:54.010 --> 00:44:58.190
Muss man ein bisschen aufpassen, weil viele Dinge könnte man auch irgendwie in der Linting-Stage machen vermutlich.

00:44:58.690 --> 00:45:11.790
Trotzdem hast du halt Zugriff auf das komplette initialisierte Django-Projekt und da kann man, glaube ich, sehr, sehr viele coole Dinge Richtung Code-Qualität machen, weil du halt den Leuten sagst, hey, guck mal hier, lieber Mitentwickler, folgendes ist gerade komisch.

00:45:12.350 --> 00:45:20.970
Das ist sehr mächtig und das ist auch eine Sache, wo ich mich auch nochmal mehr damit beschäftigen möchte, weil ich glaube, dass man da nochmal sehr viel rausholen kann.

00:45:21.430 --> 00:45:22.950
wie letztes Jahr beim Vigo

00:45:22.950 --> 00:45:25.230
bei dem Talk. Deine Architektur

00:45:25.230 --> 00:45:27.170
oder Code-Qualität ist so gut wie dein Tooling, das du hast.

00:45:27.770 --> 00:45:28.670
Ohne Tooling

00:45:28.670 --> 00:45:30.550
degradet alles sofort.

00:45:32.490 --> 00:45:33.150
Also waren

00:45:33.150 --> 00:45:34.770
auf jeden Fall viele coole Sachen drin.

00:45:34.830 --> 00:45:36.050
Haki Benita ist immer gut.

00:45:38.070 --> 00:45:39.010
Kann ja die Links

00:45:39.010 --> 00:45:39.790
wieder unten reintun.

00:45:40.510 --> 00:45:41.410
Dann der nächste Talk.

00:45:42.190 --> 00:45:44.850
Karl Gipsen. War gar kein technischer Talk diesmal.

00:45:45.170 --> 00:45:46.210
Nee, hat er auch am Anfang

00:45:46.210 --> 00:45:48.370
so scherzhaft gesagt.

00:45:48.590 --> 00:45:50.650
Nächstes Mal wieder technischer Talk war viel zu anstrengend.

00:45:51.430 --> 00:45:54.110
Ja, how we make decisions in Django.

00:45:55.930 --> 00:45:56.290
Ja.

00:45:57.990 --> 00:45:59.590
Mir fällt es schwer, da jetzt was zu sagen.

00:46:00.930 --> 00:46:02.890
Ich habe in der Zeit was vergessen, Kaffee getrunken.

00:46:03.570 --> 00:46:07.590
Ja, ich würde auch zu, es ist halt ein schwieriges Thema und ich habe absolut keine Meinung dazu oder keine Ahnung davon.

00:46:08.030 --> 00:46:09.910
Ich würde auch sagen, so ja, ja.

00:46:10.250 --> 00:46:11.430
Ich finde es gut, dass das jemand macht.

00:46:11.830 --> 00:46:14.290
Ja, muss man, muss man.

00:46:14.290 --> 00:46:24.010
Also im Endeffekt, es ging ihm ja, glaube ich, ging ihm ja darum, dass er, ich werde darauf angesprochen, ich zu oft im Endeffekt sage.

00:46:24.090 --> 00:46:29.290
Ja, wir haben schon ein Fehlspiel draus gemacht. Das werden wir heute Abend beim Review der Folge nochmal spielen.

00:46:31.490 --> 00:46:40.270
Ging ihm darum, dass halt der Prozess wie über gewisse Dinge abgestimmt wird, also meist im Forum soll er diskutiert werden, dass das sehr, sehr mühsam ist.

00:46:40.270 --> 00:46:42.930
da kann ich doch einen schönen Bogen spannen zu meinem Eingangsthema.

00:46:43.850 --> 00:46:49.550
Ich habe vor einem Jahr in den Django-Storages,

00:46:49.590 --> 00:46:51.870
ungefähr vor einem Jahr, glaube ich, sind die Django-Storages,

00:46:51.870 --> 00:46:55.230
ist die Settings-API leicht verändert worden.

00:46:55.370 --> 00:46:58.130
Da gibt es statt mehreren Einzelvariablen eine Variable.

00:46:58.730 --> 00:47:01.310
Da gab es auch eine Warnung.

00:47:02.130 --> 00:47:03.890
Normalerweise kümmere ich mich da immer sofort drum,

00:47:03.930 --> 00:47:05.710
aber wir hatten einen ganz, ganz merkwürdigen Bug

00:47:05.710 --> 00:47:09.630
mit dem Thumbnail-Package, irgendwas ganz Wildes,

00:47:09.870 --> 00:47:11.510
wo nichts mehr funktioniert hat und

00:47:11.510 --> 00:47:12.950
ich hab dann einfach, ja, ich mach das dann später

00:47:12.950 --> 00:47:15.690
und dann irgendwann war die Warnung halt

00:47:15.690 --> 00:47:17.470
weg und ich so, ah, okay, dann

00:47:17.470 --> 00:47:19.530
Ja, perfekt. Selbstgelöst, super.

00:47:19.650 --> 00:47:21.670
Beste Probleme. Hat es halt auch nicht

00:47:21.670 --> 00:47:23.590
ausnahmsweise halt einmal nicht, wie das

00:47:23.590 --> 00:47:25.490
halt immer so ist. Das ist dieses Schweißer Käse Modell,

00:47:25.550 --> 00:47:27.330
das ist halt genau einmal. Das kommt ja nachher auch noch.

00:47:27.470 --> 00:47:28.350
Das kam vorher schon.

00:47:30.430 --> 00:47:31.610
Genau in dem

00:47:31.610 --> 00:47:33.410
einmal, wo man sich nicht sofort drum kümmert, wo

00:47:33.410 --> 00:47:35.430
irgendwas komisches passiert, wo man es halt dann doch irgendwie ein bisschen

00:47:35.430 --> 00:47:37.610
aufschiebt, in Kombination

00:47:37.610 --> 00:47:39.690
mit Django's

00:47:39.690 --> 00:48:07.570
was wir für S3, also für Datentransfer nach S3 verwenden, war eine Plattform, an der ich gearbeitet habe und genau in dem Zeitfenster, wo wir dann quasi das Django upgedatet haben, wo dann quasi diese Storage, also die Deprecation quasi aktiv wurde, wurden dann halt von den Nutzern hunderte von Dokumenten hochgeladen, was mehr Dokumente wahrscheinlich waren, als insgesamt bis jetzt hochgeladen wurden, weil das halt so ein neues Feature war, das dann live ging.

00:48:07.810 --> 00:48:15.590
Und leider hat Django Storage das nicht gemerkt. Django dachte, das Feld ist nicht mehr da und die Sachen sind alle in Nirvana gelandet. Das war ärgerlich.

00:48:16.730 --> 00:48:19.870
Eine schöne Übertreibung, die du hier wählst. Ärgerlich.

00:48:19.870 --> 00:48:29.490
Ja, war natürlich auch etwas schwierig, dann den Leuten zu erklären, sorry, bitte alles nochmal. Teilweise waren die Sachen natürlich einfach da, die sind da ja da.

00:48:30.130 --> 00:48:31.070
Ja klar, braucht man ja.

00:48:31.250 --> 00:48:37.250
So, weg. Ja, war sehr blöd, dann habe ich das halt im Django-Forum halt mal angesprochen, habe gesagt, hey Leute, es ist so was irgendwie dumm gelaufen, kann man nicht irgendwas tun.

00:48:37.250 --> 00:48:56.590
Und dann hat sich da so eine Diskussion ergeben, dass man ja vielleicht, weil Django ist ja super dokumentiert, so bis Version 1.0 zurück, ob man nicht einfach sagen soll, hey, wir machen irgendein Systemcheck mal wieder, ein Systemcheck, wo wir einfach sagen, hey, guck mal, du verwendest hier eine Variable, die soll das eigentlich nicht mehr geben, denk mal drüber nach, ob da alles richtig ist bei dir.

00:48:56.590 --> 00:49:07.070
Man kann ja Systemchecks aktiv disablen und so, wenn jetzt jemand der Meinung ist, er braucht jetzt die Login-URL für irgendwas anderes oder ein ganzes Party-Package, will unbedingt die Login, dann nimmt man es halt aus und lebt damit, dass die disabled ist.

00:49:07.250 --> 00:49:27.650
Gut, dann ist mehr oder weniger alles agreed worden, ich habe einen Pull-Request gemacht, habe mir sehr zum Ärger von manchen Leuten eine initiale Liste von GPT generieren lassen, weil ich dachte, damit ich erstmal was habe zum Testen, ob es überhaupt funktioniert, habe die danach nochmal manuell abgeglichen, trotzdem waren direkt ein paar Leute böse, haben gesagt, hey, chill, wir sind noch nicht fertig.

00:49:27.650 --> 00:49:32.230
So, haben das dann gemacht.

00:49:32.330 --> 00:49:34.130
Ich habe nochmal quasi alle Change-Logs

00:49:34.130 --> 00:49:35.890
gemacht. Wir haben die nochmal verlinkt.

00:49:35.970 --> 00:49:37.950
Ich habe nochmal Optimierungsideen. Hey, wenn du

00:49:37.950 --> 00:49:39.870
ein Set verwendest statt eine Liste,

00:49:39.990 --> 00:49:41.270
das ist nochmal einen Ticken schneller, weil das

00:49:41.270 --> 00:49:43.250
läuft ja die ganze Zeit. Richtig

00:49:43.250 --> 00:49:45.370
coole Lösung. Und dann kam

00:49:45.370 --> 00:49:47.210
halt von einer Person, naja,

00:49:47.290 --> 00:49:48.930
wir machen doch keine

00:49:48.930 --> 00:49:50.890
deprecated Sachen im

00:49:50.890 --> 00:49:53.530
Framework. Und dann habe ich gesagt, ja, aber die Leute haben doch gesagt,

00:49:53.970 --> 00:49:55.310
ich bin nicht der Einzige, dem das passiert.

00:49:55.730 --> 00:49:56.950
Es hilft halt extrem.

00:49:57.570 --> 00:49:59.070
Es macht den Update-Prozess ein bisschen

00:49:59.070 --> 00:50:01.310
einfacher. Es gibt aktuell noch nichts, was

00:50:01.310 --> 00:50:03.210
das tut, weil sonst wäre es mir ja nicht passiert. Und ich bin

00:50:03.210 --> 00:50:05.350
ja aware, Dango Upgrade, das ganze Tooling,

00:50:05.350 --> 00:50:06.830
das es da gibt, klingt doch gut.

00:50:07.350 --> 00:50:09.210
Nee, machen wir nicht. Und

00:50:09.210 --> 00:50:11.210
irgendwie war dann halt so diese eine Gegenstimme

00:50:11.210 --> 00:50:13.250
gegen halt 10 Leute,

00:50:13.390 --> 00:50:15.450
15 Leute, die im PR mitgearbeitet

00:50:15.450 --> 00:50:17.310
haben, also auch wirklich motiviert mitgearbeitet

00:50:17.310 --> 00:50:19.170
haben oder halt auch im Forum sich

00:50:19.170 --> 00:50:21.110
geäußert haben und irgendwie

00:50:21.110 --> 00:50:23.230
hat halt diese eine Person das halt dazu

00:50:23.230 --> 00:50:25.410
gebracht, dass es halt da nicht passiert ist.

00:50:26.370 --> 00:50:26.770
Und...

00:50:26.770 --> 00:50:29.130
Wie der Diskussion von gestern, wer darf denn merchen und wer sagt

00:50:29.130 --> 00:50:31.050
dann nein? Oder auch das, was

00:50:31.050 --> 00:50:32.950
Carlton gesagt hat, dass Konsens gesucht wird.

00:50:33.090 --> 00:50:35.090
Genau, das ist ja genau das. Und ich glaube, dass er

00:50:35.090 --> 00:50:37.090
hat, also selbst Carlton war ja auch in dem

00:50:37.090 --> 00:50:39.030
Thread da dabei und da hat er

00:50:39.030 --> 00:50:40.990
dann auch das durchklingen lassen, was

00:50:40.990 --> 00:50:42.930
glaube ich, teilweise hinter der Motivation

00:50:42.930 --> 00:50:45.030
dieses Vortrags stand, weil ihn das, glaube

00:50:45.030 --> 00:50:46.570
ich, auch manchmal einfach frustriert,

00:50:47.050 --> 00:50:48.490
dass es halt dann quasi, ne,

00:50:48.630 --> 00:50:51.130
alle Leute sagen, okay, das können wir machen,

00:50:51.250 --> 00:50:52.250
wie dieser schöne Spruch,

00:50:53.250 --> 00:50:54.410
komm ich jetzt drauf,

00:50:55.010 --> 00:50:56.910
safe enough, good enough for now, safe enough

00:50:56.910 --> 00:50:58.930
to try, so, im allerschlimmsten Fall

00:50:58.930 --> 00:51:01.010
muss man halt so ein Security, dann baut man den Check

00:51:01.010 --> 00:51:02.770
halt wieder aus, wenn man merkt, dass es jetzt nach drei,

00:51:02.890 --> 00:51:04.770
nach einem Major Release furchtbar ist und

00:51:04.770 --> 00:51:06.930
alle es doof finden, dann ist es halt, hast du ja nicht

00:51:06.930 --> 00:51:08.670
mehr, so, keine Ahnung. Und

00:51:08.670 --> 00:51:10.250
ich glaube, dass das so ein bisschen auch der,

00:51:10.630 --> 00:51:12.710
einer der Väter, der Gedanken war, weil ich glaube,

00:51:12.730 --> 00:51:13.970
der erlebt sowas halt sehr, sehr oft.

00:51:14.470 --> 00:51:16.550
Und das hat eine Person, die Handbremse quasi,

00:51:16.670 --> 00:51:18.810
einmal so quasi schön den Stock ins Getriebe,

00:51:19.230 --> 00:51:20.810
wo mehr oder weniger sich eine coole Dynamik

00:51:20.810 --> 00:51:22.410
entwickelt hat, wo man dann auch wirklich sagen kann,

00:51:22.450 --> 00:51:24.870
guck mal, das hilft vor allem Newbies halt.

00:51:25.730 --> 00:51:26.890
Ja, man gibt halt vor allem

00:51:26.890 --> 00:51:28.250
dem Veto sehr viel Macht.

00:51:28.970 --> 00:51:30.810
Jeder kann sagen nein und dann stimmt es.

00:51:30.950 --> 00:51:32.050
Und egal, wie viele Leute vorher...

00:51:32.050 --> 00:51:33.610
Ich habe da eine ein bisschen gespaltene Meinung zu.

00:51:34.210 --> 00:51:36.570
Ja, es ist auch schwierig, aber wenn

00:51:36.570 --> 00:51:38.690
sowas unterwegs ist, das ist natürlich super

00:51:38.690 --> 00:51:40.850
frustrierend, wenn du schon viel Zeit und viel Arbeit

00:51:40.850 --> 00:51:42.670
reingesteckt hast und die Zustimmung gekriegt hast

00:51:42.670 --> 00:51:43.750
und dann sagt einer, ach nö, du.

00:51:43.790 --> 00:51:46.830
Also ich bin ganz auf der Meinung, so better ask for forgiveness

00:51:46.830 --> 00:51:47.530
than for permission.

00:51:48.430 --> 00:51:49.650
Das ist aber hier ja nicht so.

00:51:49.710 --> 00:51:52.470
Das ist aber genau bei so einem Framework, aber vielleicht

00:51:52.470 --> 00:51:54.710
genau falsch rum ist, weil könnte ja sein,

00:51:54.830 --> 00:51:56.170
dass ein Flugzeug mit so einem Dango läuft

00:51:56.170 --> 00:51:58.630
und da muss man, ja also.

00:51:58.790 --> 00:52:00.790
Es ist auch so, dass man manche Sachen

00:52:00.790 --> 00:52:02.770
einfach nicht wieder zurücknehmen kann, weil du kannst manche,

00:52:02.770 --> 00:52:04.430
also es gibt da den Deprecation-Prozess,

00:52:04.650 --> 00:52:07.010
aber es sammelt sich an.

00:52:07.430 --> 00:52:09.450
Und das ist so ein...

00:52:09.450 --> 00:52:11.450
Deswegen verstehe ich sehr gut die Leute, die da so die Knüppel

00:52:11.450 --> 00:52:13.550
zwischen... Wenn der es richtig machen will, man kann es halt auch missbrauchen

00:52:13.550 --> 00:52:15.630
und es kann halt ätzend werden und es kann politisch werden.

00:52:15.650 --> 00:52:16.450
Ja, und es muss vor allem grün im Prozess sein.

00:52:16.850 --> 00:52:18.990
Genau, und dann erst die Leute losrennen lassen, zwei Jahre Arbeit,

00:52:19.130 --> 00:52:21.270
ach nee, übrigens doch nicht, ist halt ziemlich

00:52:21.270 --> 00:52:23.450
blöd. Also ich meine, im Endeffekt haben wir halt

00:52:23.450 --> 00:52:25.290
genau das gemacht, um auf den Tortag wieder zu kommen,

00:52:25.430 --> 00:52:27.610
was Carlton halt auch vorgeschlagen

00:52:27.610 --> 00:52:29.350
hat. Er sagt, das Ecosystem von

00:52:29.350 --> 00:52:30.570
Django ist halt im Endeffekt

00:52:30.570 --> 00:52:33.190
einer der Haupt-USBs.

00:52:34.170 --> 00:52:34.970
Ich hab's schon wieder gesagt.

00:52:35.790 --> 00:52:36.710
Ich freu mich drauf hingewiesen.

00:52:37.430 --> 00:52:38.450
und

00:52:38.450 --> 00:52:41.250
dass neue Dinge

00:52:41.250 --> 00:52:43.150
erstmal in Packages leben sollen und wenn man

00:52:43.150 --> 00:52:45.210
wirklich das Gefühl hat, dass das unbedingt

00:52:45.210 --> 00:52:47.070
in Core rein muss und ansonsten

00:52:47.070 --> 00:52:48.990
ein gut gewartetes Package halt keinen Nachteil zum

00:52:48.990 --> 00:52:51.130
eigentlichen Django hat, vor allem gibt es

00:52:51.130 --> 00:52:52.230
diesen schönen Spruch aus Python,

00:52:52.890 --> 00:52:55.250
Features go to the main library

00:52:55.250 --> 00:52:56.950
to die. Also sprich, sobald irgendwas

00:52:56.950 --> 00:52:59.170
in der Main Library ist, wird einfach nichts mehr daran entwickelt,

00:52:59.270 --> 00:53:01.210
weil die Zyklen einfach viel zu langsam sind,

00:53:01.390 --> 00:53:02.990
dumm. Von daher gibt es jetzt Django

00:53:02.990 --> 00:53:05.010
Removals, ganz kurz, noch einen kurz, also wer

00:53:05.010 --> 00:53:06.730
sich dafür interessiert, das ist

00:53:06.730 --> 00:53:08.850
sehr, sehr klein und tut nur was

00:53:08.850 --> 00:53:10.850
auf dem Development-Server, kann man theoretisch, wenn man das

00:53:10.850 --> 00:53:13.050
möchte, auch als Development-Dependence

00:53:13.050 --> 00:53:14.770
installieren, dann läuft es ja nicht in der Pipeline und

00:53:14.770 --> 00:53:16.710
dann kann man quasi, wenn man vor allem für alte

00:53:16.710 --> 00:53:18.930
Projekte, Fun Fact, in jedem

00:53:18.930 --> 00:53:20.730
einzelnen alten Projekt, also alt

00:53:20.730 --> 00:53:22.550
sage ich mal 2018 und davor,

00:53:23.010 --> 00:53:24.790
habe ich mindestens eine Variable gefunden, die

00:53:24.790 --> 00:53:26.810
nicht mehr da drin sein sollen, hat in allen anderen Fällen

00:53:26.810 --> 00:53:28.630
keine Auswirkungen gehabt, die hat einfach nichts getan,

00:53:29.150 --> 00:53:30.750
aber trotzdem interessant, das mindestens einmal

00:53:30.750 --> 00:53:32.290
drüber laufen zu lassen und zu merken,

00:53:32.470 --> 00:53:34.450
was man vielleicht vergessen hat. Hat mich auch von

00:53:34.450 --> 00:53:36.210
das auch dann ein bisschen, also irgendwie einfach ein altes

00:53:36.210 --> 00:53:37.650
Template genommen und dann mit neuem

00:53:37.650 --> 00:53:40.710
alte Settings halt gehabt und dann

00:53:40.710 --> 00:53:42.730
da bumm, hup, huch.

00:53:43.110 --> 00:53:44.250
Wenn man es dann merkt, ist gut.

00:53:44.250 --> 00:53:44.910
Jetzt hast du die Lösung.

00:53:46.510 --> 00:53:48.370
Das Problem, was ich habe mit

00:53:48.370 --> 00:53:50.370
der Library-Lösung ist

00:53:50.370 --> 00:53:52.410
Visibility. Ja, weil niemand

00:53:52.410 --> 00:53:53.470
erfährt davon, dass es das gibt.

00:53:53.790 --> 00:53:56.250
Hast keine Chance, wenn du nicht Carlton Gibson

00:53:56.250 --> 00:53:57.250
heißt oder sonst was,

00:53:58.130 --> 00:54:00.370
irgendwo Benutzer für deine Library anzukriegen.

00:54:00.430 --> 00:54:02.230
Wenn es irgendwie so ein Nischen-Use-Case ist, also ich

00:54:02.230 --> 00:54:04.310
habe so ein Feature, was ich gerne

00:54:04.310 --> 00:54:06.010
in Django drin hätte, wo ich jetzt auch schon mit mehreren Leuten

00:54:06.010 --> 00:54:06.930
drüber gesprochen habe.

00:54:07.970 --> 00:54:09.090
Einziger Grund, warum du hier bist.

00:54:09.190 --> 00:54:12.290
Wo ich jetzt mich mal so langsam rantasten werde

00:54:12.290 --> 00:54:13.850
und es ist auch wirklich was ganz Kleines.

00:54:14.910 --> 00:54:16.010
Ja, das erzähl ich nachher mal.

00:54:16.310 --> 00:54:17.810
Da muss ich erst noch mehr politischen

00:54:17.810 --> 00:54:20.570
guten Wirklichkeiten, bevor ich das verraten kann.

00:54:20.710 --> 00:54:21.670
Aber, okay.

00:54:22.310 --> 00:54:24.170
Es wäre eine sehr einfache Änderung und es wäre

00:54:24.170 --> 00:54:25.870
auch was, was man einfach in der Bibliothek machen würde,

00:54:25.930 --> 00:54:28.250
aber wenn ich es in der Bibliothek machen würde, wäre es unsichtbar.

00:54:28.470 --> 00:54:29.910
Niemand würde das finden.

00:54:30.490 --> 00:54:32.170
Weil es eine Funktionalität von

00:54:32.170 --> 00:54:33.750
Django, die in Django Core drin ist,

00:54:33.950 --> 00:54:35.910
erweitert. Genauso wie bei

00:54:35.910 --> 00:54:38.010
den Removals. Da ist doch

00:54:38.010 --> 00:54:39.850
ein Warnungsmechanismus drin. Warum

00:54:39.850 --> 00:54:41.930
muss ich jetzt nochmal was machen, damit ich andere

00:54:41.930 --> 00:54:42.790
Warnungen bekomme?

00:54:43.930 --> 00:54:45.910
Ich glaube, dass das einfach, also das

00:54:45.910 --> 00:54:47.230
ist das, was mich frustriert. Dass

00:54:47.230 --> 00:54:49.790
es Dinge gibt, die man mit wenig

00:54:49.790 --> 00:54:51.790
Aufwand machen könnte, die halt Django

00:54:51.790 --> 00:54:53.710
erweitern. Und die Antwort ist, tu es in den Library.

00:54:53.990 --> 00:54:55.890
Ja, okay, aber dann ist es halt

00:54:55.890 --> 00:54:56.950
für mich. Dann ist es für mich.

00:54:57.910 --> 00:54:58.670
Ja, könnte ich auch machen.

00:55:01.530 --> 00:55:01.930
Entschuldigung.

00:55:03.030 --> 00:55:07.870
Dann folgen wir die DangoCon und machen die einfach bei uns in Germany.

00:55:08.290 --> 00:55:09.170
Gibt es ein großes Gerücht?

00:55:09.710 --> 00:55:11.190
Ja, mal sehen.

00:55:13.190 --> 00:55:14.050
Ja, also wir werden sehen.

00:55:14.390 --> 00:55:19.250
Ich meine, wir Softwareentwickler sind ja, wir mögen das technische Probleme zu lösen

00:55:19.250 --> 00:55:24.850
und jetzt hier geht es sehr viel, bei der Software Foundation ging es um Menschen und das ist doch blöd.

00:55:24.970 --> 00:55:25.950
Ja, das ist immer dasselbe Problem.

00:55:26.350 --> 00:55:28.910
Ich bin noch nicht Softwareentwickler geworden, um mit Menschen zu tun zu haben

00:55:28.910 --> 00:55:30.690
und jetzt muss ich mit Menschen sprechen, schrecklich.

00:55:31.170 --> 00:55:33.770
Ich könnte da so eine Coaching-AI

00:55:33.770 --> 00:55:34.270
fragen.

00:55:35.390 --> 00:55:37.150
Aber mit AI sprechen ist ja noch schlimmer.

00:55:37.930 --> 00:55:39.650
Warum? War jemand bei dem

00:55:39.650 --> 00:55:41.230
Workshop? Nee. Nein.

00:55:41.750 --> 00:55:43.490
Okay, schade. Dann müssen wir den jetzt auslassen.

00:55:43.730 --> 00:55:45.310
Der Building-Unique-Voting-System.

00:55:45.310 --> 00:55:46.590
Achso, nur eine Minute.

00:55:48.070 --> 00:55:49.050
Klingt aber interessant.

00:55:49.490 --> 00:55:51.030
Ja, hatte ich mich auch.

00:55:51.730 --> 00:55:53.370
Aber die Workshops, der war halt sehr

00:55:53.370 --> 00:55:55.370
lang und der hat dann zwei andere Talks überlegt.

00:55:56.130 --> 00:55:57.330
Ich habe auch überlegt, wo ich hier

00:55:57.330 --> 00:55:58.810
würde ich nicht skippen.

00:55:58.810 --> 00:55:59.910
Das war nicht für mich so interessant.

00:56:00.270 --> 00:56:01.930
Da bin ich erst drüber gegangen und dann habe ich gedacht, ach komm.

00:56:04.090 --> 00:56:05.190
Genau, dann gab es doch den

00:56:05.190 --> 00:56:07.070
How to Enjoy Debugging in Production.

00:56:07.270 --> 00:56:07.830
Oh ja, stimmt.

00:56:08.710 --> 00:56:10.130
Von Karen Tracy.

00:56:11.270 --> 00:56:13.290
Der war am Anfang sehr unterhaltsam, weil sie

00:56:13.290 --> 00:56:15.770
eine Kiste gekriegt hat,

00:56:15.810 --> 00:56:17.330
weil sie ein bisschen kleiner ist und nicht über dieses

00:56:17.330 --> 00:56:18.270
Pult gekommen ist.

00:56:18.770 --> 00:56:21.230
Das Audiosetup ist dieses Mal ein bisschen schwierig,

00:56:21.230 --> 00:56:23.210
habe ich das Gefühl. Da ist noch ein Mikrofon

00:56:23.210 --> 00:56:24.870
da vorne. Ja, das Mastering da.

00:56:25.510 --> 00:56:26.190
Ja, das Mastering.

00:56:26.350 --> 00:56:28.870
Sie haben es dann ja quasi so weit aufgedreht, bis es halt

00:56:28.870 --> 00:56:30.770
kurz vorm Rückkoppeln war. Das war immer noch

00:56:30.770 --> 00:56:31.250
viel zu leise.

00:56:32.950 --> 00:56:34.170
Das war in einem anderen

00:56:34.170 --> 00:56:36.730
Konzert. Aber das war eigentlich interessant, was

00:56:36.730 --> 00:56:37.990
sie erzählt hat. Es war super interessant.

00:56:39.130 --> 00:56:40.950
Was hat sie eigentlich, also das Wichtigste, was sie gesagt hat

00:56:40.950 --> 00:56:42.570
irgendwie. Es war aber auch wieder sowas

00:56:42.570 --> 00:56:44.690
so ein, ja,

00:56:44.830 --> 00:56:46.050
mach ich so. Ja, mach ich so.

00:56:46.570 --> 00:56:47.350
Kenn ich. Genau.

00:56:49.170 --> 00:56:50.790
Ja, sie sagt halt quasi,

00:56:50.870 --> 00:56:52.970
dass man für Produktionssysteme ein Logging, ein Monitoring

00:56:52.970 --> 00:56:54.790
extra braucht, was auch LRs kann und dass man

00:56:54.790 --> 00:56:55.630
das halt dazu bauen muss.

00:56:56.550 --> 00:56:58.490
Und dass man halt, also im Endeffekt, ich hab bei dem

00:56:58.490 --> 00:57:00.330
Talk ein bisschen was anderes erwartet. Das hat, glaube ich, auch

00:57:00.330 --> 00:57:01.890
irgendwer aus dem Publikum nachher gefragt,

00:57:02.410 --> 00:57:04.330
weil ich dachte eigentlich eher, es ging jetzt darum, wie man halt

00:57:04.330 --> 00:57:06.330
wirklich tatsächlich in Produktion irgendwas debuggt

00:57:06.330 --> 00:57:08.150
und ich glaube, ein Großteil ging halt davon, wie man eigentlich

00:57:08.150 --> 00:57:09.830
vermeidet, dass es so weit kommt,

00:57:10.170 --> 00:57:11.510
was ja auch genau der richtige Weg ist.

00:57:11.510 --> 00:57:13.510
Ja, gut, aber ich glaube, sie meinte, also Debugging hat sie

00:57:13.510 --> 00:57:15.230
tatsächlich hinter Logging und Monitoring verstanden, ne?

00:57:15.250 --> 00:57:17.310
Also, dass tatsächlich automatisiert nach

00:57:17.310 --> 00:57:19.350
Fehlermeldungen gesucht wird, weil ich glaube, die Menge, die sie hatte,

00:57:19.430 --> 00:57:21.230
war ziemlich viel, also sowas wie, keine Ahnung, Tausende

00:57:21.230 --> 00:57:23.490
von Messages, die immer so aufhoppen,

00:57:23.570 --> 00:57:25.370
dass man die halt ordentlich filtern und nach Prioritäten

00:57:25.370 --> 00:57:27.550
sortieren kann und sowas und dann halt

00:57:27.550 --> 00:57:29.770
die richtigen weiterleitet.

00:57:29.910 --> 00:57:31.510
Also dass dann bei jemandem so ein Licht angeht,

00:57:31.590 --> 00:57:32.950
dass er dann wirklich direkt drauf gucken kann.

00:57:33.710 --> 00:57:35.750
Und dafür muss man das natürlich alles noch nicht eingestellt haben.

00:57:36.130 --> 00:57:37.530
Und sein eigenes Laufsatz betreiben.

00:57:37.690 --> 00:57:39.210
Die Antwort auf diese Frage, die da kam,

00:57:39.270 --> 00:57:40.930
wie vermeidet man denn Fehler in der Produktion,

00:57:41.710 --> 00:57:42.950
fand ich eigentlich ziemlich gut.

00:57:43.330 --> 00:57:44.670
Weil sie hat halt gesagt, kannst du nicht.

00:57:45.210 --> 00:57:46.670
Du musst darauf vorbereitet sein,

00:57:46.750 --> 00:57:47.670
Fehler in der Produktion zu haben.

00:57:47.890 --> 00:57:48.770
Und egal, was du machst,

00:57:48.890 --> 00:57:50.070
wenn du mehr Testing machst, hast du weniger.

00:57:50.450 --> 00:57:51.110
Aber du hast sie trotzdem.

00:57:51.570 --> 00:57:52.910
Was ich auch sehr interessant fand,

00:57:53.530 --> 00:57:54.230
also wie gesagt, ich glaube,

00:57:54.390 --> 00:57:55.830
vieles von dem, was sie gesagt hat,

00:57:55.890 --> 00:57:57.990
so, ja, okay, man sollte Sentry haben,

00:57:58.310 --> 00:57:59.290
so, das ist eine gute Sache,

00:57:59.890 --> 00:58:01.870
aber was... Muss ich kurz was einwerfen?

00:58:02.370 --> 00:58:03.710
Ich habe jetzt kürzlich gelernt, es gibt

00:58:03.710 --> 00:58:05.430
Glitchtip. Glitchtip?

00:58:05.430 --> 00:58:07.810
Das hat die gleiche AP wie Sentry,

00:58:07.890 --> 00:58:09.830
das heißt, man benutzt Sentry Client, aber es ist

00:58:09.830 --> 00:58:11.530
einfacher zu hosten, weil es einfach so wie

00:58:11.530 --> 00:58:13.710
Sentry vor fünf Jahren ist. Okay.

00:58:14.330 --> 00:58:15.850
Für die kleinen Benutzer

00:58:15.850 --> 00:58:17.850
ist das einfacher als Sentry. Und wenn man dann groß wird, kann man

00:58:17.850 --> 00:58:18.990
auch auf Sentry umsteigen. Ja, cool.

00:58:20.050 --> 00:58:21.530
Entschuldigung, jetzt...

00:58:21.530 --> 00:58:23.390
Also was ich ganz jetzt dran fand, ist so

00:58:23.390 --> 00:58:25.690
dieses Sidenote aus der Praxis

00:58:25.690 --> 00:58:40.770
Zum Beispiel, jeder kennt das ja wahrscheinlich, wenn man als Entwickler fragt, was ist, wenn nichts passiert? Das kann nicht passieren. Was ist, wenn hier quasi, zum Beispiel man spricht DAPI an und zieht sich irgendwelche Daten und dann irgendwelche Nutzer haben dann eine Firma.

00:58:40.770 --> 00:59:09.350
Ja, okay, aber das ist eine Liste, was ist, wenn jetzt zwei kommen? Ja, das passiert nicht. Ja, was, wenn doch? Nein, das passiert nicht. Und genau diese Cases sind halt meistens die, die einem dann nachher das Genick brechen, weil dann doch irgendwo die zweite Firma kommt und da schon quasi über diese Strategien nachzudenken, bevor sie passieren und nicht zu sagen, also ich meine, es gibt natürlich Cases, wo es sich immer lohnt, die Handbremse zu ziehen, aber selbst wenn, das bewusst zu tun und nicht in irgendeinem random tiefen Python-Fehler dann zu explodieren oder einfach zu sagen,

00:59:09.350 --> 00:59:22.150
Also zum Beispiel, es gibt ja auch so einfach so dumme Strategien, dass man zum Beispiel sagt, oh, ich nehme zum Beispiel einfach die erste Firma und mache einfach weiter. Je nachdem, das muss man dann mit dem Kunden oder wer auch immer das dann für jemanden bauen.

00:59:22.150 --> 00:59:23.290
Ja, man muss rausfinden, ob es richtig ist.

00:59:23.290 --> 00:59:46.030
Genau. Oder dass man es irgendwo vermerkt oder sowas. Aber ich glaube, da kann man sich echt sehr, sehr viel Ärger sparen und vor allem auch den Stress, weil ich meine, im Endeffekt der einzige Unterschied zwischen Produktionsdebugging und lokalem Debugging ist, es macht ja jetzt nicht mehr oder weniger Spaß an sich, sondern du weißt halt, dass du gerade aktiv, hat jemand das Problem und im Zweifelsfall machst du gerade Daten kaputt, die du aufräumen musst. Das sind ja die Sachen, die es ätzend machen.

00:59:46.590 --> 00:59:50.730
Ja, und du hast auch nicht so viel Sichtbarkeit rein. Wenn du es lokal hast, kannst du ja fünfmal hintereinander den Fehler machen.

00:59:50.730 --> 00:59:52.870
Gut, ich meine, oft kann man es ja auch reproduzieren zum Glück,

00:59:53.010 --> 00:59:53.970
wenn irgendwie eine Möglichkeit...

00:59:53.970 --> 00:59:57.150
Also wir haben in mehreren großen Systemen das so eingebaut,

00:59:57.570 --> 01:00:00.350
dass wir so einen Job haben, der anonymisierte Dumps postet.

01:00:00.390 --> 01:00:02.610
Da gibt es ja auch ein cooles Package, auch aus Stuttgart.

01:00:03.810 --> 01:00:04.990
Django Scrubber heißt das.

01:00:05.850 --> 01:00:07.330
Da kann man über so eine Metaklasse,

01:00:07.330 --> 01:00:10.530
kann man quasi über Faker definieren, wie Daten anonymisiert werden.

01:00:10.690 --> 01:00:12.970
Also das heißt, du hast dann quasi produktionsnahe Daten

01:00:12.970 --> 01:00:15.550
gegen random Daten, mit denen es keinen Spaß macht zu arbeiten

01:00:15.550 --> 01:00:17.770
und die auch meistens irgendwie nicht ins UI passen und so.

01:00:18.270 --> 01:00:19.990
Also Django Scrubber könnt ihr euch mal anschauen auf jeden Fall.

01:00:20.050 --> 01:00:24.350
Das ist auch so, was du für sie meintest, ne? Also so Staging erzeugen, dass von der Datenvolumen genauso groß ist.

01:00:24.350 --> 01:00:43.430
Sie hat das nicht gesagt, aber im Endeffekt, das ist, glaube ich, das, was sie gemeint hat. Und wir haben halt dann immer so ein S3, also in den größeren Projekten, ein S3-Bucket, wo dann halt diese quasi, ne, so dieses typische logarithmische von der letzten Stunde, von der letzten Nacht, vom letzten Tag, von der letzten Woche, vom letzten Monat, die Dumps dann liegen, die dann immer aufgeräumt werden.

01:00:43.430 --> 01:00:59.270
Die kann man sich dann halt runterziehen und dann sagen, okay, da ist jetzt irgendein Bug mit User 27. Man kann ja Sentry auch so einstellen, dass die IDs geschickt werden nach Sentry, aber alle personenbezogenen Daten, also per Default nämlich sind alle User-Daten raus, also man kriegt gar nichts mit.

01:00:59.390 --> 01:01:00.910
Was natürlich schwierig ist, wenn man nicht weiß,

01:01:01.350 --> 01:01:02.510
was ist der Kontext. Welcher User war das?

01:01:02.910 --> 01:01:04.510
Aber das kann man relativ einfach

01:01:04.510 --> 01:01:07.050
ein Miniscript schreiben, dass im Endeffekt alles, was man nicht in Sentry

01:01:07.050 --> 01:01:08.550
haben möchte, rauswirft. Das heißt, vom

01:01:08.550 --> 01:01:11.030
GDPR ist man super safe und dann hast du

01:01:11.030 --> 01:01:12.890
halt die User-ID in Sentry, kannst damit das dann

01:01:12.890 --> 01:01:14.970
nachstellen, hast vielleicht noch die Produkt-ID, wo jemand geklickt hat,

01:01:15.030 --> 01:01:16.610
keine Ahnung. Und damit kann man

01:01:16.610 --> 01:01:18.870
viele Probleme, klar,

01:01:18.970 --> 01:01:20.910
wenn du irgendwas ganz fieses mit Concurrency oder

01:01:20.910 --> 01:01:22.950
verteilte Systeme oder sowas,

01:01:23.110 --> 01:01:24.630
das ist nochmal ein anderes Problem, aber

01:01:24.630 --> 01:01:25.570
ja.

01:01:26.370 --> 01:01:27.590
Ja, in solchen Systemen

01:01:27.590 --> 01:01:28.590
macht man halt einfach keine Fehler.

01:01:29.330 --> 01:01:33.770
Stimmt. Darum ist es auch einfach absolut gesehen besser. In jedem Fall.

01:01:34.390 --> 01:01:40.350
Es gibt ein Zitat von Donald Knuth, der geschrieben hat, beware the above code, I've only proved it, not tried it.

01:01:41.070 --> 01:01:45.130
Passt auf, was ihr mit diesem Code macht. Ich habe nur bewiesen, dass er richtig ist, aber ich habe ihn nicht ausprobiert.

01:01:46.570 --> 01:01:47.610
Ganz der Mathematiker.

01:01:47.610 --> 01:02:08.610
Ja, da gibt es auch so einen Anspruch, ich weiß jetzt gar nicht mehr von wem, sagt dann so Funktionierende, Definition von Funktionierender Software, also Funktionierende Software kann man nur so nennen, wenn sie zumindest in Produktion gewesen ist und da gescheitert und man sie dann schon mal ein paar Mal verbessert hat und dann so vorher kann man nicht sagen, dass sie funktioniert, weil wahrscheinlich…

01:02:09.390 --> 01:02:09.670
Nicht.

01:02:10.110 --> 01:02:11.770
War, genau, ja.

01:02:12.710 --> 01:02:12.910
Gut.

01:02:12.910 --> 01:02:17.590
Dann gab es noch einen Vortrag und zwar 100 Million Parking Tracks.

01:02:17.610 --> 01:02:19.090
Transactions per year with Django.

01:02:19.710 --> 01:02:21.770
Ja, die meinen halt mit Transaktionen was anderes als andere

01:02:21.770 --> 01:02:23.710
Leute, daher war das so ein bisschen verwirrend für mich,

01:02:23.930 --> 01:02:24.110
aber

01:02:24.110 --> 01:02:27.550
sie meinen damit tatsächlich, wie viele Leute sich so ein

01:02:27.550 --> 01:02:28.390
Parkzettel umsetzen.

01:02:29.810 --> 01:02:31.450
Hat er auch gesagt, es gibt verschiedene Sorten.

01:02:31.630 --> 01:02:32.630
Je nachdem, wo du parkst.

01:02:32.770 --> 01:02:35.250
Das ist das Backup von den Parkplätzen in den Niederlanden, oder?

01:02:35.530 --> 01:02:37.130
Ja, und jetzt auch in Deutschland, hat er auch gesagt.

01:02:37.170 --> 01:02:39.590
Ja, genau. War aber nicht auf der Karte drauf,

01:02:39.630 --> 01:02:41.210
hätte mich jetzt interessiert. Ja, ich habe auch so eine App,

01:02:41.290 --> 01:02:43.150
ich weiß nicht, Pay by Phone oder was das heißt,

01:02:43.250 --> 01:02:44.810
vielleicht benutzt ihr was ähnliches oder sogar den gleichen

01:02:44.810 --> 01:02:48.590
Ja, also da waren schon

01:02:48.590 --> 01:02:50.410
viele schöne Sachen drin und das ist halt

01:02:50.410 --> 01:02:52.630
schön zu sehen, dass man halt irgendwie,

01:02:52.810 --> 01:02:54.670
das sind ja nur irgendwie vier Leute oder so und die

01:02:54.670 --> 01:02:56.410
machen das halt quasi für alle Parkplätze

01:02:56.410 --> 01:02:58.770
und das machen sie mit Django und das funktioniert super.

01:02:58.950 --> 01:03:00.690
Es war also ein ETL-System, haben die gebaut?

01:03:00.710 --> 01:03:02.410
Genau, die haben so ein ETL-System mit Django Admin gebaut.

01:03:03.050 --> 01:03:04.690
Das fand ich so ein bisschen besonders.

01:03:04.890 --> 01:03:07.190
Weiß ich nicht, ob ich das dann gedacht hätte.

01:03:07.190 --> 01:03:09.050
Also, ne, du musst

01:03:09.050 --> 01:03:11.110
Daten, musst du erst irgendwo herbekommen

01:03:11.110 --> 01:03:12.510
und dann musst du dich transformieren und wieder

01:03:12.510 --> 01:03:14.930
Also Extract, Transform und

01:03:14.930 --> 01:03:15.490
Load. Genau.

01:03:18.710 --> 01:03:20.470
Weiß ja nicht jeder. Aber es ist

01:03:20.470 --> 01:03:22.570
trotzdem interessant, dass das mit dem

01:03:22.570 --> 01:03:24.890
Jungle-Framework, dass das auf der Skala

01:03:24.890 --> 01:03:26.770
funktioniert, dass die es mit vier

01:03:26.770 --> 01:03:28.750
Leuten maintained bekommen und sich auch

01:03:28.750 --> 01:03:30.470
noch gut dabei fühlen, sagt er.

01:03:31.450 --> 01:03:32.490
Das würde ich unterschreiben.

01:03:32.690 --> 01:03:34.190
Ich hätte das auch das Gefühl, dass es gut geht.

01:03:34.750 --> 01:03:36.730
Ich glaube, es gibt viele Setups, wo du das nicht

01:03:36.730 --> 01:03:38.550
mit vier Mann hinbekommst. Absolut.

01:03:39.250 --> 01:03:40.770
Das ist so ein bisschen der Take-away,

01:03:40.910 --> 01:03:43.010
wie weit du es treiben kannst.

01:03:43.470 --> 01:03:44.870
Es müssen auch vier gute Leute

01:03:44.870 --> 01:03:46.910
sein dann tatsächlich, die das gut organisieren können.

01:03:48.030 --> 01:03:49.330
Oder drei gute Leute

01:03:49.330 --> 01:03:51.130
und einer macht das, worauf die anderen keinen Bock haben.

01:03:53.350 --> 01:03:54.770
Das kam auch bei diesen anderen

01:03:54.770 --> 01:03:56.270
Talks, bei dem von Hake Benita.

01:03:57.910 --> 01:03:58.910
Gestern bei dem,

01:04:00.630 --> 01:04:00.910
wie man

01:04:01.470 --> 01:04:03.090
von Integer zu Big Integer

01:04:03.090 --> 01:04:04.690
wechselt, wenn du mehr als eine Milliarde

01:04:04.690 --> 01:04:06.950
Zeilen hast, da kam das durchaus

01:04:06.950 --> 01:04:08.770
für mich so ein bisschen raus, wie weit man

01:04:08.770 --> 01:04:10.430
mit diesen Tools gehen kann.

01:04:10.810 --> 01:04:13.270
wie viel Schmerz die doch die meiste Zeit

01:04:13.270 --> 01:04:13.930
von einem fernhalten.

01:04:15.250 --> 01:04:17.510
Wir haben ja vorhin über diesen Talk von Hage Benita

01:04:17.510 --> 01:04:19.430
gesprochen. Da könnte man jetzt rausziehen,

01:04:19.570 --> 01:04:21.170
dass das Migrationssystem blöd ist und

01:04:21.170 --> 01:04:23.150
dass man gleich von Anfang an SQL

01:04:23.150 --> 01:04:25.130
machen sollte und lieber eigene Indizes und so weiter.

01:04:25.790 --> 01:04:27.370
Aber für mich das Fazit ist ein anderes.

01:04:27.530 --> 01:04:29.370
Für mich das Fazit ist, du kannst

01:04:29.370 --> 01:04:31.230
das eigentlich so machen, wie du willst und

01:04:31.230 --> 01:04:33.270
sobald du dann an die Grenze stößt,

01:04:33.910 --> 01:04:35.170
gibt es trotzdem Mittel, um über

01:04:35.170 --> 01:04:36.450
diese Grenze noch hinauszukommen.

01:04:37.130 --> 01:04:39.070
Und auch unkompliziert. Das war ja kein

01:04:39.070 --> 01:04:41.130
Hexenberg, was er gemacht hat. Ja, und er hat auch gesagt,

01:04:41.250 --> 01:04:43.330
wenn es eine Möglichkeit gibt, das mit den Django-Mitteln

01:04:43.330 --> 01:04:45.150
zu machen, dann macht er das, weil es einfach

01:04:45.150 --> 01:04:46.850
komfortabler ist und

01:04:46.850 --> 01:04:49.770
zukunftssicherer und Datenbanktransferierbar

01:04:49.770 --> 01:04:50.110
und so weiter.

01:04:50.950 --> 01:04:52.830
Und das ist so ein bisschen eine schöne Bestätigung,

01:04:52.990 --> 01:04:55.050
dass man eigentlich sich erst mal

01:04:55.050 --> 01:04:57.030
keine Sorgen drüber machen muss, über den Erfolg.

01:04:57.610 --> 01:04:59.030
Ganz viele Leute

01:04:59.030 --> 01:05:01.090
machen sich dann Sorgen, was ist, wenn ich mal eine Million

01:05:01.090 --> 01:05:02.030
User habe? Okay.

01:05:03.770 --> 01:05:05.150
Zu viele Sorgen über den Erfolg

01:05:05.150 --> 01:05:07.070
gemacht. Und für mich ist das

01:05:07.070 --> 01:05:07.830
so ein bisschen die Botschaft.

01:05:08.530 --> 01:05:10.770
Man kann das machen und das funktioniert.

01:05:11.010 --> 01:05:12.950
Wenn ich jetzt noch drei Nutzer habe, vielleicht funktioniert

01:05:12.950 --> 01:05:13.890
das ja dann auch trotzdem.

01:05:15.710 --> 01:05:16.110
Vielleicht.

01:05:17.110 --> 01:05:19.090
Beim ersten geht es noch, beim zweiten...

01:05:19.090 --> 01:05:21.030
Als Mathematiker

01:05:21.030 --> 01:05:23.090
der größte Sprung ist eigentlich von 1 zu 2.

01:05:23.250 --> 01:05:24.770
Alle anderen sind dann...

01:05:24.770 --> 01:05:25.450
Das ist egal.

01:05:27.030 --> 01:05:28.910
Man kann ja auch nur noch mit Agenten reden.

01:05:30.730 --> 01:05:31.810
Ist das dann schon viele?

01:05:33.010 --> 01:05:34.370
Ist der Agent dann...

01:05:34.370 --> 01:05:35.410
Anderes Thema.

01:05:36.910 --> 01:05:39.310
Genau, das war's. Jetzt ist gerade Mittagspause.

01:05:39.910 --> 01:05:40.090
Ja.

01:05:41.170 --> 01:05:42.870
Es war Mittagspause, wir haben schon was verpasst.

01:05:43.050 --> 01:05:44.250
Ja, es läuft schon wieder was.

01:05:44.890 --> 01:05:46.690
Aber was tut man nicht für seine Hörer?

01:05:48.670 --> 01:05:49.350
Ja, dann

01:05:49.350 --> 01:05:51.270
schaltet uns wieder ein. Vielleicht morgen wieder,

01:05:51.350 --> 01:05:52.470
wir wissen es noch nicht ganz genau.

01:05:53.370 --> 01:05:53.850
Ja, mal schauen.

01:05:54.510 --> 01:05:56.350
Ja, morgen ist auch noch die Party abends.

01:05:56.790 --> 01:05:59.230
Und wir können ja nicht eigentlich, oder vielleicht auch am Samstag noch eine.

01:05:59.830 --> 01:06:00.610
Ja, schauen wir mal.

01:06:00.970 --> 01:06:02.790
Ja, also wie auch immer, wenn ihr uns wieder hört,

01:06:02.790 --> 01:06:04.190
bleibt uns gewogen, schaltet wieder rein.

01:06:04.270 --> 01:06:06.450
Hallo at peisenpodcast.de für alles Feedback.

01:06:06.670 --> 01:06:07.190
Vielen Dank, Ronny.

01:06:07.290 --> 01:06:07.970
Das sind wir effektiv am Ende.

01:06:08.230 --> 01:06:09.650
Danke, dass ich hier sein durfte.

01:06:09.830 --> 01:06:10.230
Danke auch.

01:06:10.630 --> 01:06:10.810
Ja.

01:06:11.370 --> 01:06:12.810
Und ja, dann bis morgen.

01:06:12.870 --> 01:06:13.170
Bis zum nächsten Mal.

01:06:13.310 --> 01:06:13.450
Tschüss.

01:06:13.750 --> 01:06:14.070
Ciao.

01:06:14.410 --> 01:06:14.610
Ciao.
