Transkript: Wins and Fails
Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.
Ja, hallo liebe Hörerinnen und Hörer.
Willkommen beim Python Podcast, Episode 27.
Wir wollen heute ein bisschen über unsere besten Wins und vielleicht auch Fails sprechen und ein bisschen auf das nächste Jahr schauen.
Schön, dass ihr wieder eingeschaltet habt.
Ich bin natürlich wieder mit Jochen dabei.
Ja, Dominik Jochen.
Und der Johannes ist heute wieder da.
Hey Johannes.
Ja, hallo.
Hallo?
Ich bin ja quasi schon Dauergast hier.
Ja, kann man zu sagen.
Schon jenseits von Gast.
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.
Ein bisschen Struktur, ja, ich fange einfach mal so ein bisschen mit News an.
Ja, ich wollte gerade sagen, dann kommen wir als erstes die News aus der Ziel.
Und zwar ganz nett, freut mich natürlich besonders.
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.
Also das ist schon sehr, sehr cool.
Ja, und ist dann halt ein Haufen Bugfixes oder so, kann man sich auf der Changelog-Seite halt selber mal angucken.
Zweites Ding auch zum M1.
Docker tatsächlich, das war ja auch letztes Mal schon so ein bisschen die Frage, ob es das gehen will.
Ja, es gibt jetzt schon eine experimentelle Version und das wird dann wohl irgendwann kommen.
Also ich habe es nicht installiert, weil ich probiere jetzt gerade so irgendwie, wie sehr denn mein Leben aus ohne Docker-Experiment.
Mal schauen, ob das gut geht.
Oder ich dann doch irgendwie wieder zurückgekrochen komme.
Aber ja, mal schauen.
War das mit Docker 3 eine Kombination?
Das weiß ich nicht.
Es gibt eine experimentelle Release für ein M1, aber.
Die hat mich auch sowas wie Compose eingeführt, jetzt als Exa-Kommando ohne Docker-Compose.
Ah, okay.
Ja, haben sie das reingezogen.
Das ist ja schön.
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
berbegriff Hotwire.
Ein Hotwire, ein heißes Kabel, was
ist das?
Ja, das ist ganz interessante.
Heiße Draht.
Hat mich sofort so ein bisschen an, also zuerst dachte ich, ist es jetzt irgendwie so ein Witz oder so?
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.
Wir machen nämlich jetzt HTML direkt über das Kabel.
Ja gut, das hat man ja schlimmer gemacht.
Was ist denn da ja jetzt neu und toll?
Das hatten wir doch schon mal, oder?
Hatten wir das nicht schon mal?
Das gab es doch schon irgendwann mal.
Und das Neue und Tolle ist, dass das halt nur so HTML-Schnipsel sind.
Und die kommen halt auch über WebSockets.
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.
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.
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.
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.
So, eigentlich willst du sozusagen, dass es auf dem Server gerendert wird und du ersetzt halt nur Dinge im DOM und zwar ganze Bereiche.
Und das ganze State-Handling und das ganze Gerändere, das passiert halt weiterhin auf dem Server, wie man das halt gewohnt ist.
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.
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.
Und dann kannst du quasi deine gesamte Applikation weiterhin wie so einen normalen Ruby-on-Rails-Moduliten schreiben.
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.
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.
Ja.
Aber ja, also im Wesentlichen ist es das, was auch LiveView in Elixir, also mit Erlang und Phoenix macht, irgendwie in Ruby und Rails.
Und ja.
Und jetzt haben natürlich auch auch schon irgendwelche Leute sich überlegt, ob sie das nicht für Django adaptieren können und so.
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.
So dieses Async, ja, na, dieses Websocket-Zeugs und dann diese Monolithen bewegen sich jetzt auch in die Richtung.
Ich meine, es war immer schon ein Thema, aber jetzt gerade habe ich das Gefühl, das kriegt so richtig Moment.
Warum genau jetzt, weiß ich auch nicht so genau, aber irgendwie, jetzt gerade ist es irgendwie ja.
Es hört sich aber alles nicht ungeheuer neu oder ungeheuer, ja, sagen wir mal, unbekannt an.
Also so Sachen, dass du irgendwelche Links mit JavaScript automatisch versiehst, das gab es ja schon auch mal.
In Turbo Gears oder in.
Was weiß ich, wie das alles hieß.
Ja.
Ja, finde ich auch.
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.
Weil dieses Feld hat ja.
Ja, sicherlich wird auch die Integrationen besser sein als wir machen einfach mal so.
Aber was muss man jetzt da vorsetzen?
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.
Ja, also das kann auch über normale, das kann auch über diese XHTP-Requests kommen, aber du kannst halt auch über WebSocket machen.
Aber der, also eigentlich der Witz ist, dass du nichts mehr in JavaScript wirklich oder nichts Wesentliches mehr in JavaScript machst.
Du erzeugst nicht in, also der wesentliche Unterschied ist, du erzeugst in JavaScript kein HTML.
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.
Und dann baust du da dein HTML halt zusammen und machst im Grunde das Gleiche, was du im Backend machst, nochmal im Frontend.
Und die Idee ist sozusagen, das machst du nicht mehr, sondern du machst das nur noch im Backend und das Frontend ist automatisch.
Du musst eigentlich nichts mehr im Frontend machen.
Du kannst zwar noch so ein bisschen was tun, aber normalerweise nicht mehr viel machen.
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.
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.
Hey.com.
Und das ist halt genau damit gebaut.
Und ja.
Okay.
Na gut.
Muss man sich mal anschauen.
Es gab vor Jahren mal eine geniale Bibliothek, eine geniale JavaScript-Bibliothek, die Page-Reloads schneller gemacht hat.
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.
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.
Und damit kriegt man 200 bis 500 Millisekunden Latenz weg, was ich, finde ich, eine sehr schöne Technik ist.
Das ist schon mal eine super Idee, ja.
Sehr psychologisch.
Also für alle Leute, die scheint schneller
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?
Ja, das für die ist es nicht gut geeignet, aber das einen Tod muss mal sterben.
Okay, okay, verstehe.
Ja, ich habe keine News.
Also ich habe in den letzten vier Wochen nicht viel zu sehr im Weihnachtsstress.
Ja, ja, Weihnachtsstress.
Ist einfach nichts Neues passiert.
Ja, ja.
Das stimmt auch.
Ich habe jetzt so ein bisschen Zeit.
Das habe ich dann auch gleich mal genutzt, um irgendwie meinem Gear Acquisition-Syndrom zu fröhen.
Da ist
Weihnachten auch eine gefährliche Zeit.
Das stimmt der perfekte Sturm sozusagen.
Ja, aber auch im Hinblick auf, ja, genau, das wollte mir ja, das ist vielleicht eine Überleitung zu Richtung, was kommt eigentlich 2021?
Und die, ich, meine Vorhersage wäre.
Pakete, ganz viele Pakete.
Es kommen viele Pakete.
Aber ja, nicht so viele Pakete mit Audio und Video-Hardware zum irgendwie, weil die sind alle schon angekommen und da kommt nichts mehr.
Und zwar zum Beispiel, weil halt in Japan ist halt eine Fabrik von AKG irgendwie abgebrannt.
Ja.
Globale Auswirkungen.
Ja, das ist so ein bisschen schlecht.
Es gibt ja zum Beispiel bei den, also diese analog, also DAC, also digital zu Audio und umgekehrt Konverter.
Da gibt es halt nicht so viele davon, also die das in guter Qualität machen.
Und tatsächlich stellen halt die Leute gerade so fest, eigentlich gibt es nur einen.
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.
Und tatsächlich war es auch nur eine Fabrik, in der die hergestellt worden, nämlich die.
Und die ist gerade abgebrannt.
Und das ist jetzt schlecht.
Und niemand anders kann das so richtig.
Und jetzt geht halt, also alles, was so High-End-Audio angeht, da werden jetzt so die Lagerer leer und die Preise steigen.
Und ja, wenn man da nichts hat, das wird es in 2021 ein bisschen schwierig, das zu kaufen.
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.
Ja, also die bisherige Prophezeiung war da so bis im Sommer.
Also jedenfalls jetzt hier bei uns, so in Mitteleuropa.
Ja, kommt drauf an, welche Member zugehört.
Ja, Normalität, also es kommt darauf an, was man sich da einhält.
Aber jetzt sind ja auch schon tatsächlich, die Zeit gibt da aktuelle Zahlen an.
21.566 Impfdosen in Deutschland verabreicht worden.
Das ist doch schon mal
nicht schlecht.
Dann ist ja nicht mehr weit.
Ja, ja.
Wir sind schon fast da.
Brauchen wir 40 Millionen durch 20.000.
Ja, auch das ist unklar.
Irgendwo zwischen 35 und 60 Millionen wird es wohl liegen.
Und doppelt natürlich.
Ja, mehr.
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.
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.
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.
Was bedeutet, ja, es wird länger dauern wahrscheinlich, ja.
Du brauchst mehr herstellen, dann musst du es verteilen, alles schlecht.
Also die pessimistischere Richtung geht eher zu sagen, so, das wird auch noch bis Winter 2021 leider dauern wohl.
Also alles nicht so richtig schön.
Und sowieso die Zahlen sehen alles, alles halt alles fies aus.
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.
Jetzt gibt es keine guten mehr.
Jetzt über
Weihnachten sind die Sachen alle gesunken.
Ja, komisch.
Warten wir mal die Nachmeldungen ab.
Warten wir mal die Nachmeldungen ab.
Ja.
Ja, gut.
Ich meine, das wird uns noch das nächste Jahr beschäftigen.
Habt ihr da irgendwas?
Habt ihr eigentlich sowas gemacht?
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.
Naja, also es war mehr so ein Versuch.
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.
Hieß es halt so, nee, nee, nee.
Und dann dachte ich, na gut, dann gucke ich doch mal, gibt es nicht Webseiten, auf denen man das kaufen kann?
Und tatsächlich gab es.
Und ich habe dann halt auch bestellt.
Wie teil, Johan?
Ja, man muss die in großen Packungen kaufen.
Ich habe irgendwie so 25 Stück bestellt, das hat so irgendwas um die 200 Euro gekostet oder so.
Ja, das geht ja tatsächlich noch preislich.
Ja, also pro Test waren das so um die 10 Euro.
Und dann hieß es aber direkt irgendwie so ein paar Tage später, momentan ein bisschen schlecht mit dem Liefern.
Habe ich mir auch schon gedacht, dass das eventuell auch noch andere Leute auf die Idee gekommen sein könnten.
Und ja, aber es kam dann tatsächlich sogar noch vor Weihnachten irgendwie an.
Und hat alles funktioniert.
Ja, also irgendwie DRL meinte so, ja, super, herzlichen Glückwunsch, kommt doch noch an.
Irgendwie, wir sind sehr froh, aber dass wir das sagen können, aber wir beliefern medizinische Einrichtungen auch mit Priorität.
Da ich so, ja, das ist ja gut, sonst wäre das ja vielleicht gar nicht angekommen.
Wunderbar.
Und hast du einen Webshop auch gemacht und den Preis verfünffacht?
Nee, nee, nee, nee.
Sie sind auch schon, also ein guter Teil davon ist jetzt auch schon verbraucht.
Weg auf Fettplatz wie man so sagt.
Ja, ja.
Ja, ich habe tatsächlich Angebote gesehen, da haben sie 50 Euro pro Test verlangt.
Also da können schon durchaus Margen drin sein, Jochen.
Ja, gut.
Deine ersten 10 kannst du ja verkaufen, hast du Geld für zwei neue Lieferungen.
Lass mal überlegen, wie kann man denn da ein Pyramidensystem draus machen?
Eine kurze Lektion in exponentielles Wachstum.
Ja.
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.
Und beim zweiten Verstoß dann aber 10 Euro.
Und beim dritten Verstoß 20 Euro.
Und das wäre dann gleichzeitig abschreckend und eine kurze Einführung in exponentielles Wachstum.
Was vielleicht nützlich wäre.
Ja, ich glaube, die Wahrscheinlichkeit der Kontrolle mehrfach ist wahrscheinlich gering.
Ja, gut, das ist ja auch ein lösbares Problem.
Also das ist ja, also gerade in Deutschland ist das ja ein lösbares Problem.
Ob ihr das jetzt als Win oder als Fail einsortiert, das urlasse ich jetzt bei euch.
Ja, insgesamt handiert die ganze Situation so ein bisschen Richtung Fail, muss ich sagen.
Also es ist findest du.
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.
Also das sind alles First Welt Problems.
Uns geht es da erschauen nicht gut.
Toi, toi toi, dass wir alle gesagt haben.
Es ist sehr schlimm, Dominik, dass du deinen Job verloren hast und kurz vor dem Finanziellen ausstehst und auch deine Wohnung bald verlierst.
Ja, nee, also das tatsächlich ist das nicht so gut.
Man muss mal wirklich sagen, wir leben alle Glück in so einer Blase.
Ja, also ich meine, in unserer Branche ist es halt wirklich sehr einfach, Homeoffice zu machen.
Das ist für andere Betriebe, alle, die in der Gastronomie arbeiten, für die ist das schwieriger.
Ja, ganze Veranstaltungsbehandlung, es hatte Arschkarte, Einzelhandel und so weiter.
Mein Cousin hat ein Konzertbüro, eine Konzertagentur.
Die hatten zwischendurch überlegt, ob sie Konzerte in Flugzeugen machen sollen, weil das war nämlich erlaubt.
Hätten sie immerhin für 300 Leute Flugzeugkonzert machen können, haben es aber nicht gemacht.
Geld oder Leben heißt es.
Aber klar, dem ist das ganze Jahr einfach ausgefallen.
Ja, Geld oder Leben.
Kennt ihr dieses Ticketsystem Pretex, auch Django Django-System?
Natürlich.
Die unterstützen noch jedes Jahr die Django-Con, also bitte 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.
Und dann dachten sie schon so, oje, oje, was machen wir denn jetzt?
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.
Und zwar mit zum Beispiel Schwimmbädern.
Weil normalerweise verkaufen die Schwimmbäder.
Jeder braucht jetzt ein Ticketsystem.
Die verkaufen ja ihren Kram normalerweise direkt an der Kasse, aber das geht ja jetzt nicht mehr.
Das heißt, die müssen die Sachen online verkaufen und dann brauchst du ein Ticketsystem dafür.
Und tja, tada!
Ja, Reservierungssysteme, das ist auch das ein guter Markt in diesem Jahr.
Ja, ja.
Absolut.
Also.
Ja, auch alle Lieferdienste und so, das ist sicherlich dieses Jahr gut gelaufen.
Aber ja gut, es gibt immer Gewinner und Verlierer und
genau, ja, ich überlege auch, ob ich jetzt so ein bisschen Richtung Video mal ein bisschen mehr machen soll.
Ich weiß nicht, ich habe jetzt schon mal so ein bisschen Hardware geordert.
Ich hoffe mal, dass ich nicht noch mehr Hardware ordern muss, weil sonst habe ich ein Problem.
Aber das ist ja auch sowas.
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.
Ja, mal gucken, muss da mal so ein bisschen experimentieren.
Ja, ich kann dir da, ich als Betreiber des rasend erfolgreichen Spielmanns-Kekse-Kanals, kann dir natürlich gerne auch viele Hinweise geben.
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.
Jetzt wieder Kekse.
Mehr Kekse, noch mehr Kekse.
Ja, wir überlegen uns, wie man den Impfstoff wohl als Keks umsetzen kann.
Wir hatten ja schon das Virus als Corona-Ausstecher.
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.
Nee, die werden gespritzt.
Also wir hätten dann natürlich eine Schluckimpfung, selbstverständlich, in Keksform.
Aber der Impfstoff selber ist, die sind alle.
Also es gibt verschiedene Impfstoffe, die meisten sind in Spritzen.
Es gibt tatsächlich eine, die in die Nase eingespritzt wird.
Das ist die angenehmste.
Die ist allerdings noch nicht durch Phase 3 durch.
Aber Nasenspray.
Habt ihr das gelesen?
Ich finde das fand ich super cool.
Da gab es jetzt einen Artikel auch von einem, der normalerweise sich eher mit Computerkram beschäftigt, VDNS oder so.
Oh ja, ja, den habe ich gelesen.
Den hast du gelesen.
Ich weiß, was du meinst auch.
Ja, der war saucool.
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.
Und das fand ich sauinteressant, weil da waren echt einige tolle Tricks dabei, von denen ich gar nicht wusste, dass das so war.
Man muss dazu sagen, dass der ja veröffentlicht ist.
Der ist ja als Patent eingereicht und da muss er ja veröffentlicht sein.
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.
Das ist eine Buchstabenfolge.
Es sind irgendwie, Joachim, korrigier mich, 2270 Zeichen oder sowas.
Also vergleichsweise klein.
Ja, ich weiß nicht mehr genau, genau.
Es war irgendwie so halb so groß wie das Virus selber irgendwie oder die, äh, ja.
Genau, und ja, da sind einige schöne Hacks drin.
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.
Und es ist auch erstaunlich wenig.
Also es ist auch einfach.
Ja, ja, der größte Teil von den Daten ist halt 1 zu 1 aus dem Virus kopiert quasi.
Ja, man hat genug gelesen.
Man hat ein paar Änderungen gemacht, ja.
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.
Es ist halt relativ flüchtig.
Also es überlebt so an der Luft nicht lange und auch wenn man das irgendwo in Organismen muss.
Deswegen diese Kühlkette und so, das ist alles ein bisschen doof.
Wenn man es in Organismen reinspritzt, dann normalerweise das Immunsystem wird da so leicht misstrauisch, wenn da irgendwie so RNA in der Gegend geht.
Ja, auch Zellen nehmen denen ja eigentlich normalerweise gar nicht an, die nehmen ja gar keine RNA von außen.
Ja.
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.
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.
Und zwar so ziemlich genau das Ding.
Bis auf auch wieder ein paar kleine Details, ne?
Damit es stabil wird.
Genau, weil normalerweise rollt sich das Ding zusammen, faltet sich zusammen und dann ist es halt egal.
Also so das Virus blößt diese Spike-Protein auch erst so kurz vor der Infektion.
Normalerweise kriegt das Immunsystem den Kram halt nie zu sehen.
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.
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.
Und dieser Impfstoff erzeugt halt dieses Protein und zwar halt so, dass es sich nicht zusammenfaltet, sondern in der gleichen Form bleibt.
Und dass das Immunsystem das Ding dann halt auch wiedererkennen kann.
Das ist natürlich total super, weil, naja, also das sieht halt aus wie eine echte Infektion für das Immunsystem.
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.
Und das ist alles höchst alarmierend.
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.
Das ist ein einmaliges Event.
Das ist eine der wichtigen Sachen.
Das heißt, man wird nicht krank davon, sondern es wird halt einmal umgesetzt.
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.
Das heißt, sobald man so ein Virus einmal sequenziert hat, kann man prinzipiell sehr schnell damit anfangen.
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.
Die haben diese Virussequenz gekriegt, aber die Karte.
Und die Menschen
beeindruckende Geschichte.
War eine Handvoll Männchen nur, oder?
Das waren unter zehn, die da in dem Labor saßen und das gemacht haben, oder?
Ja, genau, das waren
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.
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.
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.
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.
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.
Das ist irgendwie schon, das ist schon faszinierend.
Da kann man
gut unten machen.
Bestimmt können wir irgendwann alle ewig lieben.
Das gibt es übrigens auch als er the Service.
Man kann auch solche Sequenzen einfach machen und die dann irgendwo hinschicken.
Live longer as a service.
Da müsst ihr vielleicht mal eine Episode mit Simon machen, der kann euch da Geschichten erzählen.
Ja, das ist.
Die euch sehr beeindrucken werden.
Es gibt so Genbibliotheken, da kann man einfach Samples bestellen.
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.
Kriegst du per Post.
Versandkosten sind 90 Cent.
Ja.
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.
Und das U haben sie ausgetauscht gegen was anderes.
Ich weiß jetzt gar nicht, wie das ausspricht.
Irgendein richtiger Buchstabe.
Durch den Tau.
Durch den Tau, ja, ja.
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.
Aber wenn man das U durch ein Tau ersetzt, ist diese RNA dem Immunsystem einfach vollkommen egal.
Das reagiert da gar nicht mehr drauf.
Und das ist halt so.
Ist ja offenbar keine RNA.
Ja, ist ja offenbar irgendwas anderes.
Ist ja, ist ja irgendwie nicht wichtig.
Lustigerweise in der Zelle und in den Rhibosomen macht es halt genau das gleiche wie das U.
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.
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.
Das heißt, ja, es kann diesen Trick kann das Virus sich dem Impfstoff nicht abgucken.
Also es ist schon, es ist schon toll, ja.
Also hat viel Spaß gemacht, das zu lesen.
Ja, also würdest du das jetzt als Win zählen oder als Fail?
Stimmt, das Ding ist eigentlich tatsächlich ein großer Win, ja.
Das würde ich auch sagen.
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.
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.
Muss zwei Stunden warten, ein bisschen geimpft.
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.
Und tatsächlich gab es irgendwie praktisch nichts an Nebenwirkungen.
Dann gab es, dass ich das ging, wann war das irgendwie vor ein paar Tagen über Twitter?
Oh mein Gott.
Ich frage mich immer, das hört man dann auch so von Leuten, so impfen ja oder nein, oder gibt es irgendwie Allergien?
Ich frage mich immer, wo dann solche Informationen herkommen.
Ja, nee, dann Autisten.
Ja.
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.
Unter anderem eben auch, dass der Impfstoff Allergien auslösen würde, was totaler Quatsch ist.
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.
Das ist zur Hölle, was macht ihr eigentlich?
Wie so, nein, das haben wir doch aus der Studie selber.
Da, guck doch, da hat es eine Allergie ausgelöst.
Ja, haben da nochmal Leute reingeguckt, ja, das war aber die Kontrollgruppe, die hatten das gar nicht den Impfstoff gekriegt.
Also das ist echt.
Ja, aber, also ich meine, das ist ja noch schlimmer, wenn dieser Impfstoff bei den Leuten Allergien auslöst, die den gar nicht kriegen.
Also Jochen, das ist ja jetzt mal ganz ehrlich sein.
Nein, ich habe das genau, gerade zum Beispiel.
Ja, es ist schwer dagegen zu argumentieren, das stimmt schon.
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
es halt.
Wenn die Kontrollgruppe die Allergien kriegt, dann müsste man eigentlich möglichst schnell den Impfstoff nehmen, damit man diese Allergien nicht bekommt.
Ja, aber ich verstehe den Ansatz, aber mich ärgert so ein bisschen das Problem.
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
urellen Vorteil.
Und man selber muss ja auch noch dafür sorgen, dass es funktioniert.
Das heißt, man kann eigentlich nur verlieren.
Das ist nicht gut.
Ja, ich sehe da eine große Desillusionierung auf dich gefunden.
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.
Ja, okay, aber das ist ja alles schon eine sehr schöne Überleitung.
Lass uns nochmal über Sachen sprechen, die wir so widerfahren sind.
Ich möchte endlich über mich sprechen.
Ja, dann genau, was haben wir denn so an Dingen, die gut oder schlecht gelaufen sind?
Ich habe eine schöne Anekdote von ganz, ganz, ganz früher.
Ich habe früher ganz viel mit Oracle-Datenbanken gearbeitet.
Habt ihr schon mal mit Oracle-Datenbanken?
Habt ihr schon mal die Freude gehabt, mit Oracle-Datenbanken arbeiten zu dürfen?
Ja.
Nö.
Ich schätze mal, Joachim, der Grund war bei dir der gleiche wie bei mir.
Wir haben das halt.
Naja, das war also tatsächlich Webde lief zum großen Teil.
Also der Feeling lief halt auf Oracle quasi.
Weiß nicht, ob das noch immer noch so ist, aber vor langer Zeit war das so.
Das war bei den 90ern noch, da gab es mal also Oracle-Kramps.
Ja, in den Nullern auch noch.
Ja, bei mir war das auch in den Nullern.
Ja.
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.
Was damals schon eine sehr interessante Behauptung war.
Ja, wir haben es auch nicht
näher untersucht.
Vielleicht war der Magie im Spiel.
Ich schätze, dass da so grüne Papierscheinchen Magie im Spiel gewesen sein mag.
Diese Magie schon wieder.
Ja.
Kennt ihr den Softwarehersteller CA?
Die ist denn früher mal Computer Associates.
Die sind in der Enterprise-Welt ungeheuer groß.
Sind inzwischen auch gekauft von irgendjemandem, ich weiß gar nicht von wem.
Als wir damals, wir waren da eben Partner von denen, da haben die 15 Milliarden Dollar Umsätze im Jahr gemacht.
Aber außerhalb der Enterprise-Industrie kannte die und kennt die auch quasi niemand.
So der freundliche unbekannte Riese.
Jedenfalls mussten wir da Oracle-Datenbank verwenden.
Und es gibt ja dieses schöne Statement DeleteFrom für SQL-Datenbanken.
Habt ihr sicherlich auch schon mal verwendet.
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.
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.
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.
Und das haben manche von uns Entwicklern auf die harte Tour herausgefunden, dass das so ist.
Manche von uns.
Weil wir halt tatsächlich einfach mal, ich will
jetzt keinen
Namen nennen, ich will jetzt auch niemanden hier persönlich an den Pranger stellen.
Delete From.
Wie wäre das mit der Belle?
Wenn man nur DeleteFrom-Tabellenname gibt, dann löscht es einfach alle Zeilen aus einer Tabelle raus.
Ja.
Und das ist ja sehr ungünstig, wenn das mal passiert.
Je nachdem.
Man möchte man das aber auch.
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.
Da ist jetzt schon der erste Fail.
Das passiert nämlich manchmal, dass man versehentlich nicht mit der Testdatenbank verbunden ist, sondern mit der Produktivdatenbank.
Aber zum Glück, und das ist was sehr interessantes, wir haben dann gemerkt, dass dieser Befehl sehr, sehr langsam ist.
So ein Delete From macht ja eigentlich nicht viel.
Das löscht halt die Tabelle.
Und das müsste ja eigentlich so im Handumdrehen gehen.
Aber dieser Befehl ist sehr langsam, weil der löscht die Tabellenzeilen nicht einfach nur, sondern der verschiebt die ins Undo-Log.
Tatsächlich hat Oracle, anders als andere Datenbanksysteme, einen Papierkorb und dieser Papierkorb ist das Undo-Log.
Das heißt, wenn du einen DeleteFrom gemacht hast, kannst du die Zeilen wieder retten.
Wenn du rechtzeitig zu deinem Systemadministrator gehst und sagst, ich hoffe, ihr habt das Undo-Log noch nicht gelöscht oder gelehrt oder überschrieben.
Und dann kriegst du die Zeilen wieder.
Jetzt ist es so, wenn das passiert, dann ist das sehr langsam.
Gerade wenn man eine Tabelle löscht, wo eine Milliarde Zeilen drin sind, dann ist das halt sehr langsam.
Und weil das zu langsam ist, gibt es bei Oracle einen speziellen Befehl, der heißt Truncate Table.
Der macht das, was normalerweise ein Delete From ohne Bedingung macht.
Der löscht alle Zeilen aus der Tabelle und zwar schnell.
Ohne die ins Andolog zu tun.
Und ihr könnt euch denken, wohin das geführt, wozu das geführt hat.
Und zwar DeleteFrom, jeder Entwickler in der Abteilung war dieses DeleteFrom zu langsam.
Wir sind einfach alle auf Truncate Table übergegangen.
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.
Nicht nur ein DeleteFrom, sondern ein Truncate Table und einfach mal eine von den Projektdatentabellen gelöscht hat.
Das war ein nicht so cooler Tag.
Ja, ich würde sagen,
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.
Die anderen hat ja auch nicht direkt machstgerecht entsorgt.
Also wir hatten auf jeden Fall ungefähr eine Woche an Sachen verloren, die einfach dann nicht mehr da waren.
Und Subversion ist ja auch nicht einfach so, dass du wieder pushen kannst.
Ist ja nicht wie heutzutage, wo jeder eine Kopie hat, sondern Subversion ist dann halt einfach erstmal komplett kaputt.
Ja.
Ja, ich erinnere mich da.
Schön professionelle Zeiten damals.
Da hat wohl einer keine Backups gehabt.
Ja, wir hatten ja ein Raid.
Habe ich gar nicht vor so langer Zeit gemacht.
Ich glaube, es ist ein paar Wochen her.
Reset Schema auf einem Projekt in der Deploy-Chain.
Und dann vergessen, das Backup dann wieder aufzuspielen.
Du hast es gleich direkt automatisiert gemacht.
Das ist doch,
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.
Die hätte man wahrscheinlich mal wiederherstellen.
Ja, war nicht so schlimm, eigentlich, weil das Projekt liegt noch nicht so lange, aber.
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.
Eine andere elegante Möglichkeit, Daten von der Verfügbarkeit zu entfernen, ist halt sie einfach auszuschalten.
Und normalerweise merkt man das halt auch immer sofort, wenn eine Datenbank weg ist.
Manchen Datenbanken, da ist das Caching so advanced, dass man das nicht sofort merkt.
Zum Beispiel bei DNS.
Oh, DNS ist auch generell ein sehr schönes Thema.
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.
Manche kriegen halt so seltsame Fehlermeldungen, aber manchmal, naja, das ist halt so, Computer, manchmal funktionieren Dinge nicht so richtig.
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?
Ist da irgendwie Weihnachten gerade oder Fußballweltmeisterschaft?
Oder wenn es das nicht ist, okay, das sieht jetzt aber schon komisch aus.
Und ja, aber das Problem ist, wenn man es dann merkt, ist es halt schon zu spät.
Weil dann haben nämlich auch alle.
Und dann hast du auch die Cache-Zeiten, hast du dann beim Hochfahren auch wieder.
Aber da hast du auch keine halben Sachen gemacht, wenn du direkt den Primary DNS.
Ja, ja.
Ja, das war da, das war so, das war so bitter, dass dann auch tatsächlich jemand hingegangen ist.
Also da musste irgendwie tatsächlich jemand irgendwie von Hand im DES-Pfeil was fixen.
So mit einem VI auf einem, weiß ich nicht, mehrere 100 Megabyte.
Ja, ich weiß nicht, wie oft sowas nötig ist, aber.
Wie lange hat das gedauert, bis das wieder verfügbar war?
Ja, so ein paar Stunden hat das schon irgendwie Probleme gemacht.
Bis es aufgefallen ist?
Es hat ein paar Stunden gedauert, ja, ich weiß nicht, ob es ein paar Stunden waren.
Also ich weiß nicht genau, wie lange es gedauert.
Also es war eine Zeit lang, bis es aufgefallen ist und dann hat es nochmal ein paar Stunden gedauert, bis es wieder gefixt war.
Deswegen habe ich damals keine E-Mails mehr empfangen.
Deswegen ist damals meine Oma gestorben, die dringend auf die E-Mail-Bestätigung von ihrem Arzt gewartet hat.
Ja, ich glaube so, damals war das alles noch so.
War es noch nicht so kritisch.
War noch nicht so, ja.
Weiß nicht.
Ja, das ist.
Meine Frau ist ja Ärztin und bei der geht es um Menschenleben.
Aber das ist ja nicht so schlimm, weil bei uns geht es ja um Geld.
Geld oder Leben, Geld oder Leben.
Ja, das ist doch schön.
Aber es ist schön, dass jeder von uns auch so eine Geschichte hat, wo er einfach mal Produktivdaten entfernt oder gelöscht oder
verfügbar ist.
Ich glaube, das passiert auch allen irgendwann früher oder später mal.
Das ist halt die Feuertaufe.
Oder auch schön Backups machen auf dem gleichen Server wie die Datenbank.
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.
Ja, Backups muss man auch mal offside machen.
Hätte man auch eigentlich vorher noch gemacht.
Gibt es auch das Zwiebelmodell?
Du musst Schichten von Backups haben.
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.
Und dann Schicht 5 Backups haben wir leider noch nicht so viele.
Ja, könnte man aber eigentlich so ein bisschen rausschießen.
Wir haben ja genug Planeten, die verfügbar wären.
Also es ist jetzt nur ein kleiner Explos, aber wir hatten eine Geld.
Der Datentransfer, die Datenrate.
Die Datenrate ist gut, aber die Latenz ist sehr langsam.
Ja, wobei habt ihr das mit, wie hieß das Ding?
Habt ihr das verfolgt?
Spaceship One oder so?
Keine Ahnung, haben sie jetzt diesen High-Altitude-Test gemacht?
Also wir sind diesem anderen Planeten.
Bitte?
Haben die sogar schon Leute damit?
Ja, ja, nee, aber das ist diese, das ist diese, ich habe jetzt auch nicht so ein.
Ich verfolge das immer nur so auf.
Bezos oder von Elon Musk?
Welche reiche Raketenfirma.
Ja, ja, Elon Musk war das.
Und Virgin Galactic, der dritte reiche Mann in, der dritte verrückte Milliardär, ist doch auch eine.
Hat er auch Raketenfirma inzwischen.
Ich dachte, er war noch was vom Flugzeug.
Und er ist dann auch irgendwer der.
Wer ist der Branson?
Bronson ist er ja auch.
Richard Branson ist er hochgeflogen, weil er wollte unbedingt.
Ach nein, nicht nicht, das Ding heißt irgendwie nicht Spaceship One, sondern Starship.
Ach Gott.
Naja, wie auch immer, genau.
Namespace in dem Bereich wird jetzt auch schon knapp.
Ja, nee, aber das Ding ist wirklich riesig.
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.
Und neue Technik, das soll wiederverwendbar sein und das segelt sozusagen irgendwie wieder runter und es ist größer als die Saturn V.
Also es ist wirklich riesig.
Also das ist halt sozusagen der.
Ja, sowas habe ich bei Kerbal Space Programm auch schon mal gebaut.
Da gibt es doch diesen tollen Talks.
Hat auch einwandfrei funktioniert.
Da gibt es halt ein paar tolle Talks, wie man Raumschiffe baut und wie man Raumschiffe fliegt.
Die gab es dann mal zwischendurch.
In Kerbal oder in echt?
Ja, in echt, in echt, in echt.
In echt, ja, okay.
Ja, es gibt ja auch ganz viele so Amateurfirmen, die das versuchen und machen.
Kopenhagen Aerospace ist eine Amateurfirma, die ist nicht meine Firma, ja.
Es ist ein Verein, der halt Raketen baut und ins Weltreil schicken möchte.
Der US hat das irgendwie, wie man das macht.
Das ist sehr interessant.
Also wenn er euch das interessiert.
Und weil wir gerade bei Planeten waren, das gibt ja irgendwie, wo man dann hinfliegen kann.
Es gibt ja so viele wie oder mehr als Sandkörner wahrscheinlich auf der Erde, ne?
Und das ist natürlich schon gut, wenn die nicht so weit weg wären.
Und dann muss man sich halt irgendwie überlegen, wie man da die Zeit überbrücken kann.
Also wir haben ja Computer dabei, vielleicht kann man da so ein bisschen seine Langweile vertreiben und Tetris spielen oder so.
Ja, finde ich gut.
Ja, ja.
Das ist ja vielleicht so die Frage, wie man seine Zeit.
Kann jeder endlich mal seine Steam-Bibliothek abarbeiten.
Ja, ja.
Noch so ein Win übrigens oder ein Fail.
Ich weiß nicht, Cyberpunk, Johann Johannes.
Wenn ihr gerade heute fast oben failet.
Das ist ja, die Nachrichten sind unterhaltsamer als das Spiel, oder?
Ja, so schlimm.
Ist doch großartig, dass wir zitiert.
Nein, das Spiel ist sicherlich sehr gut, wenn es läuft, aber man hört ja nur von Leuten, bei denen es nicht funktioniert.
Tja.
Kann man nichts machen, wenn man das auf einer alten Hand ist.
Ein Gentleman genießt und schweigt.
Na gut.
Wisst ihr, was wir gerade dabei sind, ist voll die gute Überleitung jetzt, die mir gerade so einfällt.
Wisst ihr, was ein galaktischer Algorithmus ist?
Das, was total witzig ist.
Es gibt ja für alle möglichen Sachen Algorithmen, die in ihrer Laufzeit gemessen werden.
Und Laufzeitmessung ist ja immer mit Groß-O-Notation.
Und Groß-O-Notation heißt, dass es asymptotisch sich so verhält, wie die da gezeigte Funktion.
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.
Und es gibt eine Klasse von Algorithmen, die heißt galaktische Algorithmen, die haben sehr gute O-Notationen.
Also die sind dann O von n log n oder o von n hoch 1, noch was, also besser als alles andere.
Aber wenn man die konstanten Faktoren ausrechnet, dann ist dieses n halt 10 hoch 40 oder sowas.
Ah, das ist ein bisschen schlecht.
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.
Sind prinzipiell die besten Lösungen für verschiedene Probleme, aber in der Praxis nicht ungeheuer gut.
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.
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.
Das kommt so in gewisser Weise, es ist halt faktischer Unsinn, aber theoretisch ein super tolles Modell.
Ja, theoretisch optimal, aber in der Praxis leider nicht.
Ja, auch ein galaktischer Algorithmus.
Nicht anzuwenden.
Das war ein Überdemer von Gruppman.
Falls ihr das müssen wir auch mal verlinken in die Shownotes.
Ja, tust du nochmal in die Shownotes.
Ich lese es dann und das finde ich gut.
Ich mag das gerne, so Paperlesen.
Auch dieses Virus-Paper habe ich auch mit sehr viel Freude gelesen.
Das war auch sehr schön.
Ja, warum war das eine Überleitung?
Weil ich habe jetzt hier, ihr könnt es jetzt hier sehen im Video, die Hörer zu Hause.
Ihr könnt es nicht sehen, weil es ist ja ein Podcast.
Dieses Buch hier, das ist ein schwarzes Buch mit Ringen, Ring, Einband, das ist mein Algorithmenbuch.
Und ich habe dieses Algorithmenbuch vor Jahren mal angefangen.
Und die Idee dahinter ist, dass immer, wenn ich einen guten Algorithmus finde, der nicht so bekannt ist, dass ich mir den aufschreibe.
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.
Jetzt mach mal auf und zeig mal, wie viele Seiten da schon beschrieben sind.
Ich mache jetzt erstmal den Staub weg.
Es lag nämlich schon eine ganze Weile drin und ich mache es jetzt mal auf.
Und es sind tatsächlich 1, 2, 3, 4, 5, 6, 7, ja, siebeneinhalb Seiten beschrieben.
Das hier ist die achte Seite, die beschrieben ist.
Da steht nur eine Überschrift drauf.
Ja, ich würde das auf jeden Fall als Win zählen.
Aber nicht die Seite mit den Rezepten, mit den Kochrezeptern dazu zählen.
Klar, gewonnen.
Ja, Kochrezepte habe ich ein eigenes Buch für Selbstrecht- und Tech.
Könnte ja auch für Sonderreigner.
Aber tatsächlich in der Praxis hat man oft irgendwie dickere Kochrezeptbücher als Algorithmenbücher dazu.
Ja, das ist mir auch schon aufgefallen.
Ja, leider.
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.
Aber irgendwie funktioniert das nicht richtig.
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.
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.
Sondern ich fange dann an, darüber selber nachzudenken.
Das ist halt auch nicht so optimal.
Und ein sehr langsame Algorithmus.
Wie ist es dann diese ganzen Algorithmen wieder?
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.
Oder ich, mir fällt halt irgendwo ein Algorithmus auf, der genau das Problem löst.
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.
Ich verstehe es nicht so genau und das ist schon ein paar Mal passiert.
Ja, dafür hatte ich eigentlich dieses Buch hier.
Aber.
Du musst mal einen davon vorstellen, Johannes, der vielleicht so einen Namen hat oder hast du einen selber, den du selber taufst?
Ja, nee, selber getauft nicht.
Also ich versuche Sachen hier zu merken, die ich interessant finde, die spannend filter.
Eine Sache, die man mal sagen kann, sind zum Beispiel Bloomfilters.
Wisst ihr, was ein Bloomfilter ist?
Nein.
Ja, voll geil.
Das ist eine sehr spezifische, probabilistische Datenstruktur, die, wenn man sie braucht, absolut genial ist und absolut undenkbar, dass es überhaupt funktionieren kann.
Aber wenn man sie nicht braucht, ist es total nutzlos.
Das ist im Wesentlichen eine Set-Implementation, also eine Menge.
Und ich kann in diese Menge Dinge eintragen, also Elemente eintragen und ich kann fragen, ist dieses Element in der Menge vorhanden?
Und wenn die Antwort nein ist, dann ist die sicher.
Das heißt, wenn mein Bloomfilter sagt, das Element 7 ist nicht vorhanden, dann bin ich mir sicher, dass das Element nicht vorhanden ist.
Wenn der Bloomfilter aber sagt, ja, das Element ist vorhanden, dann ist der nur mit einer gewissen Wahrscheinlichkeit vorhanden.
Und der Gag daran ist, dass man sehr wenige Bits braucht, um diese Einträge zu speichern.
Also je nachdem, wie man das eingestellt hat, kann die Speichermenge weniger als ein Bit pro Eintrag sein.
Deutlich weniger als ein Bit pro gespeichertem Element.
Und das ist was total Verrücktes, weil das kann ja gar nicht gehen.
Warum ist das nützlich?
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.
Und der sagt dann alle Standard, in welcher Range?
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.
Musst du vorher wählen, musste relativ sein.
Aber alle, nee, es ist eine kompliziertere Formel.
Das wäre dann ein Detail, das steht gar nicht in meinem Buch drin.
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.
Wenn der Blumenfeld aber sagt, ja, der ist drin, dann ist er vielleicht da drin.
Ein anderes Beispiel, wofür ich es kürzlich überlegt habe anzuwenden, ist ein Passworthash.
Es gibt ja eine Liste von unsicheren Passwörtern, also von Passwörtern, die bekannt sind.
Im Wesentlichen Passwortwortlisten.
Das ist eine Regenbogentabelle.
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.
Und ein Blumenfilter dafür mit einer Wahrscheinlichkeit von, ich glaube, 99%.
Ich hatte es mal ausgerechnet, das sind etwa 100 Kilobyte.
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.
Du kannst ja sagen, du du, dein Passwort ist aber doof.
Genau.
Und wenn du das sagst, dann weißt du, dass es vielleicht so ist, vielleicht aber auch nicht.
Wenn der aber Nein sagt, dann weißt du, dass es auf jeden Fall keins dieser Passwörter ist, die du gespeichert hast.
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.
Viel, viel, viel weniger, als man sich das je vorstellen könnte.
Aber jetzt ist es halt leider so, so eine Art Problem braucht man halt nicht so häufig.
Deshalb habe ich nur sieben solcher Einträge drin.
Einer davon Bloomfilter, den schreibt ihr jetzt euch alle in euer Algorithmenbuch direkt rein.
Wie schreibt man den denn den Bloom-Filter mit UH, mit OO?
So wie Orlando.
Okay.
Doppel Null.
B-L-O-O-M-Filter.
Weil der nämlich blüht, also der blüht auf, wenn du die Abfragen machst.
Wenig Daten, die dir viele Antworten gibt.
Ja, super spannende Technik habe ich es noch nie irgendwo verwendet.
Auch da hat es dann zerschlagen, weil wir doch einfach eine ganz andere Sache gemacht haben mit unseren Passwörtern.
Aber gut.
Fast ein Algorithmus, den man fast gebraucht hätte, ist ja schon mal etwas.
Ja, insofern, Win oder Fail, auch hier.
Ich werde mal, vielleicht werde ich es mir öfter wieder zu.
Vielleicht fallen mir mehr spannende Sachen auf, die man da reinschreiben könnte.
Exotische Sachen.
Vielleicht mache ich auch einfach nächstes Mal dieses Buch nochmal auf und wir sprechen über furchtbar exotische Sachen.
Sukkulenten.
Ja, noch exotischer.
Noch exotischer, na gut.
Viel exotischer.
Ja.
Wenn ich es so überlege.
Also ich meine, das hatte ich auch vielleicht schon mal erwähnt.
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?
Ja, naja.
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.
Also, aber ja.
Eine andere Geschichte, die mir mal.
Kryptomnese.
Wisst ihr, was Kryptomnese ist?
Nee.
Das ist, wenn man selber was erfindet, was es aber schon gibt.
Ja.
Weil man sich dann doch irgendwie halt doch dran erinnert, so unterbewusst.
Das kann auch gut sein, dass das so ist.
Oder eigentlich ist es einfach so genial, das hat einfach jemand anders von mal diese Idee, aber völlig unabhängig.
Das ist eine Annahme, die wäre mir sehr sympathisch.
Das Problem dabei ist, dass halt verlangen damals nie.
Bei mir natürlich zu.
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.
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.
So, oh, jetzt nicht mehr.
Aber ja.
Ja, das ist doch die Feinmann-Problemlösungsmethode, kennt ihr die?
Die hat drei Schritte.
Erster Schritt Problem hinschreiben, zweiter Schritt nachdenken, dritter Schritt Lösung hinschreiben.
Da gibt es dann auch die angewandte Feinmannsche Problemlösungsmethode.
Die heißt auch manchmal die studentische Problemlösungsmethode, hat auch drei Schritte.
Erster Schritt ist Problem hinschreiben, zweiter Schritt ist ganz, ganz arg drüber nachdenken, dritter Schritt ist heulen.
Das passiert auch häufiger, als man sich das so wünscht.
Ja, ich erzähle mich da eher zu der.
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.
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.
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.
Also entweder man kann da irgendwie Dinge kaufen oder draufklicken oder so, oder halt eben nicht.
Aber der Grund dafür kann halt aus ganz vielen unterschiedlichen Dingen bestehen.
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.
Oder er ist irgendwie, keine Ahnung, man ist mit ihm in einem Rechtsstreitigkeit verwickelt und ist vor Gericht.
Dann weiß ich nicht, der hat.
Das sind eigentlich alle Möglichkeiten, die es gibt.
Die Daten sind irgendwie kaputt.
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.
Aber im Endeffekt muss er entweder online sein oder nicht.
Aber es gibt halt dann so Zustände, aus denen will man nicht wieder zurück.
Und manche Zustände, da will man aber wieder zurück.
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.
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.
Und das ist, das wird komplizierter, als man sich das so vorstellt.
Und wir hatten dann halt irgendwie, wir hatten das halt zuerst in Code alles.
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.
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.
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.
Lass uns das doch irgendwie formalisieren und irgendwie da so einen endlichen Automaten oder so draus bauen.
Und das ist uns aber nie gelungen oder nicht so richtig.
Und dann, also als nicht-deterministischen Automaten konnten wir uns irgendwie hinschreiben, aber als deterministischen nicht.
Und dann kann doch nicht sein, dass das so schwierig ist.
Ja, und dann haben wir tatsächlich irgendwie.
Aber du kannst doch jeden nicht-deterministischen Automaten, als einen deterministischen Automaten mit zwei hoch N Zuständen modellieren, ja auch ein Mensch.
Ja, du weißt es einfach so direkt.
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.
Genau.
Ja, genau.
Ja, aber das ist doch der große, der große, das ist doch das darunter liegende Problem für P gleich NP.
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.
Und ja, die Konsequenz davon ist, ist die Frage P gleich NP oder nicht.
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
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.
Ja, wir hatten ja vorhin schon kurz angerissen, dass man Algorithmenlaufzeiten mit Groß-O-Notationen missten.
Ja, also wie schnell ein Algorithmus sich entwickelt, wenn man ihn mehrmals macht, oder?
Nee, genau, wie schnell sich ein Algorithmus, wie schnell die Laufzeit sich entwickelt, wenn sich die Problemgröße verändert.
Also wenn ich zum Beispiel irgendwelche Berechnungen mache, dann ist die Problemgröße üblicherweise die Größe der Zahl.
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.
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.
Und die Frage ist, wie viel langsamer wird es denn, wenn die Zahl größer wird?
Und weil das von Mathematikern erfunden worden ist, sind alle endlichen Zahlen hier direkt egal.
Sondern es geht nur um, wie verhält sich das denn, wenn wir in Richtung Unendlich gehen.
Das ist genau das Problem bei den galaktischen Algorithmen.
Den Mathematikern sind die absolut recht.
Dass man die nicht in der Praxis einsetzen kann, ist uns Mathematikern einfach egal.
Weil da geht es nur um die Korrektheit.
Also im Wesentlichen ist es die Frage, wenn ich die Problemgröße verdoppele, wie verändert sich dann meine Laufzeit?
Wenn ich jetzt zum Beispiel einen Algorithmus habe, der O von N ist, dann heißt es linear.
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.
Das ist leicht planbar, das ist absehbar.
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.
Das ist leicht zu planen.
Schon ein bisschen schlechter ist O von N Quadrat.
Das heißt, wenn ich die Problemgröße verdopple, dann vervierfacht sich die Laufzeit des Problems.
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.
Dann brauche ich ein viermal so schnell.
Root Force von Schwieger.
Genau.
Und entsprechend gibt es dann natürlich auch N hoch 3 und N hoch 4 und N hoch 5.
Und diese ganzen Dinge heißen alle Polynome.
Die sind alle polynomiell.
Weil die im Wesentlichen handhabbar sind.
Die wachsen nicht ungeheuer schnell.
Ein Polynom mit n hoch 100 wächst auch ungeheuer schnell, aber kann man, ist okay.
Das ist sozusagen das, was man als Mathematiker akzeptiert.
Polynomielles Wachstum.
Jetzt gibt es so eine Grenze, wo, oder ja, so einen Schnitt, wo es Funktionen gibt, die wachsen schneller als jedes Polynom.
Und das sind die exponentiellen Funktionen, also 2 hoch n.
Das heißt, wenn ich mein Problem verdopple, dann wächst die Laufzeit mehr als jedes Polynom wachsen kann.
Also größer als n hoch 100, größer als n hoch 1000, sondern 2 hoch n.
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.
Das ist eben eine der Kerneigenschaften der Exponentialfunktion, dass das Wachstum genauso schnell ansteigt wie die Funktion selbst.
Das in zwei Minuten in einem Podcast zu erzählen, ist schwierig.
Das funktioniert aber gut.
Ihr müsst es einfach mal hinnehmen.
Ja, ja.
Ihr müsst es jetzt einfach mal hinnehmen.
Das ist schlechter als jedes Polynom.
Und jetzt ist es so, man hat Algorithmen gefunden für Probleme, die sich in polynomialer Laufzeit lösen lassen.
Zum Beispiel Primfaktorberechnung.
Wobei das schon so eine Sache ist, die hart umstritten ist, ob das jetzt deterministisch oder man das erlauben möchte oder nicht.
Es gibt viele Algorithmen, die sind in polynomialer Laufzeit machbar, Sachen, die man berechnen kann.
Pfadberechnungen, Volltextsuche prinzipiell.
Solche Sachen sind alle in polynomialer Laufzeit berechbar.
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.
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.
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.
Und die einzige Möglichkeit, die es da gibt, im Wesentlichen, ist einfach alle Kombinationen auszuprobieren.
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.
Das heißt, ich habe n Bits, die ich setzen kann.
Ich muss die Menge aller Teilmengen sozusagen ausprobieren.
Genau, die Menge aller Teilmengen, also die Menge aller möglichen Summen, die ich bilden kann mit den Zahlen, die mir gegeben sind.
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.
Und das ist der beste Algorithmus, den es gibt.
Also es gibt da so deterministische, es gibt da so probabilistische Sachen, ja.
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.
Und das ist unglaublich, aber es ist immer noch exponentiell.
Jetzt ist die Frage, gibt es für diese Probleme auch polynomielle Algorithmen?
Gibt es auch für diese Probleme Algorithmen, die in polynomieller Laufzeit das Ergebnis liefern?
Und die Antwort darauf ist unklar, die ist unbekannt.
Und das ist genau die Frage, ja.
Ist P gleich NP?
Jetzt ist es so, da kommt noch dazu, diese Probleme, die man gefunden hat, die nennt man NP, nicht deterministisch polynomiell.
Das sind alle solche, die in exponentieller Laufzeit laufen.
Und lustigerweise sind die alle irgendwie äquivalent.
Also man kann die alle so ineinander umformen, dass alle das gleiche sind.
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.
Und das ist das Verrückte da drin, ja.
Diese ganze Klasse an Problemen sind alle irgendwie mehr oder weniger äquivalent.
Aber man weiß nicht, einen einzigen in polynomialer Laufzeit zu lösen.
Und das ist die Frage, gibt es einen solchen Algorithmus?
Gibt es so einen polynomiellen Algorithmus für irgendeines dieser Probleme oder gibt es diesen Algorithmus nicht?
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?
Gibt es nur solche, die polynomiell lösbar sind?
Und das ist die ungeklärte Frage, ist P gleich NP?
Wenn man dieses Problem löst, kriegt man direkt eine Million Dollar überwiesen, weil da gibt es einen Clay-Preis dafür.
Ja, also ein Mathematikpreis, der da ausgeschrieben ist, ist mit einer Million Dollar dotiert.
Und ich glaube auch eine Fieldsmedaille und eine Turing-Medaille und alle anderen Medaillen, die es so gibt in dem Feld, wären eigentlich
schnell sicher.
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.
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.
Und du kannst halt mit einer deterministischen Turing-Maschine in Polynomialzeit überprüfen, ob die Lösung richtig war oder nicht.
Sozusagen, das ist halt irgendwie die Namensgeschichte.
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.
Ja, da gibt es noch ganz viele und diese ganzen Space-Klassen gibt es ja auch alle noch.
P-Space und NP sind.
Da gibt es so eine ganz große Hierarchie davon.
Aber das sind die einzigen, die so richtig bekannt sind.
Ja, und
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.
Und die dann entsprechend länger braucht.
Das heißt, die hat keine polynomiale Laufzeit mehr.
Und das ist die Krux an der Sache.
Und jetzt vielleicht noch ganz, ich weiß nicht, das ist bestimmt ja nur ein Satz.
Der Unterschied zwischen der nicht-deterministischen und der deterministischen Turing-Maschine.
Oh, Jochen, das darfst du mal erklären.
Das ist schwer zu erklären.
Naja, sagen wir so, das eine ist halt etwas, was wir bauen können, das andere irgendwie nicht so richtig.
Also sozusagen, äh, eine.
Es ist so, ich versuch's mal zu erklären.
Eine Turing-Maschine ist ja so ein Automat, der hat eine gewisse Anzahl Zustände und in jedem Zustand macht er bestimmte Dinge.
Und in einer deterministischen Turing-Maschine nimmst du immer einen Übergang.
Du gehst immer von einem Zustand in einen anderen Zustand.
Weil das ist, was wir bauen können, wie der Jochen gesagt hat.
Wenn der Zustand jetzt A ist und dann sind die Bedingungen gegeben, dann gehe ich als nächstes in den Zustand B.
So.
Easy.
In einer nicht-deterministischen Turing-Maschine legst du dich nicht fest.
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.
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.
Und das ist halt nicht zu bauen, ja?
Das kannst du nicht bauen.
Du sagst sozusagen erst am Ende, welchen Weg du durch die Zustände genommen hast.
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.
Aber so ein bisschen, was geht dann in die Richtung.
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.
Dazu gehört sowas wie Graphen-Isometrieb.
Primzahlfaktorisierung, das ist ein wichtiges, also das ist halt blöd, wenn es Quantencomputer tatsächlich geben sollte.
Das macht RSA kaputt.
Und für DSA gibt es, glaube ich, auch so ein.
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.
Also wenn es einen mit genügend Kubits gibt, dann haben wir ein Problem.
Es sei denn, wir haben auf Postquantum-Kryptografie gesetzt oder so, was aber keiner macht, weil das kann aber gar nicht passieren.
Naja, mal sehen.
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.
Also es gibt schon so Hinweise, dass man dringend auf Postquantenalgorithmen
wechseln sollte.
Okay.
Ja, jedenfalls die Komplexität.
In 50 bis 100 Jahren wissen wir das dann auch, ob die mehr wussten als wir.
Also diese Komplexitätsklasse wird, glaube ich, dann MPI genannt, so MP Intermediate oder so, und da sind halt so ein paar Dinger drin.
Leider ja, das sind halt auch so ein paar wichtige.
Ja.
Aber tatsächlich ist es immer noch, also ach genau, und diese Klasse gibt es überhaupt nur dann, wenn P ungleich entpegelt.
Wenn P gleich entpegelt, ist es natürlich sowieso Quatsch.
Aber dann geht es auch dabei.
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.
Ja, kann
schon sein.
Da wäre dann ein Beweis halt besser.
Und als Mathematiker muss ich sagen, ein Beweis ist immer besser.
Ja, ja.
Es ist ja nicht nur so, ja.
Es ist ja nicht nur, man kriegt ja die Millionen Dollar nicht, wenn man diesen Algorithmus findet.
Man kriegt ja die Millionen Dollar auch, wenn du beweist, dass es diesen Algorithmus nicht gibt.
Also wenn du P ungleich NP beweisen kannst.
Nur ist bisher auch niemandem gelungen.
Nee, also es ist auch nicht so, dass es nicht verversucht worden wäre.
Es haben schon diverse Leute, da sich da an dem Ding die Zähne ausgedrückt.
Ab und zu gucke ich da mal rein, wenn ich denke so, oh, interessanter Blogartikel.
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.
Und dann irgendwann denke ich mir so, dann
klicken wir mal auf später lesen.
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.
Okay, später lesen.
Einschlafvektüre ordnen, ja.
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.
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.
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.
Und diese Diskussion hat sich etwas länger hingezogen als notwendig.
Aber hat er dann logarithmische Komplexität, oder?
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.
Auch das überrascht Leute manchmal, wenn man das Szenen beibringt.
Und dass man sagt, okay, das Einfügen in ein Dictionary dauert immer konstant lang, egal wie groß das Dictionary ist.
Und auch das Raussuchen eines Keys dauert immer gleich länger, egal wie groß das Dictionary ist.
Bis auf ein paar Unwägbarkeiten, selbstverständlich, und auch bis auf die Endlichkeit unserer endlichen Computer.
Aber im Wesentlichen dauert das immer gleich lang.
Und das ist ja schon was Überraschendes, ja.
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.
Dass es sowas gibt und dass es sowas trivial für uns zugänglich gibt.
Aber du wolltest auch die Story hinaus, in der du mit jemandem über die Nicht-Beweisbarkeit.
Ja, das ist im Wesentlichen die Story, dass halt jemand versucht hat, mich davon zu überzeugen, dass es die universelle Mathematik gibt.
Er hat dann auch irgendwann angefangen von seinen Erfahrungen in Indien zu sprechen, wo er Einblick in das Universum bekommen hatte.
Was mich natürlich in unserem 70er Jahre Betonbau im Tübinger Institut für Mathematik relativ wenig beeindruckt hat.
Ja, es gibt so Leute, die haben.
Das war irgendwie, keine Ahnung, irgendwie Ramanouyan 2 oder so und du hast ihn weggeschickt.
Meine Güte.
Ja, das war neue Mathematik und ich habe sie halt verschmäht.
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.
Vielleicht ist da einfach noch nicht genügend Zeit reingeflossen.
Vielleicht ist die Mathematik, die wir jetzt haben, einfach wirklich nicht ausreichend.
Um diesen Nichtexistenzbeweis zu führen.
Und irgendwann kommt sowas ganz Verrücktes um die Ecke, wie Andrew Wiles, ja.
Der ja Sachen bewiesen hat, die überhaupt gar nichts damit zu tun haben.
Das war jetzt ein, der war ein bisschen zu weit weg für den Podcast, den musst du jetzt wieder herauskommen.
Ja, Andrew Wiles ist derjenige, der den Satz von Fermat bewiesen hat.
Das Theorem von Fermat.
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.
Der erste Eintrag auf Google sagt dazu, dass er durch seinen Beweis der Taniyama Shimura-Vermutung berühmt wurde.
Genau, richtig.
Ach so, ja, genau.
Okay.
Ja, und die enthält eben Fermars letztes Theorem als Teilmenge, mehr oder weniger.
Also er hat mehr bewiesen als Vermars letztes Theorem, aber dafür ist er bekannt, dafür gibt es auch einen Film über ihn.
Und wird uns allen lange im Gedächtnis bleiben dafür.
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.
Wenn ich da richtig rum drauf schaue, dann sieht man, dass es einen solchen Algorithmus nicht geben kann.
Und zack.
In 300 Jahren halt.
Tja.
Da sind wir vielleicht nicht mehr im Leben.
Tja.
Je nachdem, wann wir geimpft werden.
War das nicht ein schöner Bogen?
Ja, ja, ja, ja, ja.
Ja, jetzt haben wir ganz viel über Fails gesprochen.
Gibt es denn auch irgendwas, was ihr so richtig, wo ihr so richtig sagen würdet, das hat funktioniert bei euch in Projekten?
Weil das ist ja was, was schöner ist und was leider nicht so häufig.
Also oft, äh, eben ja, ich meine, das hatte ich mir auch schon aufgeschrieben.
Also Dicts, ja, so Hashes, diese Art Datenstruktur ist etwas, was man einfach ständig braucht.
Und das ist total super.
Also wer nur Dicts hat, nur Listen und nur Skalare, da kommt man damit schon sehr, sehr weit.
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.
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.
Das geht da alles weg, weil das einfach jetzt schon drin ist, fertig.
Ja, und das ist halt total nett.
Also das würde ich sagen, ist ein großer Win.
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.
Das ist bei PHP so, das ist bei Pearl so, Ruby und Rails eben Python.
Ich bin dann halt bei Python hängen geblieben.
Ich würde sagen, ja, Ruby on Rails ist auch eine gültige, gültige Programmiersprachenlösung, wann hängen bleibt.
Auch ein Win.
Vielleicht auch Pearl 6, das habe ich wieder nicht mehr angeguckt, keine Ahnung.
Aber gibt
es das schon, das ist schon raus.
Das ist schon raus, tatsächlich, ja, ja.
Aber genau, also so und ja, das ist toll, das ist den allen gemeinsam und das funktioniert wirklich ganz gut.
Hast du auch konkrete Kriegsgeschichten, Jörn?
Also ich meine, wir haben alle konkrete Geschichten, wie wir schon mal eine Datenbank gelöscht haben und wie wir schon mal.
Ein Win, ja, so Winn.
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.
Und zwar das Array-Modul.
Ich weiß nicht, ob euch das versagt.
Da habe ich tatsächlich heute drüber nachgedacht, ob das überhaupt was ist, was man je braucht.
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.
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.
Aber inzwischen gibt es ja Cycled Learn.
Und das habe ich auch verwendet.
Das habe ich vor allen Dingen in so Kagel Competitions verwendet.
Also das sind so Machine Learning Wettbewerbs-Dinger.
Aber ich hatte halt nicht so viele Hauptspeicher.
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.
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.
Und dafür musst du die ganzen Worte zählen und so.
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.
Und Listen sind halt nicht so richtig.
Dass er prinzipiell nicht so blöd ist.
Prinzipiell nicht so blöd funktioniert, ist auch alles praktisch.
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.
Listen auch, Listen haben wir auch nochmal Overhead.
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.
So 32-Bit oder 64-Bit, wie auch immer.
Ja, und bei mir ist der Haupt, mir ist der Hauptspeicher halt tatsächlich bei dieser Competition halt ausgegangen.
Und ich dachte mir so, ah, okay, kriege ich das irgendwie gedrückt.
Und da bin ich dann halt über dieses Array-Modul gestolpert.
Und ja, das hat tatsächlich funktioniert.
Und zwar kann man ja einfach statt einer Liste so ein Array nehmen.
Und dann braucht das tatsächlich nur noch so viele Speicher, wie da halt das Integer, was man da speichert, halt an Platz braucht.
Und das ließ sich relativ problemlos austauschen und das hat halt irgendwie so den Speicherbedarf gedrittelt ungefähr.
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.
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.
Das ist einfach ein anderer Konstruktor, den du aufgerufen hast.
Ja, also der Code hat sich dann auch nochmal an ein paar Stellen geändert, aber ja.
Ja, aber das ist natürlich echt das Coole.
Auch was echt für die Welt getan sozusagen.
Ja, gut, ich weiß nicht, ob das nicht.
Für einen kleinen Teil der Welt, aber es ist ein witziges, aber.
Das kann man durchaus erwähnen.
Das ist echt cool.
Um das noch kurz nachzuführen, das Array-Modul ist einfach sozusagen gepackte Listen.
Also quasi C-Strucks oder C-Arrays als Python-Bibliothek und sorgen halt dafür, dass man nicht genau diese Listenoperationen hat.
Aber dafür hat man halt auch nicht den Listen-Overhead.
Ja, es muss halt alles vom gleichen Typ sein, was da drin ist.
Die Größe muss bekannt sein.
Ja, genau.
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.
Man kann das aber auch selber einstellen.
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.
Ja.
Ja, das ist witzig.
Ich habe tatsächlich auch eine Geschichte, die ist aber sozusagen das Gegenteil von deiner Geschichte.
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.
Und wenn Listen jetzt so cool sind über Array, wie gehen denn Dicks so schnell?
Vielleicht da nochmal kurz.
Also das wird ja irgendwie implementiert, aber wie funktioniert denn das?
Es gibt da ein Table über dieses Dikt und da guckt man einfach drin oder wie macht man das?
Ja, da gibt es verschiedene Techniken, aber im Wesentlichen ist so ein Dictionary ja ein sogenannter Hashtable.
Ja, ja.
Das ist auch, das gibt es eigentlich in den allermeisten Programmiersprachen, die heißen immer ein kleines bisschen anders.
In Java zum Beispiel heißen sie Hash Map.
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.
Also unter einem bestimmten Key habe ich irgendein Value eingespeichert.
So das klassische Modell ist das Telefonbuch.
Zum Key Dominic ist deine Telefonnummer eingespeichert und zum Key Jochen ist Jochens Telefonnummer eingespeichert und zum Key Johannes ist meine Telefonnummer eingespeichert.
Das ist so das klassische Dictionary, ja, ein Wörterbuch.
Zu einem Wort auf Deutsch ist dazu gespeichert, das Wort auf Englisch.
Und jeden Eintrag kann es, jeden Key-Eintrag kann es halt nur einmal geben und das Value kann dann irgendwas sein.
Das kann eine Liste von Wörtern sein oder kann irgendwas sein.
Das spielt erstmal keine Rolle.
Jetzt ist ja schon mal, diese Datenstruktur an sich ist ja schon mal schwierig zu visualisieren.
Wie würde man sowas speichern?
Und die einfachste Liste, sowas zu speichern, ist, dass man sich sozusagen diese Paare speichert.
Einfach als Abfolge von Paaren.
Das erste, was ich mir gemerkt habe, Dominik ist deine Telefonnummer, also schreibe ich mir auf in meine Liste oben Dominik, Telefonnummer von Dominik.
Eins.
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.
Telefonnummer von Jochen ist 17.
Mist, habe ich jetzt deine Telefonnummer verraten.
Und dann merke ich mir meine Telefonnummer auch noch.
Das heißt, ich schreibe mir in meine Liste, in meine Abfolge von Werten einfach rein, Johannes,42.
So, das ist meine Telefonnummer.
Und das ist gut, weil das bedeutet, wenn ich eine neue Telefonnummer eintragen möchte, dann ist das ganz einfach.
Ich muss nur dieses Paar merken und es als Ende meiner Liste schreiben.
Und das ist leicht.
Das Herausfinden eines Eintrags ist da aber langsam, weil ich muss von oben nach unten durchgehen.
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.
Dann suche ich schaue ich mir den zweiten Eintrag an und sage, ist das der Eintrag, den ich suche und da steht Jochen.
Und es ist also nicht der Eintrag, den ich suche.
Und erst der dritte Eintrag, den ich suche, ist der Eintrag, wo Johannes mit meiner Telefonnummer dabei steht.
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.
Aber das Heraussuchen wäre O von N.
Und das ist schlecht.
Weil üblicherweise möchte man mindestens genauso oft raussuchen, wie man reinschreibt.
Normalerweise sucht man viel mehr raus, als man reinschreibt.
Das heißt, wir wollen, dass auch das Heraussuchen O von 1 ist oder zumindest schneller ist.
Und jetzt
genau und jetzt kommt die Magie dazu, die magische Zutat sind Hashes.
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.
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.
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.
Also ganz viele Sachen, die man da reintut.
Ich weiß auch gar nicht genau, was da für ein Hash verwendet wird.
So, das heißt, dieses Dictionary, was wir vorher als Liste von Schlüsselwertpaaren hatten, wird jetzt zu einer Liste, die erstmal leer ist.
Ich sage mir, okay, ich gehe davon aus, dass ich im Laufe meines Lebens 16 Einträge in mein Telefonbuch speichern möchte.
Jetzt kommt der erste Eintrag und der erste Eintrag heißt Dominik,1.
Das heißt, der Schlüssel heißt Dominik und der Wert dazu heißt 1.
Jetzt nehme ich den Schlüssel und hashe diesen Schlüssel und kriege jetzt als Hash eine Zahl von 0 bis 16 raus.
Also eine Zahl in meinem Adressbereich.
Jetzt gucke ich in meine bislang leere Liste und sage, da steht noch nichts.
Okay, perfekt.
Also schreibe ich da den Dominic rein, also den Wert von Dominik.
Das heißt, in meiner Liste steht jetzt ganz viel nix und an einer Stelle steht deine Telefonnummer.
Jetzt kommt der zweite Wert.
Der zweite Wert für Jochen, ich nehme wieder meinen Hash von Jochen und da steht jetzt halt 10.
Da kommt jetzt 10 raus.
Das heißt, in meine Liste schreibe ich jetzt an der Stelle 10 die Telefonnummer von Jochen rein.
Bei Dominik sagen wir, er kommt 12 raus.
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.
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.
Das dauert immer gleich lang.
Ich muss diesen Hash ausrechnen und dann an die Stelle, die mir der Hash gegeben hat, die Zahl reinschreiben.
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.
Das sind Implementierungsdetails.
Die bleiben dem geneigten Laser als überlegen.
Du musst einmal kurz den Space verdoppeln, den man braucht oder sowas.
Genau, musst du entweder Space verdoppeln oder musste eine Liste von Werten anlegen oder musste irgendeine Kollisionsstrategie musst du dir überlegen.
Und auch eine Größenstrategie musst du dir auch überlegen.
Okay, einfügen ist immer noch O von 1.
Heraussuchen ist jetzt auch eine andere Operation.
Ich sage, ich möchte die Telefonnummer von Jochen wissen.
Ich nehme jetzt also den Hash von dem Namen Jochen und kriege raus, die Telefonnummer von Jochen steht in meiner Liste an Stelle 10.
Das Haschen dieses Wertes, also die Adresse sozusagen berechnen, wo ich die Telefonnummer gespeichert habe, das ist immer gleich, das dauert immer gleich lang.
Und jetzt in diese Liste an der Stelle 10 reingucken, dauert auch immer gleich lang.
Und da steht genau die Telefonnummer von Jochen drin.
Das heißt, auch das Heraussuchen dauert jetzt O von 1.
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.
Über lange Zeit dauert jeder Zugriff auf ein Dictionary gleich lang.
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.
Genau, also es gibt oft so Situationen, wo es ein Trade-off gibt zwischen Rechenzeit und Speicherplatz.
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.
Da haben sie eine bessere Implementierung, die keinen großen Overhead haben drin.
Was sehr, was noch beeindruckender ist, was wir uns auch gerne mal genauer anschauen können, wenn du das mal vorbereitest, Jochen.
Ja, sich das mal im Detail anzugucken, wäre nicht so uninteressant.
Ich hatte jetzt noch im Hinterkopf, dass irgendwie diese Dikt-Implementation in Python, dass das irgendwie so Try-basiert ist oder so.
Aber das ist, es kann sein, dass das auch nicht so gut ist.
Ja, die
machen halt so Zwischenschritte.
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.
Ähm, das sind auch so Implementierungsdetails, weil es halt schneller ist.
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.
Dictionaries sind im Wesentlichen der Kleber, der Python zu Python macht.
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.
In Python ist es halt ein Dictionary mit den Namen von dem, von diesem, von dieser Instanz und fertig.
Und auch die lokalen Variablen, ja, die liegen alle in dem Dictionary.
Da gibt es keine Speicher-Map und da gibt es keine festzugewiesenen, da gibt es keinen Stack und nichts, sondern.
Also Stack gibt es auch noch, aber die lokalen Variablen in einem Frame liegen immer in einem Dictionary drin.
Aber deshalb ist die tatsächliche Implementierung hier sehr detailliert und sehr ausgefeilt, weil sich es eben lohnt, hier jede Nanosekunde rauszuholen.
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.
Ja, also das ist, also die Python-Dikt-Implementation ist halt auch so eine der schnellsten Hash-Implementationen, so die es überhaupt gibt.
Und ja, eben weil sie halt auch so wichtig ist.
Und das ist auch manchmal dann überraschend, wenn man in anderen Sprachen unterwegs ist oder mit Leuten sich unterhält, die in den anderen.
Also ich hatte das auch schon mal, ich wollte das mal irgendwie, ich habe mit einem Python-Dikt angefangen bei irgendeiner Geschichte.
Ich weiß jetzt gar nicht mehr genau, was es war.
Ich wollte irgendwelche Dinge unique machen, irgendwie riesige Sachen und das war irgendwie zu langsam.
Und dann dachte ich so, okay, das muss ich wohl dann doch mal irgendwie in C oder C<unk> oder so neu machen.
Und hab das dann in C<unk> versucht.
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.
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.
Boost gab's genau und hab das halt halt so probiert, hab das gematcht, dachte ich so, hä, habe ich irgendwas falsch gemacht.
So, irgendwie kann ja nicht sein.
War deutlich langsamer als die beiden.
Und hab dann also auf Stack Overflow so naiv nachgefragt, so irgendwas mache ich hier falsch, was ist denn da los?
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.
Ja, das ist eigentlich noch gar keine richtige Hash.
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.
So, okay, Moment, aber das ist so eine Datenstruktur, die man dauernd verwendet.
Ja, wie, äh, was?
Und ja, das geht auch schneller.
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.
So, vielleicht auch nicht.
Mal gucken, ich glaube, das sollte anders machen.
Python nimmt oder so.
Ja.
Aber das ist ja.
Da ist Python wirklich stark.
Also das ist ja.
Ja, aber es ist halt auch einfach wichtig.
Es gibt so Späße, wo man jede Programmiersprache beschreibt als eine Kerneigenschaft.
So eine Liste, die ich mal gesehen habe, war eben jede Programmiersprache beschrieben als What if everything was an.
Und da war zum Beispiel C, What if everything is a pointer und Java is what if everything is a pattern?
Under Python war halt, what if everything is a dictionary?
Und das ist schon so.
Es ist einfach alles ein Dictionary und wenn man irgendein Problem mit Dictionaries lösen kann, dann ist das sehr gut.
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.
War tatsächlich das erste richtig große kommerzielle Projekt, wo ich mitgewirkt habe.
Wo ich alleine mitgewirkt habe, muss man so zu sagen.
War auch Webshop und wir mussten da die Produkte aus einer API holen.
Und wir hatten sehr genaue Vorgaben.
Es waren Modeprodukte.
Wir hatten sehr genaue Vorgaben, wie lange wir sozusagen die Daten, die wir haben, cachen dürfen, wie alt unsere Daten sein dürfen.
Weil da gibt es ja Probleme mit Verfügbarkeit und mit Preisen, die sich dann auch ändern.
Also wir mussten einfach einhalten, dass wir maximal fünf Minuten alte Daten anzeigen dürften.
Was Preise und Verfügbarkeit angeht.
Und Produkteigenschaften auch, weil die dann oft dann halt im Betrieb eine Charge ersetzt haben durch eine andere.
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.
Wir durften einfach nichts anzeigen, was älter ist als fünf Minuten.
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.
Das heißt, wir mussten 20 API-Aufrufe machen und das war damals, als es noch kein Async gab.
Das heißt, wir mussten die mehr oder weniger seriell machen.
Und wir hatten halt furchtbar schlechte Zeiten.
Also die API, die wir benutzt haben, war super schnell.
Die hat nur so 20 Millisekunden gebraucht pro Aufruf.
Aber wenn du 20 von den Aufrufen machst, dann hast du halt direkt 400 Millisekunden verbrannt für nichts.
Du hast ja noch nichts selber gemacht.
Und wir haben versucht, die Sachen in den Cache zu legen und das hat auch nicht so richtig funktioniert.
Und irgendwann ist uns aufgefallen, dass wir tatsächlich genügend Hauptspeicher haben.
Wir haben genügend Hauptspeicher, um alle Produkte zu speichern, die wir je anzeigen.
Also haben wir das einfach gemacht.
Wir haben einfach alle Produktdaten abgerufen und die in den Cache gelegt.
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.
Und wir haben einfach Background-Jobs laufen lassen, die alle fünf Minuten jedes Produkt refreshed haben.
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.
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.
Weil der halt gesagt hat, okay, wir können ja mal ausrechnen, wie viel Speicher wir verbrauchen.
Wir probieren einfach mal aus, alle Produkte zu laden, die wir je haben.
Und die haben in den Cache gepasst, in unseren Memcached.
Und dann ist natürlich schön schnell, ja, weil dann so ein Memcached-Aufruf, der ist ja.
Der dauert nicht so lang.
Das heißt, wir konnten da tatsächlich unsere Response-Zeit um ein Vielfaches verbessern.
Einfach dadurch, dass wir die ganze Zeit den Cache refreshed haben.
Egal ob wir Traffic hatten oder nicht, ja.
Es war einfach, dieser Cronjob, der das gemacht hat, lief einfach die ganze Zeit.
Alle fünf Minuten hat der alle Produkte einmal durchgepinkt.
Ja, das erinnere mich.
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.
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.
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.
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.
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.
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
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.
Und dann kann man das auch verschwinden lassen.
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.
Und die Que von Neuberechnungsjobs ist jetzt so zwei Wochen lang.
Also es dauert dann irgendwie so zwei Wochen von irgendwie, es kommt ein neues Bild rein und es ist in den wichtigen Bildung.
Priorisierungen gehabt für Jochen.
Ja, das hätte man dann natürlich machen können.
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.
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.
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?
Wenn ich jetzt durch die Loks, durch die Serverloks gehe, wie viel von dem Kram wird denn tatsächlich da draußen angezeigt?
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.
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.
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.
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.
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.
Und deswegen hat es halt nicht funktioniert.
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.
Das ist irgendwie so.
Ja, aber das ist doch, als Entwickler macht man sich das doch oft, oder?
Also Stunden des Machens ersparender, Minuten des Nachdenkens, das ist schon oft so.
Ja, ja, natürlich.
Tja, wenn man, aber wirst du wo man nachdenken soll.
Ja, aber manchmal ist es auch wirklich so, dieses Größenordnungenüberdenken.
Das ist für mich auch manchmal so eine Live-Lesson.
Wir hatten bei unserem ersten Kind, haben wir zwei Fläschchen gehabt, mit denen wir dann jede Nacht die Milch gemacht haben.
Und das heißt halt, dass du ständig daran dabei bist, diese Fläschchen zu spülen.
Weil wenn eine, wenn du eine aufgebraucht hast, dann hast du nur noch eine.
Und ich bin dann halt irgendwann mal hier zu einem Supermarkt gegangen und hab einfach zehn solcher Fläschchen gekauft.
Das hat einen überschaubaren Geldvertrag gekostet.
Die kosten glaube ich zwei Euro Stück oder so.
Also es war, oder 2,50, ja.
Es ist wirklich egal.
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.
Einfach mal so Größenordnungen überdenken, man darf da, das ist eine sehr mächtige Sache und viel hilft.
Ja, es ist wirklich so.
Viel hilft halt manchmal einfach viel und kostet aber gar nicht so viel.
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.
Die man eigentlich einfach mal überdenken müsste.
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.
Und die simpelste Möglichkeit ist halt vertikale Skalierung, ja, mehr Hardware kaufen.
Weniger schlafen.
Im Falle der Fläschchen hat es.
Ja, und das hat dann auch direkt zu mehr Schlafen geführt.
Wenn du weniger Verwaltungsaufwand hast, ist
Ja, noch so eine Sache, bei so endlichen Ressourcen, ne?
Ja, aber so diese Zahl, auf die man sich irgendwann mal festgelegt hat, die ist ja nicht in Stein gemeißelt.
Und die ist weder bei Hauptspeichern in Stein gemeißelt noch bei der Anzahl der Utensilien, die man so hat.
Naja, glücklicherweise kann man auf die meisten Maschinen noch ein bisschen mehr Speicher oder sowas werfen, ne?
Oder halt mehr Fläschchen einfach so in einem Supermarkt kaufen.
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.
Dann wird es erst nervig, ja.
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.
Und ich meine, Hauptspeicher, es gibt halt Maschinen, die 6TB Hauptspeicher haben können.
Also ich habe Hauptscheme gehabt.
Das ist natürlich schon, also 6TB Hauptspeicher.
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.
Ja, ja.
Deshalb manchmal lohnt sich das über solche Größenordnungen einfach mal nachzudenken.
Und ja, das würde ich auf jeden Fall als Win bezeichnen.
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.
Und wenn die leer, wenn die Wäsche ist, dann ist die Schublade wieder voll.
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.
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.
Nicht kleckern klotzen, bigger is better und so weiter.
Genau.
Und wenn man irgendein Problem hat, was man eine Hauptspeicher kriegt, ja, warum nicht?
Oder wenn man es so trimmen kann, dass man es einen Hauptspeicher kriegt, noch besser.
Also das ist ein Win dazu, okay.
Eindeutig.
Und es gibt viele Gelegenheiten für solche Wins, deshalb ist es super.
Und die fühlen sich gut an.
So ein Win ist eine total tolle Sache.
Ja, wins ja gut.
Ja.
Ich muss allerdings dazu sagen, als ich die zehn Flächen gekauft habe, habe ich leider die falschen gekauft.
Also sie musste dann nochmal hin und die alle zurückgeben und neue kaufen.
Also es ist gemischt.
Win und Fail zusammen gemischt.
Und das ist doch ein schönes Resümee für das Jahr 2020.
Das ist doch ein schöner Jahresrückblick.
Win und Fail zusammen gemischt in gleich großen Proportionen.
Ja.
Dieses Jahr war eine Spur zu viel Fail, ehrlich gesagt, so für meinen Geschmack so in der Gesamtsituation.
Aber ja, sieht ja leider so aus, als ob das jetzt noch ein Jahr beschäftigt war.
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.
Und das ist ab dann denke ich jetzt, ab jetzt ist es halt jetzt.
Also es gab doch wahrscheinlich viele coole Sachen auch irgendwie.
Also ich weiß nicht, also ja, ja.
So ein paar Sachen sind vielleicht gar nicht so schlecht, dass das nicht mal so durch ist.
Ja, also das mit dem Homeoffice irgendwie, das ganz so normal ist zum Beispiel.
Das ist so eine Sache, die eigentlich schon selbstverständlicher hätte sein können, irgendwie länger.
Und die man sich ja auch so immer so dachte.
Ja, wobei Jochen und ich, wir leben das ja schon seit Jahren.
Ja, ich auch, übrigens.
Herzlich willkommen in unserem.
Das meine ich ja, genau.
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.
Ja, und es gibt noch so ein paar andere gute Sachen.
Also so ein paar Menschen sind nicht wieder gewählt worden oder so, das gab es ja auch und
noch ist er nicht weg.
Ja.
Ich habe tatsächlich im März noch mit einer Firma gesprochen, die hatten immer In-house-Entwicklung.
Und die haben dann aber umgestellt auf Homeoffice, hatten 3000 Entwickler, die dann plötzlich im Homeoffice waren.
Und weil das alles sicherheitskritisch war, war das alles mit Remote-Desktop und so.
Die hatten aber nur Remote-Desktop-Kapazitäten für 1000 Anwender.
Also die hatten einfach nur 1000 Desktops, diese Remote zur Verfügung stellen konnten.
Und haben dann relativ schnell gemerkt, dass da irgendwas nicht geht.
Tja.
Und mussten dann so ein kleines bisschen nachziehen.
Also auch der Übergang war da nicht immer ganz flüssig.
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.
Hätte ich gedacht so, so oh mein Gott, das gibt eine Katastrophe und es ist.
Das dauert Jahre.
Das dauert Jahre und das ist alles ganz schrecklich.
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.
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.
Ja, zum Beispiel die Schulen oder sowas, ne, das ist ja auch ein Riesenproblem, aber das wird halt einfach jetzt rapide, schneller, besser.
Und das brauchen wir ja wahrscheinlich, wenn wir irgendwie sowas wie die Zukunft irgendwann mal besser machen wollen, auch irgendwie.
Dass halt, da sind so ein paar Dinge, die halt dann doch schneller funktionieren.
Oder dass so ein Impfstoff so schnell entwickelt werden kann und so, ne?
Und wie viele Leute da auf einmal doch kollaborativ arbeiten können.
Alles nicht so schlecht.
Und dass man entdeckt hat, dass China nicht wirklich vertrauenswürdig ist.
Also gar nicht so schlechte Dinge.
Ja, ha, sowas.
Ich habe vor kurzem den Traffic von einem niederländischen ISP gesehen.
Die hatten so eine Zusammenfassung, war auf Twitter.
Und die haben Traffic-Spitzen zu jeder vollen Stunde zu den Bürozeiten.
Ja, ja.
Weil da die Videomeetings anfangen.
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.
Sehr schön.
Und in der Mittagspause sieht man eben, dass dieser Peak nicht da ist, weil um zwölf eben keine Meetings anfangen.
Und es ist sehr, sehr schön.
Ja, ja, ja.
Ja, auch noch so eine Sache.
Ja, dass die alle darauf aufmerksam haben, dass man die Kapazitäten da ernsthaft ausbauen muss, vielleicht auch.
Also endgültig, das wusste man ja eigentlich schon so, aber ne, so diese Notwendigkeit.
Und ja, es gab ein paar schöne Sachen gab es ja auch dieses Jahr.
Ja.
Selbstverständlich.
Corona-Kekse, ich meine.
Ich habe die ja letztens, hat man das eigentlich gesehen.
Ich habe die ja auch dann verlinkt, ob man das kaputt will.
Ja.
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.
Du meinst, ist es noch jemand dabei, jetzt um diese Zeit bringt.
Ja, selbstverständlich.
Also ich meine, wir haben noch nicht mal die zwei Stunden überschritten.
Okay.
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.
Ja, aber naja.
Also ich habe alle Episoden vom Python-Podcast nachgehört gleichzeitig.
Selbstverständlich.
Hatte ich ja nicht mal Zeit dafür.
Ich weiß auch, woher die 25 kriegt herkommt.
26 waren es ja, weil das waren ja 26 Episoden.
Die eine
Episode hast du schon gehört.
Ja, die erste, die Einführung.
Nee, aber das ist doch immer, es gibt doch immer.
Also ich meine, ja, an Weihnachten hat man Zeit, die Sachen zu machen, die man sonst nicht macht.
Ja.
Ja, naja, diesmal war ein bisschen unentspannt, ehrlich gesagt.
Ja, fandest du ja?
Also ich habe schon am Tag vorher acht Stunden Suppe gekocht und Soße.
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.
Ja, gut, also es war zu Hause Weihnachten.
Ja.
Aber das ist doch nicht unentspannt.
Zum Teil sogar viel entspannter.
Also ich fand es viel entspannter.
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.
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.
Ja, und es ist halt blöd, wenn die Lokomotive nicht fährt, weil keine Batterien da.
Und wenn Prime nicht liefert, Same Day Delivery an Weihnachten, dann muss man verschämt halt.
Ja, also das ist ja gar nicht.
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.
Eine gute Idee, aber das Problem ist irgendwie die Marge.
Distribution.
Du brauchst ja so fliegende Drohne, die sagen.
Du kaufst eine Batterie für 5 Euro ein Stück an Weihnachten zahlen die Leute.
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.
Die hat sehr große Reichweite, diese Drohne, theoretisch gesehen.
Ja.
Auch ein Wind übrigens.
Ja, ruhige Weihnachten war für einige Leute vielleicht mehr Wind, für einige Leute weniger Wind.
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?
Jetzt kommen ja bald noch ruhige Silvester.
Das erste Mal richtig ruhiges Silvester.
Glaubst du dran?
Da bin ich auch gespannt, ob das wie das.
Also eine Knalle vorher, nachher wird wie immer sein.
Und sonst.
Ja, das wird halt genau um die zwei Minuten vor Nachmittagnacht wird wahrscheinlich nicht so laut sein wie sonst.
Ja, eben, das meine ich ja.
Feuerwerk ist nicht im Verkauf und das wird schon.
Tja, wollen wir noch irgendwelche Dinge picken oder sowas?
Standardlib?
Oder irgendein Modul aus Standard-Lib besprechen?
Oh, ich weiß eins, ich weiß eins.
Array.array.
Ich wollte auch
gerade Array sagen.
Du wirst gemeint, was man mit meinem Picke klaut ist.
Das sieht mir jedes Mal.
Ja, stimmt, das ist ein sehr schönes Modul.
Wir picken das jetzt einfach an.
Warte mal, ich muss auch mal Standard-Lib aufmachen.
Vielleicht finde ich auch was.
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.
Wenn man die ganzen anderen Dinge, die NumPy-Arrays so können, nicht braucht, gute Alternative.
Ja, und auch schon zehn Jahre vorher, oder?
Also dieses Array.array gibt es ja schon immer.
NumPy gibt es ja noch nicht schon immer.
Ja, ja, aber ich weiß nicht genau, wann das dazugekommen ist.
Ja, ob das vor NumPy war, weiß ich nicht.
Aber ja, aber es ist schon alles relativ ewig, ja.
Ich möchte was anderes hervorheben, was so ähnlich ist, was auch in diese Kerbe schlägt und das ist das Struct-Modul.
Habt ihr das schon mal gesehen?
Das ist quasi ein Modul, was es einem erlaubt, C-Type Structures zu zerlegen.
Also man gibt da einen sogenannten Formatstring an.
Es ist ein bisschen ein Gefitzel, diesen Formatstring zu bauen oder den zu wissen.
Aber dieser Formatstring erlaubt es einem dann sozusagen Structs, so wie sie in C vorkommen, zu lesen und zu schreiben.
Und die sind natürlich auf Bit-Ebene gepackt.
Also wenn man da eben die Werte mit den entsprechenden Bitlängen hat, die sind sehr dicht und sehr eng gepackt.
Und man braucht es manchmal, wenn man Formate liest, die eben eng gepackt sind.
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.
Und es ist in Python ein bisschen schwieriger zu verarbeiten, aber mit dem Struct-Modul auch nicht.
Weil man da eben nur die entsprechenden Formate wissen muss und die entsprechenden Formate eintragen muss.
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.
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.
Ja, braucht man nicht super häufig, aber wenn man es braucht, ist es super gut, ja.
Also ich habe es tatsächlich auch nie so wirklich super häufig, aber wir haben es auch einmal an der Stelle gebraucht.
Was man zum Beispiel machen kann, ist, man baut halt sozusagen die Datenstrukturen, die man in einer anderen Bibliothek dann verwenden möchte.
Also man hat zum Beispiel irgendeine C-Bibliothek, die irgendwas macht.
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.
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.
Aber das ist halt alles Mist, weil Textfiles zu parsen, das ist halt alles, dauert alles lange und das geht alles nicht toll.
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.
Sagst du ja so, du hast es hier, die hast du gerade gepasst, bitteschön, mach damit mal irgendwas.
Und es hat einfach super funktioniert.
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.
Und da die einzelnen Felder rausholen, ist mit Struct super nice und super simpel.
Struct?
Also ich picke Diss.
Oh, Dis, this ist ausspannend.
Jetzt musst du mal erklären, wie du das schon mal verwendet hast.
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.
Ja.
Viel mehr werde ich gar nicht verraten, dafür müssen wir bestimmt auch mal so eine Folge machen über Assembling und Disassembling und
ja, also einfach Python-Bycode anschauen.
Das ist generell eine sehr interessante Sache.
Da bin ich auch.
Also die Episode möchte ich gerne hören.
Da kann ich zu wenig, um dazu beizuklagen, aber die haben wir nicht mehr so.
Aber das ist halt immer das Problem.
Bei vielen Dingen bräuchte man eigentlich jemanden, der sich so richtig damit auskennt.
Also wir haben alle keine Ahnung, ne?
Nee, nicht so richtig.
Also ich jedenfalls nicht, aber ja.
Und wir sind auch offensichtlich alle zu faul, um uns zu hörbereiten
zu holen.
Das kann man ja mal ab und zu machen, aber halt die ganze Zeit.
Oh Gott, Arbeit.
Ja, da ist es wieder.
Das mit den zwei Stunden des Arbeitens erspart uns zwei Minuten des Nachdenkens.
Ja, aber das musst du genau machen.
Ja, aber da ist ja jetzt, der Dominik ist ja jetzt eingearbeitet, der kann uns ja dann sagen, wie das funktioniert.
Oh ja, natürlich, der absolute Profi, wie immer.
In allen Themen.
Just call me, ruft dich an.
Hört mir zu.
Und morgens mittags, abends, nachts, wann immer wieder einschalten.
Ich wollte auch noch
was picken.
Du darfst was picken?
Ja.
Das hast du eben.
Was habe ich denn gepickt?
Ach, du hast Array gepickt.
Ja, genau.
Ach so, okay.
Nee, dann ist dann, ja.
Nein, du musst jetzt was picken.
Ah, na gut.
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.
Das ist ziemlich klasse.
Paydentic?
Ja.
Es hört sich nicht was für dich an.
Bibliothek, ähm.
Es hört sich an wie was für Zahnärztig.
Ja.
Es gibt eine ganze Reihe von diesen Geschichten.
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.
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.
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.
Aber das alles selber hinzuschreiben, ist halt ein Haufen Arbeit.
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.
Und Data Classes, genau, das ist halt nicht verstanden.
Ja, es ist halt in die gleiche, also das ist ja auch in der Standardbibliothek, das ist inspiriert von Atris, soweit ich das weiß.
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.
Du kannst aber auch sagen, es dict irgendwie dein Objekt von der Klasse und dann hast du ein Dikt und so.
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.
Und das Ding macht dann halt Überprüfungen, ob das jetzt also korrekt, ob die ganzen Typen korrekt sind oder so halt von selber.
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.
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.
Und alles andere macht halt die Magie da drin und das ist natürlich schon sehr schön.
Und ja, ich glaube, es ist ein ganz interessanter Trend.
Ich weiß auch nicht so genau, warum das jetzt irgendwie so, aber da passieren auch so mehrere Dinge gleichzeitig.
Ich weiß nicht, habt ihr den Marc hatte so einen Vortrag gehalten, ich weiß nicht genau, halt von der Python-User Group Düsseldorf.
Zur Zukunft von Python.
Verlinkt den mal, ja.
Verlinkt den mal.
Würde ich gerne auch noch sehen.
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.
Weil, also der ist momentan halt total dominiert von.
Auf der Padantic-Webseite steht schon, dass Microsoft das benutzt, um das in Windows und Office einzubauen.
Ja, ja,
schon mal die richtige Richtung.
Genau.
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.
Man muss man halt nicht irgendwie alles erstmal mit der Pattern mit dem Gang auch vorkommen.
So was.
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.
Aber vielleicht braucht man sie auch nicht die ganze Zeit dauernd.
Aber was man vielleicht schon braucht, ist halt eine Art, solche Sachen hinschreiben zu können.
Auch so Objekte, also Klassen, die dann halt irgendwie so Business-Geschichten machen.
Und dafür, wenn du jetzt aber ganz viele Klassen hast und Sachen hinschreibst, dann ist das halt ziemlich nervtötend und öde.
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.
Und deswegen ist das halt auch so ein interessanter Bereich.
Microsoft macht da ja auch sowieso Dinge in die Richtung.
Die haben ja auch jetzt ganz viele Python-Entwickler angestellt.
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.
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.
Und es macht halt das Bauen von APIs deutlich einfacher, wenn man das halt quasi delegieren kann, den harten Teil davon an sowas.
Ein ORM und The Fly quasi.
Ja, spannend.
Cool.
Ja, dann sind wir diesmal für heute am Ende, am Ende dieses Jahres.
Auch mittlerweile.
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.
Wo auch immer ihr hinwollt, im Homeoffice natürlich.
Ja, Jochen, gehen wir doch ein bisschen cybern.
Ja.
Alles klar.
Dann bis zum nächsten Mal.
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.
Alles klar.
Ciao.
Tschüss, tschüss.