WEBVTT

00:00:00.000 --> 00:00:07.960
<v Dominik>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
<v Dominik>Ja, zweite Live-Episode.

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

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

00:00:12.560 --> 00:00:13.040
<v Dominik>Hallo Johannes.

00:00:13.380 --> 00:00:13.860
<v Dominik>Hallo zusammen.

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

00:00:15.300 --> 00:00:15.560
<v Dominik>Hallo Ronny.

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

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

00:00:18.300 --> 00:00:18.540
<v Dominik>Ja.

00:00:18.960 --> 00:00:22.780
<v Dominik>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
<v Dominik>Ja.

00:00:23.600 --> 00:00:27.540
<v Dominik>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
<v Dominik>Ja, fast pünktlich.

00:00:28.700 --> 00:00:37.140
<v Jochen>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
<v Jochen>Insofern, das ging nur so irgendwie unterschiedlich.

00:00:39.440 --> 00:00:43.520
<v Dominik>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
<v Dominik>Dann hatte ich aber meine Hotelzimmer-Eintrittskarte nicht.

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

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

00:00:53.140 --> 00:00:53.780
<v Jochen>Ja, genau.

00:00:53.780 --> 00:00:54.680
<v Jochen>Alles anders.

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

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

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

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

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

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

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

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

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

00:01:18.340 --> 00:01:18.780
<v Dominik>Ja.

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

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

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

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

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

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

00:01:39.440 --> 00:01:42.980
<v Ronny>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
<v Ronny>Wenn man sich damit beschäftigt hat, glaube ich, nicht allzu viele neue Dinge.

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

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

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

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

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

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

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

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

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

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

00:02:09.120 --> 00:02:11.020
<v Ronny>mich beworben hatte und

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

00:02:13.840 --> 00:02:14.800
<v Ronny>denn aussieht und

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

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

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

00:02:25.020 --> 00:02:28.020
<v Ronny>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
<v Dominik>Vielleicht erst mal kurz, worum ging es denn überhaupt?

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

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

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

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

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

00:02:43.300 --> 00:02:44.920
<v Ronny>weil man halt

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

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

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

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

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

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

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

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

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

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

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

00:03:06.760 --> 00:03:08.720
<v Ronny>auch ein Regular beim

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

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

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

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

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

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

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

00:03:22.860 --> 00:03:24.080
<v Johannes>Notizen zu dem Vortrag

00:03:24.080 --> 00:03:27.080
<v Johannes>Es ging um

00:03:27.080 --> 00:03:29.020
<v Ronny>diverse Verbesserungen im Admin

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

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

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

00:03:35.180 --> 00:03:36.840
<v Ronny>Und es waren

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

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

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

00:03:42.680 --> 00:04:06.160
<v Ronny>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
<v Ronny>Ja, dann hat er es gut gelöst.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:05:35.240 --> 00:05:44.520
<v Ronny>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
<v Ronny>diese, ich komme gerade nicht drauf, Name-Types?

00:05:46.420 --> 00:05:47.360
<v Ronny>Diese Trainer-Types.

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

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

00:05:49.960 --> 00:05:53.680
<v Ronny>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
<v Ronny>was in 99% der Fälle wahrscheinlich immer nur Plain und HTML sein wird,

00:05:58.200 --> 00:06:02.320
<v Ronny>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
<v Ronny>ohne halt sich durch irgendwelche nicht dokumentierten APIs durchzugraben.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:07:19.700 --> 00:07:20.200
<v Jochen>Halt über das

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

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

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

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

00:07:27.640 --> 00:07:30.480
<v Jochen>und dann kann man

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

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

00:07:35.200 --> 00:07:36.480
<v Jochen>Und naja,

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

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

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

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

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

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

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

00:07:50.080 --> 00:07:52.180
<v Jochen>25 Messages pro Sekunde

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

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

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

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

00:08:00.320 --> 00:08:05.000
<v Jochen>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
<v Jochen>Das kann einfach nicht sein.

00:08:06.620 --> 00:08:12.300
<v Jochen>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
<v Jochen>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
<v Jochen>Genau, war da halt so eine Geschichte, TCP, No-Delay kann man irgendwie setzen, wenn man…

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

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

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

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

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

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

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

00:08:35.640 --> 00:08:36.740
<v Jochen>Genau. Und

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

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

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

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

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

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

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

00:08:50.600 --> 00:08:52.780
<v Johannes>Linux und File Handles

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

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

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

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

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

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

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

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

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

00:09:10.600 --> 00:09:11.940
<v Jochen>da, so Berkeley

00:09:11.940 --> 00:09:15.180
<v Jochen>Packet-Filter-Interface

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

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

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

00:09:20.620 --> 00:09:22.680
<v Jochen>injecten.

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

00:09:25.380 --> 00:09:26.680
<v Jochen>Der dann im Kernel

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

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

00:09:31.440 --> 00:09:31.700
<v Jochen>Ja, dann.

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

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

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

00:09:38.760 --> 00:09:40.320
<v Jochen>Compiler mal geschrieben.

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

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

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

00:09:46.580 --> 00:09:47.020
<v Jochen>gehen muss.

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

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

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

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

00:09:55.920 --> 00:10:04.620
<v Jochen>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
<v Jochen>Also ja, aber man merkte, der hatte richtig viel Erfahrung und schon eine Menge gesehen.

00:10:09.380 --> 00:10:14.100
<v Ronny>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
<v Ronny>Dass das Dinge sind, mit denen ich mich einfach nicht beschäftigen muss.

00:10:17.860 --> 00:10:22.320
<v Johannes>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
<v Jochen>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
<v Jochen>Er muss das irgendwie rauskriegen.

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

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

00:10:41.880 --> 00:10:47.320
<v Johannes>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
<v Johannes>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
<v Johannes>Und die waren?

00:10:55.840 --> 00:11:02.760
<v Johannes>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
<v Johannes>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
<v Johannes>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
<v Johannes>Weil dann habe ich ja mein Modell in der Hand mit dem korrekten Status,

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

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

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

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

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

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

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

00:11:35.480 --> 00:11:39.520
<v Johannes>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
<v Dominik>Also du hast ein Statusmodell, das hält dann immer da, wo bist du denn gerade

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

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

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

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

00:11:51.360 --> 00:11:52.380
<v Johannes>dann erwartest du,

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

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

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

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

00:12:00.900 --> 00:12:01.620
<v Johannes>Direkt am Anfang?

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

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

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

00:12:07.280 --> 00:12:07.940
<v Dominik>Ja, genau.

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

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

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

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

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

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

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

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

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

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

00:12:27.520 --> 00:12:29.620
<v Johannes>deine Verarbeitung da drauf

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

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

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

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

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

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

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

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

00:12:46.700 --> 00:12:47.520
<v Johannes>Aber du kannst

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

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

00:12:51.220 --> 00:12:53.560
<v Johannes>verschiedene Verarbeitungsschritte oder 100 verschiedene

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

00:12:56.380 --> 00:12:57.480
<v Johannes>Und das Wichtige

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:13:27.560 --> 00:13:29.300
<v Johannes>Datenbank eben genau einen

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:14:04.240 --> 00:14:05.080
<v Johannes>So ein bisschen

00:14:05.080 --> 00:14:07.300
<v Johannes>der Outcome

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:14:46.540 --> 00:14:47.100
<v Johannes>ausgedacht hast.

00:14:48.600 --> 00:14:48.960
<v Johannes>Schön.

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

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

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

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

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

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

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

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

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

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

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

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

00:15:14.280 --> 00:15:16.180
<v Ronny>als Primärding

00:15:16.180 --> 00:15:17.880
<v Ronny>implementiert werden und

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:15:58.060 --> 00:15:59.520
<v Ronny>und da ein Authentifizierungssystem

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

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

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

00:16:06.000 --> 00:16:08.060
<v Ronny>jedem kompatiblen Task-Runner

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

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

00:16:12.320 --> 00:16:13.820
<v Ronny>Backend.

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

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

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

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

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

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

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

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

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

00:16:32.040 --> 00:16:33.760
<v Johannes>der...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:17:02.350 --> 00:17:03.490
<v Johannes>eine interessante Idee.

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

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

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

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

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

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

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

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

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

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

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

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

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

00:17:29.990 --> 00:17:31.970
<v Ronny>Tasks in die Zukunft

00:17:31.970 --> 00:17:34.090
<v Ronny>plant, dass es

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

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

00:17:37.970 --> 00:17:38.870
<v Ronny>auf die Nase gefallen

00:17:38.870 --> 00:17:41.390
<v Ronny>und unser

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

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

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

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

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

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

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

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

00:17:58.210 --> 00:17:59.330
<v Ronny>und dann meinte dann

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

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

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

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

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

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

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

00:18:15.710 --> 00:18:17.330
<v Johannes>Ja, Ivar Skalvans

00:18:17.330 --> 00:18:18.130
<v Johannes>ist der Name.

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

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

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

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

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

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

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

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

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

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

00:18:39.330 --> 00:18:39.730
<v Dominik>Genau.

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

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

00:18:44.810 --> 00:18:45.870
<v Johannes>17 Uhr und

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

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

00:18:52.250 --> 00:18:52.930
<v Johannes>Von einem

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:19:23.690 --> 00:19:29.010
<v Johannes>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
<v Johannes>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
<v Ronny>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
<v Ronny>Also, dass das nicht die Ursache davon ist. Das habe ich schon oft rumerzählt.

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

00:19:51.530 --> 00:19:54.890
<v Dominik>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
<v Ronny>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
<v Ronny>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
<v Dominik>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
<v Johannes>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
<v Johannes>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
<v Johannes>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
<v Jochen>Ja, die Idee selber kannst du das nicht ansehen.

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

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

00:21:10.170 --> 00:21:10.310
<v Johannes>Ja.

00:21:13.010 --> 00:21:14.250
<v Johannes>Gut, und danach

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

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

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

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

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

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

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

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

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

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

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

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

00:21:38.190 --> 00:21:38.830
<v Johannes>einzuschlafen.

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

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

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

00:21:49.250 --> 00:21:49.530
<v Johannes>Okay.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:23:03.410 --> 00:23:04.170
<v Ronny>Warum Sachen verschenken?

00:23:04.670 --> 00:23:04.930
<v Ronny>Genau.

00:23:05.570 --> 00:23:11.370
<v Ronny>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
<v Dominik>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
<v Ronny>Vor allem auch, weil wir ansonsten das halt irgendwie den Monolithen reingewurschelt hätten.

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

00:23:24.250 --> 00:23:28.790
<v Ronny>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
<v Ronny>Und ich hatte bei zwei Themen, wo ich selber...

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

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

00:23:38.910 --> 00:23:39.850
<v Ronny>Da war die Kinderplanung

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

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

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

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

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

00:23:51.370 --> 00:23:51.970
<v Ronny>Nein, genau.

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

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

00:23:55.830 --> 00:23:56.890
<v Ronny>sehr, sehr schlecht.

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

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

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

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

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

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

00:24:10.910 --> 00:24:11.430
<v Ronny>hatte ich dann

00:24:11.430 --> 00:24:12.290
<v Ronny>irgendwann plötzlich

00:24:12.290 --> 00:24:15.150
<v Ronny>ein Issue von

00:24:15.150 --> 00:24:17.230
<v Ronny>einer

00:24:17.230 --> 00:24:19.670
<v Ronny>scheinbar sehr, sehr kompetenten

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

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

00:24:23.410 --> 00:24:25.410
<v Ronny>identifiziert hat. Und

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:25:26.910 --> 00:25:27.350
<v Ronny>Ja.

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

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

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

00:25:35.710 --> 00:25:35.890
<v Ronny>Yay!

00:25:36.990 --> 00:25:45.290
<v Ronny>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
<v Ronny>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
<v Ronny>Wenn wir ein Custom-User-Model haben, was wir aus historischen Gründen,

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

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

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

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

00:26:17.630 --> 00:26:21.750
<v Ronny>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
<v Ronny>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
<v Ronny>aber das ist halt kein Packages-Deployed-System.

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

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

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

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

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

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

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

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

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

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

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

00:26:53.870 --> 00:26:53.870
<v Ronny>Und

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

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

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

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

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

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

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

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

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

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

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

00:27:15.970 --> 00:27:16.730
<v Ronny>im Endeffekt den

00:27:16.730 --> 00:27:19.930
<v Ronny>Apply Cache von

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

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

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

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

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

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

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

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

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

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

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

00:27:41.430 --> 00:27:43.250
<v Ronny>passiert dann automatisch und

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

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

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

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

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

00:27:54.990 --> 00:27:55.990
<v Johannes>Wir versuchen

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:28:53.530 --> 00:29:07.070
<v Ronny>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
<v Ronny>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
<v Dominik>Das mit Daten habe ich

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:30:51.670 --> 00:31:11.290
<v Ronny>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
<v Dominik>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
<v Ronny>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
<v Ronny>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
<v Ronny>Das kann man gut rausziehen.

00:31:48.210 --> 00:31:48.390
<v Ronny>Genau.

00:31:50.090 --> 00:31:50.310
<v Ronny>Cool.

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

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

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

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

00:31:56.790 --> 00:32:01.790
<v Dominik>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
<v Dominik>Mein Jetlag ist schon vorbei.

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

00:32:07.690 --> 00:32:13.810
<v Dominik>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
<v Johannes>Ja, war ja gar kein Talk, sondern es war das Django Software Foundation Board Meeting.

00:32:18.210 --> 00:32:18.430
<v Johannes>Ja.

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

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

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

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

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

00:32:29.530 --> 00:32:34.110
<v Johannes>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
<v Johannes>Oder um 8.15 Uhr oder um 8.20 Uhr.

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

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

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

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

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

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

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

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

00:32:55.350 --> 00:32:55.430
<v Johannes>Ja.

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

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

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

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

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

00:33:06.870 --> 00:33:07.510
<v Dominik>ins Gym.

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

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

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

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

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

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

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

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

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

00:33:25.550 --> 00:33:27.390
<v Johannes>von der Board Meeting, das war...

00:33:27.390 --> 00:33:28.510
<v Johannes>Ich bin da hingegangen, weil

00:33:28.510 --> 00:33:30.330
<v Johannes>ich das mal sehen wollte.

00:33:30.990 --> 00:33:32.670
<v Johannes>Ich weiß, dass ich da nichts beitragen kann.

00:33:32.770 --> 00:33:35.770
<v Johannes>Ich weiß, dass ich diese Verantwortung nicht tragen kann, weil ich nicht genügend Zeit habe.

00:33:35.770 --> 00:33:36.490
<v Johannes>Und was hast du gesehen?

00:33:37.090 --> 00:33:39.150
<v Johannes>Es war interessant, die Diskussionskultur

00:33:39.150 --> 00:33:41.110
<v Johannes>war interessant, die Menschen, die sich

00:33:41.110 --> 00:33:42.790
<v Johannes>daran beteiligen, ich meine, viele von den Namen

00:33:42.790 --> 00:33:45.050
<v Johannes>kennt man, wenn man so ein bisschen in der Szene ist.

00:33:46.630 --> 00:33:47.190
<v Johannes>Aber es war trotzdem

00:33:47.190 --> 00:33:48.910
<v Johannes>einfach mal interessant zu sehen, wie die so

00:33:48.910 --> 00:33:51.390
<v Dominik>Zeit man mit so Dingen verbringen kann.

00:33:51.670 --> 00:33:52.930
<v Dominik>Ja, richtig. Auch wie viele Meta-Dinge

00:33:52.930 --> 00:33:55.070
<v Ronny>einfach passieren müssen und wenn sie

00:33:55.070 --> 00:33:57.290
<v Ronny>nicht passieren, wie viele negative Konsequenzen

00:33:57.290 --> 00:33:59.110
<v Johannes>das hat. Und wie viele Kommentare es gibt

00:33:59.110 --> 00:34:01.150
<v Dominik>zu allem. Ja, da muss man noch mal reden,

00:34:01.270 --> 00:34:03.270
<v Dominik>jeder darf auch was dazu sagen und dann wird dem auch zugehört.

00:34:03.890 --> 00:34:05.030
<v Dominik>Also, sehr

00:34:05.030 --> 00:34:05.490
<v Dominik>Corporate.

00:34:06.870 --> 00:34:08.430
<v Johannes>Und dann gab es Kuchen, das war sehr schön.

00:34:08.430 --> 00:34:10.090
<v Johannes>Ja, das hat sich gelohnt,

00:34:10.370 --> 00:34:11.590
<v Johannes>früher aufzustehen und hinzugehen.

00:34:13.190 --> 00:34:13.550
<v Johannes>Ja.

00:34:14.050 --> 00:34:16.150
<v Johannes>Gut, dann gab es den Einführungsvortrag

00:34:16.150 --> 00:34:18.190
<v Johannes>des heutigen Tages, so für die breite Masse,

00:34:18.230 --> 00:34:19.210
<v Johannes>sag ich mal, im Mainstream.

00:34:19.450 --> 00:34:21.130
<v Johannes>Oh, im Mainstream? Im Mainhall.

00:34:21.330 --> 00:34:22.410
<v Johannes>Nee, das heißt ja Mainhall, ich meine.

00:34:23.030 --> 00:34:24.350
<v Johannes>Gab es den? Habe ich den verpasst?

00:34:24.470 --> 00:34:27.010
<v Johannes>Nein, da war es auch der Most Bizarre Software Bugs in History.

00:34:27.050 --> 00:34:28.690
<v Jochen>Ach so, ach so, ja, das ist, ja, okay, klar.

00:34:29.750 --> 00:34:31.250
<v Johannes>War eine schöne Aufstellung.

00:34:31.430 --> 00:34:32.650
<v Johannes>Hast du, hat der Jochen

00:34:32.650 --> 00:34:35.650
<v Dominik>den Lightning Talk vom Johannes vorher schon gehört?

00:34:36.870 --> 00:34:39.490
<v Johannes>Ich habe ihm das vorher kurz

00:34:39.490 --> 00:34:40.570
<v Johannes>gezeigt, das war

00:34:40.570 --> 00:34:42.410
<v Johannes>eine Pause.

00:34:42.830 --> 00:34:44.810
<v Johannes>Das war nur der Vulkanier

00:34:44.810 --> 00:34:46.570
<v Johannes>Mindgrab.

00:34:47.970 --> 00:34:49.690
<v Johannes>Genau, das war auch eine sehr schöne, war sehr unterhaltsam.

00:34:49.830 --> 00:34:51.510
<v Johannes>Dieser Vortrag war erstaunlich lang.

00:34:53.030 --> 00:34:53.730
<v Johannes>Er hat viele Sachen

00:34:53.730 --> 00:34:55.370
<v Johannes>gesagt und viele von den Geschichten

00:34:55.370 --> 00:34:57.630
<v Johannes>kennt man ja schon so ein bisschen.

00:34:57.990 --> 00:34:58.970
<v Johannes>Man hat es ja schon mal gehört.

00:34:58.970 --> 00:35:00.730
<v Johannes>Ein Lion Air Flight 110

00:35:00.730 --> 00:35:01.430
<v Johannes>und

00:35:01.430 --> 00:35:06.630
<v Johannes>ich habe gar nicht mehr die Geschichten

00:35:06.630 --> 00:35:08.210
<v Johannes>alle notiert. Ich habe nur notiert, wie die

00:35:08.210 --> 00:35:09.430
<v Johannes>Geschichten heißen.

00:35:10.010 --> 00:35:12.030
<v Ronny>Das mit der Mars-Mission, mit dem metrischen System.

00:35:13.170 --> 00:35:14.110
<v Ronny>Vielleicht gehen wir noch mal kurz

00:35:14.110 --> 00:35:15.770
<v Dominik>darauf ein. Also ein Bagger ist natürlich

00:35:15.770 --> 00:35:17.070
<v Dominik>in den Flugzeug abgestürzt, nicht so gut.

00:35:17.330 --> 00:35:20.370
<v Dominik>Es sind zwei sogar, es sind zwei abgestürzt, wo was passiert ist.

00:35:20.630 --> 00:35:21.890
<v Dominik>Boing, so ein System eingebaut hat,

00:35:21.930 --> 00:35:23.810
<v Dominik>dass die Nase immer korrigieren sollte und dann ist

00:35:23.810 --> 00:35:25.910
<v Dominik>der Sensor ausgefallen, der hat nur einen eingebaut und dann

00:35:25.910 --> 00:35:27.690
<v Ronny>Und die Piloten wussten nichts davon?

00:35:28.090 --> 00:35:29.930
<v Johannes>Ja. Bei dem zweiten Flug, der war

00:35:29.930 --> 00:35:31.050
<v Johannes>sogar noch ein bisschen tragischer,

00:35:31.330 --> 00:35:33.190
<v Johannes>weil da wussten die Piloten davon.

00:35:33.970 --> 00:35:35.150
<v Johannes>Haben es nicht abgesteckt gekriegt.

00:35:35.450 --> 00:35:37.110
<v Johannes>haben es nicht abgeschaltet gekriegt und vor allem

00:35:37.110 --> 00:35:39.550
<v Johannes>dieses System ist gekoppelt

00:35:39.550 --> 00:35:40.490
<v Johannes>an den Steuerknüppel.

00:35:41.370 --> 00:35:43.650
<v Johannes>Das heißt, die haben versucht, an dem Steuerknüppel zu ziehen

00:35:43.650 --> 00:35:45.410
<v Johannes>und das System hat dagegen gedrückt und irgendwann

00:35:45.410 --> 00:35:46.090
<v Johannes>konnten die nicht mehr.

00:35:47.550 --> 00:35:49.410
<v Johannes>Und das finde ich noch viel tragischer, wenn der

00:35:49.410 --> 00:35:51.530
<v Johannes>halt gegen die Maschine kämpfen muss

00:35:51.530 --> 00:35:53.410
<v Johannes>und die Maschine in dem Moment will dich

00:35:53.410 --> 00:35:55.550
<v Johannes>umbringen, so fies gesagt

00:35:55.550 --> 00:35:56.190
<v Johannes>und dann gewinnt sie auch noch.

00:35:56.190 --> 00:35:57.810
<v Johannes>Das ist hart, das ist echt hart.

00:35:58.870 --> 00:36:00.490
<v Johannes>Und dann, genau,

00:36:00.570 --> 00:36:02.510
<v Johannes>nachdem diese beiden

00:36:02.510 --> 00:36:03.950
<v Johannes>Flugzeuge abschürzt waren, ist ja auch die

00:36:03.950 --> 00:36:06.070
<v Johannes>gesamte Flotte einfach stillgelegt worden

00:36:06.070 --> 00:36:07.570
<v Johannes>mal für einen Moment, bis sie

00:36:07.570 --> 00:36:10.010
<v Johannes>bis zu einer neuen Zertifikation durch war.

00:36:10.670 --> 00:36:11.770
<v Johannes>Ja, die, die ja, ja.

00:36:12.130 --> 00:36:14.190
<v Johannes>Also es war eine wirklich schöne Aufstellung

00:36:14.190 --> 00:36:16.150
<v Johannes>von Dachern und so ein bisschen Hinweis.

00:36:16.190 --> 00:36:17.890
<v Dominik>Auf der Mars-Mission ist vielleicht auch noch interessant.

00:36:18.290 --> 00:36:20.070
<v Dominik>Ah ja, Mars-Mission, ja. Auch klassischer

00:36:20.070 --> 00:36:21.670
<v Dominik>Fall. Ja, weil es dann einen kleinen Bug gab zwischen

00:36:21.670 --> 00:36:23.770
<v Dominik>Umrechnung, zwischen metrischen und

00:36:23.770 --> 00:36:26.050
<v Dominik>nur ein kleinerer. Wer ist nochmal das andere System?

00:36:26.230 --> 00:36:27.570
<v Dominik>Genau, das eine, das imperiale.

00:36:29.010 --> 00:36:30.290
<v Dominik>Genau, das eine hat halt

00:36:30.290 --> 00:36:32.210
<v Johannes>den Zoll gerechnet und das andere hat den Millimeter

00:36:32.210 --> 00:36:33.410
<v Johannes>gerechnet. Empire Strikes Back.

00:36:33.870 --> 00:36:51.890
<v Ronny>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
<v Ronny>Am Ende gewinnt der König doch.

00:36:56.470 --> 00:36:57.930
<v Ronny>Ja, das war auch eine tragische Sache.

00:36:59.070 --> 00:37:00.090
<v Ronny>Dieser Mars

00:37:00.090 --> 00:37:02.690
<v Johannes>Reconnaissance Orbiter war das, glaube ich.

00:37:03.830 --> 00:37:04.730
<v Johannes>Wo einfach

00:37:04.730 --> 00:37:06.370
<v Johannes>die Positionierung nicht gestimmt hat. Das heißt,

00:37:06.450 --> 00:37:08.510
<v Johannes>er wollte um den Mars kreisen, aber er hat

00:37:08.510 --> 00:37:10.050
<v Johannes>ihn getroffen. Klabumm.

00:37:11.490 --> 00:37:12.490
<v Johannes>Andererseits, das habe ich auch zum

00:37:12.490 --> 00:37:14.110
<v Johannes>Jochen schon in dem Vortrag gesagt, ist auch so ein gewisser

00:37:14.110 --> 00:37:16.170
<v Johannes>Power-Move von der Erde, dass wir da hier

00:37:16.170 --> 00:37:18.490
<v Johannes>Jahre und Millionen reinstecken und dann einfach

00:37:18.490 --> 00:37:19.410
<v Johannes>zack.

00:37:22.070 --> 00:37:23.210
<v Johannes>Blüte im Orbit.

00:37:23.590 --> 00:37:24.850
<v Johannes>Ja, und dann die anderen Geschichten.

00:37:25.090 --> 00:37:26.710
<v Johannes>Da gibt es ja viele so Geschichten.

00:37:26.890 --> 00:37:29.410
<v Jochen>Ich meine, die meisten Leute werden

00:37:29.410 --> 00:37:31.430
<v Jochen>keine Software für Flugzeuge schreiben

00:37:31.430 --> 00:37:33.370
<v Jochen>oder auch den Mars nicht mit irgendwas beschießen,

00:37:33.530 --> 00:37:35.670
<v Jochen>aber was tatsächlich viel im Alltag

00:37:35.670 --> 00:37:38.250
<v Jochen>irgendwie ja betrifft, und das ist tatsächlich

00:37:38.250 --> 00:37:39.630
<v Jochen>auch immer eine sehr hübsche Fehler,

00:37:39.770 --> 00:37:41.610
<v Jochen>dass Leute Excel-Sheets halt

00:37:41.610 --> 00:37:43.510
<v Jochen>für alles mögliche verwenden. Und dann da

00:37:43.510 --> 00:37:45.790
<v Jochen>halt diese ganzen normalen Standard-Software-

00:37:45.790 --> 00:37:47.470
<v Jochen>Engineering-Practices, die man halt so hat,

00:37:47.470 --> 00:37:49.270
<v Jochen>die einen vor dem Gröbsten irgendwie

00:37:49.270 --> 00:37:49.890
<v Jochen>bewahren,

00:37:51.090 --> 00:37:52.410
<v Jochen>Die gibt es da halt nicht.

00:37:52.850 --> 00:37:54.510
<v Dominik>Man kann auch Excel dann das nachbauen.

00:37:54.530 --> 00:37:54.670
<v Dominik>Bitte?

00:37:54.870 --> 00:37:55.630
<v Dominik>Man kann das dann auch nachbauen.

00:37:55.770 --> 00:37:57.690
<v Jochen>Ja, aber hast du schon mal gesehen,

00:37:57.770 --> 00:38:00.390
<v Jochen>dass jemand Excel-Sheets in quasi...

00:38:00.390 --> 00:38:01.690
<v Jochen>Habt ihr keine Unit-Tests auf euren Excel-Sheets?

00:38:01.690 --> 00:38:04.670
<v Jochen>Ja, oder Unit-Tests oder irgendwie ein Repository eincheckt

00:38:04.670 --> 00:38:06.510
<v Jochen>und das gibt es alles irgendwie nicht so richtig.

00:38:06.730 --> 00:38:07.050
<v Jochen>Ja, ich habe...

00:38:07.050 --> 00:38:08.190
<v Jochen>Nee, das geht alles über E-Mail.

00:38:08.190 --> 00:38:09.870
<v Jochen>Du hast die Leiste von zwei Jahren nachgebaut.

00:38:09.990 --> 00:38:10.910
<v Jochen>Das war eine ganz tolle Erfahrung.

00:38:11.610 --> 00:38:11.670
<v Jochen>Ja.

00:38:12.050 --> 00:38:12.890
<v Jochen>Ach so, du hast das mal nach...

00:38:12.890 --> 00:38:13.390
<v Jochen>Oh Gott.

00:38:13.910 --> 00:38:14.270
<v Jochen>Genau.

00:38:15.710 --> 00:38:16.690
<v Jochen>Das kann ja dann auch...

00:38:16.690 --> 00:38:18.110
<v Jochen>Also sie hat ja da so ein paar Sachen erwähnt,

00:38:18.230 --> 00:38:19.870
<v Johannes>die einfach richtig schlimme Folgen haben.

00:38:20.070 --> 00:38:21.510
<v Johannes>JP Morgan hat halt

00:38:21.510 --> 00:38:23.010
<v Johannes>eine von den Berechnungen, haben sie

00:38:23.010 --> 00:38:25.550
<v Johannes>addiert,

00:38:25.670 --> 00:38:27.230
<v Johannes>statt zu mitteln.

00:38:27.490 --> 00:38:29.290
<v Johannes>Und dann haben sie ihre Risikobewertung einfach

00:38:29.290 --> 00:38:31.430
<v Johannes>um Faktor 2 falsch gehabt und Milliarden an Dollar

00:38:31.430 --> 00:38:31.790
<v Johannes>verloren.

00:38:33.550 --> 00:38:35.570
<v Johannes>Ja gut, als Softwareentwickler

00:38:35.570 --> 00:38:36.990
<v Johannes>sagt man, selber schuld.

00:38:37.530 --> 00:38:38.370
<v Johannes>Hättet ihr mal von uns gehört.

00:38:38.370 --> 00:38:39.430
<v Johannes>Als Bank heißt es so.

00:38:40.550 --> 00:38:42.190
<v Johannes>Passiert mir jedes zweite Wochenende.

00:38:43.870 --> 00:38:44.210
<v Johannes>Ja,

00:38:44.290 --> 00:38:45.510
<v Johannes>sechs Milliarden unter Freunden kommen.

00:38:47.710 --> 00:38:48.450
<v Johannes>Ja, genau.

00:38:48.910 --> 00:38:51.530
<v Johannes>Also es war wirklich eine schöne Zusammenstellung, war sehr unterhaltsam, war ein guter Anfang.

00:38:51.550 --> 00:38:52.730
<v Johannes>Sie hat auch einen sehr guten Vortragsstil.

00:38:52.930 --> 00:38:54.230
<v Johannes>Ja, war wirklich sehr angenehm.

00:38:55.910 --> 00:38:56.950
<v Johannes>Ja, was gab es denn da noch?

00:38:57.210 --> 00:38:57.570
<v Johannes>Danach.

00:38:58.190 --> 00:38:59.370
<v Johannes>Oh ja, das war cool.

00:38:59.550 --> 00:39:02.990
<v Johannes>Danach war so ein bisschen, für mich ein bisschen bisher das Highlight des Tages.

00:39:03.570 --> 00:39:05.470
<v Johannes>Das Highlight der Woche bisher.

00:39:06.210 --> 00:39:07.010
<v Johannes>Haki Benita.

00:39:07.170 --> 00:39:07.390
<v Johannes>Genau.

00:39:08.070 --> 00:39:09.770
<v Johannes>How to get foreign keys horribly wrong.

00:39:09.890 --> 00:39:14.870
<v Dominik>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
<v Dominik>Und ja, habe dann aber nicht wirklich zugehört, sondern gearbeitet.

00:39:20.430 --> 00:39:21.250
<v Dominik>Ja gut, dann...

00:39:21.250 --> 00:39:22.530
<v Dominik>Aber deswegen kann ich das für Wirtschaft kennen.

00:39:22.750 --> 00:39:25.030
<v Dominik>Aber den Topf von Haki Benita hätte ich gerne noch mehr verstanden,

00:39:25.130 --> 00:39:26.330
<v Dominik>wie man den Foreign Keys richtig macht.

00:39:27.250 --> 00:39:28.530
<v Dominik>Indizes setzen oder was hat er gesagt?

00:39:28.770 --> 00:39:32.250
<v Johannes>Ja, aber also die Sache an Haki Benita ist,

00:39:32.330 --> 00:39:35.930
<v Johannes>der ist ein DBA, ein Database Admin,

00:39:36.110 --> 00:39:37.950
<v Johannes>der seit 20 Jahren im Geschäft ist, der kennt alle Tricks.

00:39:40.150 --> 00:39:43.070
<v Johannes>Und er hat einen sehr unterhaltsamen Vortragsstil.

00:39:43.430 --> 00:39:44.090
<v Johannes>Sehr energetisch.

00:39:44.710 --> 00:39:59.250
<v Johannes>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
<v Johannes>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
<v Johannes>Ja, okay.

00:40:17.670 --> 00:40:20.190
<v Jochen>Aber als er dann aufgehört hat,

00:40:20.230 --> 00:40:21.870
<v Jochen>hat das Publikum an seiner Stelle weitergemacht

00:40:21.870 --> 00:40:23.550
<v Jochen>und hat ihm gesagt, weil er wusste noch nicht.

00:40:24.190 --> 00:40:25.930
<v Jochen>Und sein Fazit war dann so,

00:40:26.030 --> 00:40:27.650
<v Jochen>okay, das mit den Migrationen sollte man einfach lassen.

00:40:27.790 --> 00:40:29.050
<v Jochen>Das ist keine gute Idee, das irgendwie

00:40:29.050 --> 00:40:31.930
<v Jochen>nicht machen. Ja, also es ist wirklich

00:40:31.930 --> 00:40:33.850
<v Jochen>problematisch. Je genauer man hinguckt, desto

00:40:33.850 --> 00:40:34.710
<v Jochen>mehr Probleme

00:40:34.710 --> 00:40:37.110
<v Jochen>sieht man da auch.

00:40:38.210 --> 00:40:39.850
<v Ronny>Die natürlich aber auch nie, nur nicht in

00:40:39.850 --> 00:40:41.490
<v Ronny>allen Cases wirklich realistisch.

00:40:41.790 --> 00:40:43.230
<v Ronny>Bevor jetzt wieder so eintaucht,

00:40:43.550 --> 00:40:45.270
<v Dominik>wir müssen erstmal kurz nochmal erkennen,

00:40:45.750 --> 00:40:48.110
<v Dominik>Also, dass das ein interessanter Talk war, haben wir jetzt verstanden, aber

00:40:48.110 --> 00:40:49.850
<v Dominik>worum ging es denn jetzt eigentlich?

00:40:50.230 --> 00:40:51.270
<v Dominik>Also es... Willst du?

00:40:51.570 --> 00:40:53.910
<v Ronny>Nee, sprich du, René. Also im Endeffekt ging es

00:40:53.910 --> 00:40:55.810
<v Ronny>darum, es war im Endeffekt ein Standardmodel, also

00:40:55.810 --> 00:40:57.850
<v Ronny>Django-Model, jetzt mehr oder weniger

00:40:57.850 --> 00:40:59.910
<v Ronny>was man halt so kennt

00:40:59.910 --> 00:41:00.790
<v Ronny>und

00:41:00.790 --> 00:41:02.010
<v Ronny>die

00:41:02.010 --> 00:41:05.930
<v Ronny>und dann ging es

00:41:05.930 --> 00:41:07.730
<v Ronny>halt darum, so quasi, was

00:41:07.730 --> 00:41:09.570
<v Ronny>kann man daran verbessern? Hat sich halt

00:41:09.570 --> 00:41:11.290
<v Ronny>Expedition of Foreign Peace bezogen. Oder was ist gefährlich auch.

00:41:11.470 --> 00:41:13.210
<v Ronny>Genau, oder was könnte gefährlich sein?

00:41:14.110 --> 00:41:15.430
<v Ronny>Natürlich immer mit dem

00:41:15.430 --> 00:41:17.490
<v Ronny>Hintergedanken, wenn man da jetzt eine Tabelle

00:41:17.490 --> 00:41:19.230
<v Ronny>mit 50 Einträgen hat oder auch

00:41:19.230 --> 00:41:21.470
<v Ronny>500.000, ist das wahrscheinlich alles relativ egal

00:41:21.470 --> 00:41:23.530
<v Ronny>oder kein Hochverfügbarkeitssystem,

00:41:23.690 --> 00:41:25.210
<v Ronny>aber halt, was für Systeme kann,

00:41:25.350 --> 00:41:27.170
<v Ronny>was kann man halt theoretisch kaputt machen,

00:41:27.330 --> 00:41:29.350
<v Ronny>ohne es zu wissen und dann hat er sich halt

00:41:29.350 --> 00:41:31.070
<v Ronny>quasi dann darüber rausgehangelt,

00:41:31.290 --> 00:41:32.270
<v Ronny>wie sieht es aus mit,

00:41:33.190 --> 00:41:35.330
<v Ronny>wenn ich diesen Index setze, was ist mit automatisch

00:41:35.330 --> 00:41:37.270
<v Ronny>gesetzten Indizes, kann ich die wegnehmen?

00:41:38.190 --> 00:41:39.410
<v Ronny>Ja, genau

00:41:39.410 --> 00:41:41.070
<v Johannes>und wie weit kann man da gehen?

00:41:41.850 --> 00:41:43.330
<v Johannes>Genau. Was kann man alles

00:41:43.330 --> 00:41:45.330
<v Johannes>kaputt machen, was kann einem alles implizit

00:41:45.330 --> 00:41:47.230
<v Ronny>auf die Füße fallen. Genau. Und dann auch viel über

00:41:47.230 --> 00:41:49.410
<v Ronny>Migrations, Migration-Anordnungen,

00:41:49.510 --> 00:41:51.310
<v Ronny>was man damit noch anders machen kann, also indem

00:41:51.310 --> 00:41:53.210
<v Ronny>man die einfach auseinanderzieht, atomare

00:41:53.210 --> 00:41:55.190
<v Ronny>Transaktionen, also Datenbank-Atomare-Transaktionen,

00:41:55.610 --> 00:41:57.210
<v Ronny>genau, Reihenfolge und da halt immer weiter

00:41:57.210 --> 00:41:59.270
<v Ronny>runter und das halt in einem sehr, sehr

00:41:59.270 --> 00:42:01.210
<v Ronny>energetischen, interaktiven

00:42:01.850 --> 00:42:03.130
<v Ronny>Weg, um auch dieses Thema, das

00:42:03.130 --> 00:42:05.350
<v Ronny>man auch perfekt, ultra-trocken irgendwie

00:42:05.350 --> 00:42:06.270
<v Ronny>runterbeten könnte.

00:42:07.010 --> 00:42:09.130
<v Dominik>Also das ist tatsächlich einer von den Talks, die ich mir auf die Liste

00:42:09.130 --> 00:42:11.370
<v Dominik>geschrieben habe, für die muss ich später nochmal nachschauen.

00:42:11.590 --> 00:42:13.010
<v Dominik>Ja, solltest du, also was

00:42:13.010 --> 00:42:15.050
<v Jochen>konkrete Dinge drin waren, wie zum Beispiel ist sowas wie,

00:42:15.090 --> 00:42:18.090
<v Jochen>du hast halt einen Foreign Key auf dein User-Modell

00:42:18.090 --> 00:42:21.030
<v Jochen>als Created Ad oder sowas an irgendeinem Modell dran

00:42:21.030 --> 00:42:25.170
<v Jochen>und wenn du jetzt sagst, okay, das wird jetzt schon allmählich relativ groß,

00:42:25.650 --> 00:42:28.510
<v Jochen>das wird eh nicht benutzt und dann nimmst du den Index weg

00:42:28.510 --> 00:42:32.050
<v Jochen>und dann löscht irgendein automatischer Job ab und zu mal User

00:42:32.050 --> 00:42:34.150
<v Jochen>und legt dann deine Datenbank lahm,

00:42:34.230 --> 00:42:37.510
<v Jochen>weil, naja, es gibt keinen Index mehr auf dem Ding

00:42:37.510 --> 00:42:39.530
<v Jochen>und dann macht das halt ein Table-Scan bei jedem User,

00:42:39.590 --> 00:42:42.470
<v Jochen>der gelöscht werden soll und wenn das viele sind, dann, naja, es ist halt...

00:42:42.470 --> 00:42:46.310
<v Johannes>Ja, auch wenn es einmal auftritt, wenn du irgendwo eine Tabelle mit Millionen rein hast.

00:42:46.590 --> 00:42:48.970
<v Dominik>Wenn du bei Instagram mit 500 Millionen Nutzern scheinst, dann bist du da.

00:42:49.090 --> 00:42:50.290
<v Dominik>Ja, genau, die müssen da schon aufpassen.

00:42:51.010 --> 00:42:52.170
<v Dominik>Das hat er am Ende auch gesagt.

00:42:52.290 --> 00:42:57.910
<v Johannes>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
<v Johannes>So für den Hausgebrauch.

00:43:01.390 --> 00:43:08.970
<v Johannes>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
<v Ronny>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
<v Jochen>Ja, oder dass man auf jeden Fall immer die Queries

00:43:34.090 --> 00:43:35.290
<v Jochen>sich bei einer Migration zum Beispiel,

00:43:35.370 --> 00:43:38.510
<v Jochen>da hat er dann irgendwie eine schöne Stop-Slide,

00:43:39.070 --> 00:43:40.410
<v Jochen>die dann ab und zu mal kamen,

00:43:40.470 --> 00:43:42.110
<v Jochen>sondern erst einmal mal das SQL angucken,

00:43:42.190 --> 00:43:44.570
<v Jochen>bevor man die Migration wirklich ausführt, weil...

00:43:44.570 --> 00:43:46.490
<v Johannes>Den wichtigsten Schritt hat er da für mich

00:43:46.490 --> 00:43:47.950
<v Johannes>eigentlich in den Fragen am Ende gesagt.

00:43:48.450 --> 00:43:50.790
<v Johannes>Dann hat er nämlich gesagt, bei Ihnen machen Sie es so,

00:43:51.050 --> 00:43:52.610
<v Johannes>dass Sie eine GitHub-Action haben,

00:43:53.290 --> 00:43:55.230
<v Johannes>die das SQL, wenn du eine Migration machst,

00:43:55.230 --> 00:43:58.250
<v Johannes>schreibt die dir das SQL als Kommentar in deine Review.

00:43:58.290 --> 00:43:59.270
<v Johannes>Das fand ich auch krass.

00:44:00.150 --> 00:44:02.410
<v Johannes>Das heißt, du bist gezwungen, dieses SQL anzugucken.

00:44:02.530 --> 00:44:05.730
<v Johannes>Du kannst nicht zustimmen, ohne das SQL gesagt zu haben.

00:44:05.810 --> 00:44:11.090
<v Johannes>Und das fand ich einen super Trick, weil das so ein, das ist psychologisch korrekt,

00:44:11.210 --> 00:44:14.730
<v Johannes>das ist kein, wir halten dich ab, das zu tun, sondern ein, hier, guck doch mal.

00:44:16.150 --> 00:44:17.010
<v Johannes>Absolut. Großartig.

00:44:17.390 --> 00:44:22.850
<v Ronny>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
<v Ronny>also die System-Check-Framework.

00:44:24.610 --> 00:44:25.690
<v Ronny>Aber mit eigenen geschriebenen Regeln.

00:44:25.710 --> 00:44:28.930
<v Ronny>Genau, also erstmal hängt es bei denen in der Pipeline, das geht relativ einfach,

00:44:28.990 --> 00:44:30.490
<v Ronny>Das haben wir jetzt auch angefangen einzubauen.

00:44:30.690 --> 00:44:34.270
<v Ronny>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
<v Ronny>Manche Dinge machen jetzt auch zum Beispiel in der Pipeline keinen Sinn, manche Einstellungen.

00:44:38.210 --> 00:44:42.090
<v Ronny>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
<v Ronny>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
<v Ronny>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
<v Ronny>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
<v Ronny>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
<v Ronny>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
<v Ronny>wie letztes Jahr beim Vigo

00:45:22.950 --> 00:45:25.230
<v Ronny>bei dem Talk. Deine Architektur

00:45:25.230 --> 00:45:27.170
<v Ronny>oder Code-Qualität ist so gut wie dein Tooling, das du hast.

00:45:27.770 --> 00:45:28.670
<v Ronny>Ohne Tooling

00:45:28.670 --> 00:45:30.550
<v Ronny>degradet alles sofort.

00:45:32.490 --> 00:45:33.150
<v Ronny>Also waren

00:45:33.150 --> 00:45:34.770
<v Johannes>auf jeden Fall viele coole Sachen drin.

00:45:34.830 --> 00:45:36.050
<v Johannes>Haki Benita ist immer gut.

00:45:38.070 --> 00:45:39.010
<v Johannes>Kann ja die Links

00:45:39.010 --> 00:45:39.790
<v Johannes>wieder unten reintun.

00:45:40.510 --> 00:45:41.410
<v Johannes>Dann der nächste Talk.

00:45:42.190 --> 00:45:44.850
<v Dominik>Karl Gipsen. War gar kein technischer Talk diesmal.

00:45:45.170 --> 00:45:46.210
<v Dominik>Nee, hat er auch am Anfang

00:45:46.210 --> 00:45:48.370
<v Johannes>so scherzhaft gesagt.

00:45:48.590 --> 00:45:50.650
<v Johannes>Nächstes Mal wieder technischer Talk war viel zu anstrengend.

00:45:51.430 --> 00:45:54.110
<v Johannes>Ja, how we make decisions in Django.

00:45:55.930 --> 00:45:56.290
<v Johannes>Ja.

00:45:57.990 --> 00:45:59.590
<v Johannes>Mir fällt es schwer, da jetzt was zu sagen.

00:46:00.930 --> 00:46:02.890
<v Dominik>Ich habe in der Zeit was vergessen, Kaffee getrunken.

00:46:03.570 --> 00:46:07.590
<v Jochen>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
<v Jochen>Ich würde auch sagen, so ja, ja.

00:46:10.250 --> 00:46:11.430
<v Jochen>Ich finde es gut, dass das jemand macht.

00:46:11.830 --> 00:46:14.290
<v Jochen>Ja, muss man, muss man.

00:46:14.290 --> 00:46:24.010
<v Ronny>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
<v Dominik>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
<v Ronny>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
<v Ronny>da kann ich doch einen schönen Bogen spannen zu meinem Eingangsthema.

00:46:43.850 --> 00:46:49.550
<v Ronny>Ich habe vor einem Jahr in den Django-Storages,

00:46:49.590 --> 00:46:51.870
<v Ronny>ungefähr vor einem Jahr, glaube ich, sind die Django-Storages,

00:46:51.870 --> 00:46:55.230
<v Ronny>ist die Settings-API leicht verändert worden.

00:46:55.370 --> 00:46:58.130
<v Ronny>Da gibt es statt mehreren Einzelvariablen eine Variable.

00:46:58.730 --> 00:47:01.310
<v Ronny>Da gab es auch eine Warnung.

00:47:02.130 --> 00:47:03.890
<v Ronny>Normalerweise kümmere ich mich da immer sofort drum,

00:47:03.930 --> 00:47:05.710
<v Ronny>aber wir hatten einen ganz, ganz merkwürdigen Bug

00:47:05.710 --> 00:47:09.630
<v Ronny>mit dem Thumbnail-Package, irgendwas ganz Wildes,

00:47:09.870 --> 00:47:11.510
<v Ronny>wo nichts mehr funktioniert hat und

00:47:11.510 --> 00:47:12.950
<v Ronny>ich hab dann einfach, ja, ich mach das dann später

00:47:12.950 --> 00:47:15.690
<v Ronny>und dann irgendwann war die Warnung halt

00:47:15.690 --> 00:47:17.470
<v Ronny>weg und ich so, ah, okay, dann

00:47:17.470 --> 00:47:19.530
<v Ronny>Ja, perfekt. Selbstgelöst, super.

00:47:19.650 --> 00:47:21.670
<v Ronny>Beste Probleme. Hat es halt auch nicht

00:47:21.670 --> 00:47:23.590
<v Ronny>ausnahmsweise halt einmal nicht, wie das

00:47:23.590 --> 00:47:25.490
<v Ronny>halt immer so ist. Das ist dieses Schweißer Käse Modell,

00:47:25.550 --> 00:47:27.330
<v Ronny>das ist halt genau einmal. Das kommt ja nachher auch noch.

00:47:27.470 --> 00:47:28.350
<v Ronny>Das kam vorher schon.

00:47:30.430 --> 00:47:31.610
<v Ronny>Genau in dem

00:47:31.610 --> 00:47:33.410
<v Ronny>einmal, wo man sich nicht sofort drum kümmert, wo

00:47:33.410 --> 00:47:35.430
<v Ronny>irgendwas komisches passiert, wo man es halt dann doch irgendwie ein bisschen

00:47:35.430 --> 00:47:37.610
<v Ronny>aufschiebt, in Kombination

00:47:37.610 --> 00:47:39.690
<v Ronny>mit Django's

00:47:39.690 --> 00:48:07.570
<v Ronny>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
<v Ronny>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
<v Johannes>Eine schöne Übertreibung, die du hier wählst. Ärgerlich.

00:48:19.870 --> 00:48:29.490
<v Ronny>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
<v Ronny>Ja klar, braucht man ja.

00:48:31.250 --> 00:48:37.250
<v Ronny>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
<v Ronny>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
<v Ronny>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
<v Ronny>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
<v Ronny>So, haben das dann gemacht.

00:49:32.330 --> 00:49:34.130
<v Ronny>Ich habe nochmal quasi alle Change-Logs

00:49:34.130 --> 00:49:35.890
<v Ronny>gemacht. Wir haben die nochmal verlinkt.

00:49:35.970 --> 00:49:37.950
<v Ronny>Ich habe nochmal Optimierungsideen. Hey, wenn du

00:49:37.950 --> 00:49:39.870
<v Ronny>ein Set verwendest statt eine Liste,

00:49:39.990 --> 00:49:41.270
<v Ronny>das ist nochmal einen Ticken schneller, weil das

00:49:41.270 --> 00:49:43.250
<v Ronny>läuft ja die ganze Zeit. Richtig

00:49:43.250 --> 00:49:45.370
<v Ronny>coole Lösung. Und dann kam

00:49:45.370 --> 00:49:47.210
<v Ronny>halt von einer Person, naja,

00:49:47.290 --> 00:49:48.930
<v Ronny>wir machen doch keine

00:49:48.930 --> 00:49:50.890
<v Ronny>deprecated Sachen im

00:49:50.890 --> 00:49:53.530
<v Ronny>Framework. Und dann habe ich gesagt, ja, aber die Leute haben doch gesagt,

00:49:53.970 --> 00:49:55.310
<v Ronny>ich bin nicht der Einzige, dem das passiert.

00:49:55.730 --> 00:49:56.950
<v Ronny>Es hilft halt extrem.

00:49:57.570 --> 00:49:59.070
<v Ronny>Es macht den Update-Prozess ein bisschen

00:49:59.070 --> 00:50:01.310
<v Ronny>einfacher. Es gibt aktuell noch nichts, was

00:50:01.310 --> 00:50:03.210
<v Ronny>das tut, weil sonst wäre es mir ja nicht passiert. Und ich bin

00:50:03.210 --> 00:50:05.350
<v Ronny>ja aware, Dango Upgrade, das ganze Tooling,

00:50:05.350 --> 00:50:06.830
<v Ronny>das es da gibt, klingt doch gut.

00:50:07.350 --> 00:50:09.210
<v Ronny>Nee, machen wir nicht. Und

00:50:09.210 --> 00:50:11.210
<v Ronny>irgendwie war dann halt so diese eine Gegenstimme

00:50:11.210 --> 00:50:13.250
<v Ronny>gegen halt 10 Leute,

00:50:13.390 --> 00:50:15.450
<v Ronny>15 Leute, die im PR mitgearbeitet

00:50:15.450 --> 00:50:17.310
<v Ronny>haben, also auch wirklich motiviert mitgearbeitet

00:50:17.310 --> 00:50:19.170
<v Ronny>haben oder halt auch im Forum sich

00:50:19.170 --> 00:50:21.110
<v Ronny>geäußert haben und irgendwie

00:50:21.110 --> 00:50:23.230
<v Ronny>hat halt diese eine Person das halt dazu

00:50:23.230 --> 00:50:25.410
<v Ronny>gebracht, dass es halt da nicht passiert ist.

00:50:26.370 --> 00:50:26.770
<v Ronny>Und...

00:50:26.770 --> 00:50:29.130
<v Dominik>Wie der Diskussion von gestern, wer darf denn merchen und wer sagt

00:50:29.130 --> 00:50:31.050
<v Dominik>dann nein? Oder auch das, was

00:50:31.050 --> 00:50:32.950
<v Johannes>Carlton gesagt hat, dass Konsens gesucht wird.

00:50:33.090 --> 00:50:35.090
<v Ronny>Genau, das ist ja genau das. Und ich glaube, dass er

00:50:35.090 --> 00:50:37.090
<v Ronny>hat, also selbst Carlton war ja auch in dem

00:50:37.090 --> 00:50:39.030
<v Ronny>Thread da dabei und da hat er

00:50:39.030 --> 00:50:40.990
<v Ronny>dann auch das durchklingen lassen, was

00:50:40.990 --> 00:50:42.930
<v Ronny>glaube ich, teilweise hinter der Motivation

00:50:42.930 --> 00:50:45.030
<v Ronny>dieses Vortrags stand, weil ihn das, glaube

00:50:45.030 --> 00:50:46.570
<v Ronny>ich, auch manchmal einfach frustriert,

00:50:47.050 --> 00:50:48.490
<v Ronny>dass es halt dann quasi, ne,

00:50:48.630 --> 00:50:51.130
<v Ronny>alle Leute sagen, okay, das können wir machen,

00:50:51.250 --> 00:50:52.250
<v Ronny>wie dieser schöne Spruch,

00:50:53.250 --> 00:50:54.410
<v Ronny>komm ich jetzt drauf,

00:50:55.010 --> 00:50:56.910
<v Ronny>safe enough, good enough for now, safe enough

00:50:56.910 --> 00:50:58.930
<v Ronny>to try, so, im allerschlimmsten Fall

00:50:58.930 --> 00:51:01.010
<v Ronny>muss man halt so ein Security, dann baut man den Check

00:51:01.010 --> 00:51:02.770
<v Ronny>halt wieder aus, wenn man merkt, dass es jetzt nach drei,

00:51:02.890 --> 00:51:04.770
<v Ronny>nach einem Major Release furchtbar ist und

00:51:04.770 --> 00:51:06.930
<v Ronny>alle es doof finden, dann ist es halt, hast du ja nicht

00:51:06.930 --> 00:51:08.670
<v Ronny>mehr, so, keine Ahnung. Und

00:51:08.670 --> 00:51:10.250
<v Ronny>ich glaube, dass das so ein bisschen auch der,

00:51:10.630 --> 00:51:12.710
<v Ronny>einer der Väter, der Gedanken war, weil ich glaube,

00:51:12.730 --> 00:51:13.970
<v Ronny>der erlebt sowas halt sehr, sehr oft.

00:51:14.470 --> 00:51:16.550
<v Ronny>Und das hat eine Person, die Handbremse quasi,

00:51:16.670 --> 00:51:18.810
<v Ronny>einmal so quasi schön den Stock ins Getriebe,

00:51:19.230 --> 00:51:20.810
<v Ronny>wo mehr oder weniger sich eine coole Dynamik

00:51:20.810 --> 00:51:22.410
<v Ronny>entwickelt hat, wo man dann auch wirklich sagen kann,

00:51:22.450 --> 00:51:24.870
<v Ronny>guck mal, das hilft vor allem Newbies halt.

00:51:25.730 --> 00:51:26.890
<v Ronny>Ja, man gibt halt vor allem

00:51:26.890 --> 00:51:28.250
<v Ronny>dem Veto sehr viel Macht.

00:51:28.970 --> 00:51:30.810
<v Johannes>Jeder kann sagen nein und dann stimmt es.

00:51:30.950 --> 00:51:32.050
<v Johannes>Und egal, wie viele Leute vorher...

00:51:32.050 --> 00:51:33.610
<v Dominik>Ich habe da eine ein bisschen gespaltene Meinung zu.

00:51:34.210 --> 00:51:36.570
<v Johannes>Ja, es ist auch schwierig, aber wenn

00:51:36.570 --> 00:51:38.690
<v Johannes>sowas unterwegs ist, das ist natürlich super

00:51:38.690 --> 00:51:40.850
<v Johannes>frustrierend, wenn du schon viel Zeit und viel Arbeit

00:51:40.850 --> 00:51:42.670
<v Johannes>reingesteckt hast und die Zustimmung gekriegt hast

00:51:42.670 --> 00:51:43.750
<v Johannes>und dann sagt einer, ach nö, du.

00:51:43.790 --> 00:51:46.830
<v Dominik>Also ich bin ganz auf der Meinung, so better ask for forgiveness

00:51:46.830 --> 00:51:47.530
<v Dominik>than for permission.

00:51:48.430 --> 00:51:49.650
<v Dominik>Das ist aber hier ja nicht so.

00:51:49.710 --> 00:51:52.470
<v Dominik>Das ist aber genau bei so einem Framework, aber vielleicht

00:51:52.470 --> 00:51:54.710
<v Dominik>genau falsch rum ist, weil könnte ja sein,

00:51:54.830 --> 00:51:56.170
<v Dominik>dass ein Flugzeug mit so einem Dango läuft

00:51:56.170 --> 00:51:58.630
<v Dominik>und da muss man, ja also.

00:51:58.790 --> 00:52:00.790
<v Johannes>Es ist auch so, dass man manche Sachen

00:52:00.790 --> 00:52:02.770
<v Johannes>einfach nicht wieder zurücknehmen kann, weil du kannst manche,

00:52:02.770 --> 00:52:04.430
<v Johannes>also es gibt da den Deprecation-Prozess,

00:52:04.650 --> 00:52:07.010
<v Dominik>aber es sammelt sich an.

00:52:07.430 --> 00:52:09.450
<v Dominik>Und das ist so ein...

00:52:09.450 --> 00:52:11.450
<v Dominik>Deswegen verstehe ich sehr gut die Leute, die da so die Knüppel

00:52:11.450 --> 00:52:13.550
<v Dominik>zwischen... Wenn der es richtig machen will, man kann es halt auch missbrauchen

00:52:13.550 --> 00:52:15.630
<v Dominik>und es kann halt ätzend werden und es kann politisch werden.

00:52:15.650 --> 00:52:16.450
<v Dominik>Ja, und es muss vor allem grün im Prozess sein.

00:52:16.850 --> 00:52:18.990
<v Dominik>Genau, und dann erst die Leute losrennen lassen, zwei Jahre Arbeit,

00:52:19.130 --> 00:52:21.270
<v Dominik>ach nee, übrigens doch nicht, ist halt ziemlich

00:52:21.270 --> 00:52:23.450
<v Ronny>blöd. Also ich meine, im Endeffekt haben wir halt

00:52:23.450 --> 00:52:25.290
<v Ronny>genau das gemacht, um auf den Tortag wieder zu kommen,

00:52:25.430 --> 00:52:27.610
<v Ronny>was Carlton halt auch vorgeschlagen

00:52:27.610 --> 00:52:29.350
<v Ronny>hat. Er sagt, das Ecosystem von

00:52:29.350 --> 00:52:30.570
<v Ronny>Django ist halt im Endeffekt

00:52:30.570 --> 00:52:33.190
<v Ronny>einer der Haupt-USBs.

00:52:34.170 --> 00:52:34.970
<v Ronny>Ich hab's schon wieder gesagt.

00:52:35.790 --> 00:52:36.710
<v Ronny>Ich freu mich drauf hingewiesen.

00:52:37.430 --> 00:52:38.450
<v Ronny>und

00:52:38.450 --> 00:52:41.250
<v Ronny>dass neue Dinge

00:52:41.250 --> 00:52:43.150
<v Ronny>erstmal in Packages leben sollen und wenn man

00:52:43.150 --> 00:52:45.210
<v Ronny>wirklich das Gefühl hat, dass das unbedingt

00:52:45.210 --> 00:52:47.070
<v Ronny>in Core rein muss und ansonsten

00:52:47.070 --> 00:52:48.990
<v Ronny>ein gut gewartetes Package halt keinen Nachteil zum

00:52:48.990 --> 00:52:51.130
<v Ronny>eigentlichen Django hat, vor allem gibt es

00:52:51.130 --> 00:52:52.230
<v Ronny>diesen schönen Spruch aus Python,

00:52:52.890 --> 00:52:55.250
<v Ronny>Features go to the main library

00:52:55.250 --> 00:52:56.950
<v Ronny>to die. Also sprich, sobald irgendwas

00:52:56.950 --> 00:52:59.170
<v Ronny>in der Main Library ist, wird einfach nichts mehr daran entwickelt,

00:52:59.270 --> 00:53:01.210
<v Ronny>weil die Zyklen einfach viel zu langsam sind,

00:53:01.390 --> 00:53:02.990
<v Ronny>dumm. Von daher gibt es jetzt Django

00:53:02.990 --> 00:53:05.010
<v Ronny>Removals, ganz kurz, noch einen kurz, also wer

00:53:05.010 --> 00:53:06.730
<v Ronny>sich dafür interessiert, das ist

00:53:06.730 --> 00:53:08.850
<v Ronny>sehr, sehr klein und tut nur was

00:53:08.850 --> 00:53:10.850
<v Ronny>auf dem Development-Server, kann man theoretisch, wenn man das

00:53:10.850 --> 00:53:13.050
<v Ronny>möchte, auch als Development-Dependence

00:53:13.050 --> 00:53:14.770
<v Ronny>installieren, dann läuft es ja nicht in der Pipeline und

00:53:14.770 --> 00:53:16.710
<v Ronny>dann kann man quasi, wenn man vor allem für alte

00:53:16.710 --> 00:53:18.930
<v Ronny>Projekte, Fun Fact, in jedem

00:53:18.930 --> 00:53:20.730
<v Ronny>einzelnen alten Projekt, also alt

00:53:20.730 --> 00:53:22.550
<v Ronny>sage ich mal 2018 und davor,

00:53:23.010 --> 00:53:24.790
<v Ronny>habe ich mindestens eine Variable gefunden, die

00:53:24.790 --> 00:53:26.810
<v Ronny>nicht mehr da drin sein sollen, hat in allen anderen Fällen

00:53:26.810 --> 00:53:28.630
<v Ronny>keine Auswirkungen gehabt, die hat einfach nichts getan,

00:53:29.150 --> 00:53:30.750
<v Ronny>aber trotzdem interessant, das mindestens einmal

00:53:30.750 --> 00:53:32.290
<v Ronny>drüber laufen zu lassen und zu merken,

00:53:32.470 --> 00:53:34.450
<v Ronny>was man vielleicht vergessen hat. Hat mich auch von

00:53:34.450 --> 00:53:36.210
<v Dominik>das auch dann ein bisschen, also irgendwie einfach ein altes

00:53:36.210 --> 00:53:37.650
<v Dominik>Template genommen und dann mit neuem

00:53:37.650 --> 00:53:40.710
<v Dominik>alte Settings halt gehabt und dann

00:53:40.710 --> 00:53:42.730
<v Dominik>da bumm, hup, huch.

00:53:43.110 --> 00:53:44.250
<v Dominik>Wenn man es dann merkt, ist gut.

00:53:44.250 --> 00:53:44.910
<v Dominik>Jetzt hast du die Lösung.

00:53:46.510 --> 00:53:48.370
<v Johannes>Das Problem, was ich habe mit

00:53:48.370 --> 00:53:50.370
<v Johannes>der Library-Lösung ist

00:53:50.370 --> 00:53:52.410
<v Johannes>Visibility. Ja, weil niemand

00:53:52.410 --> 00:53:53.470
<v Johannes>erfährt davon, dass es das gibt.

00:53:53.790 --> 00:53:56.250
<v Johannes>Hast keine Chance, wenn du nicht Carlton Gibson

00:53:56.250 --> 00:53:57.250
<v Johannes>heißt oder sonst was,

00:53:58.130 --> 00:54:00.370
<v Johannes>irgendwo Benutzer für deine Library anzukriegen.

00:54:00.430 --> 00:54:02.230
<v Johannes>Wenn es irgendwie so ein Nischen-Use-Case ist, also ich

00:54:02.230 --> 00:54:04.310
<v Johannes>habe so ein Feature, was ich gerne

00:54:04.310 --> 00:54:06.010
<v Johannes>in Django drin hätte, wo ich jetzt auch schon mit mehreren Leuten

00:54:06.010 --> 00:54:06.930
<v Johannes>drüber gesprochen habe.

00:54:07.970 --> 00:54:09.090
<v Johannes>Einziger Grund, warum du hier bist.

00:54:09.190 --> 00:54:12.290
<v Johannes>Wo ich jetzt mich mal so langsam rantasten werde

00:54:12.290 --> 00:54:13.850
<v Johannes>und es ist auch wirklich was ganz Kleines.

00:54:14.910 --> 00:54:16.010
<v Johannes>Ja, das erzähl ich nachher mal.

00:54:16.310 --> 00:54:17.810
<v Johannes>Da muss ich erst noch mehr politischen

00:54:17.810 --> 00:54:20.570
<v Johannes>guten Wirklichkeiten, bevor ich das verraten kann.

00:54:20.710 --> 00:54:21.670
<v Johannes>Aber, okay.

00:54:22.310 --> 00:54:24.170
<v Johannes>Es wäre eine sehr einfache Änderung und es wäre

00:54:24.170 --> 00:54:25.870
<v Johannes>auch was, was man einfach in der Bibliothek machen würde,

00:54:25.930 --> 00:54:28.250
<v Johannes>aber wenn ich es in der Bibliothek machen würde, wäre es unsichtbar.

00:54:28.470 --> 00:54:29.910
<v Johannes>Niemand würde das finden.

00:54:30.490 --> 00:54:32.170
<v Johannes>Weil es eine Funktionalität von

00:54:32.170 --> 00:54:33.750
<v Johannes>Django, die in Django Core drin ist,

00:54:33.950 --> 00:54:35.910
<v Johannes>erweitert. Genauso wie bei

00:54:35.910 --> 00:54:38.010
<v Johannes>den Removals. Da ist doch

00:54:38.010 --> 00:54:39.850
<v Johannes>ein Warnungsmechanismus drin. Warum

00:54:39.850 --> 00:54:41.930
<v Johannes>muss ich jetzt nochmal was machen, damit ich andere

00:54:41.930 --> 00:54:42.790
<v Johannes>Warnungen bekomme?

00:54:43.930 --> 00:54:45.910
<v Johannes>Ich glaube, dass das einfach, also das

00:54:45.910 --> 00:54:47.230
<v Johannes>ist das, was mich frustriert. Dass

00:54:47.230 --> 00:54:49.790
<v Johannes>es Dinge gibt, die man mit wenig

00:54:49.790 --> 00:54:51.790
<v Johannes>Aufwand machen könnte, die halt Django

00:54:51.790 --> 00:54:53.710
<v Johannes>erweitern. Und die Antwort ist, tu es in den Library.

00:54:53.990 --> 00:54:55.890
<v Johannes>Ja, okay, aber dann ist es halt

00:54:55.890 --> 00:54:56.950
<v Johannes>für mich. Dann ist es für mich.

00:54:57.910 --> 00:54:58.670
<v Johannes>Ja, könnte ich auch machen.

00:55:01.530 --> 00:55:01.930
<v Johannes>Entschuldigung.

00:55:03.030 --> 00:55:07.870
<v Dominik>Dann folgen wir die DangoCon und machen die einfach bei uns in Germany.

00:55:08.290 --> 00:55:09.170
<v Dominik>Gibt es ein großes Gerücht?

00:55:09.710 --> 00:55:11.190
<v Dominik>Ja, mal sehen.

00:55:13.190 --> 00:55:14.050
<v Dominik>Ja, also wir werden sehen.

00:55:14.390 --> 00:55:19.250
<v Johannes>Ich meine, wir Softwareentwickler sind ja, wir mögen das technische Probleme zu lösen

00:55:19.250 --> 00:55:24.850
<v Johannes>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
<v Johannes>Ja, das ist immer dasselbe Problem.

00:55:26.350 --> 00:55:28.910
<v Johannes>Ich bin noch nicht Softwareentwickler geworden, um mit Menschen zu tun zu haben

00:55:28.910 --> 00:55:30.690
<v Johannes>und jetzt muss ich mit Menschen sprechen, schrecklich.

00:55:31.170 --> 00:55:33.770
<v Dominik>Ich könnte da so eine Coaching-AI

00:55:33.770 --> 00:55:34.270
<v Dominik>fragen.

00:55:35.390 --> 00:55:37.150
<v Johannes>Aber mit AI sprechen ist ja noch schlimmer.

00:55:37.930 --> 00:55:39.650
<v Johannes>Warum? War jemand bei dem

00:55:39.650 --> 00:55:41.230
<v Johannes>Workshop? Nee. Nein.

00:55:41.750 --> 00:55:43.490
<v Johannes>Okay, schade. Dann müssen wir den jetzt auslassen.

00:55:43.730 --> 00:55:45.310
<v Johannes>Der Building-Unique-Voting-System.

00:55:45.310 --> 00:55:46.590
<v Johannes>Achso, nur eine Minute.

00:55:48.070 --> 00:55:49.050
<v Johannes>Klingt aber interessant.

00:55:49.490 --> 00:55:51.030
<v Johannes>Ja, hatte ich mich auch.

00:55:51.730 --> 00:55:53.370
<v Johannes>Aber die Workshops, der war halt sehr

00:55:53.370 --> 00:55:55.370
<v Johannes>lang und der hat dann zwei andere Talks überlegt.

00:55:56.130 --> 00:55:57.330
<v Johannes>Ich habe auch überlegt, wo ich hier

00:55:57.330 --> 00:55:58.810
<v Johannes>würde ich nicht skippen.

00:55:58.810 --> 00:55:59.910
<v Johannes>Das war nicht für mich so interessant.

00:56:00.270 --> 00:56:01.930
<v Dominik>Da bin ich erst drüber gegangen und dann habe ich gedacht, ach komm.

00:56:04.090 --> 00:56:05.190
<v Dominik>Genau, dann gab es doch den

00:56:05.190 --> 00:56:07.070
<v Jochen>How to Enjoy Debugging in Production.

00:56:07.270 --> 00:56:07.830
<v Jochen>Oh ja, stimmt.

00:56:08.710 --> 00:56:10.130
<v Jochen>Von Karen Tracy.

00:56:11.270 --> 00:56:13.290
<v Johannes>Der war am Anfang sehr unterhaltsam, weil sie

00:56:13.290 --> 00:56:15.770
<v Johannes>eine Kiste gekriegt hat,

00:56:15.810 --> 00:56:17.330
<v Johannes>weil sie ein bisschen kleiner ist und nicht über dieses

00:56:17.330 --> 00:56:18.270
<v Johannes>Pult gekommen ist.

00:56:18.770 --> 00:56:21.230
<v Johannes>Das Audiosetup ist dieses Mal ein bisschen schwierig,

00:56:21.230 --> 00:56:23.210
<v Johannes>habe ich das Gefühl. Da ist noch ein Mikrofon

00:56:23.210 --> 00:56:24.870
<v Johannes>da vorne. Ja, das Mastering da.

00:56:25.510 --> 00:56:26.190
<v Johannes>Ja, das Mastering.

00:56:26.350 --> 00:56:28.870
<v Jochen>Sie haben es dann ja quasi so weit aufgedreht, bis es halt

00:56:28.870 --> 00:56:30.770
<v Jochen>kurz vorm Rückkoppeln war. Das war immer noch

00:56:30.770 --> 00:56:31.250
<v Jochen>viel zu leise.

00:56:32.950 --> 00:56:34.170
<v Jochen>Das war in einem anderen

00:56:34.170 --> 00:56:36.730
<v Jochen>Konzert. Aber das war eigentlich interessant, was

00:56:36.730 --> 00:56:37.990
<v Jochen>sie erzählt hat. Es war super interessant.

00:56:39.130 --> 00:56:40.950
<v Dominik>Was hat sie eigentlich, also das Wichtigste, was sie gesagt hat

00:56:40.950 --> 00:56:42.570
<v Dominik>irgendwie. Es war aber auch wieder sowas

00:56:42.570 --> 00:56:44.690
<v Dominik>so ein, ja,

00:56:44.830 --> 00:56:46.050
<v Dominik>mach ich so. Ja, mach ich so.

00:56:46.570 --> 00:56:47.350
<v Dominik>Kenn ich. Genau.

00:56:49.170 --> 00:56:50.790
<v Dominik>Ja, sie sagt halt quasi,

00:56:50.870 --> 00:56:52.970
<v Dominik>dass man für Produktionssysteme ein Logging, ein Monitoring

00:56:52.970 --> 00:56:54.790
<v Dominik>extra braucht, was auch LRs kann und dass man

00:56:54.790 --> 00:56:55.630
<v Dominik>das halt dazu bauen muss.

00:56:56.550 --> 00:56:58.490
<v Ronny>Und dass man halt, also im Endeffekt, ich hab bei dem

00:56:58.490 --> 00:57:00.330
<v Ronny>Talk ein bisschen was anderes erwartet. Das hat, glaube ich, auch

00:57:00.330 --> 00:57:01.890
<v Ronny>irgendwer aus dem Publikum nachher gefragt,

00:57:02.410 --> 00:57:04.330
<v Ronny>weil ich dachte eigentlich eher, es ging jetzt darum, wie man halt

00:57:04.330 --> 00:57:06.330
<v Ronny>wirklich tatsächlich in Produktion irgendwas debuggt

00:57:06.330 --> 00:57:08.150
<v Ronny>und ich glaube, ein Großteil ging halt davon, wie man eigentlich

00:57:08.150 --> 00:57:09.830
<v Ronny>vermeidet, dass es so weit kommt,

00:57:10.170 --> 00:57:11.510
<v Ronny>was ja auch genau der richtige Weg ist.

00:57:11.510 --> 00:57:13.510
<v Dominik>Ja, gut, aber ich glaube, sie meinte, also Debugging hat sie

00:57:13.510 --> 00:57:15.230
<v Dominik>tatsächlich hinter Logging und Monitoring verstanden, ne?

00:57:15.250 --> 00:57:17.310
<v Dominik>Also, dass tatsächlich automatisiert nach

00:57:17.310 --> 00:57:19.350
<v Dominik>Fehlermeldungen gesucht wird, weil ich glaube, die Menge, die sie hatte,

00:57:19.430 --> 00:57:21.230
<v Dominik>war ziemlich viel, also sowas wie, keine Ahnung, Tausende

00:57:21.230 --> 00:57:23.490
<v Dominik>von Messages, die immer so aufhoppen,

00:57:23.570 --> 00:57:25.370
<v Dominik>dass man die halt ordentlich filtern und nach Prioritäten

00:57:25.370 --> 00:57:27.550
<v Dominik>sortieren kann und sowas und dann halt

00:57:27.550 --> 00:57:29.770
<v Dominik>die richtigen weiterleitet.

00:57:29.910 --> 00:57:31.510
<v Dominik>Also dass dann bei jemandem so ein Licht angeht,

00:57:31.590 --> 00:57:32.950
<v Dominik>dass er dann wirklich direkt drauf gucken kann.

00:57:33.710 --> 00:57:35.750
<v Dominik>Und dafür muss man das natürlich alles noch nicht eingestellt haben.

00:57:36.130 --> 00:57:37.530
<v Dominik>Und sein eigenes Laufsatz betreiben.

00:57:37.690 --> 00:57:39.210
<v Johannes>Die Antwort auf diese Frage, die da kam,

00:57:39.270 --> 00:57:40.930
<v Johannes>wie vermeidet man denn Fehler in der Produktion,

00:57:41.710 --> 00:57:42.950
<v Johannes>fand ich eigentlich ziemlich gut.

00:57:43.330 --> 00:57:44.670
<v Johannes>Weil sie hat halt gesagt, kannst du nicht.

00:57:45.210 --> 00:57:46.670
<v Johannes>Du musst darauf vorbereitet sein,

00:57:46.750 --> 00:57:47.670
<v Johannes>Fehler in der Produktion zu haben.

00:57:47.890 --> 00:57:48.770
<v Johannes>Und egal, was du machst,

00:57:48.890 --> 00:57:50.070
<v Johannes>wenn du mehr Testing machst, hast du weniger.

00:57:50.450 --> 00:57:51.110
<v Johannes>Aber du hast sie trotzdem.

00:57:51.570 --> 00:57:52.910
<v Johannes>Was ich auch sehr interessant fand,

00:57:53.530 --> 00:57:54.230
<v Johannes>also wie gesagt, ich glaube,

00:57:54.390 --> 00:57:55.830
<v Johannes>vieles von dem, was sie gesagt hat,

00:57:55.890 --> 00:57:57.990
<v Ronny>so, ja, okay, man sollte Sentry haben,

00:57:58.310 --> 00:57:59.290
<v Ronny>so, das ist eine gute Sache,

00:57:59.890 --> 00:58:01.870
<v Ronny>aber was... Muss ich kurz was einwerfen?

00:58:02.370 --> 00:58:03.710
<v Ronny>Ich habe jetzt kürzlich gelernt, es gibt

00:58:03.710 --> 00:58:05.430
<v Johannes>Glitchtip. Glitchtip?

00:58:05.430 --> 00:58:07.810
<v Johannes>Das hat die gleiche AP wie Sentry,

00:58:07.890 --> 00:58:09.830
<v Johannes>das heißt, man benutzt Sentry Client, aber es ist

00:58:09.830 --> 00:58:11.530
<v Johannes>einfacher zu hosten, weil es einfach so wie

00:58:11.530 --> 00:58:13.710
<v Johannes>Sentry vor fünf Jahren ist. Okay.

00:58:14.330 --> 00:58:15.850
<v Johannes>Für die kleinen Benutzer

00:58:15.850 --> 00:58:17.850
<v Johannes>ist das einfacher als Sentry. Und wenn man dann groß wird, kann man

00:58:17.850 --> 00:58:18.990
<v Johannes>auch auf Sentry umsteigen. Ja, cool.

00:58:20.050 --> 00:58:21.530
<v Johannes>Entschuldigung, jetzt...

00:58:21.530 --> 00:58:23.390
<v Ronny>Also was ich ganz jetzt dran fand, ist so

00:58:23.390 --> 00:58:25.690
<v Ronny>dieses Sidenote aus der Praxis

00:58:25.690 --> 00:58:40.770
<v Ronny>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
<v Ronny>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
<v Ronny>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
<v Ronny>Ja, man muss rausfinden, ob es richtig ist.

00:59:23.290 --> 00:59:46.030
<v Ronny>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
<v Johannes>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
<v Ronny>Gut, ich meine, oft kann man es ja auch reproduzieren zum Glück,

00:59:53.010 --> 00:59:53.970
<v Ronny>wenn irgendwie eine Möglichkeit...

00:59:53.970 --> 00:59:57.150
<v Ronny>Also wir haben in mehreren großen Systemen das so eingebaut,

00:59:57.570 --> 01:00:00.350
<v Ronny>dass wir so einen Job haben, der anonymisierte Dumps postet.

01:00:00.390 --> 01:00:02.610
<v Ronny>Da gibt es ja auch ein cooles Package, auch aus Stuttgart.

01:00:03.810 --> 01:00:04.990
<v Ronny>Django Scrubber heißt das.

01:00:05.850 --> 01:00:07.330
<v Ronny>Da kann man über so eine Metaklasse,

01:00:07.330 --> 01:00:10.530
<v Ronny>kann man quasi über Faker definieren, wie Daten anonymisiert werden.

01:00:10.690 --> 01:00:12.970
<v Ronny>Also das heißt, du hast dann quasi produktionsnahe Daten

01:00:12.970 --> 01:00:15.550
<v Ronny>gegen random Daten, mit denen es keinen Spaß macht zu arbeiten

01:00:15.550 --> 01:00:17.770
<v Ronny>und die auch meistens irgendwie nicht ins UI passen und so.

01:00:18.270 --> 01:00:19.990
<v Ronny>Also Django Scrubber könnt ihr euch mal anschauen auf jeden Fall.

01:00:20.050 --> 01:00:24.350
<v Dominik>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
<v Ronny>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
<v Ronny>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
<v Ronny>Was natürlich schwierig ist, wenn man nicht weiß,

01:01:01.350 --> 01:01:02.510
<v Ronny>was ist der Kontext. Welcher User war das?

01:01:02.910 --> 01:01:04.510
<v Ronny>Aber das kann man relativ einfach

01:01:04.510 --> 01:01:07.050
<v Ronny>ein Miniscript schreiben, dass im Endeffekt alles, was man nicht in Sentry

01:01:07.050 --> 01:01:08.550
<v Ronny>haben möchte, rauswirft. Das heißt, vom

01:01:08.550 --> 01:01:11.030
<v Ronny>GDPR ist man super safe und dann hast du

01:01:11.030 --> 01:01:12.890
<v Ronny>halt die User-ID in Sentry, kannst damit das dann

01:01:12.890 --> 01:01:14.970
<v Ronny>nachstellen, hast vielleicht noch die Produkt-ID, wo jemand geklickt hat,

01:01:15.030 --> 01:01:16.610
<v Ronny>keine Ahnung. Und damit kann man

01:01:16.610 --> 01:01:18.870
<v Ronny>viele Probleme, klar,

01:01:18.970 --> 01:01:20.910
<v Ronny>wenn du irgendwas ganz fieses mit Concurrency oder

01:01:20.910 --> 01:01:22.950
<v Ronny>verteilte Systeme oder sowas,

01:01:23.110 --> 01:01:24.630
<v Ronny>das ist nochmal ein anderes Problem, aber

01:01:24.630 --> 01:01:25.570
<v Ronny>ja.

01:01:26.370 --> 01:01:27.590
<v Ronny>Ja, in solchen Systemen

01:01:27.590 --> 01:01:28.590
<v Ronny>macht man halt einfach keine Fehler.

01:01:29.330 --> 01:01:33.770
<v Ronny>Stimmt. Darum ist es auch einfach absolut gesehen besser. In jedem Fall.

01:01:34.390 --> 01:01:40.350
<v Johannes>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
<v Johannes>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
<v Johannes>Ganz der Mathematiker.

01:01:47.610 --> 01:02:08.610
<v Jochen>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
<v Jochen>Nicht.

01:02:10.110 --> 01:02:11.770
<v Jochen>War, genau, ja.

01:02:12.710 --> 01:02:12.910
<v Jochen>Gut.

01:02:12.910 --> 01:02:17.590
<v Johannes>Dann gab es noch einen Vortrag und zwar 100 Million Parking Tracks.

01:02:17.610 --> 01:02:19.090
<v Johannes>Transactions per year with Django.

01:02:19.710 --> 01:02:21.770
<v Jochen>Ja, die meinen halt mit Transaktionen was anderes als andere

01:02:21.770 --> 01:02:23.710
<v Jochen>Leute, daher war das so ein bisschen verwirrend für mich,

01:02:23.930 --> 01:02:24.110
<v Jochen>aber

01:02:24.110 --> 01:02:27.550
<v Jochen>sie meinen damit tatsächlich, wie viele Leute sich so ein

01:02:27.550 --> 01:02:28.390
<v Jochen>Parkzettel umsetzen.

01:02:29.810 --> 01:02:31.450
<v Johannes>Hat er auch gesagt, es gibt verschiedene Sorten.

01:02:31.630 --> 01:02:32.630
<v Johannes>Je nachdem, wo du parkst.

01:02:32.770 --> 01:02:35.250
<v Dominik>Das ist das Backup von den Parkplätzen in den Niederlanden, oder?

01:02:35.530 --> 01:02:37.130
<v Johannes>Ja, und jetzt auch in Deutschland, hat er auch gesagt.

01:02:37.170 --> 01:02:39.590
<v Johannes>Ja, genau. War aber nicht auf der Karte drauf,

01:02:39.630 --> 01:02:41.210
<v Johannes>hätte mich jetzt interessiert. Ja, ich habe auch so eine App,

01:02:41.290 --> 01:02:43.150
<v Dominik>ich weiß nicht, Pay by Phone oder was das heißt,

01:02:43.250 --> 01:02:44.810
<v Dominik>vielleicht benutzt ihr was ähnliches oder sogar den gleichen

01:02:44.810 --> 01:02:48.590
<v Jochen>Ja, also da waren schon

01:02:48.590 --> 01:02:50.410
<v Jochen>viele schöne Sachen drin und das ist halt

01:02:50.410 --> 01:02:52.630
<v Jochen>schön zu sehen, dass man halt irgendwie,

01:02:52.810 --> 01:02:54.670
<v Jochen>das sind ja nur irgendwie vier Leute oder so und die

01:02:54.670 --> 01:02:56.410
<v Jochen>machen das halt quasi für alle Parkplätze

01:02:56.410 --> 01:02:58.770
<v Jochen>und das machen sie mit Django und das funktioniert super.

01:02:58.950 --> 01:03:00.690
<v Ronny>Es war also ein ETL-System, haben die gebaut?

01:03:00.710 --> 01:03:02.410
<v Dominik>Genau, die haben so ein ETL-System mit Django Admin gebaut.

01:03:03.050 --> 01:03:04.690
<v Dominik>Das fand ich so ein bisschen besonders.

01:03:04.890 --> 01:03:07.190
<v Dominik>Weiß ich nicht, ob ich das dann gedacht hätte.

01:03:07.190 --> 01:03:09.050
<v Dominik>Also, ne, du musst

01:03:09.050 --> 01:03:11.110
<v Dominik>Daten, musst du erst irgendwo herbekommen

01:03:11.110 --> 01:03:12.510
<v Dominik>und dann musst du dich transformieren und wieder

01:03:12.510 --> 01:03:14.930
<v Dominik>Also Extract, Transform und

01:03:14.930 --> 01:03:15.490
<v Dominik>Load. Genau.

01:03:18.710 --> 01:03:20.470
<v Johannes>Weiß ja nicht jeder. Aber es ist

01:03:20.470 --> 01:03:22.570
<v Ronny>trotzdem interessant, dass das mit dem

01:03:22.570 --> 01:03:24.890
<v Ronny>Jungle-Framework, dass das auf der Skala

01:03:24.890 --> 01:03:26.770
<v Ronny>funktioniert, dass die es mit vier

01:03:26.770 --> 01:03:28.750
<v Ronny>Leuten maintained bekommen und sich auch

01:03:28.750 --> 01:03:30.470
<v Ronny>noch gut dabei fühlen, sagt er.

01:03:31.450 --> 01:03:32.490
<v Ronny>Das würde ich unterschreiben.

01:03:32.690 --> 01:03:34.190
<v Ronny>Ich hätte das auch das Gefühl, dass es gut geht.

01:03:34.750 --> 01:03:36.730
<v Ronny>Ich glaube, es gibt viele Setups, wo du das nicht

01:03:36.730 --> 01:03:38.550
<v Ronny>mit vier Mann hinbekommst. Absolut.

01:03:39.250 --> 01:03:40.770
<v Johannes>Das ist so ein bisschen der Take-away,

01:03:40.910 --> 01:03:43.010
<v Johannes>wie weit du es treiben kannst.

01:03:43.470 --> 01:03:44.870
<v Johannes>Es müssen auch vier gute Leute

01:03:44.870 --> 01:03:46.910
<v Dominik>sein dann tatsächlich, die das gut organisieren können.

01:03:48.030 --> 01:03:49.330
<v Dominik>Oder drei gute Leute

01:03:49.330 --> 01:03:51.130
<v Ronny>und einer macht das, worauf die anderen keinen Bock haben.

01:03:53.350 --> 01:03:54.770
<v Ronny>Das kam auch bei diesen anderen

01:03:54.770 --> 01:03:56.270
<v Ronny>Talks, bei dem von Hake Benita.

01:03:57.910 --> 01:03:58.910
<v Ronny>Gestern bei dem,

01:04:00.630 --> 01:04:00.910
<v Ronny>wie man

01:04:01.470 --> 01:04:03.090
<v Ronny>von Integer zu Big Integer

01:04:03.090 --> 01:04:04.690
<v Johannes>wechselt, wenn du mehr als eine Milliarde

01:04:04.690 --> 01:04:06.950
<v Johannes>Zeilen hast, da kam das durchaus

01:04:06.950 --> 01:04:08.770
<v Johannes>für mich so ein bisschen raus, wie weit man

01:04:08.770 --> 01:04:10.430
<v Johannes>mit diesen Tools gehen kann.

01:04:10.810 --> 01:04:13.270
<v Johannes>wie viel Schmerz die doch die meiste Zeit

01:04:13.270 --> 01:04:13.930
<v Johannes>von einem fernhalten.

01:04:15.250 --> 01:04:17.510
<v Johannes>Wir haben ja vorhin über diesen Talk von Hage Benita

01:04:17.510 --> 01:04:19.430
<v Johannes>gesprochen. Da könnte man jetzt rausziehen,

01:04:19.570 --> 01:04:21.170
<v Johannes>dass das Migrationssystem blöd ist und

01:04:21.170 --> 01:04:23.150
<v Johannes>dass man gleich von Anfang an SQL

01:04:23.150 --> 01:04:25.130
<v Johannes>machen sollte und lieber eigene Indizes und so weiter.

01:04:25.790 --> 01:04:27.370
<v Johannes>Aber für mich das Fazit ist ein anderes.

01:04:27.530 --> 01:04:29.370
<v Johannes>Für mich das Fazit ist, du kannst

01:04:29.370 --> 01:04:31.230
<v Johannes>das eigentlich so machen, wie du willst und

01:04:31.230 --> 01:04:33.270
<v Johannes>sobald du dann an die Grenze stößt,

01:04:33.910 --> 01:04:35.170
<v Johannes>gibt es trotzdem Mittel, um über

01:04:35.170 --> 01:04:36.450
<v Johannes>diese Grenze noch hinauszukommen.

01:04:37.130 --> 01:04:39.070
<v Ronny>Und auch unkompliziert. Das war ja kein

01:04:39.070 --> 01:04:41.130
<v Ronny>Hexenberg, was er gemacht hat. Ja, und er hat auch gesagt,

01:04:41.250 --> 01:04:43.330
<v Johannes>wenn es eine Möglichkeit gibt, das mit den Django-Mitteln

01:04:43.330 --> 01:04:45.150
<v Johannes>zu machen, dann macht er das, weil es einfach

01:04:45.150 --> 01:04:46.850
<v Johannes>komfortabler ist und

01:04:46.850 --> 01:04:49.770
<v Johannes>zukunftssicherer und Datenbanktransferierbar

01:04:49.770 --> 01:04:50.110
<v Johannes>und so weiter.

01:04:50.950 --> 01:04:52.830
<v Johannes>Und das ist so ein bisschen eine schöne Bestätigung,

01:04:52.990 --> 01:04:55.050
<v Johannes>dass man eigentlich sich erst mal

01:04:55.050 --> 01:04:57.030
<v Johannes>keine Sorgen drüber machen muss, über den Erfolg.

01:04:57.610 --> 01:04:59.030
<v Johannes>Ganz viele Leute

01:04:59.030 --> 01:05:01.090
<v Johannes>machen sich dann Sorgen, was ist, wenn ich mal eine Million

01:05:01.090 --> 01:05:02.030
<v Johannes>User habe? Okay.

01:05:03.770 --> 01:05:05.150
<v Johannes>Zu viele Sorgen über den Erfolg

01:05:05.150 --> 01:05:07.070
<v Johannes>gemacht. Und für mich ist das

01:05:07.070 --> 01:05:07.830
<v Johannes>so ein bisschen die Botschaft.

01:05:08.530 --> 01:05:10.770
<v Johannes>Man kann das machen und das funktioniert.

01:05:11.010 --> 01:05:12.950
<v Dominik>Wenn ich jetzt noch drei Nutzer habe, vielleicht funktioniert

01:05:12.950 --> 01:05:13.890
<v Dominik>das ja dann auch trotzdem.

01:05:15.710 --> 01:05:16.110
<v Dominik>Vielleicht.

01:05:17.110 --> 01:05:19.090
<v Johannes>Beim ersten geht es noch, beim zweiten...

01:05:19.090 --> 01:05:21.030
<v Johannes>Als Mathematiker

01:05:21.030 --> 01:05:23.090
<v Johannes>der größte Sprung ist eigentlich von 1 zu 2.

01:05:23.250 --> 01:05:24.770
<v Johannes>Alle anderen sind dann...

01:05:24.770 --> 01:05:25.450
<v Johannes>Das ist egal.

01:05:27.030 --> 01:05:28.910
<v Dominik>Man kann ja auch nur noch mit Agenten reden.

01:05:30.730 --> 01:05:31.810
<v Dominik>Ist das dann schon viele?

01:05:33.010 --> 01:05:34.370
<v Dominik>Ist der Agent dann...

01:05:34.370 --> 01:05:35.410
<v Dominik>Anderes Thema.

01:05:36.910 --> 01:05:39.310
<v Johannes>Genau, das war's. Jetzt ist gerade Mittagspause.

01:05:39.910 --> 01:05:40.090
<v Johannes>Ja.

01:05:41.170 --> 01:05:42.870
<v Dominik>Es war Mittagspause, wir haben schon was verpasst.

01:05:43.050 --> 01:05:44.250
<v Dominik>Ja, es läuft schon wieder was.

01:05:44.890 --> 01:05:46.690
<v Johannes>Aber was tut man nicht für seine Hörer?

01:05:48.670 --> 01:05:49.350
<v Johannes>Ja, dann

01:05:49.350 --> 01:05:51.270
<v Dominik>schaltet uns wieder ein. Vielleicht morgen wieder,

01:05:51.350 --> 01:05:52.470
<v Dominik>wir wissen es noch nicht ganz genau.

01:05:53.370 --> 01:05:53.850
<v Dominik>Ja, mal schauen.

01:05:54.510 --> 01:05:56.350
<v Dominik>Ja, morgen ist auch noch die Party abends.

01:05:56.790 --> 01:05:59.230
<v Dominik>Und wir können ja nicht eigentlich, oder vielleicht auch am Samstag noch eine.

01:05:59.830 --> 01:06:00.610
<v Dominik>Ja, schauen wir mal.

01:06:00.970 --> 01:06:02.790
<v Dominik>Ja, also wie auch immer, wenn ihr uns wieder hört,

01:06:02.790 --> 01:06:04.190
<v Dominik>bleibt uns gewogen, schaltet wieder rein.

01:06:04.270 --> 01:06:06.450
<v Dominik>Hallo at peisenpodcast.de für alles Feedback.

01:06:06.670 --> 01:06:07.190
<v Dominik>Vielen Dank, Ronny.

01:06:07.290 --> 01:06:07.970
<v Dominik>Das sind wir effektiv am Ende.

01:06:08.230 --> 01:06:09.650
<v Dominik>Danke, dass ich hier sein durfte.

01:06:09.830 --> 01:06:10.230
<v Dominik>Danke auch.

01:06:10.630 --> 01:06:10.810
<v Dominik>Ja.

01:06:11.370 --> 01:06:12.810
<v Dominik>Und ja, dann bis morgen.

01:06:12.870 --> 01:06:13.170
<v Dominik>Bis zum nächsten Mal.

01:06:13.310 --> 01:06:13.450
<v Dominik>Tschüss.

01:06:13.750 --> 01:06:14.070
<v Dominik>Ciao.

01:06:14.410 --> 01:06:14.610
<v Dominik>Ciao.
