Transcript: GUI-Applikationen am Beispiel von MiaPlan

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, heute Jubiläums-Episode 50, herzlichen Glückwunsch Jochen.

Jochen

Ja, herzlichen Glückwunsch zurück, 50, sind wir schon, wow.

Jochen

Ja, ganz gut, oder?

Jochen

Ja.

Dominik

Wir sprechen heute über Qt und andere grafische Anwendungen in Python und über Mia-Plan, das da gebaut ist, und haben den Martin zu Gast, hi Martin.

Dominik

Hallihallo.

Dominik

Hallöchen.

Dominik

Ja, wollen wir ein bisschen News machen am Anfang?

Jochen

Ja, diesmal vielleicht schon, hatten wir letztes Mal ja nicht.

Jochen

Genau, und dann mache ich das hier gerade mal auf, was wir da so.

Jochen

Ja, also es gibt halt so ein paar langweilige Software-Geschichten,

Jochen

wo es vielleicht nicht schlecht wäre zu wissen, was da passiert.

Jochen

Es gab jetzt, das ist aber auch schon was länger her,

Jochen

ich habe jetzt ja dummerweise die News von zwei Episoden

Jochen

und dazwischen ist auch mal was ausgefallen.

Jochen

Kann sein, dass es jetzt doch ein bisschen veraltet ist.

Jochen

Zum Beispiel, was ich hier drauf habe, ist,

Jochen

dass die einzelne Version von MyPi rausgekommen ist,

Jochen

was vielleicht ganz interessant ist.

Jochen

ist auch nochmal, dass

Dominik

rausgekommen gewesen war, wolltest du also sagen.

Dominik

Ja,

Jochen

ist schon länger her und

Jochen

das Einzige, was mir jetzt noch so in Erinnerung ist,

Jochen

ist halt deutlich schneller geworden damit auch.

Jochen

Ansonsten

Jochen

SQL Alchemy 2

Jochen

ist raus. Da war

Jochen

auch das, was man quasi an coolen Dingen

Jochen

verwenden konnte, war schon in 1.4 irgendwie

Jochen

drin und der 2.0 Schritt

Jochen

ist glaube ich nur, dass jetzt Sachen

Jochen

deprecated sind, die halt vorher

Jochen

noch gingen und jetzt gehen sie halt nicht mehr.

Jochen

Deswegen halt der Manager-Versionssprung.

Jochen

Aber eigentlich auch ganz

Jochen

interessant, weil so gerade so Async-Geschichten

Jochen

ist halt, das ist

Jochen

auch da noch relativ neu.

Jochen

Also, dass man da halt so mit

Jochen

na, wie heißt das?

Jochen

PG?

Jochen

Async-PG.

Jochen

Async-PG, genau.

Jochen

Das auf Postgres zum Beispiel zugreifen kann.

Jochen

Und das halt alles so ordentlich

Jochen

funktioniert.

Jochen

Ja, da hatte ich auch schon viel Spaß mit.

Jochen

Hört sich gut an.

Jochen

Dann Wagtail hat sich eine ganze Menge getan.

Jochen

Da habe ich hier noch die Release Notes drin von Wagtail 4.2.

Jochen

Ui.

Jochen

Und jetzt ist aber schon 5.0 gestern erschienen.

Jochen

Ah.

Jochen

Das ist tatsächlich, ja.

Jochen

Wie viele Backing Chases gab es diesmal?

Jochen

Doch, gab ein paar.

Jochen

Und ich hatte auch da so ein bisschen Probleme mit.

Jochen

Also das war nicht so, das war schon ein etwas holprigeres Update.

Jochen

Weil, also dazu, die Software, mit der wir hier den Podcast irgendwie publishen, basiert halt auch auf Wagtail.

Jochen

DjangoCast.

Jochen

Genau, und auf Django natürlich. Und ja, deswegen kriege ich das immer mit, wenn es irgendwas bricht, dann bricht es halt ja auch.

Dominik

Der Grund, warum ich es nicht mehr mitkriege, ich habe es aus diesem Grund rausgeschmissen.

Jochen

Ja, 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.

Jochen

Und jetzt inzwischen ist es halt so

Jochen

einen Monat später oder so.

Jochen

Ja gut, ist nicht super aktuell.

Jochen

Ein Monat ist ein Monat.

Jochen

Ja, ist schon ganz okay.

Jochen

Die müssen halt auch relativ viel fixen und ändern.

Jochen

Daher ist es schon verständlich,

Jochen

dass es nicht immer so fortgeht.

Dominik

Aber Jocken, du bist doch eigentlich immer dagegen,

Dominik

dass man sich so dicke Klötze ans Bein bindet.

Jochen

Ja, ich hätte das auch

Jochen

am liebsten vermieden, wenn das irgendwie möglich gewesen wäre.

Jochen

Aber ich möchte,

Jochen

also ich hätte jetzt auch ein eigenes Thema schreiben können.

Jochen

Ja, das wäre auch gegangen.

Jochen

Warum denn nicht?

Dominik

Wir hatten letztens jemanden getroffen,

Dominik

der hat ein eigenes CMS in PHP geschrieben.

Dominik

Kann das sein?

Jochen

Ja, oder hat er mit...

Jochen

Wir waren auf dem Vue.js

Jochen

Meetup Cologne.

Jochen

Das war ganz interessant, ja.

Jochen

Der hat ein Statamic

Jochen

mitentwickelt, beziehungsweise ist einer der Leute, die da halt

Jochen

bezahlt werden für, dass sie da dann entwickeln.

Jochen

Das ist tatsächlich so ähnlich wie Wagtail, bloß halt für

Jochen

PHP und Laravel.

Jochen

Und

Jochen

ja, nee, das ist also CMS

Jochen

das ist schon eine große Geschichte. Wacktail ist auch

Jochen

relativ groß, viel Code drin

Jochen

und das weiß ich nicht, ob man das wirklich selber machen möchte.

Jochen

Es gibt da ein schönes Projekt von, jetzt habe ich den Namen

Jochen

vergessen,

Jochen

auch sehr bekannt eigentlich in der

Jochen

Kerstin,

Jochen

in der

Jochen

Django-Community,

Jochen

genau, der hat FeinCMS geschrieben

Jochen

und das gefällt mir,

Jochen

also wenn man sich den Source anguckt, das gefällt mir

Jochen

tatsächlich auch ein bisschen besser als Wacktail, aber

Jochen

es kann halt nicht so viel und

Jochen

ja, an der Stelle ist halt, Wacktail kann

Jochen

halt schon sehr, sehr viel. Also das ist halt

Jochen

irgendwie, also damit kann man so ziemlich

Jochen

alles machen, was man irgendwie gerne machen möchte.

Jochen

Fein CMS, also tatsächlich

Dominik

ein deutsches Fein und kein

Jochen

englisches Fein. Ja, ich glaube, der kommt aus

Jochen

der Schweiz oder so. Und ja,

Jochen

also ich meine, sowas hätte ich natürlich auch schreiben können

Jochen

oder das nehmen können, aber dann hätte ich auch viel schreiben müssen,

Jochen

weil viele Sachen, die ich gerne hätte, sind da halt auch

Jochen

nicht drin.

Dominik

Das muss ein Alter sein, Copyright 2009.

Dominik

Der macht das schon lange, ja.

Jochen

Ja, ja. Und

Jochen

ja, deswegen

Jochen

nehme ich halt Wacktail, obwohl ich auch

Jochen

manchmal denke so,

Jochen

es knirscht halt ab und zu.

Jochen

Das letzte Release war die Kompatibilität

Jochen

mit Django 1.10.

Jochen

Nee, dann bist du wahrscheinlich auf der falschen Seite.

Jochen

Da ist auch in letzter Zeit noch mal was

Jochen

dazugekommen, meine ich, ja.

Jochen

Es gibt da möglicherweise auch

Jochen

vielleicht ist es dann auch FeinCMS 3 oder

Jochen

so. Das hat auch mehrere

Jochen

Major-Visionen inzwischen.

Jochen

Ja,

Jochen

also Wacktail, also

Jochen

CMS, das hab ich früher immer gedacht, das ist ja gut, was ist das

Jochen

schon groß, aber es ist halt, da hängt schon eine ganze Menge

Jochen

Zeugs dran. Und was

Jochen

jetzt zum Beispiel mir Probleme

Jochen

gemacht hat bei dem Update, ist halt,

Jochen

dass sie intern irgendwie einen, weil ich

Jochen

hab halt eine Extension, also ein Ding gebaut,

Jochen

was das halt so ein bisschen erweitert, weil ich hab halt viele

Jochen

Bilder für andere Zwecke, jetzt bei dem Podcast

Jochen

kommen nicht so viele Bilder vor, aber

Jochen

noch andere Interessen machen. Ich möchte gerne Bilder

Dominik

in der absolut maximal bestmöglichen

Jochen

Qualität. Ich möchte, dass sie nicht total unscharf

Jochen

sind. Das ist,

Jochen

kann man so oder so sehen.

Jochen

Ja, aber ich sehe das schon.

Jochen

Ich denke mir immer, immer wenn ich auf so Seiten,

Jochen

also gerade auch Wagtail-Seiten, es gibt ja viele

Jochen

andere, die auch Wagtail verwenden,

Jochen

so unter anderem NASA, Google,

Jochen

irgendwie der National Health

Jochen

Service in den UK und so.

Jochen

Es gibt schon viele große und immer wenn ich da drauf gucke,

Jochen

denke ich mir so, ey, die Bilder sind doch unscharf.

Dominik

2.000 Leute haben auch dieses Problem.

Jochen

Ja, also ich weiß nicht.

Dominik

Also ich finde es super, das ist cool. Mir ist es tatsächlich auch

Dominik

aufgefallen, wenn ich mal so ein paar Sachen von dir angeguckt habe,

Dominik

dass das sehr viel schöner ist. Wahrscheinlich hat man sich

Dominik

einfach nur daran gewohnt, dass die Sachen gar nicht so cool

Dominik

aussehen, dass das gar nicht so schön

Dominik

sein kann, weiß man gar nicht so genau.

Jochen

Ja, also sag mal so,

Jochen

ich meine, selbst WordPress macht das

Jochen

besser. Also das hat

Jochen

auch nur so drei oder fünf

Jochen

statische Größen für Bilder drin.

Jochen

Also das Problem ist grundsätzlich, dass

Jochen

wenn du, du hast halt

Jochen

zwei unterschiedliche Arten von Pixel, du hast halt sozusagen

Jochen

die Pixel für deine,

Jochen

wie groß dein,

Jochen

wie breit quasi dein Bildschirm ist oder so und da kannst du auch

Jochen

in Pixeln rechnen, aber das, was angezeigt ist,

Jochen

ist halt was anderes,

Jochen

weil es halt mittlerweile halt

Jochen

Devices gibt,

Jochen

Telefone, irgendwie

Jochen

Bildschirme, 4K-Bildschirme oder noch

Jochen

mehr, die halt dann mehrere

Jochen

physikalische Pixel für einen virtuellen Pixel

Jochen

quasi benutzen. Und wenn

Jochen

du halt nicht sozusagen dann die

Jochen

Bildgrößen entsprechend mitlieferst,

Jochen

sondern sagst, mein Bild ist halt genauso breit wie

Jochen

so viele virtuelle Pixel, dann hast

Jochen

du halt ein implizites Upscaling

Jochen

von Faktor 4 oder so darin und dann wird's halt

Jochen

unscharf. Und ja,

Jochen

das ist halt irgendwie, da gibt's noch, sie arbeiten

Jochen

da auch dran. Also so ist es nicht. Da gibt es jetzt inzwischen

Jochen

auch ein sehr vielversprechendes, da gibt es

Jochen

so eine Roadmap, wo drin steht, was sie da machen

Jochen

wollen und sie wollen das mit

Jochen

Picture-Elementen machen und irgendwie so

Jochen

modern oder so. Ihre Hauptmotivation

Jochen

dabei ist aber eher irgendwie Wandbreite

Jochen

sparen, weil man dann halt so modernere

Jochen

Formate wie

Jochen

WP oder solche

Jochen

Sachen verwenden kann.

Jochen

Aber damit

Jochen

kriegt man das auch hin, dass man dann halt scharfe Bilder

Jochen

hat. Mein Ding ist aber eher, ich will scharfe

Jochen

Bilder haben und JPEG reicht mir eigentlich.

Jochen

und deshalb habe ich da so ein Ding geschrieben

Jochen

und da haben sie jetzt irgendwas umbenannt, irgendwie

Jochen

ein Attribut auf dem Image-Node

Jochen

heißt jetzt irgendwie anders, weil

Jochen

ich muss jetzt halt, also meine

Jochen

Erweiterung für Wagtail,

Jochen

die erzeugt halt

Jochen

dann Bilder in unterschiedlichen Größen

Jochen

und macht da so ein Sourced-Attribut.

Jochen

Und dann, genau,

Jochen

da greife ich halt auf irgendwie so

Jochen

die Filter von dem

Jochen

Ding irgendwie zu, weil du kannst ja da noch andere Sachen

Jochen

reinschreiben wie JPEG-Qualität

Jochen

und weißer Teufel und die Breite

Jochen

und das muss ich ja irgendwie auslesen

Jochen

und das hat sich irgendwie umgeladen. Vorher war es ein String,

Jochen

der irgendwie durch so Pipes getrennt war und den habe ich dann

Jochen

gesplittet und jetzt ist es halt irgendwie die Liste

Jochen

schon gesplittet.

Jochen

Und jetzt muss ich halt eine Fallunterscheidung machen zwischen

Jochen

also wenn es... Alte Version, neue Version.

Jochen

Es war nicht

Jochen

mal irgendwie so ein...

Jochen

Es war eigentlich ein...

Jochen

Und solche Sachen machen halt schon Arbeit.

Jochen

Da habe ich so ein bisschen was jetzt machen müssen, aber insgesamt

Jochen

ging es eigentlich. So schlimm war es nicht.

Jochen

Und jetzt laufen halt auch, läuft alles irgendwie auf Django 4.2 und Wagtail 5.

Jochen

Und das ist eigentlich schon nett.

Jochen

Also Wagtail, wenn man sich das vor einiger Zeit angeguckt hat und nicht zufrieden war,

Jochen

kann man das eigentlich nochmal machen.

Dominik

Also einige Zeit heißt, bei mir ist das zwei Jahre her, würde ich sagen.

Dominik

Ja, zwei Jahre reicht auf jeden Fall.

Dominik

Also inzwischen hat sich da sehr viel getan.

Jochen

Also die Changelogs sind halt auch immer sehr lang.

Jochen

Also würde ich sagen, was ist an dem modernen Wagtail eigentlich cooler?

Jochen

Was sie verbessert haben, ist, es gibt ja schon

Jochen

seit einiger Zeit so ein Stream-Field.

Jochen

Das machen alle CMSs irgendwie gleich.

Jochen

Für Video, Audio und dergleichen.

Jochen

Du hast halt ein JSON-Field in der Datenbank oder so

Jochen

und dann hast du halt so Blöcke drin,

Jochen

wo halt in dem Block steht halt sozusagen drin,

Jochen

was das jetzt ist.

Jochen

Ist das jetzt ein Text oder ist das jetzt ein Bild?

Jochen

Und dann kannst du die sozusagen,

Jochen

kannst du eigene Widgets dafür bauen,

Jochen

um solche Sachen einzutragen.

Jochen

Und ja, Vectel macht das halt auch.

Jochen

Aber das war, wenn das sehr groß wurde,

Jochen

früher dann halt schon auch

Jochen

eher langsam und so und ein bisschen

Jochen

komisch, weil das halt alles,

Jochen

weil die HTML-Formulare so unfassbar riesig

Jochen

groß geworden sind, wenn du halt viele Dinge drin hattest.

Jochen

Und du musst ja deine Formulare

Jochen

für jeden Eintrag

Jochen

quasi generieren.

Jochen

Und das ist jetzt,

Jochen

das

Jochen

Editier von Reactel ist jetzt auch

Jochen

eine React-App, kann man auch sagen, so igitt.

Jochen

Aber,

Jochen

also das ist halt einer der Vorteile, ist halt, wenn man jetzt

Jochen

riesige Seiten hat mit ganz, ganz vielen Formularen

Jochen

oder so, dann ist das halt

Jochen

nicht mehr langsam

Jochen

beim Rendern. Oder wenn man irgendwas ändert,

Jochen

dann muss nicht alles neu gerendert werden, weil es halt nicht mehr

Jochen

klassisch ist, sondern dann passiert das alles im Kleinen

Jochen

nur noch und das geht jetzt schneller.

Jochen

Also überhaupt, das ganze Ding ist deutlich schneller geworden.

Jochen

Also ich meine, so sehr React irgendwie doof ist

Jochen

für die Sachen, für die es

Jochen

oft verwendet wird, für sowas wie eine komplizierte

Jochen

Content-Editier-Geschichte,

Jochen

wo halt irre viele Formulare

Jochen

sind und es Interaktionen dazwischen

Jochen

gibt und dafür ist es jetzt vielleicht auch nicht so schlecht.

Jochen

Das ist eigentlich gar nicht schlecht. Sieht das denn gut aus und kann man

Jochen

das denn theme? Theme

Jochen

kann sein, das weiß ich,

Jochen

kann man, man kann auf jeden Fall Dinge ändern.

Dominik

Oder dass man jetzt halt ganz tief wieder rein...

Jochen

Eines der neuen Features bei Vectile 5 ist,

Jochen

es gibt jetzt ein Dark-Theme.

Jochen

Oh ja.

Jochen

Wer braucht das nicht?

Jochen

Genau,

Jochen

ist mir direkt aufgefallen,

Jochen

weil ich das dann auch direkt hatte, weil ich hier auf dem

Jochen

Dark-Mode bin.

Jochen

Das ist für die Augen viel angenehmer.

Jochen

Naja, also ich finde, es sieht ganz okay aus.

Jochen

Also so wirklich hübsch ist es nicht, aber ich meine, das ist ja nur das

Jochen

Editier-Ding. Es ist ja nicht so, also wie es dann

Jochen

hinterher aussieht, was auf der Webseite zu sehen ist.

Jochen

Das kannst du ja machen, wie du willst.

Jochen

Das hat ja nichts mit Wagtail zu tun.

Jochen

Ja, insofern. Jetzt hatten wir fast eine schöne Übergleichung

Jochen

zum Thema, aber ich glaube, wir sind noch nicht ganz fertig.

Jochen

Nee, da kommt noch, oh je. Genau,

Jochen

nächstes wäre halt Django 4.2.

Jochen

Ja, auch nächste

Jochen

LTS. 42.

Jochen

Ja.

Jochen

War auch jetzt, da war auch wenig drin, was irgendwie

Jochen

kaputt gegangen ist. Die große Neuerung da

Jochen

ist halt, dass

Jochen

man jetzt auch Async mit der Datenbank

Jochen

sprechen kann und

Jochen

zum Beispiel PsychoPG

Jochen

3 wird jetzt unterstützt und dann

Jochen

also sozusagen man hat jetzt die Voraussetzungen dafür,

Jochen

dass man komplett Async von

Jochen

vorne bis hinten sozusagen von Frontend

Jochen

von View bis

Jochen

zur Datenbank kann man halt jetzt durchgängig

Jochen

Async Dinge machen und man könnte

Jochen

jetzt so Sachen bauen wie

Jochen

man verwendet diesen ListenNotify

Jochen

Mechanismus von Postgres, um halt wirklich so richtig

Jochen

reaktiv Dinge zu machen,

Jochen

sodass man,

Jochen

also ging ja auch vorher schon, aber da war es immer so ein bisschen

Jochen

hm, jetzt geht's halt, also

Jochen

man muss dann Django Channels verwenden und

Jochen

weiß nicht, aber jetzt

Jochen

ging es halt richtig

Jochen

sauber eigentlich. Also da gibt's

Jochen

noch keine wirkliche Unterstützung für, das müsste

Jochen

man dann alle selber schreiben, aber es geht jetzt theoretisch

Jochen

zumindest schon mal. Und das ist eigentlich schon schön.

Jochen

Auch der ORM könnte jetzt dann halt irgendwie

Jochen

Async werden, der hat ja auch schon Async-Interfaces,

Jochen

aber

Jochen

die kann man auch schon verwenden

Jochen

und kriegt dann halt irgendwie den Gewinn, dass es

Jochen

wirklich Async ist, irgendwann, wenn das dann halt

Jochen

mal bepflichtet ist. Momentan

Jochen

ist es dann halt nicht

Jochen

Async wirklich, sondern es ist halt dann irgendwie

Jochen

es wird über ein Threadpool

Jochen

und in Sync gemacht, aber

Jochen

ja, so das

Jochen

wird noch ein bisschen dauern, bis die ORM

Jochen

Geschichten halt auch wirklich Async sind, aber

Jochen

ja, geht auf jeden Fall in die Richtung und

Jochen

irgendwann dann

Jochen

wird auch alles auf Async dann quasi

Jochen

umgestellt sein und man kann es dann

Jochen

verwenden, wenn man möchte. Muss man ja nicht. Man kann auch einfach

Jochen

Sync verwenden, wenn man nicht so viele Queries hat

Jochen

und wenn es

Jochen

Sync ist auch mal ein bisschen schneller als

Jochen

iSync, weil man da halt schon noch so ein bisschen

Jochen

Abstraktionsschichten mehr dazwischen hat.

Jochen

Aber es gibt halt einiges Fälle, in denen es

Jochen

total praktisch wäre, das zu haben. Und

Jochen

dafür ist es natürlich gut. Kannst du noch mal

Jochen

einen Anwendungsfall dafür nennen?

Jochen

Ne, wenn du zum Beispiel viele Queries machst

Jochen

und du willst halt

Jochen

nicht, dass sich die Latenzen und deine Datenbank

Jochen

steht jetzt zum Beispiel woanders, sagen wir mal so.

Jochen

Das wäre jetzt nochmal so.

Jochen

Nehmen wir an, deine Datenbank

Jochen

steht irgendwie in Amerika und du hast hier

Jochen

deinen Applikationsserver oder wie auch immer

Jochen

das Ding, was halt jedenfalls

Jochen

das HTML rendert, ist halt

Jochen

irgendwo so. Und jetzt hast du halt große Latenz

Jochen

zwischen Datenbank und

Jochen

Frontend. Dann

Jochen

momentan ist es halt so, leider addieren sich

Jochen

die Latenzen auf. Und wenn du halt

Jochen

100 Queries machst, um eine Seite

Jochen

anzuzeigen, dann hast du 100 Mal die Latenz

Jochen

dazwischen und das ist halt dann schon

Jochen

ätzend. Also wenn das halt nur

Jochen

ein paar Millisekunden sind, dann sind es halt insgesamt

Jochen

ein paar hundert Millisekunden vielleicht. Das ist nicht so tragisch,

Jochen

aber wenn du jetzt 50 Millisekunden Latenz dazwischen hast,

Jochen

dann bist du halt schon bei 5 Sekunden

Jochen

oder sowas. Und dann ist es halt doof.

Jochen

Und wenn du

Jochen

das I-Sync machen würdest und könntest

Jochen

die Datenbank-Requests gleichzeitig

Jochen

an die Datenbank schicken, dann

Jochen

wäre die Gesamtlatenz halt nur

Jochen

die Latenz der langsamsten

Jochen

Query und nicht irgendwie

Jochen

die würden sich nicht alle aufaddieren.

Jochen

Also in solchen Fällen wäre es halt irgendwie durchaus

Jochen

ja, sehr praktisch

Jochen

ähm, genau

Jochen

ja, also genau

Jochen

Jungle 4 2, weiß jetzt gar nicht

Jochen

genau was sonst noch da an, wirklich, da waren auch noch

Jochen

jede Menge coole Sachen dabei, ach, das hab ich jetzt

Jochen

ähm

Jochen

hab ich mir gar nicht mehr so in Erinnerung, das ist doch schon wieder einen Monat her

Jochen

dass das

Jochen

äh, dass das veröffentlicht

Jochen

wurde, und bei

Jochen

Formularen hat sich auch noch eine Menge getan

Jochen

also, äh

Jochen

ja, ähm

Jochen

und es sind halt einige Sachen

Jochen

noch deprecated worden, ja so

Jochen

keine Ahnung, kann man sich mal angucken

Jochen

Der kam bestimmt auch dann die

Jochen

World Map von Django 5, oder?

Jochen

Ja

Jochen

bestimmt irgendwie, keine Ahnung

Jochen

es gibt auf jeden Fall schon Leute, die sich darüber Gedanken

Jochen

machen

Jochen

ich habe auch schon so ein bisschen gehört, was

Jochen

bei Django 5

Jochen

die nächste Geschichte, die jetzt angegangen

Jochen

wird, es ist halt jetzt so, ich habe das jetzt nicht

Jochen

irgendwo gelesen offiziell, sondern ich habe das jetzt so

Jochen

was ich so mitkriege, wenn ich da mal ab und zu

Jochen

irgendwie so mitlese, was da so passiert,

Jochen

ist,

Jochen

sie wollen das Request-Objekt,

Jochen

das halt uralt ist und das sehr schwer

Jochen

zu ändern ist, so ein bisschen anpassen. Also da gibt's

Jochen

ja immer noch momentan so Request.get

Jochen

und Request.post und Post.get sind groß

Jochen

geschrieben und das ist quasi genauso, wie

Jochen

das damals halt so in

Jochen

CGI oder PHP war,

Jochen

wo man das dann halt sozusagen, diese Inspiration

Jochen

für diese Geschichten her hatte, aber

Jochen

das ist natürlich jetzt heutzutage eigentlich blöd

Jochen

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.

Jochen

Und deswegen kann man das nicht so einfach jetzt irgendwie umdenken.

Jochen

Ja, aber da soll jetzt was passieren.

Jochen

Und zwar hat man jetzt einen Grund, um diese großen Änderungen anzugehen.

Jochen

Und zwar soll halt so ein bisschen Fähigkeit zu JSON generieren und so.

Jochen

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.

Jochen

Diese ganzen, da geht es irgendwie um Header und weiß der Teufel, irgendwie Support.

Jochen

Aber was man eigentlich gerne hätte, ist ja, dass man JSON rausrennen kann und das halt auch ordentlich funktioniert.

Jochen

Also sozusagen eigentlich wird jetzt quasi die Basis dafür gelegt,

Jochen

dass sowas wie Django REST-Framework

Jochen

eigentlich in Django Core mit reinwandert.

Jochen

Oder man das halt sowas wie Django REST-Framework

Jochen

eigentlich gar nicht mehr braucht.

Jochen

Weil die schwierigen Teile in Django REST-Framework,

Jochen

die sind jetzt eigentlich schon in Django Core drin.

Jochen

Und jetzt geht es halt noch darum,

Jochen

das alles so ein bisschen aufzuhübschen,

Jochen

das Request-Objekt zu modernisieren,

Jochen

dass man halt jetzt sehr viel leichter

Jochen

JSON da auch rausrennen kann oder irgendwas anderes halt XML.

Jochen

Gut, mittlerweile benutzen alle nur noch JSON.

Jochen

Ja, das ist auf jeden Fall das, was ...

Dominik

Jason, eine von den Sachen in Django 5 ist

Dominik

Formulare.

Dominik

Django 5 ist auch Formulare? Ja, ein bisschen besser.

Jochen

Also Formulare sind auch jetzt schon, da wird

Jochen

auch schon viel dran gemacht. Ja, ich meine, also

Jochen

der Anwendungsfall

Jochen

an der Stelle ist halt einfach, dass man

Jochen

lieber, also das war früher etwas schwierig,

Jochen

man möchte halt

Jochen

Teile von Formularen und so rendern können besser.

Jochen

Also gerade so interaktiv

Jochen

möchte man gerne das

Jochen

Verhalten so haben, wie jetzt man das in der SBA halt

Jochen

auch hat, nur halt mit

Jochen

ordentlicher Serversite, Validierung von

Jochen

irgendwelchen Eingabedaten und so. Und das geht

Jochen

natürlich auch. Also, das habe ich auch schon häufiger

Jochen

gemacht, dass man dann halt, sobald sich

Jochen

irgendwie ein Feld von einem

Jochen

Formular ändert, dass man dann halt das

Jochen

an den Server schickt und dann kriegt man halt sozusagen

Jochen

nur das gerenderte Feld zurück

Jochen

und ersetzt das dann. Und dann, wenn da eine Fehlermeldung

Jochen

drinsteht, dann steht die halt auch da drin und so. Das geht alles.

Jochen

Aber irgendwie zum Beispiel mit Crispy Forms

Jochen

irgendwie einzelne Felder rendern

Jochen

ist halt, ist es möglich?

Jochen

Es ist halt irgendwie nicht.

Jochen

das macht keinen Spaß. Und das zu testen

Jochen

macht auch nicht so richtig Spaß und das ist alles

Jochen

so ein bisschen, und ja, da wird auch viel daran gearbeitet,

Jochen

damit das halt einfacher wird und besser geht alles.

Jochen

Ja.

Jochen

Ja, genau, Django 4.2.

Dominik

Ja. Ich hab gehört, die Twitter-API ist kaputt.

Dominik

Ja.

Jochen

Das ist auch schon lange her.

Jochen

Bei Twitter ist noch alles möglich kaputt gegangen.

Jochen

Ja, es ist

Jochen

da...

Dominik

Du machst ja immer gerne so einen

Dominik

Pann, deswegen dachte ich...

Jochen

Ich glaube, das ist echt total

Jochen

veraltet, was da drin steht. Also das ist

Jochen

irgendwie von vor zwei Monaten oder so, dass das halt

Jochen

jetzt die APIs zugemacht haben.

Jochen

Ja, und das halt für viele Leute war das halt echt

Jochen

nochmal so ein Grund, dann auch

Jochen

zu Mastodon zu wechseln, weil

Jochen

für Mastodon gibt es jetzt noch irgendwie ordentliche

Jochen

Apps und Twitch wird halt nicht mehr.

Jochen

Gibt es nur die

Jochen

Standard-App und die ist halt Mist.

Jochen

Genau.

Jochen

Ah, was auch noch ganz interessant ist vielleicht,

Jochen

ist,

Jochen

es gibt das Pidentic.

Jochen

Pidentic hat irgendwie Venture Capital

Jochen

eingesammelt. Oh, okay.

Jochen

Ja, ja. Fünf Millionen

Jochen

von Sequoia oder so. Okay.

Jochen

Was ich jetzt, weiß ich nicht, ob man

Jochen

sich darüber freuen soll oder ob man besorgt sein soll.

Jochen

Gut oder schlecht? Das kann beides sein,

Jochen

das ist so unklar. Ich weiß nicht genau,

Jochen

wie sie sich vorgestellt haben, dass sie das Investment

Jochen

wieder reinholen, aber

Jochen

das ist natürlich das Problem,

Jochen

Wenn man jetzt irgendwie ganz viel Infrastruktur, also

Jochen

Pidentic als Infrastruktur verwendet

Jochen

und darauf aufbaut, dann ist es so, okay,

Jochen

hm, haben die

Jochen

jetzt ein großes Incentives, mich irgendwie

Jochen

dafür bezahlen zu lassen?

Jochen

Das will man vielleicht nicht unbedingt, aber

Jochen

ja,

Jochen

auf der anderen Seite, was natürlich

Jochen

vielleicht schon schön wäre, ist, wenn da halt so ein bisschen

Jochen

mehr, also ich glaube,

Jochen

der hat dann noch, also hier, wie heißt der noch?

Jochen

Samuel? Der Bastian Ramirez? Nee, das ist der

Jochen

von FastAPI, aber

Jochen

der ist Samuel Colvin, glaube ich, heißt der?

Jochen

von Pydentic. Macht die

Dominik

natürlich auch mit Pydentic?

Jochen

Ja, kann sein. Weiß ich nicht so genau.

Jochen

Aber der hat

Jochen

jetzt dann auch irgendwie Leute angeheuert und

Jochen

jetzt gibt es dann noch ein bisschen mehr

Jochen

Druck irgendwie beim Entwickeln

Jochen

an der Stelle und das ist natürlich vielleicht schon

Jochen

nicht so schlecht, weil also Pydentic ist ja eigentlich schon

Jochen

eine sehr coole Idee. Ich fände das auch mal gerne,

Jochen

wenn man mal irgendwie

Jochen

so wirklich validieren will, dass die Daten,

Jochen

die man irgendwo reinbekommt, halt so richtig

Jochen

so quasi tatsächlich dem entsprechen, was man erwartet.

Jochen

Ja, hat eine so schöne Syntax.

Jochen

Man schreibt eigentlich nur die Type-Annotations hin

Jochen

und dann, genau, hat man

Jochen

hinterher validierte Daten. Das ist ja alles

Jochen

echt schick.

Jochen

Du hast natürlich recht, ja.

Jochen

Ja, genau. Aber das,

Jochen

was halt so ein bisschen problematisch ist, ist halt, dass es sehr langsam

Jochen

im Vergleich zu Standard

Jochen

Python-Objekte irgendwie einfach nur

Dominik

erstellen. Da kannst du ja Python-Icon nehmen, damit

Dominik

das dann auch in Rust läuft. Ja, genau. Und wenn das dann

Jochen

in Rust ist, ist es natürlich auch klar,

Jochen

dass man mehr Arbeit hat, das in Rust zu schreiben und so.

Jochen

Ja, also mal gucken. Aber es ist auf jeden Fall eine interessante

Jochen

Entwicklung und gut,

Jochen

Ja, wie es ausgeht, wissen wir nicht.

Jochen

Dann haben wir noch, was haben wir noch?

Jochen

Node.js 20, naja, ich weiß nicht, ob das irgendwie interessant ist.

Jochen

Nö, eigentlich nicht.

Jochen

Ja, Pythonista ist eine neue Version veröffentlicht worden.

Jochen

Das freut mich ja total.

Jochen

Aber ich glaube, vielen Leuten wird das nichts sagen.

Jochen

Aber es gibt für iOS eine App namens Pythonista.

Jochen

da kann man tatsächlich Python-Code ausführen.

Jochen

Also man kriegt dann halt so eine richtige interaktive

Jochen

Shell und da ist auch NumPy mit drin und der ganze Kram

Jochen

auf dem Telefon.

Jochen

Achso.

Jochen

Und man kann sogar dann Python-Programme...

Jochen

Ja, ja.

Jochen

Man kann da auch Programme dann ausführen und so.

Jochen

Man kann die auch, das habe ich schon mal gemacht,

Jochen

dann, dass man im Share-Sheet sagen kann,

Jochen

ich share das jetzt mit irgendwie

Jochen

einem Python-Skript und dann

Jochen

kriege ich das Python-Skript das und kann damit

Jochen

irgendwas machen. Also man kann da tatsächlich irgendwie

Jochen

Python-Code auf Telefonen und

Jochen

iPads und so ausführen

Jochen

und das ist jetzt halt in der Version erschienen,

Jochen

dass Python 3.10 unterstützt wird und

Jochen

ja, das ist schon sehr nett.

Jochen

Also das ist wirklich, wie das mit dieser

Jochen

App-Store-Policy vereinbar ist, dass eigentlich

Jochen

nur Objective-C,

Jochen

Swift und irgendwie C

Jochen

und C++ irgendwie ausgeführt werden können,

Jochen

sollen, ist mir

Jochen

nicht so ganz klar. Eigentlich

Jochen

ja, war es wahrscheinlich zu unbekannt,

Jochen

dass da jemand wirklich mal drauf geguckt hätte.

Jochen

Jetzt rausgekegelt.

Jochen

Aber es ist wirklich toll. Also das ist auch

Jochen

mit sehr viel Liebe

Jochen

handgedengelt. Ja, sehr schön.

Jochen

Ja.

Dominik

Ich finde, wir können ja langsam mal übergehen.

Dominik

Wir könnten langsam mal übergehen, ne?

Dominik

Interessanten Dingen.

Jochen

Genau, machen wir doch einfach mal so allmählich das Thema.

Jochen

Ansonsten habe ich ja auch nur so Meta-Kram und so Zeugs.

Dominik

Ja, wir wollten heute so ein bisschen über grafische

Dominik

Interfaces reden. Ja, haben wir noch nie gemacht.

Dominik

Genau, und was man da machen kann.

Dominik

Also ich höre ja immer, oder ich

Dominik

weiß das aus eigener Erfahrung, dass man grafische Interfaces

Dominik

Python vielleicht gar nicht so wirklich machen will.

Dominik

Man kann vielleicht

Dominik

Turtle benutzen oder so.

Jochen

Ja, es ist die Frage, ob man das überhaupt noch machen will, aber gut.

Dominik

Ja, aber

Dominik

genau, es gibt verschiedene Sachen

Dominik

in Python dazu und vielleicht mal den Martin

Dominik

fragen, warum benutzt du denn Qt?

Jochen

Oder wer bist du eigentlich?

Jochen

Ja, vielleicht bringst du einfach erstmal.

Martin

Ja, also

Martin

ich bin Martin von miaplan.de

Martin

und soll ich mich kurz

Martin

vorstellen oder wie habt ihr euch das gedacht?

Martin

Also vielleicht kurz zu mir. Ich habe Bioinformatik studiert, war dann fünf Jahre in der Softwareentwicklung, erst im SAP-Umfeld, dann im Bereich Automobil.

Martin

Dann habe ich das Angebot bekommen, in den Familienbetrieb meiner Eltern mit einzusteigen.

Martin

Die machen Märkte im Einzelhandel, also Fressnapf.

Martin

Und das habe ich angenommen und habe dann gesehen, wie meine Mutter dort die Dienstpläne erstellt.

Martin

Also sie hatte Personalverantwortung sozusagen, hat Dienstpläne erstellt.

Martin

Und sie hat dort Excel-Listen erstellt und hat ein Kreuz für jede halbe Stunde gemacht, die ihren Mitarbeiter sozusagen eingeplant ist.

Martin

Das Ganze für damals zehn Mitarbeiter, acht Stunden pro Tag, 26 Tage im Monat, da kann man sich dann vorstellen, wie viele Kreuze sie da gemacht hat.

Martin

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.

Martin

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, ja, also alles, was man sich da so will oder fast alles, was man sich da so wünschen kann in dem Bereich.

Martin

Ja, klingt interessant.

Jochen

Also ich glaube, die Menge der Unternehmen,

Jochen

die das halt irgendwie mit Excel-Listen machen,

Jochen

das wird nicht so klein sein.

Jochen

Das habe ich auch schon häufig gesehen.

Dominik

Also ich habe ganz oft da schon die Anforderungen an sowas gehört.

Dominik

Aber mich würde jetzt interessieren,

Dominik

warum denn mit Qt und nicht als Web-Anwendung?

Martin

Ja, ganz kurz zu Excel.

Martin

Also Excel machen, glaube ich, alle.

Martin

Also man fängt halt mit Excel an,

Martin

probiert es quasi umzusetzen, was man sich halt so wünscht.

Martin

Und irgendwann stößt man an Grenzen.

Martin

Ich glaube, das haben halt alle.

Martin

Und dann fängt man halt an, sich umzuschauen.

Martin

Ja, warum QT?

Martin

Also ich habe mir angeguckt, wie komme ich quasi zum Ziel?

Martin

Also am Anfang des Projektes war klar,

Martin

ich brauche eine grafische Oberfläche.

Martin

Ja, die soll im Web stattfinden.

Martin

Also das soll quasi nicht auf einer Computer installiert werden,

Martin

Denn, ja, also 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.

Martin

Hab mir verschiedene Sachen angeschaut. Ihr habt es ja auch schon so ein bisschen angesprochen. Also es gibt zig Frameworks, die man nutzen kann. Euer Liebling ist Django, wie man unschwer raushört, wenn man euch kennt. Das habe ich mir auch angeschaut. Kann ich ja dann noch ein bisschen was zu erzählen.

Martin

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 gibt Toolkit. Und ja, habe ich mir sozusagen alle der Reihe nochmal angeguckt und geschaut, was können die für mich leisten sozusagen.

Martin

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.

Martin

Also wenn man quasi sehr spezielle Sachen machen will und das will ich, dann kommt man eigentlich um QT beziehungsweise GTK nicht drumherum.

Jochen

Was wäre so ein Widget beispielsweise, wo du sagen würdest, gut, das ist halt so was, was man nur da bekommt?

Martin

Ja, also zum Beispiel Tabellen, aber nicht einfach nur Tabellen, sondern halt spezielle Tabellen.

Martin

Zum Beispiel brauchte ich Tabellen, die ein Kontextmenü können, die sollten Farben können. Ich wollte Farbige Frames um die Zellen zeichnen. Ich brauche Callbacks, wenn ich einen Klick auf so eine Tabellenzelle mache und so weiter.

Martin

Und ich habe mir das Ganze auch im Web angeschaut, also die Webframeworks angenommen. Ich hätte jetzt Django genommen. Dann hätte ich wahrscheinlich irgendeine Art JavaScript-Tabellenframework genommen. Und ich habe dort sehr, sehr lange gesucht. Ich habe keins gefunden, was alles kann, was ich brauche.

Martin

Und dann habe ich überlegt, naja, 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.

Martin

Und ja, da kam ich eigentlich nur bei Qt raus. Also Qt hat sehr weit entwickelte Widgets und damit kann man, also sagen wir so, ich habe noch nichts gefunden, was man damit nicht umsetzen könnte. Und das ist alles schon da.

Martin

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, sag mal, eine Grundvoraussetzung, denn ich bin in einem Mann SAS, das heißt, ich brauche eine hohe Entwicklungsgeschwindigkeit, sonst komme ich nicht zum Ziel.

Martin

Und genau, ja, das war quasi die Bedingung und hätte ich angefangen, da mir einen Web-Framework rauszusuchen. Django, ich habe ein Testprojekt aufgesetzt schon gehabt und habe mal geguckt, wie weit ich komme. Aber da hat sich ziemlich schnell herausgestellt, da hätte ich sehr, sehr viel selber entwickeln müssen an Funktionalität. Und das kam nicht in Frage.

Dominik

Und wie machst du es hübsch?

Martin

Werd mal spezieller, was genau

Martin

stellst du dir heute hübsch vor? Also wie kannst du das

Martin

erst teilen, also oder sieben oder

Dominik

musst du da alle

Dominik

Widgets einzeln überschreiben

Dominik

ist das responsive oder musst du

Dominik

jeweils eine eigene Applikation für

Dominik

verschiedene Geräte schreiben oder wie löst

Dominik

Qt das? Ja

Martin

da müsste ich vielleicht erst mal

Martin

sagen, wie ich das überhaupt gebaut

Martin

habe, das Ganze, also

Martin

fangen wir von vorne an vielleicht, ja. Fangen wir mal von vorne an

Martin

Also es stand sozusagen fest, oder ihr könnt ja auch vielleicht noch mal was zu den Widgets sagen und wie man die in Django einbindet.

Martin

Aber für mich stand fest, okay, mit Qt kann ich sozusagen das sehr schnell umsetzen, was ich brauche.

Martin

Jetzt hat Qt aber ein Problem, das ist eigentlich eine Desktop-Framework.

Martin

Ja, also üblicherweise würde ich also eine Software schreiben, würde die dann bundeln, ja, also mit Pi-Installer, 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.

Martin

Ging in dem Fall, also in meinem Fall sozusagen nicht. 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?

Martin

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 Nutzeraccount.

Martin

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.

Martin

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.

Jochen

Ja, ich glaube, ich habe das mal irgendwie gesehen.

Jochen

Wie heißt das?

Jochen

Guacamole?

Jochen

Guacamole?

Jochen

Auf der DjangoCon

Jochen

2021

Jochen

gab es

Jochen

einen Talk darüber, wo auch jemand

Jochen

eine Shell

Jochen

quasi damit, also konnte man

Jochen

halt quasi auf eine Shell zugreifen,

Jochen

auch über einen Browser.

Jochen

Das war ziemlich cool.

Jochen

Und das ist jetzt quasi das gleiche System,

Jochen

wie das funktioniert. Ja, sehr schick.

Martin

Cool Idee. Also theoretisch kann man

Martin

damit einen ganzen Desktop

Martin

in den Browser reinzeichnen.

Martin

Das ist auch die Standard,

Martin

also der Standard-Anwendungsfall, aber es geht

Martin

eben auch für eine einzelne Software.

Martin

Ja. Genau.

Martin

Ja, das hat den

Martin

Vorteil, dass ich Qt

Martin

nutzen kann.

Martin

Mittlerweile macht mir Qt auch Spaß.

Martin

Also mittlerweile im Sinne von, jetzt

Martin

weiß ich, wie es funktioniert.

Dominik

Das heißt, das hat ein bisschen gedauert. Hört sich so an,

Dominik

als wäre die Lernkommissar. Ja, ja. Also die

Martin

Lernkurve ist schon steil, würde

Martin

ich behaupten.

Martin

Aber, also ich habe

Martin

festgestellt, das kann eigentlich alles, was man braucht.

Martin

Also ich habe noch nichts gefunden, was

Martin

das Ding nicht kann.

Martin

Und was außerdem Spaß macht, ist,

Martin

also ich arbeite jetzt seit ungefähr drei Jahren

Martin

damit und ich habe insgesamt

Martin

fünf Bugs gefunden.

Martin

Und das ist

Martin

echt wenig.

Martin

Also da habe ich schon

Martin

ganz, ganz andere Sachen erlebt.

Martin

Genau, also das ist, also

Martin

macht echt Spaß, muss ich sagen.

Martin

Ja, ansonsten

Martin

kann ich

Martin

fast nur

Martin

synchronen Code schreiben. Ihr habt ja schon

Martin

ein bisschen gesprochen, die Frameworks

Martin

stellen jetzt alle auf Async um,

Martin

damit die mehrere, also

Martin

mehr Requests quasi handeln können

Martin

und ich habe eigentlich den Vorteil,

Martin

ich kann synchronen

Martin

Code schreiben. Ja, ja, das ist

Jochen

natürlich, wenn man es aus Entwicklersicht

Jochen

angenehmer. Ja, das ist deutlich

Martin

angenehmer und es ist einfach.

Martin

Ja.

Martin

Es ist sehr einfach.

Martin

Ja,

Jochen

ich meine, ich glaube auch, dass

Jochen

Qt hat halt irgendwie, das ist halt

Jochen

schon, das ist halt eigentlich ein sehr, sehr altes

Jochen

Projekt tatsächlich, aus heutiger Sicht nicht,

Jochen

weil ich weiß gar nicht, wann das genau gestartet

Jochen

ist und wann es die Firma

Jochen

dazu gab. KDE ist ja da irgendwie, das war schon

Jochen

so in den 90ern irgendwie, ist das

Jochen

ich

Jochen

weiß gar nicht, wann Qt gestartet ist, aber

Jochen

muss irgendwann in den 90ern wahrscheinlich gewesen sein.

Dominik

Und das ist jetzt in Version 5 oder 6 oder wie benutzt ihr das?

Martin

Ich mache gerade die Transition von 5 nach 6.

Dominik

Und das ist keine komplett Open-Source-Lizenz, wenn ich das richtig in Erinnerung habe.

Martin

Genau, also das ist dual lizenziert.

Martin

Also es hängt ein bisschen davon ab, welche Version du nutzt.

Martin

Immer die aktuellste Version, meine ich, ist ausschließlich kommerziell.

Martin

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.

Martin

Also wenn man quasi die LGPL-Lizenz nutzen will, dann ist der Code recht gut abgehangen, sozusagen.

Dominik

Also LGPL ist Strong Copy Left, wenn ich das richtig verstehe?

Martin

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.

Martin

Ja.

Martin

Ja, ja, ja, ja.

Jochen

Ja, interessant.

Jochen

Ja, ja, ich...

Jochen

Genau, MySQL hatte doch so eine ähnliche

Jochen

Lizenz, aber ich bin mir nicht sicher,

Jochen

ob es die LGPL war, wahrscheinlich eher nicht.

Jochen

Ja.

Jochen

Ja.

Jochen

Ja, nee.

Jochen

Qt irgendwie...

Jochen

Aber ich meine, dann...

Jochen

Qt selber ist ja

Jochen

irgendwie in C++

Jochen

geschrieben, glaube ich.

Jochen

Wie greift man denn dann von

Jochen

Python, weil ich meine, die Anwendung

Jochen

ist ja dann in Python irgendwie geschrieben, hauptsächlich.

Martin

Richtig, genau. Das ist 100% Python.

Jochen

Wie kommt man denn dann an C++

Jochen

dran? Da braucht man ja wahrscheinlich irgendeinen Wrapper um

Jochen

PyQT oder sowas.

Jochen

Irgendwie sowas. Das ist, die haben

Martin

ja eine

Martin

Python API. Python Bindings

Martin

quasi. Python Bindings, richtig.

Martin

Und

Dominik

die Widgets, die du brauchst, die kannst du auch einfach quasi

Dominik

in jedem Betriebssystem jetzt wieder verwenden,

Dominik

wenn du das möchtest?

Martin

Könnte ich, ja. Also Qt

Martin

ist plattformunabhängig,

Martin

also die laufen eigentlich fast überall.

Martin

Ich setze

Martin

es aber unter Linux einfach ein.

Martin

Naja.

Dominik

Und wie machst du

Dominik

sowas wie Stylings und sowas, also wie

Dominik

das, was ich eben gesagt habe, mit Hübsch

Dominik

oder sowas, wie gehst du da vor,

Dominik

dass das irgendwie so ein bisschen dynamisch ist und so?

Dominik

Bietet das Qt einfach alles von Haus

Dominik

aus oder?

Martin

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 anpassen, man kann quasi jedes Element nochmal separat stylen, wenn man das möchte, das geht einfach mit CSS dann, wenn man das möchte.

Martin

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.

Martin

Ja, genau.

Martin

Ja, ja, ja.

Jochen

Nee, interessant. Ich glaube, ich fand natürlich das letzte Mal

Jochen

mit Qt, also ich erinnere mich noch daran,

Jochen

das ist aber schon auch wieder ein bisschen her, glaube ich, 2016

Jochen

oder so, habe ich das letzte Mal irgendwie

Jochen

für einen Headless-Browser, den ich

Jochen

brauchte, weil irgendwie JavaScript

Jochen

ausgeführt werden sollte.

Jochen

Irgendwie, das war auch damals irgendwie

Jochen

das Ding, was ich da verwendet hatte.

Jochen

Das war auch noch diese,

Jochen

die, ich glaube, mit WebKit,

Jochen

die Engine war WebKit und dann

Jochen

brauchte man noch so ein bisschen

Jochen

Qt außenrum und dann musste ich da irgendwie

Jochen

Qt 5 selber kompilieren und ich erinnere mich noch,

Jochen

dass das ganz schön schmerzhaft war, aber

Dominik

Also ich erinnere mich auch daran, dass ich bin damals, glaube ich,

Dominik

über die Lizenz gestolpert. In meinen ersten

Dominik

Gehversuchen, so in Python, da wollte ich unbedingt,

Dominik

wie man das am Anfang macht, irgendwas mit GUI bauen,

Dominik

dass da irgendwie man was anzeigen kann auf seinem

Dominik

Bildschirm. Und dann habe ich so ein bisschen

Dominik

rumprobiert, auch mit Qt, aber das hat irgendwie nicht

Dominik

so funktioniert, wie ich das wollte

Dominik

und ich bin da so ein bisschen über diese C++-Implementierung

Dominik

gestolpert und ich fand auch diese PyQt

Dominik

nicht so super und bin dann bei Kiwi gelandet

Dominik

tatsächlich. Wo ich auch sagen muss, da gingen

Dominik

zwar ein paar Sachen, aber das war auch alles eher so

Dominik

ich weiß nicht genau.

Dominik

Nicht so, wie ich das eigentlich

Dominik

angenehm finde. Und dann habe ich es dann mit den

Dominik

GUIs wieder gelassen, beziehungsweise mit Web angefangen

Dominik

irgendwann.

Dominik

Ja, Kiwi.

Martin

Also Kiwi, die Widgets sind halt,

Martin

also die haben nicht genug Widgets.

Martin

Da kommt man nicht weit, wenn man wirklich

Martin

intensiv was damit machen will,

Martin

finde ich.

Martin

Ja.

Jochen

Ja, ich meine, aus meiner Perspektive wäre jetzt eher so die Frage, warum nicht, ich meine, warum macht man heutzutage überhaupt noch GUI? Ich meine, das macht man, eigentlich ist doch heute alles Web. Und sagen wir mal, das 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 oder das ist ja alles ganz schrecklich.

Jochen

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.

Martin

Richtig, also ich habe eine ganze Menge Probleme vom Hals geschafft sozusagen. Wo ich mir am Anfang sehr, sehr viele Gedanken darüber gemacht habe, ist, wie ist das ressourcentechnisch?

Martin

Ja, also man hat ja quasi das, oder wenn man eine Web-Anwendung hat, dann habe ich ja quasi einen ganzen Schwung von Usern und die teilen sich in der Regel keinen, die teilen sich einen State in der Web-Anwendung, in der Regel würde ich jetzt mal behaupten.

Martin

Und dadurch kann ich quasi die Ressourcen, sag mal, gleichmäßig auf meine Datenbank und so weiter verteilen.

Martin

Ja, ich weiß nicht, also da kennt ihr euch eigentlich

Jochen

besser aus. Ja, also ich würde sagen, also der

Jochen

State einer Web-Anwendung liegt

Jochen

normalerweise in der Datenbank, sozusagen aus meiner

Jochen

Perspektive und genau, dann gibt es

Jochen

halt irgendwie diverse Prozesse, die halt

Jochen

an die man Requests hinschickt und dann senden sie halt

Jochen

Responses zurück

Jochen

und genau, ja.

Martin

So, und da

Martin

hatte ich das Problem, also ich dachte, es gäbe

Martin

das Problem,

Martin

dass ich das nicht machen kann, sozusagen.

Martin

Also meine

Martin

Anwendung, die ich, also Miaplan ist

Martin

hat ein State

Martin

für jeden Nutzer.

Martin

Und hier

Martin

hatte ich in meinem Django-Prototypen auch

Martin

probiert, diesen Zustand

Martin

quasi umzusetzen

Martin

und bin da aber so schon

Martin

irgendwie auf eine Hürde gestoßen. Also das

Martin

scheint jedenfalls nicht

Martin

nativ so zu gehen

Martin

in Django, wenn ich das richtig gesehen

Martin

habe. Allerdings habe ich auch nur vielleicht

Martin

eine Woche oder so das ausgetestet.

Jochen

Das geht schon. Also du musst halt deine Daten irgendwie

Jochen

modellieren und die kannst du in eine Datensprache speichern

Jochen

Und dann kommst du da auch wieder dran.

Jochen

Also es ist die Frage, was genau du da halten wolltest an State.

Martin

Naja, also ich habe zum Beispiel relativ große NumPy-Matrizen.

Martin

Und das muss auch NumPy sein.

Martin

Also das kann ich mir jetzt nicht irgendwie in die Datenbank reinschieben.

Martin

Das könnte ich schon tun, aber für jede Operation müsste ich mir das dann wieder rausziehen.

Martin

Das macht also eigentlich keinen Sinn.

Martin

Und da hatte ich jetzt, also von meinem Draufgucken,

Martin

keine gute Idee, wie ich das mit Django überhaupt umsetzen kann.

Jochen

Okay, das ist natürlich auch eine interessante Anforderung.

Jochen

Also das wäre dann die Frage, okay, warum hast du denn NumPy-Matrizen?

Jochen

Also ich meine, klassischerweise hast du ja eine relationale Datenbank

Jochen

und dann hast du die Daten halt in einer Tabelle irgendwie

Jochen

oder in mehreren Tabellen.

Jochen

Ja, vielleicht nochmal ein Planungsding.

Jochen

Also was ist überhaupt das Problem?

Dominik

Also du hast jetzt Menschen, die arbeiten zu Zeiten

Dominik

und die sich koordinieren wollen.

Martin

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.

Martin

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.

Martin

Und da muss ich in der Lage sein, effizient Berechnungen drauf zu machen, weil darauf basiert natürlich zum Beispiel die automatische Planung, die ich machen kann und so weiter. Also da mache ich eigentlich sämtliche Berechnungen drauf, auch die Anzahl der Stunden, wie lange ist ein Mitarbeiter eingeplant und so weiter.

Martin

Und ja, das lässt sich

Martin

meiner Ansicht nach am einfachsten mit NumPy machen,

Martin

weil da lege ich mir eine Matrix an,

Martin

tue die Stunden rein

Martin

und dann

Martin

kann ich in NumPy, sage ich, oder habe ich

Martin

aber sämtliche Operationen, die ich brauche.

Jochen

Ja, also

Jochen

ja klar, also wenn man jetzt

Jochen

NumPy-Arrays

Jochen

hat, dann ist das natürlich so ein bisschen

Jochen

inkompatibel jetzt mit diesem

Jochen

Standardmodell,

Jochen

wo man in Django halt

Jochen

ein relationaler Datenbank hat.

Jochen

Ich meine, man kann das natürlich auch machen, dann ist halt die Frage,

Jochen

ob einem Django noch so viel nützt, weil dann

Jochen

kann man den ORM halt nicht benutzen.

Martin

Ich bin schon mal

Martin

erfreut,

Martin

dass ihr nicht sagt, ach,

Martin

Mensch, da gibt es doch hier dieses Plug-in,

Martin

da lädst du dir einfach Folgendes

Martin

und dann geht das schon.

Martin

Nee, nee, das geht tatsächlich

Jochen

eher nicht, denke ich.

Jochen

Also, was man,

Jochen

wahrscheinlich wäre dann

Jochen

eine Art, dass man das halt irgendwie

Jochen

die Daten, die man hat, die hat man halt

Jochen

irgendwo in einem Object zu liegen oder so,

Jochen

in Parquet-Format oder sonst wie

Jochen

und dann geht das natürlich

Jochen

auch, aber dann nützt einem halt der ganze

Jochen

ORM-Kram nichts mehr. Die Frage wäre halt,

Jochen

kann man das nicht vielleicht doch irgendwie auf SQL abbilden

Jochen

oder geht das halt gar nicht? Wenn es nicht geht,

Jochen

ja, dann kann man halt nichts machen, dann nützt

Dominik

einem... Also klingt für mich, als wären da viele Relationen

Dominik

irgendwie, ne? Also das kann man

Martin

mit Sicherheit abbilden.

Martin

Die Frage ist, wie viel Schmerzen hat man dabei?

Jochen

Ja, gut, genau. Und wenn man es schon

Jochen

so hat und das gut funktioniert, dann ist halt

Jochen

die Frage, ist das, lohnt sich das?

Jochen

Oder macht man es nicht dann lieber so, dass man das einfach

Jochen

verwenden kann, was man schon hat, was funktioniert?

Jochen

Ja.

Jochen

Ja.

Martin

Ja, da kommt es her.

Jochen

Interessant.

Jochen

Aber es ist auch wirklich rein

Jochen

Nampai. Kein Pandas oder sowas, sondern

Jochen

einfach auch.

Martin

Aber das versuche ich zu vermeiden.

Martin

Also jetzt rein Pandas

Martin

ist meiner Ansicht nach

Martin

nicht praktikabel, weil

Martin

ganz einfach die Importzeit

Martin

beträgt. Drei Sekunden?

Martin

Ja, ja, ja. Das ist völlig

Martin

inakzeptabel.

Martin

Das soll ich nur einmal importieren.

Martin

Ja, aber

Martin

selbst wenn ich den Import

Martin

an die Startzeit

Martin

verschiebe,

Martin

oder in die Laufzeit, ist ja egal.

Martin

Drei Sekunden sind an keiner Stelle akzeptabel.

Martin

Okay, ja gut.

Martin

Und da bleibt höchstens die Variante,

Martin

hier die Alternativen

Martin

zu nehmen, die es inzwischen

Martin

gibt. Jetzt müsste ich Polars

Martin

war, glaube ich, die aktuelle

Martin

Entwicklung in Rust, wenn mich nicht

Martin

alles täuscht.

Martin

Das habe ich mir noch nicht in der Tiefe angeguckt.

Martin

Ich nehme mal an, die

Martin

Import-Seiten sind da besser.

Martin

Ich weiß aber nicht, ob Polars schon alles

Martin

kann, was ich da brauche.

Jochen

Ja, das ist ja

Jochen

jetzt erst am Anfang, genau.

Jochen

Ja, interessant.

Jochen

Ja.

Jochen

Ja, also das ist

Jochen

natürlich auch etwas, was man halt in Python gut machen kann

Jochen

und sonst wahrscheinlich auch eher nicht hat, dass man halt

Jochen

diese NumPy-Geschichte da direkt

Jochen

irgendwie verwenden kann.

Jochen

Ja, also

Martin

NumPy ist eine der besten Bibliotheken

Martin

in Python, würde ich sagen.

Martin

Da kann man echt so viel rausziehen

Martin

und da ist so viel schon da und es ist

Martin

vor allem verdammt schnell.

Martin

Ja.

Martin

Aber

Martin

wie ist denn das, also wenn wir jetzt

Jochen

zu dem Qt da,

Jochen

also die beiden

Jochen

Dings, ist das dann halt, da muss man dann

Jochen

Camel Case verwenden?

Jochen

Wahrscheinlich ja, ne?

Martin

In Qt 6 nicht mehr.

Martin

Da haben sie es

Martin

quasi normal gemacht.

Martin

Aber

Martin

naja, man gewöhnt sich dran, sage ich mal.

Martin

Es ist jetzt auch kein

Martin

Weltuntergang, wenn ich jetzt für die

Martin

Calls

Martin

dann eben Camel Case habe, aber ja,

Martin

schön ist es nicht, das stimmt.

Dominik

Ja, sind die Fußlegel nach oben gekriegt?

Dominik

Ja gut, ich meine, ich mache ja auch

Jochen

andere Sachen, noch TypeScript und so, dann mache ich auch CamelCase,

Jochen

aber wenn man in Python ist, dann

Jochen

finde ich das mal, wenn die Kombination, wenn man manchmal

Jochen

SnackCase hat und manchmal CamelCase, dann ist es ein bisschen

Jochen

aber ja, gut.

Jochen

Ja,

Jochen

interessante Geschichte,

Jochen

aber wie ist das denn jetzt, wenn jetzt

Jochen

mehrere Leute

Jochen

auf die Applikation zugreifen?

Jochen

Genau.

Martin

Ich war ja stehen geblieben, also ich habe mir

Martin

Sorgen gemacht sozusagen,

Martin

dass das nicht skaliert

Martin

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.

Jochen

Wie überträgt denn dieses Guacamole-Daten, ist das nicht ein Bild?

Martin

Nein, also das kommt darauf an.

Martin

Das unterstützt mehrere Backends.

Martin

Man kann zum Beispiel VNC nehmen, man kann aber auch XRDP nehmen.

Martin

Und je nachdem, wie effizient das implementiert ist, ist es gut.

Martin

Und im Fall von XRDP ist es gut.

Martin

und da werden also keine Bilder mehr übertragen.

Martin

Also da wird vielleicht ein Frame am Anfang übertragen

Martin

und dann werden nur noch Deltas übertragen.

Martin

Okay, ja.

Martin

Also da entsteht tatsächlich nicht viel Traffic.

Martin

Und was den Speicherbedarf angeht,

Martin

da bin ich ja selber für verantwortlich

Martin

und habe das selber in der Hand.

Martin

Aber es ist dann ja schon so,

Jochen

dass du quasi eine Applikation pro Nutzer irgendwie starten musst.

Jochen

Ja, richtig.

Martin

Genau, das ist schon so.

Martin

Aber ich habe mir das durchgerechnet,

Martin

also das funktioniert.

Martin

Also ich kann ja auch selber mehr oder weniger bestimmen,

Martin

sage ich mal, wie viel Speicher das Ganze frisst.

Martin

Und wenn ich mir halt die Bibliothek reinziehe,

Martin

die 500 Megabyte beim Import frisst,

Martin

dann kann ich die halt nicht nehmen.

Jochen

Ja, auch interessant.

Jochen

Und genau, was mich auch noch interessieren würde,

Jochen

um diese grafische Darstellung,

Jochen

die muss ja dann irgendwie schon irgendwo gerendert werden.

Jochen

Das heißt, du brauchst auf dem Server, hast du dann quasi

Jochen

auch ein X oder

Jochen

irgendwie sowas? Genau.

Martin

Leider ist es noch ein, also es wird

Martin

ein X-Server pro Anwender gestartet.

Martin

Ah, okay. Und es ist

Martin

leider noch ein X-Server und

Martin

jetzt komme ich gerade nicht auf den

Martin

Namen, was war die Weiterentwicklung

Martin

davon? Oh, das kam nach

Martin

X.

Martin

Wayland, genau.

Martin

Wayland, richtig, genau.

Martin

Also, es wird

Martin

daran gearbeitet, dass das Ganze Wayland

Martin

kompatibel wird, aber ist noch nicht so weit.

Martin

Aber meine Hoffnung ist ja, dass

Martin

X gibt es ja jetzt schon, ich weiß nicht,

Martin

20 Jahre, 30 Jahre.

Martin

Also ich denke, es wird es auch noch eine Weile geben,

Martin

dass da noch genug Zeit ist,

Martin

das zu portieren.

Jochen

Ja. Und dann

Jochen

ist Matt quasi ein User, der

Jochen

das von außen benutzt,

Jochen

eigentlich mehr oder weniger auf dem User

Jochen

im Unix-System.

Martin

Nicht eigentlich, sondern tatsächlich.

Martin

Tatsächlich, genau.

Martin

Ja.

Jochen

Ja, das ist, Dominik hat mir gerade irgendwie, hat auf dem Telefon aufgemacht und da flackerte das.

Jochen

Oh je.

Jochen

Das weiß ich allerdings aber nicht, ob das jetzt irgendwie.

Martin

Ja, also das Ganze läuft auf Tablets und Telefonen, aber das ist nicht meine Zielgruppe eigentlich.

Martin

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.

Martin

Eigentlich ist es nur schön, auf dem Desktop zu planen.

Martin

Ich glaube, keiner möchte wirklich auf dem Handy

Martin

seine 32 Mitarbeiter planen.

Martin

Also ich weiß nicht, ob es da irgendeine Software gibt,

Martin

die das gut macht.

Martin

Wenn, dann Chapeau.

Martin

Aber ich ziele da nicht drauf.

Martin

Also ich habe es nicht davor.

Martin

Also ich habe tatsächlich so ein paar Ideen

Dominik

an der Stelle auch schon durchgespielt,

Dominik

weil ich diese Anforderung wirklich auch so ein paar Mal

Dominik

gekriegt habe, auch so Businesses heraus,

Dominik

die es halt wirklich brauchten und das ganz interessant fanden.

Dominik

Also, da bist du nicht raus

Dominik

Muss ich eigentlich nochmal umsetzen

Dominik

Irgendwann im nächsten Leben, wenn ich mal teilzunehmen

Dominik

Wenn es immer so ist

Dominik

Ja, ja, ja

Jochen

Aber ich meine, man kann sich schon, also so gerade im

Jochen

Probenfeld haben die sitzen, die Leute ja schon mal

Jochen

schon vom Rechner, dann kann man schon davon ausgehen, dass das so

Jochen

dass das so funktioniert, ja

Jochen

Ja, ja, ja

Jochen

Naja, ich meine, das ist halt ganz anders

Jochen

als man das sozusagen so

Jochen

kennt, aber ich meine, wenn man so ein bisschen drüber nachdenkt

Jochen

dann ist das eigentlich gar nicht so blöd.

Jochen

Das ist schon interessant.

Martin

Also der größte Vorteil, den ich sehe,

Martin

ist wirklich die Entwicklungsgeschwindigkeit.

Martin

Ich habe kein HTML, ich habe kein CSS,

Martin

ich habe kein JavaScript,

Martin

ich kann reines Python schreiben

Martin

und kann mein Feature deployen.

Martin

Ja.

Martin

Und ich mag Python.

Martin

Und ich mag weniger CSS und JavaScript,

Martin

das mag ich nicht so gerne.

Martin

Also ich kann es, ich komme nicht drum rum, also ich mache das auch, aber nur, wo es wirklich nötig ist.

Martin

Ja.

Dominik

Ja, ich überlege gerade, man hat sich so ein bisschen daran gewohnt.

Dominik

Also ich finde zum Beispiel mittlerweile schwierig, das Frontend nicht mit CSS irgendwie, vielleicht auch ein bisschen in JavaScript zu stylen, weil mir so ein paar Sachen dann immer fehlen.

Dominik

So diese dynamischen Sachen, an die man sich dann doch irgendwie daran gewöhnt, so Headless UI oder so.

Dominik

Das geht mir schon auf die Nerven, wenn ich jetzt

Dominik

in Django das ohne

Dominik

REST-API benutzen möchte, sondern das in die Templates

Dominik

einbaue, das ist manchmal schon immer so ein bisschen

Dominik

strugglig, weil ich halt da schon relativ

Dominik

viel auf Vue.js klebe.

Jochen

Ja, aber das ist ja kein

Jochen

Problem von, also

Jochen

es ist ja beides.

Dominik

Die Frage ist halt, welche

Dominik

Leute haben sich schon wie viel auseinandergesetzt

Dominik

mit Dingen zu entwickeln, die das

Dominik

schön einfach und

Dominik

pretty zu benutzen machen.

Jochen

Du meinst, achso, ja gut, okay,

Jochen

also wenn du aus der Entwicklersicht drauf guckst

Jochen

und dir dann überlegst, okay, wenn ich

Jochen

jetzt schnell Produktivität

Jochen

und Maximalaufbau. Webgeschichten mit

Jochen

irgendwie UI-Sachen, wo ich

Jochen

meine, wenn ich quasi

Jochen

fürs Web eine Applikation so schreiben will,

Jochen

wie ich das sonst mit PyQt machen würde

Jochen

oder mit Qt.

Jochen

Welches, was nehme ich denn da?

Jochen

Dann landest du wahrscheinlich bei den

Jochen

SPAs und dann landest du halt auch irgendwie bei

Jochen

irgendwas von den großen

Jochen

UI-Frameworks, die es halt für JavaScript gibt, weil

Jochen

genau, da ist halt schon am meisten Arbeit reingegangen.

Dominik

Also ich bin mir natürlich da so ein bisschen so ein Klotz ans Bein.

Dominik

Naja,

Dominik

aber dafür habe ich natürlich auch das ganze Ökosystem mit

Dominik

damit. Ich bin halt nicht ganz alleine.

Dominik

Mein Problem wäre jetzt bei Qt in Python

Dominik

mit den Bindings.

Dominik

Ich muss halt alles selber bauen.

Dominik

Also vom Scratch irgendwie. Ich muss mir selber

Dominik

komplett überlegen, wie das aussehen muss.

Dominik

Ich frage mich

Dominik

gerade so ein bisschen,

Dominik

was ich auch noch gerne von Martin wissen würde,

Dominik

wie überhaupt so ein UI strukturiert ist,

Dominik

so prinzipiell

Dominik

in Python.

Dominik

Also von der Struktur her?

Martin

Also ich glaube, das ist

Martin

gar nicht so groß anders, als

Martin

wenn man

Martin

mit Django das machen würde.

Martin

Also es gibt einen Event-Loop

Martin

und

Martin

ja, eigentlich dreht sich alles um das

Martin

Event-Loop. Und

Martin

wenn man was Asynchrones braucht,

Martin

dann bietet Qt da auch

Martin

was Asynchrones. Das ist

Martin

im Wesentlichen eine Python-Klasse.

Martin

Ja.

Martin

Was interessiert dich speziell?

Dominik

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?

Martin

Achso, achso, jetzt habe ich dich falsch verstanden. Ich dachte, du meinst das Design der Python-Applikation, aber du meinst tatsächlich die Oberfläche an sich.

Martin

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. Aber der Standardweg ist, man programmiert sich sozusagen seine Oberfläche.

Martin

Also ich sage, ich möchte einen, also es gibt verschiedene Frame-Arten, zum Beispiel einen horizontalen Frame, einen vertikalen Frame oder was Tabellenartiges oder was Formularartiges und dort gruppiere ich mir quasi meine Elemente rein, in diese Boxen, sage ich mal.

Martin

Und das Ganze ist responsiv, wenn man das will.

Martin

Auch animiert?

Martin

Ja, ist responsiv, wenn man das will.

Martin

Wie bitte?

Martin

Auch animiert?

Martin

Ja, kann alles.

Martin

Du kannst animieren, du kannst, also du kannst ja immer die Widgets angucken, die es so gibt.

Martin

Animiert, du kannst dir Schieberegler machen, du kannst dir Knöpfe machen in bunt oder in blinkend oder in wabernd.

Martin

Ja, das geht alles.

Jochen

woran ich eben denken musste

Jochen

ist halt, ich glaube es ist halt sehr

Jochen

stark davon abhängig, ob das jetzt eine gute Idee

Jochen

ist sozusagen, dass

Jochen

man das einfach so nehmen

Jochen

kann, die Widgets, oder wahrscheinlich kann man sie ein bisschen

Jochen

stylen, oder ob das jetzt besser wäre

Jochen

das über CSS und JavaScript zu machen

Jochen

hängt halt wahrscheinlich sehr stark von einem Use Case ab

Dominik

Ja, die Frage ist halt, wie viel Arbeit muss ich jetzt

Dominik

da noch reinstecken, um mir so ein komplettes Konzept

Jochen

auszudenken. Aber wenn dein Use Case ist

Jochen

du willst irgendwas kompliziertes machen, aber letztlich

Jochen

ist es nicht so wahnsinnig wichtig, dass

Jochen

das jetzt zu deinen Brandfarben passt, weil

Jochen

das ist halt gar nichts, was jetzt

Jochen

Customer-Facing ist, sondern

Jochen

es ist halt irgendwie ein Ding, was Leute benutzen,

Jochen

um irgendwas zu erreichen, aber das ist nie nach

Jochen

außen hin sozusagen

Jochen

Wer ist denn in der Customer?

Jochen

Naja gut,

Jochen

natürlich schon die Leute, die das benutzen,

Jochen

aber das ist halt nur intern.

Jochen

Das würde ich

Dominik

anders sehen, mit dem nur intern.

Dominik

Ja gut, aber

Jochen

warum, ja okay, aber da würde ich jetzt

Jochen

denken, an der Stelle ist es

Jochen

macht es halt Sinn, vielleicht was zu verwenden,

Jochen

womit du komplizierte Sachen

Jochen

hinbekommst,

Jochen

die du vielleicht

Jochen

brauchst, weil das ein kompliziertes Problem ist,

Jochen

aber die Anforderung,

Jochen

dass du das jetzt irgendwie besonders

Jochen

hübsch oder so auf dich angepasst

Jochen

dargestellt hast, also das so aussieht,

Jochen

das ist halt nicht so wichtig.

Dominik

Selbst wenn ich das so hübsch hinbekomme, weil das so viel Aufwand ist,

Jochen

das so hübsch hinzubekommen. Ja, vielleicht wäre das dann schrecklich viel

Jochen

Aufwand, aber wenn dir das egal ist, dann musst du das nicht machen.

Jochen

Ja, also

Martin

du meintest gerade, entweder ich mache es

Martin

mit CSS oder ich mache es mit Qt.

Martin

Das stimmt nicht so ganz.

Martin

Nein, was ich meinte ist nicht

Dominik

mit CSS oder mit Qt, sondern ich meinte

Dominik

sowas wie mit den ganzen Frameworks, die ich habe.

Dominik

Die ich halt gerne muss, keine Ahnung,

Dominik

Tailwind oder sowas, damit ich halt

Dominik

schneller produktiv bin, Utility

Dominik

oder so, Utility-Klassen einbauen.

Dominik

Aha.

Dominik

Aber wenn ich das ganze CSS

Dominik

dann immer selber schreiben muss und dann muss ich mir erst mal

Dominik

überlegen und dann muss ich mir erst mal so ein paar Boxen bauen,

Dominik

dass das alles so passt, dann

Martin

naja, kommt drauf an, also

Martin

QT hat auch noch

Martin

einen Designer, ja, wenn du das

Martin

Projekt nicht kommerziell nutzen willst, kannst

Martin

du diesen Designer nutzen.

Dominik

Aber wenn ich das nicht kommerziell nutze, okay.

Martin

Genau. Kannst du den

Martin

Designer nutzen, das ist quasi mit

Martin

ziehen und ablegen

Martin

quasi. Jetzt erinnere ich mich, das hatte ich

Martin

genauso. Wie man das früher

Martin

von, ich glaube, Visual Basic

Martin

da

Martin

war das so ähnlich schon.

Martin

Kann man auch, wenn man will.

Martin

Der war auch sehr hübsch.

Dominik

Ich hatte tatsächlich, glaube ich, den angefangen auszuprobieren

Dominik

und dann bin ich darüber gestolpert, dass man das

Dominik

irgendwie mit der Lizenz eben nicht benutzen

Dominik

darf, wenn man das machen muss.

Dominik

Okay, ja.

Jochen

Ja, ja, ich meine, das machen

Jochen

ja auch die ganzen, oder

Jochen

ich meine, ich kenne jetzt die iOS-Seite besser, aber

Jochen

halt da Xcode und so, da gibt es ja auch solche Dinge,

Jochen

wo du dann halt dann grafisch dann die ganzen

Jochen

Elemente irgendwie sozusagen,

Jochen

selbst dann kannst du sogar Linien

Jochen

irgendwie dahin ziehen und dann werden dann halt irgendwie

Jochen

Event-Listener hinzugefügt oder keine Ahnung.

Jochen

Ja, genau.

Jochen

Damit geht das wahrscheinlich auch.

Jochen

irgendwie. Aber

Jochen

naja, ich könnte mir schon

Jochen

vorstellen, dass, also du kannst jetzt zum Beispiel

Jochen

an der iOS-App, da kann ich es halt, weil ich nehme

Jochen

mal an, dass es bei Qt genauso ist.

Jochen

Sozusagen

Jochen

damit kannst du im Grunde alles machen,

Jochen

aber wenn du jetzt eine iOS-App

Jochen

so hinkriegen willst, dass die genauso aussieht,

Jochen

wie du das haben möchtest, ist das halt eine Menge Arbeit.

Jochen

Ja, genau. Und zwar wahrscheinlich

Jochen

mehr Arbeit, als wenn du eine Webseite so aussehen

Jochen

lassen möchtest, wie du das aussehen lassen möchtest.

Dominik

Das ist auch so ein bisschen, also ohne, dass ich jetzt

Dominik

angreifen möchte, aber das ist so ein bisschen mein Problem

Dominik

mit diesen Beauty-Sachen oder meine

Dominik

Kritik daran. Also ich glaube, dass das

Dominik

wirklich schwieriger ist, das

Dominik

richtig schön hinzubekommen.

Jochen

Ja, aber jetzt noch mal, jetzt versuch mal in

Jochen

HTML und CSS eine Tabelle so hinzukriegen

Jochen

mit all den Widgets und Features, die du vielleicht haben

Jochen

möchtest für deinen Newscase.

Jochen

Dann hast du an der Stelle ein Riesenproblem. Das geht ja auch

Jochen

nicht gut.

Jochen

Ja, also

Jochen

aus meiner Perspektive

Martin

mein Branding mache ja ich.

Martin

Ja.

Martin

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.

Martin

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.

Dominik

Also was ich meine, du kannst halt jetzt, wie wir das bei unserem Podcast gemacht haben, Bootstrap importiert und sonst nichts tun für das Design, weil einem das nicht wichtig ist.

Dominik

Ja, ja, genau, also

Jochen

ja, da habe ich das ja auch

Jochen

im Grunde, ja, ich glaube auch, das ist der Grund, warum halt

Jochen

Bootstrap quasi so viel verwendet

Jochen

wird in internen Tools,

Jochen

weil da ist es halt oft egal,

Jochen

ist halt wurscht, ja, also

Jochen

wie das jetzt aussieht, es muss halt bloß irgendwie halbwegs bedienbar

Jochen

sein und

Jochen

das kriegt man mit Bootstrap ja schon hin.

Jochen

Es sieht halt nicht so toll aus, aber

Jochen

ja, genau.

Jochen

Ja, ja,

Jochen

ja, ich weiß es nicht so genau.

Jochen

Es ist immer, es ist alles eine,

Jochen

Das ist da so wirklich...

Dominik

Was möchte man am Anfang

Dominik

immer machen, wenn man jung ist und

Dominik

Software entwickeln will, möchte man Spiele programmieren.

Dominik

Das geht mit Qt wahrscheinlich schon

Dominik

ein bisschen besser als mit Web.

Dominik

Aber auch da bin ich mir nicht sicher, ob das die richtige

Dominik

Idee ist, irgendwie das so zu betrachten.

Dominik

Nee.

Jochen

Ich glaube, da würdest du

Jochen

Spiele...

Dominik

Ob du eine 3D-Intel

Dominik

möchtest oder halt nicht, also ob du halt

Dominik

eine zweidimensionale, weiß nicht,

Dominik

kann man Fensteransicht sagen zu Qt?

Dominik

reicht.

Dominik

Also für Spiele wäre jetzt

Dominik

QT nicht mal eine erste Idee.

Martin

Aber kommt sicherlich aufs Spiel an.

Martin

Ja, ich glaube auch.

Dominik

Nur weil man dann Pfeifen machen wollen würde.

Dominik

Büro-Simulator 3.0.

Dominik

Ja, genau.

Dominik

Das geht

Dominik

wahrscheinlich gut.

Dominik

Da kam ich

Dominik

mit Kiwi schon ein bisschen weiter tatsächlich.

Dominik

Also es war auch so eine Art Büro-Simulator.

Dominik

Ja.

Dominik

Ja.

Dominik

Ich habe einen Fantasy-Manager

Dominik

für unsere Eishockey-Runde gebaut.

Jochen

Ja, gut, sowas.

Jochen

Das hat wundervoll funktioniert.

Jochen

Ja.

Jochen

Das war sogar hübsch in Kiwi.

Dominik

Aber ja, ich glaube,

Dominik

man will das nicht benutzen, das ist halt befummelig.

Jochen

Ja, aber was mich auch nochmal interessieren würde,

Jochen

so rein ressourcenverbrauchmäßig, wenn ich jetzt

Jochen

für einen User so eine

Jochen

Applikation starte mit Qt, dann habe ich schon das

Jochen

Gefühl, also wahrscheinlich so ein paar Megabyte wird die dann

Jochen

schon einen Hauptspeicher brauchen oder so.

Jochen

Die muss ja dann auch die ganze

Jochen

Zeit laufen, obwohl die muss eigentlich nur so

Jochen

lange laufen, wie ein Benutzer sie tatsächlich

Jochen

benutzt. Dann kann man irgendwie den

Jochen

State irgendwie so raus serialisieren und erst

Jochen

beim nächsten Mal, wenn der Nutzer wieder kommt, dann

Jochen

muss man das halt irgendwie wieder sich irgendwo

Martin

herholen. Genau so ist es.

Jochen

Aber tatsächlich

Jochen

hast du, solange ein Nutzer

Jochen

irgendwie quasi da drauf

Jochen

guckt, also die Frage eingeloggt ist oder ich weiß nicht,

Jochen

wie man das beschreiben kann,

Jochen

solange irgendwie eine Session aktiv

Jochen

ist, wie auch immer,

Jochen

brauchst du halt diesen Hauptspeicher.

Jochen

Ja, genau.

Jochen

Ja, okay.

Martin

Das ist so, wobei da auch einiges im Shared Memory sich befindet.

Martin

Ja, die ganzen Bibliotheken wahrscheinlich, ja.

Martin

Das macht Python von sich aus schon.

Martin

Das heißt, man hat jetzt nicht komplett den Overhead

Martin

von einem Nutzer auf alle Nutzer,

Martin

sondern da wird noch einiges geteilt.

Martin

Aber ja, prinzipiell schon.

Jochen

Ja, weil da bist du natürlich dann wahrscheinlich

Jochen

ein bisschen ineffizienter als eine Web-Anwendung,

Jochen

die halt nur das, wo es dann halt einen Prozess gibt,

Jochen

halt dann viele Quests von unterschiedlichen Benutzern.

Martin

Genau, also speicherintensiver

Martin

ist das schon. Wobei

Martin

es nicht so wichtig ist, dass der

Martin

Sprecher schnell beschrieben

Martin

werden kann. Also mit

Martin

anderen Worten, es muss nicht zwingend RAM sein.

Martin

Ah, okay.

Martin

Was einem die Möglichkeit gibt,

Martin

ein Swap-Laufwerk

Martin

anzulegen, das irgendwo hin

Martin

zu tun, wo es einen relativ zügigen

Martin

Zugriff hat. Und

Martin

ja, da geht es auch.

Jochen

Ja, und SSDs sind jetzt auch nicht

Jochen

du mir so super langsam? Ja.

Martin

Genau, also eigentlich sind wir

Martin

mit der Swap-Variante

Martin

unbegrenzt im Hauptspeicher.

Martin

Ja. Fast.

Martin

Ja, ja, ja, ja.

Jochen

Nee, durchaus interessantes Modell.

Jochen

Ja. Und

Jochen

ja, ich meine, was

Jochen

wenn man jetzt aber, für die

Jochen

Benutzer ist das ja auch so ein bisschen, die kommen aber gut

Jochen

damit klar und nehmen das so an

Jochen

oder hörst du da häufiger das

Jochen

so, warum, das ist irgendwie komisch.

Jochen

Ich weiß es nicht genau.

Martin

Also bis jetzt habe ich tatsächlich dazu noch gar nichts gehört.

Martin

Ah, okay. Interessant.

Martin

Also es scheint einigermaßen intuitiv zu sein.

Martin

Vor allem, weil man es ja auch vom Desktop schon kennt.

Martin

Ja.

Martin

Also die Art der Bedienung, sage ich mal.

Jochen

Gehen denn da wirklich alle, also jetzt stelle ich mir natürlich die Frage,

Jochen

wie ist das denn jetzt mit Tastaturkürzeln oder, weiß ich nicht, rechter Mausklick oder so.

Jochen

Das muss ja jetzt alles durch den Browser durch.

Jochen

Der Browser lässt ja jetzt nicht alles durch.

Jochen

Manche Sachen sind ja auch, quasi fängt der Browser ja wahrscheinlich schon ab, wenn man ein anderes Tab auswählt oder das Fenster zumacht oder so. Das geht dann ja gar nicht bis auf die andere Seite. Aber ich weiß jetzt auch nicht genau, was da möglich ist und was nicht.

Martin

Ja, also hätte man das selber entwickeln müssen, den Client in JavaScript, hätte man wahrscheinlich mehrere Jahre gebraucht. Muss ich aber nicht. Der ist schon fertig. Und der kann tatsächlich alles, was man sich unter Desktop so vorstellt. Also Rechtsklick ist kein Problem, Tastatureingaben sind kein Problem, Tastaturkürzel sind kein Problem.

Martin

Also das ist eigentlich alles da und wird von Firefox und von Chrome supported und damit eigentlich von 90 Prozent von allem, was es da gesucht gibt.

Jochen

Ja, das heißt, man kriegt auch gar nichts, aber es ist schon in einem Browserfenster, muss es halt sein.

Jochen

Richtig.

Jochen

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.

Martin

Verhält sich so, als ob man die Anwendung

Martin

lokal auf dem Rechner hätte

Jochen

Auch Copy und Paste, wahrscheinlich bei Text kein Problem

Jochen

Wenn ich jetzt irgendwas da reinziehe oder so

Jochen

Okay, dann passieren wahrscheinlich komische Sachen

Martin

Genau, es gibt Dateitransfer

Martin

Es gibt, wenn man will, sogar Audio

Jochen

Ja, schick

Jochen

Ich glaube, dieses Guacamole

Jochen

muss ich mir auch mal angucken

Jochen

Scheint ja schon sehr interessant zu sein

Jochen

Lass mal überlegen

Jochen

was gibt es denn, was kann man sich denn noch so

Jochen

vorstellen, was interessant sein könnte

Jochen

bei diesem, also gibt es, ist das

Jochen

der Client selber, der Python

Jochen

Rapper um Qt

Jochen

kommt selber auch von, ich weiß nicht

Jochen

wie hieß denn diese Firma nochmal

Jochen

die Qt baut

Martin

Qt Foundation

Martin

Qt Foundation

Jochen

na gut, ich weiß nicht mehr, da war ja auch noch eine lange Zeit

Jochen

vielleicht gibt es die Firma auch nicht mehr, keine Ahnung

Jochen

Foundation klingt jetzt irgendwie eher nicht mehr nach

Jochen

Rundfunk, aber

Jochen

genau, von denen kommt halt

Jochen

auch, kommen die Python-Bindings, weil ich

Jochen

habe irgendwie gehört, PySite gibt es, oder

Jochen

das sind

Jochen

die dann. Wenn ich Qt

Jochen

sage, dann meine ich PySite.

Jochen

Also es gibt

Martin

unterschiedliche Ausprägungen,

Martin

wie man Qt nutzen will, kann

Martin

und

Martin

ja, ich habe mich für PySite entschieden.

Martin

The Qt Company.

Martin

Ah, okay.

Dominik

Hier gibt es dann noch so ein paar andere Sachen.

Dominik

Vielleicht wollen wir die noch kurz erwähnen.

Dominik

Also Kiwi haben wir jetzt schon, glaube ich, erwähnt.

Dominik

Hier ist noch WX-Python.

Dominik

Kennt jemand GTK-Bindings für Python?

Martin

Genau, also GTK würde ich sagen,

Martin

ist so das zweite große Framework, was man da nutzen kann.

Martin

Was nicht ganz, aber so ungefähr auf Augenhöhe.

Martin

Naja, andere würden wahrscheinlich was anderes sagen.

Martin

Also es ist auf Augenhöhe mit Qt.

Martin

Und ja, die Widgets sind ähnlich weit gediehen.

Martin

Kann man sich dann quasi aussuchen.

Dominik

Du würdest ja wahrscheinlich alles, dein ganzes User-Interface

Dominik

und auch deinen Desktop komplett mit Qt bauen oder mit GTK.

Martin

Dafür habe ich GTK noch nicht zu sehr in die Tiefe getestet,

Martin

um das sagen zu können.

Martin

Aber ja, also es scheint ähnlich weit zu sein.

Martin

Aber dafür habe ich es mir nicht genug angeguckt,

Martin

um jetzt speziell sagen zu können, das geht damit und das geht damit nicht.

Dominik

Und dann gibt es noch einen Rapper da irgendwie

Dominik

drum, Piesimplegui, der mit dem einfache Sachen

Dominik

irgendwie dann auch gehen, schneller oder

Dominik

sowas, oder noch mehr High-Level-Interface, oder?

Martin

Kenn ich auch nicht im Detail,

Martin

Piesimplegui.

Dominik

Das macht er so beinahe auch über

Dominik

Qt, kann man dann lieber WX peisen.

Dominik

WX peisen wäre noch so ein Ding.

Dominik

Habe ich jetzt auch mal kurz

Dominik

ausprobiert, aber war so mittelhübsch.

Jochen

Ja, habe ich da schon ganz lange nichts mehr von gehört.

Jochen

Ja, genau, aber gegen wohl ein paar

Jochen

Sachen.

Jochen

Ja, also

Dominik

es ist immer noch so, Python und GUI

Dominik

ist immer noch so ein bisschen...

Jochen

Ja, wobei ich tatsächlich, also ich würde schon

Jochen

die Ansicht vertreten, also ich meine auch wenn das

Jochen

alles ja schon

Jochen

eine interessante Geschichte ist und

Jochen

aber ich habe schon so das Gefühl, dass

Jochen

so diese Desktop-UI

Jochen

Geschichten so ein bisschen

Jochen

Also vielleicht riechen sie auch nur komisch

Jochen

Das könnte auch, also ich meine

Jochen

da könnte es schon so ein bisschen tot sein

Jochen

Was ist mit Beware?

Jochen

Ja, ja, genau.

Jochen

Also das würde ich auch so sehen.

Jochen

Also das ist Russell

Jochen

Keith-McGee, der hat ja auf der

Jochen

auf irgendeiner PyCon

Jochen

eine Keynote drüber gehalten, was sind die größten

Jochen

Gefahren für Python?

Jochen

Oder Black Swan

Jochen

irgendwas war im Titel.

Jochen

Dem würde ich mich durchaus anschließen. Also was

Jochen

für Python richtig gefährlich ist, ist, dass

Jochen

das nicht auf Mobile läuft.

Jochen

Weil tatsächlich irgendwie Computer werden

Jochen

verdrängt. Also die Telefone sind inzwischen

Jochen

Also ich würde mal sagen, ein durchschnittliches iPhone ist wahrscheinlich schneller und leistungsfähiger als ein durchschnittlicher Desktop-Rechner.

Dominik

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.

Jochen

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?

Jochen

Kann man die just swipen?

Jochen

Ja, genau, tippen dann auf den Bildschirm, dann passiert nichts, dann ist es kaputt.

Jochen

Also das ist ein Problem, weil in 10 Jahren oder 20 Jahren wird das wahrscheinlich keiner mehr benutzen.

Jochen

Halte ich für eine steile These.

Jochen

Ja, gut, aber ich meine, das ist nur so ein,

Jochen

das ist ein Risiko. Also ob das jetzt so eintritt

Jochen

oder nicht, ist natürlich klar, wie hoch

Dominik

ist das Risiko. Also auch marktanteilende Worte, wenn man das

Dominik

benutzt, muss man wahrscheinlich schon relativ viel sich damit auskennen.

Dominik

Ja, aber

Jochen

also, wie

Jochen

auch immer, aber

Jochen

dass es da ein Risiko gibt, würde ich schon

Jochen

sagen, einfach deswegen, weil Python da halt nicht

Jochen

läuft. Das läuft da nicht.

Jochen

Und das ist ein Problem.

Jochen

Und jetzt muss man entweder irgendeinen Weg finden,

Jochen

wie man Python da, wie man

Jochen

sozusagen es schaffen kann, dass man Python

Jochen

entwickelt und dann halt aber auch eine iOS oder

Jochen

Android-App hat. Und das ist halt genau,

Jochen

B-Ware macht das halt genau.

Jochen

Es sind diverse Komponenten, die dafür nötig sind.

Jochen

Ja, letztlich macht es

Jochen

sowas ähnliches, was halt React Native oder so

Jochen

auch macht, dass es ruft schon die

Jochen

echten UI-Funktionen dann auf von den

Jochen

Frameworks der entsprechenden...

Dominik

Also kompiliert runter quasi auf

Jochen

Kotlin oder? Ja, nicht ganz.

Jochen

Nee, es kompiliert, es ist nicht...

Jochen

Also es gibt unterschiedliche Komponenten und die

Jochen

machen unterschiedliche Sachen, aber letztlich

Jochen

es gibt auch Wrapper um die

Jochen

echten Funktionen sozusagen drumrum und

Jochen

die werden dann aufgerufen

Jochen

und

Jochen

ja.

Dominik

Wäre auch interessant zu wissen, wie React das eigentlich macht

Dominik

und dann gibt es ja noch irgendwas wie Yonos oder Capacitor

Jochen

oder so. Ja, es gibt dann

Jochen

Teile, die sind halt komplett nativ und dann

Jochen

Teile kann man aus dem Web nachladen,

Jochen

man kann JavaScript ausführen und es ist

Jochen

ja gut, oder Elektron macht das ja auch so.

Jochen

Ja, also

Jochen

ich glaube, da sind wir auch noch nicht

Jochen

durch. Das war auch ganz interessant,

Jochen

ich habe mich jetzt, ich war letzte Woche

Jochen

Donnerstag auf dem Treffen der

Jochen

Java User Group,

Jochen

rein Juk,

Jochen

die Java User Group rein.

Jochen

Was hat dich denn dahin verschlagen, Juk?

Jochen

Ja, ich dachte, ich muss mich mal weiterentwickeln

Jochen

und dann dieses Python entwickeln.

Jochen

Das hat keine Zukunft, den muss man bei Java angucken.

Jochen

Nee.

Jochen

Ich bin da hingegangen, weil

Jochen

der Vortrag da hat mich

Jochen

irgendwie, ist mir aufgefallen,

Jochen

Stefan Tilkoff und

Jochen

Ebert Wolf, die machen so

Jochen

Software minus Architektur,

Jochen

TV und die machen auch

Jochen

Podcasts und die sind beide bei

Jochen

InnoQ und die haben auch schon viele interessante

Jochen

Stefan Tilkoff ist

Jochen

oft zu Gast in anderen Podcasts, gerade

Jochen

letztens war er bei der Programmierbar

Jochen

und hat da über Architektur gesprochen,

Jochen

die machen viel Software-Architektur, die sind auch

Jochen

so, das ist so eine der Firmen, wo man hingeht, wenn man

Jochen

jetzt ein großes Problem hat, ein großes Projekt

Jochen

und man möchte jetzt irgendwie so,

Jochen

dass einem einer mal wirklich erklärt, wie man das denn

Jochen

so angeht und wie man das besser machen kann,

Jochen

dann ist das so eine der Adressen, zu denen man gehen kann

Jochen

und wahrscheinlich eine der renommierteren

Jochen

Adressen. Und

Jochen

ich höre dem immer gerne, ich höre zum Beispiel

Jochen

Stefan Tillkopf immer gerne zu, weil ich

Jochen

finde, der kann das immer schön erklären,

Jochen

was so die Probleme sind, die man da hat.

Jochen

Ja,

Jochen

deswegen bin ich da hingegangen und

Jochen

sie haben geredet über, wie sah es eigentlich vor

Jochen

zehn Jahren aus, wie sieht es heute aus, haben sich die Probleme

Jochen

irgendwie verändert in der IT,

Jochen

welche Sachen sind besser geworden, welche

Jochen

Sachen sind immer noch genauso wie vorher.

Jochen

Und genau da, jetzt bin ich auch schon wieder abgeschweift,

Jochen

da war auch einer, der machte so ein bisschen Elixier

Jochen

und auch kein Java.

Jochen

Und der meinte, in letzter Zeit macht er immer mehr Dart,

Jochen

weil Dart für, das ist diese Sprache von Google,

Jochen

für so, das sollte, glaube ich, auch mal irgendwann Webgeschichte werden,

Jochen

aber jetzt hat sich so halt eine Nische

Jochen

gefunden. Man kann damit halt

Jochen

Mobile Apps irgendwie oder Apps

Jochen

für Android-Telefone oder

Jochen

iOS-Geräte entwickeln.

Jochen

Das ist eine eigene Sprache. Flutter ist

Jochen

halt das Ding, was dann UI macht und

Jochen

das braucht im Grunde nur irgendwie

Jochen

ein Canvas, wo es halt irgendwie

Jochen

SVG reinrendern kann oder so, glaube

Jochen

ich. Und macht dann

Jochen

eine UI komplett selber. Also das ruft nicht

Jochen

irgendwelche Funktionen, nativen UI-Funktionen

Jochen

auf von

Jochen

dem entsprechenden irgendwie

Jochen

Gerätehersteller

Jochen

sondern

Jochen

das zeichnet alles selber

Jochen

also alle Buttons und Dinge und so werden halt

Jochen

einfach irgendwie tatsächlich in Canvas reingezeichnet

Jochen

und da Canvas überall da ist

Jochen

und man da irgendwelche Dinge reinzeichnen kann

Jochen

kann man halt alle Sachen gleich aussehen

Jochen

lassen auf allen Geräten damit

Jochen

und halt auch relativ

Jochen

und ist es halt einfacher zu entwickeln als wenn man jetzt irgendwie

Jochen

das haben ja diese statischen

Jochen

Programmiersprachen oder statistikisierten Programmiersprachen

Jochen

da ist halt immer so

Jochen

ich meine gut mit Kotlin ist es schon ein bisschen besser

Jochen

geworden, aber Java ist halt schon

Jochen

für Android, das ist halt schon sehr

Jochen

sehr verbose und man muss

Jochen

ja sehr viel Boilerplate schreiben und auch

Jochen

Swift ist da vielleicht ein bisschen besser, aber so

Jochen

wahnsinnig viel besser auch nicht, ist auch relativ

Jochen

schrecklich und

Jochen

ich meine, mein böser

Jochen

Scherz an der Stelle wäre ja immer so, naja, Software

Jochen

Architektur hat mich auch lange nicht interessiert, weil man schreibt ja in Python

Jochen

oft nicht so große Sachen, weil man muss ja nicht so viel

Jochen

schreiben und wenn man in Java

Jochen

für Hello World halt schon tausend

Jochen

Zeilen irgendwie Boilerplate schreiben muss,

Jochen

allein davon muss man sich Gedanken um Softwarearchitektur

Jochen

machen, einfach, um das

Jochen

Spoiler-Play-Zeugs zu organisieren.

Jochen

Und

Jochen

ja, das muss man mit Dart auch nicht so

Jochen

und dann hat man

Jochen

eine Alternative, die vielleicht ein bisschen

Jochen

einfacher zu verwenden ist. Und das setzt sich gerade

Jochen

durch. Also ich glaube, das, was der

Jochen

sagte, war, inzwischen sind

Jochen

der Marktanteil von Flutter

Jochen

ist halt inzwischen größer

Jochen

als der von allen anderen

Jochen

Sachen, die es da halt auch gibt, mit Elektronen und

Jochen

keine Ahnung, die ganzen

Jochen

als von allen anderen zusammen.

Jochen

Man spart sich halt

Martin

die

Martin

Doppelentwicklung. Also wenn man

Martin

zum Beispiel eine App machen will

Martin

für Android und iOS, dann muss man es halt

Martin

nur einmal schreiben. Das ist der große Vorteil.

Martin

Es bringt aber,

Martin

wenn man es länger verwendet,

Martin

doch auch so das eine oder andere

Martin

Problemchen mit sich,

Martin

wo man am Anfang nicht unbedingt

Martin

von weiß.

Martin

Ja.

Jochen

Also ich meine, das ist halt immer schwierig, glaube ich.

Martin

Also ich hatte zum Beispiel, also ich habe eine App oder mehrere in Flutter entwickelt und es gibt dort ein Paketsystem sozusagen.

Martin

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.

Martin

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 ja so Unmaintained Dependencies in seinem Projekt drin und muss dann gucken, dass man eine neue Bibliothek halt findet, die das gleiche noch kann.

Martin

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.

Martin

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.

Jochen

Oh, okay, das erinnert mich jetzt noch ein bisschen an die JavaScript-Developer-Experience, hätte ich gesagt.

Martin

Also vielleicht hat sich das inzwischen verbessert, das weiß ich nicht genau.

Martin

Aber das waren auf jeden Fall die Probleme, mit denen ich so zu kämpfen hatte.

Dominik

Also ich habe auch gehört, dass Flutter irgendwie so für größere Projekte irgendwann nervig wird.

Dominik

Und ja, die Capacitor habe ich sehr empfohlen gekriegt.

Dominik

Und das geht halt auch mit Vue.js.

Jochen

Ja, ist quasi dann so ähnlich wie React Native, nur halt für Vue, ne?

Dominik

Ja genau, es gab irgendwie auch mal View Native, aber das ist auch kaputt gegangen aus denselben Gründen, weil irgendwer ja keine 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.

Jochen

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, 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 es sollte jetzt irgendwie dann auch quasi auf iOS halt eigentlich ganz gut funktionieren, aber okay, ja.

Dominik

Ja, aber diese PWA ist halt auch immer so

Jochen

Ja, ja, es hat schon alles noch so

Jochen

seine Ecken und Kanten. Es ist nicht

Jochen

ganz das gleiche, als wenn man in Native das macht.

Jochen

Kennt ihr PyScript?

Jochen

Ja, klar.

Martin

Das ist doch eigentlich die Lösung aller unserer Probleme.

Martin

Ja.

Jochen

Ja, also es geht quasi

Jochen

darum, dass man halt Python einfach im Browser

Jochen

also irgendwie im Browser

Jochen

laufen hat.

Jochen

ja, das große Problem an der Stelle

Jochen

ist halt, dass das, oder

Jochen

es ist halt die Frage, ob das ein großes Problem ist oder nicht,

Jochen

dass das halt bedeutet, dass man

Jochen

halt irgendwie ein paar Megabyte

Jochen

Zeug irgendwie runterlädt, weil den Interpreter,

Jochen

Python-Interpreter, der ist halt nicht im Browser drin.

Jochen

Die JavaScript-Interpreter halt schon.

Jochen

Und das bedeutet, man muss

Jochen

halt erstmal ein paar Megabyte irgendwie

Jochen

runterladen und kann dann erst

Jochen

irgendwas machen.

Martin

Wobei, das ließe sich ja leicht lösen,

Martin

wenn sich das so weit durchgesetzt hat, dass die

Martin

Browser-Hersteller sagen, ja gut,

Martin

Dann bundeln wir das halt mit in den Browser rein.

Jochen

Ja, das wäre natürlich eine Perspektive.

Jochen

Das wäre natürlich schick.

Dominik

Dann hätten wir gewonnen, aber naja.

Jochen

Ja, aber dann kommen auch noch alle anderen

Jochen

und wollen das auch haben.

Jochen

Ja, ich weiß es nicht. Aber ja, natürlich.

Jochen

Also das ist auf jeden Fall auch ein interessanter Weg.

Jochen

Das halt alles irgendwie dann nach

Jochen

WebAssembly kompiliert letztendlich.

Jochen

Ich habe letztens gehört, das fand ich auch sehr interessant,

Jochen

dass tatsächlich,

Jochen

ich glaube, Figma war es.

Jochen

Ich hoffe, ich erzähle jetzt

Jochen

keinen allzu großen Unsinn.

Jochen

Aber ich glaube, Figma ist tatsächlich

Jochen

eine Applikation,

Jochen

die ist geschrieben in C++ oder so

Jochen

und dann

Jochen

kompiliert das aber zu WebAssembly

Jochen

und läuft im Browser. Aber die Leute, die das

Jochen

entwickeln, entwickeln tatsächlich in C++.

Jochen

Ja. Okay.

Dominik

Also Figma ist das Design-Tool

Dominik

für alle, die es noch nicht können, mit dem man ohne

Dominik

Plan von

Dominik

Entwicklung so Screens zusammen

Dominik

klicken kann, ein bisschen mit Funktionalität

Dominik

versehen, um so Klickstrecken zu verwirklichen.

Dominik

Wo es auch tolle Tools gibt, wo man das

Dominik

exportieren kann als VJS-Komponenten

Dominik

oder direkt mit CSS rausrennen kann

Dominik

und so weiter vom Figma. Dann spart

Dominik

man sich so den Zwischenschritt, was sehr praktisch ist.

Dominik

Was mein Problem wäre, sowas

Dominik

wie Qt zu verwenden, weil

Dominik

ich glaube, ich möchte jemanden, der von Design

Dominik

mehr Ahnung hat als ich, das bauen lassen,

Dominik

das dann exportieren und dann in meine

Dominik

Anwendung importieren.

Dominik

Dann muss ich mich darum nämlich nicht mehr groß kümmern.

Jochen

Ja, aber da würde ich eben

Jochen

denken, das ist genau diese

Jochen

Frage. Du hast

Jochen

halt eine Bandbreite von, das Design ist

Jochen

super wichtig und du musst, hast

Jochen

eigentlich nicht so viel komplizierte Funktionalität

Jochen

auf der einen Seite vielleicht und auf der anderen Seite

Jochen

hast du halt, du hast viel komplizierte Funktionalität, aber

Jochen

Design ist nicht so wichtig. Und je nachdem, wo dein

Jochen

Use Case ist, ist halt das ein oder andere halt

Jochen

interessanter, weil wenn du halt

Jochen

sehr viel komplizierte Funktionalität hast

Jochen

und dann versuch das

Jochen

mal einem Designer zu erklären. Also ich würde auch der

Dominik

Vertriebs- und auch der Marketing-Design sagen, Design ist

Dominik

alles. Also ich habe immer das Gefühl,

Dominik

die Sachen, die super toll aussehen, aber nichts können,

Dominik

verkaufen sich x-mal viel besser

Dominik

als die Sachen, die es anders machen.

Dominik

Das kommt auf deine Zielgruppe an.

Dominik

Ich würde, also

Dominik

ja, ich würde sagen,

Dominik

die Normalverteilung in der Mitte

Dominik

sagt leider was anderes. Also ich wäre

Dominik

durchaus auch bei

Dominik

gute Funktionalität, würde ich eher bevorzugen.

Dominik

Aber naja,

Dominik

ich glaube, dass es selten das dem so ist.

Dominik

Ich weiß es nicht.

Dominik

Ja, ja.

Dominik

Ja, aber

Dominik

Genau, vielleicht nochmal zu dem

Jochen

MIA-Plan. Das ist aber

Jochen

quasi

Jochen

entstanden

Jochen

für einen konkreten Anwendungsfall,

Jochen

in dem es dann auch eingesetzt wird,

Jochen

aber es verwenden jetzt auch andere Leute schon und

Jochen

es funktioniert eigentlich ganz gut quasi.

Jochen

Und man kann das, also wenn man irgendwie so ein Problem hat mit

Jochen

man möchte irgendwie Personalplanung

Jochen

machen, im Grunde kann jeder

Jochen

das einfach so dann verwenden.

Martin

Kann jeder das einfach so verwenden, genau.

Martin

Ja.

Jochen

Das, ja, genau.

Jochen

Ja, klingt ja auf jeden Fall schon mal gut.

Jochen

Ich weiß nicht, fällt dir noch was ein?

Jochen

Ich überlege gerade, ob ich noch irgendwelche Fragen habe

Jochen

oder irgendwelche Dinge, über die man mal reden könnte.

Jochen

Wir haben jetzt alles so ein bisschen

Dominik

gefreut, was wir so wirklich tief gemacht haben.

Dominik

Also was mir,

Martin

ich höre euch ja auch regelmäßig,

Martin

was mir aufgefallen ist,

Martin

es gibt noch einen

Martin

Unterschied, was wir

Martin

sozusagen, was wir anders machen, was ich anders mache,

Martin

als ihr wahrscheinlich.

Martin

Ihr nutzt gerne

Martin

Datenbanken. Ich nicht.

Jochen

Ja, das ist auch interessant, ja.

Martin

Und

Martin

was nimmst du? Files?

Martin

Wie bitte? Was nimmst du? Files?

Martin

Dateibasiert, genau.

Martin

Gründe, warum ich,

Martin

also es stimmt natürlich

Martin

nicht, also ich habe auch Datenbanken,

Martin

aber nur da, wo ich sie haben muss.

Martin

Also zum Beispiel das

Martin

Jack and Molly hat

Martin

halt eine Datenbank im Hintergrund.

Martin

Da komme ich nicht drum rum.

Martin

Aber Datenbanken, da habe ich verschiedene Nachteile, die ich da sehe.

Martin

Zum Beispiel brauche ich ein Tool, mit dem ich die angucken kann, muss.

Martin

Das heißt, wenn ich mal schnell was nachschauen will, dann geht das mal nicht so einfach.

Martin

Ich kann mich nicht einfach per SSH auf den Server einloggen, kann mir eine Datei anschauen mit dem Dateieditor meiner Wahl,

Martin

sondern ich muss da irgendwie dann mit einem SQLite, was weiß ich, Viewer oder von außen, gut, da kann ich einen Port aufmachen,

Martin

aber den muss ich auch erst mal aufmachen, dann da drauf.

Martin

Also das ist deutlich einfacher mit einer Datei, würde ich mal sagen.

Martin

Dann habe ich die Wartung der Datenbank.

Martin

Ich möchte ja regelmäßig, möchte ich die reinigen,

Martin

ich möchte die komprimieren vielleicht, alte Sachen rausschmeißen.

Martin

Das habe ich auf Dateiebene zwar auch so ein bisschen,

Martin

aber ich würde sagen, es ist da wesentlich einfacher.

Martin

Also wenn ich da Sachen habe, die ich nicht mehr brauche,

Martin

dann kann ich die mir konkret angucken

Martin

und kann dann zum Beispiel

Martin

in Python dafür sorgen, dass die wieder rausfliegen.

Dominik

Wie machst du das? Also pickelst du die Sachen

Dominik

dann weg oder schreibst das JSON weg?

Martin

Nee, ich mache alles, was geht,

Martin

mache ich menschenlesbar.

Martin

Also, ja,

Martin

JSON oder

Martin

INI, ja.

Dominik

Also JSON mache ich auch, in einigen Applikationen

Dominik

schreibe ich einfach tatsächlich so JSON-Files raus.

Martin

Ja, also JSON ist ganz

Martin

nett, das ist vor allem schnell.

Martin

Eigentlich würde ich gerne noch woanders hin. Es gab jetzt ein neues Settings-Format von Python. Das ist eigentlich das, wo ich jetzt hin wollte.

Martin

Also 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.

Martin

Ich brauche nur die, also das geht mit der Geschwindigkeit, mit der ich von der Platte lesen kann und kann dann halt die ganzen Aggregationsfunktionen, die ich brauche, was weiß ich, Summe, Maximum und so weiter, die habe ich in NumPy auch. Also mache ich das in NumPy.

Martin

Ja, ansonsten

Martin

Datenbank-Nachteile, ja, ich muss

Martin

natürlich, ich muss die stoppen,

Martin

wenn ich einen Backup mache.

Jochen

Ja, das weiß ich nicht, also da

Martin

Ja, okay, gibt es vielleicht so eine Live-Variante?

Martin

Also ich kenne es noch,

Martin

weiß ich nicht, also wäre mir nicht bekannt.

Jochen

Also kommt drauf an, was für eine Datenbank man verwendet, aber ich meine

Jochen

jetzt bei Postgres, das geht schon, also

Jochen

da gibt es so, ja, also muss man

Jochen

nicht stoppen.

Jochen

Aber ja, das ist natürlich ein Problem.

Dominik

Ja, du musst halt irgendwie, du hast einen Tail halt,

Dominik

mit dem du irgendwie umgehen musst, von

Dominik

Zeugs, das irgendwie in der Luft hängen kann, zwischen dem

Dominik

letzten Backup und dem, wo du gerade

Dominik

backuppen willst, was da an Transaktionen gerade

Dominik

quasi reinkommt, der relativ groß werden kann,

Dominik

wenn du viel Traffic drauf hast.

Jochen

Ja, gut, aber da gibt es

Jochen

schon Wege, damit umzugehen. Ich meine,

Jochen

was da empfohlen wird, ist ja dann auch immer

Jochen

nicht, das selber zu machen, wenn man das nicht,

Jochen

weil das natürlich ein Riesenaufwand ist, sich da

Jochen

einzuarbeiten, das ist durchaus

Jochen

ein Nachteil, ganz klar.

Jochen

Man kann ja auch da Dienstleister

Jochen

benutzen, sowas wie Crunchybridge

Jochen

Crunchy Data verwenden oder so, oder sonst

Jochen

irgendwen, der halt so was Managed Postgres

Jochen

anbietet oder so. Okay, interessant.

Jochen

Dann muss er bitte noch meine Shownotes packen.

Jochen

Packet bitte noch meine Shownotes.

Jochen

Aber man kann das auch selber machen, was sie tun.

Martin

Hat aber den Nachteil,

Martin

dass dann meine Daten woanders liegen.

Martin

Ja, ja, gut, okay.

Martin

Das will ich eigentlich nicht, sondern

Martin

also, mein Ansatz

Martin

ist, ich möchte eigentlich gar keine

Martin

Kundendaten haben.

Martin

Und wenn ich sie haben muss,

Martin

dann möchte ich so wenig wie möglich davon haben.

Martin

Ja, also z.B. bei der Anmeldung verlange ich auch nur Nutzername und Passwort, mehr nicht. Noch nicht mal eine E-Mail.

Jochen

Ja, gut, aber was ist dann, wenn jemand sein Passwort vergisst?

Martin

Genau, 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.

Martin

Aber solange das nicht häufig

Martin

vorkommt, ich antworte

Martin

auch schnell.

Jochen

Ich denke auch, das ist halt wieder eine Frage,

Jochen

was die Kunden, wer die Kunden sind.

Jochen

Also wenn du jetzt ganz viele

Jochen

Endkunden hast, an denen du nicht viel verdienst

Jochen

und dann

Jochen

muss alles automatisiert sein.

Jochen

Dann ist schlecht, wenn die Leute alle dich anschreiben.

Jochen

Wenn du jetzt nur wenig Kunden hast,

Jochen

die sich auskennen, dann ist das halt alles nicht so schlimm.

Martin

Ich werde das auch automatisieren, solange das

Martin

überhand nimmt, wenn das überhand nimmt, aber

Martin

das ist nicht der Fall.

Dominik

Ich finde es interessant.

Dominik

Ich weiß nicht.

Dominik

Ich denke mir so,

Dominik

irgendwas könnte man mit den Daten auch anfangen.

Dominik

Es gibt ja auch die Verantwortung an die Hand.

Dominik

Wenn ich jetzt sage,

Martin

ich habe hier einen Riesenhaufen von Nutzerdaten

Martin

mit E-Mail-Adresse, Passwort, Bankdaten, was weiß ich

Martin

und dann kommt irgendjemand auf meinen Server

Martin

und trägt das ganze Zeug raus,

Martin

dann habe ich auf jeden Fall ein Problem.

Martin

Und das kann ich schon mal insofern vermeiden,

Martin

wenn ich das Zeug gar nicht erst habe.

Dominik

Das würde zum Beispiel aber auch für Managed sprechen,

Dominik

weil dann hast du die Verantwortung quasi auch abgegeben.

Dominik

Naja, nicht ganz.

Martin

Du schließt dann einen Servicevertrag mit dem, der das halt managt,

Martin

aber in der Verantwortung steht trotzdem ich.

Martin

Also ganz so ist das dann nicht.

Jochen

Also wenn jemand dann, also nehmen wir an,

Jochen

du hast eine Managed-Datenbank irgendwo gekauft zum Beispiel

Jochen

mit Crunchy Data und dann irgendwie Crunchy Data,

Jochen

da geht irgendjemand rein und trägt alle Daten raus.

Jochen

aus, dann hast du natürlich trotzdem ein Problem.

Jochen

Auch wenn du das vertraglich dann sagen kannst,

Jochen

das bin ich gar nicht jetzt, ich bin jetzt

Jochen

vielleicht außer Haftung, aber das ist ja trotzdem

Jochen

Kacke für deine Kunden und überhaupt.

Dominik

Aber das kommt halt genau da vielleicht auf die detaillierte

Dominik

Vertragsbeziehung mit deinen Kunden oder mit den Kunden

Dominik

deiner Kunden an und so. Ja, aber vielleicht willst du das auch einfach

Dominik

gar nicht. Vielleicht sagst du, ich will nicht, dass das passieren kann.

Dominik

Die Frage ist halt tatsächlich, also was jetzt aus der

Dominik

Datenraustrageperspektive sicherer

Dominik

oder besser ist, wenn man jetzt

Dominik

ein kleines Team hat, sich

Dominik

noch komplett um so ein Datenbankcluster-Management

Dominik

zu kümmern zu müssen oder das halt

Dominik

einen Service-Dienstleister auszusourcen, der da vielleicht

Dominik

mehr Zeit für hat oder mehr Ressourcen, weil er

Dominik

das nur macht und da sich auch besser mit

Dominik

auskennt als man selber. Und das geht ja für verschiedene

Jochen

andere Services auch so. Ja, also es kann durchaus sein, dass

Jochen

das sogar die sichere Alternative ist.

Jochen

Würde ich auch sagen. Wenn du das outsourcest,

Jochen

wenn du dich selber halt nicht damit auskennst. Genau, oder

Dominik

man hat halt nicht so relevante Sachen. Und ich

Dominik

sag mal so, ja, okay, klar gibt es so Punkte, wo

Dominik

man jetzt gucken muss, dass man jetzt nicht alles so sammelt

Dominik

wie jetzt die letzte Krake. Da gibt es

Dominik

ja so ein paar Google-Kraken, die das

Jochen

so machen. Ja, aber es gibt viele Unternehmen, die erstmal

Jochen

mal alles in ihrem Data Lake irgendwo

Jochen

hin. Ja, also ich würde jetzt auch nicht

Jochen

alles... Vielleicht kann man damit irgendwann mal irgendwas anfangen,

Jochen

aber das habe ich auch keinen Freund

Jochen

von, von sich. Also...

Dominik

Ich kann das so ein bisschen verstehen,

Dominik

also jetzt nicht von Kunden, aber wenn ich jetzt so ein

Dominik

Request habe oder so, warum soll ich die ganzen Informationen da

Dominik

wegschmeißen? Also der neueste

Martin

Trend scheint zu sein, dass jeder Dienst,

Martin

egal wie unwichtig der ist, mal eine Telefonnummer

Martin

haben will. Und das finde

Martin

ich ganz, ganz grausam.

Martin

Ja. Also ich würde jetzt auch

Dominik

sagen, also mir geht es gerade nicht um Kundendaten,

Dominik

sondern eher so um so Meta-Quatsch.

Dominik

Logzeitstempel oder sowas.

Jochen

So Telemetrie im weitesten Sinne.

Jochen

Ja, im weitesten Sinne, ja.

Dominik

Und ohne, dass ich jetzt irgendwie so Nutzer daran identifizieren möchte,

Dominik

um irgendwie da noch ein Quäntchen Umsatz rauszuquetschen,

Dominik

sondern einfach nur so ein bisschen um den Flow

Dominik

so ein bisschen besser im Blick zu haben.

Martin

Ja, technische Daten brauchst du natürlich.

Martin

Das steht ja außer Frage.

Martin

Sonst funktioniert die Software ja nicht.

Martin

Ja.

Jochen

Ja, aber auch da, ich meine,

Jochen

man macht sich vielleicht nicht immer klar, welche

Jochen

Optionen man eigentlich hat. Natürlich kann man irgendwie

Jochen

Sachen speichern und so, aber die Frage ist halt,

Jochen

wiederum, wenn du nicht so viele Nutzer hast,

Jochen

du kannst ja auch einfach fragen.

Dominik

Beispielsweise wäre jetzt auch so ein GraphQL-Api.

Dominik

Wenn ich jetzt nicht ein Problem mit

Dominik

Latenz habe, ich ziehe mir dann Maximum

Dominik

und schmeiße alles weg, was ich nicht brauche.

Dominik

Man könnte natürlich auch direkt die

Dominik

Query so effektiv stellen,

Dominik

dass man das Minimum holt.

Jochen

Du kannst auch direkt die Datenbank

Jochen

quasi in deinen Browser reinpacken.

Jochen

Das geht natürlich auch. Es gibt auch bestimmte

Jochen

Anwendungswelle nennen, das so toll ist.

Jochen

Aber ja, es gibt

Jochen

auch gute Gründe, warum Leute das anders machen.

Dominik

Ja, man muss halt ein bisschen mehr Format haben.

Martin

Der weitere Vorteil ist, wenn ich

Martin

die Daten nicht sammle, dann ist

Martin

mein Backup deutlich kleiner.

Dominik

Ja, also ich würde sagen, einer der wichtigsten Argumente

Dominik

ist vielleicht auch das weniger Stromverbrauch, so ein bisschen

Dominik

weniger Kosten, auch

Dominik

ökologisch.

Dominik

Ja.

Jochen

Aber ich finde das

Jochen

als Grundsatz zu sagen,

Jochen

ich schaue mal, ob ich

Jochen

jetzt nicht vielleicht irgendwie,

Jochen

welche Daten ich wirklich brauche und welche halt nicht.

Jochen

Und die, die ich nicht brauche, die speichere

Jochen

ich gar nicht erst. Das finde ich eigentlich schon

Jochen

recht sinnvoll.

Jochen

Ja.

Jochen

Ja.

Dominik

Was eigentlich für so ein ORM-Ding

Dominik

sprechen wir mit Klaren, definierten Modellen

Dominik

mit einer Klarenvalidierung?

Jochen

Zu dieser grundsätzlichen Frage,

Jochen

Datenbank ja oder nein, aus meiner Perspektive

Jochen

ist das jetzt eher,

Jochen

würde ich ja sagen, ja gut, das Dateisystem ist ja auch

Jochen

eine Datenbank. Ja. Es ist halt nur

Jochen

eine andere Art von Datenbank. Es ist halt eine

Jochen

hierarchische Datenbank, keine relationale.

Dominik

Die Buskette steht ja auch in Falsch irgendwo rum.

Dominik

Ja, genau.

Jochen

Insofern

Jochen

ist halt auch da

Jochen

die Frage, und es ist ja auch, wenn man

Jochen

eine Web-Anwendung hat, die sind die,

Jochen

jetzt wenn man ein Django hat oder so,

Jochen

oder was auch immer,

Jochen

für eine Standard-Web-Anwendung,

Jochen

dann üblicherweise hat man ja auch da nicht nur

Jochen

Daten in Tabellen, sondern

Jochen

da hat man ja auch noch was anderes.

Jochen

Da hat man inzwischen eigentlich nicht mehr

Jochen

wirklich Filesystem. Früher war es dann Filesystem noch,

Jochen

aber inzwischen ist es halt ein Object-Store meistens.

Jochen

Irgendwas Cache-Redis oder?

Jochen

Cache, gut, aber das ist jetzt nicht unbedingt Teil

Jochen

der Datenhaltung. Da liegt ja auch nur

Jochen

eine Kopie von dem, was man...

Dominik

Du musst ja Redis jetzt auch nicht nur als Cache nehmen,

Dominik

sondern kannst halt auch da bestimmte Sachen vorberechnen,

Dominik

da ablegen, wenn das irgendwie...

Dominik

Gut, das ist nochmal eine andere...

Jochen

Redis ist halt so ein Key-Value-Store

Jochen

im weitesten Sinne.

Jochen

Aber dafür gibt es natürlich auch wieder

Jochen

Anwendungsfälle, wo das gut ist,

Jochen

aber also diese Kombination

Jochen

Relationale Datenbank auf der einen Seite, auf der anderen Seite

Jochen

Object Storage für halt

Jochen

irgendwie Daten, die jetzt

Jochen

irgendwie eine interne Struktur vielleicht haben, aber

Jochen

die jetzt nicht irgendwie

Jochen

das ist eigentlich schon eine super Kombination.

Jochen

Aber ja,

Jochen

ich meine gut, Filesystem hat natürlich auch Vorteile.

Jochen

Was würdest du denn mit dem Object Storage nehmen?

Jochen

Also das habe ich

Jochen

leider nochmal, was ich mir gerne angucken würde und

Jochen

wovon ich jetzt schon Gutes gehört habe,

Jochen

im Zuge von

Jochen

Mastodon hat ja dieses Problem auch. Also Leute

Jochen

wollen ihre eigenen Instanzen

Jochen

hosten und haben dann jetzt auch das Problem,

Jochen

dass da ganz viele Bilder und Videos und so Zeugs

Jochen

kommen, die sie irgendwo hinlegen müssen.

Jochen

Und wenn man das halt nach, ich habe jetzt

Jochen

letztens irgendwie,

Jochen

wann war das?

Jochen

Bis gestern Morgen oder so, keine Ahnung, war

Jochen

auch

Jochen

Python Podcast, die war weg.

Jochen

Hä, warum das denn? Naja, gut, Platte vollgelaufen.

Jochen

Und warum? Ja, weil da

Jochen

eine Mast oder eine Instanz auf dem

Jochen

gleichen Rechner läuft, die halt irgendwie alles vollgemüllt hat.

Jochen

genau, dann

Jochen

die Standardlösung, oder das erste ist dann halt,

Jochen

Leute legen das dann nach S3 oder so

Jochen

und stellen dann fest, oh mein Gott, das ist ja voll teuer.

Jochen

Ja, das ist...

Jochen

Und ja, ich hab jetzt,

Jochen

ich weiß nicht, vor den letzten Monaten, und ich hab ja eine super

Jochen

kleine Instanz, aber ich hab trotzdem die letzten

Jochen

drei, vier Monate hat das Ding irgendwie

Jochen

60 GB Daten

Jochen

oder so angesammelt, an

Jochen

Zeugs. Und

Jochen

gut, bei größeren Instanzen wird das noch viel, viel

Jochen

mehr sein und dann wird das halt irgendwann teuer, wenn man

Jochen

das halt alles nach S3 legt.

Jochen

Und dann ist die Frage, okay, kann man das

Jochen

irgendwie selber machen? Ja, kann man. Was ich

Jochen

dafür schon verwendet habe, ist so

Jochen

Minio.

Jochen

Ja, das ist aber

Jochen

so...

Jochen

Das Problem dabei ist,

Jochen

das ist quasi

Jochen

so ein Bucket-Lokal.

Dominik

Gleicher API, gleiches Interface wie S3.

Dominik

Gleicher API wie S3,

Jochen

aber du kannst halt selber hosten.

Jochen

Das ist eigentlich ganz nett.

Jochen

Auch GPL, ich glaube auch.

Jochen

Ja, das kann man durchaus verwenden,

Jochen

auch im kommerziellen Kontext geht das.

Jochen

Aber es gibt da eine Firma hinter,

Jochen

die ist jetzt auch im Silicon Valley,

Jochen

das ist alles irgendwo geschrieben

Jochen

und da arbeiten viele Leute,

Jochen

die haben wirklich viel, viel Venture-Capital eingesammelt

Jochen

und das müssen sie halt irgendwie auch wieder rausholen.

Jochen

Das heißt, irgendwann werden sie irgendwie versuchen,

Jochen

Methoden zu finden,

Jochen

wie sie einem dafür irgendwie

Jochen

einen dafür bezahlen lassen können,

Jochen

was ja auch irgendwie legitim ist,

Jochen

aber das ist halt so ein bisschen...

Jochen

Und was halt der große Nachteil von Minio ist,

Jochen

dass du da nicht dynamisch irgendwie Dinge hinzustellen

Jochen

und wegnehmen kannst,

Jochen

sondern das ist halt schon eher so auf den Betrieb ausgelegt.

Jochen

Du weißt schon, wie viel Platz du hast

Jochen

und das ist alles fertig.

Dominik

Wieso kannst du da nicht dynamisch was...

Jochen

Du kannst halt nicht einfach eine Maschine dazustellen

Jochen

und sagen, so, hier eine Maschine mehr.

Jochen

Doch, du kannst auch so einen Cluster,

Dominik

dann kannst du irgendwie die in so eine Liste eintragen.

Jochen

Das ist dann etwas, wo dann die Leute

Jochen

draufgestoßen sind, die dann Minio verwendet

Martin

haben. Das ist ja der große Vorteil

Martin

von AWS und

Martin

der Lambda-Geschichte, dass du das halt

Martin

einfach hochskalieren kannst mit einem Klick.

Jochen

Ja, genau. Also wenn du,

Jochen

aber Minio ist eher so für jemand,

Jochen

der sowas wie S3 betreiben möchte

Jochen

und dann halt schon,

Jochen

wo du halt schon ein Datastart hast und wo das alles,

Jochen

aber wenn du jetzt dynamisch

Jochen

irgendwie, du sagst, oh, ich brauche jetzt aber nochmal ein paar

Jochen

Terabyte mehr Datenspeicher,

Jochen

dann ist Minio flasht.

Dominik

Du kannst dein Minio-Cluster, kannst du Sachen auf jeden Fall hinzufügen.

Dominik

Das heißt, wenn du dir irgendwie

Dominik

dynamisch Kisten spawnst, auf denen

Dominik

du Minio aufsetzt und die dann

Dominik

kannst du einfach deinem Cluster hinzufügen. Also theoretisch geht das

Jochen

halt schon. Ja, also jedenfalls

Jochen

ich beziehe mich da jetzt auf die ganzen

Jochen

Performance-Tuning und so Dinge, Artikel,

Jochen

die Leuten dann aufgefallen sind, die

Jochen

größere Mastodon-Inzidenzen betreiben, die meinen so

Jochen

Arschhit, das geht nicht, mit Minio geht nicht

Jochen

gut, weil du kannst es nicht dynamisch

Jochen

kannst du Sachen hinzufügen oder wegnehmen, geht nicht gut.

Jochen

und die sind dann alle umgestiegen

Jochen

auf etwas, das nennt sich Seaweed FS.

Jochen

Okay. Und da geht

Jochen

das wohl. Das habe ich aber selber noch nicht

Jochen

ausprobiert, also keine Ahnung. Seaweed.

Jochen

Ja.

Jochen

Ja.

Jochen

Genau, das sind halt so die Dinge,

Dominik

die man macht. Wieder auf die Enable-To-Do-Liste.

Dominik

Ja.

Jochen

Naja, genau. Aber ja, also

Jochen

die Kombination ist eigentlich schon gut, aber ja klar, ich sehe auch,

Jochen

dass man, wenn man ein Fallsystem hat, ist auch nicht

Jochen

so schlecht, ja. Also wenn man da tatsächlich reingucken

Jochen

kann und so.

Jochen

Ja,

Jochen

es kommt immer auf den Anwendungsfall an,

Jochen

was jetzt da mehr Sinn macht.

Jochen

Ja,

Jochen

aber ich meine, sozusagen

Jochen

aus der Datenbankperspektive, du musst dich ja jetzt dann

Jochen

auch tatsächlich um solche Sachen kümmern, wie Backup

Jochen

und was

Jochen

passiert eigentlich,

Jochen

wenn irgendwas weg ist, wie kommt das wieder zurück

Jochen

und diese ganzen Prozesse,

Jochen

wo du ja, ich meine, klar, bei Datenbanken ist es halt

Jochen

vielleicht komplizierter, aber da gibt es ja schon

Jochen

dann fertige Lösungen für, das musst du dann ja selber bauen.

Jochen

eigentlich? Naja,

Martin

eigentlich nicht. Also wie kommt

Martin

das zurück, war ja deine Frage. Naja, mit

Martin

Ansible und dem Backup.

Martin

Und

Martin

ja, Backups

Martin

mache ich mit Borg.

Martin

Habe noch nichts besseres gefunden.

Dominik

Restic ist gut. Kennst du Restic?

Martin

Restic habe ich gelesen.

Martin

Brauche ich da aber eigentlich nicht.

Martin

Also habe noch

Martin

keinen Anwendungsfall, wo ich jetzt

Martin

oberhalb von Borg noch was brauchen würde.

Martin

Was kann RESTIC noch zusätzlich?

Dominik

Du kannst halt auch direkt auf ein Bucket

Dominik

backupen zum Beispiel oder so.

Dominik

Achso.

Dominik

Also oder auch irgendwo, wo halt einer läuft,

Martin

also relativ gut ist. Okay, ja, das mache ich sowieso.

Martin

Aber gut, das mache ich dann händisch.

Martin

Also nicht händisch, sondern automatisch.

Martin

Also ich habe es programmiert, sodass es jetzt automatisch läuft.

Martin

Sozusagen.

Martin

Ja.

Jochen

Ja, aber, ja, also ich meine, klar, das ist schon eine prächtigte, also muss man sich eigentlich schon überlegen, es ist ja meistens so, dass relationale 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.

Jochen

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 an dem halt irgendwie Repository-Pattern oder so und dann habe ich sowieso in meiner Applikation oder in meiner Kernlogik irgendwie nur mit Objekten zu tun und wie die jetzt letztlich gespeichert werden, ob die in einem Filesystem landen, in JSON oder Tommel oder der Datenbank, das ist letztlich egal.

Jochen

da kümmert sich irgendwie ein anderer Teil drum und

Jochen

das ist gar nicht im Kern meiner Applikation

Jochen

drin. Naja, der Vorteil

Martin

der Datenbank, das sehe ich in erster

Martin

Linie in den Aggregationsfunktionen,

Martin

die das halt mitbringt.

Martin

Aber das mache ich halt woanders

Martin

dann.

Jochen

Ja, also ich meine, du könntest halt,

Jochen

also ich meine, was du in NumPy halt nicht hast, wenn

Jochen

du jetzt so große Datenmengen hast, dass

Jochen

die gar nicht so wirklich in deinen Hauptspeicher passen

Martin

oder so. Wenn die nicht in den Speicher passen, richtig. Aber auch da

Martin

gibt es Lösungen tatsächlich.

Martin

Da gibt es Abstraktionen

Martin

von NumPy, die das quasi

Martin

so chunk-mäßig

Martin

dann bearbeiten. Also das geht tatsächlich auch.

Martin

Ach cool. Wenn man das will.

Jochen

Ja, oder überhaupt so Indizes

Jochen

und so hast du wahrscheinlich dann eher nicht.

Jochen

Nee, brauche ich nicht.

Martin

Glücklicherweise. Dann können auch keine

Martin

Indizes kollidieren, wenn ich zwei dicke

Martin

Datensätze zusammenfüge.

Martin

Ja, insofern

Jochen

auf jeden Fall finde ich

Jochen

sehr interessant, weil viele

Jochen

irgendwie eher unkonventionelle

Jochen

Ansätze oder so, aber

Jochen

ja,

Jochen

auf jeden Fall sehr interessant.

Jochen

Und für den Anwendungsfall

Jochen

macht das wahrscheinlich durchaus

Jochen

alles Sinn.

Martin

Hat natürlich alles Vor- und Nachteile, aber gut,

Martin

da muss man sich halt dann informieren

Martin

vorher.

Jochen

Ja, ich weiß nicht, hast du

Jochen

noch irgendein Thema, Martin,

Jochen

was du

Jochen

wo wir jetzt noch nicht drüber gesprochen

Jochen

hatten, oder

Jochen

sind wir quasi durch?

Jochen

Nö, aktuell

Martin

würde ich sagen, haben wir relativ

Martin

breit alles erschlagen.

Martin

Gut, dann machen wir noch Pics.

Martin

Wer möchte anfangen?

Martin

Okay, dann fange ich mal an.

Martin

Moment.

Jochen

Pics.

Jochen

Ich würde gerne

Jochen

auch eine

Jochen

kleine, feine Anwendungen

Jochen

picken,

Jochen

die jetzt, also auch wieder natürlich

Jochen

nicht für so wahnsinnig viele Leute interessant ist,

Jochen

gibt es auf iOS und auf dem

Jochen

Mac, und zwar

Jochen

heißt die

Jochen

Paprika.

Jochen

Und das ist so eine Rezeptverwaltung.

Jochen

Ich weiß nicht, wenn man halt

Jochen

gerne kocht und viele Rezepte hat und so,

Jochen

dann überlegt man sich ja häufig,

Jochen

wo man die dann irgendwie zentral

Jochen

lagert oder keine Ahnung, was man damit...

Jochen

Obsidian. Ja, Obsidian.

Jochen

Ja, gut, aber das dann halt,

Jochen

das ist halt sehr

Jochen

puristisch irgendwie.

Jochen

Kannst ja

Dominik

direkt Static Pages, das

Dominik

Rezepte eignet sich dafür sehr gut, rinnern lassen, deinen Bock.

Dominik

Ja, aber

Jochen

klar, kann man

Jochen

machen, ist halt aber

Jochen

nicht unbedingt auf den Rezeptanwendungsfall

Jochen

irgendwie so wahnsinnig gut

Jochen

zugeschnitten.

Jochen

Und das Ding kann halt so Sachen wie

Jochen

wie zum Beispiel, das hat einen eingebauten Browser

Jochen

und dann, wenn man irgendwo im Web ist

Jochen

und sieht halt irgendwo ein Rezept oder so,

Jochen

dann kann man sagen, okay, speichere mir das mal

Jochen

und dann kann man halt die unterschiedlichen Teile,

Jochen

also man hat sozusagen ein Schema,

Jochen

in dem die Rezepte irgendwie gespeichert werden

Jochen

und dann kann man halt in dem eingebauten Browser

Jochen

kann man dann halt so Rechtecke ziehen und sagen,

Jochen

so, das hier sind die Zutaten

Jochen

und dann zieht man da einfach ein Rechteck drüber

Jochen

und sagt so, da waren die Zutaten

Jochen

und dann macht es halt flupp

Jochen

und dann sind die Zutaten halt in einem ordentlichen Format drin.

Jochen

Oder hier, das ist das Bild, wo man wirklich sehen kann,

Jochen

was da drauf, also weil, woher

Jochen

soll, will man sonst

Jochen

wissen, also oft auf Webseiten gibt es halt viele Bilder,

Jochen

wo ist denn, welches Bild ist denn jetzt so das, auf dem

Jochen

es wirklich zu sehen ist, was da gekocht

Jochen

wurde und dann klickt man halt auf das Richtige

Jochen

und dann hat man hinterher, also

Jochen

mit relativ wenig, also hat sich jemand wirklich Mühe

Jochen

gegeben, dass man mit relativ wenig Aufwand

Jochen

und irgendwie auf so einer Seite rumklicken

Jochen

quasi ein Rezept in eine sehr

Jochen

strukturierte Form bringen kann, wo man dann nachher so

Jochen

Abfragen machen kann, wie, gib mir doch mal alles,

Jochen

wo irgendwie Zucchini vorkommt

Jochen

und irgendwie keine Ahnung, weiß ich nicht,

Jochen

und ein Dessert ist oder so und das kommt zu dir dann.

Jochen

Was mit dem Obsidian-Ansatz

Jochen

natürlich ist dann halt schwieriger.

Jochen

Ja, genau. Und das synchronisiert

Jochen

halt auch, man kann auch direkt sagen, wenn man ein Rezept hat,

Jochen

okay, machen wir mal eine Einkaufsliste draus

Jochen

und so und

Jochen

ja, dann hat das

Jochen

dann halt auf dem Telefon beziehungsweise

Jochen

auf der Uhr, wenn man durch den Supermarkt

Jochen

läuft, dann kann man die Sachen

Jochen

wegklicken.

Jochen

Also, sehr angenehmes Ding.

Jochen

Ich bin deswegen drauf gekommen, weil

Jochen

ich habe halt so eine

Jochen

Webseite Captain Cook

Jochen

irgendwie.

Jochen

Da gibt es immer ganz interessante Vorschläge,

Jochen

was Rezepte angeht, so drei pro Tag.

Jochen

Und ich hatte früher auch

Jochen

eine Kombination aus Paltenbeckend und

Jochen

Vue.js Melee verwendet.

Jochen

Früher,

Jochen

also vor drei Wochen?

Jochen

Vor einem Jahr ungefähr, habe ich damit mal angefangen.

Jochen

Weil das auch ganz interessant aussah.

Jochen

Aber ehrlich gesagt,

Jochen

das zu deployen ist schon ganz schön ein Horror.

Jochen

Ja, ich mag Melee nicht so gut.

Jochen

Ja, aber und dann habe ich irgendwie ein Ding gebaut, was mir sozusagen die Rezeptgeschichten, die es da bei dieser App gibt, in dieser Captain Cook App, halt rüber sinkt 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.

Jochen

genau. Und da hat jemand dann ein Pull-Request

Jochen

gegengestellt und hat gesagt,

Jochen

hier, soll das nicht auch vielleicht mal nach

Jochen

Paprika sinken und so? Ich so, Paprika kenne ich gar nicht.

Jochen

Da bin ich auch aufmerksam geworden und

Jochen

ja, voll super, jetzt sinkt das halt auch dahin und jetzt

Jochen

verwende ich Paprika und bin sehr zufrieden.

Dominik

Also was echt cool klingt,

Dominik

ist halt mit den Bildern und den Zutaten, weil

Dominik

ich mache das halt immer alles selber, aber gut.

Dominik

Ja.

Dominik

Ja, okay.

Dominik

Cool. Ich würde

Dominik

Copilot Labs picken.

Dominik

Also Copilot, haben wir ja schon ein paar Mal

Dominik

drüber gesprochen, wunderschöne Extension

Dominik

für den Editor deiner Wahl,

Dominik

zum Bessermachen.

Dominik

Copilot Labs, ich weiß nicht, ob es auch für andere

Dominik

IDEs geht, als VS Code, aber

Dominik

damit kannst du halt so Sachen machen, wie

Dominik

markier dir irgendwie ein paar Funktionen,

Dominik

mach doch mal bitte Type-Ins dran, oder

Dominik

ein paar Tests hätte ich hier gerne und so.

Dominik

Und das funktioniert ganz gut, das ist

Dominik

ganz nett. Oder übersetzt

Dominik

das mal in eine andere Sprache, also hier habe ich

Dominik

einen Python-Code, hier kann ich go, oder andersrum,

Dominik

Oder, ja, das...

Jochen

Okay, hab ich auch noch nicht. Ich verwende immer nur

Jochen

den Standard-Copilot, ja. Ja, und das würde ich sagen,

Dominik

das ist eine sehr, sehr geile Extension noch

Dominik

dazu.

Martin

Was ich beim Copilot gelesen habe,

Martin

ist das folgende, wenn da ein Fehler

Martin

auftritt, also angenommen, man nutzt

Martin

halt Copilot in VS Code oder so,

Martin

dann schickt der einmal

Martin

komplett alle geöffneten

Martin

Files zu Microsoft drüber.

Martin

Und da bin ich

Martin

ein bisschen stutzig geworden.

Martin

Ob das denn so geht.

Dominik

Ja, und Teams-Chat und so und alles, was so im Memory hängt noch irgendwie an.

Martin

Ja, das weiß ich nicht, aber ich habe halt gelesen,

Martin

alle geöffneten Files im VS Code schickt er dann rüber.

Martin

Und das geht ja dann nicht.

Martin

Also wenn da zum Beispiel irgendeine Firma sitzt, glaube ich kaum,

Martin

dass die Company-Richtlinien das dann erlauben.

Jochen

Ja, ich meine, das ist natürlich schon ein Problem.

Dominik

Es gibt ja den berühmten Spruch, da würde ich jetzt

Dominik

sagen an der Stelle, better ask for forgiveness

Dominik

than for permission.

Dominik

Ja.

Dominik

Es kommt ja vielleicht darauf an,

Dominik

ob du jetzt tatsächlich patentrelevante Dinge

Dominik

machst oder nicht.

Dominik

Also,

Jochen

ich meine, auch OpenAI hat da ja

Jochen

diverse Probleme, die sind ja

Jochen

irgendwie, wie heißt das,

Jochen

Italien ist komplett gesperrt

Jochen

worden.

Jochen

Jetzt ist es wieder frei.

Jochen

Jetzt ist es wieder frei, aber

Jochen

weil sie haben, aber das fand ich schon

Jochen

auch ein bisschen dreist von Open Air, dass sie da halt wirklich

Jochen

gar nichts zu sagen, ich meine sie können ja

Jochen

da, man kann ja, wenn man das sagt, was man da tut

Jochen

mit den Taten, das kann man ja durchaus einiges machen, aber

Jochen

sie haben halt einfach gar nichts dazu gesagt und das ist halt schon

Martin

Wobei das ist ein bisschen andersrum

Martin

also die haben ja quasi

Dominik

Du musst die Story jetzt auch fertig erzählen, man konnte die Story gar nicht verstehen, Entschuldigung

Dominik

Welche Story?

Dominik

Was sie da einfach gesperrt haben in Italien, ich dachte Italien hat

Dominik

sich überlegt, dass sie da keinen Bock drauf haben

Jochen

Nee, nee, nee, das ist eine europäische Geschichte

Jochen

das hätte auch dann, das droht da auch

Jochen

dann in anderen europäischen Ländern zu

Jochen

passieren, weil du musst halt, wenn du irgendwie Daten

Jochen

von Leuten speicherst oder damit irgendwas machst,

Jochen

musst du halt zumindest sagen, was du da tust

Jochen

und warum. Und das haben sie

Jochen

nicht gemacht. Und daher kann man sagen,

Jochen

okay,

Jochen

darfst du deine Produkte in der EU nicht anbieten

Jochen

und Italien hat das so ausgelegt, das kann jedes Land

Jochen

dann so auslegen, wie sie das möchten,

Jochen

dass kann das da

Jochen

niemand mehr darauf zugreifen. Ja gut, aber Artikel

Dominik

6.1 FDSGVO

Dominik

zum Beispiel sagt, dass ein Anbieter

Dominik

eines Dienstes alle für den

Dominik

Vertragserfüllung relevanten Daten durchaus erheben darf.

Jochen

Ja, ja, ja, klar. Aber du

Jochen

musst trotzdem sagen, was

Jochen

du da irgendwie machst und warum.

Jochen

Du darfst das schon, aber

Jochen

sie haben ja nicht mal was dazu gesagt.

Jochen

Und das machen sie jetzt und dann geht's wieder.

Jochen

Also insofern. Aber ja,

Jochen

ich meine, na, so.

Jochen

Nee, ist halt...

Martin

Wobei da ist es ein bisschen andersrum. Also da nimmt sich ja

Martin

OpenAI quasi den

Martin

Datensatz Internet

Martin

und lernt da drauf. Und

Martin

falls sie damit was machen, was sie

Martin

nicht dürfen, haben die ja das Problem. Bei

Martin

Copilot ist es ja so ein bisschen andersrum.

Martin

Da ist ja der Anwender quasi dafür

Martin

verantwortlich. Also wenn der Anwender

Martin

in der Firma sitzt und lädt jetzt Teile

Martin

des Quellcodes der Firma irgendwo

Martin

hoch, darf glaube ich

Martin

der geneigte Mitarbeiter

Martin

eigentlich auch nicht.

Dominik

Naja, ich sag mal so, wenn du über GitHub bist, ist das eh wurscht.

Jochen

Ja, wenn deine Code da eh liegt, ja, klar.

Jochen

Aber ich meine,

Jochen

auch was Leute halt so bei

Jochen

ChatGPT oder so reinpesten. Also ehrlich

Jochen

gesagt, ich paste da ja auch viel Code rein.

Jochen

Das ist

Jochen

halt auch ein Anwendungsfall

Jochen

und da ist wahrscheinlich auch viel

Jochen

dabei, wo man als Firma ein Problem

Jochen

mit hätte, wenn Leute das halt machen.

Jochen

Aber ja.

Dominik

Ja, aber als Firma, ganz ehrlich,

Dominik

gerade als Firma ist doch wohl

Dominik

ein berechtigtes Interesse daran,

Dominik

Produktivität und Effektivität

Dominik

zu haben und die ganzen Secrets,

Dominik

die irgendjemand damit preisgeben könnte,

Dominik

die Maschine dahinter,

Dominik

die fängt jetzt ja nicht an,

Dominik

individuell nach dir zu suchen und deine Sequels

Dominik

rauszupaldovern, um

Dominik

da selber einen Profit zu machen. Also gerade aus,

Dominik

also auch als Firma würde ich das sagen.

Dominik

Das ist aber viele Könnte, Sollte dabei.

Dominik

Ich weiß jetzt nicht, ob ich meine wirklich

Dominik

patentierbaren Sachen da irgendwie

Dominik

optimieren lassen würde, aber ansonsten

Dominik

würde ich jetzt sagen, hm. Und es gibt halt auch

Dominik

zum Beispiel, wenn man das nicht möchte, als

Dominik

Firma, ja durchaus, Auftragsdatenverarbeitungs

Dominik

Dinge, wenn man jetzt mit dem

Dominik

Microsoft Professional Vertrieb spricht,

Dominik

wo man dann APIs bekommt, wo

Dominik

die Daten halt nicht zurückgeflossen werden,

Dominik

sollen und so weiter. Das heißt, dann meint man

Dominik

halt sowas, dann hat man halt einen anderen API-Endpunkt

Dominik

mit einem anderen API-Key, basta.

Dominik

Ja, genau. Also ich weiß von

Martin

einer Firma, da ist in den Firmenrichtlinien

Martin

Copilot direkt verboten worden.

Dominik

Ja, das stellen sich auch immer alle ziemlich viel an.

Dominik

Also ich

Jochen

fand den Punkt auch, ich weiß gar nicht,

Jochen

wer das gesagt hatte, ich glaube

Jochen

Manuel, das hast du in der letzten Episode gesagt,

Jochen

bei Firmen ist ja sowieso an einer gewissen Größe

Jochen

so effizient kannst du da gar nicht mehr sein.

Jochen

Ja, aber jeder Angst hat dann, dass

Dominik

dass du jedes einzelne Software-Paket

Dominik

irgendwie verifizieren musst von irgendeinem

Dominik

Audit-Team, was meinst du, kannst du besser als die

Dominik

Umsatz-Community und so, und dann sitzen da

Dominik

zwei Männchen und machen dann ein Audit von

Dominik

150.000 Datapaketen oder sowas,

Dominik

Entschuldigung.

Jochen

Muss ja nicht alles sinnvoll sein, aber

Jochen

das...

Dominik

Worüber reden wir, ist das eine ABM oder was?

Dominik

Also ganz ehrlich, die Kosten und den Nutzen vom Business

Dominik

würde ich jetzt sagen, auch von

Dominik

von einem anderen Flight-Level

Dominik

würde ich sagen, ist das

Dominik

vernachlässigbar.

Martin

Naja, muss halt die Firma dann am Ende entscheiden.

Martin

Ja, genau.

Jochen

Eher nicht der Mitarbeiter.

Dominik

Aber das ist die Frage, ob sich jemand in der Firma damit auskennt,

Dominik

um diese Entscheidungsgrundlage zu haben, um das zu verstehen.

Jochen

Oft genug wahrscheinlich nicht, aber ja.

Jochen

Das ist halt ein Trade-off.

Jochen

Ja, genau.

Jochen

Ja, okay, aber Copilot Labs,

Jochen

okay, interessant.

Dominik

Ja, jetzt haben wir,

Dominik

du hast noch einen Pick auch, Martin?

Martin

Ja, ihr hattet ja

Martin

eine Episode mal gemacht zu PyPy.

Martin

Ziemlich cooles Tool

Martin

übrigens und ich habe noch so eine Ergänzung dazu quasi, das nennt sich Numba. Das ist von den Entwicklern von Anaconda. Anaconda, das ist die quasi Python-Distribution und das finde ich auch richtig genial.

Martin

Mein großer Wunsch

Martin

war, ich schreibe, oder mein großer Traum

Martin

war, ich schreibe Python-Code, dann drücke

Martin

ich einen Knopf und der übersetzt mir das nach C.

Martin

Aha. Und im

Martin

Prinzip macht es das

Martin

eigentlich

Martin

fast ohne Code-Anpassung.

Martin

Also alles, was ich

Martin

da machen muss, ist

Martin

ich mache einen Decorator

Martin

über meine Funktion drüber

Martin

und muss ein bisschen

Martin

aufpassen mit den Eingaben, also

Martin

über die Funktion drüber, muss ein bisschen

Martin

aufpassen mit den Eingabe- und Ausgabedatentypen

Martin

und dann ist es das.

Martin

Dann erzeugt er

Martin

mir quasi zur Laufzeit

Martin

C-Code, cached die und

Martin

führt die quasi mit C-Geschwindigkeit

Martin

aus die Funktion. Finde ich, habe ich probiert,

Martin

funktioniert genial.

Martin

Ja,

Jochen

wo würdest du, hast du auch schon mal

Jochen

Saiten ausprobiert?

Jochen

Weil das ist immer so das, was so standardmäßig irgendwie auch

Jochen

bei Scikit-Learn oder so verwendet wird.

Martin

Das Problem ist,

Martin

wenn das Projekt hinreichend groß wird,

Martin

dann habe ich, also ich habe ja

Martin

bei Saiten und bei PyPy

Martin

nicht so richtig die Wahl,

Martin

dass ich jetzt nur einen bestimmten

Martin

Teil meines Projektes damit ausführe.

Jochen

Doch, doch, also Saiten auf jeden Fall, also oder ich weiß nicht.

Jochen

Ach, bei Saiten gibt es das? Saiten ist einfach auch eine Art

Jochen

Python-Dialekt, wo man aber dann

Jochen

zum Beispiel, wenn man es schneller haben will,

Jochen

die Typen mit dazu schreibt.

Jochen

Ist halt ein bisschen, ist auch älter als die Typ-Annotation.

Martin

Ja, ja, ich erinnere mich, aber da musst du

Martin

einiges für tun. Also da musst du

Martin

eigentlich den ganzen Code umstellen.

Jochen

Nee, nee, nee, das kannst du für einzelne Funktionen

Jochen

auch machen oder für... Ja, aber

Martin

wenn die Funktion schon da ist, musst du sie umstellen.

Martin

Ja, das ist richtig.

Jochen

Stimmt, das musst du bei Nummer nicht unbedingt, okay, ja.

Martin

Und bei Nummer brauchst du das nicht, da kannst du das lassen.

Martin

Eigentlich wie es ist,

Martin

Klammer auf, abgesehen von den Eingabe-

Martin

und Ausgabedatentypen, die müssen

Martin

ein spezielles Format haben, aber da ist

Martin

eigentlich, also wenn du eine NumPy-Matrix zum Beispiel

Martin

hast, die kannst du mehr oder weniger so lassen.

Martin

Und dann, ja, ist es das.

Martin

Dekorator drüber, Funktion ist in C,

Martin

fertig. Und ich kann sie von Python aus genauso

Martin

rufen wie vorher. Und die ist halt einfach tausendmal

Martin

schneller.

Martin

Ja, ja, ja, ja.

Jochen

Dann war das auch super.

Jochen

Ja.

Dominik

Da wir jetzt bei dem Speed waren, hat es eben auch noch

Dominik

erwähnt, das wollte ich jetzt nochmal ans Ende packen,

Dominik

Polar-IRS. Ich glaube, das ist auch

Dominik

cool. In dem Zusammenhang, wenn wir

Dominik

schon bei Speed wieder sind.

Dominik

So als Data-Frame-Tool

Dominik

für Rust und Python irgendwie noch

Dominik

kombiniert.

Dominik

Jojo. Ja.

Martin

Genau. Ja, vielleicht

Martin

ja, ich höre immer, Python ist langsam.

Martin

Ja.

Martin

Also bis jetzt lag es immer an mir

Martin

und nicht an Python.

Martin

Ja. Und wenn es an mir

Martin

lag, dann hatte ich

Martin

auch eine Chance, das zu beheben. Also da gibt

Martin

es zum Beispiel den

Martin

Line-Profiler für

Martin

Python. Weiß nicht, ob

Martin

ihr das kennt.

Jochen

Ist das nicht der eingebaute, ne?

Jochen

Nee, ist nicht der

Martin

eingebaute. Also Line-Profiler macht im Prinzip

Martin

folgendes, das ist auch wieder ein Dekorator,

Martin

den schreibst du über deine Funktion drüber und der

Martin

annotiert dir an jede Quellcode-Zeile

Martin

wie schnell oder langsam die war.

Martin

Und dann kannst du quasi,

Martin

also üblicherweise

Martin

würde man das so verwenden, du findest

Martin

erstmal die Funktion, die langsam ist, das kannst du mit den

Martin

klassischen Tools machen.

Martin

Ja, also was man

Martin

halt üblicherweise so nimmt, da springen ja

Martin

hinten quasi die Funktionen raus, die langsam sind,

Martin

wenn man es richtig bedient.

Martin

Und dann gehst du quasi mit dem

Martin

Line-Profiler in die Funktion rein und

Martin

schaust dir an, was genau ist denn da langsam.

Martin

Und so kommt man echt

Martin

richtig schnell

Martin

zu einer Performance-Analyse.

Dominik

Man kann das dann beheben

Dominik

oder dann irgendwie auch doch ein C oder ein Mid-Number-Deprogrammter

Jochen

versehen und so. Hast du irgendeinen Lieblingsprofiler

Jochen

so für die globale Sicht?

Jochen

Ich habe in letzter Zeit häufiger mal das Galin verwendet,

Jochen

aber

Jochen

Nö, da nehme ich den

Jochen

Python-Standard. C-Profile.

Jochen

Genau.

Martin

Funktioniert, ist nicht schön, bedienbar,

Martin

aber funktioniert.

Martin

So oft braucht man es ja auch zum Glück auch nicht.

Martin

Also ich bin auch kein Freund von Pre-Major Optimization.

Martin

Also ich optimiere dann, wenn ich wirklich feststelle, es ist langsam.

Martin

Und für meinen Geschmack ist Python oft nicht langsam.

Martin

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.

Jochen

Klingt gut. Das verlinke ich

Jochen

vielleicht auch nochmal. Letztens

Jochen

einen ganz interessanten Artikel gelesen

Jochen

zum Thema

Jochen

Müten, von

Jochen

Performance-Mythen. Und das ist halt ein

Jochen

jetzt habe ich den Namen nicht parat,

Jochen

ein Spieleentwickler, der da halt auch schon

Jochen

seit langer Zeit, der hat auch so einen YouTube-Channel, der

Jochen

irgendwie relativ beliebt ist.

Jochen

Und

Jochen

der hat

Jochen

dann so einen Artikel geschrieben, wo er

Jochen

irgendwie so darüber renntet, was halt

Jochen

aus seiner Sicht die Leute immer sagen über Performance,

Jochen

was alles nicht stimmt. Und da

Jochen

sind so ein paar interessante Sachen dabei, wo ich

Jochen

dachte so, oh, das höre ich sehr oft, solche Sachen

Jochen

und das ist wahrscheinlich Quatsch. Also wo er zum Beispiel

Jochen

sowas schreibt wie, naja, die Leute sagen immer,

Jochen

man muss eigentlich nur die Hotspots

Jochen

irgendwie optimieren. Also du machst

Jochen

halt erstmal keine Performance-Geschichten,

Jochen

entwickelst ohne Performance

Jochen

im Hinterkopf zu haben,

Jochen

eben keine premature optimization

Jochen

dein Code

Jochen

und dann, wenn es langsam ist, dann guckst du halt, wo es langsam

Jochen

ist und dann optimierst du das weg und dann meint er so, ja,

Jochen

also das funktioniert ja auch manchmal, aber

Jochen

manchmal halt auch nicht. Und gerade wenn du jetzt wirklich

Jochen

performance-kritische Sachen machst, dann kann es gut

Jochen

sein, dass dieser Ansatz überhaupt nicht

Jochen

funktioniert, weil du

Jochen

halt sozusagen

Jochen

dann rauskriegst, wenn du anguckst,

Jochen

was sind die Teile deines Codes,

Jochen

die langsam sind. Naja, dann ist da halt irgendwie

Jochen

Memcpy oder keine Ahnung, da wird halt Hauptspeicher

Jochen

durch den Prozessor geschoben. Das ist was, das willst du

Jochen

da optimieren. Das ist halt, da kannst du nichts mehr machen.

Jochen

Und da musst du eigentlich wieder ans Design

Jochen

deiner Applikation. Ja, umstrukturieren.

Martin

Aber wenn ich von vornherein weiß, dass

Martin

dass das performancekritisch ist, dann schreibe

Martin

ich ganz anderen Code. Dann ist der Code

Martin

komplett anders eigentlich.

Martin

Ja, also da kannst du vergessen,

Martin

da musst du komplett das Design ändern.

Jochen

Genau, und er meinte dann halt auch,

Jochen

dann kann es sein... Wie meintest du, John Carmack?

Jochen

Nee, nee, der hat irgendwie so einen

Jochen

italienisch klingenden Namen. Ich hab's

Jochen

nicht mehr ganz... Okay, I don't know.

Jochen

Ja, der...

Jochen

Genau, es hängt halt davon ab,

Jochen

ob man performancekritisch einen Kram macht oder nicht.

Jochen

Wenn man es nicht macht, dann muss man das nicht machen. Aber wenn man

Jochen

das hat und hat aber auf die

Jochen

falsche Art entwickelt und glaubt dann mit

Jochen

irgendwie Hotspots zu optimieren, da rauszukommen

Jochen

zu können, dann meint er, so hat er

Jochen

schlechte Nachrichten, das kann gut sein, dass das nicht geht und

Jochen

das, auch wenn man rausfinden

Jochen

möchte jetzt, okay, was ist denn, wie muss

Jochen

ich denn die Architektur ändern oder

Jochen

das Design, dann kann es sein, dass

Jochen

wenn das ein größeres Projekt ist, das

Jochen

wird schlimmer als ein Rewrite, der

Jochen

dann, wo man im Hinterkopf hat, dass

Jochen

das performancekritisch ist und deswegen

Jochen

wird das in der Spieleindustrie auch häufiger gemacht und es ist tatsächlich

Jochen

auch ab und zu erfolgreich. In anderen Bereichen

Jochen

sollte man das vielleicht nicht machen, also

Jochen

aber da ist das halt wohl

Jochen

ab und zu irgendwie dann halt der beste

Jochen

Weg. Und ja,

Jochen

tja, ja, das ist alles nicht so einfach.

Jochen

Das ist vielleicht dein Schlusswort.

Jochen

Ja, kann man immer sagen.

Jochen

Hängt davon ab, kommt drauf an.

Jochen

Das ist alles nicht so einfach.

Jochen

Schönen Dank, dass wir hier zugehört haben.

Jochen

Vielen Dank, Martin, dass du da warst.

Jochen

Ja, gerne, danke.

Jochen

Das war sehr interessant.

Jochen

Dann schaltet uns doch bald wieder rein.

Jochen

Hallo at peisenpodcast.de

Jochen

Bis zum nächsten Mal. Bis dann.

Jochen

Ciao.