Transkript: Wins and Fails

· Zurück zur Episode

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

Ja, hallo liebe Hörerinnen und Hörer.

Dominik

Willkommen beim Python Podcast, Episode 27.

Dominik

Wir wollen heute ein bisschen über unsere besten Wins und vielleicht auch Fails sprechen und ein bisschen auf das nächste Jahr schauen.

Dominik

Schön, dass ihr wieder eingeschaltet habt.

Dominik

Ich bin natürlich wieder mit Jochen dabei.

Jochen

Ja, Dominik Jochen.

Dominik

Und der Johannes ist heute wieder da.

Dominik

Hey Johannes.

Ja, hallo.

Hallo?

Johannes

Ich bin ja quasi schon Dauergast hier.

Ja, kann man zu sagen.

Jochen

Schon jenseits von Gast.

Jochen

Und ja, aber vielleicht wollen wir das einfach, wie sonst auch, halt immer mit so ein bisschen News, wobei wir könnten das diesmal auch so ein bisschen auslehnen auf was ist eigentlich 2020 so passiert oder was kommt mit 2021 noch und Strukturtrends oder weiß ich nicht.

Jochen

Ein bisschen Struktur, ja, ich fange einfach mal so ein bisschen mit News an.

Dominik

Ja, ich wollte gerade sagen, dann kommen wir als erstes die News aus der Ziel.

Jochen

Und zwar ganz nett, freut mich natürlich besonders.

Jochen

Es gibt jetzt Python 391 und 387 ist auch released worden, aber für mich nicht so interessant, weil Apple M1 Mac und da ist das jetzt schon so ein Binary, das halt nativ auf dem M1 läuft für Python 391.

Jochen

Also das ist schon sehr, sehr cool.

Jochen

Ja, und ist dann halt ein Haufen Bugfixes oder so, kann man sich auf der Changelog-Seite halt selber mal angucken.

Jochen

Zweites Ding auch zum M1.

Jochen

Docker tatsächlich, das war ja auch letztes Mal schon so ein bisschen die Frage, ob es das gehen will.

Jochen

Ja, es gibt jetzt schon eine experimentelle Version und das wird dann wohl irgendwann kommen.

Jochen

Also ich habe es nicht installiert, weil ich probiere jetzt gerade so irgendwie, wie sehr denn mein Leben aus ohne Docker-Experiment.

Jochen

Mal schauen, ob das gut geht.

Jochen

Oder ich dann doch irgendwie wieder zurückgekrochen komme.

Jochen

Aber ja, mal schauen.

Dominik

War das mit Docker 3 eine Kombination?

Jochen

Das weiß ich nicht.

Jochen

Es gibt eine experimentelle Release für ein M1, aber.

Dominik

Die hat mich auch sowas wie Compose eingeführt, jetzt als Exa-Kommando ohne Docker-Compose.

Jochen

Ah, okay.

Johannes

Ja, haben sie das reingezogen.

Das ist ja schön.

Jochen

Ja, und ansonsten war noch, also großes Thema, das war auch ein Django Newsletter, das ist ja mal irgendwie Breaking News, wenn David Hannemeyer Hanson, der von Ruben Wells, hat etwas angekündigt und zwar hat er einige Geschichten released oder fiel mal die Firma dahinter, Basecamp, unter dem O

Jochen

berbegriff Hotwire.

Dominik

Ein Hotwire, ein heißes Kabel, was

Jochen

ist das?

Jochen

Ja, das ist ganz interessante.

Heiße Draht.

Jochen

Hat mich sofort so ein bisschen an, also zuerst dachte ich, ist es jetzt irgendwie so ein Witz oder so?

Jochen

Da hieß es halt so, naja, also bessere interaktive Geschichten, weil wir machen jetzt alles neu und anders und diese ganzen JavaScript-Zeugs braucht man nicht mehr.

Jochen

Wir machen nämlich jetzt HTML direkt über das Kabel.

Jochen

Ja gut, das hat man ja schlimmer gemacht.

Jochen

Was ist denn da ja jetzt neu und toll?

Das hatten wir doch schon mal, oder?

Hatten wir das nicht schon mal?

Jochen

Das gab es doch schon irgendwann mal.

Jochen

Und das Neue und Tolle ist, dass das halt nur so HTML-Schnipsel sind.

Jochen

Und die kommen halt auch über WebSockets.

Jochen

Und ja, es gibt da halt dann so ein bisschen JavaScript-Glue auf der kleinen Seite, wo man halt sozusagen, also ein Teil heißt Tobo von diesem Hotwire-Ding.

Jochen

Und das ist quasi das, was halt dieses Handling macht von, du hast halt Frames, die halt selbstständig sich updaten können, sodass du halt nicht einen kompletten Page-Reload machen musst, wenn sich irgendwas auf deiner Seite ändert.

Jochen

Und die können aber, du kannst aber auch Dinge außerhalb von diesen Frames damit updaten und so und das geht halt auch per Websocket.

Jochen

Und dann hast du halt noch irgendwie Stimulus, heißt das irgendwie so ein JavaScript-Framework, wo du so relativ simple Controller hast, die dann irgendwas machen können, wenn sie halt irgendwie Daten kriegen, nur über die Leitungen und dann halt irgendwie selber so ein bisschen HTML rendern, aber das ist eigentlich eher so die Ausnahme.

Jochen

So, eigentlich willst du sozusagen, dass es auf dem Server gerendert wird und du ersetzt halt nur Dinge im DOM und zwar ganze Bereiche.

Jochen

Und das ganze State-Handling und das ganze Gerändere, das passiert halt weiterhin auf dem Server, wie man das halt gewohnt ist.

Jochen

Und das ist natürlich schon eine nette Idee, dass du halt sozusagen einfach dein stinknormales Ruby-on-Rails-Templating-Zeugs nimmst und du renderst halt HTML-Schnipsel damit raus.

Jochen

Und die gehen dann halt nicht quasi als komplette Request an den Client, sondern nur als so Schnipsel über WebSocket und werden dann halt einfach nur ersetzt auf den Client.

Jochen

Und dann kannst du quasi deine gesamte Applikation weiterhin wie so einen normalen Ruby-on-Rails-Moduliten schreiben.

Jochen

Und aber trotzdem hast du halt nicht diese Unterbrechungen, die du normalerweise hättest, wenn du ein Patriot machen musst, nur weil du irgendwo auf ein Ding geklickt hast.

Jochen

Und dann gibt es auch noch ein Ding, das nennt sich irgendwie Strada und da weiß ich auch nicht so genau, das wird erst noch released, das ist noch nicht fertig.

Jochen

Ja.

Jochen

Aber ja, also im Wesentlichen ist es das, was auch LiveView in Elixir, also mit Erlang und Phoenix macht, irgendwie in Ruby und Rails.

Jochen

Und ja.

Jochen

Und jetzt haben natürlich auch auch schon irgendwelche Leute sich überlegt, ob sie das nicht für Django adaptieren können und so.

Jochen

Da gibt es eine Diskussion dazu und es gibt auch schon eine GitHub-Organisation und aber interessant bin ich daran, dass halt jetzt alle Leute so, oder das ist irgendwie ein Thema jetzt gerade.

Jochen

So dieses Async, ja, na, dieses Websocket-Zeugs und dann diese Monolithen bewegen sich jetzt auch in die Richtung.

Jochen

Ich meine, es war immer schon ein Thema, aber jetzt gerade habe ich das Gefühl, das kriegt so richtig Moment.

Jochen

Warum genau jetzt, weiß ich auch nicht so genau, aber irgendwie, jetzt gerade ist es irgendwie ja.

Johannes

Es hört sich aber alles nicht ungeheuer neu oder ungeheuer, ja, sagen wir mal, unbekannt an.

Johannes

Also so Sachen, dass du irgendwelche Links mit JavaScript automatisch versiehst, das gab es ja schon auch mal.

Johannes

In Turbo Gears oder in.

Johannes

Was weiß ich, wie das alles hieß.

Jochen

Ja.

Jochen

Ja, finde ich auch.

Jochen

Also insgesamt ist es nicht neu, aber sozusagen der Ansatz zu sagen, das machen wir jetzt statt irgendwie APIs und JavaScript-Frontend, das ist schon so ein bisschen neu.

Jochen

Weil dieses Feld hat ja.

Johannes

Ja, sicherlich wird auch die Integrationen besser sein als wir machen einfach mal so.

Dominik

Aber was muss man jetzt da vorsetzen?

Dominik

Also da macht man in das Frontend macht man dieses Turbo rein und das lädt dann einfach aus der Template-Hin-Ingine irgendwelche Teile raus, die dann irgendwo zwar über Sockets kommen, nicht über einzelne Requests.

Jochen

Ja, also das kann auch über normale, das kann auch über diese XHTP-Requests kommen, aber du kannst halt auch über WebSocket machen.

Jochen

Aber der, also eigentlich der Witz ist, dass du nichts mehr in JavaScript wirklich oder nichts Wesentliches mehr in JavaScript machst.

Jochen

Du erzeugst nicht in, also der wesentliche Unterschied ist, du erzeugst in JavaScript kein HTML.

Jochen

Also das, was halt all diese großen JavaScript-Frameworks machen, ist ja irgendwie auch eine eigene Templating-Engine haben und oder irgendwie zumindest irgendwas, was so ein bisschen danach aussieht.

Jochen

Und dann baust du da dein HTML halt zusammen und machst im Grunde das Gleiche, was du im Backend machst, nochmal im Frontend.

Jochen

Und die Idee ist sozusagen, das machst du nicht mehr, sondern du machst das nur noch im Backend und das Frontend ist automatisch.

Jochen

Du musst eigentlich nichts mehr im Frontend machen.

Jochen

Du kannst zwar noch so ein bisschen was tun, aber normalerweise nicht mehr viel machen.

Jochen

Und du entwickelst es einfach so ganz normal quasi wie ein Ruby on Rails oder Jungle-App und lieferst halt den JavaScript-Teil mit aus.

Jochen

Da gibt es auch ein ganz nettes Video zu auf Hotwire.dev und da gibt es ja diesen E-Mail-Service, den auf Basecamp gestartet hat.

Jochen

Hey.com.

Jochen

Und das ist halt genau damit gebaut.

Jochen

Und ja.

Okay.

Na gut.

Muss man sich mal anschauen.

Johannes

Es gab vor Jahren mal eine geniale Bibliothek, eine geniale JavaScript-Bibliothek, die Page-Reloads schneller gemacht hat.

Johannes

Die hat einfach Seiten vorgeladen, wenn man mit der Maus drüber gefahren ist, weil tatsächlich ist es so, dass Menschen sehr langsam klicken.

Johannes

Wenn sie mit ihrer Maus irgendwo hinfahren, dauert das so 200 bis 500 Millisekunden, bis du dann draufklickst.

Das heißt, er hat einfach, der hat einfach geguckt, wann die Maus über einem Link stehen bleibt und hat den schon mal geladen.

Johannes

Und damit kriegt man 200 bis 500 Millisekunden Latenz weg, was ich, finde ich, eine sehr schöne Technik ist.

Jochen

Das ist schon mal eine super Idee, ja.

Johannes

Sehr psychologisch.

Also für alle Leute, die scheint schneller

Dominik

notorisch nervös mit dem Auszeiger rumhübbeln über alle Links, gibt das dann Lex auf der Seite, ja, weil die ganze Zeit irgendwelche Requests passieren, oder?

Johannes

Ja, das für die ist es nicht gut geeignet, aber das einen Tod muss mal sterben.

Okay, okay, verstehe.

Johannes

Ja, ich habe keine News.

Johannes

Also ich habe in den letzten vier Wochen nicht viel zu sehr im Weihnachtsstress.

Ja, ja, Weihnachtsstress.

Johannes

Ist einfach nichts Neues passiert.

Ja, ja.

Jochen

Das stimmt auch.

Jochen

Ich habe jetzt so ein bisschen Zeit.

Jochen

Das habe ich dann auch gleich mal genutzt, um irgendwie meinem Gear Acquisition-Syndrom zu fröhen.

Da ist

Johannes

Weihnachten auch eine gefährliche Zeit.

Jochen

Das stimmt der perfekte Sturm sozusagen.

Jochen

Ja, aber auch im Hinblick auf, ja, genau, das wollte mir ja, das ist vielleicht eine Überleitung zu Richtung, was kommt eigentlich 2021?

Jochen

Und die, ich, meine Vorhersage wäre.

Johannes

Pakete, ganz viele Pakete.

Jochen

Es kommen viele Pakete.

Jochen

Aber ja, nicht so viele Pakete mit Audio und Video-Hardware zum irgendwie, weil die sind alle schon angekommen und da kommt nichts mehr.

Jochen

Und zwar zum Beispiel, weil halt in Japan ist halt eine Fabrik von AKG irgendwie abgebrannt.

Jochen

Ja.

Johannes

Globale Auswirkungen.

Jochen

Ja, das ist so ein bisschen schlecht.

Jochen

Es gibt ja zum Beispiel bei den, also diese analog, also DAC, also digital zu Audio und umgekehrt Konverter.

Jochen

Da gibt es halt nicht so viele davon, also die das in guter Qualität machen.

Jochen

Und tatsächlich stellen halt die Leute gerade so fest, eigentlich gibt es nur einen.

Jochen

Und dummerweise dieser eine, der hat dann zwar sein Zeugs unter ganz vielen Labels und so weiter vertrieben und es sah so aus, als konnte man das Zeug überall kaufen, aber tatsächlich war es nur eine Firma, nämlich AKG.

Jochen

Und tatsächlich war es auch nur eine Fabrik, in der die hergestellt worden, nämlich die.

Jochen

Und die ist gerade abgebrannt.

Jochen

Und das ist jetzt schlecht.

Jochen

Und niemand anders kann das so richtig.

Jochen

Und jetzt geht halt, also alles, was so High-End-Audio angeht, da werden jetzt so die Lagerer leer und die Preise steigen.

Jochen

Und ja, wenn man da nichts hat, das wird es in 2021 ein bisschen schwierig, das zu kaufen.

Jochen

Unter anderem auch deshalb, weil halt ja die Nachfrage weiterhin hoch bleiben wird, denke ich mal, weil Homeoffice wird wohl weitergehen, nehme ich mal an.

Das war.

Es sieht erstmal so aus.

Jochen

Ja, also die bisherige Prophezeiung war da so bis im Sommer.

Jochen

Also jedenfalls jetzt hier bei uns, so in Mitteleuropa.

Johannes

Ja, kommt drauf an, welche Member zugehört.

Johannes

Ja, Normalität, also es kommt darauf an, was man sich da einhält.

Johannes

Aber jetzt sind ja auch schon tatsächlich, die Zeit gibt da aktuelle Zahlen an.

Johannes

21.566 Impfdosen in Deutschland verabreicht worden.

Johannes

Das ist doch schon mal

Jochen

nicht schlecht.

Jochen

Dann ist ja nicht mehr weit.

Ja, ja.

Johannes

Wir sind schon fast da.

Dominik

Brauchen wir 40 Millionen durch 20.000.

Johannes

Ja, auch das ist unklar.

Johannes

Irgendwo zwischen 35 und 60 Millionen wird es wohl liegen.

Johannes

Und doppelt natürlich.

Ja, mehr.

Jochen

Das ist ja und vor allen Dingen gibt es ja jetzt dann auch nochmal so eine neue, etwas aufgewandelte Virusvariante, die ein bisschen infektiöser ist und das ändert die Zahlen halt auch nochmal.

Jochen

Weil das Problem ist, du musst jetzt mehr Leute, du brauchst einen größeren Anteil in der Bevölkerung, der immun ist, damit das noch funktioniert, weil das hat halt direkte Auswirkungen.

Jochen

Wenn das Ding infektiöser ist, dann musst du halt, ist der Prozentsatz der Leute, die irgendwie immun sein müssen, entweder dadurch, dass sie das schon hatten oder geruft werden, halt höher.

Jochen

Was bedeutet, ja, es wird länger dauern wahrscheinlich, ja.

Jochen

Du brauchst mehr herstellen, dann musst du es verteilen, alles schlecht.

Jochen

Also die pessimistischere Richtung geht eher zu sagen, so, das wird auch noch bis Winter 2021 leider dauern wohl.

Jochen

Also alles nicht so richtig schön.

Jochen

Und sowieso die Zahlen sehen alles, alles halt alles fies aus.

Jochen

Also muss er ja, es kann eigentlich nur, also egal in welche Richtung es geht, die sind eigentlich alles, die sind alle doof, die Richtungen.

Jochen

Jetzt gibt es keine guten mehr.

Jetzt über

Johannes

Weihnachten sind die Sachen alle gesunken.

Ja, komisch.

Johannes

Warten wir mal die Nachmeldungen ab.

Warten wir mal die Nachmeldungen ab.

Ja.

Johannes

Ja, gut.

Johannes

Ich meine, das wird uns noch das nächste Jahr beschäftigen.

Habt ihr da irgendwas?

Jochen

Habt ihr eigentlich sowas gemacht?

Jochen

Also, was ich tatsächlich, ich hatte das, das war mehr so ein, oh, weiß ich auch gar nicht, ob ich das erzählt habe.

Jochen

Naja, also es war mehr so ein Versuch.

Jochen

Genau, ich dachte so, naja Gott, diese ganzen E-Commerce-Geschichten, da will ich auch mit dabei sein, jetzt so im Jahr 2021, weil ich habe in der Partikel gefragt, ob man nicht irgendwie diese Schnelltest, das klingt ja alles ganz toll und so.

Jochen

Hieß es halt so, nee, nee, nee.

Jochen

Und dann dachte ich, na gut, dann gucke ich doch mal, gibt es nicht Webseiten, auf denen man das kaufen kann?

Jochen

Und tatsächlich gab es.

Jochen

Und ich habe dann halt auch bestellt.

Wie teil, Johan?

Jochen

Ja, man muss die in großen Packungen kaufen.

Jochen

Ich habe irgendwie so 25 Stück bestellt, das hat so irgendwas um die 200 Euro gekostet oder so.

Johannes

Ja, das geht ja tatsächlich noch preislich.

Jochen

Ja, also pro Test waren das so um die 10 Euro.

Jochen

Und dann hieß es aber direkt irgendwie so ein paar Tage später, momentan ein bisschen schlecht mit dem Liefern.

Jochen

Habe ich mir auch schon gedacht, dass das eventuell auch noch andere Leute auf die Idee gekommen sein könnten.

Jochen

Und ja, aber es kam dann tatsächlich sogar noch vor Weihnachten irgendwie an.

Jochen

Und hat alles funktioniert.

Jochen

Ja, also irgendwie DRL meinte so, ja, super, herzlichen Glückwunsch, kommt doch noch an.

Jochen

Irgendwie, wir sind sehr froh, aber dass wir das sagen können, aber wir beliefern medizinische Einrichtungen auch mit Priorität.

Jochen

Da ich so, ja, das ist ja gut, sonst wäre das ja vielleicht gar nicht angekommen.

Jochen

Wunderbar.

Dominik

Und hast du einen Webshop auch gemacht und den Preis verfünffacht?

Jochen

Nee, nee, nee, nee.

Jochen

Sie sind auch schon, also ein guter Teil davon ist jetzt auch schon verbraucht.

Jochen

Weg auf Fettplatz wie man so sagt.

Jochen

Ja, ja.

Johannes

Ja, ich habe tatsächlich Angebote gesehen, da haben sie 50 Euro pro Test verlangt.

Johannes

Also da können schon durchaus Margen drin sein, Jochen.

Jochen

Ja, gut.

Johannes

Deine ersten 10 kannst du ja verkaufen, hast du Geld für zwei neue Lieferungen.

Jochen

Lass mal überlegen, wie kann man denn da ein Pyramidensystem draus machen?

Johannes

Eine kurze Lektion in exponentielles Wachstum.

Jochen

Ja.

Johannes

Das war ja mal ein Vorschlag, den ich hatte, dass man Leute, die gegen die Maskenpflicht verstoßen, dass man denen zuerst eine Strafe gibt, die sehr niedrig ist, 5 Euro.

Johannes

Und beim zweiten Verstoß dann aber 10 Euro.

Johannes

Und beim dritten Verstoß 20 Euro.

Johannes

Und das wäre dann gleichzeitig abschreckend und eine kurze Einführung in exponentielles Wachstum.

Johannes

Was vielleicht nützlich wäre.

Dominik

Ja, ich glaube, die Wahrscheinlichkeit der Kontrolle mehrfach ist wahrscheinlich gering.

Johannes

Ja, gut, das ist ja auch ein lösbares Problem.

Johannes

Also das ist ja, also gerade in Deutschland ist das ja ein lösbares Problem.

Johannes

Ob ihr das jetzt als Win oder als Fail einsortiert, das urlasse ich jetzt bei euch.

Jochen

Ja, insgesamt handiert die ganze Situation so ein bisschen Richtung Fail, muss ich sagen.

Jochen

Also es ist findest du.

Dominik

Also das Schlimmste, was ich jetzt hatte, dass ich jetzt nicht so in die Sauna gehen konnte, wie ich wollte, und das Fitnessstudio hat zu und Babyschwimmen ist ausgefallen.

Dominik

Also das sind alles First Welt Problems.

Dominik

Uns geht es da erschauen nicht gut.

Toi, toi toi, dass wir alle gesagt haben.

Johannes

Es ist sehr schlimm, Dominik, dass du deinen Job verloren hast und kurz vor dem Finanziellen ausstehst und auch deine Wohnung bald verlierst.

Jochen

Ja, nee, also das tatsächlich ist das nicht so gut.

Jochen

Man muss mal wirklich sagen, wir leben alle Glück in so einer Blase.

Johannes

Ja, also ich meine, in unserer Branche ist es halt wirklich sehr einfach, Homeoffice zu machen.

Johannes

Das ist für andere Betriebe, alle, die in der Gastronomie arbeiten, für die ist das schwieriger.

Dominik

Ja, ganze Veranstaltungsbehandlung, es hatte Arschkarte, Einzelhandel und so weiter.

Johannes

Mein Cousin hat ein Konzertbüro, eine Konzertagentur.

Johannes

Die hatten zwischendurch überlegt, ob sie Konzerte in Flugzeugen machen sollen, weil das war nämlich erlaubt.

Johannes

Hätten sie immerhin für 300 Leute Flugzeugkonzert machen können, haben es aber nicht gemacht.

Dominik

Geld oder Leben heißt es.

Johannes

Aber klar, dem ist das ganze Jahr einfach ausgefallen.

Dominik

Ja, Geld oder Leben.

Jochen

Kennt ihr dieses Ticketsystem Pretex, auch Django Django-System?

Jochen

Natürlich.

Johannes

Die unterstützen noch jedes Jahr die Django-Con, also bitte Jochen.

Jochen

Genau, die hatten jetzt auch so ein Problem damit, dass halt irgendwie, naja gut, die ganzen Veranstaltungen, die normalerweise dann Pretex benutzt haben, um die Tickets zu verkaufen, dieses Jahr so ein bisschen sparsamer irgendwie unterwegs haben.

Jochen

Und dann dachten sie schon so, oje, oje, was machen wir denn jetzt?

Jochen

Und dann sind da aber andere in die Bresche gesprungen sozusagen und sie hatten dann halt dieses Jahr mehr zu tun, als sie normalerweise zu tun hatten.

Jochen

Und zwar mit zum Beispiel Schwimmbädern.

Jochen

Weil normalerweise verkaufen die Schwimmbäder.

Johannes

Jeder braucht jetzt ein Ticketsystem.

Jochen

Die verkaufen ja ihren Kram normalerweise direkt an der Kasse, aber das geht ja jetzt nicht mehr.

Jochen

Das heißt, die müssen die Sachen online verkaufen und dann brauchst du ein Ticketsystem dafür.

Jochen

Und tja, tada!

Johannes

Ja, Reservierungssysteme, das ist auch das ein guter Markt in diesem Jahr.

Jochen

Ja, ja.

Absolut.

Jochen

Also.

Ja, auch alle Lieferdienste und so, das ist sicherlich dieses Jahr gut gelaufen.

Aber ja gut, es gibt immer Gewinner und Verlierer und

Jochen

genau, ja, ich überlege auch, ob ich jetzt so ein bisschen Richtung Video mal ein bisschen mehr machen soll.

Jochen

Ich weiß nicht, ich habe jetzt schon mal so ein bisschen Hardware geordert.

Jochen

Ich hoffe mal, dass ich nicht noch mehr Hardware ordern muss, weil sonst habe ich ein Problem.

Jochen

Aber das ist ja auch sowas.

Jochen

Also genau, da habe ich auch nochmal ein anderes Mikrofon, so ein dynamisches, weil das nimmt so ein bisschen die Umgebungsgeräusche weg, aber das kann man dann dafür dann halt weiter weghalten und dann sieht man, also mit einem Headset und Video ist halt doof, das geht auch nicht so gut.

Jochen

Ja, mal gucken, muss da mal so ein bisschen experimentieren.

Johannes

Ja, ich kann dir da, ich als Betreiber des rasend erfolgreichen Spielmanns-Kekse-Kanals, kann dir natürlich gerne auch viele Hinweise geben.

Johannes

Wir haben auch noch ein Video in der Pipeline, wir hatten nur bisher keinen Bock, das zu machen, weil einfach zu viel anderes Zeugs los war.

Dominik

Jetzt wieder Kekse.

Dominik

Mehr Kekse, noch mehr Kekse.

Johannes

Ja, wir überlegen uns, wie man den Impfstoff wohl als Keks umsetzen kann.

Wir hatten ja schon das Virus als Corona-Ausstecher.

Johannes

Dann hatten wir Antikörper in Keksform und jetzt überlegen wir uns, ob man vielleicht noch eine Impfung ist.

Wie sieht sich denn überhaupt ausfällt?

Der wird ja per Schluckimpfung verabreicht oder wird er gespritzt.

Johannes

Nee, die werden gespritzt.

Johannes

Also wir hätten dann natürlich eine Schluckimpfung, selbstverständlich, in Keksform.

Johannes

Aber der Impfstoff selber ist, die sind alle.

Johannes

Also es gibt verschiedene Impfstoffe, die meisten sind in Spritzen.

Johannes

Es gibt tatsächlich eine, die in die Nase eingespritzt wird.

Das ist die angenehmste.

Johannes

Die ist allerdings noch nicht durch Phase 3 durch.

Aber Nasenspray.

Jochen

Habt ihr das gelesen?

Jochen

Ich finde das fand ich super cool.

Jochen

Da gab es jetzt einen Artikel auch von einem, der normalerweise sich eher mit Computerkram beschäftigt, VDNS oder so.

Johannes

Oh ja, ja, den habe ich gelesen.

Den hast du gelesen.

Ich weiß, was du meinst auch.

Jochen

Ja, der war saucool.

Jochen

Der hatte den Impfstoff von BioNTech-Pfizer, den hat er halt sozusagen aus so einem Computerperspektive irgendwie mal darüber gesprochen, was das Ding so alles macht.

Jochen

Und das fand ich sauinteressant, weil da waren echt einige tolle Tricks dabei, von denen ich gar nicht wusste, dass das so war.

Johannes

Man muss dazu sagen, dass der ja veröffentlicht ist.

Johannes

Der ist ja als Patent eingereicht und da muss er ja veröffentlicht sein.

Johannes

Das heißt, der gesamte Quellcode, um es mal so zu sagen, also das, was dann tatsächlich als mRNA hergestellt wird, steht da einfach drin.

Johannes

Das ist eine Buchstabenfolge.

Johannes

Es sind irgendwie, Joachim, korrigier mich, 2270 Zeichen oder sowas.

Also vergleichsweise klein.

Jochen

Ja, ich weiß nicht mehr genau, genau.

Jochen

Es war irgendwie so halb so groß wie das Virus selber irgendwie oder die, äh, ja.

Johannes

Genau, und ja, da sind einige schöne Hacks drin.

Johannes

Auch einige schöne Sachen, die man so als Computermensch durchaus versteht, warum manche Sachen so sind und warum manche Sachen nicht so sind.

Sehr, sehr, sehr schön gemacht.

Johannes

Und es ist auch erstaunlich wenig.

Also es ist auch einfach.

Jochen

Ja, ja, der größte Teil von den Daten ist halt 1 zu 1 aus dem Virus kopiert quasi.

Ja, man hat genug gelesen.

Jochen

Man hat ein paar Änderungen gemacht, ja.

Jochen

Aber tatsächlich, was das Ding tut, ist also einmal RNA ist halt, also ist halt sozusagen über den Computeranalogie übertragen, halt sowas wie Hauptspeicher oder so.

Jochen

Es ist halt relativ flüchtig.

Jochen

Also es überlebt so an der Luft nicht lange und auch wenn man das irgendwo in Organismen muss.

Jochen

Deswegen diese Kühlkette und so, das ist alles ein bisschen doof.

Jochen

Wenn man es in Organismen reinspritzt, dann normalerweise das Immunsystem wird da so leicht misstrauisch, wenn da irgendwie so RNA in der Gegend geht.

Johannes

Ja, auch Zellen nehmen denen ja eigentlich normalerweise gar nicht an, die nehmen ja gar keine RNA von außen.

Jochen

Ja.

Jochen

Und aber da gibt es dann halt schon mal so ein, genau, aber es ist halt quasi der rohe Code, der halt dann irgendwie von den Ribosomen der Zelle halt irgendwie sozusagen in Anführungszeichen ausgeführt wird.

Jochen

Und der dann halt wird der dann halt Proteine, der wird halt abgelesen und dann werden Proteine halt synthetisiert quasi von der und das, was dieses Ding macht, ist das Spike-Protein von dem von dem Virus zu erzeugen.

Jochen

Und zwar so ziemlich genau das Ding.

Jochen

Bis auf auch wieder ein paar kleine Details, ne?

Johannes

Damit es stabil wird.

Jochen

Genau, weil normalerweise rollt sich das Ding zusammen, faltet sich zusammen und dann ist es halt egal.

Jochen

Also so das Virus blößt diese Spike-Protein auch erst so kurz vor der Infektion.

Jochen

Normalerweise kriegt das Immunsystem den Kram halt nie zu sehen.

Jochen

Und wenn man das Virus platt macht, also wie man das normalerweise mit Impfstoffen, also die simpelste Art, man schüttet irgendwie vor mal die Hütte rüber oder man macht das irgendwie heiß, dann ist es halt kein Virus mehr, sondern nur noch so Teile von einem Virus.

Viruskrümel.

Jochen

Und ja, das reicht ja manchmal auch schon, damit das Immunsystem dann so merkt, so, okay, das erkenne ich hier wieder, aber bei dem Virus ist das blöderweise nicht so richtig toll, weil das entscheidende Protein halt dann nicht mehr so in der Form da ist, wie es das gibt, was halt kaputt geht, genau.

Jochen

Und dieser Impfstoff erzeugt halt dieses Protein und zwar halt so, dass es sich nicht zusammenfaltet, sondern in der gleichen Form bleibt.

Jochen

Und dass das Immunsystem das Ding dann halt auch wiedererkennen kann.

Jochen

Das ist natürlich total super, weil, naja, also das sieht halt aus wie eine echte Infektion für das Immunsystem.

Jochen

Da kommt irgendwie so Zeugs, so eine Spritze, also kommt halt irgendwie so Zeugs rein, dann fangen Zellen plötzlich an, etwas zu produzieren, was sie normalerweise nicht produzieren.

Jochen

Und das ist alles höchst alarmierend.

Jochen

Und ja, das sieht alles sehr gefährlich aus, ist aber ungefährlich eigentlich, weil sobald die RNA verbraucht ist, die in so einer Impflosis drin steckt, dann ist es halt weg.

Das kann sich nicht fortpflanzen.

Johannes

Das ist ein einmaliges Event.

Johannes

Das ist eine der wichtigen Sachen.

Johannes

Das heißt, man wird nicht krank davon, sondern es wird halt einmal umgesetzt.

Johannes

Für mich das Beeindruckende an der ganzen Geschichte ist eigentlich, dass das ja, dass das eine Technik ist, die nicht nur für dieses Virus funktioniert, sondern die funktioniert prinzipiell für eine ganz große Menge an Viren.

Johannes

Das heißt, sobald man so ein Virus einmal sequenziert hat, kann man prinzipiell sehr schnell damit anfangen.

Johannes

Und das war ja auch bei diesem Virus hier so, ja, dass die nach zwei Tagen diese Sequenzen, die sie da jetzt alle getestet hatten, hatten.

Johannes

Die haben diese Virussequenz gekriegt, aber die Karte.

Dominik

Und die Menschen

Johannes

beeindruckende Geschichte.

Dominik

War eine Handvoll Männchen nur, oder?

Dominik

Das waren unter zehn, die da in dem Labor saßen und das gemacht haben, oder?

Ja, genau, das waren

Johannes

also im Wesentlichen halt die Leute von BioNTech und die haben das übers Wochenende gemacht und dann hatten sie diese Sequenzen und der Rest der Zeit ist jetzt mit Testen und Herstellern verbraucht worden.

Johannes

Und das ist schon beeindruckend, weil wenn diese Technik so funktioniert, dann hat man so eine ganze Klasse von Impfstoffen, die man quasi on demand herstellen kann.

Und das ist schon eine große Sache, wenn ein neues Virus auftritt und du kannst einfach direkt anfangen, den Impfstoff herzustellen.

Ja, wird sich die Sache ganz schön ändern.

Jochen

Auch, was auch, was ich auch toll fand, und das wusste ich auch nicht, das war auch völlig neu, hast du erstmal in diesem Artikel gelesen, dass du halt tatsächlich so eine Art, wie so 3D-Drucker, ja, oder Drucker für RNA, kannst du halt einfach kaufen.

Jochen

Dann nimmst du diese Folge, die du halt irgendwie aus dem Internet aus so einer zwielichtigen Quelle irgendwie kopiert, tust du das da rein und dann druckt das das Ding halt in RNA einfach aus, so in so einer 30-Mikrogramm-Dosis.

Jochen

Und gut, ist jetzt auch nicht so einfach zu handeln, aber dann kann man das halt, kann man damit halt lustige Sachen machen und das in den Muskel spritzen und dann programmiert das halt irgendwie Zellen.

Jochen

Das ist irgendwie schon, das ist schon faszinierend.

Jochen

Da kann man

Dominik

gut unten machen.

Dominik

Bestimmt können wir irgendwann alle ewig lieben.

Johannes

Das gibt es übrigens auch als er the Service.

Johannes

Man kann auch solche Sequenzen einfach machen und die dann irgendwo hinschicken.

Dominik

Live longer as a service.

Johannes

Da müsst ihr vielleicht mal eine Episode mit Simon machen, der kann euch da Geschichten erzählen.

Jochen

Ja, das ist.

Johannes

Die euch sehr beeindrucken werden.

Johannes

Es gibt so Genbibliotheken, da kann man einfach Samples bestellen.

Johannes

Die sind dann, die meisten dieser Samples sind auch stabil, das heißt, man kriegt ein Blatt Papier, wo einfach ein Kreis drauf ist, wo die diese Flüssigkeit drauf getroffen haben, die trocknet dann, aber die Genmaterialien, die du da bestellt hast, sind ja stabil.

Johannes

Kriegst du per Post.

Johannes

Versandkosten sind 90 Cent.

Jochen

Ja.

Jochen

Ein weiterer Trick, das da mich gerade noch erinnert, genau, die haben da halt, normalerweise ist ja immer alles aufgebaut, auch in der RNA aus diesen, sind das Amminoser und ich weiß nicht so genau, A, G, T, U oder so.

Jochen

Und das U haben sie ausgetauscht gegen was anderes.

Jochen

Ich weiß jetzt gar nicht, wie das ausspricht.

Jochen

Irgendein richtiger Buchstabe.

Jochen

Durch den Tau.

Jochen

Durch den Tau, ja, ja.

Jochen

Und normalerweise eben, das Immunsystem wird halt, weil normalerweise funktioniert das mit der RNA nicht so gut, wenn man die einfach so nehmen würde und irgendwo reinspritzt, weil das Immunsystem das verdächtig findet und die sofort kaputt macht und so.

Jochen

Aber wenn man das U durch ein Tau ersetzt, ist diese RNA dem Immunsystem einfach vollkommen egal.

Jochen

Das reagiert da gar nicht mehr drauf.

Jochen

Und das ist halt so.

Johannes

Ist ja offenbar keine RNA.

Jochen

Ja, ist ja offenbar irgendwas anderes.

Jochen

Ist ja, ist ja irgendwie nicht wichtig.

Jochen

Lustigerweise in der Zelle und in den Rhibosomen macht es halt genau das gleiche wie das U.

Jochen

Das heißt, es funktioniert halt genauso.

Also eigentlich sollte es dem U muss es dem vielleicht nicht egal sein, aber man kommt halt irgendwie auf den End-Modus.

Jochen

Ja, und auf der anderen Seite muss man sich auch keine Sorgen machen, dass jetzt irgendwie ein Virus diesen Trick kopiert und dann damit irgendwie unter Umständen sehr, sehr böse werden kann, weil man diese Ding kriegt man halt nicht in einem biologischen Prozess synthesisiert, sondern das geht nur mit Technik und so.

Jochen

Das heißt, ja, es kann diesen Trick kann das Virus sich dem Impfstoff nicht abgucken.

Jochen

Also es ist schon, es ist schon toll, ja.

Jochen

Also hat viel Spaß gemacht, das zu lesen.

Johannes

Ja, also würdest du das jetzt als Win zählen oder als Fail?

Jochen

Stimmt, das Ding ist eigentlich tatsächlich ein großer Win, ja.

Johannes

Das würde ich auch sagen.

Johannes

Wie gesagt, das wird in Zukunft eine ganze Klasse von Impfstoffen ermöglichen, die sehr schnell durch sind, wenn diese Technik einmal etabliert ist, wenn man fünf oder zehn solche Impfstoffe gemacht hat, dann einfach gar keine Nebenwirkungen passieren, weil die halt nicht passieren können.

Johannes

Dann gibt es da eine generelle Freigabe, dann musst du nur in eine Sequenz kommen und sagen, ich möchte gerne gegen dieses Virus geimpft werden.

Johannes

Muss zwei Stunden warten, ein bisschen geimpft.

Jochen

Ja, ja, ja, das ist auch, also ich meine, da gibt es ja jetzt auch Studien, also jetzt sagen wir so, man hat schon Erfahrungswerte, also es gab auch große Studien, aber in den USA eben 600.000 Leute schon geimpft, mindestens, jetzt wahrscheinlich schon mehr.

Jochen

Und tatsächlich gab es irgendwie praktisch nichts an Nebenwirkungen.

Jochen

Dann gab es, dass ich das ging, wann war das irgendwie vor ein paar Tagen über Twitter?

Jochen

Oh mein Gott.

Jochen

Ich frage mich immer, das hört man dann auch so von Leuten, so impfen ja oder nein, oder gibt es irgendwie Allergien?

Jochen

Ich frage mich immer, wo dann solche Informationen herkommen.

Johannes

Ja, nee, dann Autisten.

Jochen

Ja.

Jochen

Und jetzt auf Twitter habe ich dann tatsächlich mal eine von den Quellen für so einen Quatsch irgendwie gesehen, dass diese Hahnemann-Gesellschaft, also die Homöopathie-Leute, hatten auf ihrer Webseite eine ganze Reihe von irgendwie echt hanebüchenden Behauptungen.

Jochen

Unter anderem eben auch, dass der Impfstoff Allergien auslösen würde, was totaler Quatsch ist.

Jochen

Also und dann hatte irgendjemand die wohl dann auch zur Rede gestellt und meinte so, ey, das ist ja schon ganz schön gefährlich, was ihr hier schreibt.

Jochen

Das ist zur Hölle, was macht ihr eigentlich?

Jochen

Wie so, nein, das haben wir doch aus der Studie selber.

Jochen

Da, guck doch, da hat es eine Allergie ausgelöst.

Jochen

Ja, haben da nochmal Leute reingeguckt, ja, das war aber die Kontrollgruppe, die hatten das gar nicht den Impfstoff gekriegt.

Jochen

Also das ist echt.

Johannes

Ja, aber, also ich meine, das ist ja noch schlimmer, wenn dieser Impfstoff bei den Leuten Allergien auslöst, die den gar nicht kriegen.

Johannes

Also Jochen, das ist ja jetzt mal ganz ehrlich sein.

Jochen

Nein, ich habe das genau, gerade zum Beispiel.

Jochen

Ja, es ist schwer dagegen zu argumentieren, das stimmt schon.

Johannes

Ja, das ist so ein bisschen wie diese Leute, die, denen man dann sagen muss, ja, dass jetzt überall die Überwachungskameras sind, mit denen Bill Gates die Welt übernehmen möchte und der einzige Art, wie man darum drumherum kommt, ist, indem man seinen Mund und seine Nase bedeckt.

Und die Sorte ist

Jochen

es halt.

Johannes

Wenn die Kontrollgruppe die Allergien kriegt, dann müsste man eigentlich möglichst schnell den Impfstoff nehmen, damit man diese Allergien nicht bekommt.

Jochen

Ja, aber ich verstehe den Ansatz, aber mich ärgert so ein bisschen das Problem.

Jochen

Ich habe das Gefühl, dass es langfristig, dass man das nur verlieren kann, weil das Problem ist, wenn man etwas tut, was funktioniert, und also sagen wir so, wenn man das halt quasi nur so verpacken muss, dass es halt dann akzeptiert wird und es nicht darauf ankommt, ob die Begründung dafür richtig oder falsch ist oder überhaupt irgendwas richtig oder falsch ist oder alles irgendwie nur in einer, keine Ahnung, in ihrer Scheinwelt leben, dann hat man das Problem, dass die Leute, die halt sich nur um die Verpackung Sorgen machen müssen, weil sie halt einfach gar keinen Inhalt haben, haben halt einen Vorteil, und zwar einen strukt

Jochen

urellen Vorteil.

Jochen

Und man selber muss ja auch noch dafür sorgen, dass es funktioniert.

Jochen

Das heißt, man kann eigentlich nur verlieren.

Jochen

Das ist nicht gut.

Johannes

Ja, ich sehe da eine große Desillusionierung auf dich gefunden.

Johannes

Ich möchte dir jetzt nicht sofort um die Ohren hauen, aber ich befürchte, wir müssen da mal eine schlimmere Episode drüber machen.

Johannes

Ja, okay, aber das ist ja alles schon eine sehr schöne Überleitung.

Johannes

Lass uns nochmal über Sachen sprechen, die wir so widerfahren sind.

Johannes

Ich möchte endlich über mich sprechen.

Jochen

Ja, dann genau, was haben wir denn so an Dingen, die gut oder schlecht gelaufen sind?

Johannes

Ich habe eine schöne Anekdote von ganz, ganz, ganz früher.

Johannes

Ich habe früher ganz viel mit Oracle-Datenbanken gearbeitet.

Johannes

Habt ihr schon mal mit Oracle-Datenbanken?

Johannes

Habt ihr schon mal die Freude gehabt, mit Oracle-Datenbanken arbeiten zu dürfen?

Ja.

Dominik

Nö.

Johannes

Ich schätze mal, Joachim, der Grund war bei dir der gleiche wie bei mir.

Johannes

Wir haben das halt.

Jochen

Naja, das war also tatsächlich Webde lief zum großen Teil.

Jochen

Also der Feeling lief halt auf Oracle quasi.

Jochen

Weiß nicht, ob das noch immer noch so ist, aber vor langer Zeit war das so.

Dominik

Das war bei den 90ern noch, da gab es mal also Oracle-Kramps.

Jochen

Ja, in den Nullern auch noch.

Johannes

Ja, bei mir war das auch in den Nullern.

Ja.

Johannes

Ja, bei uns war im Wesentlichen die Begründung, dass der Hersteller das Produkt, das wir vertrieben haben, halt das vorgegeben hat, weil andere Datenbanken sind nicht schnell genug.

Johannes

Was damals schon eine sehr interessante Behauptung war.

Johannes

Ja, wir haben es auch nicht

näher untersucht.

Dominik

Vielleicht war der Magie im Spiel.

Johannes

Ich schätze, dass da so grüne Papierscheinchen Magie im Spiel gewesen sein mag.

Dominik

Diese Magie schon wieder.

Ja.

Kennt ihr den Softwarehersteller CA?

Johannes

Die ist denn früher mal Computer Associates.

Johannes

Die sind in der Enterprise-Welt ungeheuer groß.

Johannes

Sind inzwischen auch gekauft von irgendjemandem, ich weiß gar nicht von wem.

Johannes

Als wir damals, wir waren da eben Partner von denen, da haben die 15 Milliarden Dollar Umsätze im Jahr gemacht.

Johannes

Aber außerhalb der Enterprise-Industrie kannte die und kennt die auch quasi niemand.

Johannes

So der freundliche unbekannte Riese.

Johannes

Jedenfalls mussten wir da Oracle-Datenbank verwenden.

Johannes

Und es gibt ja dieses schöne Statement DeleteFrom für SQL-Datenbanken.

Johannes

Habt ihr sicherlich auch schon mal verwendet.

Dominik

Delete da from

DeleteFrom heißt der Befehl einfach nur, weil du da erst dann angibst mit einer Whare-Klausel, was alles gelöscht werden soll.

Johannes

Also Delete From, dann gibst du an die Tabelle, aus der gelöscht werden soll und dann mit einer Ware-Bedingung, welche Zeilen gelöscht werden soll.

Johannes

Und das hat das Potenzial, sehr viele Zeilen zu löschen, weil wenn du dieses Whare vergisst oder wenn du dazwischen einen Kommentar machst, dann hast du eine DeleteFrom Tabelle und dann wird diese gesamte Tabelle gelöscht.

Johannes

Und das haben manche von uns Entwicklern auf die harte Tour herausgefunden, dass das so ist.

Manche von uns.

Johannes

Weil wir halt tatsächlich einfach mal, ich will

Dominik

jetzt keinen

Johannes

Namen nennen, ich will jetzt auch niemanden hier persönlich an den Pranger stellen.

Johannes

Delete From.

Wie wäre das mit der Belle?

Johannes

Wenn man nur DeleteFrom-Tabellenname gibt, dann löscht es einfach alle Zeilen aus einer Tabelle raus.

Jochen

Ja.

Johannes

Und das ist ja sehr ungünstig, wenn das mal passiert.

Jochen

Je nachdem.

Jochen

Man möchte man das aber auch.

Johannes

Genau, manchmal möchte man das auch, manchmal möchte man alle Zeilen einer Tabelle löschen, insbesondere dann, wenn man gerade mit der Testdatenbank verbunden ist und die mal resetten möchte und einfach mal alles löschen möchte.

Johannes

Da ist jetzt schon der erste Fail.

Johannes

Das passiert nämlich manchmal, dass man versehentlich nicht mit der Testdatenbank verbunden ist, sondern mit der Produktivdatenbank.

Johannes

Aber zum Glück, und das ist was sehr interessantes, wir haben dann gemerkt, dass dieser Befehl sehr, sehr langsam ist.

Johannes

So ein Delete From macht ja eigentlich nicht viel.

Johannes

Das löscht halt die Tabelle.

Johannes

Und das müsste ja eigentlich so im Handumdrehen gehen.

Johannes

Aber dieser Befehl ist sehr langsam, weil der löscht die Tabellenzeilen nicht einfach nur, sondern der verschiebt die ins Undo-Log.

Johannes

Tatsächlich hat Oracle, anders als andere Datenbanksysteme, einen Papierkorb und dieser Papierkorb ist das Undo-Log.

Johannes

Das heißt, wenn du einen DeleteFrom gemacht hast, kannst du die Zeilen wieder retten.

Johannes

Wenn du rechtzeitig zu deinem Systemadministrator gehst und sagst, ich hoffe, ihr habt das Undo-Log noch nicht gelöscht oder gelehrt oder überschrieben.

Johannes

Und dann kriegst du die Zeilen wieder.

Johannes

Jetzt ist es so, wenn das passiert, dann ist das sehr langsam.

Johannes

Gerade wenn man eine Tabelle löscht, wo eine Milliarde Zeilen drin sind, dann ist das halt sehr langsam.

Johannes

Und weil das zu langsam ist, gibt es bei Oracle einen speziellen Befehl, der heißt Truncate Table.

Johannes

Der macht das, was normalerweise ein Delete From ohne Bedingung macht.

Johannes

Der löscht alle Zeilen aus der Tabelle und zwar schnell.

Johannes

Ohne die ins Andolog zu tun.

Johannes

Und ihr könnt euch denken, wohin das geführt, wozu das geführt hat.

Johannes

Und zwar DeleteFrom, jeder Entwickler in der Abteilung war dieses DeleteFrom zu langsam.

Johannes

Wir sind einfach alle auf Truncate Table übergegangen.

Johannes

Was dann so den ganzen Sinn dieses Andalogs so ein kleines bisschen kaputt gemacht hat, als der erste halt tatsächlich in der Produktionsdatenbank ein Truncate Table gemacht hat.

Johannes

Nicht nur ein DeleteFrom, sondern ein Truncate Table und einfach mal eine von den Projektdatentabellen gelöscht hat.

Johannes

Das war ein nicht so cooler Tag.

Dominik

Ja, ich würde sagen,

Johannes

wo ja, das war auch die Firma, wo sie, damals hatten wir noch Subversion, wo die Subversion auf einem Raid lag und eine von den Festplatten kaputt gegangen ist und dann der Hersteller gekommen ist und die falsche Festplatte ausgetauscht ist.

Dominik

Die anderen hat ja auch nicht direkt machstgerecht entsorgt.

Johannes

Also wir hatten auf jeden Fall ungefähr eine Woche an Sachen verloren, die einfach dann nicht mehr da waren.

Johannes

Und Subversion ist ja auch nicht einfach so, dass du wieder pushen kannst.

Johannes

Ist ja nicht wie heutzutage, wo jeder eine Kopie hat, sondern Subversion ist dann halt einfach erstmal komplett kaputt.

Ja.

Jochen

Ja, ich erinnere mich da.

Johannes

Schön professionelle Zeiten damals.

Dominik

Da hat wohl einer keine Backups gehabt.

Ja, wir hatten ja ein Raid.

Dominik

Habe ich gar nicht vor so langer Zeit gemacht.

Dominik

Ich glaube, es ist ein paar Wochen her.

Dominik

Reset Schema auf einem Projekt in der Deploy-Chain.

Dominik

Und dann vergessen, das Backup dann wieder aufzuspielen.

Du hast es gleich direkt automatisiert gemacht.

Das ist doch,

Johannes

würde ich sagen, ist sehr modern und du hast nicht nur die Datenbank gelöscht, sondern du hast sie gleich automatisiert und mit Tests gelöscht.

Ja.

Dominik

Die hätte man wahrscheinlich mal wiederherstellen.

Dominik

Ja, war nicht so schlimm, eigentlich, weil das Projekt liegt noch nicht so lange, aber.

Jochen

Ja, so einen ähnlichen Fell habe ich mal, ich meine, man kann halt auch mal produziert, allerdings, was war ja so ein, ich meine, Datenbanken kann man natürlich löschen, das ist eine Möglichkeit, irgendwie sie unverfügbar zu machen.

Jochen

Eine andere elegante Möglichkeit, Daten von der Verfügbarkeit zu entfernen, ist halt sie einfach auszuschalten.

Jochen

Und normalerweise merkt man das halt auch immer sofort, wenn eine Datenbank weg ist.

Jochen

Manchen Datenbanken, da ist das Caching so advanced, dass man das nicht sofort merkt.

Jochen

Zum Beispiel bei DNS.

Johannes

Oh, DNS ist auch generell ein sehr schönes Thema.

Jochen

Und genau, wenn man dann, wenn man so den Primary-DNS-Server ausschaltet, einfach, weil man das irgendwie sich verguckt hat und im Rack das falsche Ding, dann kann auch schon mal sein, dass man das halt nicht sofort merkt, weil, naja, das meiste ist ja gecached, es funktioniert einfach alles weiter.

Jochen

Manche kriegen halt so seltsame Fehlermeldungen, aber manchmal, naja, das ist halt so, Computer, manchmal funktionieren Dinge nicht so richtig.

Jochen

Und dann wird es halt nur irgendwann dann komisch, wenn dann halt der Traffic immer weiter runter geht und man weiß nicht so recht, warum und dann denkt man sich so, hm, was ist denn heute für ein Datum?

Jochen

Ist da irgendwie Weihnachten gerade oder Fußballweltmeisterschaft?

Jochen

Oder wenn es das nicht ist, okay, das sieht jetzt aber schon komisch aus.

Jochen

Und ja, aber das Problem ist, wenn man es dann merkt, ist es halt schon zu spät.

Jochen

Weil dann haben nämlich auch alle.

Johannes

Und dann hast du auch die Cache-Zeiten, hast du dann beim Hochfahren auch wieder.

Johannes

Aber da hast du auch keine halben Sachen gemacht, wenn du direkt den Primary DNS.

Ja, ja.

Jochen

Ja, das war da, das war so, das war so bitter, dass dann auch tatsächlich jemand hingegangen ist.

Jochen

Also da musste irgendwie tatsächlich jemand irgendwie von Hand im DES-Pfeil was fixen.

Jochen

So mit einem VI auf einem, weiß ich nicht, mehrere 100 Megabyte.

Jochen

Ja, ich weiß nicht, wie oft sowas nötig ist, aber.

Dominik

Wie lange hat das gedauert, bis das wieder verfügbar war?

Jochen

Ja, so ein paar Stunden hat das schon irgendwie Probleme gemacht.

Dominik

Bis es aufgefallen ist?

Jochen

Es hat ein paar Stunden gedauert, ja, ich weiß nicht, ob es ein paar Stunden waren.

Jochen

Also ich weiß nicht genau, wie lange es gedauert.

Jochen

Also es war eine Zeit lang, bis es aufgefallen ist und dann hat es nochmal ein paar Stunden gedauert, bis es wieder gefixt war.

Dominik

Deswegen habe ich damals keine E-Mails mehr empfangen.

Johannes

Deswegen ist damals meine Oma gestorben, die dringend auf die E-Mail-Bestätigung von ihrem Arzt gewartet hat.

Jochen

Ja, ich glaube so, damals war das alles noch so.

Johannes

War es noch nicht so kritisch.

Jochen

War noch nicht so, ja.

Weiß nicht.

Johannes

Ja, das ist.

Johannes

Meine Frau ist ja Ärztin und bei der geht es um Menschenleben.

Johannes

Aber das ist ja nicht so schlimm, weil bei uns geht es ja um Geld.

Dominik

Geld oder Leben, Geld oder Leben.

Johannes

Ja, das ist doch schön.

Johannes

Aber es ist schön, dass jeder von uns auch so eine Geschichte hat, wo er einfach mal Produktivdaten entfernt oder gelöscht oder

Jochen

verfügbar ist.

Jochen

Ich glaube, das passiert auch allen irgendwann früher oder später mal.

Jochen

Das ist halt die Feuertaufe.

Dominik

Oder auch schön Backups machen auf dem gleichen Server wie die Datenbank.

Dominik

Und dann ist der Server weg und die Platte da von dem Arsch und dann ja Backups leider dann auch weg.

Das ist ja auch nicht so gut.

Johannes

Ja, Backups muss man auch mal offside machen.

Dominik

Hätte man auch eigentlich vorher noch gemacht.

Johannes

Gibt es auch das Zwiebelmodell?

Johannes

Du musst Schichten von Backups haben.

Johannes

Die erste Schicht ist die ganz nahe und die zweite Schicht ist im gleichen Gebäude und die dritte Schicht ist im gleichen Land und die vierte Schicht ist auf dem gleichen Planeten.

Okay.

Johannes

Und dann Schicht 5 Backups haben wir leider noch nicht so viele.

Dominik

Ja, könnte man aber eigentlich so ein bisschen rausschießen.

Dominik

Wir haben ja genug Planeten, die verfügbar wären.

Also es ist jetzt nur ein kleiner Explos, aber wir hatten eine Geld.

Johannes

Der Datentransfer, die Datenrate.

Johannes

Die Datenrate ist gut, aber die Latenz ist sehr langsam.

Jochen

Ja, wobei habt ihr das mit, wie hieß das Ding?

Habt ihr das verfolgt?

Jochen

Spaceship One oder so?

Jochen

Keine Ahnung, haben sie jetzt diesen High-Altitude-Test gemacht?

Jochen

Also wir sind diesem anderen Planeten.

Jochen

Bitte?

Johannes

Haben die sogar schon Leute damit?

Jochen

Ja, ja, nee, aber das ist diese, das ist diese, ich habe jetzt auch nicht so ein.

Jochen

Ich verfolge das immer nur so auf.

Johannes

Bezos oder von Elon Musk?

Johannes

Welche reiche Raketenfirma.

Jochen

Ja, ja, Elon Musk war das.

Johannes

Und Virgin Galactic, der dritte reiche Mann in, der dritte verrückte Milliardär, ist doch auch eine.

Jochen

Hat er auch Raketenfirma inzwischen.

Jochen

Ich dachte, er war noch was vom Flugzeug.

Dominik

Und er ist dann auch irgendwer der.

Wer ist der Branson?

Dominik

Bronson ist er ja auch.

Dominik

Richard Branson ist er hochgeflogen, weil er wollte unbedingt.

Jochen

Ach nein, nicht nicht, das Ding heißt irgendwie nicht Spaceship One, sondern Starship.

Jochen

Ach Gott.

Jochen

Naja, wie auch immer, genau.

Johannes

Namespace in dem Bereich wird jetzt auch schon knapp.

Jochen

Ja, nee, aber das Ding ist wirklich riesig.

Jochen

Also das ist halt nicht das, äh, also das ist halt irgendwie auch eine neue Technik, sonst ist einmal ein neues Material, das ist irgendwie Edelstahl statt Aluminium oder so.

Jochen

Und neue Technik, das soll wiederverwendbar sein und das segelt sozusagen irgendwie wieder runter und es ist größer als die Saturn V.

Jochen

Also es ist wirklich riesig.

Jochen

Also das ist halt sozusagen der.

Johannes

Ja, sowas habe ich bei Kerbal Space Programm auch schon mal gebaut.

Dominik

Da gibt es doch diesen tollen Talks.

Johannes

Hat auch einwandfrei funktioniert.

Dominik

Da gibt es halt ein paar tolle Talks, wie man Raumschiffe baut und wie man Raumschiffe fliegt.

Dominik

Die gab es dann mal zwischendurch.

Johannes

In Kerbal oder in echt?

Dominik

Ja, in echt, in echt, in echt.

In echt, ja, okay.

Johannes

Ja, es gibt ja auch ganz viele so Amateurfirmen, die das versuchen und machen.

Johannes

Kopenhagen Aerospace ist eine Amateurfirma, die ist nicht meine Firma, ja.

Johannes

Es ist ein Verein, der halt Raketen baut und ins Weltreil schicken möchte.

Dominik

Der US hat das irgendwie, wie man das macht.

Dominik

Das ist sehr interessant.

Dominik

Also wenn er euch das interessiert.

Dominik

Und weil wir gerade bei Planeten waren, das gibt ja irgendwie, wo man dann hinfliegen kann.

Dominik

Es gibt ja so viele wie oder mehr als Sandkörner wahrscheinlich auf der Erde, ne?

Dominik

Und das ist natürlich schon gut, wenn die nicht so weit weg wären.

Dominik

Und dann muss man sich halt irgendwie überlegen, wie man da die Zeit überbrücken kann.

Dominik

Also wir haben ja Computer dabei, vielleicht kann man da so ein bisschen seine Langweile vertreiben und Tetris spielen oder so.

Johannes

Ja, finde ich gut.

Dominik

Ja, ja.

Dominik

Das ist ja vielleicht so die Frage, wie man seine Zeit.

Johannes

Kann jeder endlich mal seine Steam-Bibliothek abarbeiten.

Ja, ja.

Dominik

Noch so ein Win übrigens oder ein Fail.

Dominik

Ich weiß nicht, Cyberpunk, Johann Johannes.

Wenn ihr gerade heute fast oben failet.

Johannes

Das ist ja, die Nachrichten sind unterhaltsamer als das Spiel, oder?

Ja, so schlimm.

Ist doch großartig, dass wir zitiert.

Johannes

Nein, das Spiel ist sicherlich sehr gut, wenn es läuft, aber man hört ja nur von Leuten, bei denen es nicht funktioniert.

Dominik

Tja.

Dominik

Kann man nichts machen, wenn man das auf einer alten Hand ist.

Johannes

Ein Gentleman genießt und schweigt.

Na gut.

Johannes

Wisst ihr, was wir gerade dabei sind, ist voll die gute Überleitung jetzt, die mir gerade so einfällt.

Johannes

Wisst ihr, was ein galaktischer Algorithmus ist?

Johannes

Das, was total witzig ist.

Johannes

Es gibt ja für alle möglichen Sachen Algorithmen, die in ihrer Laufzeit gemessen werden.

Johannes

Und Laufzeitmessung ist ja immer mit Groß-O-Notation.

Johannes

Und Groß-O-Notation heißt, dass es asymptotisch sich so verhält, wie die da gezeigte Funktion.

Johannes

Also zum Beispiel O von N2 kann ganz große konstante Faktoren haben, aber wenn man das n genügend groß wählt, dann ist es auf jeden Fall so wie n2.

Johannes

Und es gibt eine Klasse von Algorithmen, die heißt galaktische Algorithmen, die haben sehr gute O-Notationen.

Johannes

Also die sind dann O von n log n oder o von n hoch 1, noch was, also besser als alles andere.

Johannes

Aber wenn man die konstanten Faktoren ausrechnet, dann ist dieses n halt 10 hoch 40 oder sowas.

Jochen

Ah, das ist ein bisschen schlecht.

Johannes

Die Problemgröße ist halt, die konstanten Faktoren sind halt so dominant, dass es erst dann Sinn macht, diesen Algorithmus einzusetzen, wenn man einen Computer hat, der so groß ist wie eine Galaxis.

Deshalb heißen das galaktische Algorithmen.

Okay.

Johannes

Sind prinzipiell die besten Lösungen für verschiedene Probleme, aber in der Praxis nicht ungeheuer gut.

Johannes

Es gibt auch manche von denen, die haben dann so Konstanten drin, wo du halt, wo du quasi eine Lookup-Table vorher ausrechnen musst und der ist halt auch schon 10 hoch 40 Byte groß oder irgendwie sowas ganz Albernes.

Dominik

Das erinnert mich sehr an Series auf Interstellar Trade, wo es halt um die säkulare Verbesserung der Terms of Trade geht und zwischen zwei verschiedenen Zivilisationen, die relativ lange brauchen, bis sie miteinander Handel treiben können.

Dominik

Das kommt so in gewisser Weise, es ist halt faktischer Unsinn, aber theoretisch ein super tolles Modell.

Johannes

Ja, theoretisch optimal, aber in der Praxis leider nicht.

Dominik

Ja, auch ein galaktischer Algorithmus.

Johannes

Nicht anzuwenden.

Dominik

Das war ein Überdemer von Gruppman.

Dominik

Falls ihr das müssen wir auch mal verlinken in die Shownotes.

Johannes

Ja, tust du nochmal in die Shownotes.

Johannes

Ich lese es dann und das finde ich gut.

Johannes

Ich mag das gerne, so Paperlesen.

Johannes

Auch dieses Virus-Paper habe ich auch mit sehr viel Freude gelesen.

Johannes

Das war auch sehr schön.

Johannes

Ja, warum war das eine Überleitung?

Johannes

Weil ich habe jetzt hier, ihr könnt es jetzt hier sehen im Video, die Hörer zu Hause.

Johannes

Ihr könnt es nicht sehen, weil es ist ja ein Podcast.

Johannes

Dieses Buch hier, das ist ein schwarzes Buch mit Ringen, Ring, Einband, das ist mein Algorithmenbuch.

Johannes

Und ich habe dieses Algorithmenbuch vor Jahren mal angefangen.

Johannes

Und die Idee dahinter ist, dass immer, wenn ich einen guten Algorithmus finde, der nicht so bekannt ist, dass ich mir den aufschreibe.

Johannes

Und wenn ich vor irgendeinem Problem stehe, was schwer zu lösen ist, dann muss ich nur in mein Algorithmenbuch reinschauen und finde da bestimmt irgendwas drin, was da hilft.

Dominik

Jetzt mach mal auf und zeig mal, wie viele Seiten da schon beschrieben sind.

Johannes

Ich mache jetzt erstmal den Staub weg.

Johannes

Es lag nämlich schon eine ganze Weile drin und ich mache es jetzt mal auf.

Johannes

Und es sind tatsächlich 1, 2, 3, 4, 5, 6, 7, ja, siebeneinhalb Seiten beschrieben.

Johannes

Das hier ist die achte Seite, die beschrieben ist.

Johannes

Da steht nur eine Überschrift drauf.

Johannes

Ja, ich würde das auf jeden Fall als Win zählen.

Dominik

Aber nicht die Seite mit den Rezepten, mit den Kochrezeptern dazu zählen.

Johannes

Klar, gewonnen.

Johannes

Ja, Kochrezepte habe ich ein eigenes Buch für Selbstrecht- und Tech.

Dominik

Könnte ja auch für Sonderreigner.

Jochen

Aber tatsächlich in der Praxis hat man oft irgendwie dickere Kochrezeptbücher als Algorithmenbücher dazu.

Jochen

Ja, das ist mir auch schon aufgefallen.

Ja, leider.

Jochen

Ich weiß auch nicht, es hilft auch nicht, wenn man sich jetzt, man kann sich natürlich auch irgendwie so ein Algorithmenbuch nehmen und dann einfach versuchen mal die ganzen Dinger durchzulesen, zu lernen und dann halt anzuwenden, wenn man halt irgendwie so Probleme hat.

Jochen

Aber irgendwie funktioniert das nicht richtig.

Jochen

Also was mir tatsächlich oft passiert, oder was heißt so oft, so oft hat man ja zum Glück nicht wirklich schwere Probleme, aber, oder auf dem Level nicht so schwer, aber was mir ganz oft passiert, ist, dass ich habe irgendein Problem, das ich nicht in den Griff kriege.

Jochen

Und naja, da mir die Algorithmenbücher zu langweilig sind, die habe ich alle nicht gelesen, weiß ich halt auch nicht, welchen Algorithmus man eigentlich nehmen sollte.

Jochen

Sondern ich fange dann an, darüber selber nachzudenken.

Jochen

Das ist halt auch nicht so optimal.

Jochen

Und ein sehr langsame Algorithmus.

Wie ist es dann diese ganzen Algorithmen wieder?

Jochen

Ja, und dann, äh, oder sag mal so, es ist, es ist irgendwie, also ich teilweise entdecke ich sie dann halt wieder, irgendwie nach langem drüber nachdenken.

Jochen

Oder ich, mir fällt halt irgendwo ein Algorithmus auf, der genau das Problem löst.

Jochen

Aber halt so in dem Kontext des drüber nachdenkens irgendwie, weil ich mir denke, so, okay, das, was da Leute machen, das klingt so ähnlich und dann irgendwann taucht dann der Name von dem Algorithmus auf und dann, also es ist irgendwie ganz eigenartig.

Jochen

Ich verstehe es nicht so genau und das ist schon ein paar Mal passiert.

Johannes

Ja, dafür hatte ich eigentlich dieses Buch hier.

Johannes

Aber.

Dominik

Du musst mal einen davon vorstellen, Johannes, der vielleicht so einen Namen hat oder hast du einen selber, den du selber taufst?

Johannes

Ja, nee, selber getauft nicht.

Johannes

Also ich versuche Sachen hier zu merken, die ich interessant finde, die spannend filter.

Johannes

Eine Sache, die man mal sagen kann, sind zum Beispiel Bloomfilters.

Johannes

Wisst ihr, was ein Bloomfilter ist?

Nein.

Jochen

Ja, voll geil.

Johannes

Das ist eine sehr spezifische, probabilistische Datenstruktur, die, wenn man sie braucht, absolut genial ist und absolut undenkbar, dass es überhaupt funktionieren kann.

Johannes

Aber wenn man sie nicht braucht, ist es total nutzlos.

Johannes

Das ist im Wesentlichen eine Set-Implementation, also eine Menge.

Johannes

Und ich kann in diese Menge Dinge eintragen, also Elemente eintragen und ich kann fragen, ist dieses Element in der Menge vorhanden?

Johannes

Und wenn die Antwort nein ist, dann ist die sicher.

Johannes

Das heißt, wenn mein Bloomfilter sagt, das Element 7 ist nicht vorhanden, dann bin ich mir sicher, dass das Element nicht vorhanden ist.

Johannes

Wenn der Bloomfilter aber sagt, ja, das Element ist vorhanden, dann ist der nur mit einer gewissen Wahrscheinlichkeit vorhanden.

Johannes

Und der Gag daran ist, dass man sehr wenige Bits braucht, um diese Einträge zu speichern.

Johannes

Also je nachdem, wie man das eingestellt hat, kann die Speichermenge weniger als ein Bit pro Eintrag sein.

Johannes

Deutlich weniger als ein Bit pro gespeichertem Element.

Johannes

Und das ist was total Verrücktes, weil das kann ja gar nicht gehen.

Johannes

Warum ist das nützlich?

Johannes

Das ist zum Beispiel dann nützlich, wenn man so eine verteilte Situation hat, dass du sagst, okay, ich suche in meinen zehn Datenbankservern nach dem Eintrag für diesen Schlüssel, den ich jetzt gerade brauche, und ich frage einfach mal meinen Blumenfilter, auf welchem Datenbank-Server dieser Eintrag vorhanden ist.

Dominik

Und der sagt dann alle Standard, in welcher Range?

Johannes

Das kommt darauf an, das liegt an der Menge der Einträge, die du speicherst und wie groß dieser Blumenfilter ist, den du gemacht hast.

Johannes

Musst du vorher wählen, musste relativ sein.

Johannes

Aber alle, nee, es ist eine kompliziertere Formel.

Johannes

Das wäre dann ein Detail, das steht gar nicht in meinem Buch drin.

Johannes

Das Wichtige ist, wenn dir ein Filter sagt, nein, der ist nicht drin, dann brauchst du diesen Datenbankserver gar nicht fragen, weil da bist du sicher.

Johannes

Wenn der Blumenfeld aber sagt, ja, der ist drin, dann ist er vielleicht da drin.

Johannes

Ein anderes Beispiel, wofür ich es kürzlich überlegt habe anzuwenden, ist ein Passworthash.

Johannes

Es gibt ja eine Liste von unsicheren Passwörtern, also von Passwörtern, die bekannt sind.

Johannes

Im Wesentlichen Passwortwortlisten.

Dominik

Das ist eine Regenbogentabelle.

Johannes

Genau, dass du so eine Art Regenbogentabelle machst, dass du einen Regenbogen Blumenfilter machst, dass du sagst, du nimmst dir die größten die 250.000 Passwörter, die am weitesten verbreitet sind, und speicherst davon die Schar 1 Hashes.

Johannes

Und ein Blumenfilter dafür mit einer Wahrscheinlichkeit von, ich glaube, 99%.

Johannes

Ich hatte es mal ausgerechnet, das sind etwa 100 Kilobyte.

Johannes

Das ist also durchaus was, was du per JavaScript übertragen könntest, wo du direkt auf den Client überprüfen könntest, ob das Passwort, was er gerade eingegeben hat, zu den 250.000 schlechtesten Passwörtern, die es gibt, gehören könnte.

Dominik

Du kannst ja sagen, du du, dein Passwort ist aber doof.

Genau.

Johannes

Und wenn du das sagst, dann weißt du, dass es vielleicht so ist, vielleicht aber auch nicht.

Johannes

Wenn der aber Nein sagt, dann weißt du, dass es auf jeden Fall keins dieser Passwörter ist, die du gespeichert hast.

Johannes

Also so eine Abfrage, wo du ein sicheres Nein brauchst, dafür sind die sehr gut und dafür sind die eine super Sache, weil sie halt ungeheuer wenig Speicherplatz verbrauchen.

Johannes

Viel, viel, viel weniger, als man sich das je vorstellen könnte.

Johannes

Aber jetzt ist es halt leider so, so eine Art Problem braucht man halt nicht so häufig.

Johannes

Deshalb habe ich nur sieben solcher Einträge drin.

Johannes

Einer davon Bloomfilter, den schreibt ihr jetzt euch alle in euer Algorithmenbuch direkt rein.

Dominik

Wie schreibt man den denn den Bloom-Filter mit UH, mit OO?

Johannes

So wie Orlando.

Okay.

Doppel Null.

Johannes

B-L-O-O-M-Filter.

Johannes

Weil der nämlich blüht, also der blüht auf, wenn du die Abfragen machst.

Johannes

Wenig Daten, die dir viele Antworten gibt.

Johannes

Ja, super spannende Technik habe ich es noch nie irgendwo verwendet.

Johannes

Auch da hat es dann zerschlagen, weil wir doch einfach eine ganz andere Sache gemacht haben mit unseren Passwörtern.

Aber gut.

Dominik

Fast ein Algorithmus, den man fast gebraucht hätte, ist ja schon mal etwas.

Johannes

Ja, insofern, Win oder Fail, auch hier.

Johannes

Ich werde mal, vielleicht werde ich es mir öfter wieder zu.

Johannes

Vielleicht fallen mir mehr spannende Sachen auf, die man da reinschreiben könnte.

Johannes

Exotische Sachen.

Johannes

Vielleicht mache ich auch einfach nächstes Mal dieses Buch nochmal auf und wir sprechen über furchtbar exotische Sachen.

Dominik

Sukkulenten.

Johannes

Ja, noch exotischer.

Noch exotischer, na gut.

Johannes

Viel exotischer.

Jochen

Ja.

Jochen

Wenn ich es so überlege.

Jochen

Also ich meine, das hatte ich auch vielleicht schon mal erwähnt.

Jochen

Also ich hatte das schon mal mit topologischer Sortierung, genau, da wusste ich auch nicht, was das ist, bis ich es dann auch nochmal entdecken musste.

Bis du das selber erfunden hast?

Jochen

Ja, naja.

Jochen

Das ist halt irgendwie nicht das Gleiche, wenn man das als erster macht oder halt irgendwie dann, wenn man es eigentlich schon mal wissen sollte.

Jochen

Also, aber ja.

Jochen

Eine andere Geschichte, die mir mal.

Kryptomnese.

Johannes

Wisst ihr, was Kryptomnese ist?

Jochen

Nee.

Johannes

Das ist, wenn man selber was erfindet, was es aber schon gibt.

Jochen

Ja.

Johannes

Weil man sich dann doch irgendwie halt doch dran erinnert, so unterbewusst.

Jochen

Das kann auch gut sein, dass das so ist.

Dominik

Oder eigentlich ist es einfach so genial, das hat einfach jemand anders von mal diese Idee, aber völlig unabhängig.

Jochen

Das ist eine Annahme, die wäre mir sehr sympathisch.

Jochen

Das Problem dabei ist, dass halt verlangen damals nie.

Johannes

Bei mir natürlich zu.

Jochen

Was tatsächlich neu ist, spricht das so ein bisschen gegen die Hypothese, aber tatsächlich ist, Feynman hat das ja auch irgendwie, ich weiß nicht, weiß nicht in welchem Buch er das geschrieben hat, aber er spricht leider auch so irgendwie, naja, hat halt einfach immer irgendwie alle Sachen, alle Probleme, die irgendwie in den Büchern, die er so gelesen hat, drin standen, irgendwie versucht zu lösen.

Jochen

Und hat das halt einfach immer weitergemacht und irgendwann hat er halt dann gemerkt, sozusagen, oh, das war ein bisschen knifflig oder so, hat sie der dann aber auch gelöst und dann hat er irgendwie weitergelesen und dann schießt er so, ja, das sind ungelöste Probleme, da gab es da doch keiner irgendwas.

Jochen

So, oh, jetzt nicht mehr.

Jochen

Aber ja.

Johannes

Ja, das ist doch die Feinmann-Problemlösungsmethode, kennt ihr die?

Die hat drei Schritte.

Johannes

Erster Schritt Problem hinschreiben, zweiter Schritt nachdenken, dritter Schritt Lösung hinschreiben.

Johannes

Da gibt es dann auch die angewandte Feinmannsche Problemlösungsmethode.

Johannes

Die heißt auch manchmal die studentische Problemlösungsmethode, hat auch drei Schritte.

Johannes

Erster Schritt ist Problem hinschreiben, zweiter Schritt ist ganz, ganz arg drüber nachdenken, dritter Schritt ist heulen.

Jochen

Das passiert auch häufiger, als man sich das so wünscht.

Johannes

Ja, ich erzähle mich da eher zu der.

Jochen

Ja, aber tatsächlich bin ich mir so überlegt, was habe ich denn noch so an Dingen mal gebraucht, wo ich nicht von Anfang wusste.

Jochen

Ah, zum Beispiel auch nett, genau, wir haben versucht, das klingt eigentlich total banal, es war es aber irgendwie nicht, das weiß ich gar nicht mehr genau, warum das eigentlich nicht so banal war.

Jochen

Aber wenn man jetzt so den Status von so einem Online-Shop hat, wenn man so dann kann er ja irgendwie zwar irgendwie entweder online sein oder offline, wenn man jetzt so einen Meta-Shop hat, quasi nach draußen hin.

Jochen

Also entweder man kann da irgendwie Dinge kaufen oder draufklicken oder so, oder halt eben nicht.

Jochen

Aber der Grund dafür kann halt aus ganz vielen unterschiedlichen Dingen bestehen.

Jochen

Also wie zum Beispiel, naja, ein Shop kann deswegen offline sein, weil er ist halt über irgendein Budget gelaufen und möchte halt nicht mehr Geld ausgeben, deswegen kriegt er keine Klicks mehr.

Jochen

Oder er ist irgendwie, keine Ahnung, man ist mit ihm in einem Rechtsstreitigkeit verwickelt und ist vor Gericht.

Jochen

Dann weiß ich nicht, der hat.

Johannes

Das sind eigentlich alle Möglichkeiten, die es gibt.

Jochen

Die Daten sind irgendwie kaputt.

Jochen

Also sagen wir so, das Problem ist, so im Verlauf der Zeit entdeckt man halt auch immer mehr Möglichkeiten, warum man jetzt gerade nicht will, dass er online ist.

Jochen

Aber im Endeffekt muss er entweder online sein oder nicht.

Jochen

Aber es gibt halt dann so Zustände, aus denen will man nicht wieder zurück.

Jochen

Und manche Zustände, da will man aber wieder zurück.

Jochen

Also wenn der Monat dann anfängt, dann wechselt man wieder in den Zustand, wenn das Budget der Grund war, ah, okay, ist jetzt wieder online.

Jochen

Aber wenn dann irgendwie, keine Ahnung, eben vor Gericht, dann will man nicht wieder in den online-Zustand zurückwechseln, sonst hat man ein zweites Gerichtsverfahren, das ist ja auch doof.

Jochen

Und das ist, das wird komplizierter, als man sich das so vorstellt.

Jochen

Und wir hatten dann halt irgendwie, wir hatten das halt zuerst in Code alles.

Jochen

Und das hat nicht gut funktioniert, diesen Code zu pflegen, war blöd, weil immer wieder sind so Dinge passiert dann, nachdem dieser Code geändert wurde, die man vorher nicht abgesehen hatte, gerade dann immer so, weil dann passieren Dinge dann am Monatswechsel oder bei irgendeiner Rechnungsstellung oder so, die man vielleicht dann nicht so, also auch Dinge, die halt einfach blöd zu testen sind.

Jochen

Und dann hat man immer so, okay, vor einem halben Monat hat jemand was geändert, okay, und dann ist es bei der Rechnungsstellung ganz auf furchtbare Art schiefgelaufen.

Jochen

Und da war sie also, okay, wir können das eigentlich nicht so, dieser Code, und der wurde auch immer komplizierter, dass das geht so nicht, das überblickt auch keiner mehr.

Jochen

Lass uns das doch irgendwie formalisieren und irgendwie da so einen endlichen Automaten oder so draus bauen.

Jochen

Und das ist uns aber nie gelungen oder nicht so richtig.

Jochen

Und dann, also als nicht-deterministischen Automaten konnten wir uns irgendwie hinschreiben, aber als deterministischen nicht.

Jochen

Und dann kann doch nicht sein, dass das so schwierig ist.

Jochen

Ja, und dann haben wir tatsächlich irgendwie.

Johannes

Aber du kannst doch jeden nicht-deterministischen Automaten, als einen deterministischen Automaten mit zwei hoch N Zuständen modellieren, ja auch ein Mensch.

Jochen

Ja, du weißt es einfach so direkt.

Jochen

Also zwar das nicht so sofort klar, aber ja, dann auf die Lösung sind wir dann auch gekommen, brauchst du dann halt einfach einen Potenzmengenautomat und dann geht's.

Jochen

Genau.

Ja, genau.

Johannes

Ja, aber das ist doch der große, der große, das ist doch das darunter liegende Problem für P gleich NP.

Johannes

Wenn du diese Abbildung gibt es, also jeden nicht deterministischen endlichen Automaten kannst du als deterministischen endlichen Automaten mit 2 hoch N Zuständen machen.

Johannes

Und ja, die Konsequenz davon ist, ist die Frage P gleich NP oder nicht.

Jochen

Ja, ja, soweit sind wir dann, das zu lösen, so weit sind wir dann nicht gekommen, da waren dann halt die acht Stunden dabei und da mussten wir dann leider nach Hause gehen.

Du musst ja

Dominik

trotzdem nochmal einen ganz, ganz kleinen Einführungstext dazu verfassen, was denn P mal NP ist, für unsere Hörer, die da nicht ganz so tief in der Kinder.

Johannes

Ja, wir hatten ja vorhin schon kurz angerissen, dass man Algorithmenlaufzeiten mit Groß-O-Notationen missten.

Dominik

Ja, also wie schnell ein Algorithmus sich entwickelt, wenn man ihn mehrmals macht, oder?

Johannes

Nee, genau, wie schnell sich ein Algorithmus, wie schnell die Laufzeit sich entwickelt, wenn sich die Problemgröße verändert.

Johannes

Also wenn ich zum Beispiel irgendwelche Berechnungen mache, dann ist die Problemgröße üblicherweise die Größe der Zahl.

Johannes

Also wenn ich jetzt zum Beispiel den größten Primfaktor finden möchte von einer Zahl, dann kann ich das für die Zahl 10 noch sehr schnell machen.

Johannes

Für die Zahl 100 wird es dann schon etwas langsamer und für die Zahl 1000 wird es dann noch langsamer und für die Zahl 10 hoch 20 wird es dann halt noch deutlich langsamer.

Johannes

Und die Frage ist, wie viel langsamer wird es denn, wenn die Zahl größer wird?

Johannes

Und weil das von Mathematikern erfunden worden ist, sind alle endlichen Zahlen hier direkt egal.

Johannes

Sondern es geht nur um, wie verhält sich das denn, wenn wir in Richtung Unendlich gehen.

Johannes

Das ist genau das Problem bei den galaktischen Algorithmen.

Johannes

Den Mathematikern sind die absolut recht.

Johannes

Dass man die nicht in der Praxis einsetzen kann, ist uns Mathematikern einfach egal.

Johannes

Weil da geht es nur um die Korrektheit.

Johannes

Also im Wesentlichen ist es die Frage, wenn ich die Problemgröße verdoppele, wie verändert sich dann meine Laufzeit?

Johannes

Wenn ich jetzt zum Beispiel einen Algorithmus habe, der O von N ist, dann heißt es linear.

Johannes

Das heißt, wenn ich mein Problem verdopple, dann verdoppelt sich auch die Zeit, die ich brauche, um das Ergebnis zu brechen.

Das ist gut.

Johannes

Das ist leicht planbar, das ist absehbar.

Johannes

Ich weiß, ich habe jetzt einen Computer, der kann Probleme lösen mit 1000 Stellen und nächstes Jahr habe ich einen, der ist doppelt so schnell, kann ich ein Problem lösen, das 2000 Stellen hat.

Johannes

Das ist leicht zu planen.

Johannes

Schon ein bisschen schlechter ist O von N Quadrat.

Johannes

Das heißt, wenn ich die Problemgröße verdopple, dann vervierfacht sich die Laufzeit des Problems.

Johannes

Und das ist schon mal schlechter, weil dann heißt das halt, dass ich mit einem doppelt so schnellen Computer nicht doppelt so große Probleme lösen kann.

Johannes

Dann brauche ich ein viermal so schnell.

Dominik

Root Force von Schwieger.

Genau.

Johannes

Und entsprechend gibt es dann natürlich auch N hoch 3 und N hoch 4 und N hoch 5.

Johannes

Und diese ganzen Dinge heißen alle Polynome.

Johannes

Die sind alle polynomiell.

Johannes

Weil die im Wesentlichen handhabbar sind.

Johannes

Die wachsen nicht ungeheuer schnell.

Johannes

Ein Polynom mit n hoch 100 wächst auch ungeheuer schnell, aber kann man, ist okay.

Johannes

Das ist sozusagen das, was man als Mathematiker akzeptiert.

Johannes

Polynomielles Wachstum.

Johannes

Jetzt gibt es so eine Grenze, wo, oder ja, so einen Schnitt, wo es Funktionen gibt, die wachsen schneller als jedes Polynom.

Johannes

Und das sind die exponentiellen Funktionen, also 2 hoch n.

Johannes

Das heißt, wenn ich mein Problem verdopple, dann wächst die Laufzeit mehr als jedes Polynom wachsen kann.

Johannes

Also größer als n hoch 100, größer als n hoch 1000, sondern 2 hoch n.

Johannes

Und das hängt eben davon ab, wie groß n ist, wie schnell dieses Wachstum ist, weil das Wachstum nämlich auch immer schneller wird.

Johannes

Das ist eben eine der Kerneigenschaften der Exponentialfunktion, dass das Wachstum genauso schnell ansteigt wie die Funktion selbst.

Johannes

Das in zwei Minuten in einem Podcast zu erzählen, ist schwierig.

Das funktioniert aber gut.

Johannes

Ihr müsst es einfach mal hinnehmen.

Ja, ja.

Johannes

Ihr müsst es jetzt einfach mal hinnehmen.

Johannes

Das ist schlechter als jedes Polynom.

Johannes

Und jetzt ist es so, man hat Algorithmen gefunden für Probleme, die sich in polynomialer Laufzeit lösen lassen.

Johannes

Zum Beispiel Primfaktorberechnung.

Johannes

Wobei das schon so eine Sache ist, die hart umstritten ist, ob das jetzt deterministisch oder man das erlauben möchte oder nicht.

Johannes

Es gibt viele Algorithmen, die sind in polynomialer Laufzeit machbar, Sachen, die man berechnen kann.

Johannes

Pfadberechnungen, Volltextsuche prinzipiell.

Johannes

Solche Sachen sind alle in polynomialer Laufzeit berechbar.

Johannes

Es gibt aber auch eine Sorte Probleme, für die hat man keinen polynomialen Algorithmus gefunden, sondern eben nur solche, die in exponentieller Laufzeit funktionieren, wo man im Wesentlichen alle Kombinationen ausprobieren muss.

Johannes

Ein solches Problem ist, das ist sehr anschaulich, finde ich, das ist das Tetris-Problem oder auch das Knapsack-Problem, wo ich eine Menge an Zahlen gegeben habe, eine Menge an Größen.

Johannes

Und ich habe eine Zielgröße gegeben und die Frage ist, kann ich aus den mir gegebenen Bausteinen eine Summe bilden, die genau das Ziel erreicht.

Johannes

Und die einzige Möglichkeit, die es da gibt, im Wesentlichen, ist einfach alle Kombinationen auszuprobieren.

Johannes

Und das sind halt nun mal zwei Hoch-N-Kombinationen, weil ich kann eben in der Summe jede Zahl entweder aufführen oder nicht aufführen.

Johannes

Das heißt, ich habe n Bits, die ich setzen kann.

Jochen

Ich muss die Menge aller Teilmengen sozusagen ausprobieren.

Johannes

Genau, die Menge aller Teilmengen, also die Menge aller möglichen Summen, die ich bilden kann mit den Zahlen, die mir gegeben sind.

Johannes

Und das entspricht genau der Menge aller Teilmengen und das entspricht genau der Menge aller möglichen Zahlen, die ich mit n Bits bilden kann, und das sind genau 2 hoch n.

Johannes

Und das ist der beste Algorithmus, den es gibt.

Johannes

Also es gibt da so deterministische, es gibt da so probabilistische Sachen, ja.

Johannes

Und es gibt Techniken, wo du eben auf n hoch 1,36, 2 hoch, also 1,36 hoch n runterziehen kannst und das ist nicht mehr 2 hoch n und das ist beeindruckend, ja.

Johannes

Und das ist unglaublich, aber es ist immer noch exponentiell.

Johannes

Jetzt ist die Frage, gibt es für diese Probleme auch polynomielle Algorithmen?

Johannes

Gibt es auch für diese Probleme Algorithmen, die in polynomieller Laufzeit das Ergebnis liefern?

Johannes

Und die Antwort darauf ist unklar, die ist unbekannt.

Johannes

Und das ist genau die Frage, ja.

Johannes

Ist P gleich NP?

Johannes

Jetzt ist es so, da kommt noch dazu, diese Probleme, die man gefunden hat, die nennt man NP, nicht deterministisch polynomiell.

Johannes

Das sind alle solche, die in exponentieller Laufzeit laufen.

Johannes

Und lustigerweise sind die alle irgendwie äquivalent.

Johannes

Also man kann die alle so ineinander umformen, dass alle das gleiche sind.

Johannes

Das heißt, wenn ich einen Algorithmus für eins von diesen Problemen finde, der in polynomialer Laufzeit läuft, dann habe ich automatisch auch für alle anderen Algorithmus gefunden, der auch in polynomialer Laufzeit läuft.

Johannes

Und das ist das Verrückte da drin, ja.

Johannes

Diese ganze Klasse an Problemen sind alle irgendwie mehr oder weniger äquivalent.

Johannes

Aber man weiß nicht, einen einzigen in polynomialer Laufzeit zu lösen.

Johannes

Und das ist die Frage, gibt es einen solchen Algorithmus?

Johannes

Gibt es so einen polynomiellen Algorithmus für irgendeines dieser Probleme oder gibt es diesen Algorithmus nicht?

Johannes

Das heißt, gibt es die zwei unterschiedlichen Mengen, es gibt Probleme, die polynomiell lösbar sind und Probleme, die nicht polynomiell lösbar sind, oder sind das alles die gleichen?

Johannes

Gibt es nur solche, die polynomiell lösbar sind?

Johannes

Und das ist die ungeklärte Frage, ist P gleich NP?

Johannes

Wenn man dieses Problem löst, kriegt man direkt eine Million Dollar überwiesen, weil da gibt es einen Clay-Preis dafür.

Johannes

Ja, also ein Mathematikpreis, der da ausgeschrieben ist, ist mit einer Million Dollar dotiert.

Johannes

Und ich glaube auch eine Fieldsmedaille und eine Turing-Medaille und alle anderen Medaillen, die es so gibt in dem Feld, wären eigentlich

Jochen

schnell sicher.

Jochen

Also ich bin, wenn, wenn es ein, wenn es irgendwie sowas gäbe wie das wichtigste Problem in der Informatik, dann wäre das auf jeden Fall ein Kandidat dafür oder das wichtigste ungelöste Problem.

Jochen

Ja, also das kann, äh, ja, ja, also diese Komplexitätstheorie ist halt schon so, also ich meine, es gibt da noch, also ich glaube, also der Grund, warum das jetzt NP heißt, also ist nicht deterministisch polynomial, weil du kannst halt mit einer nicht deterministischen Turing-Maschine in Polynomialzeit überprüfen, äh, also kannst du das halt bestimmen.

Jochen

Und du kannst halt mit einer deterministischen Turing-Maschine in Polynomialzeit überprüfen, ob die Lösung richtig war oder nicht.

Jochen

Sozusagen, das ist halt irgendwie die Namensgeschichte.

Jochen

Aber es gibt auch noch böse, also es gibt jetzt, also vor den Komplexitätsklassen, es gibt halt NP-Hard und NP vollständig und dann gibt es auch noch, genau, Ex-Time drumherum und P-Space und weiß hat.

Johannes

Ja, da gibt es noch ganz viele und diese ganzen Space-Klassen gibt es ja auch alle noch.

Johannes

P-Space und NP sind.

Johannes

Da gibt es so eine ganz große Hierarchie davon.

Johannes

Aber das sind die einzigen, die so richtig bekannt sind.

Ja, und

Johannes

eben es ist halt eben so, jede nicht deterministisch-polynomiale Turing-Maschine kannst du trivialerweise in eine deterministische Turing-Maschine überführen, die halt aber zwei Hochend-Zustände hat.

Johannes

Und die dann entsprechend länger braucht.

Johannes

Das heißt, die hat keine polynomiale Laufzeit mehr.

Johannes

Und das ist die Krux an der Sache.

Dominik

Und jetzt vielleicht noch ganz, ich weiß nicht, das ist bestimmt ja nur ein Satz.

Dominik

Der Unterschied zwischen der nicht-deterministischen und der deterministischen Turing-Maschine.

Johannes

Oh, Jochen, das darfst du mal erklären.

Das ist schwer zu erklären.

Jochen

Naja, sagen wir so, das eine ist halt etwas, was wir bauen können, das andere irgendwie nicht so richtig.

Jochen

Also sozusagen, äh, eine.

Johannes

Es ist so, ich versuch's mal zu erklären.

Johannes

Eine Turing-Maschine ist ja so ein Automat, der hat eine gewisse Anzahl Zustände und in jedem Zustand macht er bestimmte Dinge.

Johannes

Und in einer deterministischen Turing-Maschine nimmst du immer einen Übergang.

Johannes

Du gehst immer von einem Zustand in einen anderen Zustand.

Johannes

Weil das ist, was wir bauen können, wie der Jochen gesagt hat.

Johannes

Wenn der Zustand jetzt A ist und dann sind die Bedingungen gegeben, dann gehe ich als nächstes in den Zustand B.

So.

Easy.

Johannes

In einer nicht-deterministischen Turing-Maschine legst du dich nicht fest.

Johannes

Du sagst, wir gehen jetzt von dem Zustand A in alle möglichen anderen Zustände und erst wenn wir zu einem Ergebnis kommen, sage ich dir, in welchen Zustand ich wirklich gegangen bin.

Johannes

Das heißt, da erklärt sich auch schon so ein bisschen, warum es einfach ist, das in einer exponentiellen Laufzeit zu machen, weil du halt quasi in einem Zeitschritt in alle anderen möglichen Zustände übergehst, in die du übergehen kannst.

Johannes

Und das ist halt nicht zu bauen, ja?

Das kannst du nicht bauen.

Johannes

Du sagst sozusagen erst am Ende, welchen Weg du durch die Zustände genommen hast.

Jochen

Ja, wobei, also ich meine, es ist, was ja so ein bisschen in die Richtung geht, wäre dann ja, also ist nicht das gleiche, also Quantencomputer sind keiner nicht determinister Turing-Maschine.

Jochen

Aber so ein bisschen, was geht dann in die Richtung.

Jochen

Und jetzt bewege ich mich natürlich weit außerhalb von dem, wo ich normales beschäftige, aber es gibt halt eine Klasse von Problemen, die halt durch einen Quantencomputer halt in Polynomialzeit lösbar sind, werden, die das halt normalerweise nicht sind.

Jochen

Dazu gehört sowas wie Graphen-Isometrieb.

Jochen

Primzahlfaktorisierung, das ist ein wichtiges, also das ist halt blöd, wenn es Quantencomputer tatsächlich geben sollte.

Jochen

Das macht RSA kaputt.

Johannes

Und für DSA gibt es, glaube ich, auch so ein.

Jochen

Ja, also das Schorz-Algorithmus heißt das Ding irgendwie, das macht auf dem Quantencomputer das Ding halt in Polynomialzeit nieder und das ist auch schon implementiert worden.

Jochen

Also wenn es einen mit genügend Kubits gibt, dann haben wir ein Problem.

Jochen

Es sei denn, wir haben auf Postquantum-Kryptografie gesetzt oder so, was aber keiner macht, weil das kann aber gar nicht passieren.

Jochen

Naja, mal sehen.

Johannes

Ja, ist aber tatsächlich vor ein paar Monaten, Schrägstrich Jahren, hat die NIST auf einmal sehr und auch die NSA auf einmal sehr plötzlich ihre Empfehlungen geändert, ohne zu begründen, warum.

Johannes

Also es gibt schon so Hinweise, dass man dringend auf Postquantenalgorithmen

Jochen

wechseln sollte.

Jochen

Okay.

Jochen

Ja, jedenfalls die Komplexität.

Johannes

In 50 bis 100 Jahren wissen wir das dann auch, ob die mehr wussten als wir.

Jochen

Also diese Komplexitätsklasse wird, glaube ich, dann MPI genannt, so MP Intermediate oder so, und da sind halt so ein paar Dinger drin.

Jochen

Leider ja, das sind halt auch so ein paar wichtige.

Ja.

Jochen

Aber tatsächlich ist es immer noch, also ach genau, und diese Klasse gibt es überhaupt nur dann, wenn P ungleich entpegelt.

Jochen

Wenn P gleich entpegelt, ist es natürlich sowieso Quatsch.

Jochen

Aber dann geht es auch dabei.

Jochen

Aber ich meine, so wirklich, ehrlich gesagt, so realistisch kann man das nicht so richtig annehmen, weil, also, das hätte auch schon jemand rausgekriegt, wenn das wirklich wäre.

Ja, aber guck mal, wenn es so eine krasse galaktische Sache ist, wo du halt so Konstanten brauchst, die 10 hoch 40 groß sind und ein Lookup-Table, der 10 hoch 100 Einträge hast, dann ist nicht, dann finden wir diesen Algorithmus nicht, weil da sind unsere Gehirne einfach nicht groß genug dafür.

Jochen

Ja, kann

Johannes

schon sein.

Johannes

Da wäre dann ein Beweis halt besser.

Johannes

Und als Mathematiker muss ich sagen, ein Beweis ist immer besser.

Jochen

Ja, ja.

Es ist ja nicht nur so, ja.

Johannes

Es ist ja nicht nur, man kriegt ja die Millionen Dollar nicht, wenn man diesen Algorithmus findet.

Johannes

Man kriegt ja die Millionen Dollar auch, wenn du beweist, dass es diesen Algorithmus nicht gibt.

Johannes

Also wenn du P ungleich NP beweisen kannst.

Johannes

Nur ist bisher auch niemandem gelungen.

Jochen

Nee, also es ist auch nicht so, dass es nicht verversucht worden wäre.

Jochen

Es haben schon diverse Leute, da sich da an dem Ding die Zähne ausgedrückt.

Jochen

Ab und zu gucke ich da mal rein, wenn ich denke so, oh, interessanter Blogartikel.

Jochen

Und dann denke ich mir noch so den ersten zweiten Absatz, aber ganz interessant, dann denke ich mir so, oh, das wird aber jetzt von der Notation schon ein bisschen wild.

Jochen

Und dann irgendwann denke ich mir so, dann

Johannes

klicken wir mal auf später lesen.

Jochen

Dann fangen die Leute an, davon zu reden, so, ah ja gut, okay, mit normaler Mathematik haben wir jetzt hier, jetzt müssen wir eine neue Mathematik irgendwie brauchen wir, um dabei.

Jochen

Okay, später lesen.

Dominik

Einschlafvektüre ordnen, ja.

Johannes

Ja, als ich habe ja Mathematik studiert und ich hatte da auch einmal eine sehr, oh, das ist jetzt auch wieder eine Überleitung zu Win und Fail.

Johannes

Ich hatte eine sehr lange Unterhaltung mit jemandem, dem es nicht einleuchtend war, dass es Nichtexistenzbeweise gibt und dass er mich unbedingt davon überzeugen wollte, dass es die universelle Mathematik gibt und dass es eine Lösung für jedes Problem gibt und dass ich das doch als Wissenschaftler auch untersuchen müsste.

Johannes

Und mein Bürogenosse, der weil echte Arbeit gemacht hat und nicht nur mit Verrückten sich unterhalten hat, hat immer mehr gekichert im Hintergrund.

Johannes

Und diese Diskussion hat sich etwas länger hingezogen als notwendig.

Dominik

Aber hat er dann logarithmische Komplexität, oder?

Johannes

Es gibt auch Probleme mit logarithmischer Komplexität, aber das gibt auch Probleme mit konstanter Komplexität, auch das ist sehr überraschend für viele Leute, dass zum Beispiel Dictionaries O von 1 sind bei den wichtigen Operationen.

Johannes

Auch das überrascht Leute manchmal, wenn man das Szenen beibringt.

Johannes

Und dass man sagt, okay, das Einfügen in ein Dictionary dauert immer konstant lang, egal wie groß das Dictionary ist.

Johannes

Und auch das Raussuchen eines Keys dauert immer gleich länger, egal wie groß das Dictionary ist.

Johannes

Bis auf ein paar Unwägbarkeiten, selbstverständlich, und auch bis auf die Endlichkeit unserer endlichen Computer.

Johannes

Aber im Wesentlichen dauert das immer gleich lang.

Johannes

Und das ist ja schon was Überraschendes, ja.

Johannes

Das Einfügen eines Wertes in ein Dictionary mit einem Schlüssel dauert im Wesentlichen genauso lange wie das Einfügen in ein Dictionary mit einer Milliarde Schlüssel oder zehn Milliarden Schlüssel.

Johannes

Dass es sowas gibt und dass es sowas trivial für uns zugänglich gibt.

Dominik

Aber du wolltest auch die Story hinaus, in der du mit jemandem über die Nicht-Beweisbarkeit.

Johannes

Ja, das ist im Wesentlichen die Story, dass halt jemand versucht hat, mich davon zu überzeugen, dass es die universelle Mathematik gibt.

Johannes

Er hat dann auch irgendwann angefangen von seinen Erfahrungen in Indien zu sprechen, wo er Einblick in das Universum bekommen hatte.

Johannes

Was mich natürlich in unserem 70er Jahre Betonbau im Tübinger Institut für Mathematik relativ wenig beeindruckt hat.

Johannes

Ja, es gibt so Leute, die haben.

Jochen

Das war irgendwie, keine Ahnung, irgendwie Ramanouyan 2 oder so und du hast ihn weggeschickt.

Meine Güte.

Johannes

Ja, das war neue Mathematik und ich habe sie halt verschmäht.

Johannes

Man muss ja auch dazu sagen, ja, Vermars Theorem war ja 400 Jahre lang ungelöst und das ist wesentlich leichter zu beschreiben als P gleich NP.

Johannes

Vielleicht ist da einfach noch nicht genügend Zeit reingeflossen.

Johannes

Vielleicht ist die Mathematik, die wir jetzt haben, einfach wirklich nicht ausreichend.

Johannes

Um diesen Nichtexistenzbeweis zu führen.

Johannes

Und irgendwann kommt sowas ganz Verrücktes um die Ecke, wie Andrew Wiles, ja.

Johannes

Der ja Sachen bewiesen hat, die überhaupt gar nichts damit zu tun haben.

Dominik

Das war jetzt ein, der war ein bisschen zu weit weg für den Podcast, den musst du jetzt wieder herauskommen.

Johannes

Ja, Andrew Wiles ist derjenige, der den Satz von Fermat bewiesen hat.

Johannes

Das Theorem von Fermat.

Johannes

Aber er hat es nicht auf direktem Wege bewiesen, sondern er hat ein ganz anderes Theorem aus einem ganz anderen Bereich der Mathematik bewiesen, wo man allerdings vorher schon wusste, dass es äquivalent ist zum Theorem von Fermat oder dass es das Theorem von Fermat als Teilergebnis enthält, um es mal so zu sagen.

Dominik

Der erste Eintrag auf Google sagt dazu, dass er durch seinen Beweis der Taniyama Shimura-Vermutung berühmt wurde.

Genau, richtig.

Dominik

Ach so, ja, genau.

Dominik

Okay.

Johannes

Ja, und die enthält eben Fermars letztes Theorem als Teilmenge, mehr oder weniger.

Johannes

Also er hat mehr bewiesen als Vermars letztes Theorem, aber dafür ist er bekannt, dafür gibt es auch einen Film über ihn.

Johannes

Und wird uns allen lange im Gedächtnis bleiben dafür.

Johannes

Und so genauso wird es halt auch sein bei P gleich NP, dass sich die Mathematik irgendwo hinmeandert und irgendwann sagt einer halt, oh, Moment mal.

Johannes

Wenn ich da richtig rum drauf schaue, dann sieht man, dass es einen solchen Algorithmus nicht geben kann.

Und zack.

Johannes

In 300 Jahren halt.

Jochen

Tja.

Johannes

Da sind wir vielleicht nicht mehr im Leben.

Jochen

Tja.

Johannes

Je nachdem, wann wir geimpft werden.

Johannes

War das nicht ein schöner Bogen?

Ja, ja, ja, ja, ja.

Johannes

Ja, jetzt haben wir ganz viel über Fails gesprochen.

Johannes

Gibt es denn auch irgendwas, was ihr so richtig, wo ihr so richtig sagen würdet, das hat funktioniert bei euch in Projekten?

Johannes

Weil das ist ja was, was schöner ist und was leider nicht so häufig.

Jochen

Also oft, äh, eben ja, ich meine, das hatte ich mir auch schon aufgeschrieben.

Jochen

Also Dicts, ja, so Hashes, diese Art Datenstruktur ist etwas, was man einfach ständig braucht.

Jochen

Und das ist total super.

Jochen

Also wer nur Dicts hat, nur Listen und nur Skalare, da kommt man damit schon sehr, sehr weit.

Jochen

Also wenn man das richtig, also wenn man das wirklich verstanden hat und richtig verwendet, dann ist man da schon, also dann ist man, da ist man schon auf einem echt guten Weg, weil das meiste kriegst du damit halt schon klein.

Ja, und so.

Johannes

Das sumiert auch ganz viele so Techniken, die man sich im Informatikstudium ganz schwer erarbeiten muss mit Bäumen und mit Balancieren und mit Binärsuche und so Zeugs.

Johannes

Das geht da alles weg, weil das einfach jetzt schon drin ist, fertig.

Jochen

Ja, und das ist halt total nett.

Jochen

Also das würde ich sagen, ist ein großer Win.

Jochen

Das ist halt bei, ich meine, bei diversen unterschiedlichen Programmiersprachen ist es halt sozusagen das Basiskonzept, das eingebaut zu haben und dann damit schnell zum Ziel zu kommen.

Jochen

Das ist bei PHP so, das ist bei Pearl so, Ruby und Rails eben Python.

Jochen

Ich bin dann halt bei Python hängen geblieben.

Jochen

Ich würde sagen, ja, Ruby on Rails ist auch eine gültige, gültige Programmiersprachenlösung, wann hängen bleibt.

Auch ein Win.

Jochen

Vielleicht auch Pearl 6, das habe ich wieder nicht mehr angeguckt, keine Ahnung.

Jochen

Aber gibt

Johannes

es das schon, das ist schon raus.

Jochen

Das ist schon raus, tatsächlich, ja, ja.

Jochen

Aber genau, also so und ja, das ist toll, das ist den allen gemeinsam und das funktioniert wirklich ganz gut.

Johannes

Hast du auch konkrete Kriegsgeschichten, Jörn?

Johannes

Also ich meine, wir haben alle konkrete Geschichten, wie wir schon mal eine Datenbank gelöscht haben und wie wir schon mal.

Jochen

Ein Win, ja, so Winn.

Jochen

Ja, doch, vielleicht auch Python tatsächlich ein wenig beachtetes Modul aus einem total uninteressanten Spiralarm der Standardbibliothek, über das ich mal überhin gestolpert bin, hat irgendwie unerwartete Vorteile gehabt.

Jochen

Und zwar das Array-Modul.

Jochen

Ich weiß nicht, ob euch das versagt.

Johannes

Da habe ich tatsächlich heute drüber nachgedacht, ob das überhaupt was ist, was man je braucht.

Jochen

Ja, denkt man eigentlich, so braucht man nicht unbedingt, aber tatsächlich, ich habe es mal verwendet und das war ein ziemlicher, oder ich fand es zwar ein Win.

Jochen

Und zwar hatte ich das Problem, irgendwie, ja, ich habe ja schon lange irgendwie so auch so Textklassifikationsgeschichten und so Machine Learning mit Text und ganz am Anfang gab es da noch keine Bibliotheken, dann haben wir das alles selber gemacht und irgendwie unsere auf durch den Schnee, genau.

Jochen

Aber inzwischen gibt es ja Cycled Learn.

Jochen

Und das habe ich auch verwendet.

Jochen

Das habe ich vor allen Dingen in so Kagel Competitions verwendet.

Jochen

Also das sind so Machine Learning Wettbewerbs-Dinger.

Jochen

Aber ich hatte halt nicht so viele Hauptspeicher.

Jochen

Und das Ding hat halt, ist relativ verschwenderisch mit dem Hauptspeicher umgegangen, weil da wurde halt, also du zerlegst halt Texte in ja, also was du eigentlich haben möchtest, sind Vektoren, die so einen Text beschreiben.

Jochen

Und zwar, wo du halt in pro Wort eine Dimension hast und dann in der Dimension hast du halt ein Gewicht für dieses Wort stehen, das angibt, wie wichtig dieses Wort in einem Text ist.

Jochen

Und dafür musst du die ganzen Worte zählen und so.

Jochen

Und ScikitLearn hat diese Zählgeschichten, also der heißt das Ding halt Count Vectorizer oder Vectorizer allgemein für diesen Text irgendwie in so einen Vektor verwandeln, hat da erst Listen draus gemacht und dann halt auch die ganzen Counts und so in Listen gehalten.

Jochen

Und Listen sind halt nicht so richtig.

Johannes

Dass er prinzipiell nicht so blöd ist.

Jochen

Prinzipiell nicht so blöd funktioniert, ist auch alles praktisch.

Jochen

Du musst dir halt nicht vorher überlegen, okay, wie lange ist denn jetzt mein Text, sondern kannst halt einfach, weil du fügst halt einfach Listen ein, das geht.

Der Nachteil dabei ist halt auch eine einfache Zahl, wie so ein Count, braucht halt irgendwie irgendwas um die, also ich weiß nicht, irgendwas 20 Byte, etwas über 20 Byte integer sind groß.

Und das ist halt.

Johannes

Listen auch, Listen haben wir auch nochmal Overhead.

Jochen

Wir haben nochmal ein bisschen Overhead, also es ist deutlich mehr, als du brauchen würdest, wenn du jetzt einfach nur den natten Zahlenwert als Byte, 4-Byte-Integer oder so halt hättest.

Jochen

So 32-Bit oder 64-Bit, wie auch immer.

Jochen

Ja, und bei mir ist der Haupt, mir ist der Hauptspeicher halt tatsächlich bei dieser Competition halt ausgegangen.

Jochen

Und ich dachte mir so, ah, okay, kriege ich das irgendwie gedrückt.

Jochen

Und da bin ich dann halt über dieses Array-Modul gestolpert.

Jochen

Und ja, das hat tatsächlich funktioniert.

Jochen

Und zwar kann man ja einfach statt einer Liste so ein Array nehmen.

Jochen

Und dann braucht das tatsächlich nur noch so viele Speicher, wie da halt das Integer, was man da speichert, halt an Platz braucht.

Jochen

Und das ließ sich relativ problemlos austauschen und das hat halt irgendwie so den Speicherbedarf gedrittelt ungefähr.

Jochen

Und genau, ich habe damals halt dann, ich habe das, dass das geht, habe ich irgendwann halt in dieser, glaube ich, Predikt Close Open Questions in Stack Overflow Competition, habe ich das irgendwie gesehen und dann habe ich irgendwann mal einen PA so ein Pull-Request rausgemacht, das war dann aber ein bisschen später, irgendwann 2015 oder so.

Jochen

Das ist auch tatsächlich durchgegangen und seitdem braucht halt TF-EDF-Vectorizer und so, braucht halt nur noch ein Drittelhauptspeicher und man kann halt damit größere und das ist auch, das ist halt vor allen Dingen deswegen einfach so durchgegangen, weil ich eben, weil man eben nichts installieren musste oder nichts Kompliziertes machen musste, sondern man konnte einfach das stinknormale Array-Modul aus der Standardbibliothek nehmen.

Johannes

Das ist einfach ein anderer Konstruktor, den du aufgerufen hast.

Jochen

Ja, also der Code hat sich dann auch nochmal an ein paar Stellen geändert, aber ja.

Johannes

Ja, aber das ist natürlich echt das Coole.

Johannes

Auch was echt für die Welt getan sozusagen.

Jochen

Ja, gut, ich weiß nicht, ob das nicht.

Jochen

Für einen kleinen Teil der Welt, aber es ist ein witziges, aber.

Johannes

Das kann man durchaus erwähnen.

Johannes

Das ist echt cool.

Johannes

Um das noch kurz nachzuführen, das Array-Modul ist einfach sozusagen gepackte Listen.

Johannes

Also quasi C-Strucks oder C-Arrays als Python-Bibliothek und sorgen halt dafür, dass man nicht genau diese Listenoperationen hat.

Johannes

Aber dafür hat man halt auch nicht den Listen-Overhead.

Jochen

Ja, es muss halt alles vom gleichen Typ sein, was da drin ist.

Johannes

Die Größe muss bekannt sein.

Jochen

Ja, genau.

Jochen

Das heißt, man muss sich selber darum kümmern, dass man das irgendwie, also die vergrößern sich irgendwie selber, wobei man was aufpassen muss, dass die verdoppelt, glaube ich, den Platz irgendwie dann halt, wenn man das einfach so naiv macht.

Jochen

Man kann das aber auch selber einstellen.

Jochen

Und ich glaube, was da unten drunter liegt, also das, was die Leute dann immer, sie nennen das irgendwie dann Type Memory View oder so, ist es halt einfach sozusagen ein Stück Hauptspeicher mit einem Typ dran.

Jochen

Ja.

Johannes

Ja, das ist witzig.

Johannes

Ich habe tatsächlich auch eine Geschichte, die ist aber sozusagen das Gegenteil von deiner Geschichte.

Dominik

Du musst aber ganz kurz warten, weil da glaube ich ganz super passt zu dieser Frage mit den Listen, die Frage mit den Dicts, weil wir hatten ja kurz darüber gesprochen, dass Dicts so schnell gehen.

Dominik

Und wenn Listen jetzt so cool sind über Array, wie gehen denn Dicks so schnell?

Dominik

Vielleicht da nochmal kurz.

Dominik

Also das wird ja irgendwie implementiert, aber wie funktioniert denn das?

Dominik

Es gibt da ein Table über dieses Dikt und da guckt man einfach drin oder wie macht man das?

Johannes

Ja, da gibt es verschiedene Techniken, aber im Wesentlichen ist so ein Dictionary ja ein sogenannter Hashtable.

Ja, ja.

Johannes

Das ist auch, das gibt es eigentlich in den allermeisten Programmiersprachen, die heißen immer ein kleines bisschen anders.

Johannes

In Java zum Beispiel heißen sie Hash Map.

Johannes

Der Trick ist sozusagen, dass man eine Liste, also man sieht, das Dictionary, ein Dictionary ist ja eine Zuordnung von einem Key-Wert zu einem Value-Wert.

Johannes

Also unter einem bestimmten Key habe ich irgendein Value eingespeichert.

Johannes

So das klassische Modell ist das Telefonbuch.

Johannes

Zum Key Dominic ist deine Telefonnummer eingespeichert und zum Key Jochen ist Jochens Telefonnummer eingespeichert und zum Key Johannes ist meine Telefonnummer eingespeichert.

Johannes

Das ist so das klassische Dictionary, ja, ein Wörterbuch.

Johannes

Zu einem Wort auf Deutsch ist dazu gespeichert, das Wort auf Englisch.

Johannes

Und jeden Eintrag kann es, jeden Key-Eintrag kann es halt nur einmal geben und das Value kann dann irgendwas sein.

Johannes

Das kann eine Liste von Wörtern sein oder kann irgendwas sein.

Johannes

Das spielt erstmal keine Rolle.

Johannes

Jetzt ist ja schon mal, diese Datenstruktur an sich ist ja schon mal schwierig zu visualisieren.

Johannes

Wie würde man sowas speichern?

Johannes

Und die einfachste Liste, sowas zu speichern, ist, dass man sich sozusagen diese Paare speichert.

Johannes

Einfach als Abfolge von Paaren.

Johannes

Das erste, was ich mir gemerkt habe, Dominik ist deine Telefonnummer, also schreibe ich mir auf in meine Liste oben Dominik, Telefonnummer von Dominik.

Johannes

Eins.

Johannes

Und dann kommt der Jochen und dann schreibe ich mir Jochens Namen in meine Liste und schreibe mir halt in meine Liste rein, Jochen, 17.

Johannes

Telefonnummer von Jochen ist 17.

Johannes

Mist, habe ich jetzt deine Telefonnummer verraten.

Johannes

Und dann merke ich mir meine Telefonnummer auch noch.

Johannes

Das heißt, ich schreibe mir in meine Liste, in meine Abfolge von Werten einfach rein, Johannes,42.

Johannes

So, das ist meine Telefonnummer.

Johannes

Und das ist gut, weil das bedeutet, wenn ich eine neue Telefonnummer eintragen möchte, dann ist das ganz einfach.

Johannes

Ich muss nur dieses Paar merken und es als Ende meiner Liste schreiben.

Johannes

Und das ist leicht.

Johannes

Das Herausfinden eines Eintrags ist da aber langsam, weil ich muss von oben nach unten durchgehen.

Johannes

Wenn ich jetzt nach dem Eintrag für Johannes suche, muss ich mir den ersten Eintrag anschauen und sehen, ist das die Telefonnummer, ist das der Name, den ich suche und da steht Dominik, also es ist nicht der Name.

Johannes

Dann suche ich schaue ich mir den zweiten Eintrag an und sage, ist das der Eintrag, den ich suche und da steht Jochen.

Johannes

Und es ist also nicht der Eintrag, den ich suche.

Johannes

Und erst der dritte Eintrag, den ich suche, ist der Eintrag, wo Johannes mit meiner Telefonnummer dabei steht.

Johannes

Das heißt, in diesem Fall, wenn ich das so implementieren würde, diese Datenstruktur, dann wäre die Insertion, also das Einfügen eines Eintrags O von 1, weil es immer gleich lang dauert, allen hinten hinschreiben.

Johannes

Aber das Heraussuchen wäre O von N.

Johannes

Und das ist schlecht.

Johannes

Weil üblicherweise möchte man mindestens genauso oft raussuchen, wie man reinschreibt.

Johannes

Normalerweise sucht man viel mehr raus, als man reinschreibt.

Johannes

Das heißt, wir wollen, dass auch das Heraussuchen O von 1 ist oder zumindest schneller ist.

Und jetzt

Johannes

genau und jetzt kommt die Magie dazu, die magische Zutat sind Hashes.

Johannes

Und zwar, also man kennt Hashes ja üblicherweise aus so einem Bereich, dass man sagt, das ist eine Checksumme oder eine Prüfsumme oder eine Signatur von irgendwas, ja, wo man so einen Schar 1 Hash dann macht und dann kommt eben raus, die Datei hat die Prüfsumme A 17, 12, 21, 16, also irgendwas, ja.

Johannes

Das ist nicht die Art Hash, die man hier verwendet, sondern die Art Hash, die man hier verwendet, ist eine ganz andere Art von Hash, die nicht so eine ganz lange Prüfsumme gibt, sondern die gibt einen Index heraus.

Johannes

Das ist eine spezielle Sorte Hash, die man da verwenden muss, der schnell sein muss und kleine Ergebnisse hat und in konstanter Laufzeit und so weiter.

Johannes

Also ganz viele Sachen, die man da reintut.

Johannes

Ich weiß auch gar nicht genau, was da für ein Hash verwendet wird.

Johannes

So, das heißt, dieses Dictionary, was wir vorher als Liste von Schlüsselwertpaaren hatten, wird jetzt zu einer Liste, die erstmal leer ist.

Johannes

Ich sage mir, okay, ich gehe davon aus, dass ich im Laufe meines Lebens 16 Einträge in mein Telefonbuch speichern möchte.

Johannes

Jetzt kommt der erste Eintrag und der erste Eintrag heißt Dominik,1.

Johannes

Das heißt, der Schlüssel heißt Dominik und der Wert dazu heißt 1.

Johannes

Jetzt nehme ich den Schlüssel und hashe diesen Schlüssel und kriege jetzt als Hash eine Zahl von 0 bis 16 raus.

Johannes

Also eine Zahl in meinem Adressbereich.

Johannes

Jetzt gucke ich in meine bislang leere Liste und sage, da steht noch nichts.

Okay, perfekt.

Johannes

Also schreibe ich da den Dominic rein, also den Wert von Dominik.

Johannes

Das heißt, in meiner Liste steht jetzt ganz viel nix und an einer Stelle steht deine Telefonnummer.

Johannes

Jetzt kommt der zweite Wert.

Johannes

Der zweite Wert für Jochen, ich nehme wieder meinen Hash von Jochen und da steht jetzt halt 10.

Da kommt jetzt 10 raus.

Johannes

Das heißt, in meine Liste schreibe ich jetzt an der Stelle 10 die Telefonnummer von Jochen rein.

Johannes

Bei Dominik sagen wir, er kommt 12 raus.

Johannes

Jetzt schreibe ich Johannes, ich nehme den Hash von Johannes, da kommt 2 raus, also schreibe ich in meine Liste an der Stelle 2 die Telefonnummer von Johannes rein.

Johannes

Wie man sieht, ist das Einfügen in diese Datenstruktur immer noch O von 1, weil es spielt keine Rolle, wie viele Einträge da drin sind.

Johannes

Das dauert immer gleich lang.

Johannes

Ich muss diesen Hash ausrechnen und dann an die Stelle, die mir der Hash gegeben hat, die Zahl reinschreiben.

Johannes

Mindere Details, wie zum Beispiel, dass die Liste voll wird oder dass der Hashtable voll wird oder dass es Kollisionen gibt, die ignorieren wir jetzt.

Johannes

Das sind Implementierungsdetails.

Johannes

Die bleiben dem geneigten Laser als überlegen.

Dominik

Du musst einmal kurz den Space verdoppeln, den man braucht oder sowas.

Johannes

Genau, musst du entweder Space verdoppeln oder musste eine Liste von Werten anlegen oder musste irgendeine Kollisionsstrategie musst du dir überlegen.

Johannes

Und auch eine Größenstrategie musst du dir auch überlegen.

Johannes

Okay, einfügen ist immer noch O von 1.

Johannes

Heraussuchen ist jetzt auch eine andere Operation.

Johannes

Ich sage, ich möchte die Telefonnummer von Jochen wissen.

Johannes

Ich nehme jetzt also den Hash von dem Namen Jochen und kriege raus, die Telefonnummer von Jochen steht in meiner Liste an Stelle 10.

Johannes

Das Haschen dieses Wertes, also die Adresse sozusagen berechnen, wo ich die Telefonnummer gespeichert habe, das ist immer gleich, das dauert immer gleich lang.

Johannes

Und jetzt in diese Liste an der Stelle 10 reingucken, dauert auch immer gleich lang.

Johannes

Und da steht genau die Telefonnummer von Jochen drin.

Johannes

Das heißt, auch das Heraussuchen dauert jetzt O von 1.

Johannes

Und die Magie ist eigentlich, dass man nicht den Schlüssel als Wert da drin hält, sondern man greift über eine Indirektion zu und diese Indirektion ist ein Hash und diese Hash vermischt die Sachen auf eine einheitliche Art und Weise, sodass man eine einheitliche Füllung erreicht und das garantiert uns dann eben diese sogenannte amortisierte Laufzeit von O von 1 im Schnitt.

Johannes

Über lange Zeit dauert jeder Zugriff auf ein Dictionary gleich lang.

Dominik

Ja, das Einzige, was man halt da tatsächlich machen muss, dass wenn man ganz, ganz viele Einträge hat, mehr Speicher für dieses Dikt assoziieren oder so.

Johannes

Genau, also es gibt oft so Situationen, wo es ein Trade-off gibt zwischen Rechenzeit und Speicherplatz.

Johannes

Und auch hier ist es so, wir haben halt ein kleines bisschen Overhead, was Speicherplatz angeht, weil wir immer ein bisschen leere Zellen haben müssen, wobei auch das in den neuen Python-Versionen nicht mehr stimmt.

Johannes

Da haben sie eine bessere Implementierung, die keinen großen Overhead haben drin.

Johannes

Was sehr, was noch beeindruckender ist, was wir uns auch gerne mal genauer anschauen können, wenn du das mal vorbereitest, Jochen.

Jochen

Ja, sich das mal im Detail anzugucken, wäre nicht so uninteressant.

Jochen

Ich hatte jetzt noch im Hinterkopf, dass irgendwie diese Dikt-Implementation in Python, dass das irgendwie so Try-basiert ist oder so.

Jochen

Aber das ist, es kann sein, dass das auch nicht so gut ist.

Ja, die

Johannes

machen halt so Zwischenschritte.

Johannes

Die machen noch so, das ist, glaube ich, auch für alte, diese neue Implementierung ist, glaube ich, pur Array-basiert, soweit ich das weiß, aber ich weiß es nicht genau.

Johannes

Ähm, das sind auch so Implementierungsdetails, weil es halt schneller ist.

Johannes

Weil du noch ein paar Nanosekunden rausholen kannst und weil das eindeutig zur Hot Section gehört von Python, weil das der Code ist, der Python laufen lässt.

Johannes

Dictionaries sind im Wesentlichen der Kleber, der Python zu Python macht.

Johannes

Auch intern, ja, jedes Mal, wenn ich ein Objekt verwende, in anderen Programmiersprachen werden die dann irgendwie kompiliert oder zu Structs gemacht oder zu sonst irgendwas gemacht.

Johannes

In Python ist es halt ein Dictionary mit den Namen von dem, von diesem, von dieser Instanz und fertig.

Johannes

Und auch die lokalen Variablen, ja, die liegen alle in dem Dictionary.

Johannes

Da gibt es keine Speicher-Map und da gibt es keine festzugewiesenen, da gibt es keinen Stack und nichts, sondern.

Johannes

Also Stack gibt es auch noch, aber die lokalen Variablen in einem Frame liegen immer in einem Dictionary drin.

Johannes

Aber deshalb ist die tatsächliche Implementierung hier sehr detailliert und sehr ausgefeilt, weil sich es eben lohnt, hier jede Nanosekunde rauszuholen.

Johannes

Aber die Magie, die drinsteckt, oder der Kerngedanke ist eigentlich, man hasht die Schlüssel und greift dann auf diese mehr oder weniger zufällig gewählte Adresse zu.

Jochen

Ja, also das ist, also die Python-Dikt-Implementation ist halt auch so eine der schnellsten Hash-Implementationen, so die es überhaupt gibt.

Jochen

Und ja, eben weil sie halt auch so wichtig ist.

Jochen

Und das ist auch manchmal dann überraschend, wenn man in anderen Sprachen unterwegs ist oder mit Leuten sich unterhält, die in den anderen.

Jochen

Also ich hatte das auch schon mal, ich wollte das mal irgendwie, ich habe mit einem Python-Dikt angefangen bei irgendeiner Geschichte.

Jochen

Ich weiß jetzt gar nicht mehr genau, was es war.

Jochen

Ich wollte irgendwelche Dinge unique machen, irgendwie riesige Sachen und das war irgendwie zu langsam.

Jochen

Und dann dachte ich so, okay, das muss ich wohl dann doch mal irgendwie in C oder C<unk> oder so neu machen.

Jochen

Und hab das dann in C<unk> versucht.

Jochen

Und hab dann auch angefangen, weil ich dachte, ich mach's jetzt erstmal so wie in Python und dann gucke ich mal, wo ich optimieren kann.

Jochen

Und hab dann halt irgendwie halt Hashmap außer sozusagen, naja, C's nicht, gab es, oder gibt es heute, aber gab es damals nicht so richtig eine Santa Taverie.

Jochen

Boost gab's genau und hab das halt halt so probiert, hab das gematcht, dachte ich so, hä, habe ich irgendwas falsch gemacht.

Jochen

So, irgendwie kann ja nicht sein.

Jochen

War deutlich langsamer als die beiden.

Jochen

Und hab dann also auf Stack Overflow so naiv nachgefragt, so irgendwas mache ich hier falsch, was ist denn da los?

Jochen

Und dann waren die Antworten drauf aber eher nicht so ermutigend weiterzumachen in die Richtung, sondern dann hieß es so, ja, ach so, ja, ein Boost, ja, ja, unsere Hashmap-Implementation.

Jochen

Ja, das ist eigentlich noch gar keine richtige Hash.

Jochen

Das ist nicht so richtig Hash, das ist eher so eher so, wir holen die Dinger so per binäre Suche da raus und dann, das klar, deswegen dauert es dann natürlich schon ein bisschen länger.

Jochen

So, okay, Moment, aber das ist so eine Datenstruktur, die man dauernd verwendet.

Jochen

Ja, wie, äh, was?

Jochen

Und ja, das geht auch schneller.

Jochen

Ja, da musst du nur dann irgendwie, keine Ahnung, hier von SGI gibt es da irgendwie Header, die du irgendwie reinnehmen kannst und dann musst du nur sagen, dass du das als Hashfunktion und dann geht's schneller.

Jochen

So, vielleicht auch nicht.

Jochen

Mal gucken, ich glaube, das sollte anders machen.

Dominik

Python nimmt oder so.

Ja.

Jochen

Aber das ist ja.

Jochen

Da ist Python wirklich stark.

Jochen

Also das ist ja.

Johannes

Ja, aber es ist halt auch einfach wichtig.

Johannes

Es gibt so Späße, wo man jede Programmiersprache beschreibt als eine Kerneigenschaft.

Johannes

So eine Liste, die ich mal gesehen habe, war eben jede Programmiersprache beschrieben als What if everything was an.

Johannes

Und da war zum Beispiel C, What if everything is a pointer und Java is what if everything is a pattern?

Johannes

Under Python war halt, what if everything is a dictionary?

Johannes

Und das ist schon so.

Johannes

Es ist einfach alles ein Dictionary und wenn man irgendein Problem mit Dictionaries lösen kann, dann ist das sehr gut.

Johannes

Um aber nochmal direkt zurück zu kommen, auch das Dictionary is eine schöne Überleitung zu meinem Win, den ich mal had in einem Projekt.

Johannes

War tatsächlich das erste richtig große kommerzielle Projekt, wo ich mitgewirkt habe.

Johannes

Wo ich alleine mitgewirkt habe, muss man so zu sagen.

Johannes

War auch Webshop und wir mussten da die Produkte aus einer API holen.

Johannes

Und wir hatten sehr genaue Vorgaben.

Johannes

Es waren Modeprodukte.

Johannes

Wir hatten sehr genaue Vorgaben, wie lange wir sozusagen die Daten, die wir haben, cachen dürfen, wie alt unsere Daten sein dürfen.

Johannes

Weil da gibt es ja Probleme mit Verfügbarkeit und mit Preisen, die sich dann auch ändern.

Johannes

Also wir mussten einfach einhalten, dass wir maximal fünf Minuten alte Daten anzeigen dürften.

Johannes

Was Preise und Verfügbarkeit angeht.

Johannes

Und Produkteigenschaften auch, weil die dann oft dann halt im Betrieb eine Charge ersetzt haben durch eine andere.

Johannes

Also wenn halt die Hose von dem einen Hersteller durch war und die Hose vom anderen Hersteller noch nicht durch war, dann hat sich halt der Preis verändert oder das Material oder was weiß ich.

Johannes

Wir durften einfach nichts anzeigen, was älter ist als fünf Minuten.

Johannes

Und wir hatten aber das Problem, dass unsere Seite super langsam war, weil wir für jede Produktseite, für jede unserer Seiten mussten wir ungefähr 20 Produkte laden.

Johannes

Das heißt, wir mussten 20 API-Aufrufe machen und das war damals, als es noch kein Async gab.

Johannes

Das heißt, wir mussten die mehr oder weniger seriell machen.

Johannes

Und wir hatten halt furchtbar schlechte Zeiten.

Johannes

Also die API, die wir benutzt haben, war super schnell.

Johannes

Die hat nur so 20 Millisekunden gebraucht pro Aufruf.

Johannes

Aber wenn du 20 von den Aufrufen machst, dann hast du halt direkt 400 Millisekunden verbrannt für nichts.

Johannes

Du hast ja noch nichts selber gemacht.

Johannes

Und wir haben versucht, die Sachen in den Cache zu legen und das hat auch nicht so richtig funktioniert.

Johannes

Und irgendwann ist uns aufgefallen, dass wir tatsächlich genügend Hauptspeicher haben.

Johannes

Wir haben genügend Hauptspeicher, um alle Produkte zu speichern, die wir je anzeigen.

Johannes

Also haben wir das einfach gemacht.

Johannes

Wir haben einfach alle Produktdaten abgerufen und die in den Cache gelegt.

Johannes

Und weil die nicht älter, weil die nicht länger als fünf Minuten da sein dürften, hatten die eine Expiry für fünf Minuten.

Johannes

Und wir haben einfach Background-Jobs laufen lassen, die alle fünf Minuten jedes Produkt refreshed haben.

Johannes

Das heißt, wir hatten einfach, vorher hatten wir eben diese ganzen Aufrufe an die API, die wir ersetzt haben durch Unmengen an unnötigen Aufrufen, die aber dann eben im Ernstfall dafür gesorgt haben, dass die Daten, die wir tatsächlich gebraucht haben, alle schon warm waren.

Johannes

Weil wir, äh, weil halt einer von den Entwicklern, und es war tatsächlich in dem Fall nicht ich, es ist also keine Win-Geschichte für mich, das ist nur eine Win-Geschichte für unser Projekt und für den anderen Entwickler.

Johannes

Weil der halt gesagt hat, okay, wir können ja mal ausrechnen, wie viel Speicher wir verbrauchen.

Johannes

Wir probieren einfach mal aus, alle Produkte zu laden, die wir je haben.

Johannes

Und die haben in den Cache gepasst, in unseren Memcached.

Johannes

Und dann ist natürlich schön schnell, ja, weil dann so ein Memcached-Aufruf, der ist ja.

Johannes

Der dauert nicht so lang.

Johannes

Das heißt, wir konnten da tatsächlich unsere Response-Zeit um ein Vielfaches verbessern.

Johannes

Einfach dadurch, dass wir die ganze Zeit den Cache refreshed haben.

Johannes

Egal ob wir Traffic hatten oder nicht, ja.

Johannes

Es war einfach, dieser Cronjob, der das gemacht hat, lief einfach die ganze Zeit.

Johannes

Alle fünf Minuten hat der alle Produkte einmal durchgepinkt.

Jochen

Ja, das erinnere mich.

Jochen

Das ist auch etwas, also man unterschätzt oft, wie viele Hauptspeicher man tatsächlich zur Verfügung hat und was man dann mit allen tollen Dingen alles so tun kann.

Jochen

Und dass man oft einfach Sachen brutal erschlagen kann mit irgendwie Hauptspeicher oder ja, und genau, das macht ja auch so ähnliche Geschichten zum Beispiel.

Jochen

Also was mich schon mehrfach gebissen hat, das ist eher so ein Thema für generell, das ist eher so ein bisschen auf der Fail-Seite, man muss aufpassen, so Feilsysteme.

Jochen

Vor allen Dingen, wenn man Falsysteme benutzt, irgendwie und da rein oder draus liest und schreibt, gleichzeitig und zwar von vielen Rechnern aus und dann so verteilte Dateisysteme, also du hast halt eigentlich nur ein Fallsystem auf dem Server und viele lesen und schreiben davon.

Jochen

Nicht so gut, also vielleicht so zu Hause oder in einem kleinen Büro gute Idee, irgendwie schön, so internetmäßig oft nicht so eine richtig geile Idee, weil funktioniert nicht gut.

Jochen

Und dass da hatten wir auch mal echt böse Probleme mit, naja, also Webseite mit ganz vielen unterschiedlichen Bildgrößen für Produkte, aber halt auch relativ viele, also so zig Millionen und ja, das muss man dann schon irgendwie auf der Platte liegen haben, weil es einfach zu viel Zeug ist und naja jetzt muss man das alles umrechnen und jetzt hat man das Problem, dass man zum Beispiel irgendwie neue Bilder anzeigen muss, weil es gab irg

Jochen

endwie eine Abmahnung, weil irgendwie jemand in einem Webshop einfach irgendwie Bilder von der Herstellerseite geklaut hat oder so, die er nicht verwenden durfte und dann wird er vom Hersteller abgemahnt und dann muss das ganz schnell wieder verschwinden.

Jochen

Und dann kann man das auch verschwinden lassen.

Jochen

Aber, also das Verschwinden lassen geht noch, aber dann die neuen Bilder stattdessen anzeigen, geht nicht so richtig, weil die müssen ja neu gerechnet werden.

Jochen

Und die Que von Neuberechnungsjobs ist jetzt so zwei Wochen lang.

Jochen

Also es dauert dann irgendwie so zwei Wochen von irgendwie, es kommt ein neues Bild rein und es ist in den wichtigen Bildung.

Johannes

Priorisierungen gehabt für Jochen.

Jochen

Ja, das hätte man dann natürlich machen können.

Jochen

Also man hat sich da natürlich so Dinge überlegt, ja, kann man das nicht irgendwie priorisieren oder kann man nicht irgendwie sagen, okay, man macht da irgendwie andere komplizierte Geschichten, man macht die Berechnung woanders und kopiert es dann hinterher Batchmess jemand rüber.

Jochen

Also es wurde in viele Richtungen überlegt, auch in solche Richtungen wie, was für Blockgrößen bei der Übertragung per NFS sind denn jetzt die optimalen und nimmt man jetzt UDP oder TCP und diese ganzen Geschichten und da haben Leute irgendwie lange dran rum überlegt, wie man das alles optimieren kann und Sachen ausprobiert und getestet.

Jochen

Es hat lange gedauert und es war ein ständiger Schmerz, bis dann auch irgendjemand, auch nicht ich, tatsächlich sehr guter Entwickler auf die Idee kam, wie viele, also ja, okay, das sind viele Bilder und so, aber wie viele von den Bildern zeigen wir eigentlich so an?

Jochen

Wenn ich jetzt durch die Loks, durch die Serverloks gehe, wie viel von dem Kram wird denn tatsächlich da draußen angezeigt?

Jochen

Und das waren dann gar nicht mehr so viele, das waren dann nicht mehr zig Millionen, sondern das war dann halt nur noch ein kleiner Teil davon.

Jochen

Und dann war halt die Überlegung, okay, kann man das vielleicht nicht auch alles einfach on demand machen und dann halt den heißen Teil der Bilder einfach im Hauptspeicher cachen.

Jochen

Und das ging dann und das war dann, und dann dieses System umzudrehen und dann zu sagen, okay, wir brauchen das nicht irgendwie fertig, irgendwo liegen zu haben, sondern wir übergeben die Größe, die wir gerne hätten, einfach nur als Parameter in der URL für das Bild mit und cachen dann.

Jochen

Das war dann halt so, das hat gar nicht lange gedauert, das umzustellen und das System hinterher war sackschnell und man konnte alles quasi on demand ändern, Blacklisten, Whitelisten, alles kein Problem.

Jochen

Und es war so, und danach war dieses Problem gelöst und vorher hatten da wirklich viele Leute lange dran rumgetüftelt, dass irgendwie diese, den eigentlich den blöden Ansatz halt sozusagen irgendwie zum Laufen zu bringen, der aber einfach nur falsch war.

Jochen

Und deswegen hat es halt nicht funktioniert.

Johannes

Und dann hat man am Ende mehr Features und eine einfachere Implementierung und es ist schneller.

Ja.

Also ich habe so das Gefühl, so an diesem zweiten Schritt bei der Feynman-Lösung, dieser zweite Schritt, da ist enormes Potenzial.

Jochen

Das ist irgendwie so.

Johannes

Ja, aber das ist doch, als Entwickler macht man sich das doch oft, oder?

Johannes

Also Stunden des Machens ersparender, Minuten des Nachdenkens, das ist schon oft so.

Jochen

Ja, ja, natürlich.

Dominik

Tja, wenn man, aber wirst du wo man nachdenken soll.

Johannes

Ja, aber manchmal ist es auch wirklich so, dieses Größenordnungenüberdenken.

Johannes

Das ist für mich auch manchmal so eine Live-Lesson.

Johannes

Wir hatten bei unserem ersten Kind, haben wir zwei Fläschchen gehabt, mit denen wir dann jede Nacht die Milch gemacht haben.

Johannes

Und das heißt halt, dass du ständig daran dabei bist, diese Fläschchen zu spülen.

Johannes

Weil wenn eine, wenn du eine aufgebraucht hast, dann hast du nur noch eine.

Johannes

Und ich bin dann halt irgendwann mal hier zu einem Supermarkt gegangen und hab einfach zehn solcher Fläschchen gekauft.

Johannes

Das hat einen überschaubaren Geldvertrag gekostet.

Johannes

Die kosten glaube ich zwei Euro Stück oder so.

Johannes

Also es war, oder 2,50, ja.

Es ist wirklich egal.

Johannes

Und dann kannst du halt in einer Nacht fünf Fläschchen verbrauchen oder sechs oder sieben oder acht und am nächsten Tag stellst du es in die Spülmaschine und bist fertig.

Johannes

Einfach mal so Größenordnungen überdenken, man darf da, das ist eine sehr mächtige Sache und viel hilft.

Johannes

Ja, es ist wirklich so.

Johannes

Viel hilft halt manchmal einfach viel und kostet aber gar nicht so viel.

Johannes

Und man hantiert oft mit solchen Limits rum, die völlig zufällig gewählt sind, aber an denen man dann so im Kopf rumhängt.

Johannes

Die man eigentlich einfach mal überdenken müsste.

Johannes

Also die man einfach mal genauer anschauen müsste, ob das wirklich sinnvolle Limits sind und ob man vielleicht irgendwas verändern kann, sodass man nicht an diesem Limit hängt.

Johannes

Und die simpelste Möglichkeit ist halt vertikale Skalierung, ja, mehr Hardware kaufen.

Dominik

Weniger schlafen.

Johannes

Im Falle der Fläschchen hat es.

Johannes

Ja, und das hat dann auch direkt zu mehr Schlafen geführt.

Johannes

Wenn du weniger Verwaltungsaufwand hast, ist

Dominik

Ja, noch so eine Sache, bei so endlichen Ressourcen, ne?

Johannes

Ja, aber so diese Zahl, auf die man sich irgendwann mal festgelegt hat, die ist ja nicht in Stein gemeißelt.

Johannes

Und die ist weder bei Hauptspeichern in Stein gemeißelt noch bei der Anzahl der Utensilien, die man so hat.

Dominik

Naja, glücklicherweise kann man auf die meisten Maschinen noch ein bisschen mehr Speicher oder sowas werfen, ne?

Dominik

Oder halt mehr Fläschchen einfach so in einem Supermarkt kaufen.

Dominik

Das ist ja immer die Probleme kommen ja tatsächlich erst immer dann, wirklich zum Tragen, wenn es halt diese Restriktionen gibt, dass du halt dann dir Konkurrenz hast für irgendwelche Prozesse oder sowas.

Dominik

Dann wird es erst nervig, ja.

Johannes

Wenn du an die Grenzen kommst, aber bis du da hinkommst, gibt es oft Lösungen, die überraschend simpel sind und doch nicht so schlecht.

Johannes

Und ich meine, Hauptspeicher, es gibt halt Maschinen, die 6TB Hauptspeicher haben können.

Also ich habe Hauptscheme gehabt.

Dominik

Das ist natürlich schon, also 6TB Hauptspeicher.

Johannes

Ja, kostet schon 100.000 Dollar oder 200.000 Dollar, aber bei der Problemgröße, also ein Cluster mit 100 Nodes kostet mehr als 10.000 Dollar.

Jochen

Ja, ja.

Johannes

Deshalb manchmal lohnt sich das über solche Größenordnungen einfach mal nachzudenken.

Johannes

Und ja, das würde ich auf jeden Fall als Win bezeichnen.

Johannes

Das ist ein ganz klarer Win, sowas zu überdenken und so eine Hürde zu überkommen.

Ich habe mir irgendwann einfach mal 50 Paar identische Socken gekauft und seither keine Socken mehr gefaltet, weil lauter identische Socken da drin.

Johannes

Und wenn die leer, wenn die Wäsche ist, dann ist die Schublade wieder voll.

Johannes

Und wenn einer kaputt geht, dann schmeiße ich ihn weg und dann habe ich immer noch 49,5 Paar identische Socken.

Ja, ja, sehr gut.

Johannes

Das ist eine triviale Sache, aber es ist einfach einmal über so eine Größenordnung nachgedacht und bemerkt, dass die Grenze, die man sich selber gesetzt hat, völlig

arbiträr ist.

Dominik

Nicht kleckern klotzen, bigger is better und so weiter.

Genau.

Johannes

Und wenn man irgendein Problem hat, was man eine Hauptspeicher kriegt, ja, warum nicht?

Johannes

Oder wenn man es so trimmen kann, dass man es einen Hauptspeicher kriegt, noch besser.

Dominik

Also das ist ein Win dazu, okay.

Eindeutig.

Johannes

Und es gibt viele Gelegenheiten für solche Wins, deshalb ist es super.

Johannes

Und die fühlen sich gut an.

Johannes

So ein Win ist eine total tolle Sache.

Ja, wins ja gut.

Jochen

Ja.

Johannes

Ich muss allerdings dazu sagen, als ich die zehn Flächen gekauft habe, habe ich leider die falschen gekauft.

Johannes

Also sie musste dann nochmal hin und die alle zurückgeben und neue kaufen.

Johannes

Also es ist gemischt.

Johannes

Win und Fail zusammen gemischt.

Johannes

Und das ist doch ein schönes Resümee für das Jahr 2020.

Johannes

Das ist doch ein schöner Jahresrückblick.

Johannes

Win und Fail zusammen gemischt in gleich großen Proportionen.

Jochen

Ja.

Jochen

Dieses Jahr war eine Spur zu viel Fail, ehrlich gesagt, so für meinen Geschmack so in der Gesamtsituation.

Jochen

Aber ja, sieht ja leider so aus, als ob das jetzt noch ein Jahr beschäftigt war.

Jochen

Ja, aber ich fand gut, also was ich toll finde an der ganzen Geschichte, ist, dass jetzt alle das mit dem Internet mal so richtig, und das mit den Paketen und so, das geht jetzt alles.

Jochen

Und das ist ab dann denke ich jetzt, ab jetzt ist es halt jetzt.

Dominik

Also es gab doch wahrscheinlich viele coole Sachen auch irgendwie.

Dominik

Also ich weiß nicht, also ja, ja.

Dominik

So ein paar Sachen sind vielleicht gar nicht so schlecht, dass das nicht mal so durch ist.

Dominik

Ja, also das mit dem Homeoffice irgendwie, das ganz so normal ist zum Beispiel.

Dominik

Das ist so eine Sache, die eigentlich schon selbstverständlicher hätte sein können, irgendwie länger.

Dominik

Und die man sich ja auch so immer so dachte.

Johannes

Ja, wobei Jochen und ich, wir leben das ja schon seit Jahren.

Ja, ich auch, übrigens.

Johannes

Herzlich willkommen in unserem.

Dominik

Das meine ich ja, genau.

Dominik

Und da merkt man mal, was für Vorteile das hat oder auch für Herausforderungen und dass es nicht mehr darum geht, dass man nur nichts machen will oder so.

Ja.

Dominik

Ja, und es gibt noch so ein paar andere gute Sachen.

Dominik

Also so ein paar Menschen sind nicht wieder gewählt worden oder so, das gab es ja auch und

Johannes

noch ist er nicht weg.

Ja.

Johannes

Ich habe tatsächlich im März noch mit einer Firma gesprochen, die hatten immer In-house-Entwicklung.

Johannes

Und die haben dann aber umgestellt auf Homeoffice, hatten 3000 Entwickler, die dann plötzlich im Homeoffice waren.

Johannes

Und weil das alles sicherheitskritisch war, war das alles mit Remote-Desktop und so.

Johannes

Die hatten aber nur Remote-Desktop-Kapazitäten für 1000 Anwender.

Johannes

Also die hatten einfach nur 1000 Desktops, diese Remote zur Verfügung stellen konnten.

Johannes

Und haben dann relativ schnell gemerkt, dass da irgendwas nicht geht.

Tja.

Johannes

Und mussten dann so ein kleines bisschen nachziehen.

Johannes

Also auch der Übergang war da nicht immer ganz flüssig.

Jochen

Nö, also das hat man auch, aber ich ehrlich gesagt, mich hat es überrascht, wie wenig das dann, also jemals, klar, also ihr gab da natürlich Probleme und so, also das hat dann auch, also ab und zu ging dann halt auch mal irgendwas wirklich nicht oder so, aber ich hätte jetzt erwartet, also wenn mir gesagt hätte, so also in einem Umfeld, wo Remote nicht üblich war, machen das jetzt alle irgendwie 100 Prozent die ganze Zeit und es muss halt einfach alles darüber funktionieren.

Jochen

Hätte ich gedacht so, so oh mein Gott, das gibt eine Katastrophe und es ist.

Das dauert Jahre.

Jochen

Das dauert Jahre und das ist alles ganz schrecklich.

Jochen

Und wenn man das, wenn man das als Projekt geplant hätte, ne, so, dann hätte dann hätte jemand gesagt, okay, das müssen wir Jahre.

Jochen

Das geht auch tatsächlich hätte es aber nicht Jahre gedauert, sondern weil es wirklich nötig war, ging es dann halt irgendwie doch und es ging auch relativ schnell und es hat zwar auch böse gefällt ab und zu, aber.

Dominik

Ja, zum Beispiel die Schulen oder sowas, ne, das ist ja auch ein Riesenproblem, aber das wird halt einfach jetzt rapide, schneller, besser.

Dominik

Und das brauchen wir ja wahrscheinlich, wenn wir irgendwie sowas wie die Zukunft irgendwann mal besser machen wollen, auch irgendwie.

Dominik

Dass halt, da sind so ein paar Dinge, die halt dann doch schneller funktionieren.

Dominik

Oder dass so ein Impfstoff so schnell entwickelt werden kann und so, ne?

Dominik

Und wie viele Leute da auf einmal doch kollaborativ arbeiten können.

Alles nicht so schlecht.

Dominik

Und dass man entdeckt hat, dass China nicht wirklich vertrauenswürdig ist.

Also gar nicht so schlechte Dinge.

Johannes

Ja, ha, sowas.

Johannes

Ich habe vor kurzem den Traffic von einem niederländischen ISP gesehen.

Johannes

Die hatten so eine Zusammenfassung, war auf Twitter.

Johannes

Und die haben Traffic-Spitzen zu jeder vollen Stunde zu den Bürozeiten.

Ja, ja.

Johannes

Weil da die Videomeetings anfangen.

Johannes

Und die dauern halt unterschiedlich lang und das ist quasi jede Stunde ist ein so ein Peak und das fällt dann bis zur nächsten Stunde wieder so ab.

Dominik

Sehr schön.

Johannes

Und in der Mittagspause sieht man eben, dass dieser Peak nicht da ist, weil um zwölf eben keine Meetings anfangen.

Johannes

Und es ist sehr, sehr schön.

Ja, ja, ja.

Ja, auch noch so eine Sache.

Dominik

Ja, dass die alle darauf aufmerksam haben, dass man die Kapazitäten da ernsthaft ausbauen muss, vielleicht auch.

Dominik

Also endgültig, das wusste man ja eigentlich schon so, aber ne, so diese Notwendigkeit.

Dominik

Und ja, es gab ein paar schöne Sachen gab es ja auch dieses Jahr.

Jochen

Ja.

Selbstverständlich.

Johannes

Corona-Kekse, ich meine.

Jochen

Ich habe die ja letztens, hat man das eigentlich gesehen.

Jochen

Ich habe die ja auch dann verlinkt, ob man das kaputt will.

Ja.

Johannes

Also da ist so wenig Traffic drauf, dass man nicht sieht, dass es individuelle Ereignisse gibt, aber vielleicht, wir können uns das jetzt als an alle Hörer als Vorsatz nehmen, dass ihr mal einen Traffic-Spike in meine.

Dominik

Du meinst, ist es noch jemand dabei, jetzt um diese Zeit bringt.

Johannes

Ja, selbstverständlich.

Johannes

Also ich meine, wir haben noch nicht mal die zwei Stunden überschritten.

Okay.

Jochen

Ja, was ich jetzt, also ich habe jetzt, ich mal in letzter Zeit, ich habe ja ein bisschen Zeit irgendwie auch auf Statistiken geguckt.

Und was ich schon überraschen fand, jetzt auch gerade zu Weihnachten hast man natürlich einen Einbruch, aber es gibt immer noch irgendwie pro Tag, weiß ich nicht, allein auf Spotify 25 Leute, die sich das zu Weihnachten angehört haben, wo ich dachte, so, ähm, habt ihr eigentlich ehrlich gesagt, also ich meine, naja, also gerade sein.

Jochen

Ja, aber naja.

Johannes

Also ich habe alle Episoden vom Python-Podcast nachgehört gleichzeitig.

Johannes

Selbstverständlich.

Johannes

Hatte ich ja nicht mal Zeit dafür.

Ich weiß auch, woher die 25 kriegt herkommt.

Johannes

26 waren es ja, weil das waren ja 26 Episoden.

Die eine

Dominik

Episode hast du schon gehört.

Johannes

Ja, die erste, die Einführung.

Johannes

Nee, aber das ist doch immer, es gibt doch immer.

Johannes

Also ich meine, ja, an Weihnachten hat man Zeit, die Sachen zu machen, die man sonst nicht macht.

Ja.

Jochen

Ja, naja, diesmal war ein bisschen unentspannt, ehrlich gesagt.

Johannes

Ja, fandest du ja?

Dominik

Also ich habe schon am Tag vorher acht Stunden Suppe gekocht und Soße.

Jochen

Also so prinzipiell, nee, war alles war alles total super, aber es war einfach eine völlig andere Situation als normalerweise, weil irgendwie Teile der Familie so irgendwie gar nicht mehr.

Johannes

Ja, gut, also es war zu Hause Weihnachten.

Jochen

Ja.

Johannes

Aber das ist doch nicht unentspannt.

Johannes

Zum Teil sogar viel entspannter.

Johannes

Also ich fand es viel entspannter.

Johannes

Wir hatten längst nicht so viel hin und her gefahren und längst nicht so viel hin und her transportiere.

Gut, klar, die Kinder sind die ganze Zeit da und unbeschäftigt, aber mit genügend großen Lego-Packungen kriegt man auch wirklich ein Problem in den Griff.

Johannes

Ja, wir haben leider die klassischen Fehler gemacht und haben nicht bemerkt, nicht vorher geguckt, dass diese Lego-Packungen, die wir gekauft hätten, Batterien brauchen.

Oh.

Johannes

Ja, und es ist halt blöd, wenn die Lokomotive nicht fährt, weil keine Batterien da.

Dominik

Und wenn Prime nicht liefert, Same Day Delivery an Weihnachten, dann muss man verschämt halt.

Johannes

Ja, also das ist ja gar nicht.

Johannes

Und da habe ich dann eigentlich gedacht, eigentlich müsste man, das ist auch so eine Sache, müsste man eigentlich am ersten Weihnachtsfeiertag einfach mit so einem Korbvoll Batterien rumgehen und die von Haustür zu Haustür verkaufen, weil bin da sicherlich nicht der Einzige, der Batterien in den Geschenken vergessen hat.

Jochen

Eine gute Idee, aber das Problem ist irgendwie die Marge.

Jochen

Distribution.

Dominik

Du brauchst ja so fliegende Drohne, die sagen.

Johannes

Du kaufst eine Batterie für 5 Euro ein Stück an Weihnachten zahlen die Leute.

Dominik

Und wenn die Drohne weiterfliegen muss, dann musst du einfach die Drohne sich nur selber noch eine Batterie zusätzlich reinstecken und dann kriegt man das nicht mehr.

Ja, genau.

Johannes

Die hat sehr große Reichweite, diese Drohne, theoretisch gesehen.

Ja.

Dominik

Auch ein Wind übrigens.

Dominik

Ja, ruhige Weihnachten war für einige Leute vielleicht mehr Wind, für einige Leute weniger Wind.

Dominik

Ja, ich hoffe, dass ihr auch eure zu Hause da alle gemeinsam noch irgendwas davon hattet und es euch gut geht.

Ist ja wichtig, ne?

Johannes

Jetzt kommen ja bald noch ruhige Silvester.

Johannes

Das erste Mal richtig ruhiges Silvester.

Glaubst du dran?

Johannes

Da bin ich auch gespannt, ob das wie das.

Also eine Knalle vorher, nachher wird wie immer sein.

Und sonst.

Dominik

Ja, das wird halt genau um die zwei Minuten vor Nachmittagnacht wird wahrscheinlich nicht so laut sein wie sonst.

Johannes

Ja, eben, das meine ich ja.

Feuerwerk ist nicht im Verkauf und das wird schon.

Jochen

Tja, wollen wir noch irgendwelche Dinge picken oder sowas?

Dominik

Standardlib?

Jochen

Oder irgendein Modul aus Standard-Lib besprechen?

Johannes

Oh, ich weiß eins, ich weiß eins.

Johannes

Array.array.

Ich wollte auch

gerade Array sagen.

Dominik

Du wirst gemeint, was man mit meinem Picke klaut ist.

Dominik

Das sieht mir jedes Mal.

Jochen

Ja, stimmt, das ist ein sehr schönes Modul.

Johannes

Wir picken das jetzt einfach an.

Johannes

Warte mal, ich muss auch mal Standard-Lib aufmachen.

Johannes

Vielleicht finde ich auch was.

Jochen

Ja, also im Grunde kriegt man dann natürlich genau das gleiche, was man jetzt auch mit einem NumPy-Array oder so kriegen würde, aber halt in Situationen, wo man NumPy nicht importieren will oder nicht voraussetzen will, ist das halt eine.

Jochen

Wenn man die ganzen anderen Dinge, die NumPy-Arrays so können, nicht braucht, gute Alternative.

Johannes

Ja, und auch schon zehn Jahre vorher, oder?

Johannes

Also dieses Array.array gibt es ja schon immer.

Johannes

NumPy gibt es ja noch nicht schon immer.

Jochen

Ja, ja, aber ich weiß nicht genau, wann das dazugekommen ist.

Jochen

Ja, ob das vor NumPy war, weiß ich nicht.

Jochen

Aber ja, aber es ist schon alles relativ ewig, ja.

Johannes

Ich möchte was anderes hervorheben, was so ähnlich ist, was auch in diese Kerbe schlägt und das ist das Struct-Modul.

Johannes

Habt ihr das schon mal gesehen?

Johannes

Das ist quasi ein Modul, was es einem erlaubt, C-Type Structures zu zerlegen.

Johannes

Also man gibt da einen sogenannten Formatstring an.

Johannes

Es ist ein bisschen ein Gefitzel, diesen Formatstring zu bauen oder den zu wissen.

Johannes

Aber dieser Formatstring erlaubt es einem dann sozusagen Structs, so wie sie in C vorkommen, zu lesen und zu schreiben.

Johannes

Und die sind natürlich auf Bit-Ebene gepackt.

Johannes

Also wenn man da eben die Werte mit den entsprechenden Bitlängen hat, die sind sehr dicht und sehr eng gepackt.

Johannes

Und man braucht es manchmal, wenn man Formate liest, die eben eng gepackt sind.

Johannes

Also Bitmap zum Beispiel ist so ein Format, das ist relativ simpel zu parsen in C, weil es im Wesentlichen, wenn man die Structs kennt, kann man das im Wesentlichen einfach reinladen.

Johannes

Und es ist in Python ein bisschen schwieriger zu verarbeiten, aber mit dem Struct-Modul auch nicht.

Johannes

Weil man da eben nur die entsprechenden Formate wissen muss und die entsprechenden Formate eintragen muss.

Johannes

Und das Struct-Modul zerlegt einen, die dann in Python-Werte und umgekehrt auch, wenn man die schreiben möchte, schreibt sie auch in Python-Werte.

Johannes

Ist super gut, wenn man Daten eng gepackt haben möchte oder bereits vorliegen hat, um solche Sachen, die eben in C sehr leicht sind, auseinanderzupacken und in Python-Werte umzuwandeln.

Johannes

Ja, braucht man nicht super häufig, aber wenn man es braucht, ist es super gut, ja.

Jochen

Also ich habe es tatsächlich auch nie so wirklich super häufig, aber wir haben es auch einmal an der Stelle gebraucht.

Jochen

Was man zum Beispiel machen kann, ist, man baut halt sozusagen die Datenstrukturen, die man in einer anderen Bibliothek dann verwenden möchte.

Jochen

Also man hat zum Beispiel irgendeine C-Bibliothek, die irgendwas macht.

Jochen

In unserem Fall war das halt lippe-linear, das war halt so eine Bibliothek zum Lösen von so Support-Vektormaschinen, Geschichten, lineare Support-Vektormaschinen.

Jochen

Und normalerweise gibst du den Trainingsdaten und so halt in Form von, und halt auch die Sachen, die du nachher klassifizieren willst, in Form von so Textfiles, wo das dann mit Doppelpunkt getrennt ist und Kommas und so weiß ich.

Jochen

Aber das ist halt alles Mist, weil Textfiles zu parsen, das ist halt alles, dauert alles lange und das geht alles nicht toll.

Jochen

Aber dann kannst du halt das aber in dem Format, in dem das, das war zum Glück sehr simpel, wie die Bibliothek halt die Daten halt selber dann, also das Zielformat, in das sie die Sachen gepasst hat, kannst du halt in Python hingehen und das einfach so in den Hauptspeicher schreiben, das in ein Shared Memory-Segment packen und dann halt einfach von der Library aus einfach so verwenden.

Jochen

Sagst du ja so, du hast es hier, die hast du gerade gepasst, bitteschön, mach damit mal irgendwas.

Jochen

Und es hat einfach super funktioniert.

Johannes

Ja, auch für so Netzwerksachen ist es super nützlich, weil mir eben oft diese Netzwerk, Sachen, die man übers Netzwerk kriegt, halt oft so gepackt sind, wie sie halt in C gepackt werden.

Johannes

Und da die einzelnen Felder rausholen, ist mit Struct super nice und super simpel.

Struct?

Also ich picke Diss.

Johannes

Oh, Dis, this ist ausspannend.

Johannes

Jetzt musst du mal erklären, wie du das schon mal verwendet hast.

Dominik

Ja, also ich habe gestern CTF gespielt und damit kann man ja irgendwie das, was da an Functionaufen passiert, disassemblen und auseinandernehmen gucken, was da so tatsächlich an anderen Hin- und Hersprüngen passiert.

Dominik

Ja.

Dominik

Viel mehr werde ich gar nicht verraten, dafür müssen wir bestimmt auch mal so eine Folge machen über Assembling und Disassembling und

Johannes

ja, also einfach Python-Bycode anschauen.

Johannes

Das ist generell eine sehr interessante Sache.

Johannes

Da bin ich auch.

Johannes

Also die Episode möchte ich gerne hören.

Johannes

Da kann ich zu wenig, um dazu beizuklagen, aber die haben wir nicht mehr so.

Jochen

Aber das ist halt immer das Problem.

Jochen

Bei vielen Dingen bräuchte man eigentlich jemanden, der sich so richtig damit auskennt.

Dominik

Also wir haben alle keine Ahnung, ne?

Nee, nicht so richtig.

Jochen

Also ich jedenfalls nicht, aber ja.

Johannes

Und wir sind auch offensichtlich alle zu faul, um uns zu hörbereiten

Jochen

zu holen.

Jochen

Das kann man ja mal ab und zu machen, aber halt die ganze Zeit.

Jochen

Oh Gott, Arbeit.

Johannes

Ja, da ist es wieder.

Johannes

Das mit den zwei Stunden des Arbeitens erspart uns zwei Minuten des Nachdenkens.

Jochen

Ja, aber das musst du genau machen.

Johannes

Ja, aber da ist ja jetzt, der Dominik ist ja jetzt eingearbeitet, der kann uns ja dann sagen, wie das funktioniert.

Dominik

Oh ja, natürlich, der absolute Profi, wie immer.

In allen Themen.

Dominik

Just call me, ruft dich an.

Hört mir zu.

Dominik

Und morgens mittags, abends, nachts, wann immer wieder einschalten.

Jochen

Ich wollte auch noch

was picken.

Dominik

Du darfst was picken?

Dominik

Ja.

Dominik

Das hast du eben.

Jochen

Was habe ich denn gepickt?

Ach, du hast Array gepickt.

Ja, genau.

Jochen

Ach so, okay.

Jochen

Nee, dann ist dann, ja.

Dominik

Nein, du musst jetzt was picken.

Jochen

Ah, na gut.

Jochen

Weil ich wollte nämlich eigentlich noch, ich mache gerade momentan so ein bisschen Fast API nebenher und das, was mir da auch tatsächlich sehr nützlich untergekommen ist, ist halt Pydentic.

Jochen

Das ist ziemlich klasse.

Paydentic?

Dominik

Ja.

Dominik

Es hört sich nicht was für dich an.

Jochen

Bibliothek, ähm.

Johannes

Es hört sich an wie was für Zahnärztig.

Jochen

Ja.

Jochen

Es gibt eine ganze Reihe von diesen Geschichten.

Jochen

Das ist also es kann auch ein bisschen, also es ist halt auf diesen API-Fall sehr zugeschnitten, wo es halt in FastAPI halt irgendwie da so eine wichtige Funktion übernimmt.

Jochen

Aber es gibt in Python jetzt seit einiger Zeit schon so irgendwie so einen Trend, irgendwie, naja, die Erstellung von Klassen einfacher zu machen und irgendwie so Objekte so zu serialisieren, deserialisieren, das auch alles so ein bisschen simpler hinzukriegen.

Jochen

Und weil es gibt halt so bestimmte Sachen, die braucht man halt ständig und bestimmte Dunder-Methoden wären halt auch nett, wenn die einfach so da wären.

Jochen

Aber das alles selber hinzuschreiben, ist halt ein Haufen Arbeit.

Jochen

Und also ich sage jetzt mal so, die anderen Geschichten, die in die Richtung gehen, ist so Atres, das dazu müssen wir uns auch nochmal mit Leuten unterhalten, die sich damit auskennen.

Jochen

Und Data Classes, genau, das ist halt nicht verstanden.

Jochen

Ja, es ist halt in die gleiche, also das ist ja auch in der Standardbibliothek, das ist inspiriert von Atris, soweit ich das weiß.

Jochen

Und ja, aber was man da halt auch machen kann, ist, du kannst halt ein Dikt nehmen und sagen, okay, mach daraus jetzt ein Objekt von einer bestimmten Klasse.

Jochen

Du kannst aber auch sagen, es dict irgendwie dein Objekt von der Klasse und dann hast du ein Dikt und so.

Jochen

Und Pydentik macht das Ganze nochmal so, da sagst du nur Punkt Dict und du hast halt auch einen ORM-Mode, wo du Sachen direkt aus dem Datenbank-Result halt direkt in Objekte packen kannst.

Jochen

Und das Ding macht dann halt Überprüfungen, ob das jetzt also korrekt, ob die ganzen Typen korrekt sind oder so halt von selber.

Jochen

Du hast halt so, es ist quasi so ein bisschen ähnlich wie bei Django-Modellen, du schreibst halt hin, welche Attribute gibt es denn und welchen Typ haben die, aber das kannst du halt auch kompliziert machen.

Jochen

Du kannst nicht nur Typeins verwenden, sondern halt auch noch Validatoren dafür schreiben und keine Ahnung, kannst dir dann relativ sicher sein, dass wenn die Daten halt von der Klasse gefressen werden, dann waren die im richtigen Format und ansonsten gibt es eine vernünftige Fehlermeldung und man muss sich da um nichts kümmern, außer dass halt zu definieren, was man gerne hätte.

Jochen

Und alles andere macht halt die Magie da drin und das ist natürlich schon sehr schön.

Jochen

Und ja, ich glaube, es ist ein ganz interessanter Trend.

Jochen

Ich weiß auch nicht so genau, warum das jetzt irgendwie so, aber da passieren auch so mehrere Dinge gleichzeitig.

Jochen

Ich weiß nicht, habt ihr den Marc hatte so einen Vortrag gehalten, ich weiß nicht genau, halt von der Python-User Group Düsseldorf.

Jochen

Zur Zukunft von Python.

Verlinkt den mal, ja.

Jochen

Verlinkt den mal.

Johannes

Würde ich gerne auch noch sehen.

Jochen

Ja, der war tatsächlich ganz interessant, weil er hatte so, ja, das Thema vielleicht für die Zukunft von Python ganz interessant, könnte dieser ganze Enterprise-Bereich sein.

Jochen

Weil, also der ist momentan halt total dominiert von.

Johannes

Auf der Padantic-Webseite steht schon, dass Microsoft das benutzt, um das in Windows und Office einzubauen.

Jochen

Ja, ja,

Johannes

schon mal die richtige Richtung.

Jochen

Genau.

Jochen

Und also dieser ganze Enterprise-Bereich ist ja momentan total von Java dominiert, aber tatsächlich für viele Dinge braucht man gar nicht so diese.

Jochen

Man muss man halt nicht irgendwie alles erstmal mit der Pattern mit dem Gang auch vorkommen.

Jochen

So was.

Jochen

Ja, es ist erstaunlich und vielleicht auch ein bisschen traurig für Leute, die jetzt viel Zeit damit verbracht haben, das alles auswendig zu lernen.

Jochen

Aber vielleicht braucht man sie auch nicht die ganze Zeit dauernd.

Jochen

Aber was man vielleicht schon braucht, ist halt eine Art, solche Sachen hinschreiben zu können.

Jochen

Auch so Objekte, also Klassen, die dann halt irgendwie so Business-Geschichten machen.

Jochen

Und dafür, wenn du jetzt aber ganz viele Klassen hast und Sachen hinschreibst, dann ist das halt ziemlich nervtötend und öde.

Jochen

Und wenn man davon zu sehr angeötet ist, dann kann man halt irgendwie solche Sachen verwenden, die einem dann halt einen Großteil davon wegautomatisieren.

Jochen

Und deswegen ist das halt auch so ein interessanter Bereich.

Jochen

Microsoft macht da ja auch sowieso Dinge in die Richtung.

Jochen

Die haben ja auch jetzt ganz viele Python-Entwickler angestellt.

Jochen

Und es könnte sein, dass das halt tatsächlich auch so ein bisschen in die Richtung geht, weil das ja auch etwas ist, was uns sich Microsoft eigentlich ganz gut auskennt.

Jochen

Also ich bin gespannt, dass es könnte sein, dass das alles so ein bisschen in die Richtung geht und ich finde es auch sehr interessant, was da gerade so passiert.

Jochen

Und es macht halt das Bauen von APIs deutlich einfacher, wenn man das halt quasi delegieren kann, den harten Teil davon an sowas.

Dominik

Ein ORM und The Fly quasi.

Ja, spannend.

Cool.

Dominik

Ja, dann sind wir diesmal für heute am Ende, am Ende dieses Jahres.

Dominik

Auch mittlerweile.

Dominik

Und ja, also hört uns immer, wo er uns auch immer hört und so, der hat uns gewogen und habt Spaß und genutzt zum Einschlafen und zum Aufstehen und zum Autofahren.

Dominik

Wo auch immer ihr hinwollt, im Homeoffice natürlich.

Dominik

Ja, Jochen, gehen wir doch ein bisschen cybern.

Jochen

Ja.

Alles klar.

Dann bis zum nächsten Mal.

Dominik

Ja, vielen Dank, Johannes, dass du wieder da warst.

Ja, schön, dass ihr dabei sein durfte.

Ja, wir hören uns.

Bis zum nächsten Mal.

Bis zum nächsten Mal.

Jochen

Alles klar.

Ciao.

Tschüss, tschüss.