Transcript: GUI-Applikationen am Beispiel von MiaPlan

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

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

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.

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?

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

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

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.

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.

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.

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.

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