Hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast. Heute Jubiläums-Episode 50. Herzlichen Glückwunsch, Jochen.
Ja, herzlichen Glückwunsch zurück. 50, sind wir schon. Wow.
Ja, ganz gut, oder?
Ja.
Wir sprechen heute über Qt und andere grafische Anwendungen in Python und über mehr Plan, das da gebaut ist, und haben den Martin zu Gast. Hi, Martin.
Hallihallo.
Hallöchen.
Ja, wollen wir ein bisschen News machen am Anfang?
Ja, diesmal vielleicht schon, hatten wir letztes Mal ja nicht.
Genau, und
dann mache ich das hier
gerade mal auf.
Ja, also es gibt halt so ein paar langweilige
Softwaregeschichten, wo es vielleicht
nicht schlecht wäre zu wissen, was da passiert.
Es gab jetzt, das ist aber auch schon etwas länger her,
ich habe jetzt ja dummerweise die News von
zwei Episoden
und dazwischen ist auch etwas ausgefallen. Kann sein, dass es
jetzt doch ein bisschen veraltet ist. Das Beispiel, was ich hier drauf
habe, ist, dass die
einzelne Version von MyPy rausgekommen ist.
Was vielleicht ganz interessant ist.
und PyTest.
noch ging und jetzt gehen sie halt nicht mehr.
Deswegen halt der Manager-Versionssprung.
Aber eigentlich auch ganz
interessant, weil so gerade so Async-Geschichten
ist halt, das ist
auch da noch relativ neu.
Also dass man da halt so mit
na, wie heißt das?
PG
Async-PG.
Genau, das auf Postgres
zum Beispiel zugreifen kann und das halt
alles so ordentlich funktioniert.
Ja, da hatte ich auch schon viel Spaß
mit.
dann
dann Wagtail hat sich eine ganze Menge getan
da habe ich hier noch die Release Notes
drin von Wagtail 4.2
und jetzt ist aber schon 5.0
gestern erschienen
das ist tatsächlich
nicht in den Backing Chases
gab es diesmal
doch, gab ein paar und ich hatte auch da so ein bisschen
Probleme mit, also das war nicht so
das war schon ein etwas holprigeres Update
weil, also
dazu. Die Software, mit der
wir hier den Podcast irgendwie
publishen, basiert halt auch auf
Wagtail. Django Cast. Genau.
Und auf Django natürlich.
Und
ja, deswegen kriege ich das immer mit.
Wenn irgendwas bricht, dann bricht es halt ja auch.
Der Grund, warum ich es nicht mehr mitkriege,
ich habe es aus diesem Grund rausgeschmissen.
Aber also,
ja gut, sie machen da was dran. Sie machen das
jetzt auch über Major-Versionen.
Also man kriegt zumindest so ein bisschen
irgendwie
einen Eindruck davon, dass irgendwas kaputt gehen könnte, wenn sie
dann die Major-Version erhöhen und sie koppeln
sich jetzt auch quasi an den
Django-Release-Prozess dran. Und das war
jetzt auch nur einen Monat nach dem Release von
Django 4.2. Also Wagtail 5 ist
die erste Wagtail-Version,
die offiziell Django 4.2
unterstützt. Und das ist, früher
war das immer noch ein bisschen länger. Und jetzt inzwischen
ist es halt so einen Monat
später oder so. Und das ist jetzt, ja gut,
ist nicht super aktuell. Ein Monat ist ein Monat.
Ja, ist schon ganz okay.
und die müssen halt auch relativ viel fixen
und ändern und so, daher ist es schon verständlich,
dass es nicht immer so fortgeht.
Aber Jochen, du bist doch eigentlich immer
dagegen, dass man sich so dicke Klötze
ans Bein bindet.
Ja, ich hätte das auch am liebsten vermieden,
wenn das irgendwie möglich gewesen wäre, aber
ich möchte, also ich hätte jetzt auch ein eigenes
CMS schreiben können, ja, das wäre auch gegangen.
Warum denn nicht?
Ja.
Wir hatten letztens jemanden getroffen, der ein eigenes CMS
in PHP geschrieben kann, auf jeden Fall.
Ja, oder hat er mitgearbeitet?
auf dem
Vue.js Meetup Cologne.
Das war ganz interessant.
Der hat
ein Statamic mitentwickelt, beziehungsweise
einer der Leute, die da halt bezahlt werden für das,
was sie da dann entwickeln. Das ist tatsächlich so ähnlich
wie Wagtail, bloß halt für
PHP und Laravel.
Und ja,
CMS ist schon eine große
Geschichte. Wagtail ist auch relativ groß,
viel Code drin und das weiß ich nicht, ob man
das wirklich selber machen möchte. Es gibt da ein schönes Projekt von
jetzt habe ich den Namen vergessen,
auch sehr bekannt eigentlich in der
Kerstin
in der Django Community
genau, der hat FeinCMS geschrieben
und das
gefällt mir, also wenn man sich den Source anguckt
das gefällt mir tatsächlich auch ein bisschen besser als Wagtail, aber
es kann halt nicht so viel
und ja, an der Stelle ist halt
Wagtail kann halt schon sehr sehr viel, also
das ist halt irgendwie, also damit kann man
so ziemlich alles machen, was man irgendwie gerne machen
möchte. FeinCMS, also
tatsächlich ein deutsches Fein
und kein englisches Fein.
Ja, ich glaube, der kommt aus der Schweiz oder so.
Und ja, also ich meine, sowas hätte ich natürlich auch
schreiben können oder das nehmen können, aber dann hätte ich auch
viel schreiben müssen, weil viele Sachen, die ich gerne hätte,
sind da halt auch nicht drin.
Das scheint ein bisschen alt zu sein. Copyright 2009.
Der macht das schon lange, ja.
Ja, ja.
Und ja,
deswegen nehme ich halt
Wacktail, obwohl ich auch manchmal denke,
es knirscht halt
ab und zu. Das letzte Release
für Python.
Update ist halt, dass sie intern irgendwie
einen, weil ich habe halt eine Extension, also
ein Ding gebaut, was das halt so ein bisschen erweitert,
weil ich habe halt viele Bilder für andere Zwecke.
Jetzt bei dem Podcast kommen nicht so viele Bilder vor,
aber es waren auch andere Transfers.
Ich möchte gerne Bilder in der absoluten, maximal
bestmöglichen Qualität.
Ich möchte, dass sie nicht total unscharf sind.
Kann man so oder so sehen.
Ja, aber ich sehe das schon.
Ich denke mir immer, wenn ich auf so Seiten,
also gerade auch Wagtail-Seiten, es gibt ja viele
andere, die auch Wagtail verwenden,
so unter anderem NASA, Google,
irgendwie der National Health Service in UK und so.
Es gibt schon viele große und immer wenn ich da drauf gucke,
denke ich mir so, ey, die Bilder sind doch unscharf.
Ja, 2000 Leute haben auch dieses Problem.
Ja, also ich weiß nicht.
Also ich finde super, das ist cool.
Mir ist das tatsächlich auch aufgefallen,
wenn ich mal so ein paar Sachen von dir angeguckt habe,
dass das sehr viel schöner ist.
Wahrscheinlich hat man sich einfach nur daran gewohnt,
dass die Sachen gar nicht so cool aussehen.
Dass das gar nicht so schön sein kann,
weiß man gar nicht so genau.
Ja, also sagen wir so,
ich meine, selbst WordPress macht das besser.
Das hat auch nur so
drei oder fünf statische
Größen für Bilder drin. Also das Problem
ist grundsätzlich, dass
wenn du, du hast halt zwei unterschiedliche
Arten von Pixel, du hast halt sozusagen die Pixel
für deine
wie groß dein Gebreit quasi
dein Bildschirm ist oder so und da kannst du auch in Pixeln rechnen
aber dass das angezeigt ist,
ist halt was anderes, weil es halt
mittlerweile halt
Devices gibt, Telefone
irgendwie Bildschirme,
4K-Bildschirme oder noch mehr,
die halt dann mehrere physikalische Pixel
für einen virtuellen Pixel quasi
benutzen. Und wenn du halt nicht
sozusagen dann die Bildgrößen
entsprechend mitlieferst, sondern sagst,
mein Bild ist halt genauso breit wie so
viele virtuelle Pixel, dann hast du halt
ein implizites Upscaling von Faktor 4
oder so darin und dann wird es halt unscharf.
Und ja, das ist halt
irgendwie, da gibt es noch, sie arbeiten da auch dran.
Also so ist es nicht. Da gibt es jetzt inzwischen auch
ein sehr vielversprechendes, da gibt es so eine
Roadmap, wo drin steht, was sie da machen wollen.
und sie wollen das mit Picture-Elementen
machen und irgendwie so
modern oder so. Ihre Hauptmotivation dabei
ist aber eher irgendwie Wandbreite sparen,
weil man dann halt so modernere Formate
wie WP
oder solche Sachen
verwenden kann.
Aber damit kriegt man
das auch hin, dass man dann halt scharfe Bilder hat.
Mein Ding ist aber eher, ich will scharfe Bilder
haben und JPEG reicht mir eigentlich.
Und deshalb
habe ich da so ein Ding geschrieben und da haben sie jetzt irgendwas
unbenannt. Irgendwie ein Attribut auf dem
Image-Node
heißt jetzt irgendwie anders, weil ich muss jetzt halt
also meine Erweiterung für
Wagtail, die
erzeugt halt dann Bilder in
unterschiedlichen Größen und macht da so ein Sourcet-Attribut
Genau, Sourcet, genau.
Und da greife ich
halt auf irgendwie so die Filter
von dem Ding irgendwie zu,
weil du kannst ja da noch andere Sachen reinschreiben wie
JPEG-Qualität und weiß der
Teufel und die Breite und
das muss ich ja irgendwie auslesen und das hat sich
wenn man sich das vor einiger Zeit
angeguckt hat und
nicht zufrieden war, kann man das eigentlich nochmal machen.
Also einiges heißt, bei mir
ist es nach zwei Jahren her, würde ich sagen.
Ja, zwei Jahre reicht auf jeden Fall. Also inzwischen hat sich da sehr viel getan.
die
Changelogs sind halt auch immer sehr lang. Also würde ich sagen,
was ist an dem modernen React-Health eigentlich cooler?
Was sie verbessert haben ist,
es gibt ja schon seit einiger Zeit so ein
Streamfield. Das ist auch, das machen alle CMS
irgendwie gleich.
Für Video, Audio
und dergleichen.
und PyTest.
weil es halt nicht mehr klassisch ist, sondern dann
passiert das alles im Kleinen nur noch
und das geht jetzt schneller. Also überhaupt, das ganze Ding ist
deutlich schneller geworden. Also ich meine, so sehr React
irgendwie doof ist für
die Sachen, für die es oft verwendet wird,
für sowas wie eine komplizierte
Content-Editier-Geschichte,
wo halt irre viele
Formulare sind und
Interaktionen dazwischen gibt, dafür ist es
jetzt vielleicht auch nicht so schlecht. Das ist eigentlich gar nicht schlecht.
Sieht das Ding gut aus und kann man das denn theme?
Theme kann sein,
das weiß ich, kann man,
Irgendwann kann er auf jeden Fall Dinge ändern
Oder dass man jetzt halt ganz tief wieder rein
Eines der neuen Features bei Vectile 5 ist
es gibt jetzt ein Dark Theme
Oh ja, ja
Also
Wer braucht das nicht?
Ist mir direkt aufgefallen
weil ich das dann auch direkt hatte, weil ich hier auf dem Dark Mode
bin
Ist aber für die Augen viel angenehmer
Naja, also ich finde es sieht ganz okay aus
Also so wirklich hübsch ist es nicht, aber ich meine das ist ja nur das Editierding
Es ist ja nicht so, wie es dann hinterher aussieht
was auf der Webseite zu sehen ist
Das kannst du ja machen, wie du willst.
Das hat ja nichts mit React Health zu tun.
Ja, insofern...
Jetzt hatten wir fast eine schöne Übergleiche zu dem Thema, aber ich glaube, wir sind noch nicht ganz fertig.
Nee, da kommt noch...
Genau, nächstes wäre halt Django 4.2.
Ja, auch
nächste LTS.
Ja.
War auch jetzt, da war auch wenig drin,
was irgendwie kaputt gegangen ist.
Die große Neuerung da ist halt, dass
man jetzt auch async mit der
Datenbank sprechen kann.
Und
zum Beispiel PsychoPG
3 wird jetzt unterstützt und dann
also sozusagen man hat jetzt die Voraussetzung dafür, dass
man komplett Async von
vorne bis hinten sozusagen von Frontend
von View bis
zur Datenbank kann man halt jetzt durchgängig
Async Dinge machen und man könnte
jetzt so Sachen bauen wie
man verwendet diesen Listen Notify Mechanismus
von Postgres, um halt wirklich so richtig
reaktiv Dinge zu machen
so dass man
also ging auch vorher schon, aber da war es immer so ein bisschen
hm, jetzt geht es halt
und muss dann Django Channels
verwenden und weiß nicht.
Aber jetzt ging es halt richtig
sauber eigentlich.
Also da gibt es noch keine wirkliche Unterstützung
für. Das müsste man dann alle selber schreiben, aber es geht
jetzt theoretisch zumindest schon mal.
Und das ist eigentlich schon schön. Auch der ORM könnte
jetzt dann halt irgendwie Async werden.
Der hat ja auch schon Async Interfaces.
Aber die sind ja
sozusagen, die kann man auch schon verwenden
und kriegt dann halt irgendwie den Gewinn, dass es wirklich
Async ist, irgendwann, wenn das dann halt mal
identifiziert ist. Momentan
ist es dann halt nicht
Async wirklich, sondern es ist halt dann
irgendwie, es wird über ein Threadpool
und in Sync gemacht, aber
ja,
das wird noch ein bisschen dauern, bis
die ORM-Geschichten halt auch wirklich Async sind.
Aber ja, geht auf jeden Fall in die Richtung
und irgendwann dann
wird auch alles auf Async dann
quasi umgestellt sein
und man kann es dann verwenden, wenn man möchte. Muss man ja nicht.
Man kann auch einfach Sync verwenden, wenn man
nicht so viele Queries hat und wenn es
Sync ist, auch
ein bisschen schneller als Icing, weil man da halt schon noch so ein bisschen Abstraktionsschichten
mehr dazwischen hat dann. Aber es gibt halt einiges Fälle, in denen es wäre total praktisch,
das zu haben. Und dafür ist es natürlich gut.
Kannst du nochmal einen Anwendungsfall dafür nennen?
Ne, wenn du zum Beispiel viele Queries machst und du willst halt nicht, dass sich die Latenzen
und deine Datenbank steht jetzt zum Beispiel woanders, sagen wir mal so. Das wäre jetzt
nochmal so. Nehmen wir an, deine Datenbank steht irgendwie in Amerika und du hast hier
Dein Applikationsserver
oder wie auch immer, das Ding, was halt
jedenfalls das HTML
rendert, ist halt irgendwo so. Und jetzt hast du halt
große Latenz zwischen Datenbank
und Frontend.
Dann momentan ist es halt so, leider
addieren sich die Latenzen auf. Und wenn du halt
100 Queries machst,
um eine Seite anzuzeigen, dann hast du 100 Mal
die Latenz dazwischen und das ist halt dann schon
ätzend. Also wenn das halt
nur ein paar Millisekunden sind, dann sind es halt
insgesamt ein paar 100 Millisekunden vielleicht.
Ist nicht so tragisch, aber wenn du jetzt 50 Millisekunden Latenz dazwischen hast,
und dann bist du halt schon bei 5 Sekunden oder sowas
und dann ist es halt doof
und genau, wenn du
das I-Sync machen würdest und könntest die
Datenbank-Effekte gleichzeitig
an die Datenbank schicken, dann
wäre die Gesamtlatenz halt nur die
Latenz der langsamsten
Query und nicht irgendwie
die wir uns nicht alle aufaddieren
also in solchen Fällen wäre es halt irgendwie durchaus
sehr praktisch
genau
ja, also genau
Django 4.2, weiß jetzt gar nicht
genau was sonst noch da an, wirklich, da waren auch noch jede Menge coole Sachen dabei.
Ah, das habe ich jetzt, ähm,
habe ich mir gar nicht mehr so in Erinnerung,
das ist doch schon wieder einen Monat her,
dass das, äh,
dass das veröffentlicht wurde
und bei Formularen hat sich auch noch eine Menge getan.
Also, äh,
ja,
ähm,
und es sind einige Sachen noch
deprecated worden, ja, so,
keine Ahnung, kann man sich mal angucken.
Der kam bestimmt auch dann in die World Map für Tango 5, oder?
Ähm, ja, bestimmt irgendwie, keine Ahnung, es gibt auf jeden Fall schon Leute, die sich darüber Gedanken machen, ich habe auch schon so ein bisschen gehört, was bei Django 5, die nächste Geschichte, die jetzt angegangen wird, ich habe das jetzt nicht irgendwo gelesen offiziell, sondern ich habe das jetzt so, was ich so mitkriege, ich habe das ab und zu irgendwie so mitlese, was da so passiert, ist, sie wollen das Request-Objekt, das halt uralt ist und das sehr schwer zu ändern ist, so ein bisschen anpassen,
Also da gibt es ja immer noch momentan so
Request.get und Request.post und Post.get
großgeschrieben und das ist quasi
genauso wie das damals halt so in
CGI oder
PHP war, wo man das dann halt sozusagen
diese Inspiration für diese Geschichten her
hatte, aber das ist natürlich jetzt heutzutage eigentlich
blöd. Und man hat es aber nie geändert in den
letzten 15 Jahren, weil
klar ist, dass wenn man das
ändert, dann brechen halt überall
Deployments, in denen halt
irgendwie, keine Ahnung, Leute darauf halt zugreifen
und deswegen kann man das nicht so einfach jetzt irgendwie umbenennen
Ja, aber da soll jetzt was passieren
und zwar hat man jetzt einen Grund, um diese
großen Änderungen anzugehen und zwar
soll halt so ein bisschen Fähigkeit
zu JSON
generieren und so, also ich glaube die harten
Sachen, die man dafür braucht
also der Umgang mit unterschiedlichen
ich weiß es
gar nicht mehr, also jedenfalls die Basisarbeit
dafür ist schon drin
diese ganze
diese ganzen
da geht es irgendwie um
Header und weißer Teufel irgendwie
Support.
Aber was man eigentlich gerne hätte, ist ja, dass man
JSON rausrennen kann und das halt auch ordentlich
funktioniert. Also sozusagen
eigentlich wird jetzt quasi die Basis
dafür gelegt, dass sowas wie Django REST Framework eigentlich
in Django Core mit reinwandert.
Oder man das halt sowas wie Django REST Framework
eigentlich gar nicht mehr braucht, weil die
schwierigen Teile in Django REST Framework
die sind jetzt eigentlich schon in Django Core drin.
Und jetzt geht es halt noch darum, das
alles so ein bisschen aufzutuschen, das Request-Objekt zu
modernisieren, dass man halt jetzt sehr viel leichter
Jason da auch rausrennen kann oder irgendwas anderes.
Gut, mittlerweile
besitzen alle nur noch Jason.
Ja, das ist auf jeden Fall das, was
wir noch finden können.
Jason, eine der Sachen in Django 5 ist Formulare.
Django 5 ist auch Formulare?
Ja, ein bisschen bessere Formulare.
Also Formulare sind auch jetzt schon,
da wird auch schon viel dran gemacht.
Der Anwendungsfall
an der Stelle ist halt einfach, dass man
das war früher etwas schwierig.
Man möchte halt
Teile von Formularen und so rendern können besser.
also gerade so interaktiv
möchte man gerne das Verhalten so haben
wie jetzt man das in der SPA halt auch hat
nur halt mit ordentlicher
Serversite-Validierung von irgendwelchen
Eingabedaten und so und das geht natürlich
auch, also habe ich auch schon häufiger gemacht
dass man dann halt, sobald sich irgendwie
ein Feld von einem Formular
ändert, dass man dann halt das an den Server
schickt und dann kriegt man halt sozusagen
nur das gerenderte Feld zurück und
ersetzt das dann und dann wenn da die Fehlermeldung
im Grunde steht, dann steht die halt auch da drin und so, das geht alles
aber irgendwie zum Beispiel mit Crispy Forms
irgendwie einzelne Felder rendern
ist halt, ist es möglich
es ist halt irgendwie nicht, es macht
keinen Spaß, und das zu testen macht auch nicht so richtig
Spaß und das ist alles so ein bisschen
und ja, da wird auch viel daran gearbeitet, damit das halt einfacher wird
und besser geht alles, ja
ja
genau, Django 4.2
ich hab gehört, die Twitter-API ist kaputt
ja
das ist auch schon lange her
bei Twitter ist noch alles möglich kaputt gegangen.
Ja, es ist...
Da...
Du machst ja immer gerne so einen Pun,
deswegen dachte ich...
Ich finde jetzt aber auch keine... Ich glaube, das ist echt total veraltet,
was da drin steht. Also das ist irgendwie
von vor zwei Monaten oder so, dass das halt
jetzt die APIs zugemacht haben.
Ja, und das halt für viele Leute war das halt echt nochmal so ein Grund,
dann auch zu Masternode
zu wechseln, weil für Masternode gibt es
jetzt noch irgendwie ordentliche
Apps und für Twitter halt nicht mehr.
Es gibt nur die
Standard App
und die ist halt Mist.
Genau.
Ah, was auch noch ganz interessant
ist vielleicht,
ist, es gibt
das Pydentic.
Pydentic hat
irgendwie Venture Capital eingesammelt.
Oh, okay.
5 Millionen von Sequoia oder so.
Okay.
Jetzt weiß ich nicht, ob man sich darüber freuen soll
oder ob man besorgt sein soll.
und das kann beides sein, das ist so unklar.
Ich weiß nicht genau, wie sie sich vorgestellt haben,
dass sie das Investment wieder reinholen, aber
weil das ist natürlich
das Problem, wenn man jetzt irgendwie ganz viel
Infrastruktur, also Pidentic als
Infrastruktur verwendet und darauf aufbaut,
dann ist es so, okay,
haben die jetzt ein großes Incentive,
mich irgendwie dafür bezahlen zu lassen?
Das will man vielleicht nicht,
unbedingt, aber
ja, auf der anderen Seite,
was natürlich vielleicht schon schön wäre, ist, wenn
da halt so ein bisschen
mehr, also ich glaube, der hat dann noch, also
wie heißt der noch? Samuel? Der Bastian Ramirez?
Ne, das ist der von FastAPI.
Aber der ist Samuel Colvin,
glaube ich, heißt der, von Pydentic.
Macht der natürlich auch mit
Pydentic? Ja, kann sein,
weiß ich nicht so genau. Aber der
hat jetzt dann auch irgendwie Leute
angeheuert und jetzt gibt es dann noch ein bisschen mehr
Druck irgendwie beim
Entwickeln an der Stelle und das
ist natürlich vielleicht schon nicht so schlecht, weil also
Pydentic ist ja eigentlich schon eine sehr coole Idee. Ich fände
verwenden das auch mal gerne,
wenn man mal irgendwie so
wirklich validieren will, dass die Daten, die man irgendwo reinbekommt,
halt so richtig...
Ja, hat eine so
schöne Syntax, man schreibt eigentlich
nur die Type Annotations hin und dann
genau, hat man hinterher
validierte Daten, das ist ja alles
echt schick.
Ja, genau.
Aber das, was halt so ein bisschen
problematisch ist, ist halt, dass es sehr langsam
im Vergleich zu Standard
Python-Objekte irgendwie einfach nur erstellen.
Da kannst du ja Pfeil in die Chor nehmen, damit das dann auch in Rust läuft.
Ja, genau. Und wenn das dann in Rust ist,
aber es ist natürlich auch klar, dass man mehr Arbeit hat,
das in Rust zu schreiben und so.
Also mal gucken. Aber es ist auf jeden Fall eine interessante Entwicklung.
Und gut, ja.
Wie es ausgeht, wissen wir nicht.
Dann haben wir noch, was haben wir noch?
Node.js 20.
Ich weiß nicht, ob es irgendwie interessant ist.
Nö, eigentlich nicht.
Nö.
Ja, Pythonista ist eine neue Version
veröffentlicht worden.
Das freut mich ja total, aber ich glaube,
vielen Leuten wird das nix sagen, aber
es gibt für
iOS eine App
namens Pythonister und
da kann man tatsächlich Python-Code ausführen.
Also man kriegt dann halt so eine richtige interaktive
Shell und da ist auch NumPy mit drin und der ganze Kram
auf dem Telefon.
Achso,
Apple-Fanboy-Geschichte.
Jaja,
man kann da auch Programme dann ausführen und so,
man kann die auch, das habe ich schon mal
gemacht, dann, dass man im Share-Sheet
sagen kann, ich share das jetzt mit
irgendwie einem Python-Skript und
dann kriegt das Python-Skript das und
kann damit irgendwas machen. Also man kann da tatsächlich
irgendwie Python-Code auf Telefonen
und iPads und so ausführen.
Und das ist jetzt halt in der
Version erschienen, dass Python 3.10 unterstützt wird
und ja, das ist schon
sehr nett. Also das ist wirklich, wie das mit
dieser App-Store-Policy vereinbar ist,
dass eigentlich nur
Objective-C, Swift und irgendwie
C und C++ irgendwie ausgeführt werden
können sollen.
Ist mir nicht so ganz klar.
Eigentlich, ja, war es wahrscheinlich
zu unbekannt, dass da jemand wirklich mal drauf geguckt hätte.
Oh, verdammt.
Jetzt rausgekegelt.
Aber es ist wirklich toll.
Also das ist auch mit sehr viel Liebe
handgedengelt.
Ja, sehr schön.
Ich finde, wir können ja langsam mal übergehen.
Wir könnten langsam mal übergehen, ne?
Interessanten Dingen.
Genau, machen wir doch einfach mal so allmählich das Thema.
Ja, ansonsten habe ich ja auch noch so Meta-Kram und so.
Ja, wir wollten heute so ein bisschen über grafische Interfaces reden, die in Python...
Ja, haben wir noch nie gemacht, ja.
Genau, und was man da machen kann.
Also ich höre ja immer, oder ich weiß das aus eigener Erfahrung, dass man grafische Interfaces in Python vielleicht gar nicht so wirklich machen will.
Man kann vielleicht Turtle benutzen oder so.
Ja, ich weiß nicht, ob man das überhaupt noch machen will, aber gut.
Ja, aber genau, es gibt verschiedene Sachen in Python dazu.
Und vielleicht mal den Martin fragen, warum benutzt du denn Qt?
Oder wer bist du eigentlich?
Ja, vielleicht kriegst du einfach erstmal auch nett.
Ja, also ich bin Martin von miaplan.de und soll ich mich kurz vorstellen?
Ja, ja.
Also vielleicht kurz zu mir. Ich habe Bio-Alphabetik studiert, war dann fünf Jahre in der Softwareentwicklung,
erst im SAP-Umfeld, dann im Bereich Automobil.
Dann habe ich das Angebot bekommen, in den Familienbetrieb meiner Eltern mit einzusteigen.
die machen Märkte
im Einzelhandel
also Fressnapf
und das habe ich angenommen
und habe dann
gesehen
wie meine Mutter dort die Dienstpläne
erstellt, also sie hatte Personalverantwortung
sozusagen, hat Dienstpläne erstellt
und sie hat dort
Excel-Listen erstellt
und hat ein Kreuz
für jede halbe Stunde
gemacht, die ihren Mitarbeiter sozusagen eingeplant
ist. Das Ganze für damals
zehn Mitarbeiter, acht Stunden pro Tag,
26 Tage im Monat, da
kann man sich vorstellen,
wie viele Kreuze sie da unten gemacht hat.
Sie hatte dann irgendwann
sich eine größere Sammlung an Bleistiften
zugelegt, weil die halt
der Reihe nach abgenutzt
waren. Und ja, das habe ich mir eine Weile
angeschaut und habe mir dann gedacht, also das muss
besser gehen. Und
ja, da war dann Miaplan
geboren.
Ja, vielleicht dazu
was ist MIA Plan?
Also das ist
ein SAS
also Software as a Service
zur Dienstplanung
man kann damit machen Schichtplanung
Planung in der Produktion
also wenn man Maschinen hat
automatische Planung
Bereitschaftsdienste, Nachtarbeit
also alles was man sich da so will
oder fast alles was man sich da so
wünschen kann in dem Bereich
genau
Ja, klingt interessant
also ich glaube die Menge der Unternehmen, die das halt
irgendwie mit Excel-Listen machen, das wird nicht so klein sein
das habe ich auch schon häufig gesehen
Also ich habe ganz oft da schon die Anforderungen an sowas gehört
aber mich würde jetzt interessieren, warum
denn mit Qt und nicht als Web-Anwendung
Ja, ganz kurz
mit Excel, also Excel machen glaube ich alle
also man fängt halt mit Excel an
probiert es quasi
umzusetzen, was man sich halt so wünscht
und irgendwann stößt man an Grenzen
ich glaube, das
Das haben halt alle. Und dann fängt man halt an, sich umzuschauen.
Ja, warum Qt? Also ich habe mir angeguckt, wie komme ich quasi zum Ziel?
Also am Anfang des Projektes war klar, ich brauche eine grafische Oberfläche, die soll im Web stattfinden.
Also das soll quasi nicht auf einem Computer installiert werden.
denn
wir wollen eigentlich von überall planen
also nicht nur
man hat nicht immer einen Rechner zur Verfügung
und meine Mutti war
nicht immer am Rechner zu Hause
sondern die wollte halt auch vom Markt aus
planen und was weiß ich, also es war klar
das muss irgendwie auch ins Web das Ganze
Hab mir verschiedene Sachen angeschaut
ihr habt ja auch schon so ein bisschen angesprochen
es gibt zig
Frameworks, die man nutzen kann
euer Liebling ist Django
wie man unschwer rauskommt, wenn man euch kennt
das habe ich mir auch
angeschaut, kann ich ja dann noch ein bisschen was zu erzählen
ansonsten
wenn man jetzt nicht die Bedingung
Web hat, gibt es
verschiedene Frameworks, also Kiwi ist eins davon
Qt ist eins davon
ansonsten gibt es auch noch
GTK zum Beispiel
das GIMP Toolkit
und ja, habe ich mir sozusagen
alle der Reihe nochmal angeguckt
und geschaut, was können die
für mich leisten sozusagen.
Und wenn man die
so vergleicht, also die
Frameworks für
den Desktop, dann
kommt man eigentlich darauf,
dass es zwei Frameworks
gibt, die da nur in Frage kommen.
Das ist einmal Qt und einmal GTK. Das sind die
einzigen, die, ich sag mal,
weit fortgeschrittene Widgets
bieten.
Also wenn man quasi sehr spezielle
Sachen machen will und
das will ich,
dann kommt man eigentlich um QT
beziehungsweise GTK
nicht drumrum. Was wäre so ein
Widget beispielsweise, wo du sagen würdest, gut, das
ist halt so was, was man nur da bekommt?
Ja, also
zum Beispiel
Tabellen, ja
aber nicht einfach nur Tabellen, sondern
halt spezielle Tabellen
zum Beispiel brauchte ich Tabellen
die ein Kontextmenü
können, die sollten
Farben können, ich wollte Frames
und PyTest.
und jetzt könnte ich das vielleicht anders umsetzen, als ich mir das eigentlich vorstelle.
Also ich könnte, weiß ich nicht, die Bedienung müsste ich dann halt so umstricken,
dass das irgendwie dann die jeweilige Bibliothek kann und das wollte ich aber nicht.
Also ich wollte das eigentlich so machen, wie ich mir das vorstelle.
Und ja, da kam ich eigentlich nur bei Qt raus.
Qt hat sehr weit
entwickelte Widgets
und damit kann man
sagen wir mal so, ich habe noch nichts gefunden
was man damit nicht umsetzen könnte
und das ist alles schon da
also ich brauche dann
nichts mehr
selber entwickeln
sozusagen, also was die Oberfläche
angeht, sondern Qt
bietet eigentlich von Haus aus schon
alles was man sich vorstellen kann
und das
war quasi
wie eine Grundvoraussetzung Denn ich bin ein Einmann das hei ich brauche eine hohe Entwicklungsgeschwindigkeit sonst komme ich nicht zum Ziel
Und genau, das war quasi die Bedingung, hätte ich angefangen, mir ein Webframework rauszusuchen.
Django, ich habe ein Testprojekt aufgesetzt schon gehabt und habe mal geguckt, wie weit ich komme.
aber da hat sich ziemlich schnell rausgestellt
da hätte ich sehr sehr viel
selber entwickeln müssen an Funktionalität
und das kam nicht in Frage
Und wie machst du es hübsch?
Werden wir spezieller?
Was genau stellst du dir heute hübsch vor?
Wie kannst du das erst sein?
Oder sieben?
Musst du da alle Widgets einzeln
überschreiben?
Ist das responsive?
oder musst du jeweils eine eigene Applikation
für verschiedene Geräte schreiben
oder wie löst Qt das?
Ja, da
müsste ich vielleicht erstmal sagen,
wie ich das überhaupt gebaut habe.
Fangen wir mal von vorne an.
Also es stand sozusagen fest,
oder ihr könnt ja auch
vielleicht nochmal was zu den Widgets
sagen und wie man die in Django einbindet.
Aber für mich
stand fest, okay, mit Qt kann
ich sozusagen das sehr schnell umsetzen, was
Ich brauche.
Jetzt hat
Qt aber ein Problem, das ist eigentlich
eine Desktop-Framework.
Also üblicherweise
würde ich also eine Software schreiben,
würde die dann bundeln,
also mit PyInstaller,
was weiß ich, und
würde die dann sozusagen
eine Software mir erstellen
und die dann zum Kunden liefern
oder würde die zum Download anbieten oder so.
Ging in
meinem Fall sozusagen nicht.
und jetzt ist die Frage, wie kriegen wir quasi die Desktop-Anwendung ins Web und die Lösung dafür lautet Apache Jack-a-Molly.
Das ist quasi, ich weiß nicht, habt ihr das schon mal gehört?
Nein.
Weißt du, was das ist?
Nee.
Das ist im Prinzip wie Remote Desktop, aber ohne Client.
das heißt
jeder Nutzer
bekommt quasi einen Account
und
lockt sich damit sozusagen
auf meinen Servern ein
und läuft damit unter einen Nutzer-Account
und kann sich quasi
also
ich starte dann sozusagen auf meinem Server
eine Anwendung, zum Beispiel
in Qt und die kriegt dann der
Anwender zu sehen
also die Software läuft sozusagen auf meinen
Servern und
der Anwender guckt sich das quasi von außen an
und kann die Software auch bedienen und
installiert aber selber nichts.
Das heißt, es läuft rein über den
Browser. Oder anders
gesagt,
Apache stellt quasi einen
HTML5-Client
schon zur Verfügung, der einfach
im Browser läuft.
Ja, ich glaube,
ich habe das mal irgendwie gesehen.
Wie heißt das?
Guacamole?
auf der DjangoCon
2021
gab es einen Talk darüber,
wo auch jemand
eine Shell quasi damit,
so konnte man halt quasi auf eine Shell
zugreifen, auch über einen Browser.
Und das war ziemlich cool.
Und das ist jetzt quasi das gleiche System,
wie das funktioniert. Ja, sehr schick.
Cool Idee.
Also theoretisch kann man damit einen ganzen Desktop
in den Browser reinzeichnen.
Das ist auch der Standardanwendungsfall,
aber es geht eben auch für eine einzelne Software.
Ja.
Genau.
Ja, das hat den Vorteil, dass ich Qt nutzen kann.
Mittlerweile macht mir Qt auch Spaß.
Also mittlerweile im Sinne von, jetzt weiß ich, wie es funktioniert.
Das heißt, das hat ein bisschen gedauert,
das wird jetzt anders bei der Lernkurve.
Ja, also die Lernkurve ist schon steil, würde ich behaupten.
aber
also ich habe festgestellt, das kann
eigentlich alles, was man braucht
also ich habe noch nichts gefunden, was das Ding nicht kann
und was
außerdem Spaß macht ist, also ich arbeite
jetzt seit ungefähr drei Jahren damit
und ich habe insgesamt fünf Bugs
gefunden
und das ist echt wenig
also
da habe ich schon ganz ganz andere
Sachen erlebt
also das ist
also macht echt Spaß, muss ich sagen
Ja, ansonsten
kann ich
fast nur synchronen Code
schreiben, ihr habt ja schon ein bisschen gesprochen
die Frameworks stellen jetzt alle
auf Async um
damit die mehrere, also mehr
Requests quasi handeln können
und ich habe eigentlich den Vorteil
ich kann synchronen Code schreiben
Jaja, das ist natürlich
aus Entwicklersicht angenehmer
Ja, das ist deutlich angenehmer
und es ist einfach
Ja
Das ist sehr einfach
Ja, schick, ja, ich meine
ich glaube auch, dass, also ja, Qt hat
halt irgendwie, das ist halt schon
eigentlich ein sehr altes Projekt tatsächlich
aus heutiger Sicht nicht, weil
ich weiß gar nicht, wann das genau gestartet ist
und wann es die Firma dazu gab
KDE ist ja da, irgendwie, das ist schon so in den 90ern
irgendwie ist das
ich weiß gar nicht
wann Qt gestartet ist, aber muss irgendwann in den 90ern
wahrscheinlich gewesen sein
und das ist jetzt in Version
5 oder 6 oder wie benutzt ihr das?
Ich mache gerade die Transition
von 5 nach 6.
Und das ist keine
komplett Open Source Lizenz, wenn ich das
richtig in Erinnerung habe.
Genau, also die haben, also das ist
dual lizenziert, also es hängt ein bisschen
davon ab, welche Version du
nutzt.
Die aktuellste, also
immer die aktuellste Version, meine ich,
ist ausschließlich kommerziell.
und die Lizenz, also da bin ich jetzt nicht hundertprozentig drin, aber die Lizenz sagt so in etwa, wenn der Code ein Jahr alt ist, dann müssen Sie es zusätzlich unter die LGPL stellen.
Also wenn man quasi die LGPL Lizenz nutzen will, dann ist der Code recht gut abgehangen sozusagen.
Also LGPL ist Strong Copy Left, wenn ich das richtig verstehe.
Da müsste ich jetzt meinen Anwalt fragen
aber
ja, es
ist eine relativ restriktive
Lizenz und man muss
schauen, dass man das, also wenn man
das verwenden will und man möchte es
kommerziell einsetzen, dann
muss man schon ganz genau hingucken, sage ich mal
Ja
Ja, ja, ja
Ja, interessant
Ja, ja, ich
Genau, das war eben, MySQL hatte doch so eine ähnliche Lizenz, aber ich bin mir nicht sicher, ob es der GPL war, wahrscheinlich eher nicht.
Ja, Qt irgendwie, aber ich meine, Qt selber ist ja irgendwie in C++ geschrieben, glaube ich. Wie greift man denn dann von Python, weil ich meine, die Anwendung ist ja dann in Python irgendwie geschrieben hauptsächlich?
Richtig, genau. Das ist 100% Python
Wie kommt man denn dann an C++ dran?
Da braucht man ja wahrscheinlich irgendeinen Wrapper um
PyQT oder sowas
Irgendwie sowas
Die haben eine
Python-API
Python Bindings quasi
Python Bindings, richtig
Und wie wirkt es dir?
Du kannst es auch einfach in jedem Betriebssystem
wiederverwenden, wenn du das möchtest
Könnte ich
Qt ist plattformunabhängig
Die laufen eigentlich fast überall
Ich setze es aber unter Linux einfach ein
Und wie machst du sowas wie Stylings und sowas
also wie das, was ich eben gesagt habe
mit hübsch oder sowas
Wie gehst du da vor, dass das irgendwie so ein bisschen dynamisch ist
und so? Bietet das Qt einfach
alles von Haus aus, oder?
Ja, Theming lässt sich
machen mit Qt
Es bringt aber von Haus aus
schon quasi das Styling
mit. Das sieht
einigermaßen nativ aus
unter jeder Plattform.
Unter Linux hat es eben den Style,
den es unter Linux hat.
Lässt sich aber einfach, also man
kann quasi jedes Element
nochmal separat stylen, wenn man das möchte.
Das geht einfach mit CSS dann.
Wenn man das möchte.
Also die haben quasi so eine abgespeckte Art
von CSS.
Unterstützen sie.
Und ja, da kann man quasi
seine Elemente dann färben
oder
einen anderen Rahmen geben oder was weiß ich.
Ja, genau.
Ja, ja, ja.
Ne, interessant. Ich glaube, wir verletzten das letzte Mal
mit Qt. Ich erinnere mich noch dran,
das war schon auch wieder ein bisschen her, glaube ich,
2016 oder so, habe ich das letzte Mal
irgendwie für einen Headless-Browser,
den ich brauchte, weil irgendwie
JavaScript ausgeführt werden sollte,
irgendwie, das war auch damals
irgendwie das Ding, was ich da verwendet hatte,
das war auch noch
diese, die, ich glaube mit WebKit, die Engine war WebKit
und dann brauchte man noch so ein bisschen Qt außenrum und dann
musste ich da irgendwie Qt 5 selber kompilieren und ich erinnere mich noch, dass das ganz schön schmerzhaft war, aber
Also ich erinnere mich auch daran, dass ich bin damals glaube ich über die Lizenz gestolpert
in meinen ersten Gehversuchen in Python, da wollte ich unbedingt, wie man das am Anfang macht, irgendwas mit
GUI bauen, dass da irgendwie man was anzeigen kann auf seinem Bildschirm und
dann habe ich so ein bisschen rumprobiert, auch mit Qt, aber das hat irgendwie nicht so
funktioniert, wie ich das wollte. Und ich bin da so ein bisschen
über diese C++-Implementierung gestolpert
und ich fand auch diese PyEQ nicht so super
und bin dann bei Kiwi gelandet tatsächlich.
Wo ich auch sagen muss, da gingen ein paar Sachen,
aber das war auch alles eher so,
ich weiß nicht genau.
Nicht so, wie ich das eigentlich
angenehm finde. Und dann habe ich es dann mit den Guis wieder gelassen
beziehungsweise mit Web angefangen irgendwann.
Ja.
Ja, Kiwi, also Kiwi,
die Widgets sind halt, also die haben nicht genug
Widgets, also da kommt man nicht weit,
wenn man wirklich
intensiv was damit machen will, finde ich.
Ja.
Ja, ich meine, aus meiner Perspektive
wäre jetzt eher so die Frage,
warum macht man heutzutage
überhaupt noch GUI?
Ich wüsste heute alles Web.
Und es ist ja
ein etwas anderes Modell
und eigentlich
vielleicht ein bisschen einfacher zu maintainen,
gerade wenn man jetzt eben nicht so
eine größere Organisation ist, sondern eher
kleiner, dann ist das ja mit, irgendwie, wie macht man das, wenn Clients inkompatibel werden
oder so, oder unterschiedliche Versionen hat, das ist ja alles ganz schrecklich. Und das ist ja so ein
Problem, das man halt hat, wenn man irgendwie klassisch Client-Server machen würde oder so, oder
diese alten Desktop-UI-Geschichten machen
würde. Aber ich meine, klar, wenn du das zentral laufen lässt und greifst dann nur sozusagen
auf das Ding, wo das dann läuft zu, dann hast du diese
ganzen Probleme eigentlich nicht mehr. Das ist richtig. Also ich habe ja eine ganze Menge
und PyTest.
und dadurch kann ich quasi die Ressourcen gleichmäßig auf meine Datenbank und so weiter verteilen.
Ich weiß nicht, da kennt ihr euch eigentlich besser aus?
Ja, also ich würde sagen, der State einer Web-Anwendung liegt normalerweise in der Datenbank,
aus meiner Perspektive.
Und genau, dann gibt es halt irgendwie diverse Prozesse, an die man Requests hinschickt
und dann senden sie halt Responses zurück.
und genau, ja.
So und da hatte ich das Problem,
also ich dachte, es gäbe das Problem,
dass ich das
nicht machen kann sozusagen.
Also meine Anwendung, die ich
also mir planen ist,
hat ein State für jeden Nutzer.
Ja.
Und hier hatte ich in meinem Django-Prototypen
auch probiert,
diesen Zustand
quasi umzusetzen und bin da aber
schon irgendwie auf eine Hürde gestoßen.
Also das scheint jedenfalls nicht
nativ so
zu gehen in Django, wenn ich das richtig
gesehen habe. Allerdings habe ich auch nur
vielleicht eine Woche oder so das ausgetestet.
Das geht schon. Also du musst halt deine Daten
irgendwie modellieren und die kannst du in eine Datensprache speichern
und dann kommst du da auch wieder dran.
Also es ist die Frage, was genau du da
halten wolltest an State.
Naja, also ich habe zum Beispiel
relativ große NumPy-Matrizen
und da
und das muss auch NumPy sein, also das kann ich mir jetzt nicht irgendwie in die Datenbank reinschieben,
sondern, das könnte ich schon tun, aber für jede Operation müsste ich mir das dann wieder rausziehen,
das macht also eigentlich keinen Sinn und da hatte ich jetzt, also von meinem Draufgucken,
keine gute Idee, wie ich das mit Django überhaupt umsetzen kann.
Okay, das ist natürlich auch eine interessante Anforderung, also das wäre dann die Frage,
okay, warum hast du denn NumPy-Matrizen, also ich meine, klassischerweise hast du ja eine relationale Datenbank
und dann hast du die Daten halt in einer Tabelle irgendwie oder in mehreren Tabellen.
Ja, vielleicht nochmal ein Planungsding.
Also was ist überhaupt das Problem?
Also du hast jetzt Menschen, die arbeiten zu Zeiten und die sich koordinieren wollen.
Ja, also Anforderung ist im Prinzip die folgende.
Ich habe einen Sprung von Mitarbeitern und die möchte ich quasi einplanen über meinetwegen einen Monat.
Also der Zeitraum ist variabel.
und ich möchte eigentlich zu jeder halben Stunde wissen,
wie viele Mitarbeiter arbeiten in Summe gerade an diesem Tag,
meinetwegen an diesem Arbeitsplatz.
Das muss ich wissen und da muss ich effizient Berechnungen drauf machen können.
Und auch auf der Länge, also wie lange arbeitet ein Mitarbeiter
an diesem Tag, an dieser Maschine zum Beispiel.
und PyTest.
und ich habe sämtliche Operationen, die ich brauche.
Ja, klar.
Wenn man jetzt NumPy-Arrays hat,
dann ist das natürlich so ein bisschen incompatibel
mit diesem Standardmodell,
wo man in Django einen relationellen Datenbank hat.
Man kann das natürlich auch machen,
dann ist die Frage, ob einem Django noch so viel nützt,
weil dann kann man den ORM nicht benutzen.
Ich bin schon mal erfreut,
und PyTest.
doch irgendwie auf SQL abbilden oder geht das halt gar nicht? Wenn es nicht geht, ja, dann kann man halt nichts machen.
Dann nützt einem das. Klingt für mich, als wären da viele Relationen irgendwie.
Also das kann man mit Sicherheit abbilden. Die Frage ist,
wie viel Schmerzen hat man dabei? Ja, gut, genau. Und wenn man es schon so hat und
das gut funktioniert, dann ist halt die Frage, lohnt sich das oder macht man es nicht dann lieber so,
dass man das einfach verwenden kann, was man schon hat, was funktioniert.
Ja.
Ja, da kommt es her.
interessant
aber es ist auch wirklich rein Nampal
kein Pandas oder sowas, sondern einfach
auch, aber das versuche ich zu vermeiden
also
jetzt rein Pandas
ist meiner Ansicht nach nicht
praktikabel, weil ganz einfach
die Importzeit beträgt
drei Sekunden
das ist völlig
in der Exkursabel
ja, aber
selbst wenn ich den Import an die
an die Startzeit verschiebe
oder in die Laufzeit,
ist ja egal. Drei Sekunden sind
an keiner Stelle akzeptabel.
Und da bleibt höchstens
die Variante, hier die
Alternativen zu nehmen,
die es inzwischen gibt. Jetzt müsste ich
Polars, war glaube ich
die aktuelle Entwicklung
in Rust, wenn mich nicht alles täuscht.
Das habe ich mir noch nicht in der Tiefe
angeguckt. Ich nehme mal an,
die Importzeiten sind da besser.
Ich weiß aber nicht, ob Polars schon alles kann, was ich da brauche
Ja, das ist ja jetzt erst am Anfang, genau
Ja, interessant
Ja, also das ist natürlich auch etwas, was man halt in Python gut machen kann
und sonst wahrscheinlich auch eher nicht hat, dass man halt diese Nampai-Geschichte
direkt irgendwie verwenden kann
Ja, also Nampai ist eine der besten Bibliotheken in Python, würde ich sagen
da kann man echt so viel rausziehen
und da ist so viel schon da
und es ist vor allem verdammt schnell
ja
aber wie ist denn das, also wenn wir
jetzt zu dem Qt
da, also
die beiden Links, ist das dann halt, da muss man
dann Cablecase verwenden
wahrscheinlich ja
in Qt 6
nicht mehr
da haben sie es quasi normal
gemacht
aber, naja, man gewöhnt
sich dran
es ist jetzt auch kein Weltuntergang
wenn ich jetzt für die
Calls dann eben
CamelCase habe, aber ja, schön ist es nicht, das stimmt
Ja, sind die
Fußnägel nach oben geknückt
Ja gut, ich meine, ich mache ja auch andere Sachen
auf TypeScript und so, da mache ich auch CamelCase, aber
wenn man in Python ist, dann finde ich das mal
die Kombination, manchmal SnackCase, manchmal CamelCase
aber ja, gut
ja
Ja, interessante Geschichte, aber wie ist das denn jetzt, wenn jetzt mehrere Leute auf die Applikation zugreifen?
Genau, also ich war ja stehen geblieben, also ich habe mir Sorgen gemacht sozusagen, dass das nicht skaliert und das scheint aber nicht so schlimm zu sein.
also nein, es scheint relativ gut zu sein
also ich habe mir vor allem
Sorgen gemacht um die Bandbreite
und da muss ich
sagen, das ist gar kein Problem
also das kostet
tatsächlich fast keine Bandbreite
und würde sogar behaupten, das ist
ähnlich einer Web-Applikation
Wie
übersteckt denn
dieses
Daten
ist das nicht ein Bild oder
Nein
also das kommt darauf an
das unterstützt mehrere Backends
man kann zum Beispiel
VNC nehmen
man kann aber auch XRDP nehmen
und je nachdem wie
effizient das implementiert ist
ist es gut
und im Fall
von XRDP ist es gut
und da
werden also keine Bilder mehr übertragen
da wird vielleicht ein Frame am Anfang übertragen
und dann werden nur noch Deltas übertragen
Okay, ja
Also da entsteht tatsächlich nicht viel Traffic
Und was den Speicherbedarf
angeht, da bin ich ja selber für verantwortlich
und hab das selber
in der Hand. Aber es ist denn ja schon so, dass du
quasi eine Applikation pro Nutzer irgendwie
starten musst, mehr oder weniger. Ja, richtig
Genau, das ist schon so
Aber ich hab mir das durchgerechnet, also das
funktioniert, also ich kann ja auch
selber mehr oder weniger
bestimmen, sag ich mal
wie viel Speicher das Ganze frisst
und wenn ich mir halt
die Bibliothek reinziehe,
die 500 Megabyte beim Import frisst,
na dann kann ich die halt nicht nehmen.
Ja, auch interessant.
Und genau was mich auch noch interessieren würde,
um diese grafische Darstellung,
die muss ja dann irgendwie schon
irgendwo gerendert werden.
Das heißt, du brauchst auf dem Server, hast du dann quasi
auch ein X oder irgendwie sowas?
Genau.
Ah, okay.
20 Jahre, 30 Jahre.
Also ich denke, es wird es auch noch eine Weile
geben, dass da noch genug Zeit
ist, das zu portieren.
Und dann
ist Matt quasi ein User,
der das von außen benutzt,
eigentlich mehr oder weniger auch ein User
im Unix-System.
Nicht eigentlich, sondern tatsächlich.
Tatsächlich.
Dominik hat mir gerade
irgendwie
auf dem
Telefon
aufgemacht und da flackerte das
das weiß ich allerdings aber nicht
ob das jetzt irgendwie
also das Ganze läuft
auf Tablets und Telefon
aber das ist nicht meine Zielgruppe
eigentlich
also es funktioniert, man kann damit auch
planen, man kann sogar Tastatureingaben
und alles machen
da gibt es eine Tastenkombination dafür, wie das geht
wenn man in der FAK
nachguckt, steht es da drin
aber eigentlich ziele ich auf den Desktop
Anwender
eigentlich ist es nur schön auf dem Desktop zu planen
ich glaube keiner möchte wirklich
auf dem Handy seine
32 Mitarbeiter
planen
also ich weiß nicht, ob es da irgendeine Software gibt, die das gut macht, wenn, dann Chapeau,
aber ich ziele da nicht drauf, also ich habe es nicht davor.
Also ich habe tatsächlich so ein paar Ideen an der Stelle auch schon durchgeschüttet,
weil ich diese Anforderung wirklich auch so ein paar Mal gekriegt habe,
auch so Businesses heraus, die es halt wirklich brauchten und die es ganz interessant fanden.
Also da bist du nicht raus, den muss ich eigentlich nochmal umsetzen.
irgendwann im nächsten Leben, wenn ich
mal Zeit finde.
Ja, ja, ja.
Aber ich meine, man kann sich schon, also so gerade
im Probenfeld haben die sitzen, die Leute,
das ist schon vom Rechner, dann kann man schon davon ausgehen, dass das so
funktioniert, ja.
Ja, ja, ja.
Naja, ich meine, das ist halt ganz
anders, als man das sozusagen
so kennt, aber ich meine, wenn man so ein bisschen
drüber nachdenkt, dann ist das eigentlich gar nicht so
blöd.
Das ist schon interessant.
Also der größte Vorteil, den ich sehe, ist wirklich die Entwicklungsgeschwindigkeit
Ich brauche, ich habe kein HTML, ich habe kein CSS, ich habe kein JavaScript
Ich kann reines Python schreiben und kann mein Feature deployen
Und ich mag Python
Und ich mag weniger CSS und JavaScript, das mag ich nicht so gerne
Also ich komme nicht drum rum, also ich mache das auch, aber nur wo es wirklich nötig ist
Ja.
Ich überlege gerade, man hat sich so ein bisschen
an gewohnt. Also ich
finde zum Beispiel mittlerweile schwierig,
das von der nicht mit CSS
irgendwie vielleicht auch ein bisschen in JavaScript
zu stylen, weil mir so ein paar Sachen dann immer fehlen.
So diese dynamischen Sachen, an die man
sich dann doch irgendwie dran gewöhnt, so Headless UI
oder so.
Das geht mir schon auf die Nerven,
wenn ich jetzt in Django
das ohne REST-API benutzen
möchte, sondern die Templates einbaue, das ist
manchmal schon immer so ein bisschen strugglig,
weil ich halt da schon relativ viel auf Vue.js klebe.
Ja, aber das ist ja kein Problem von...
Also es ist ja beides...
Es ist ja beides Ökosystem.
Die Frage ist halt, welche Leute haben sich schon wie viel auseinandergesetzt mit Dingen zu entwickeln,
die das schön, einfach und pretty zu benutzen machen.
Du meinst... Achso, ja gut, okay.
Also wenn du aus der Entwicklersicht drauf guckst und dir dann überlegst,
okay, wenn ich jetzt schnell Produktivität...
mit UI-Sachen,
wo ich
meine, wenn ich quasi
fürs Web eine Applikation so schreiben will, wie
ich das sonst mit PyQt machen würde,
mit Qt,
was nehme ich denn da?
Dann landest du wahrscheinlich bei den
SPAs und dann landest du halt auch irgendwie bei irgendwas
von den großen UI-Frameworks,
die es halt für JavaScript gibt.
Da ist halt schon am meisten Arbeit dran.
Also ich bin mir natürlich da so ein bisschen ein Klotz ans Bein.
Naja, aber dafür habe ich natürlich
auch das ganze Ökosystem mit damit.
Ich bin halt nicht ganz alleine.
Mein Problem wäre jetzt bei Qt in Python
mit den Bindings.
Ich muss halt alles selber bauen.
Also vom Scratch irgendwie.
Ich muss mir selber überlegen, wie das aussehen muss.
Ich frage mich
gerade so ein bisschen,
was ich auch noch gerne von Martin wissen würde,
wie überhaupt so ein UI strukturiert ist,
so prinzipiell in Python.
Also von der Struktur her.
Also ich glaube,
das ist gar nicht so groß anders,
als wenn man
mit Django das machen würde.
Also es gibt einen Event-Loop
und
ja, eigentlich dreht sich alles
um das Event-Loop.
Und wenn man was Asynchrones braucht,
dann bietet Qt da auch
was Asynchrones.
Das ist im Wesentlichen eine Python-Klasse.
Ja.
Was interessiert dich speziell?
Also mich interessiert vor allem das
UI irgendwie.
Also wie
baue ich zuerst mir einen Rahmen
und dann da verschiedene Container rein oder mache ich das irgendwie über so Floating-Geschichten
oder mache ich das alles statisch?
Ach so, ach jetzt habe ich dich falsch verstanden.
Ich dachte, du meinst das Design der Python-Applikation,
aber du meinst tatsächlich die Oberfläche ansehen.
Ja, also Qt hat unterschiedliche Wege, wie man das machen kann.
Ich habe da auch noch nicht alle bis ins Detail ergründet, tatsächlich.
Auch nach drei Jahren noch nicht.
und PyTest.
und wie man das ausprobieren kann.
Woran ich eben denken musste, ist halt, ich glaube, es ist halt sehr stark davon abhängig, ob das jetzt eine gute Idee ist, sozusagen, dass man das einfach so nehmen kann, die Widgets, oder wahrscheinlich kann man sie ein bisschen stylen, oder ob das jetzt besser wäre, das über CSS und JavaScript zu machen, hängt halt wahrscheinlich sehr stark von einem Use Case ab.
Ja, die Frage ist halt, wie viel Arbeit muss ich jetzt da noch reinstecken, um mir so ein komplettes Konzept auszudenken.
Aber wenn dein Newscast ist, du willst irgendwas
kompliziertes machen, aber letztlich ist es
nicht so wahnsinnig wichtig, dass das jetzt zu
deinen Brandfarben passt, weil das ist
halt gar nichts, was jetzt
Customer-Facing ist, sondern es ist halt
irgendwie ein Ding, was Leute benutzen, um irgendwas
zu erreichen, aber das ist nie nach außen hin
sozusagen
Wer ist denn der Customer?
Ja gut, natürlich schon die
Leute, die das benutzen, aber
das ist halt nur intern
Das würde ich anders sehen
mit dem nur intern
Ja gut, aber warum
ja okay, aber da würde ich jetzt denken
an der Stelle ist es, macht es halt
Sinn, vielleicht was zu verwenden
womit du komplizierte Sachen
hinbekommst
die du vielleicht brauchst
weil das ein kompliziertes Problem ist
aber die Anforderung, dass
du das jetzt irgendwie besonders hübsch
oder so auf dich angepasst
dargestellt hast, also das so aussieht
das ist halt nicht so wichtig
Selbst wenn ich das so hübsch hinbekomme, weil ich so viel Aufwand habe, das so hübsch hinzubekommen
Ja, vielleicht wäre das dann schrecklich viel Aufwand, aber
wenn dir das egal ist, dann musst du es nicht machen
Naja, also du meintest gerade
entweder ich mache es mit CSS
oder ich mache es mit Qt
Das stimmt nicht ganz
Nein, du meintest nicht mit CSS oder
mit Qt, sondern ich meinte sowas wie mit den ganzen Frameworks
die ich habe
die ich halt ergänzen muss, keine Ahnung, Tailwind oder sowas
damit ich halt schneller produktiv bin
Utility oder so
Utility-Klassen einbauen
Aha
Also wenn ich das ganze CSS dann immer selber schreiben muss und dann muss ich mir erstmal und dann muss ich mir erstmal so ein Verbotchen bauen dass das alles so passt dann Puh
Ja, kommt drauf an.
Also Qt hat
auch noch einen Designer.
Wenn du das Projekt nicht kommerziell nutzen willst,
kannst du diesen Designer nutzen.
Aber wenn ich das nicht kommerziell nutzen will, okay.
Genau.
Kannst du den Designer nutzen, das ist quasi mit
ziehen und
ablegen quasi.
Jetzt erinnere ich mich, das hatte ich genauso.
Wie man das früher von, ich glaube,
Visual Basic,
da war das so ähnlich
schon. Kann man auch, wenn man will.
Der war auch sehr hübsch.
Ich hatte tatsächlich, glaube ich, den angefangen auszuprobieren
und dann bin ich darüber gestolpert, dass man das
irgendwie mit der Lizenz eben nicht benutzen
darf, wenn man das machen muss.
Okay, ja.
Jaja, ich meine, das
machen ja auch die ganzen,
ich kenne jetzt die iOS-Seite besser, aber
halt da Xcode und so, da gibt es ja auch solche
Dinge, wo du dann halt dann grafisch dann die ganzen
Elemente irgendwie sozusagen
selbst, dann kannst du sogar Linien
irgendwie dahin ziehen und dann werden dann halt irgendwie
Event Listener hinzugefügt oder keine Ahnung
oder dann wird halt, ja genau,
damit geht das wahrscheinlich auch irgendwie.
Aber
naja, ich könnte mir schon vorstellen, dass
also du kannst jetzt zum Beispiel an der iOS
ab, da kann ich es halt, weil ich nehme mal an, dass es bei
Qt genauso ist.
Sozusagen, damit
kannst du im Grunde alles machen, aber wenn du
in Newscase. Dann hast du an der Stelle
ein Riesenproblem. Das geht ja auch nicht gut.
Ja, also aus meiner
Perspektive,
mein Branding mache ja ich.
Von daher
hatte ich das Problem nicht.
Dazu kann ich dann entsprechend auch nicht
so viel sagen. Also was
ich sagen kann ist, es lässt sich jedes Element
mit CSS stylen, wenn man das will.
Ja,
ich glaube so groß und unterscheiden
tut sich das gar nicht.
versus Django.
Ah ja, okay.
Mit dem Unterschied natürlich, wenn man sein geliebtes
Framework nutzen will,
Tailwind, was weiß ich,
das funktioniert natürlich anders. Aber gut,
wenn man sich ein anderes Framework auswählt, dann
sind halt Dinge anders.
Du kannst halt jetzt, wie wir das bei unserem Podcast gemacht haben,
ich weiß nicht, was ich erzählen habe, Bootstrap importiert
und sonst nichts tun für das Design,
weil einem das nicht wichtig ist.
Ja, genau.
Da habe ich das ja auch im Grunde...
Ich glaube auch, das ist der Grund, warum Bootstrap
quasi so viel verwendet wird
in internen Tools, weil da ist es
halt oft egal.
Es ist halt wurscht, wie das jetzt aussieht.
Es muss halt bloß irgendwie halbwegs bedienbar sein
und das kriegt man
mit Bootstrap ja schon hin.
Es sieht halt nicht so toll aus, aber
ja, genau.
Ja, ja.
Ich weiß es nicht so genau.
Es ist immer, das ist alles
so wirklich...
Was möchte man am Anfang immer
machen, wenn man jung ist und
und vom Softwareentwickler will man Spiele programmieren.
Das geht mit Qt wahrscheinlich schon ein bisschen besser als mit Web.
Aber auch da bin ich mir nicht sicher, ob das die richtige Idee ist,
irgendwie das so zu betrachten.
Nee, ich glaube, da würdest du mit Spielen...
Wir können auch, wenn du was machen willst.
Also ob da eine 3D-Intel-Milch ist oder halt nicht.
Also ob da halt eine zweidimensionale, weiß nicht,
kann man Fensteransicht sagen zu Qt, reicht.
Achso, also für Spiele wäre jetzt Qt nicht mal eine erste Idee.
Aber kommt sicherlich aufs Spiel an
Ja, ich glaube auch
Nur weil wir es im Python machen wollen
Ja, genau
Das geht wahrscheinlich gut
Ja
Da kam ich mit Kiwi schon ein bisschen weiter
Es war auch so eine Art Bürosimulator
Ja
Ich habe einen Fantasy-Manager
für unsere Eishockey-Runde gebaut
Ja, gut, sowas
Ja, das hat wundervoll funktioniert.
Ja.
Das war sogar hübsch,
in Kiwi.
Aber ja, ich glaube, man will das nicht benutzen.
Das ist fummelig.
Was mich auch nochmal interessieren würde, so rein ressourcenverbrauchmäßig,
wenn ich jetzt für einen User
so eine Applikation starte mit
Qt, dann habe ich schon das Gefühl, also wahrscheinlich so ein paar
Megabyte wird die dann schon noch einen Hauptspeicher brauchen
oder so, ne?
Die muss ja dann auch die ganze Zeit laufen.
Obwohl, die muss eigentlich nur so lange laufen,
wie ein Benutzer sie tatsächlich benutzt.
Dann kann man irgendwie den State irgendwie so raus serialisieren und erst beim nächsten Mal, wenn der Nutzer wieder kommt, dann muss man das halt irgendwie wieder sich irgendwo herholen.
Genau so ist es.
Ja, aber tatsächlich, solange Nutzer irgendwie quasi da drauf guckt, also die Frage eingeloggt ist oder ich weiß nicht, wie man das beschreiben kann, solange irgendwie eine Session aktiv ist, wie auch immer, brauchst du halt diesen Hauptspeicher.
Ja, genau.
Ja, okay.
Das ist so, wobei
da auch einiges im Shared Memory
sich befindet
Ja, die ganzen Bibliotheken
Das macht Python von sich aus schon, das heißt
man hat jetzt nicht komplett den Overhead von einem Nutzer
auf alle Nutzer
sondern da wird noch einiges geteilt
aber ja, prinzipiell schon
Ja, weil
da bist du natürlich dann wahrscheinlich
ein bisschen ineffizienter als eine Web-Anwendung
die halt nur
wo es dann halt einen Prozess
gibt, der halt dann viele Requests von unterschiedlichen
Benutzern. Genau, also
speicherintensiver ist das schon, wobei
es nicht so wichtig ist, dass
der Sprecher schnell
beschrieben werden kann. Also
mit anderen Worten, es muss nicht zwingend RAM
sein,
was einem die Möglichkeit gibt,
ein Swap
Laufwerk anzulegen, das
irgendwo hinzutun, wo es einen relativ
zügigen Zugriff hat.
Und ja, da geht es auch.
Ja, und das ist jetzt
auch nicht so super langsam.
Genau, also eigentlich sind wir
mit der Swap-Variante
unbegrenzt im Hauptspeicher
fast
Ja, ja, ja
durchaus interessantes Modell
Ja, und
ja, ich meine
wenn man jetzt aber
für die Benutzer ist es ja auch so ein bisschen
die kommen aber gut damit klar und
nehmen das so an oder
hörst du da häufiger das so, warum
das ist irgendwie komisch
ich weiß nicht genau
Also bis jetzt habe ich tatsächlich dazu noch gar nichts gehört.
Ah, okay. Interessant.
Also es scheint einigermaßen intuitiv zu sein.
Vor allem, weil man es ja auch vom Desktop schon kennt.
Ja.
Also die Art der Bedienung, sage ich mal.
Gehen ja da wirklich alle...
Also jetzt stelle ich mir natürlich die Frage, wie ist das denn jetzt mit Tastaturkürzeln oder, weiß ich nicht, rechter Mausklick oder so.
Das muss ja jetzt alles durch den Browser durch.
Der Browser lässt ja jetzt nicht alles durch.
und PyTest.
Welt. Also Rechtsklick ist kein Problem,
Tastatureingaben sind kein Problem,
Tastaturkürzel sind kein Problem, also
das ist eigentlich alles da und wird
von Firefox und von Chrome
supported und damit eigentlich
von 90%
von allem, was es da gesucht gibt.
Ja, ja, ja.
Ja, das heißt man
kriegt auch gar nichts, also
es ist schon in einem Browserfenster, muss es halt sein.
Ja, richtig.
Ja, aber ansonsten kriegt man eigentlich gar nicht mit, dass es wirklich ein Browser ist, sondern das ist eigentlich eher, verhält sich wie eine native Applikation.
Verhält sich so, als ob man die Anwendung lokal auf dem Rechner hätte.
Auch Copy und Paste, wahrscheinlich bei Text kein Problem, wenn ich jetzt irgendwas da reinziehe oder so, okay, dann passiert wahrscheinlich komisch.
Genau, es gibt Dateitransfers, es gibt, wenn man will, sogar Audio.
Ah, ja.
Ja, schick.
Ich glaube, dieses Guacamole muss ich mir auch mal angucken
Das scheint ja schon sehr interessant zu sein
Ja, ja
Lass mal überlegen, was kann man sich denn noch so
vorstellen, was interessant sein könnte bei diesem
Ist das der Client selber, der Python
Rapper und Qt kommt selber auch von
Wie hieß denn diese Firma nochmal, die Qt baut?
Qt Foundation
meine ich.
Gut, ich weiß nicht mehr, da war ja auch noch eine lange Zeit,
vielleicht gibt es die Firma auch nicht mehr, keine Ahnung,
Foundation klingt jetzt irgendwie eher nicht mehr nach
aber
genau, von denen kommt halt auch
die Python-Binding, weil ich habe
irgendwie gehört, PySite gibt es oder
genau,
das sind die dann. Wenn ich Qt sage,
dann meine ich PySite.
Also es gibt natürlich
unterschiedliche Ausprägungen,
wie man Qt nutzen
will, kann. Und
ja, ich habe mich für PySight entschieden.
The QT Company.
Ah, okay.
Hier gibt es noch so ein paar andere Sachen.
Vielleicht wollen wir die noch kurz erwähnen.
Also Kiwi haben wir jetzt schon, glaube ich, im End.
Hier ist noch WX-Python.
Kennt jemand ein GTK-Binding
für Python? Genau, also
GTK, würde ich sagen, ist so das
zweite große Framework, was man da
nutzen kann. Was
nicht ganz, aber so
ungefähr auf Augenhöhe.
Andere würden wahrscheinlich was anderes sagen.
Also es ist auf Augenhöhe mit Qt
und
die Widgets sind ähnlich weit
gediehen.
Kann man das dann quasi
aussuchen. Du würdest
wahrscheinlich alles, dein ganzes User Interface
und auch deinen Desktop komplett mit Qt bauen
oder mit GTK.
Dafür habe ich GTK noch nicht
zu sehr in die Tiefe getestet, um das sagen zu können.
Aber
Ja, also es scheint
ähnlich weit zu sein. Aber dafür habe ich es mir nicht genug
angeguckt, um jetzt speziell sagen zu können, das geht
damit und das geht damit nicht.
Und dann gibt es noch einen Rapper da
irgendwie drum, PySimpleGui, der mit dem
einfache Sachen irgendwie dann auch gehen,
schneller oder sowas, oder noch mehr High-Level-Interface.
Kenne ich auch
nicht im Detail, PySimpleGui.
Das macht also beinahe auch über
Qt oder WXPython.
WXPython wäre
noch so ein Ding.
Habe ich jetzt auch mal
mal kurz ausprobiert, aber es war so mittelhübsch.
Ja, habe ich ja schon ganz lange nichts mehr
davon gehört. Ja, genau, aber
ging wohl ein paar Sachen.
Ja, also ich würde sagen,
es ist immer noch so, Python und GUI ist immer noch
so ein bisschen... Ja, wobei
ich tatsächlich, also ich würde schon
die Ansicht vertreten, also ich meine auch, wenn das alles
ja schon eine interessante
Geschichte ist, aber
ich habe schon so das Gefühl, dass so diese
Desktop-UI-Geschichten
so ein bisschen...
Also, vielleicht riechen sie auch noch komisch.
Also, ich meine, da könnte es schon so ein bisschen tot sein.
Was ist mit Beware?
Ja, ja, genau.
Also, das würde ich auch so sehen.
Also, das ist Russell Keith McGee, der hat ja auf irgendeiner PyCon eine Keynote drüber gehalten,
was sind die größten Gefahren für Python.
Oder Black Swan, irgendwas war im Titel.
Dem würde ich mich durchaus anschließen.
also was für Python richtig gefährlich
ist, ist, dass das nicht auf Mobile
läuft, weil tatsächlich
Computer werden verdrängt, also die Telefone
sind inzwischen, also ich würde mal sagen, ein durchschnittliches
iPhone ist wahrscheinlich
schneller und leistungsfähiger als ein durchschnittlicher
Desktop-Rechner. Ja, du stellst halt einfach irgendwo so ein Tablet
hin und dann gibt es halt ein paar Knöpfchen drauf und dann muss
das halt dann funktionieren. Ja, und Kinder wachsen
damit auf, die kennen das gar nicht mehr, die denken
sich so, was ist denn das für komische, große Dinger da
seltsam, was ist das? Kann man die
swipen? Ja, genau, tippen dann
auf den Bildschirm, dann passiert nichts, dann ist es kaputt.
Ja, also das ist ein Problem,
weil in 10 Jahren
oder 20 Jahren wird das wahrscheinlich
keiner mehr benutzen.
Halte ich für eine steile These.
Ja gut, aber ich meine, das ist nur so ein Risiko.
Also ob das so eintritt oder nicht,
ist natürlich klar, wie hoch ist das Risiko.
Also auch Marker an Python, wenn man das benutzt,
muss man wahrscheinlich schon relativ viel sich damit auskennen.
Ja, aber
also wie auch immer,
aber dass es
ein Risiko gibt, würde ich schon sagen,
einfach deswegen, weil Python da halt nicht läuft.
es läuft da nicht.
Und das ist ein Problem.
Und jetzt muss man entweder irgendeinen Weg finden, wie man
Python da, wie man sozusagen
es schaffen kann, dass man Python entwickelt
und dann halt aber auch eine iOS oder Android App
hat. Und das ist halt genau, Beware
macht das halt genau. Es sind diverse
Komponenten, die dafür nötig sind.
Ja, letztlich macht es so etwas ähnliches,
was halt React Native oder so auch macht,
dass es ruft schon die echten
UI-Funktionen dann auf von den
Frameworks der entsprechenden...
Also kompiliert runter quasi auf...
Ja, nicht ganz.
Es gibt unterschiedliche Komponenten
und die machen unterschiedliche Sachen, aber letztlich
es gibt auch Wrapper um
die echten Funktionen drumherum
und die werden dann aufgerufen.
Wäre auch interessant zu wissen, wie React das eigentlich
macht und dann gibt es ja noch irgendwas wie Yonnos oder
Capacitor oder so.
Ja, es gibt dann Teile, die sind halt komplett nativ
und dann kann man aus dem Web nachladen
und kann JavaScript ausführen und es ist
oder Elektron macht das ja auch so.
Ja, also
ich glaube, da sind wir auch noch nicht
durch. Das war auch ganz interessant.
Ich habe mich jetzt, ich war
letzte Woche Donnerstag auf dem Treffen
der Java User Group,
rein Juk,
die Java User Group rein.
Was hat dich denn dahin verschlagen?
Ja, ich dachte, ich muss mich mal weiterentwickeln
und dann dieses Python entwickeln.
Das hat keine Zukunft,
den muss man bei Java angucken.
Ich bin da hingegangen, weil
der Vortrag da hat mich
irgendwie, ist mir aufgefallen,
dass da Stefan Tilkoff und
Ebert Wolf, die machen so
Software minus
Architektur, TV und
die machen auch Podcast und die sind
beide bei IndieQ und die haben auch schon viele interessante
Stefan Tilkoff
ist oft zu Gast in anderen Podcasts,
letztens war er bei der Programmierbar
und hat da über Architektur
gesprochen, die machen viel Softwarearchitektur,
Das ist so eine der Firmen, wo man hingeht, wenn man jetzt ein großes Problem hat, ein großes Projekt
und man möchte jetzt irgendwie so, dass einem einer mal wirklich erklärt, wie man das denn so angeht
und wie man das besser machen kann, dann ist das so eine der Adressen, zu denen man gehen kann
und wahrscheinlich eine der renommierteren Adressen
und ich höre dem immer gerne, ich höre zum Beispiel Stefan Tillkopf immer gerne zu,
weil ich finde, der kann das immer schön erklären, was so die Probleme sind, die man da hat
und ja, deswegen bin ich da hingegangen
und da haben, wir haben geredet über, wie sah es eigentlich vor zehn Jahren aus, wie sieht es heute aus,
haben sich die Probleme irgendwie verändert in IT, welche Sachen sind besser geworden,
welche Sachen sind immer noch genauso wie vorher und
genau da, jetzt bin ich auch schon wieder abgeschweift,
da war auch einer, der machte so ein bisschen Elixier
und auch kein Java
und der meinte, in letzter Zeit macht er immer mehr Dart,
weil Dart für
das ist diese Sprache von
genau, von Google
für so, das sollte
glaube ich auch mal irgendwann Webgeschichte werden
aber jetzt hat sich so halt eine Nische
gefunden, man kann damit halt
Mobile Apps irgendwie oder Apps
für Android-Telefon oder
iOS-Geräte entwickeln
das ist eine eigene Sprache, Flutter ist halt
das Ding, was dann UI macht und
das braucht im Grunde nur irgendwie ein Canvas
wo es halt irgendwie
SVG reinrendern kann oder so, glaube ich.
Und macht dann eine UI komplett selber.
Also das ruft nicht irgendwelche Funktionen,
nativen UI-Funktionen auf
von dem
entsprechenden
Gerätehersteller,
sondern das
zeichnet alles selber. Also alle Buttons
und Dinge und so werden halt einfach
tatsächlich in Canvas reingezeichnet.
Und da Canvas überall da ist und man da
beliebige Dinge reinzeichnen kann, kann man
halt alle Sachen gleich aussehen lassen auf allen
Geräten damit.
Und es ist halt
einfacher zu entwickeln, als wenn man jetzt irgendwie...
Das haben ja diese statischen Programmiersprachen
oder statistik-stabilisierten Programmiersprachen,
da ist halt immer so...
Gut, mit Kotlin ist es schon ein bisschen besser geworden,
aber Java ist halt schon
für Android, das ist halt schon sehr
verbose und man muss halt sehr viel
Boilerplate schreiben und auch Swift ist
vielleicht ein bisschen besser, aber so wahnsinnig
viel besser auch nicht, ist auch relativ schrecklich.
Und ich meine,
mein böser
Scherz an der Stelle wäre ja mal so, naja, Software-Echotikur hat mich auch lange nicht interessiert, weil man schreibt ja in Python oft nicht so große Sachen, weil man muss ja nicht so viel schreiben.
Und wenn Java für Hello World halt schon tausend Seilen irgendwie boilerplate schreiben muss, dann muss man sich Gedanken um Software-Echotikur machen, einfach um das boilerplate-Zeugs irgendwie zu organisieren.
Und ja, das muss man mit Dart auch nicht so und dann hat man dann eine Alternative, die vielleicht ein bisschen einfacher zu verwenden ist und das setzt sich gerade durch.
und PyTest.
Es bringt aber, wenn man es länger verwendet, doch auch so das ein oder andere Problemchen mit sich, wo man am Anfang nicht unbedingt von weiß
Ja, also ich meine, das ist halt immer schwierig, glaube ich
Also ich hatte zum Beispiel, also ich habe eine App oder mehrere in Flutter entwickelt und es gibt dort ein Paketsystem sozusagen
also man kann sich dort
Zusatzfunktionalitäten ähnlich wie in Python
mit Libraries kann man sich
oder Packages kann man sich dort
auch reinladen
sozusagen
das Problem daran ist
so ein bisschen, dass die
oftmals halt von externen
Entwicklern kommen, so von dir und mir
und externen
Entwickler dann nach anderthalb Jahren
gerne mal die Lust an den Projekten
verlieren und dann hat man
so Unmaintained Dependencies
in seinem Projekt drin
und muss dann gucken,
dass man eine neue Bibliothek
halt findet, die das gleiche noch kann.
Und
das heißt, wenn man ein Projekt
fertig entwickelt hat und man
guckt ein halbes Jahr später
und versucht es quasi wieder zu
kompilieren,
dann wird das auf jeden Fall
nicht funktionieren.
Nach einem halben Jahr ist es ausgeschlossen, dass es
funktioniert. Zum einen
führt Google selber regelmäßig
Änderungen im Framework ein, und zwar
Breaking Changes.
Und zum anderen sind halt
Pakete dann nicht mehr aktuell
und müssen ersetzt werden, sodass
quasi der Wartungsaufwand dafür
nach meiner Einschätzung sehr, sehr groß ist.
Okay, das erinnert mich jetzt noch ein bisschen
an die JavaScript-Developer-Experience.
Also vielleicht hat sich das inzwischen
verbessert, das weiß ich nicht genau.
Aber das waren auf jeden Fall
die Probleme, mit denen ich so zu kämpfen hatte.
Also ich habe auch gehört, dass
Flutter irgendwie so für
größere Projekte irgendwann nervig wird.
Und ja, die Capacitor habe ich sehr
empfohlen gekriegt. Und das geht halt auch mit
Vue.js.
Ja, ist quasi dann so ähnlich wie React Native.
Ja, ich glaube auch.
Ja genau, es gab irgendwie auch mal Vue.Native, aber das ist auch irgendwie kaputt gegangen
aus den selben Gründen, weil irgendwer keinen Lust mehr hatte.
Und das klingt
so ein bisschen, als wäre das so das neueste Ding.
Aber ob das gut funktioniert
und wie lange das funktioniert, weiß man halt auch alles nicht
Also was mir ja ehrlich gesagt am liebsten wäre
wenn es so ausgeht, wäre halt, dass
auf allen Plattformen Web gut genug funktioniert
dass man die anderen Sachen nicht machen muss
Ja, aber gut
Und mit Safari 16.4 ist ja jetzt
natürlich auch, also iOS hat jetzt
einen Großteil der Sachen, die
gefehlt haben oder die bisher so richtig schmerzhaft waren
bekommen und
sollte jetzt irgendwie dann auch quasi
auf iOS halt
eigentlich ganz gut funktionieren, aber
okay, ja. Ja, aber diese PWA's, das hat auch
immer so...
Ja, es hat schon alles noch so seine Ecken mit Kannen,
es ist nicht ganz das gleiche, als wenn man
in Native das macht, ja, das ist schon wahr.
Kennt ihr PyScript?
Ja, klar, ja.
Das ist doch eigentlich die Lösung
aller unserer Probleme.
Ja.
Ja, also
es geht quasi darum, dass man halt
Python einfach im Browser, also
per Web-SMP im Browser laufen hat.
Ja, das
große Problem an der Stelle ist halt,
dass das, oder es ist halt die Frage,
ob das ein großes Problem ist oder nicht,
dass das halt bedeutet, dass man
halt irgendwie ein paar Megabyte Zeug
irgendwie runterlädt, weil der Interpreter, Python-Interpreter,
der ist halt nicht im Browser drin.
Die JavaScript-Interpreter halt schon.
Und das bedeutet, man muss halt erstmal
ein paar Megabyte irgendwie runterladen
und kann dann erst irgendwas
machen.
Wobei, das ließe sich ja leicht lösen,
wenn sich das so weit durchgesetzt hat, dass die
Browserhersteller sagen, ja gut,
dann bundeln wir das halt mit in den Browser rein.
Ja, das wäre natürlich eine Perspektive.
Das wäre natürlich schick. Dann hätten wir
gewonnen, aber naja.
Ja, aber dann kommen auch noch alle anderen
und wollen das auch haben.
Ja, ich weiß es nicht. Aber ja, natürlich.
Also das ist auf jeden Fall auch ein interessanter Weg.
Das ist halt alles irgendwie dann nach
WebAssembly kompiliert letztendlich.
Ich habe letztens gehört, das fand ich auch sehr interessant,
dass tatsächlich
ich glaube Figma war es,
und
ich hoffe, ich erzähle jetzt nicht
keinen allzu großen Nutzen, aber ich glaube
Figma ist tatsächlich
eine Applikation, die ist geschrieben
in C++ oder so
und dann kompiliert das aber
zu WebAssembly und läuft im Browser.
Aber die Leute, die das entwickeln,
entwickeln tatsächlich in C++.
Ja, okay.
Figma ist das Design-Tool für alle, die es noch nicht
können, mit dem man ohne
Plan von Entwicklung
so Screens zusammen klicken kann,
ein bisschen Funktionalität versehen, um so
Klickstrecken zu verwirklichen, wo es
auch tolle Tools gibt, wo man das exportieren kann
als Vue.js-Komponenten oder
direkt mit CSS rausfahren kann und so weiter
vom Figma. Dann spart man sich so den
Zwischenschritt, was sehr praktisch ist.
Was mein Problem wäre, sowas wie
Qt zu verwenden, weil ich glaube,
ich möchte jemanden, der von Design mehr Ahnung hat
als ich, das bauen lassen, das dann
exportieren und dann in meine Anwendung
importieren. Dann muss ich mich
darum nämlich nicht mehr groß kümmern.
Ja, aber da würde ich eben denken,
dass es genau diese
und PyTest.
Nichts können, verkaufen sich x-mal
viel besser als die Sachen, die es anders machen.
Das kommt auf deine Zielgruppe an.
Ich würde
sagen, ja.
Ich würde sagen, die Normalverteilung
in der Mitte sagt leider was anderes.
Also ich wäre durchaus auch bei
gute Funktionalität, würde ich eher
bevorzugen. Aber naja.
Ich glaube, dass es selten das
dem so ist.
Weiß ich nicht.
Ja, ja.
Ja, aber genau, vielleicht nochmal zu dem
zu mir planen,
das ist aber quasi
ist es entstanden
für einen konkreten Anwendungsfall,
in dem es dann auch
eingesetzt wird, aber es verwenden jetzt auch andere Leute schon
und es funktioniert eigentlich ganz gut quasi.
Und man kann das, also wenn man irgendwie so ein Problem hat
mit, man möchte irgendwie
Personalplanung machen, im Grunde kann
jeder das einfach so dann verwenden.
Kann jeder das einfach so verwenden, genau.
Ja.
Das, ja, genau.
Klingt ja auf jeden Fall schon mal gut
Ich weiß nicht, fällt dir noch was ein?
Ich überlege gerade, ob ich noch irgendwelche Fragen habe
oder irgendwelche Dinge, über die man mal reden könnte
Wir haben jetzt alles ein bisschen
wirklich tief gemacht
Also was mir
ich höre euch ja auch regelmäßig
was mir aufgefallen ist
es gibt noch einen
Unterschied
was wir anders machen, was ich anders mache
als ihr wahrscheinlich
Ihr nutzt gerne Datenbanken
Ich nicht
Ja, das ist auch interessant, ja
Und
Was nimmst du? Files?
Wie bitte? Was nimmst du? Files?
Dateibasiert, genau
Gründe, warum ich
Also, es stimmt natürlich nicht
Also ich habe auch Datenbanken, aber nur
da, wo ich sie haben muss
Also zum Beispiel das
Jack and Molly hat
eine Datenbank im Hintergrund
Da komme ich nicht drum rum
Aber ja, Datenbanken
habe ich verschiedene Nachteile, die ich da sehe.
Zum Beispiel brauche ich ein Tool, mit der ich
die angucken
kann, muss. Das heißt,
wenn ich mal schnell was nachschauen will,
dann geht das mal nicht so einfach.
Ich kann mich nicht einfach per SSH auf den Server
einloggen, kann mir eine Datei
anschauen mit dem Datei-Editor
meiner Wahl, sondern ich muss da irgendwie
dann mit einem SQLite, was weiß ich,
Viewer oder von außen
gut, dann kann ich einen Porn aufmachen, aber den muss ich auch
erstmal aufmachen.
dann da drauf.
Also das ist deutlich einfacher mit einer Datei,
würde ich mal sagen.
Dann habe ich die Wartung
der Datenbank. Ich möchte ja regelmäßig
reinigen,
ich möchte die komprimieren
vielleicht, alte
Sachen rausschmeißen. Das habe ich
auf Dateiebene zwar auch
so ein bisschen, aber ich würde
sagen, es ist da wesentlich einfacher.
Wenn ich da
Sachen habe, die ich nicht mehr brauche, dann kann ich
die mir konkret angucken.
und kann dann zum Beispiel in Python dafür sorgen, dass die wieder rausfliegen.
Wie machst du das? Pickelst du die Sachen dann weg oder schreibst du das JSON weg?
Ne, ich mache alles, was geht, mache ich menschenlesbar.
Also JSON oder INI.
Also JSON mache ich auch in einigen Applikationen, schreibe ich einfach tatsächlich so JSON-Files raus.
Also JSON ist ganz nett, das ist vor allem schnell.
eigentlich würde ich gerne noch woanders hin
es gab jetzt ein neues
Settingsformat von Python
wird natürlich jetzt in 3 Toml genau
das ist eigentlich das, wo ich jetzt
hin wollte, aber
sämtliche Operationen, die ich
eigentlich, also ich brauche natürlich auch Operationen auf den Daten
die ich da lese, das ist klar, aber die mache ich eigentlich alle
in NumPy
Also ich lade die Datei in meinen Speicher rein und das geht relativ schnell. Das geht mit der Geschwindigkeit, mit der ich von der Platte lesen kann und kann dann halt die ganzen Aggregationsfunktionen, die ich brauche, Summe, Maximum und so weiter, die habe ich in NumPy auch. Also mache ich das in NumPy.
Ja, ansonsten Datenbanknachteile. Ja, ich muss natürlich, ich muss die stoppen, wenn ich einen Backup mache.
Ja, das weiß ich nicht
Ja, okay, gibt es vielleicht so eine Live-Variante
Also ich kenne es noch, weiß ich nicht
Also wer mir nicht bekannt hat
Was für einen Datenbank man verwendet, aber ich meine jetzt bei Postgres
das geht schon
Also muss man nicht
stoppen
Aber ja, das ist natürlich ein Problem
Du hast einen Tail halt, mit dem du irgendwie umgehen musst
von Zeugs, das irgendwie in der Luft hängen kann
zwischen dem letzten Backup
und dem, wo du gerade backuppen willst
was da an Transaktionen gerade quasi reinkommt
der relativ groß werden kann, wenn du
viel Traffic drauf hast.
Gut, aber da gibt es schon Wege, damit
umzugehen. Ich meine, was da
empfohlen wird, ist ja dann auch immer nicht, das selber zu
machen, wenn man das nicht, weil das natürlich
ein Riesenaufwand ist, sich da einzuarbeiten.
Das ist durchaus ein Nachteil,
ganz klar.
Man kann ja auch da Dienstleister benutzen
und sowas wie Crunchybridge,
Crunchydata verwenden oder so, oder sonst irgendwen,
der halt sowas Managed Postgres anbietet
oder so. Okay, interessant.
Dann muss man das ja eigentlich schon packen.
Bitte? Pack jetzt bitte noch meine Shownotes.
Ja, aber man kann das auch selber
machen, was sie tun. Hat aber den
Nachteil, dass dann meine Daten woanders liegen.
Ja, ja, gut, okay.
Das will ich eigentlich nicht, sondern
also, was
mein Ansatz ist, ich möchte eigentlich
gar keine Kundendaten haben.
Und wenn ich sie haben muss,
dann möchte ich so wenig wie möglich davon
haben.
Also, zum Beispiel
bei der Anmeldung verlange ich auch nur
Nutzername und Passwort mehr nicht.
noch nicht mal eine E-Mail.
Ja Das hei wenn jemand sein Passwort vergisst dann kann er mich anschreiben Ja okay gut
Dann kann er mich anschreiben und falls das öfter passiert, das ist tatsächlich noch nie passiert, dann mache ich das in einem automatischen Verfahren draus.
Aber solange das nicht häufig vorkommt, ich antworte auch schnell.
Ich denke auch, das ist wieder eine Frage, wer die Kunden sind.
also wenn du jetzt ganz viele
Endkunden hast, an denen du nicht viel verdienst
und dann
muss alles automatisiert sein
dann ist es schlecht, wenn die Leute alle dich anschreiben
wenn du jetzt nur Endkunden hast
die sich auskennen, dann ist das halt alles nicht so schlimm
ich werde das auch automatisieren, solange das
überhand nimmt, wenn das überhand nimmt
aber das ist nicht der Fall
dann
ich finde es interessant
ich weiß nicht
ich denke mir, irgendwas könnte man mit dem
da noch anfangen
Es gibt ja auch die Verantwortung an die Hand
Wenn ich jetzt sage, ich habe hier einen riesen Haufen von Nutzerdaten
mit E-Mail-Adresse, Passwort, Bankdaten, was weiß ich
und dann kommt irgendjemand auf meinen Server
und trägt das ganze Zeug raus
dann habe ich auf jeden Fall ein Problem
und das kann ich schon mal insofern vermeiden
wenn ich das Zeug gar nicht erst habe
Das würde zum Beispiel aber auch für Managed sprechen
weil dann hast du die Verantwortung quasi auch abgegeben
Naja
Du schließt dann
einen Servicevertrag
mit dem, der das halt managt
aber in der Verantwortung steht trotzdem ich
Also ganz so
Also wenn jemand dann
also nehmen wir an, du hast eine Managed Datenbank
irgendwo gekauft, zum Beispiel bei Crunchy Data
und dann irgendwie Crunchy Data, da geht
irgendjemand rein und trägt alle Daten raus
dann hast du natürlich trotzdem ein Problem
auch wenn du das vertraglich dann sagen kannst
das bin ich gar nicht jetzt
ich bin jetzt vielleicht außer Haftung
oder, aber das ist ja trotzdem Kacke für deine Kunden und überhaupt.
Genau, aber es kommt halt, genau, auch da vielleicht auf die detaillierte Vertragsbeziehung
mit deinen Kunden oder mit den Kunden deiner Kunden an und so.
Ja, aber vielleicht willst du das auch einfach gar nicht.
Naja, aber die Frage ist halt tatsächlich, also was jetzt aus der Datenraustrageperspektive
sicherer oder besser ist, wenn man jetzt ein kleines Team hat, sich noch komplett um so
einen Datenbankcluster-Management zu kümmern zu müssen oder das halt an einen Service-Dienstleister
auszusourcen, der da vielleicht mehr Zeit für hat oder mehr ressourcen, weil er das nur
macht und da sich besser mit auskennt als man selber.
Und das geht ja für verschiedene andere Services auch so.
Ja, also es kann durchaus sein, dass das sogar
die sichere Alternative ist, wenn du
das outstorst, wenn du dich selber
halt nicht damit auskennst. Genau, oder man hat halt nicht
so relevante Sachen. Und ich sag mal so, ja,
okay, klar, gibt es so Punkte, wo man jetzt gucken muss,
dass man jetzt nicht alles so sammelt, wie jetzt die letzte
Krake. Da gibt es ja so ein paar
Google-Kraken, die das so machen. Ja, aber es gibt
viele Unternehmen, die erstmal alles in ihrem
Data Lake irgendwo hin...
Ja, also ich würde jetzt auch nicht alles... Vielleicht kann man damit irgendwann
mal irgendwas anfangen, aber
Da habe ich auch keinen Freund von
Ich kann das so ein bisschen
verstehen, also jetzt nicht von Kunden an
aber wenn ich jetzt so ein Request habe, warum soll ich
die ganzen Informationen da wegschmeißen
Also der neueste Trend scheint zu sein
dass jeder Dienst, egal wie unwichtig
der ist, mal eine Telefonnummer haben will
und das finde ich ganz grausam
Ja
Also ich würde jetzt auch sagen
Mir geht es gar nicht um Kunden da an, sondern eher so um
Meta-Quatsch
Log-Zeit-Stempel
oder sowas. So Zilemmitrie
im weitesten Sinne.
Und ohne, dass ich jetzt irgendwie so Nutzer
daran identifizieren möchte, um irgendwie da noch
ein Quäntchen Umsatz raus zu quetschen,
sondern einfach nur so ein bisschen um den Flow
so ein bisschen besser im Blick zu haben. Ja, technische Daten
brauchst du natürlich. Das steht ja außer Frage.
Sonst funktioniert die Software ja nicht.
Ja.
Ja, aber ich glaube auch da, ich meine,
man macht sich vielleicht nicht immer klar, welche
Optionen man eigentlich hat. Natürlich kann man irgendwie
Sachen speichern und so. Die Frage ist halt,
wiederum, wenn du nicht so viele
Nutzer hast, du kannst ja auch einfach fragen.
Also zum Beispiel, das wäre jetzt auch so ein GraphQL-Api,
wenn ich jetzt nicht ein Problem
mit Latenz habe, ich ziehe mir dann Maximum
und schmeiße alles weg, was ich brauche.
Man könnte natürlich auch direkt
die Query so effektiv stellen,
dass man das Minimum holt.
Du kannst auch direkt die Datenbank
quasi in deinen Browser reinpacken,
das geht natürlich auch, es gibt auch bestimmte
Anwendungsfälle, in denen das nicht toll ist,
aber es gibt
auch gute Gründe, warum Leute das anders machen.
Ja, man muss halt
ein bisschen mehr Format haben
Ein weiterer Vorteil ist, wenn ich die Daten nicht sammle, dann
ist mein Backup deutlich kleiner
Ja, also ich würde
einer der wichtigsten Argumente ist vielleicht auch, dass weniger Strom
verbraucht, so ein bisschen weniger Kosten
auch ökologisch
Ja
Aber ich finde das, also so Dinge als
Grundsatz zu sagen, ich
schaue mal, ob ich jetzt nicht vielleicht irgendwie
welche Daten ich wirklich brauche und welche halt
nicht und die, die ich nicht brauche, die
spreche ich gar nicht erst, das finde ich
eigentlich schon recht sinnvoll.
Ja, ja.
Ja.
Was eigentlich für so ein ORM-Ding
sprechen wir mit klaren, definierten Modellen, mit einer klaren
Validierung?
Zu dieser grundsätzlichen Frage, Datenbank ja oder
nein, aus meiner Perspektive ist das jetzt
eher, würde ich ja sagen,
gut, das Dateisystem ist ja auch eine Datenbank.
Es ist halt nur eine andere Art
von Datenbank. Es ist halt eine hierarchische Datenbank,
und keine Relationale.
Busker steht ja auch in Python irgendwo rum.
Ja, genau.
Insofern
ist halt auch da die Frage,
und es ist ja auch, wenn man eine Web-Anwendung hat,
die sind, die auch eine,
jetzt wenn man Django hat oder so,
oder was auch immer, für eine Standard
Web-Anwendung, dann üblicherweise hat man
ja auch da nicht nur
Daten in Tabellen,
sondern da hat man ja auch noch was anderes.
Da hat inzwischen
eigentlich nicht mehr wirklich Falses, im Frühjahr war es dann Falses,
noch, aber inzwischen ist es halt ein Object Store meistens.
Irgendwas Cash-Radius oder?
Cash, gut, aber das ist jetzt nicht unbedingt Teil der Datenhaltung, da liegt ja auch nur
eine Kopie von dem, was man...
Ja, du musst ja zum Beispiel Redis jetzt auch nicht nur als Cache nehmen, sondern kannst
halt auch da irgendwie bestimmte Sachen vorbrechen und da ablegen, wenn das irgendwie...
Gut, das ist nochmal eine andere, Redis ist halt so ein Key-Value-Store im weitesten Sinne,
aber dafür gibt es natürlich auch wieder Anwendungsfälle, wo das gut ist, aber also
und PyTest.
Genau, dann
die Standardlösung, oder das erste ist dann halt
Leute legen das dann nach S3 oder so
und stellen dann fest, oh mein Gott, das ist ja voll teuer
Ja, das ist
und ja, ich hab jetzt
ich weiß nicht, vor den letzten Monaten, und ich hab ja eine super
kleine Instanz, aber ich hab trotzdem die letzten
drei, vier Monate hat das Ding irgendwie
60 GB Daten
oder so angesammelt an Zeugs
und
gut, bei größeren Instanzen wird das noch viel, viel
mehr sein und dann wird das halt irgendwann teuer, wenn man
das halt alles nach S3 legt
und dann ist die Frage, okay, kann man das
irgendwie selber machen? Ja, kann man. Was ich
dafür schon verwendet habe, ist so
Minio.
Ja.
Das Problem
dabei ist,
das ist quasi
ein Backend-Lokal.
Gleicher API, gleiche Unterface wie S3.
Gleicher API wie S3,
aber du kannst halt selber hosten.
Das ist eigentlich ganz nett.
Also so prinzipiell die Idee.
Ja,
Ja, das kann man durchaus verwenden, auch im kommerziellen Kontext geht das, aber es gibt da eine Firma hinter, die ist jetzt auch im Silicon Valley, das ist alles irgendwo geschrieben und da arbeiten viele Leute, die haben wirklich viel, viel Venture-Capital eingesammelt und das müssen die halt irgendwie auch wieder rausholen, das heißt, irgendwann werden sie irgendwie versuchen, Methoden zu finden, wie sie einem dafür irgendwie das kleine Schräubchen, einen dafür bezahlen lassen können, was ja auch irgendwie legitim ist, aber das ist halt so ein bisschen,
und was halt der große Nachteil von Minio
ist, dass du da nicht
dynamisch irgendwie
Dinge hinzustellen und wegnehmen kannst,
sondern das ist halt schon
eher so auf den Betrieb ausgelegt. Du weißt schon,
wie viel Platz du hast und das ist
alles fertig. Wieso kannst du da nicht dynamisch
was... Du kannst halt nicht einfach eine Maschine
dazustellen und sagen, so, hier eine Maschine mehr.
Du kannst auch so ein Cluster, dann kannst du irgendwie
eine Liste eintragen.
Das ist dann etwas, wo dann die Leute draufgestoßen sind,
die dann Minio verwendet haben.
Das ist ja der große Vorteil
von AWS und der Lambda-Geschichte,
dass du das halt einfach hochskalieren kannst
mit einem Klick.
Ja, genau. Aber Minio ist
eher so für jemand, der sowas wie S3
betreiben möchte.
Und dann halt schon,
wo du halt schon ein Datastarter hast.
Aber wenn du jetzt dynamisch irgendwie
sagst, oh, ich brauche jetzt aber nochmal ein paar Terabyte mehr
Datenspeicher,
dann ist Minio...
Da kannst du Sachen auf jeden Fall hinzufügen.
Das heißt, wenn du dir irgendwie dynamisch
Kisten spawnst, auf denen du
Minio aufsetzt und die dann kannst du einfach
deinem Cluster hinzufügen. Also theoretisch geht das halt schon.
Ja, also jedenfalls,
ich beziehe mich da jetzt auf die ganzen
Performance-Tuning und so Dinge, Artikel,
die Leuten dann aufgefallen sind, die
größere Monster-Incense mit haben, die meinten so, ah shit,
das geht nicht mit Minio, geht nicht gut, weil
du kannst es nicht dynamisch,
kannst du Sachen hinzufügen oder wegnehmen, geht nicht gut.
Und die sind dann alle umgestiegen
auf etwas, das nennt sich SeaweedFS.
Okay. Und da geht
das wohl, das habe ich aber selber noch nicht ausprobiert.
Also keine Ahnung.
Seaweed.
Ja.
Genau, das sind halt so die Dinge, die man hat.
Wieder auf die Entity-To-Do-Liste.
Ja.
Naja, genau. Aber ja, also die Kombination
ist eigentlich schon gut, aber ja klar, ich sehe auch, dass man,
wenn man ein Teilsystem hat, ist es auch nicht so schlecht.
Also wenn man da tatsächlich reingucken kann und so.
Ja.
Ja, es kommt halt immer auf
einen Anwendungsfall an.
Ob das jetzt da mehr Sinn macht.
Ja, aber ich meine
sozusagen aus der Datenbankperspektive
du musst dich ja jetzt dann auch tatsächlich
um solche Sachen kümmern wie Backup und
was passiert eigentlich
wenn irgendwas
weg ist, wie kommt das wieder zurück und diese ganzen
Prozesse, wo du ja, ich meine
klar, bei Datenbanken ist es halt vielleicht komplizierter
aber da gibt es ja schon eine fertige Lösung für
das musst du dann ja selber bauen
eigentlich. Naja, eigentlich
nicht. Also wie kommt das zurück
war ja deine Frage, naja mit Ansible
und dem Backup
und
ja, Backups mache ich mit Borg.
Habe noch nichts besseres gefunden.
RESTIC ist gut.
Kennst du RESTIC?
RESTIC habe ich
gelesen,
brauche ich da aber eigentlich nicht.
Also habe noch
keinen Anwendungsfall, wo ich jetzt
oberhalb von Borg noch was brauchen würde.
Was kann RESTIC noch zusätzlich?
Du kannst halt auch direkt auf
ein Bucket backupen zum Beispiel oder so.
Achso
Also oder auch irgendwo, wo halt einer läuft
also relativ gutes
Ja, das mache ich sowieso, aber gut, das mache ich dann händisch
Also nicht händisch, sondern automatisch
Also ich habe es programmiert, sodass es jetzt automatisch
läuft, sozusagen
Ja, aber
also ich meine, klar
das ist schon eine prächtigte, also muss man sich eigentlich
schon überlegen, es ist ja meistens so, dass Relationalen Daten
immer so gesetzt sind, aber ob das
für alle Anwendungsfälle immer so
der Default sein sollte, das weiß ich auch nicht.
Das ist schon, kann man auch nochmal
drüber nachdenken, ob das
für den eigenen Fall irgendwie Sinn macht.
Ja, ich meine,
aus einer Software-Architektur-Perspektive kann man
natürlich auch einfach sagen, das ist halt ein
Implementationsdetail, das ich jetzt aus dem
Kern meiner Software auch eigentlich raushalten kann.
Ich mache halt irgendwie Repository-Pattern oder so
und dann
habe ich sowieso in meiner Applikation oder
in einer Kernlogik irgendwie nur mit Objekten zu tun und wie die jetzt letztlich gespeichert werden,
ob die in einem Falssystem landen, in JSON oder Tommel oder der Datenbank,
das ist letztlich egal, da kümmert sich irgendwie ein anderer Teil drum
und das ist gar nicht im Kern meiner Applikation drin.
Naja, der Vorteil der Datenbank, das sehe ich in erster Linie in den Aggregationsfunktionen,
die das halt mitbringt, aber das mache ich halt woanders dann.
Ja, also ich meine, was du in NumPy halt nicht hast, wenn du jetzt so große Datenmengen hast, dass die gar nicht so wirklich in deinen Hauptspeicher passen oder so.
Wenn die nicht in den Speicher passen, richtig. Aber auch da gibt es Lösungen tatsächlich. Da gibt es Abstraktionen von NumPy, die das quasi so chunkmäßig dann bearbeiten. Also das geht tatsächlich auch, wenn man das will.
Ja, oder überhaupt so Indizes und so hast du wahrscheinlich dann eher nicht.
Ne, brauche ich nicht.
Brauchst du halt nicht.
Dann können auch keine Indizes kollidieren, wenn ich
zwei dicke Datensätze zusammenfüge.
Ja.
Insofern, also auf jeden Fall
finde ich sehr interessant, weil viele
irgendwie eher
unkonventionelle Ansätze oder so, aber
ja,
auf jeden Fall sehr interessant
und für den Anwendungsfall
macht das wahrscheinlich durchaus
alles Sinn.
Hat natürlich alles
Vor- und Nachteile, aber gut, da muss man
sich halt dann informieren vorher
Ja, ich weiß nicht, hast du noch
irgendein Thema, Martin, was
du
wo wir jetzt noch nicht drüber gesprochen hätten
oder
sind wir quasi durch
Nö, aktuell
würde ich sagen, haben wir relativ
breit alles erschlagen
Da machen wir noch Pics
Gut, ja
Wer möchte anfangen?
Okay, dann fange ich mal an
Moment
Pics
Ich würde gerne eine
auch eine
kleine, feine Anwendung
picken
die jetzt, also auch wieder natürlich
für so wahnsinnig viele Leute interessant ist
gibt es auf iOS und auf dem
Mac und zwar heißt die
Paprika
und das ist so eine Rezeptverwaltung.
Ich weiß nicht, wenn man halt
gerne kocht und viele Rezepte hat und so,
dann überlegt man sich ja häufig,
wo man die dann irgendwie zentral
lagert oder keine Ahnung, was man damit...
Obsidian. Ja, Obsidian.
Ja, gut, aber das dann halt
sehr
puristisch irgendwie
dann... Kannst ja
direkt Static Pages, das ist für Rezepte
eigentlich dafür sehr gut, erinnern lassen, deinen Bock.
Ja, aber klar, kann man machen, ist aber nicht unbedingt auf den Rezeptanwendungsfall irgendwie so wahnsinnig gut zugeschnitten.
Und das Ding kann halt so Sachen wie zum Beispiel, das hat einen eingebauten Browser und dann, wenn man irgendwo im Web ist und sieht halt irgendwo ein Rezept oder so, dann kann man sagen, okay, speichere mir das mal.
und dann
kann man halt die unterschiedlichen Teile, also
man hat sozusagen ein Schema, in dem die Rezepte
irgendwie gespeichert werden und dann
kann man dann halt in dem eingebauten
Browser kann man dann halt so rechtecke ziehen und sagen,
das hier sind die Zutaten und dann zieht man da einfach
ein Rechteck drüber und sagt, da waren die Zutaten und dann macht es halt
und dann sind die Zutaten halt in einem ordentlichen Format
drin oder hier, das ist das Bild, wo man
wirklich sehen kann, was da drauf, also
woher soll,
will man sonst wissen, also oft auf Webseiten
gibt es halt viele Bilder, wo ist denn, welches Bild ist
denn jetzt so das, auf dem das wirklich zu sehen ist
und PyTest.
auch eine Kombination aus Python Backend
und Vue.js Melee
verwendet.
Vor drei Wochen.
Vor einem Jahr ungefähr, habe ich damit mal angefangen.
Weil das auch ganz interessant aussah.
Aber ehrlich gesagt,
das zu deployen ist schon ein ganz schöner Horror.
Ja, ich meine Melee nicht so viel.
Ja, aber
dann habe ich irgendwie ein Ding gebaut,
was mir sozusagen die
Rezeptgeschichten, die es bei
dieser App gibt, in dieser Captain Cook App,
halt rübersynkt in meinen Melee und ich dann
halt nur noch Melee verwenden muss und nicht mehr
die komische App, weil die App von Captain Cook ist halt,
sieht zwar irgendwie nett aus, aber sie ist halt, funktioniert nicht so richtig.
Und
genau, und da hat jemand dann
ein Pull-Request
gegen
Gestellte gesagt, hier, soll das
nicht auch vielleicht mal nach Paprika sinken und so? Ich so,
Paprika kenne ich gar nicht.
Ja, bin ich auch aufmerksam geworden und ja, super, super, jetzt sinkt das halt auch dahin.
Und jetzt verwende ich Paprika und bin
sehr zufrieden.
Also was echt cool klingt,
mit den Bildern und den Zutaten, weil
ich mache das halt immer alles selber, aber gut,
und Korrektiv-Rezepte.
Ja, okay.
Cool. Ich würde
Copilot Labs picken.
Ah.
Also Copilot, haben wir ja schon ein paar Mal
darüber gesprochen, wunderschöne Extension
für den Editor deiner Wahl zum
besser machen.
Copilot Labs, ich weiß nicht, ob es auch für andere
IDEs geht, als wie es Code, aber damit
kannst du halt so Sachen machen wie
markier dir irgendwie ein paar Funktionen,
mach doch mal bitte Type-Ins dran oder
ein paar Tests hätte ich hier gerne und so.
und das funktioniert ganz gut.
Das ist ganz nett.
Oder übersetzt das mal in eine andere Sprache.
Also hier habe ich einen Python-Code, hier kann ich go oder
andersrum oder ja.
Okay, ich verwende
immer nur den Standard-Copilot.
Das ist eine sehr, sehr geile Extension
noch dazu.
Was ich bei Copilot gelesen habe,
ist das folgende, wenn da
ein Fehler auftritt, also angenommen, man
nutzt halt Copilot in VS Code oder so,
dann schickt
und PyTest.
und wie man das dann erlauben kann.
in Italien.
In Italien ist es komplett gesperrt worden.
Ja.
Jetzt ist es wieder frei.
Aber das fand ich schon auch ein bisschen dreist von Open Air,
dass sie da halt wirklich gar nichts zu sagen haben.
Ich meine, sie können ja da,
wenn man das sagt, was man da tut,
kann man ja durchaus einiges machen,
aber sie haben halt einfach gar nichts dazu gesagt.
Wobei, das ist ein bisschen andersrum.
Du musst die Story jetzt auch fertig erzählen.
Man konnte die Story gar nicht verstehen. Entschuldigung.
Welche Story?
Dass sie da einfach gesperrt haben in Italien.
Ich dachte, Italien hat sich überlegt, dass sie hier keinen Bock drauf haben.
Nee, nee, nee, nee. Das ist eine europäische
Geschichte. Das droht
ja auch dann in anderen europäischen Ländern zu
passieren, weil du musst halt,
wenn du irgendwie Daten von Leuten speicherst oder damit
irgendwas machst, musst du halt zumindest sagen,
was du da tust und warum.
Und das haben sie nicht gemacht. Und daher
kann man sagen, okay,
darfst du deine Produkte
in der EU nicht anbieten und Italien hat das so ausgelegt,
das kann jedes Land dann so auslegen,
wie sie das möchten, dass kann
das da niemand mehr drauf zugreifen.
Ja gut, aber Artikel 6.1.f
DSGVO zum Beispiel sagt, dass
ein Anbieter eines Dienstes alle
für den Vertragserfüllung relevanten Daten
durchaus erheben darf. Ja, ja, ja, klar, aber
du musst trotzdem
sagen, was du da irgendwie machst und warum.
Du darfst das schon, aber
sie haben ja nicht mal was dazu
gesagt und das machen sie jetzt und dann geht's
wieder. Also insofern, aber
ja, ich meine, na, so.
Nee, ist halt...
Wobei da ist es ein bisschen andersrum, also da
nimmt sich ja OpenAI quasi
den Datensatz Internet
und lernt da drauf
und falls sie damit was
machen, was sie nicht dürfen, haben die ja das Problem.
Bei Copilot ist es ja so ein bisschen
andersrum, da ist ja der Anwender quasi
dafür verantwortlich, also wenn
der Anwender in der Firma sitzt und lädt jetzt Teile
des Quellcodes der Firma
irgendwo hoch, darf glaube
ich der geneigte
Mitarbeiter eigentlich auch nicht.
Naja, ich sag mal so, wenn du über Git
tappest, ist das eh wurscht, ne?
Ja, wenn da eine Code da eh liegt, ja, klar.
Aber ich meine,
auch was, was Leute halt so bei
ChatGPT oder so reinpacen, also ehrlich gesagt,
ich pace da ja auch viel Code rein, also daher
das ist halt
auch ein Anwendungsfall
und da ist wahrscheinlich auch vieles dabei, wo
man als Firma ein Problem mit hätte, wenn Leute
das halt machen, aber ja.
Ja, aber als Firma, ganz ehrlich,
gerade
als Firma ist doch wohl ein berechtigtes
Interesse daran,
Produktivität und Effektivität zu haben
und die ganzen Secrets, die irgendjemand
damit preisgeben könnte,
die Maschine dahinter, die fängt
jetzt ja nicht an, individuell nach
dir zu suchen und deine Secrets rauszupaldovern,
um da selber einen Profit
zu machen. Also auch
als Firma würde ich das sagen.
Ja, aber ich weiß
jetzt nicht, ob ich meine patentierbaren
Sachen da irgendwie
lassen würde, aber ansonsten würde ich jetzt sagen,
und es gibt halt auch zum Beispiel, wenn man
das nicht möchte, als Firma ja durchaus
Auftragsdatenverarbeitungsdinge,
wenn man jetzt mit dem Microsoft Professional
Vertrieb spricht, wo man dann
APIs bekommt, wo die Daten halt nicht
zurückgeflossen werden sollen und so weiter.
Das heißt, dann meint man halt sowas, dann hat
man halt einen anderen API-Endpunkt mit einem anderen API-Key,
basta.
Also ich weiß von einer Firma,
da ist in den Firmenrichtlinien Copilot
direkt verboten worden.
Ja, das stellen sich auch immer alle ziemlich viel an.
Also ich fand den
Punkt auch, ich weiß gar nicht, wer das gesagt hatte,
Ich glaube, das hast du in der letzten Episode gesagt.
Bei Firmen ist ja sowieso
an einer gewissen Größe,
so effizient kannst du da gar nicht mehr sein.
Ja, aber jeder Angst hat dann, dass du
jedes einzelne Softwarepaket
verifizieren musst von irgendeinem
Audit-Team, was meins ganz besser ist, die
OMSUS-Community und so. Und dann sitzen da zwei Männchen
und machen dann ein Audit von
60.000 JavaScript-Paketen oder sowas. Entschuldigung.
Ja.
Muss ja nicht alles sinnvoll sein, aber
Worüber reden wir? Ist das eine ABM oder was?
Also ganz ehrlich,
und PyTest.
Du hast noch einen Pick auch, Martin?
Ja, ich hatte ja eine Episode mal gemacht
zu PyPy.
Ziemlich cooles Tool übrigens.
Und
ich habe noch so eine Ergänzung dazu
quasi. Das nennt sich
Numba.
Das ist von den Entwicklern
von Anaconda.
Das ist die quasi Python-Distribution.
Und
das finde ich auch richtig genial.
Mein großer Traum war, ich schreibe Python-Code, dann drücke ich einen Knopf und der übersetzt mir das nach C. Und im Prinzip macht das das eigentlich fast ohne Code-Anpassung.
also alles was ich
da machen muss ist
ich mache einen Decorator
über meine Funktion drüber
und muss ein bisschen aufpassen
mit den Eingaben
über die Funktion drüber, muss ein bisschen
aufpassen mit den Eingabe und Ausgabe
Datentypen und dann ist es das
dann erzeugt er
mir quasi zur Laufzeit
C-Code, cached die
und führt die quasi mit C-Geschwindigkeit
aus die Funktion, habe ich probiert
funktioniert genial
Ja, hast du auch schon mal
das Python ausprobiert?
Weil das ist mal so das, was so standardmäßig
auch bei Scikit-Learn oder so verwendet wird
Das Problem ist
wenn das Projekt hinreichend groß wird
dann habe ich
also ich habe ja bei Python und bei
PyPy nicht so richtig die Wahl
dass ich jetzt nur
einen bestimmten Teil meines Projektes damit
ausführe
Python ist einfach
auch eine Art Python-Dialekt
wo man aber dann zum Beispiel, wenn man es
schneller haben will, die Typen mit dazu
schreibt, ist halt ein bisschen, ist auch älter
als die Spannung der Zone, deswegen. Ja, ja, ich erinnere mich, aber da
musst du einiges für tun. Also da
musst du eigentlich den ganzen Code umstellen.
Ne, ne, ne, das kannst du für einzelne Funktionen
auch machen oder für... Ja, aber
wenn die Funktion schon da ist, musst du sie umstellen.
Ja, das ist richtig.
Stimmt, das musst du bei Nummer nicht unbedingt.
Und bei Nummer brauchst du das nicht, da kannst du das lassen.
Eigentlich wie es ist,
Klammer auf, abgesehen von den Eingabe-
und Ausgabedatentypen, die müssen
ein spezielles Format haben, aber da ist
eigentlich, also wenn du eine NumPy-Matrix zum Beispiel
hast, die kannst du mehr oder weniger so lassen.
Und dann, ja, ist es das.
Dekorator drüber, Funktion ist ein C.
Fertig. Und ich kann sie von Python aus
genauso rufen wie vorher. Und die ist halt einfach
tausendmal schneller.
Ja, ja, ja, ja.
Ja, cool.
Da wir jetzt von dem Speed waren, hat es eben auch noch
erwähnt, das wollte ich jetzt nochmal an das Ende packen,
Polar IRS. Ich glaube, das ist auch
cool. In dem Zusammenhang, wenn wir
schon bei Speed wieder sind,
so als DataFrame-Tool
für Rust und Python irgendwie noch kombiniert.
Oh, ja.
Ja, vielleicht,
ich höre immer, Python ist langsam.
Ja.
Also bis jetzt lag es immer an mir
und nicht an Python.
Ja.
Und wenn es an mir lag, dann
hatte ich auch eine Chance, das zu beheben.
Also da gibt es zum Beispiel
den Line Profiler
für Python.
Weiß nicht, ob ihr das kennt.
Ist das nicht
der eingebaute?
Nee, ist nicht der eingebaute. Also Line Profiler
macht im Prinzip folgendes.
Ist auch wieder ein Dekorator, den schreibst du über deine
Funktion drüber und der annotiert dir
an jede Quellcode-Zeile,
wie schnell oder langsam die war.
Und dann kannst du quasi,
also möglicherweise würde man
das so verwenden, du findest erst mal die Funktion,
die langsam ist, das kannst du mit den klassischen
Tools machen.
Also was man halt
üblicherweise so nimmt, da springen ja hinten
quasi die Funktionen raus, die langsam sind,
wenn man es richtig bedient.
Und dann gehst du quasi mit dem Lime Profiler
in die Funktion rein und schaust dir an,
was genau ist denn da langsam.
Und so kommt man echt richtig schnell
zu einer
Performance-Analyse.
Kann das dann beheben oder dann irgendwie
auch doch ein C oder ein Mithnummer-Deprogrammter versehen.
Hast du irgendeinen Lieblingsprofiler
für die globale Sicht. Ich habe in letzter Zeit
häufiger mal Eskalin verwendet, aber
Nö, da nehme ich den Python-Standard.
C-Profile.
Genau. Funktioniert,
ist nicht schön, bedienbar, aber funktioniert.
So oft braucht man es
ja auch zum Glück auch nicht.
Ich bin auch kein Freund von
Premature Optimization.
Ich optimiere dann, wenn ich wirklich
feststelle, es ist langsam.
Für meinen Geschmack ist Python oft
nicht langsam, aber wenn es eben doch mal
langsam ist, dann fange ich an zu profilen
und dann kriege ich das,
bis jetzt habe ich es immer weggekriegt, das Problem.
Klingt gut.
Das verlege ich
vielleicht auch nochmal.
Letzten Mal einen ganz interessanten Artikel
gelesen zum Thema
Müten,
Performance-Mythen.
Das ist ein, jetzt bin ich den Namen nicht parat,
ein Spieleentwickler, der da halt auch schon
seit langer Zeit, der hat auch so einen YouTube-Channel,
der irgendwie relativ beliebt ist.
Und
und der hat dann so einen Artikel geschrieben, wo er irgendwie so darüber rantet, was halt aus seiner Sicht die Leute immer sagen über Performance, was alles nicht stimmt.
Und da sind so ein paar interessante Sachen dabei, wo ich dachte, oh, das höre ich sehr oft, solche Sachen und das ist wahrscheinlich Quatsch.
So wird zum Beispiel sowas geschrieben wie, naja, die Leute sagen immer, man muss eigentlich nur die Hotspots irgendwie optimieren oder so, du machst...
Erstmal keine Performance-Geschichten,
entwickelst ohne Performance
im Hinterkopf zu haben,
eben keine premature optimization
dein Code
und dann, wenn es langsam ist, dann guckst du halt, wo es langsam ist
und dann optimierst du das weg und dann meint er so, ja,
also das funktioniert ja auch manchmal, aber manchmal
halt auch nicht und gerade wenn du jetzt wirklich
performance-kritische Sachen machst, dann kann es gut sein,
dass dieser Ansatz überhaupt nicht funktioniert,
weil du
halt sozusagen
dann rauskriegst, wenn du anguckst,
und was sind die Teile deines Codes, die langsam sind?
Naja, dann ist da halt irgendwie MemCopy oder keine Ahnung,
da wird halt Hauptsprecher durch den Prozessor geschoben.
Das ist das, was du willst optimieren.
Das ist halt, da kannst du nichts mehr machen.
Und da musst du eigentlich wieder ans Design deiner Applikationen.
Da musst du umstrukturieren.
Aber wenn ich von vornherein weiß, dass das performancekritisch ist,
dann schreibe ich ganz anderen Code.
Dann ist der Code komplett anders eigentlich.
Also da kannst du vergessen, da musst du komplett das Design ändern.
Genau, und dann kann es sein...
Wie meintest du, John Carmack?
und PyTest
schlimmer als ein Rewrite, der dann
wo man im Hinterkopf hat, dass das
besser und besser ist. Und deswegen wird das
in der Spielindustrie auch häufiger gemacht und es ist tatsächlich auch
ab und zu erfolgreich. In anderen Bereichen
sollte man das vielleicht nicht machen,
aber da ist das wohl ab und zu
irgendwie dann halt der beste Weg.
Und ja,
das ist alles nicht so einfach.
Das ist gleich dein Schlusswort.
Ja, kann man immer sagen. Hängt davon ab,
kommt drauf an, ist alles nicht so einfach.
Vielen Dank, dass wir hier zugehört haben
Vielen Dank Martin, dass du da warst
Gerne, danke
Dann schaltet uns doch bald wieder rein
Hallo at PythonPodcast.de
Bis zum nächsten Mal
Bis dann