Transcript: HTMX

· 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, Episode 38.

Dominik

Dieses Mal wollen wir etwas über HTMX sprechen.

Dominik

Hier ist der Dominik, bei mir ist wieder der Jochen.

Dominik

Ja, hallihallo, willkommen Dominik.

Dominik

Und wir haben heute einen neuen Gast, und zwar den Thomas. Hi Thomas.

Dominik

Hallo, grüß dich.

Dominik

Jo, hallihallo.

Dominik

Schön, dass du da bist.

Dominik

Ja, fangen wir wie immer an mit ein bisschen News aus der Szene.

Jochen

Ja, oder vielleicht kann sich Thomas kurz vorstellen, so ganz...

Dominik

Das wollte ich dann bei HTMX machen, aber weißt du was, du hast recht.

Jochen

Eigentlich müssten wir das am Anfang stellen und sagen, Leute, hallo, und man weiß gar nicht, wer das ist.

Jochen

Deswegen sag doch mal, Thomas, was machst du denn?

Thomas

Ja, ich mache Softwareentwicklung. Das schon eine ganze Menge Jahre. Habe vor 20 Jahren mal Informatik studiert und vorher schon auch als Kind daran Spaß gehabt. Und ja, mache hauptsächlich eben Webentwicklung mit Python und Django, PostgreSQL und eben seit neuestem auch mit HTMLX. Und ja, hier, Jochen hat mich mal angesprochen, wollen wir nicht einen Podcast machen? Dachte ich, ja, schön, bin ich dabei. Und ja, jetzt bin ich hier.

Thomas

Ja, sehr schön. Ja, sehr cool.

Thomas

Ja, okay. Dann gehen wir noch

Thomas

zu den News über. Erstmal ein bisschen News, ja.

Jochen

Ich glaube, ich habe auch fast gar nichts

Jochen

aufgeschrieben. Oh doch, Python 3.6

Jochen

ist draußen, end of life.

Jochen

Ich glaube, es war am 23.

Jochen

Dezember oder so.

Jochen

Also Weihnachten.

Dominik

Weihnachtsgeschenk, eure Version ist duplicated.

Dominik

Ja, das heißt

Dominik

quasi die erste

Jochen

Version Python 3, wo

Jochen

viele Leute irgendwie das Gefühl

Jochen

hatten, das ist jetzt besser als Python 2.

Jochen

Ist jetzt auch End of Life.

Jochen

Das heißt, ja, also

Jochen

krass. Als ich das gesehen habe, dachte ich so, wow,

Jochen

das ist schon wieder so lange her.

Jochen

Bei 3.6 habe ich, glaube ich, angefangen.

Jochen

Das ist schon gar nicht so lange her.

Dominik

3.7 kam dann relativ fix und jetzt, ja, ging es schnell.

Dominik

Also meine News,

Dominik

ich habe noch gelesen, dass Python Programmiersprache

Dominik

des Jahres 21 geworden ist.

Dominik

Wir werden famous und beruhigt.

Dominik

Ganz wichtige News.

Jochen

Ja, es gab jetzt auch wieder eine neue Version

Jochen

von diesem TOB

Jochen

Index, wo Python

Jochen

auf Platz 1 ist.

Jochen

Allerdings muss man dazu sagen,

Jochen

vielleicht, dass das irgendwie, also

Jochen

so wahnsinnig viel kann man da nicht draus lesen.

Jochen

Ja, ist doch eigentlich relativ wurscht.

Jochen

Ja, ich habe letztens, wo habe ich das gehört?

Jochen

Ein programmierbarer Podcast war es, glaube ich.

Jochen

Dass da jemand meinte so, ja, das ist irgendeine

Jochen

niederländische Firma und das, was die machen, ist,

Jochen

sie machen irgendwie

Jochen

neben den Namen der Programmiersprache,

Jochen

machen Programming dahinter und

Jochen

googeln dann danach und dann zählen sie die

Jochen

Anzahl der Suchergebnisse. Das ist mehr oder weniger, was

Jochen

sie tun. Und das ist

Jochen

natürlich irgendwie, ja, gut, ob das jetzt so

Jochen

einem wahnsinnig viel sagt, ist halt

Jochen

unklar.

Jochen

Das habe ich von dir noch nicht gehört.

Jochen

Ja, ich höre

Jochen

immer so, was es an anderen Podcasts auch so gibt.

Dominik

Ja, deswegen, vielleicht ist das auch mal interessant, dass man

Dominik

mal kurz darüber erzählt. Ja, also

Jochen

da geht es meistens so um Frontend-Themen.

Jochen

Also es gibt erstaunlich, das ist auch so was,

Jochen

das finde ich immer ein bisschen komisch,

Jochen

dass es, es gibt einige

Jochen

Podcasts, die sich mit dem Thema Programmierung

Jochen

und so beschäftigen, aber

Jochen

fast alle eher so Frontend.

Jochen

Also es gibt zum Beispiel Webwork,

Jochen

nee, nicht Webwork, das ist ein Meetup hier in Düsseldorf.

Jochen

Working Draft

Jochen

heißt einer, auch einer

Jochen

der vielleicht der älteste

Jochen

Webentwicklungspodcast und

Jochen

sicherlich einer der bekanntesten,

Jochen

auch mit Leuten hier aus Düsseldorf

Jochen

und ja,

Jochen

das ist aber auch sehr Frontend-lastig

Jochen

und

Jochen

genau, programmierbar,

Jochen

ist relativ neu, ist halt auch

Jochen

sehr frontendlastig. Folge 116,

Jochen

die machen häufig Dinge,

Jochen

ja, aber, achso, vielleicht auch nicht so neu.

Dominik

Ja, aber gut, Moment, wenn ich hier gerade sehe,

Dominik

3. November, 2. November, 10. November, 12. November,

Dominik

17. November, 24. November,

Dominik

also ja, die Page ist relativ häufig.

Jochen

Ja, Working Draft

Jochen

hat irgendwie über 500, 531

Jochen

sind es jetzt irgendwie oder so, weil

Jochen

wir machen einmal die Woche.

Jochen

Das ist schon, ja. Ja, da brauchen

Jochen

wir noch ein bisschen.

Dominik

ja. Wie sagt jemand mit dem

Dominik

Gameboy, kann man jetzt in 50.000 Jahren

Dominik

einen Bitcoin meinen?

Dominik

Ah ja, okay. Irgendwie so,

Dominik

die Zahl ist jetzt auch noch rein aus der Luft.

Jochen

Ja, und dann gibt's, also

Jochen

was ich auch manchmal noch höre, ist sowas, also

Jochen

wenn es deutschsprachige Geschichten sind, Englischsprache

Jochen

gibt's natürlich endlos jede Menge, aber

Jochen

gibt's noch sowas wie Software-Architektur

Jochen

im Stream.

Jochen

Höre ich manchmal.

Jochen

Und

Jochen

InnoQ hat ein paar Podcasts,

Jochen

ist eine Firma und die hat auch was mit dem, also

Jochen

der Mensch, der

Jochen

Software-Architektur im Stream macht, der

Jochen

arbeitet da auch.

Jochen

Und da

Jochen

arbeitet auch jemand, also der

Jochen

Stefan Tilkoff arbeitet da auch und

Jochen

der ist auch viel

Jochen

in anderen Podcasts unterwegs, da habe ich auch

Jochen

einen Working Graph zum Beispiel.

Jochen

Mal ein sehr schöner,

Jochen

auch passend zum Thema, was wir gleich,

Jochen

worüber wir gleich reden wollen,

Jochen

da gibt es eine Episode zum Thema

Jochen

Single-Page-Apps und

Jochen

irgendwie, was ist eigentlich REST und so und die ist

Jochen

sehr empfehlenswert. Oh ja, was eigentlich

Jochen

REST ist, darüber wollen wir auch gleich sprechen. Ja,

Jochen

genau, darüber haben wir auch schon mal

Jochen

eine Episode gemacht.

Dominik

Ja, aber also so in dem,

Dominik

also so ganz kurz muss man es ja gleich wieder erwähnen, weil

Dominik

das ja so ein bisschen heute auch darum geht. Ja,

Jochen

stimmt. Dann gibt es noch

Jochen

Wo wir sind ist vorne.

Jochen

Das ist eigentlich ein sehr super, super

Jochen

produziertes Ding. Der Titel ist toll.

Jochen

Ja, der Titel ist toll und die Grafiken

Jochen

sind toll und das sieht alles toll aus und die Webseite

Jochen

das toll. Aber ja, es ist halt auch ein sehr frontendlastiger

Jochen

Ding. Die machen halt auch

Jochen

Streams und ja.

Jochen

Genau. Und ich

Jochen

meine, das sind so fast, dann gibt es noch so ein paar

Jochen

KI-Geschichten,

Jochen

die ich höre, da habe ich die Namen jetzt nicht und die

Jochen

höre ich auch sehr unregelmäßig, weil meistens gefällt mir das

Dominik

gar nicht so gut. Oh, aber das mit den BVC sind vorne

Jochen

sieht so gut aus. KI in der Industrie, glaube ich, ist eine.

Jochen

Das gefällt mir eigentlich ganz gut, da bin ich gespannt.

Jochen

Ja. Ansonsten mehr fällt mir jetzt ehrlich

Jochen

gesagt nicht ein, was es da auf Deutsch gibt.

Jochen

Ja. Fällt dir noch was ein,

Jochen

Thomas, dazu?

Thomas

Nö, meine Überlegung gerade war bloß,

Thomas

ob es im DevOps-Bereich

Thomas

über Kubernetes oder irgend sowas, also

Thomas

im deutschsprachigen Raum noch was gibt.

Thomas

Naja,

Jochen

keine Ahnung. Vielleicht gibt es das,

Jochen

aber das ist auch etwas, wo ich gar nicht nachgucken würde

Jochen

oder weil es mich gar nicht

Jochen

so sehr interessiert.

Jochen

Glaube ich, würde ich das auch gar nicht mitbekommen.

Jochen

Niko hatte, glaube ich, so ein, zwei Sachen da

Jochen

in den Techniken gemacht, aber der hat auch

Dominik

glaube ich schon ein halbes Jahr nicht mehr neue

Dominik

Folgen released. Also weiß ich nicht, ob es die noch gibt.

Dominik

von dem habe ich letztens gehört,

Jochen

da macht er irgendwie so ein Live-Webinar-Ding,

Jochen

Stream, auch eher so Richtung Stream geht das.

Jochen

Okay, okay.

Jochen

Aber ja, stimmt, der macht natürlich,

Jochen

also Tech-Tiefen, vorher hieß das irgendwie anders.

Jochen

Ja, der macht auch nicht nur Frontend-Themen,

Jochen

sondern alles Mögliche.

Jochen

Auch so ein bisschen mit Schwerpunkt auf Data Science, aber...

Jochen

Mhm, cool, ja.

Jochen

Ja, ja.

Jochen

Ja, ansonsten weiß ich nicht.

Jochen

Gab es in der Python-Welt irgendwelche Neuigkeiten,

Jochen

irgendwelche interessanten Dinge?

Jochen

Hm, sonst...

Dominik

War ja so eine Jahrespause, ne?

Jochen

Ja, der Jahreswechsel ist immer ein bisschen ruhiger.

Jochen

Ja, nö, ansonsten weiß ich da auch nichts mehr.

Jochen

Dann sind wir dieses Mal mit dem Erstaunlichen früh durch.

Jochen

Jo, und wie wir ja schon angekündigt hatten, angedroht,

Jochen

gibt es nur noch ein bisschen Werbung.

Jochen

Der Sponsor für diese Episode ist NordVPN.

Jochen

Das ist ein VPN-Anbieter.

Jochen

und da könnt ihr etwa auf notbpn.com

Jochen

slash pythonpodcast gehen

Jochen

und bekommt da 73% Rabatt

Jochen

auf ein Zwei-Jahres-Paket

Jochen

und noch einen Gratis-Monat extra.

Jochen

Und genau, wenn euch

Jochen

das nicht zusagen sollte, könnt ihr das auch

Jochen

innerhalb von 30 Tagen kündigen,

Jochen

ohne dass euch da Zusatzkosten entstehen.

Jochen

Und ja, könnt euch immer angucken.

Jochen

Ist vielleicht ganz nett. Manchmal braucht man das ja schon.

Jochen

Also ich war zum Beispiel letztens

Jochen

im Urlaub und

Jochen

wollte da die Dinge weitergucken, die ich normalerweise so gucke

Jochen

und musste dann feststellen,

Jochen

Nee, das geht nicht, weil Streaming-Dienstleister

Jochen

hat festgestellt, man ist woanders, als man normalerweise ist

Jochen

und dann geht das halt nicht mehr.

Jochen

Und da möchte man dann vielleicht doch

Jochen

eher nur so auf irgendwo

Jochen

V4N aktivieren, klicken und dann geht das halt

Jochen

einfach weiter und

Jochen

hatte ich nicht, muss ich mir überlegen,

Jochen

ob ich das nicht vielleicht mal haben möchte

Jochen

für den Fall.

Jochen

Ja, auch wenn ihr

Jochen

einen lokalen Internet-Service-Provider

Jochen

habt, der vielleicht nicht so auf der Höhe

Jochen

ist, was seine Peerings angeht, dann könnt ihr

Jochen

da euch zu einem besseren Internet-Erlebnis

Jochen

verhelfen, indem ihr einen VPN benutzt.

Jochen

Ja, genau.

Jochen

Und wenn ihr das mal ausprobieren möchtet, einfach auf

Jochen

nordvpn.com slash pythonpodcast gehen

Jochen

und ausprobieren.

Jochen

Vielen Dank an NordVPN

Jochen

für die Unterstützung.

Jochen

Und dann geht es direkt in das Thema rein.

Jochen

HTMX.

Jochen

Was ist denn das?

Jochen

Oh, das weiß ich auch nicht so genau.

Jochen

Das sind die High-Power-Tools für

Dominik

HTML, so hat es denn der Mensch

Dominik

genannt, der das erfunden hat,

Dominik

um einfach HTML so zu erweitern,

Dominik

wie es der Standard bis jetzt nicht zugelassen hat.

Dominik

Also, dass man keinen JavaScript mehr braucht,

Dominik

um coole, responsivee Sachen im Web zu bauen.

Dominik

Doch, JavaScript brauchst du schon.

Dominik

Ja, aber du musst es nicht mehr schreiben, so wirklich.

Dominik

Ja.

Thomas

Ja, es wird dann so deklarativ.

Thomas

Das ist eigentlich schon nicht schlecht.

Thomas

Es entwickelt sich ja alles,

Thomas

so ein bisschen in die Richtung spricht.

Dominik

Ja, vielleicht noch mal ganz kurz, was das so ist.

Dominik

also, worum es da geht, also

Dominik

wie machen wir denn normalerweise jetzt Frontend

Dominik

und Backend? Trennen wir das? Wie war das denn

Dominik

früher? Und

Dominik

ja, warum dann

Dominik

HTMX? Also was ist das so die Idee dahinter? Also ich glaube,

Dominik

früher war es einfach nur so, du hast

Dominik

den Server gefragt und der hat dir dann die Webseite fertig

Dominik

geschickt.

Dominik

Nein, weil ganz früher,

Dominik

ganz, ganz früher. Also das ist die Frage,

Jochen

wie früh hättest du es denn gehabt?

Jochen

Anfang der 90er oder so. Also ich würde

Jochen

ja sagen, also das Web ist ja im Grunde

Jochen

ein sehr neues Modell.

Jochen

Also insofern, das ist das Gute.

Jochen

Fangen wir gerade mit dem harten theoretischen Kram

Jochen

an. Ich frage, ob das so ein guter Einstieg ist, aber

Jochen

Ich weiß nicht.

Jochen

Naja, also Web ist ja

Jochen

eigentlich revolutionär in vielen

Jochen

Eigenschaften, die es so hat

Jochen

und halt ganz anders als irgendwie

Jochen

die Dinge, die man vorher gemacht hat. Was man vorher gemacht hat,

Jochen

ist halt so Client-Server zum Beispiel.

Jochen

Oder Remote-Procedure-Calls

Jochen

oder sowas. Solche Dinge.

Jochen

Das ist halt alles deutlich älter als das Web.

Jochen

Und Web ist halt eigentlich was anderes.

Jochen

Aber ich glaube, die Geschichte erzählen wir gleich.

Dominik

Und dann, was ist denn Web?

Dominik

Dann erzähl doch erstmal, was denn Web ist.

Jochen

Ja, naja, also Web ist halt sozusagen da, ja, wie definiert man das?

Jochen

Es gibt halt diese, das hatten wir, wie gesagt, in der Restepisode,

Jochen

diese Dissertation von Roy Fielding, der halt auch an dem Startenarzt

Jochen

da maßgeblich mitgearbeitet hat mit Tim Berners-Lee.

Jochen

Und der hat da seine Dissertation irgendwann drüber geschrieben.

Jochen

Und da definiert er, was er quasi meint, was das ist,

Jochen

so als REST, also Representational State Transfer oder so.

Jochen

Aber es ist halt die Frage, ob das so interessant ist.

Jochen

Ja, ich glaube, das hatten wir ja schon in der REST-Episode.

Jochen

Ich glaube, da müssen wir es gar nicht sagen.

Jochen

Ja, im Grunde so ganz, ganz, ganz grob ist es halt irgendwie,

Jochen

es geht darum, dass der Client im Grunde nicht mehr viel wissen muss.

Jochen

Dass man halt alles, was an Informationen man braucht,

Jochen

um halt irgendwie einen Client betreiben zu können,

Jochen

ja, sozusagen, dass das halt alles mitkommt.

Jochen

Also sozusagen, dass man halt auch mit einem alten Browser halt zum Beispiel Dinge machen kann, dass man jetzt nicht immer den neuesten Browser haben muss. Bei Client-Server war das Problem früher immer, wenn man da irgendwie was geändert hat, dann muss man immer dafür sorgen, dass auch die aktuellste Version vom Client irgendwie geschippt wird, weil ansonsten funktioniert das halt nicht mehr.

Jochen

Genau, genau.

Jochen

Und das ist mit Web, also mit REST und Web ist es eigentlich dann insofern besser, als es halt auch mit alten Browsern noch funktioniert.

Jochen

Man muss sich nicht darum kümmern, dass die Leute halt immer den aktuellsten Browser haben.

Jochen

Und es sollte eigentlich mit jedem Browser funktionieren und so.

Jochen

Und der Browser muss nicht wissen, was da kommt.

Jochen

Also wenn ich jetzt zum Beispiel, das ist halt genau eine von diesen Geschichten, die halt jetzt bei diesen ganz modernen Geschichten in Anführungsstrichen,

Jochen

also dieses Single-Page-App-mäßigen Teilen, halt wieder so ist wie ganz, ganz früher.

Dominik

Jetzt hast du wieder was gesagt, das Single-Page-App-Teil.

Dominik

Und ich glaube, das müsste so ein bisschen strukturierter sein.

Dominik

Ich glaube, wir sind ja gerade schon wieder sehr in der Historie drin.

Dominik

Ja, du hast danach gefragt.

Dominik

Ja, ja, ich habe ja gesagt, wir müssen das auf jeden Fall später auch noch mal erzählen.

Dominik

Gerade was Kleinserver und so ist.

Dominik

Aber der, glaube ich, der entscheidende Unterschied, was hat MX, das halt macht,

Dominik

diesen modernen Trend, dass man halt eine Single-Page-Application braucht,

Dominik

um Frontend schön darzustellen, ersetzen kann.

Dominik

Und zwar mit Auslieferung vom Backend, also so Server-Seiten.

Dominik

Aber vielleicht will ja Thomas das gerade genau da jetzt noch mal einsteigen.

Thomas

Also bei HTMLX, das ist sicherlich auf JavaScript basiert, anders kommt man ja in den Browser nicht wirklich rein, um dort irgendwas zu programmieren im Browser, aber Ziel der Übung ist eigentlich, dass der Endanwender, also der Entwickler dann kein JavaScript mehr schreibt oder wenig JavaScript und da wird HTML erweitert um neue Attribute,

Thomas

Sodass man es HTML klassisch verwenden kann, also wie es eben vor 20 Jahren gemacht wurde, sprich vom Server zum Client kommt HTML, gegebenenfalls auch HTML-Schnipsel oder so ähnliches und man braucht das jetzt nicht in ein JSON-Format erstmal konvertieren und dann am Client wieder aus dem JSON dann irgendwie HTML machen oder DOM-Objekte machen.

Thomas

Das ist eben so recht revolutionär eigentlich. Revolutionär so hingegen, weil es halt wie das Wort revolutionär ist, am Ende rückwälzend, wird zurückgewälzt auf den Status, wo wir eben vom Server zum Client HTML geschickt haben und geht dann da sozusagen einen anderen Weg.

Thomas

Und mir persönlich hat es sehr gut gefallen, dass man dann sagt, man hat eben eine übliche HTML-Seite und kann dann kleine Schnipselchen eben interaktiver und ähnliches gestalten und muss sich das nicht so komplizierte Frameworks ranziehen wie React oder Vue. Das kann man mit einfachen Mitteln eine ganze Menge erreichen und das fand ich ganz cool, hab's mal ausprobiert in einem kleinen Projekt. Ja, und da bin ich jetzt hier, um ein bisschen davon zu erzählen.

Jochen

Ja, ich finde es auch super spannend. Ich habe ja schon seit einiger Zeit davon und genau, also wenn man sich anguckt, was sind die meistgesehenen Talks eben auf sowas wie, das ist auch der Grund, warum wir auf dich Thomas gekommen sind, irgendwie bei DjangoCon EU oder DjangoCon US, das ist halt HTMX, das ist halt ganz heiß irgendwie und ja, ich kann es auch sehr gut verstehen.

Jochen

Also ich habe irgendwann mal angefangen, mich auch mit diesen Frontend-Frameworks so ein bisschen zu beschäftigen und für mich war damals der Grund, warum ich das gemacht habe, dass ich gerne so ein UI-Anmutung gerne hätte wie bei einer nativen Applikation sozusagen.

Jochen

Also das hat man ja halt so früher eigentlich bei Webseiten nicht so wirklich gehabt, weil, naja, da hat man immer Request-Response-Cycle irgendwie und das dauert dann halt einfach und man sieht das auf jeden Fall, dass da was passiert und es ist halt nicht so schnell, als wenn man jetzt halt irgendwie eine, irgendwie in Anführungsstrichen klassische App hat, die halt irgendwie lokal auf dem Rechner läuft.

Jochen

Und für mich war das halt so, das Versprechen dieser quasi Frameworks, dass man das halt auch im Browser so hinkriegen kann, dass man da keine Latenz mehr hat und dass das halt alles super schnell ist und dass sich das anfühlt wie was Natives.

Jochen

Und das hatte mich interessiert und da dachte ich, okay, naja gut, wenn man das halt so machen muss, dann geht das halt nicht anders und dann muss ich halt dieses komische JavaScript-Zeugs da mitmachen. Okay, aber wenn ich dafür diese UI-Geschichte kriege, dann ist es das ja vielleicht wert.

Jochen

Weil das ist ja tatsächlich so ein bisschen so eine nervige Geschichte. Und ja, ich dachte eigentlich immer, der Grund, warum das bei normalen Web-Anwendungen oder Webseiten so ein Problem ist, lag an diesem Request-Response.

Jochen

weil es dauert halt irgendwie, je nachdem, wo ein Server

Jochen

steht, hat man allein Latenz

Jochen

bei einem Request von, weiß ich nicht,

Jochen

mindestens mal so 50 Millisekunden oder sowas

Jochen

und ich dachte, das liegt dann halt, das

Jochen

führt dann schon dazu, dass man das irgendwie dann,

Jochen

dass sich das dann langsam anfühlt und

Jochen

hab dann sogar solche Sachen eingebaut

Jochen

in meine ersten Versuche mit so

Jochen

diesen, also ich glaube, das erste

Jochen

hab ich tatsächlich React irgendwie am Anfang

Jochen

verwendet und

Jochen

hab dann immer irgendwie

Jochen

die Daten für,

Jochen

ich hatte so eine Liste

Jochen

von Dingen, wo ich Pagination hatte

Jochen

und dann habe ich die Daten für die nächsten,

Jochen

immer für die paar Seiten außen rum,

Jochen

immer schon gleich mitgefetcht, damit ich die nicht holen

Jochen

muss, weil ich dachte, wenn ich da auf einen

Jochen

sozusagen Link

Jochen

in Anführungsstrichen klicke und dann müssen Daten

Jochen

geholt werden, dann dauert das ja wieder lange und das will ich ja

Jochen

gar nicht, sondern ich will, dass das sofort da ist.

Jochen

Genau. Ja, und

Jochen

tatsächlich

Jochen

das habe ich jetzt auch, ich habe jetzt auch mit

Jochen

HTMLX so ein bisschen rumgespielt oder so und dann habe ich gemerkt,

Jochen

oh, das ist gar nicht der Punkt, das ist halt schnell genug.

Jochen

Also wenn das 50 Millisekunden dauert,

Jochen

dann reicht das vollkommen aus,

Jochen

dass sich das halt schnell anfühlt.

Jochen

Und...

Dominik

Also vielleicht hast du zu viele Daten

Dominik

dann sonst am Kleinen drin,

Dominik

die der dann handeln muss, oder?

Dominik

Nö, nö.

Dominik

Das ist einfach...

Dominik

Also meine Vorstellung,

Dominik

dass das halt daran liegt,

Jochen

dass die Langsamkeit von dem Netzwerk festkommt,

Jochen

war so nicht ganz korrekt.

Jochen

Okay.

Jochen

Sondern das liegt eigentlich...

Dominik

An der Interaktivität, oder?

Dominik

Das liegt daran,

Dominik

dass das komplette Browserfenster

Dominik

immer ausgetauscht wird.

Dominik

Das ist halt der Punkt.

Dominik

Und dass der Browser teilweise

Jochen

auch bei komplizierteren Seiten

Jochen

halt einfach lange braucht,

Jochen

um das wieder komplett neu zu rendern, was er ja tut.

Jochen

Ja, aber das Ganze rendern so lange dauert.

Dominik

Was ich ganz interessant fand von dem, was der Thomas gerade gesagt hat,

Dominik

war, dass er sagte, man muss das

Dominik

erst in JSON umwandeln von dem

Dominik

alten Zustand, damit man es wieder zurückdrehen

Dominik

kann. Das heißt, so der Urzustand

Dominik

ist halt ein anderer dann gewesen

Dominik

als JSON. Was ich jetzt, muss ich sagen, weil ich bin

Dominik

auch nicht so lange dabei wie ihr,

Dominik

gar nicht so unnatürlich finde, weil ich zum Beispiel

Dominik

jetzt aus Django Models immer direkt in JSON reinrendere

Dominik

oder so und halt diesen Umweg über die

Dominik

Templates gar nicht so häufig gehen musste.

Dominik

Deswegen

Dominik

ist das für mich so ein bisschen Umgewöhnung. Also ich finde

Dominik

das Django-Template-System sehr angenehm,

Dominik

weil es halt die ganzen Features von Django

Dominik

zurückholt, die man sonst verliert, wenn man

Dominik

halt Js macht. Aber ansonsten

Dominik

hat es für mich auch so einen Sinn, wenn man halt

Dominik

diese serialisierten Objekte durch die Gegend schicken kann.

Dominik

Und deswegen,

Dominik

also was meintest du denn, wenn du sagst, dass wir

Dominik

zurückdrehen? Also was wäre für dich denn so die...

Thomas

Also zurückdrehen, das war eher so

Thomas

zeitlich gemeint. Also dass man eben

Thomas

es so ähnlich

Thomas

macht, wie man es vor 10 Jahren

Thomas

oder so gemacht hat.

Thomas

Und das ist witzig, wenn man sich mit Leuten unterhält,

Thomas

die eben jetzt vor

Thomas

rund sieben, acht Jahren

Thomas

oder irgendwas Web-Anwendungen geschrieben haben,

Thomas

hatten die meistens alle

Thomas

eine kleine Hilfsbibliothek, die auf

Thomas

jQuery aufbaut.

Thomas

Und mit der hatten sie damals so HTML-Schnipsel

Thomas

irgendwie in bestimmten

Thomas

ja,

Thomas

ab und zu hin und her geschickt.

Thomas

Und alle dachten, oh, das ist

Thomas

dirty irgendwie und das ist nicht schön.

Thomas

Als das Angiola dann aufkam, dann dachte man, ah, das ist sauber, weil Jason geht da über die Leitung und deshalb ist das einfach besser, weil es schön ist und sauber ist.

Thomas

Aber diese Gleichung hat bei mir ein bisschen gebraucht, um dir aus dem Kopf rauszustreichen, dass das eigentlich Käse ist.

Thomas

Also warum soll das Jason jetzt besser sein oder schöner sein oder irgendwas?

Thomas

Also es ist viel pragmatischer, HTML-Schnipsel über die Leitung zu schicken.

Thomas

Ja, und das habe ich bei so einem kleinen oder zwei kleinen Projekten ausprobiert und funktioniert prima.

Thomas

Und ja, ich kann bloß sagen, dass es auch eine ganze Menge anderer Leute eben sozusagen auch sehen,

Thomas

die ihr gerade halt Leute, die aus dem eher Backend-Sprachen kommen,

Thomas

die eben Python oder Ruby oder irgendwas anderes programmieren,

Thomas

die haben in dem Bereich eben Spaß dran,

Thomas

weil sie dann in ihrer gewohnten Programmierumgebung bleiben können

Thomas

und brauchen jetzt nicht da sich diesen großen JavaScript-Stack anzutun.

Thomas

Sicherlich, das HTMLX selber ist auch in JavaScript geschrieben,

Thomas

aber das heißt jetzt ja nicht bloß, dass man dann mit JavaScript schreiben muss.

Thomas

Man kann es einfach, weil es rein deklarativ ist und das finde ich halt sehr schön.

Thomas

Da gibt es ein paar Attribute, mit denen man das HTML erweitern kann und dann kann man eben auch einzelne Bereiche auf so einer Seite austauschen. Man hat also eine große Seite und dann kann man eben drei, vier Bereiche haben und dann kann man in diesen Bereichen Interaktivität schaffen, indem man dort einen Button hat und dann tut sich aber halt auch bloß nur dieser kleine Bereich austauschen. Und das macht halt die Seite irgendwie, ja, sehr interaktiv.

Jochen

Ja, ja, das, was ich jetzt, ich habe gestern, vorgestern mal so ein bisschen damit rumgespielt und was ich, ich habe mein altes, meinen alten Use Case mir nochmal quasi versucht damit umzusetzen und das ist halt gar nicht so einen kleinen Teil austauschen, sondern quasi so den Hauptcontent auf einer Seite, also man hat quasi eine Liste von Dingen und zum Beispiel wie bei einem Podcast so die Episoden oder bei einem Blog die Artikel und jetzt paginated man da so durch.

Jochen

Und das hat, für mich war der Grund früher mal, warum ich gedacht habe, okay, ich muss mir das mal angucken mit den JavaScript-Frameworks, dass das halt dann schneller geht, wenn man das halt irgendwie schon, wenn man da nicht jedes Mal die Seite neu laden muss.

Jochen

Und das habe ich jetzt mit HTMLX gemacht und auch selbst, wenn man den kompletten Content der Seite austauscht, ist es immer noch sauschnell und man spürt da keinen Unterschied oder man hat nicht das Gefühl, dass man den kompletten Content ausgetauscht hat, sondern erst, wenn man tatsächlich die komplette Seite austauscht, dann wird es langsam.

Dominik

Ja, also Latenz ab so 100 Millisekunden merkst du halt dann

Dominik

und vorher ein bisschen drunter, also unter 50 oder

Jochen

ist auch super. Da merkt man das eigentlich nicht und das

Jochen

kann man durchaus schaffen, da drunter zu bleiben und das ist

Jochen

natürlich dann, und da dachte ich so, als ich das gemerkt

Jochen

habe, so okay, dass dieser Use-Kit geht auch damit,

Jochen

dachte ich so, wow, okay, dann

Jochen

entfällt für mich eigentlich der

Jochen

Grund für diese JavaScript-Dinger

Jochen

und dann. Also was mich halt noch interessieren würde,

Dominik

was ich jetzt noch nicht genau gesehen habe, aber es liegt wahrscheinlich

Dominik

daran, dass ich das nicht so eingebaut habe, kann ich das

Dominik

trotzdem so in Komponenten strukturieren, wie

Dominik

ich mir das vorstelle aus dem Vue.js raus

Dominik

und wie läuft das mit den ganzen

Dominik

netten Animation-Plugins

Dominik

und sowas ganzes irgendwie, muss ich

Dominik

das dann kleinteilig einbauen vom Server, hängt das dann

Dominik

drüber und wie werden die Sachen da wieder

Dominik

reingerendert, das habe ich immer noch nicht so ganz begriffen, weil

Dominik

also Vue.js rendert das ja auch irgendwie

Dominik

im Hintergrund einmal durch

Dominik

und tauscht dann die Teile aus

Dominik

im DOM

Dominik

und auf welcher Ebene muss ich das denn machen?

Dominik

Ja, man hat ja

Thomas

die ganz normalen HTML-Tags,

Thomas

also wenn du eine Seite hast

Thomas

und da sind irgendein

Thomas

drei interaktive Bereiche

Thomas

drin, dann wäre es

Thomas

eigentlich sinnvoll, du machst eine große Seite

Thomas

und dann da dreimal

Thomas

ein Form-Tag zum Beispiel

Thomas

und wenn du ein Submit

Thomas

für dieses Form macht, also für eins dieser

Thomas

Forms, dann werden

Thomas

die Daten dieses einzelnen,

Thomas

dieses einen Forms zum Server geschickt

Thomas

und kriegst die Antwort wieder zurück.

Thomas

Also dann, die Komponenten

Thomas

sind sozusagen HTML-Tags.

Thomas

Ja, also

Jochen

Also wenn du meinst, dass du sowas hast, also eben Vue und React, die machen das, da ist ja genau das, das ist ja ein ganz anderes Modell und wahlweise je nachdem aus welcher Geschichte man kommt, selber kommt es ein moderneres oder älteres, also eigentlich würde ich sagen, ist es halt ein ganz altes Modell, das ist halt eigentlich Client-Server und das ist eigentlich eher so Remote-Procedure-Call und der Client, der State bei den sozusagen in Anführungsstrichen modernen, aber eigentlich architekturmäßig alten,

Jochen

Anwendungen, die halt so ein bisschen

Jochen

wie die Client Server, der State der Applikation

Jochen

liegt halt in JavaScript, deswegen

Jochen

musst du auch, musst View das rendern, deswegen gibt es

Jochen

die Tablet-Sprache in, also JSX

Jochen

in React und so. Aber genau

Dominik

an der Stelle müssen wir jetzt vielleicht nochmal in die Historie

Dominik

gehen, weil ich glaube, jetzt haben wir so ein bisschen die kleine Einleitung gemacht,

Dominik

aber das wäre jetzt genau nochmal interessant zu wissen,

Dominik

was ist denn jetzt genau der Unterschied

Dominik

zwischen RPC

Dominik

und Client Server und

Jochen

Naja, also auch der Unterschied

Jochen

sozusagen zwischen JSON und HTML,

Jochen

ich muss auch sagen, ich finde

Jochen

JSON, ehrlich gesagt, so als

Jochen

Entwickler viel angenehmer,

Jochen

um damit zu arbeiten, als jetzt sowas wie

Jochen

XML oder HTML oder sowas.

Jochen

Oder überhaupt Markup Languages.

Jochen

Einfach deswegen, weil JSON

Jochen

halt viel einfacher ist.

Jochen

Zum Beispiel, also einer der wesentlichen Unterschiede,

Jochen

ein bisschen subtil, aber tatsächlich ist es halt das,

Jochen

was einem dann so extrem

Jochen

auf die Füße fallen kann oder

Jochen

was halt sehr viel Aufwand erzeugt, ist halt

Jochen

XML oder

Jochen

oder HTML, das ist halt ein Dokumentformat.

Jochen

Das ist halt nicht so, dass das einfach

Jochen

nur Daten sind.

Dominik

Das Gute ist natürlich auch, als Backend-Entwickler kann man natürlich sagen,

Dominik

wenn man sich mit dem Pixel-Schubser beschäftigt, sichert sich Frontend

Dominik

damit, man gibt denen einfach die Daten und dann ist gut,

Dominik

dann hat man damit nichts mehr zu tun. Das heißt, es gibt ja auch

Dominik

diese zwei Karton von Entwicklern.

Jochen

Das führt halt auch dazu, dass es nicht so

Jochen

mächtig ist,

Jochen

in gewisser Weise. Also der Hauptunterschied zwischen

Jochen

Dokument und Daten ist halt

Jochen

zum Beispiel die Reihenfolge.

Jochen

Du hast halt in einem Dokument eine Reihenfolge

Jochen

von Dingen. Da spielt es eine Rolle,

Jochen

ob Sachen vorne stehen oder hinten.

Jochen

Wenn ich in JSON irgendwie ein Objekt habe,

Jochen

dann ist das egal, ob das vorne

Jochen

steht oder hinten. Das sind immer die gleichen Daten.

Jochen

Und

Jochen

das macht es sehr schwer zu handeln,

Jochen

weil ich dann beim Parsen halt aufpassen muss

Jochen

und so. Aber auf der anderen Seite

Jochen

macht es halt auch sehr mächtig. Ich kann halt auch

Jochen

ja, also

Jochen

die Dinge quasi, die ich

Jochen

da anzeigen möchte, direkt drin beschreiben. Das kann ich

Jochen

so in JSON ja nicht machen. Aber in HTML

Jochen

kann ich das.

Jochen

Also in HTML kann ich halt ein Formular hinschreiben,

Jochen

das halt irgendwie

Jochen

einen Kontakt zum Beispiel anzeigt oder halt

Jochen

mir anzeigt, wie ich den ändern kann,

Jochen

ohne dass ich dazu sonst irgendwas

Dominik

wissen muss. Ja, genau, also du kannst ja tatsächlich auch den ganzen

Dominik

Datentyp verändern. Du musst ja jetzt nicht nur irgendwie

Dominik

ein JSON-Objekt durch ein anderes austauschen,

Dominik

sondern du kannst ja was ganz anderes dahin stellen auf einmal.

Dominik

Das heißt so magisch irgendwie.

Dominik

Ja, genau. Und bei JSON

Jochen

geht das halt nicht. Bei JSON musst du halt wissen,

Jochen

was das ist. Ansonsten funktioniert es nicht.

Jochen

Was mir bei JSON

Jochen

jetzt nicht so gefällt, dass halt

Thomas

Datentypen sind recht eingeschränkt. Also ordentliches Timedelta oder irgendwas.

Thomas

Ja.

Thomas

Da bin ich persönlich halt großer Freund von Postgres. Das ist enorm,

Thomas

was es da alles gibt in der relationalen Datenbank. Und da sind meine Daten eben

Thomas

gespeichert. Da kommen die her. Und dann will ich aus der SQL-Datenbank,

Thomas

irgendwie das beim Client anzeigen

Thomas

und da ist es

Thomas

relativ klar, wenn ich sage, ich mache

Thomas

aus dem SQL, mache ich

Thomas

HTML und das schicke ich zum Browser.

Thomas

Das ist relativ einfach.

Thomas

Also wenn ich da erstmal aus dem

Thomas

SQL JSON mache

Thomas

und dann mache ich aus dem JSON HTML,

Thomas

ist es einfach ein Schritt mehr.

Thomas

Und da frage ich mich, warum?

Thomas

Ja und

Jochen

es ist halt auch so, dass man dann

Jochen

die ganzen Probleme aus der alten Welt

Jochen

wiederbekommt, nämlich zum Beispiel, was ist

Jochen

wie, also deine

Jochen

Applikation muss jetzt natürlich das

Jochen

JSON verstehen und hat

Jochen

jetzt auch Versionen zum Beispiel. Also was ist denn,

Jochen

wenn jetzt kommt das JSON

Jochen

von heute sozusagen,

Jochen

aus irgendeinem Backend, aus irgendeiner Datenbank

Jochen

und die Applikation ist

Jochen

aber ein Jahr alt, weil ich halt jetzt, weiß ich nicht, keine Ahnung,

Jochen

ein Browserfenster irgendwie,

Jochen

ich habe einen Rechner irgendwie in die Ecke gelegt,

Jochen

der dann ein Jahr lang gelingen hat, jetzt klippe ich den wieder auf

Jochen

und jetzt, was macht die Applikation denn jetzt

Jochen

mit den Daten?

Jochen

Das wird wahrscheinlich nicht funktionieren.

Thomas

Das haut nicht hin und das hat man

Thomas

ja auch eigentlich in allen

Thomas

von diesen frontendlastigen

Thomas

Anwendungen, dass dann ab und zu

Thomas

so ein Pop-up kommt, bitte Seite neu

Thomas

laden, weil

Thomas

neue Software-Update oder irgendwas

Thomas

anders, so ein Browser-Reload dann sozusagen

Thomas

wie so ein Software-Update.

Thomas

Genau, das hat man in dem

Thomas

HTMX-Fall eigentlich

Jochen

Ja, das hat man in dem Rest-Web

Jochen

irgendwie sozusagen Fall.

Jochen

In dieser Architektur hat man das nicht, weil da gibt es das einfach nicht.

Jochen

Man kann prinzipiell

Thomas

auch auseinanderlaufen. Also wenn ich jetzt ein Formular

Thomas

einmal erstmal mir lade,

Thomas

ein HTML-Formular,

Thomas

und dann vergeht wirklich eine Menge,

Thomas

vergeht eben Zeit und es gibt ein Software-Update

Thomas

und dann mache ich bei mir einen Post

Thomas

von meinen Formulardaten, kann das prinzipiell

Thomas

ja auch gegen den Baum gehen, weil es dann nicht mehr hinhaut

Thomas

auf Server-Seite.

Jochen

Wenn sich tatsächlich an der Datenschema

Jochen

oder so irgendwas geändert hat.

Jochen

Okay, ja.

Jochen

Aber tatsächlich, ja, ja gut, okay, insofern.

Jochen

Ja, wir gehen einfach mal davon aus,

Dominik

dass man, wenn man Dinge irgendwie jahrelang da liegen lässt,

Dominik

man nicht davon ausgehen sollte,

Dominik

dass die einwandfrei so funktionieren wie am ersten Tag.

Jochen

Ja, ja, okay, aber du kriegst das Problem auch deutlich schneller.

Jochen

Also du hast halt dieses Problem plötzlich wieder.

Jochen

Du hast das Problem wieder,

Jochen

dass du deine Clients aktuell halten musst.

Jochen

Das war eigentlich sozusagen eine der großen Versprechungen

Jochen

von Webgeschichten, dass man sagt, das musst du nicht mehr machen.

Jochen

Also um nochmal zu drücken,

Dominik

also die alte Client-Server-Architektur bedeutet,

Dominik

Ich habe eine Hauptanwendung, einen Server, auf dem die ganzen Daten, die ganze Datenbank liegt und die Clients, die selbstgeschriebene Anwendungen sind, die auf anderen Rechnern laufen, die dann halt mit dem Server kommunizieren, die halt eine bestimmte Version haben.

Dominik

Und wenn ich jetzt irgendwas Neues veröffentliche, dann muss ich dafür sorgen, dass der jeweilige Client sich ein Update herunterlädt, seine Applikation aktualisiert, um wieder mit dem Server reden zu dürfen.

Jochen

Der Kern der Applikation ist eben nicht auf dem Server, sondern der Kern der Applikation ist halt auf dem Client. Und vom Server kommen nur Daten.

Dominik

Okay, also der Kern der Applikation bedeutet tatsächlich, ja, okay.

Jochen

Der State der Applikation, die Logik.

Dominik

Jetzt hast du schon wieder State gesagt.

Dominik

Ich glaube, das haben wir auch noch nicht so richtig beschrieben.

Dominik

Was ist denn ein State überhaupt?

Dominik

Also die Wahrheit vielleicht über das, was gerade ist.

Jochen

Ja, also sozusagen die Information, wenn du jetzt eine Liste von Kontakten hast,

Jochen

zum Beispiel irgendwie in einer Applikation, wo liegt diese Liste?

Dominik

wie hast du die sortiert, welche hast du wieder rausgeschmissen

Dominik

und wer kennt das? Kennt das

Dominik

der Client selber oder kennt

Dominik

das auch oder nur der Server?

Dominik

Und das ist der Unterschied. Ja, quasi bei

Dominik

Client-Server liegt es halt beim Client.

Dominik

Ja, oder es könnte auch vom Server liegen. Also der große

Jochen

Unterschied zu Web ist jetzt sozusagen,

Jochen

okay, jetzt rede ich über Dinge, von denen ich keine Ahnung habe,

Jochen

aber der große Unterschied ist halt, das liegt

Jochen

halt in dem

Jochen

HTML selber.

Jochen

Das ist halt der große Unterschied

Jochen

zu allem, was früher war. Das ist halt sozusagen dieser

Jochen

revolutionäre Schritt. Das

Jochen

hat man vorher, soweit ich weiß,

Jochen

noch nie gemacht.

Jochen

Und das ist neu in HTML.

Jochen

Und mit REST, sozusagen.

Jochen

Na gut, ich kenne

Thomas

auch die Frage, was

Thomas

man will. Also, ob man jetzt so

Thomas

eine Seite will,

Thomas

eine Seite, die sich eben super

Thomas

schnell lädt, weil der Nutzer

Thomas

bei Google was danach gesucht hat und

Thomas

dann folgt er dem Link, der ihm angezeigt

Thomas

wird und dann, zack, will er die Seite da haben

Thomas

und will die Seite geöffnet haben und sehen.

Thomas

Und da ist halt ganz wichtig,

Thomas

dass, ja,

Thomas

was jetzt Google mit den Web-Visals oder

Thomas

irgendwas so abprüft, dass zack,

Thomas

diese First-Time-User-Experience gut ist,

Thomas

zack, die Seite soll sich schnell laden.

Thomas

Und witzigerweise gibt es

Thomas

ein Produkt von dem gleichen

Thomas

Großkonzern, Google,

Thomas

zum Beispiel Gmail.

Thomas

Und wenn ich Gmail starte, sehe ich erstmal

Thomas

einen Wartebalken.

Thomas

Das geht mir natürlich als Nutzer eigentlich

Thomas

Eier auf den Keks.

Thomas

Sehe ich erstmal, wie sich die ganze

Thomas

Anwendung lädt und das will ich

Thomas

nicht. Also ich will im Endeffekt, will ich auch

Thomas

gar nicht so eine Native GUI

Thomas

im Web haben eigentlich.

Thomas

Ich will zack, dass die Seite da ist.

Thomas

Und

Thomas

drum ist die Frage eigentlich,

Thomas

was man will. Sicherlich gibt es Anwendungen,

Thomas

gibt es Anwendungen, die tut man

Thomas

als Anwender eben morgens starten

Thomas

und die tut man abends dann wieder schließen

Thomas

oder so.

Thomas

Dann ist es okay.

Dominik

Was ich will, ist ein Nutzererlebnis.

Dominik

Also ja, das ist natürlich schon, dass es schnell da ist.

Dominik

Es muss schnell irgendwas passieren.

Dominik

Aber ich brauche nicht direkt sofort den ganzen Content,

Dominik

sondern ich will da so reingeführt werden,

Dominik

dass ich willkommen bin, dass ich eingestimmt werde,

Dominik

auf was da funktioniert.

Jochen

Na gut, aber das liegt halt im Use Case.

Jochen

Da denke ich drauf an, was das für eine Applikation ist,

Jochen

die man da, oder was der Use Case ist.

Jochen

Und für die allermeisten Web-Use Cases ist es halt wichtiger,

Jochen

dass man quasi von, dass man

Jochen

das auch, dass man zum Beispiel auf Links klicken kann

Jochen

und dann halt auf eine andere Seite kommt und da irgendwas macht.

Jochen

Ja, genau, dass man halt einfach was

Jochen

Und das geht ja auch mit

Jochen

diesem Modell, dass dein

Jochen

Client halt irgendwie

Jochen

eine richtige Applikation ist, funktioniert das

Jochen

halt nicht mehr. Das bricht halt

Jochen

die Links im Web im Grunde, weil

Jochen

wenn du jetzt hinter jedem

Jochen

Link erstmal irgendwie ein paar Megabyte

Jochen

großes JavaScript-Wandel liegt, was du laden

Jochen

musst und dann erstmal ein Ladebalken eingezeigt wird

Jochen

und dann ich initialisiere die Applikation,

Jochen

dann macht es keinen Spaß mehr, auf Links zu klicken.

Jochen

Also das mit den Links und dass man von einer Seite auf die andere kommt,

Jochen

das funktioniert nur, wenn da nicht jedes Mal megabyteweise Zeugs rüberkommt

Jochen

und initialisiert werden muss und nicht irgendwie ein komplexes User-Interface hochgefahren wird,

Jochen

sondern wenn es halt was Einfaches ist.

Jochen

Auf der anderen Seite ist natürlich diese Vernetzung auch total interessant und cool.

Thomas

Ja, ich meine, die großen

Thomas

Web-Frameworks, die

Thomas

wie React und Vue, die haben das ja auch erkannt

Thomas

und jetzt versuchen die

Thomas

serverseitig zu rendern.

Thomas

Dann gibt es dieses mit Hydration und

Thomas

Dehydration oder

Thomas

Serverseit-Rendering und den ganzen Späßen.

Dominik

Moment, was ist Hydration, was ist Dehydration,

Dominik

was ist Serverseit-Rendering in dem Fall?

Dominik

Gemeint?

Jochen

Naja, also du benutzt im Grunde

Jochen

Node.js auf dem Server, um halt

Jochen

dein, also du hast ja

Jochen

meistens dann auch so eine Template-Sprache, so ähnlich wie

Jochen

Django-Templates bloß halt in JavaScript, also

Jochen

JSX oder weiß nicht, wie das bei Vue heißt,

Jochen

keine Ahnung. Und du kannst

Jochen

das ja jetzt, du kannst es im Browser rendern,

Jochen

ja, da läuft JavaScript, was seine

Jochen

Templates nimmt und dann halt

Jochen

quasi mit den Daten, die es über JSON oder sonst irgendwie bekommt,

Jochen

halt dann HTML rausrendert.

Jochen

Du kannst das aber auch auf dem Server rendern. Du kannst

Jochen

ja da ja Node.js laufen lassen, dann kannst du auch Templates nehmen

Jochen

und dann halt auch HTML rausrendern.

Jochen

Und das HTML, was du da rausrenderst, kannst du

Jochen

auch einfach so an den Kleinen schicken.

Jochen

Sodass das Rendering halt nicht bei dir im Browser

Jochen

passiert, sondern auf dem Server. Deswegen Server

Dominik

Side Rendering. Das ist halt dann für kürzere

Jochen

Antwortzeiten. Ja, ja, also

Jochen

dann fühlt es sich für deinen Browser, ist es dann so wie

Jochen

eine klassische, wie so

Jochen

eine Django-Webseite oder so und

Jochen

dann aber schiebt der Server

Jochen

dir ja doch dann doch irgendwie so ein JavaScript-Bundle

Jochen

dahin und dann wird das ersetzt und

Jochen

ich weiß nicht, ehrlich gesagt, ich weiß jetzt auch nicht genau, wie das

Jochen

funktioniert mit dem Hydration oder so. Genau, aber

Jochen

was ist jetzt das Hydration? Ich nehme mal an,

Jochen

dass das ist irgendwie so

Jochen

sozusagen, dass

Jochen

dieser reine, das hat ja mal etwas gekriegt,

Jochen

das ist quasi in Anführungszeichen irgendwie trocken

Jochen

und weil es halt so statisch ist

Jochen

und ich nehme mal an, dass sie mit Hydration meinen,

Jochen

du schickst halt den Bundle dahin

Jochen

und wenn das Bundle da ist, dann sagst du, okay, jetzt gib mir die Daten

Jochen

per JSON und dann rendert es das halt auf den

Jochen

Client selber. Das ist das, was zum Beispiel

Dominik

bei Vue.js in so Komponenten passiert, wenn da

Dominik

bestimmte Teile im DOM

Dominik

getauscht werden, so HTML-Schnipsel von

Dominik

Antworten vom Server dann auch.

Dominik

Nee, nee, das muss man bloß, das ist bloß

Dominik

on top sozusagen, also

Thomas

das ist bloß, wenn du es optimieren willst, also

Thomas

das ist bloß für den

Thomas

Fall, wenn du feststellst, eine Vue-Anwendung,

Thomas

die ist eben jetzt nicht so schnell

Thomas

für den First-Time-User,

Thomas

dann kannst du dieses Hydration-Dehydration

Thomas

einsetzen, um

Thomas

diesen ersten Seitenaufruf zu

Jochen

beschleunigen. Ja, und sozusagen als Browser,

Jochen

wenn du auf so eine Seite,

Jochen

wenn du jetzt zum Beispiel Nuxt nimmst bei Vue

Jochen

und machst da Server-Site-Rendering,

Jochen

dann dein Browser kriegt einfach nur

Jochen

HTML und zeigt das an, wie bei jeder anderen Seite

Jochen

auch.

Jochen

Für den, der führt kein

Jochen

JavaScript erstmal aus.

Jochen

Nur dann später.

Jochen

Also die Frage ist, wo es gerendert wird.

Jochen

Bei Server-Side-Rendering wird es auf dem Server gerendert

Jochen

und bei irgendwann später,

Jochen

wenn das Bundle da ist, was halt aber

Jochen

megabyteweise Zeug sein kann, ja das dauert halt,

Jochen

bis das da ist, dann wird wieder

Jochen

auf dem Client gerendert und dann werden nur die Daten

Jochen

per JSON geholt und das ist,

Jochen

denke ich, das, was mit Hydration gemeint ist.

Jochen

Und die Sache ist,

Thomas

es ist ja schön, dass man das alles machen kann.

Thomas

Und die Frage ist aber, ob man

Thomas

will. Und da

Thomas

bin ich eben vielleicht auch

Thomas

zu alt oder zu steif.

Thomas

Ich verwende seit Jahren

Thomas

Python und bin mit der Sprache sehr zufrieden.

Thomas

Und dass ich jetzt

Thomas

JavaScript, die Sprache, die mir

Thomas

eh nicht so 100% sympathisch ist,

Thomas

jetzt auch noch auf dem Server einsetze

Thomas

oder irgendwas, habe ich eben

Thomas

persönlich keinen Bock drauf.

Thomas

Und darum habe ich

Thomas

das Schöne ist ja, ich habe da angefangen

Thomas

im privaten Kontext auch

Thomas

für jemanden eine Seite machen

Thomas

wollen und

Thomas

so ein Bestellsystem

Thomas

und das Schöne, da hatte ich einfach Zeit

Thomas

und es war auch kein Druck

Thomas

irgendwie da und auch keiner, der gesagt

Thomas

hat, Thomas, nimm die oder jene Tools.

Thomas

Wenn man da Zeit hat, kann man wirklich mal nochmal recherchieren

Thomas

und auch sagen, nee, so möchte

Thomas

ich es jetzt nicht machen, ich will es jetzt so

Thomas

machen und dann habe ich erstmal ewig

Thomas

gesucht, bis ich überhaupt was gefunden habe

Thomas

und durch Zufall bin ich eben auf das

Thomas

HTMX dann gestoßen. Inzwischen ist es

Thomas

auch populärer, inzwischen wird man

Thomas

steuert man selbstständig

Thomas

drüber. Vor mehr als einem Jahr war das

Thomas

eben noch recht unbekannt.

Thomas

Gut, und da war es halt eine coole

Thomas

Sache und gerade wenn man

Thomas

halt

Thomas

sagt, man selber ist in

Thomas

Backendsprache

Thomas

damit vertraut,

Thomas

dann macht das eigentlich großen Sinn,

Thomas

weil dann kann man das auch sehr

Thomas

leicht verwalten, diesen Stack.

Thomas

Ansonsten, ja,

Thomas

sicherlich kann man das machen. Ich glaube auch, dass das

Thomas

prima funktioniert mit dem Vue und React

Thomas

und so alles. Aber wenn

Thomas

man das selber alles in der Kontrolle haben

Thomas

will, also ich kenne es selber jetzt beruflich

Thomas

zum Beispiel, nutzen wir auch

Thomas

VGS und

Thomas

das ist dann manchmal so,

Thomas

dann ist der Frontend-Entwickler

Thomas

sozusagen oder dass da einer mal krank

Thomas

oder im Urlaub oder irgendwas und dann klemmt es

Thomas

Frontend-seitig, obwohl Backend-Kapazität

Thomas

dabei und dann ist es vielleicht mal andersrum oder

Thomas

irgendwas. Das ist doch eigentlich

Thomas

schöner, wenn man da sagt, okay, ich mache wirklich

Thomas

eben Fullstack vom HTML

Thomas

bis zur Datenbank, habe ich

Thomas

alles unter Kontrolle und da finde ich

Thomas

diese Trennung zwischen Frontend-Entwickler

Thomas

und Backend-Entwickler, das ist so wie

Thomas

so eine komische Diskriminierung,

Thomas

wie, ja,

Thomas

muss eigentlich nicht sein, also ja.

Thomas

Ja.

Thomas

Ja, ja, ich würde auch

Jochen

sagen, also normalerweise ist diese Unterscheidung

Jochen

von der Backend eigentlich halt hauptsächlich irgendwie, es gibt halt

Jochen

Leute, die

Jochen

JavaScript mögen und es gibt andere Leute, die

Jochen

JavaScript fullback finden und

Jochen

das ist halt so schon mal, also

Jochen

ja.

Dominik

Alle Leute, die liebe JavaScript-Liebe haben,

Dominik

die bitte einmal aufzeigen.

Dominik

Ja, na ja, gut.

Jochen

Das ist übrigens auch so ein Ding.

Jochen

Also ich meine, im Grunde die Entwicklung

Jochen

wird da getrieben von, also weil in der

Jochen

JavaScript-Welt, und ich höre da ja auch

Jochen

ab und zu Dinge, da

Jochen

geht man jetzt sozusagen schon in die Richtung zu

Jochen

sagen, ah ja, also wir sind jetzt eigentlich

Jochen

weit genug, warum machen wir nicht JavaScript

Jochen

also komplett, also auch im Server vor allen Dingen.

Jochen

Es gibt ja eigentlich keinen Grund mehr, das nicht zu verwenden.

Jochen

Ich würde sagen, schon, doch gibt es Gründe, das nicht

Jochen

zu verwenden. Aber

Jochen

diesen Druck, den gibt es

Jochen

schon sehr stark.

Jochen

Aber nochmal vielleicht ganz kurz, ich würde

Jochen

ganz kurz nochmal

Jochen

da ansetzen, wo wir eben waren,

Jochen

weil man kann

Jochen

jetzt mit diesen Frameworks natürlich auch Server-Side-Rendering machen,

Jochen

nur das löst die Probleme nicht.

Jochen

Also wenn

Jochen

alle Webseiten

Jochen

irgendwie fette

Jochen

Dinger wären mit Server-Side-Rendering,

Jochen

würde das Web so nicht mehr funktionieren.

Jochen

Das würde kaputt gehen.

Jochen

Und das ist halt irgendwie, weil du musst

Jochen

diese Megabyte-Daten ja immer noch durch die Gegend

Jochen

schieben. Auch wenn das dir jetzt nicht mehr so

Jochen

auffällt, aber

Jochen

werden halt dauernd die gleichen

Jochen

minifizierten JavaScript-Dinger

Jochen

durch die Gegend geschoben. Wenn du von einer Seite auf die

Jochen

andere gehst, immer das gleiche Zeug, Megabyte-weise.

Jochen

Das ist einfach total verrückt.

Dominik

Weil ich nicht die einzelnen Teile

Dominik

vom Dom nur tausche?

Jochen

Ja, weil du musst halt die komplette Applikation

Jochen

schickst du halt in der Gegend rum.

Jochen

Ja?

Jochen

Und die Applikation ist ja in weiten Teilen

Jochen

immer die gleiche.

Thomas

Aber so viel ist es ja nicht. Ich meine, es wird ja dann

Thomas

gecached und ich kann mir vorstellen,

Thomas

dass die ersten drei Bilder

Thomas

jeder Webseite dann größer sind

Thomas

als das ganze JavaScript-Spaß.

Thomas

Also ich hätte jetzt auch tatsächlich irgendwie

Dominik

intuitiv gedacht, dass man das halt auch mit VJS zum Beispiel

Dominik

so löst, dass man dann eben nur

Dominik

den einzelnen kleinen Bestandteil

Dominik

dann innerhalb dieser Komponente

Dominik

neu rendert.

Jochen

Nee, du musst immer, also ich weiß nicht genau,

Jochen

es gibt noch so Geschichten,

Jochen

da bin ich jetzt aber auch nicht vertraut mit, dass du

Jochen

so dieses Hot-Module, du kannst halt

Jochen

teilweise mit, es gibt so

Jochen

Exima-Skript jetzt Module irgendwie auch

Jochen

und manchmal kannst du halt, musst du

Jochen

für manche Seiten, kannst du Module nachladen und so,

Jochen

aber bisher der klassische Weg

Jochen

war halt, du baust deine komplette

Jochen

Applikation in einen JavaScript-File und das

Jochen

lieferst du aus.

Jochen

Und solange du das nicht hast, geht gar nichts.

Jochen

Und ja, also wenn deine

Jochen

Applikation, also ich meine gut,

Jochen

sie muss nicht über Megabyte groß sein, aber

Jochen

ja, wenn, also

Jochen

ist schon groß und

Jochen

oft ist View

Jochen

drin oder React und dann halt die

Jochen

Bibliotheken, die alle verwenden. Und das Zeug wird halt

Jochen

bei jedem, wenn du auf eine andere Seite gehst,

Jochen

wird das halt immer mit übermittelt. Und das ist ja

Jochen

eigentlich vollkommen verrückt ineffizient.

Jochen

Also das ist ja eigentlich,

Jochen

tut einem ja weh, wenn man sich das so überlegt.

Jochen

Das ist das, was das bedeutet.

Thomas

Eigentlich wollten wir ja über HDMIX reden und nicht über

Dominik

nicht über Renderfix. Genau, richtig.

Dominik

Nicht was anderes irgendwie.

Dominik

Ja, okay.

Dominik

Genau.

Jochen

Ja, wie funktioniert das denn bei HTMX?

Dominik

Ja, wollen wir mal so ein Beispiel besprechen?

Thomas

Ja, also wir können mal ein Beispiel besprechen.

Thomas

Am besten, man gibt dann selber mal HTMX einfach in seine bevorzugte Suchmaschine ein

Thomas

und dann kommt man auf die Seite und da gibt es auch ein paar Beispiele.

Thomas

Oben in der Kopfleiste ist es zu sehen, ein paar Examples.

Thomas

Und ein Beispiel ist zum Beispiel Click2Edit. Das ist glaube ich mit das erste. Da hat man erstmal so eine ganz normale HTML-Seite und da unten ist so ein kleiner Block und da steht irgendwie Click2Edit und in diesem Block sieht man irgendwie Name, sage ich mal Peter oder irgendwas oder irgendein Name, Vorname, sogar ein ganz einfaches Nutzerdaten.

Thomas

Irgendwann kann man hinklicken und wenn man hinklickt, dann tut sich dieser kleine Bereich aktualisieren und man hat ein HTML-Formular.

Thomas

Dann kann man dieses HTML-Formular eben befüllen und sagen speichern.

Thomas

Und mit dem Speichern, schwupp, ändert sich wieder dieser kleine Block und der ist sozusagen wieder Read-Only, wie er am Anfang war, bloß mit den aktualisierten Daten.

Thomas

Und das Ganze funktioniert natürlich so, dass kein, der gesamte Browser immer auf dieser Seite bleibt, also nicht die gesamte Seite wird neu geladen.

Thomas

Also sprich, würde man irgendwo hingescrollt haben oder irgendwas und es dann unten auf einer Seite machen, würde die Scrollposition oder irgend sowas alles gleich bleiben.

Thomas

Und da ist die Frage, wie das funktioniert.

Thomas

Mit dem Klick to edit wird dann der Server kontaktiert und der Server schickt dann ein kleines HTML-Schnipselchen an den Client und entsprechend der Angabe in dem HTML und das HTMLx erweitert im Endeffekt das HTML bloß um ganz einfache neue Attribute.

Thomas

Anhand dieser Attribute stellt eben diese Library fest, aha, das soll hier eingefügt werden.

Thomas

Es gibt verschiedene Swap-Methoden, da kann man sagen, innerHTML soll ausgetauscht werden, also das in dem Tag oder outerHTML, sprich das Tag selber soll auch mit ersetzt werden.

Thomas

Na gut, und dann kriegt man eben dieses HTML-Schnipselchen vom Server und das wird dann durch HTMX dort eingebaut und dann hat man das Formular, kann es befüllen und am Endeffekt passiert der gleiche Spaß wieder.

Thomas

Ich kann das als Nutzer dann ausfüllen.

Thomas

Und wenn ich auf Speichern klicke, dann wird eben auch nur dieser kleine Bereich zum Server hingeschickt

Thomas

und man erhält wieder einen HTML-Schnipselchen, der dort an dieser Stelle eingebaut wird.

Thomas

Und das Schöne für den Anwender ist, dass es halt super simpel ist.

Thomas

Man muss dann bloß mit ganz wenigen Attributen sagen, hier, tausche mir bitte dieses oder jenes aus

Thomas

und dann hat man das Ganze schon, also man muss sich da

Thomas

nicht mit JavaScript beschäftigen oder so

Thomas

und ja, das ist

Thomas

sozusagen diese

Thomas

Grundidee der Bibliothek, dass man

Thomas

HTML-Schnipsel

Thomas

über die Leitung schickt

Thomas

und das deklarativ im HTML

Thomas

verfügbar macht.

Dominik

Ja, sehr spannend, das macht auch solche

Dominik

Sachen wie möglich, dass man dann,

Dominik

also das ist auch ein weiteres Beispiel, zum Beispiel

Dominik

auf der Seite, dass man Infidelscroll machen kann,

Dominik

dass er dann in diesem HXWeb-Attribut

Dominik

einfach After End sagt und dann wird das einfach

Dominik

angehängt, dann das, was man

Dominik

bekommt und so.

Dominik

Also da kriegt man eigentlich

Thomas

den besten Eindruck, wenn man einfach mal diese Beispiele

Jochen

durchgeht. Genau, das ist

Jochen

schon super.

Jochen

Ja, also ich meine, im Grunde, also

Jochen

eigentlich ist die Idee, also mich wundert, dass

Jochen

das nicht schon viel früher passiert

Jochen

ist, ehrlich gesagt. Mir ging es genauso, ich dachte

Thomas

man, das ist ja genau, von dem ich eigentlich

Thomas

geträumt habe, gerade vor Jahren, als ich

Thomas

mit Jake Ferry da so, sag mal, dass du selber

Thomas

irgendwie was gelöst, irgendwie

Thomas

und das ist eigentlich die Idee

Thomas

dieses Deklarativen auch, also das ist eben

Thomas

das HTML ist da

Thomas

sehr schön, diese Beschreibungssprache

Thomas

sicherlich ist es keine Programmiersprache, eine Beschreibungssprache

Thomas

aber im Endeffekt

Thomas

geht ja vieles hin in das Deklarative

Thomas

also man will ja einfach bloß sagen

Thomas

das soll so und so sein und

Thomas

dann kümmert sich irgendein anderer Prozess

Thomas

dann darum, dass das dann

Thomas

auch umgesetzt wird und so und das macht es im Endeffekt

Thomas

dann einfacher

Jochen

Ja und im Grunde behandelt das

Jochen

eigentlich macht es genau das gleiche, was man

Jochen

im Browser auf einer Webseite tut, nur

Jochen

halt nicht jetzt, dass man zum Beispiel

Jochen

wenn man im Browser halt auf einer Webseite ist, kann man ja

Jochen

immer nur das komplette HTML

Jochen

Element ersetzen. Und jetzt hat man sozusagen

Jochen

per JavaScript in HTMLX

Jochen

halt die Dinge, die man nur auf dem

Jochen

einen großen Ding machen kann, kann man jetzt auf allen

Jochen

kleinen Elementen halt auch machen. Man kann das halt

Jochen

irgendwie durch was anderes ersetzen.

Jochen

Man kann, also es ist

Jochen

normalerweise im Browser lösen halt nur zwei

Jochen

Events, lösen

Jochen

halt irgendwie in Requests aus. Das eine ist halt

Jochen

Anchor-Tag und das andere

Jochen

ist halt irgendwie Submit, also

Jochen

Form. Und

Jochen

es gibt nur Get und Post,

Jochen

aber es gibt ja noch viel mehr

Jochen

HTTP-Werben. Es gibt ja noch die Lead-Put-Patch

Jochen

und das habe ich

Jochen

mich auch früher gefragt. Also es gab es auch

Jochen

so bei Jungle-Rest-Framework ja irgendwie bei dieser

Jochen

Browsable-API und dann wollte ich halt mal

Jochen

so, da drinnen kann man ja auch

Jochen

Dinge hinzufügen und so. Ich so, okay, und jetzt

Jochen

muss ich noch Put testen und so, hm, komisch.

Jochen

Put geht irgendwie nicht. Wieso geht denn Put nicht?

Jochen

Und das war mir auch gar nicht klar, dass halt Browser

Jochen

können halt keinen Put irgendwie

Jochen

an Zauber schicken, sondern das muss man halt mit JavaScript machen,

Jochen

weil es geht einfach nicht.

Jochen

Und es gibt ja eigentlich gar keinen Grund, warum das jetzt

Jochen

nicht weiter standardisiert wurde. Und HTMX

Jochen

ersetzt sozusagen das, was da noch fehlt,

Jochen

durch JavaScript.

Jochen

Und das ist eigentlich eine sau, sau coole Idee.

Jochen

Also, bei mir

Thomas

hat es auch relativ schnell Klick gemacht, nachdem ich

Thomas

die ersten Beispiele dann mir angeschaut habe.

Thomas

Und es ist

Thomas

enorm, wie da auch das

Thomas

Interesse daran wächst. Also zum Beispiel

Thomas

im Django, was ich jetzt hier eben

Thomas

einsetze für die Serverseite,

Thomas

kann man ja auch auf einer HTML-Seite

Thomas

mehrere Formulare

Thomas

dann reintun und mit Präfixen das

Thomas

dann auswerten und so weiter.

Thomas

Und das war auch, wenn ich mich da

Thomas

zurückerinnere, rechter Krampf irgendwie immer.

Thomas

Und hier ist es

Thomas

einfach entkoppelt.

Thomas

Ich kann ja auch auf einer Seite drei Formulare

Thomas

haben und die submitten sich eben

Thomas

einzeln individuell. Da brauche

Thomas

ich da nicht ein großes

Thomas

Formular machen mit drei

Thomas

Unterbereichen oder so. Das macht's

Thomas

auch serverseitig deutlich

Thomas

einfacher, das zu handeln.

Thomas

Ja.

Jochen

Naja, und es ist ja jetzt

Jochen

tatsächlich auch nicht nur, also

Jochen

hat demnächst vielleicht zu der Geschichte, dass

Jochen

der Autor hatte vorher

Jochen

eine Bibliothek geschrieben als jQuery

Jochen

Plugin. Das nennt sich

Jochen

irgendwie intercooler.js.

Jochen

Daher, das hat auch mit

Jochen

jQuery relativ viel zu tun.

Jochen

Ähm, äh, und das war halt dann

Jochen

quasi auch halt, äh, HTMLX ist jetzt

Jochen

sogar der Nachfolger davon, der dann halt ohne JQuery

Jochen

auskommt und diesen ganzen Kram nicht mehr macht.

Jochen

Ähm, und

Jochen

äh, was ich auch, äh,

Jochen

wo ich auch denke, das ist, äh, halt

Jochen

ein sehr, äh, also

Jochen

ein breiter Trend, das macht es auch so

Jochen

interessant, weil es ist halt nicht nur diese eine Geschichte,

Jochen

es ist nicht nur HTMLX, sondern, äh,

Jochen

diesen Ansatz verfolgen ganz viele

Jochen

Projekte in ganz vielen unterschiedlichen Sprachen, ne?

Jochen

Und, ähm, ich weiß nicht, in

Jochen

welchem Talk das war, ob das der

Jochen

von der Jungle Queen US war

Jochen

oder nee, es war auch, glaube ich, mit TalkPython

Jochen

to me, Interview

Jochen

mit dem Entwickler von

Jochen

HTMX,

Jochen

sagte er einen Satz, den ich von

Jochen

unterschiedlichen Leuten aus unterschiedlichen Communities

Jochen

schon ganz oft gehört habe.

Jochen

Den habe ich auch schon gehört von Chris

Jochen

McCord von Phoenix Live View

Jochen

in der Elexia und ich habe den auch

Jochen

nochmal woanders gehört und zwar der Satz ist

Jochen

ja, also ehrlich gesagt, dafür

Jochen

dass ich kein JavaScript schreiben wollte, habe ich jetzt

Jochen

ganz schön viel JavaScript geschrieben.

Jochen

Und das sagen, also das ist halt dieses Thema, so ganz viele Backend-Leute, die eigentlich nie JavaScript schreiben wollten, haben jetzt dann doch viel JavaScript geschrieben, um das loszuwerden.

Jochen

Und wenn das viele Leute machen und quasi zu einem ähnlichen Ergebnis kommen und das tatsächlich funktioniert, dann wird das wahrscheinlich auch so bleiben und das sieht danach aus, als hätte man da was gefunden, was tatsächlich gut funktioniert und das macht es dann natürlich auch interessant.

Jochen

Also wenn das jetzt nur eine Geschichte wäre, aber ich weiß nicht, ob mir jetzt die ganzen Namen einfallen, aber in der Ruby on Rails Welt, also wobei HTMX wird ja auch viel mit Ruby on Rails zusammenverwendet, gibt es halt noch Hotwire, also ist auch Akronym für HTML over the wire und Turbolinks, wo halt dann quasi schon die Seite hinter dem Link gefetcht wird, sodass wenn man auf den Link draufklickt, das halt dann direkt da ist.

Jochen

Dann gibt es eben bei Elixier, in der Elixier-Welt Phoenix gibt es Liveview, wo auch HTML-Snippets halt über einen Websocket geschickt werden. Dann gibt es das in PHP, da heißt das irgendwie Livewire in Laravel.

Jochen

Und ja, ich weiß es gar nicht, da gibt es, also auf jeden Fall in vielen unterschiedlichen Communities machen Leute jetzt gerade sowas und ja, das scheint irgendwie ein sehr, sehr breiter Trend zu sein.

Thomas

Der Schöne an dem HTMX ist halt, dass es sich da vollkommen raushält. Also das kann man mit jedem Backend-Framework nutzen, wie man möchte. Und die anderen, die sind halt oft Backend-spezifisch.

Thomas

Also bei Ruby on Rails, das ist Hotwire und drum war das, ja, ich habe es mir angeschaut und hätte eigentlich da Interesse gehabt, aber das war dann irgendwie schon wieder irgendwie kompliziert und nicht so einfach. Das HTMX hat es, glaube ich, der Carson Cross hat es da sehr, sehr schön nochmal reduziert von der Komplexität und das ist ja auch im Endeffekt sein Ziel.

Thomas

sein Ziel ist es, die Komplexität

Thomas

zu reduzieren, dass es

Thomas

schön einfach ist.

Thomas

Und das hat er aus meiner Sicht sehr

Thomas

gut geschafft. Das sind eine Handvoll

Thomas

Attribute, die hat man schnell

Thomas

verstanden oder auch noch nachgeschlagen

Thomas

und dann kann man da ganz

Thomas

gut eine Menge Dinge machen.

Thomas

Man muss natürlich erstmal umdenken, um überhaupt

Thomas

erstmal reinzukommen, aber

Thomas

das macht Spaß.

Thomas

Also das kann ich nur empfehlen.

Thomas

Ja.

Thomas

Es gibt auch

Jochen

eine jetzt von Adam Johnson,

Jochen

der hat irgendwie ein Ding geschrieben,

Jochen

Django HTMX,

Jochen

das ist eben

Jochen

als Integration jetzt auch in Django als Framework,

Jochen

aber das macht auch fast nichts, das macht ganz wenig,

Jochen

das macht nur

Jochen

sozusagen, es ist eine Middleware dabei,

Jochen

die an den Requests halt ein Attribut

Jochen

dran wappt,

Jochen

ich weiß nicht, ist HTMX oder sowas, wo man dann einfach

Jochen

nachgucken kann, weil man muss auf der Serverseite

Jochen

halt unterscheiden können, war das jetzt ein

Jochen

Request, der von HTMX gekommen ist oder nicht, und dann

Jochen

je nachdem, erinnert man

Jochen

die komplette, das ist auch sowas, wenn

Jochen

ein Browser kein JavaScript kann, das ist gar kein

Jochen

Problem, das funktioniert einfach so weiter,

Jochen

weil auf der Serverseite

Jochen

rendert man halt, wenn man sieht,

Jochen

okay, es war kein HTMLX-Request, dann rendert man

Jochen

einfach die komplette Seite raus, ist gar kein Problem.

Jochen

Und wenn es ein HTMLX-Request war, gut, dann

Jochen

rendert man halt nur das Fragment raus, das

Jochen

halt ersetzt werden muss. Und

Jochen

das heißt, es funktioniert in beiden Fällen und

Jochen

irgendwie, man hat halt diese Windelware dann, um

Jochen

halt da quasi sich nicht selber überlegen zu müssen,

Jochen

wie man jetzt erkennt, ob das jetzt ein HTMLX-Request war

Jochen

oder nicht und dann hat das ding auch noch so teile drin für damit diese fehler views halt

Jochen

ordentlich funktionieren also wenn halt ein fragment nicht ordentlich gerendert wird dann

Jochen

ist wenn man sonst nichts macht ignoriert also wenn dann wenn er zum beispiel 400 zurückkommt

Jochen

dann sieht man nichts weil hat im extra ist einfach die antworten weg und vielleicht die standard junk

Jochen

Fehlermeldung aber haben mit einem Stacktrace oder so.

Jochen

Und genau, dafür ist halt

Jochen

auch noch so ein bisschen, das ist glaube ich

Jochen

eine HTMLX-Extension in JavaScript,

Jochen

die in Django HTMLX drin ist,

Jochen

die dann halt dafür sorgt, dass man

Jochen

eben die normale Django-Fehler-

Jochen

Seite sieht, wenn man, auch wenn

Jochen

HTMLX-Requests halt außerhalb der Seite schiefgegangen ist.

Jochen

Genau, also ich habe es mir auch

Thomas

angeschaut, die Bibliothek,

Thomas

habe das gleiche festgestellt wie du, es ist relativ

Thomas

wenig eigentlich drin und

Thomas

es ist auch wenig notwendig

Thomas

und darum nutze ich es ja auch gar nicht,

Thomas

weil ich habe mir für mich dann nochmal überlegt,

Thomas

wie willst du deine Anwendung gestalten?

Thomas

Also zum einen unterstütze ich nicht JavaScript-lose Browser.

Thomas

Also JavaScript ist für meine Seite jetzt notwendig.

Thomas

Also da ist es schon im 21. Jahrhundert.

Thomas

Aber das ist dann so, dass ich die URLs trenne.

Thomas

Also es gibt den ersten Seitenaufruf

Thomas

und der erste Seitenaufruf bringt eben eine ganz normale HTML-Seite

Thomas

mit einem HTML-Tag, Head-Tag, Body-Tag

Thomas

und HTML wieder zu

Thomas

und ab dann werden eigentlich

Thomas

meistens Schnipsel

Thomas

ausgetauscht und

Thomas

die URLs, wo ich

Thomas

eben ein Schnipsel bekommen will,

Thomas

die liefern immer ein Schnipsel

Thomas

zurück und die werden immer über HTMLX aufgerufen,

Thomas

sodass ich diese Fallunterscheidung

Thomas

serverseitig gar nicht habe, von wegen

Thomas

ist das jetzt ein HTMLX-Request

Thomas

oder nicht. Es gibt glaube ich auch

Dominik

von Django Forms, Django Forms Dynamic

Dominik

oder sowas, dass man da quasi Dango Forms

Dominik

nutzen kann, direkt als HTML Mix Forms.

Dominik

Ah, okay. Das kannte ich noch gar nicht.

Dominik

Das haben wir auch ganz cool dazu.

Dominik

Cool, ja.

Dominik

Das heißt, also Dango Forms kennt ihr vielleicht,

Dominik

da kann man das direkt so einbauen.

Dominik

Das ist immer ganz hilfreich.

Jochen

Ja, ich habe letztens auch das irgendwo gesehen, aber ich habe es

Jochen

mir noch nicht angeguckt.

Jochen

Interessant.

Jochen

Ja.

Jochen

Ja,

Dominik

wir haben so ein bisschen jetzt, glaube ich, über

Dominik

die Syntax gesprochen,

Dominik

das Beispiel und das, was da alles Schönes gibt.

Dominik

Also man macht meistens halt mit diesem

Dominik

Swap-Target oder sowas, ja, also

Dominik

Moment, es gibt Swap und Target, glaube ich, ja.

Dominik

Also das heißt, wir haben, wir sagen quasi, was

Dominik

getauscht werden soll, wohin

Dominik

das getauscht werden soll und

Dominik

wann es getauscht werden soll.

Thomas

Genau, richtig, das mit dem Trigger geht sozusagen

Thomas

los, also bei einem Form muss

Thomas

man den Trigger jetzt gar nicht angeben, weil bei einem Form

Thomas

ist es das Drücken auf den

Thomas

Submit-Button.

Thomas

Aber es gibt eben andere Trigger, wie du

Thomas

vorhin Dominik angesprochen hast,

Thomas

den Revealed-Trigger zum Beispiel.

Thomas

Also ich kann so einen Infinite-Scroll

Thomas

implementieren, indem ich ganz unten

Thomas

eben einen HTML-Schnipsel

Thomas

habe, mit dem

Thomas

Trigger Revealed und der

Thomas

feuert dann, sobald dieses

Thomas

Schnipselchen in den sichtbaren Bereich

Thomas

kommt im Browser.

Thomas

Und das ist natürlich dann relativ cool.

Thomas

Dann kriege ich das Event, dann hole ich mir

Thomas

neue Daten, dann kann ich 5, 6, 7

Thomas

neue Einträge unten

Thomas

machen. Und wenn der Nutzer nach unten

Thomas

scrollt, kommt er wieder nach

Thomas

unten, kommt wieder das Revealed-Event

Thomas

und er holt sich den nächsten Eintrag. Und dann kann man

Thomas

ohne eine Zeile

Thomas

JavaScript zu schreiben, so ein Endless

Thomas

Scrolling implementieren.

Thomas

Und das ist ja eine feine

Thomas

Sache.

Thomas

Wir haben Swap.

Thomas

Swap-Message in der HTML tauschen,

Thomas

Auto-HTML, Target

Thomas

und Out-of-Band gibt es auch noch.

Thomas

Also wenn man zum Beispiel,

Thomas

ich hatte bei mir so eine Art Warenkorb

Thomas

Und wenn ich jetzt bei dem Warenkorb sage, ich kaufe irgendwas ein und sage, ich möchte davon jetzt mehr haben, mache ich sozusagen einen Plus. Dann habe ich erstmal diesen Bereich aktualisiert, wo der Nutzer geklickt hat, weil ich dort will ich statt einer 1 eine 2 anzeigen. Aber jetzt gibt es vielleicht rechts oben noch irgendwie ein Symbol mit Summe aller Waren im Warenkorb oder so.

Thomas

mache ich mit dem ersten, also mit dem

Thomas

eigentlichen Event, tue ich diese eine Zeile austauschen

Thomas

und out of band kommt dann noch

Thomas

dazu, bitte tausche

Thomas

außerdem hier das Element

Thomas

mit der und der ID aus und dann

Thomas

kommt dann dort die neue Zahl

Thomas

für die gesamte Summe.

Thomas

Das gibt es auch noch, das out of band

Thomas

Aktualisierung von Daten

Thomas

angekommen ist. Also man kann eben zusätzlich

Thomas

out of band, also wenn der Server

Thomas

weiß, hier ich möchte noch was aktualisieren,

Thomas

Was aber jetzt nicht in dem aktuellen Schnipsel mit aktualisiert wird, kann der Server out of band noch ein zusätzliches Schnipsel mitschicken, was dann eben am Client aktualisiert wird.

Thomas

Der Anwendungsfall war eben so eine Art Warenkorb. Man klickt unten bei dem einen Artikel plus, dann weiß ich, jetzt habe ich jetzt zweimal diesen einen Artikel.

Thomas

Aber oben, rechts oben als Beispiel, ist so ein Einkaufswagensymbol und da will ich die Summe aller Waren anzeigen.

Thomas

kann ich damit eben das auch aktualisieren.

Thomas

Also an zwei Stellen. Einmal diese

Thomas

unten bei der eigentlichen Ware

Thomas

und oben im Warenkorb.

Thomas

Das ist auch nur so ein ganz nettes Feature

Thomas

von dem HTMX.

Thomas

Ja, was gibt's

Thomas

sonst noch zu sagen?

Thomas

Ja, auch solche Sachen, dass man

Jochen

da fand ich auch nett

Jochen

sagen kann, okay,

Jochen

lad mal dieses Element

Jochen

alle zwei Sekunden nach. Das ist halt auch so ein

Jochen

Anwendungsfall

Jochen

für Outer-HTML, da könnte man sich auch fragen, wozu braucht man eigentlich

Jochen

Outer und Inner? Weil

Jochen

wenn man das komplette Element ersetzt,

Jochen

dann werden halt auch die

Jochen

HTMLX-Attribute mit ersetzt. Und man kann zum Beispiel

Jochen

dann von der Server-Seite her

Jochen

steuern, wie lange

Jochen

irgendwas dann, also man könnte zum Beispiel

Jochen

machen halt irgendwie einen Newsticker oder sowas

Jochen

und sagt halt, alle zwei Sekunden

Jochen

werden da neue Daten geladen.

Jochen

Und dann kann man von der Server-Seite aber sagen, wenn man das

Jochen

komplette Element austauscht, okay, man nimmt diesen

Jochen

Trigger raus, irgendwann

Jochen

nach zehn Minuten oder so, und dann

Jochen

halt keine neuen, wird halt

Jochen

nicht mehr gepollt quasi.

Jochen

Und dafür muss man dann das komplette Element

Jochen

ersetzen, dann braucht man halt Auto-HTML.

Jochen

Ja, also genau, solche Sachen kann man auch

Jochen

sehr einfach machen.

Jochen

Was gibt's noch?

Jochen

Ja, genau,

Jochen

überhaupt diese Geschichten, wenn vom Server

Jochen

Sachen kommen, da weiß ich auch noch

Jochen

nicht so genau, wie das dann, gibt's

Jochen

Support für Websockets oder solche Sachen?

Thomas

Ja, ja, WebSocket-Support

Thomas

gibt's, habe ich aber selber jetzt noch

Thomas

nicht ausprobiert. Und es wird

Thomas

aktuell eben die Bibliothek

Thomas

aktualisiert, dass WebSockets zu einem

Thomas

externen Paket wird.

Thomas

Dass man also das gar nicht mehr per Default

Thomas

drin hat, sondern

Thomas

dann sich selber nachladen muss.

Thomas

Ich persönlich finde es gut, das hält die

Jochen

Bibliothek klein. Ja, die meisten Leute brauchen

Thomas

das halt nicht, denke ich mal. Genau, und dann kann man es auch

Thomas

auslagern.

Thomas

Ja, ich glaube,

Thomas

Server-Send-Events

Jochen

Support dafür ist auch irgendwie drin.

Jochen

Da dachte ich auch so,

Jochen

habe ich irgendwann letztens nochmal

Jochen

geguckt, was das denn wirklich ist, weil das habe ich nie so,

Jochen

das ist zwar schon uralt und gibt es total lang, aber

Jochen

ich wusste nie so richtig, was das ist.

Jochen

Aber ja, es ist halt auch eigentlich nichts Besonderes.

Jochen

Und vor allen Dingen, es belegt halt auf dem Server auch,

Jochen

man muss halt eine Verbindung offen halten, nur

Jochen

dass man halt vom Client

Jochen

aus nichts zurückschicken kann, sondern es ist halt eine

Jochen

Verbindung, die immer offen bleibt, wo man

Jochen

vom Server halt irgendwie Daten

Jochen

an den Client schicken kann.

Jochen

Aber ja, also mit Django geht das nicht gut.

Jochen

Aber man muss halt dafür Django Channels halt verwenden.

Jochen

Ja, genau.

Thomas

Eine Sache fällt mir noch ein,

Thomas

mehr so eine allgemeine Sache.

Thomas

Viele sind ja Freunde dieser JSON-APIs,

Thomas

weil sie sich dann denken,

Thomas

ah, super, dann habe ich ja eine API

Thomas

und damit kann ich zum einen ein Webfrontend machen

Thomas

und zum anderen kann ich da eine API anbieten

Thomas

für eine Maschine, Maschinenkommunikation.

Thomas

Und das ist aus meiner Sicht Blödsinn.

Thomas

Weil man da zwei ganz verschiedene Anwendungsfälle zusammenwürfelt.

Thomas

Also bei einer GUI, da will ich super agil sein,

Thomas

die will ich täglich aktualisieren können,

Thomas

da will ich täglich deployen können

Thomas

und da sollen sich auch täglich kleine Änderungen ergeben können.

Thomas

Weil das den Nutzer in der Regel nicht stört,

Thomas

wenn das so ein kleines bisschen irgendwie anders ist,

Thomas

nur ein kleines bisschen verbessert wird

Thomas

kontinuierlich.

Thomas

Wenn ich aber eine Maschine zur Maschinenkommunikation

Thomas

haben, ist sowas wie

Thomas

A-B-Testing vollkommener Schwachsinn.

Thomas

Natürlich, ich werde ja nicht

Thomas

einer Maschine sagen,

Thomas

du kriegst die API und

Thomas

der andere Client kriegt

Thomas

diese APIs und diese Daten.

Thomas

Das ist ja vollkommen konträre, ganz

Thomas

verschiedene Anwendungsfälle.

Thomas

Und drum, das war bei mir

Thomas

anfangs bei Angular, wo ich dachte, oh cool,

Thomas

eine API und da kann ich dann

Thomas

GUI entwickeln und außerdem

Thomas

eben da einen maschinellen

Thomas

Zugriff auf dieser Seite haben. Aber es sind eben

Thomas

zwei ganz getrennte Dinge, die auch

Thomas

ganz

Thomas

getrennt behandelt werden sollten.

Thomas

Und da

Thomas

könnte man ja dann auch dann sagen, na gut, wenn ich

Thomas

Maschine-Maschine-Kommunikation machen will,

Thomas

könnte man ja sowas wie gRPC

Thomas

einsetzen, was dann im Endeffekt

Thomas

auch mehr Datentypen unterstützt

Thomas

und insgesamt optimaler ist.

Dominik

Jetzt sind wir wieder, wir haben noch nicht genau

Dominik

RPC erklärt und jetzt kommst du gleich mit gRPC an.

Dominik

Ich muss erklären, was das ist.

Thomas

Das gRPC ist

Thomas

eine Technologie von Google

Thomas

und das ist ein binäres

Thomas

RPC, also Remote Procedure Call

Thomas

Methode

Thomas

und das ist

Thomas

sehr effizient und schnell.

Thomas

Es ist auch

Thomas

Arschima-basiert, also du musst

Thomas

klar, der Server

Thomas

sagt klar, was für Daten er austauscht

Thomas

und das wird

Thomas

im Kubernetes-Bereich

Thomas

oder so ähnlich

Thomas

dann auch stark verwendet.

Thomas

Aber halt bei den Web-Entwicklern ist

Thomas

gRPC noch nicht angekommen und

Thomas

das wird wahrscheinlich auch noch ein bisschen dauern,

Thomas

bis das da bekannt

Thomas

und verstanden wird, um was es da eigentlich geht.

Thomas

Ja.

Thomas

Naja, da ist JSON

Jochen

schon so das Ding, was man...

Jochen

Also ich meine, es gibt ja im Grunde keinen

Jochen

wirklichen Grund, warum man jetzt irgendwie...

Jochen

Außer, dass man halt das JSON irgendwie nahe

Jochen

liegt, wenn man jetzt

Jochen

JavaScript macht, aber ansonsten

Jochen

gibt es ja gar keinen Grund dafür,

Jochen

dass man könnte halt auch irgendwie

Jochen

andere

Jochen

Datenformate halt benutzen.

Jochen

Bei Jungle REST Framework war das ja auch mal so, da konnte man halt auch

Jochen

ich glaube, ich weiß nicht, ob das heutzutage noch

Jochen

jemand macht, aber früher war das halt durchaus

Jochen

üblich da zu sagen, okay, ich rendere

Jochen

meinen Kram nicht nach JSON, sondern nach XML.

Jochen

Oder wie heißt dieses, es gibt auch

Jochen

ein Binär-JSON.

Jochen

B-JSON?

Jochen

JSON-B gibt es.

Jochen

Ja, nee, das ist, ach, ich hab's wieder vergessen, aber ja, es gibt irgendwie auch eine binäre Variante davon, die man auch mit Jungle Wrestling ganz gut verwenden konnte, da wurde es halt ein bisschen kleiner, aber ja, tatsächlich benutzen aber doch irgendwie alle JSON letztlich.

Thomas

Ja, aktuell. Ich bin da ehrlich gesagt ganz tiefenentspannt. Also um 2001 habe ich meine Diplomarbeit geschrieben und klar, was war das Thema? XML. Also damals ging alles um XML und auch das HTML sollte XML werden und so weiter. Dann bin ich ja so froh, dass dann dort irgendwie die Vernunft gesiegt hat und das XHTML sich nicht durchgesetzt hat.

Thomas

und eben, weil das ist

Thomas

am Endeffekt dann auch nur Krampf, wenn man

Thomas

das zu sehr in die Richtung treibt

Thomas

und wie gesagt, damals war

Thomas

alles mit XML, aktuell

Thomas

ist alles mit JSON und

Thomas

da bin ich auch ganz tiefenentspannt, dass da dann

Thomas

irgendwie auch nochmal was Neues kommt.

Thomas

So ist auf jeden Fall

Thomas

die Entwicklung aus meiner Sicht.

Jochen

Ja, naja, da ist

Jochen

noch nicht

Jochen

aller Tage Abend, was diese

Jochen

jetzt alle auf JSON geeinigt hätten,

Jochen

das sehe ich auch nicht so.

Jochen

Ich meine, ehrlich gesagt, ich finde es

Jochen

persönlich angenehmer als XML. XML war doch mal

Jochen

ein Stück schrecklicher.

Dominik

Das ist so ein Grund, wo ich sage, den Computer

Dominik

will ich nicht anfassen.

Dominik

Das ist komisch, ganz komisch.

Dominik

Wirklich.

Dominik

Ja, klar, da gab es die größten

Thomas

komischen Sachen wie XSLT

Thomas

und sowas, aber das ist lange her.

Dominik

Viel schlimmer als Assembly oder sowas.

Dominik

Tja, ja. Aber wir haben doch einige Sachen nicht erklärt.

Dominik

Und zwar, wie hieß der nochmal?

Jochen

Carsten Gross, glaube ich,

Jochen

weil er möchte wahrscheinlich vermeiden,

Jochen

dass man ihn tauern muss.

Jochen

Sorry.

Jochen

Jedenfalls hat er so einen Talk gehalten

Dominik

und da hat er auch viel über Haters gesprochen.

Dominik

Also Hater, ich habe einen noch.

Dominik

Entschuldigung.

Jochen

Das Akronym ist auch ein bisschen unglücklich.

Jochen

Ja, sehr gut.

Dominik

Was ist denn das und worum geht es denn da?

Jochen

Da hatten wir eigentlich schon drüber gesprochen.

Dominik

Ja, weil da gibt es ja schon Beispiele auch

Dominik

auf der Seite von htmx.

Thomas

Ich persönlich kann dazu halt nur sagen,

Thomas

dass ich es nicht weiß und mich interessiert es auch nicht.

Thomas

Das ist sein Steckenpferd

Thomas

und er zählt viel und redet viel.

Thomas

Aber mir ist es zu abstrakt.

Thomas

Ich halte mich aus den Diskussionen

Thomas

da auch raus, was das heißt, was das Hato ist

Thomas

oder irgendwas.

Thomas

Für mich ist HTTP greifbar,

Thomas

HTML ist für mich greifbar und so weiter.

Thomas

Aber das ist mir dann

Thomas

zu abstrakt und

Thomas

da kann ich nicht viel zu sagen.

Thomas

Wahrscheinlich haben wir

Dominik

tatsächlich darüber geredet, wenn das halt, also die Übersetzung

Dominik

von Haters ist

Dominik

Hypermedia at the Engine of Application State.

Dominik

Also da geht es so ein bisschen darum, dass halt

Dominik

tatsächlich die

Dominik

Quelle der Wahrheit dann

Dominik

an der richtigen Stelle steht, und zwar

Dominik

im HTML, und ich weiß auch nicht mehr,

Dominik

was er mit Hypermedia meint.

Dominik

Hypermedia ist im

Jochen

Webkontext HTML.

Jochen

Obwohl, die Quelle

Thomas

der Wahrheit ist für mich einfach Postgres.

Thomas

Das sind die Daten, da kann man den Strom

Thomas

ausschalten, dann kann man den Strom wieder

Thomas

anschalten, dann weiß ich, wo meine

Thomas

Daten sind, die sind im Postgres drin.

Thomas

Und ja, das ist

Thomas

dort, das ist eben

Thomas

meine Perspektive.

Jochen

Ja, aber genau, gut, das sind dann halt

Jochen

deine Datenhaltung, aber

Jochen

der Application State

Jochen

ist ja jetzt nicht unbedingt in der,

Jochen

da hast du ja auch noch andere Sachen, da hast du ja auch noch

Jochen

solche Sachen wie

Jochen

dein Cache oder du hast halt vielleicht

Jochen

irgendwelche Queues und

Jochen

du hast halt auch noch irgendwie eine Session

Jochen

und ganz viel Zeugs.

Jochen

Aber klar, natürlich,

Jochen

also, ja, die Frage ist halt,

Jochen

ja, also bei alles, was sozusagen im Browser

Jochen

passiert, ist halt in dem HTML halt irgendwie drin.

Jochen

Das ist halt so ein Ding, diese HATI

Jochen

ist Geschichte, aber ja, ich finde das auch

Jochen

ziemlich kompliziert und theoretisch

Jochen

und das ist sehr schwer, das zu erklären.

Jochen

Ich finde das ähnlich wie

Thomas

Dependency Injection, da kann man sich

Thomas

das hundertmal erklären lassen und dann

Thomas

sage ich immer, für mich ist es wie Konfigurierung.

Thomas

Aber keine Ahnung,

Thomas

das ist mir zu abstrakt dann einfach.

Thomas

Ja, weil man

Dominik

den Talk schaut und erklärt das halt so ein bisschen,

Dominik

das ist vielleicht ganz gut, wenn man das vielleicht so ein bisschen versteht.

Dominik

Aber den Talk müssen wir natürlich auch verlinken,

Dominik

der ist ja natürlich sehr bahnrecht.

Dominik

Ja, okay.

Jochen

Ja, aber da am besten hört man sich genau

Jochen

den Talk dann an und nicht uns, wie wir

Jochen

darüber reden.

Jochen

Ja, das ist wahrscheinlich so.

Thomas

Ich kann da nicht mitreden.

Thomas

Dann habe ich noch eine Frage irgendwo.

Thomas

Ich sehe da, wo sind die Grenzen?

Thomas

Wann sollte man tatsächlich auf React oder Vue umsteigen?

Thomas

Da kam vorher mal so eine Frage.

Thomas

Da sehe ich aktuell eigentlich keinerlei Grenzen.

Thomas

Es erinnert mich so, wie ich vor 20 Jahren mit Python angefangen habe.

Thomas

Und da war eben so eine Sache in der Firma.

Thomas

Wollen wir das nicht lieber mit Python machen, anstatt aus einer Mischung aus C, C++ und Shell-Skripten? Und dann hieß es, naja, da konnte ich ja bloß herausboxen, dass wir für den Prototypen Python nehmen. Aber danach muss es sozusagen dann mal richtig gemacht werden.

Thomas

Richtig, richtig, C++ und so.

Thomas

Ja, und das war ich sehr froh, dass ich diesen Kompromiss rausboxen konnte.

Thomas

Und im Endeffekt hat nie jemand dann nochmal nachgefragt,

Thomas

wir sollten das ja in C oder C++ machen, weil einfach die Kunden zufrieden waren.

Thomas

Das hat schnell funktioniert, war alles prima.

Thomas

Und da kamen reihenweise neue Wünsche von den Kunden,

Thomas

sodass dann das eben nie wirklich richtig gemacht werden musste,

Thomas

wo ich auch sehr froh

Thomas

drüber bin und so und ähnliches

Thomas

ist es jetzt auch hier. Jetzt könnte man sagen,

Thomas

ja dann, wenn man es richtig macht, dann müsste man es doch

Thomas

in Vue oder React machen, aber

Thomas

keine Ahnung, ich sehe da jetzt keinerlei

Thomas

Grenzen.

Thomas

Ja.

Thomas

Ich würde auch sagen,

Jochen

man kann damit wahrscheinlich

Jochen

für die allermeisten Sachen

Jochen

ausreichend viel machen. Ja, das einzige Problem ist wahrscheinlich,

Dominik

dass man wieder wie immer von vorne anfangen muss, dass

Dominik

einmal alles wieder schön mit der

Dominik

anderen Technologie bauen muss oder so, dass

Dominik

Change immer das Pain ist. Das war

Dominik

wahrscheinlich auch der Grund, warum die Leute und die

Dominik

Menschen bei dir dachten, mit C++ schreibt man bessere

Dominik

Web-Anwendungen oder so?

Dominik

Wenn es eine Web-Anwendung war, das war das natürlich nicht.

Thomas

Ja, das war damals auch

Thomas

im Web passiert, aber auch viel

Thomas

Backend, aber das war halt einfach

Thomas

so üblich. Das war unüblich

Thomas

und das Unübliche

Thomas

wird natürlich erstmal in Frage gestellt und

Thomas

da ist klar, ist erstmal kein Vertrauen da.

Thomas

Es ist ja immer so, wenn irgendwas neu ist, ist erstmal kein Vertrauen

Thomas

da und wenn

Thomas

je schneller etwas hypt, umso schneller

Thomas

ist auch die Wahrscheinlichkeit, dass es dann eben in zwei Jahren

Dominik

doch wieder weg ist. Naja, aber so haben wir jetzt immer schon

Dominik

gemacht, dass er Teil des Problems ist, der Lösung.

Jochen

Ja, aber ich würde auch sagen,

Jochen

dass es halt sehr, sehr mächtig, also ich würde

Jochen

auch sagen, dass es halt vielleicht

Jochen

einer der Gründe,

Jochen

warum halt so viel

Jochen

Frameworks,

Jochen

ja, Frameworks sind ja auch schon

Jochen

so Dinge, wo ich jetzt als Entwickler

Jochen

ehrlich gesagt sagen würde, das will

Jochen

ich gar nicht haben.

Jochen

Frameworks sind nicht meine Freunde.

Jochen

Und das ist mir durchaus klar.

Jochen

Ich will eigentlich möglichst wenig mit Frameworks

Jochen

zu tun haben. Also eins, das du kannst.

Jochen

Bitte? Eins, das du kannst.

Jochen

Ich will eigentlich keine Frameworks verwenden.

Jochen

Weil das Problem bei Frameworks

Jochen

ist natürlich, dass ich da halt eine richtig fiese,

Jochen

harte Kopplung,

Jochen

enge Kopplung dran habe und dass

Jochen

ich davon nicht mehr wegkomme. Und deswegen

Jochen

finde ich als Entwickler das natürlich

Jochen

gar nicht so angenehm.

Jochen

Auf der anderen Seite gibt es halt einen großen Druck,

Jochen

die zu verwenden. Aber der kommt ja meistens

Jochen

nicht von den Entwicklern, sondern der kommt ja meistens

Jochen

dann halt, und ich würde denken,

Jochen

dass bei den JavaScript-Frameworks ist das halt so.

Jochen

Das sind halt irgendwie

Jochen

Firmen,

Jochen

die halt vorher eine Applikation

Jochen

haben. Das habe ich jetzt auch aus der Nähe

Jochen

in letzter Zeit irgendwie oft

Jochen

bestaunen dürfen. Jetzt gerade was

Jochen

irgendwie in dieser Pandemie-Zeit

Jochen

halt irgendwie, die haben halt Applikationen

Jochen

so irgendwie halt tatsächlich in C++ geschrieben

Jochen

oder Java oder sowas,

Jochen

die auf

Jochen

Clients laufen,

Jochen

die auf dem Desktop laufen und

Jochen

die dann halt irgendwie mit einem Server reden

Jochen

oder halt irgendwas, was auch immer die dann tun.

Jochen

Und das funktioniert aber nicht so gut,

Jochen

weil irgendwie, wenn die Leute jetzt

Jochen

zu Hause sitzen, dann den kannst du dann zum Beispiel

Jochen

einfach nicht mehr so gut, also deren Rechner

Jochen

hast du nicht so richtig unter Kontrolle,

Jochen

dann irgendwie Netzwerk

Jochen

ist oft schlecht, irgendwie

Jochen

das funktioniert alles nicht so super.

Jochen

Dann hilft bloß halt so ein Citrix oder

Thomas

eine Desktop-Sache oder irgendwas.

Jochen

Genau, das ist dann eine Lösung, aber das ist halt auch

Jochen

schrecklich und

Jochen

im Zuge

Jochen

dieses Erkenntnisprozesses, dass dann

Jochen

viele sagen, oh, das ist ja alles ganz furchtbar, das funktioniert ja gar nicht,

Jochen

stellen jetzt ganz viele

Jochen

um auf webbasierte Geschichten, weil

Jochen

mit webbasierten Geschichten geht das halt.

Jochen

Klar.

Jochen

Und naja, wenn ich jetzt

Jochen

sozusagen irgendwie eine große

Jochen

grafische

Jochen

GUI-Anwendung umstelle

Jochen

halt auf irgendwas webbasiertes, naja,

Jochen

dann ist halt sehr naheliegend zu sagen,

Jochen

okay, ich habe hier mein Team mit irgendwie

Jochen

50, 100 Leuten, keine Ahnung, irgendwie

Jochen

ein paar Teams aufgeteilt und die haben halt

Jochen

ihren Build-Prozess und keine Ahnung,

Jochen

ihre Tools und die Architektur-Patterns, die sie halt

Jochen

irgendwie verwenden. Gibt es da nicht vielleicht

Jochen

irgendein Enterprise-Web-Framework,

Jochen

das ich verwenden kann, wo ich das dann quasi genauso

Jochen

machen kann? Und dann greifen wir

Jochen

halt vielleicht zu Angular

Jochen

irgendwie oder so, weil das halt so ähnlich ist.

Jochen

Und halt auch dieses ganze Framework

Jochen

irgendwie Sprech und

Jochen

Enterprise-Sprech halt da mit drin ist.

Jochen

Und das Problem

Jochen

dabei ist aber natürlich, dass man das eben nicht machen

Jochen

kann. Du kannst nicht einfach irgendwie eine große

Jochen

Applikation nehmen, du kannst halt irgendwie dann

Jochen

das quasi genauso, wie du es

Jochen

vorher gemacht hast, halt mit JavaScript machen und dann ist es halt

Jochen

eine Web-Anwendung. Das funktioniert halt nicht, sondern du musst

Jochen

eigentlich dir überlegen, okay, die

Jochen

muss dann halt anders funktionieren, weil Web-Anwendungen

Jochen

halt nun mal einfach anders funktionieren als diese

Jochen

klassischen

Jochen

Desktop-UI-Ideen. Ja, dann müsste jemand auf jeden Fall

Dominik

erstmal den Unterschied verstehen, was

Dominik

vielleicht schon eine Herausforderung ist. Und dann

Dominik

muss ja jemand, der den Unterschied verstanden hat, den Leuten, die das

Dominik

entscheiden, auch erklären, dass das auch die richtige

Jochen

Idee ist, das zu tun. Aber das Problem ist jetzt,

Jochen

stell dir vor, du bist derjenige, der zuständig ist für diese Entwickler

Jochen

und du weißt, die kennen jetzt aber ihr

Jochen

sonst was Framework halt und

Jochen

wie kriegst du die beschäftigt mit

Jochen

der Umstellung auf

Jochen

irgendwas Web-basiertes?

Jochen

Ohne, dass du die ein Jahr lang schulen

Jochen

musst oder keine Ahnung, wie der

Dominik

Produktivität so beeinträchtigt. Ich würde fürchten, das geht nicht so einfach.

Jochen

Ja, aber wenn du halt dann ganz verzweifelt

Jochen

genug bist, denkst du dir, vielleicht geht es mit Angular.

Jochen

Und dann sagst du... Ich würde sagen, ohne

Dominik

diese Schulung geht das nicht so einfach.

Jochen

Ja. Also es ist einfach eine schwierige Situation

Jochen

auch. Genau.

Dominik

Also wenn du die Sprache wechseln musst, ist das natürlich

Dominik

schon mal schwierig. Das heißt,

Dominik

vielleicht ist es gut tatsächlich, wenn man irgendwie vor

Dominik

Desktop-GUI-Anwendung

Dominik

in Python geschrieben hat.

Dominik

Dann kann man vielleicht auch Web-Anwendung in Python schreiben,

Dominik

obwohl ich auch schon finde, dass jetzt Django schon sehr anders ist

Dominik

als GUI-Sachen in Python schreiben,

Dominik

was man ja bestimmt unbedingt machen will.

Dominik

Naja.

Dominik

Also ich glaube,

Dominik

diesen Plattformwechsel, den kriegst du nicht so

Dominik

einfach hin. Also ich wüsste jetzt auch nicht so genau,

Dominik

wie ich jetzt eine Android-Anwendung

Dominik

entwickeln will in gut.

Dominik

Ja, klar, das ist

Dominik

nicht einfach, aber

Thomas

das ist eine

Thomas

Aufgabe.

Thomas

Aber langsam, oder sicher geht

Thomas

alles Richtung Web. Also für mich ist

Thomas

der Chromium mein neuer Desktop.

Thomas

Also ich schalte zwischen

Thomas

Tabs hin und her, die im Chromium

Thomas

drin sind. Und

Thomas

Native GUI habe ich nur noch den

Thomas

PyCharm und ansonsten

Thomas

eigentlich nichts.

Dominik

Du bist auch einer von diesen PyCharm-Nutzern, okay, verstehe.

Dominik

Ja.

Dominik

Ach, finde ich, kann man schon machen.

Dominik

Du hast ja auch in letzter Zeit viel PyCharm benutzt,

Dominik

ja, ja, ich habe das auch schon gemerkt.

Jochen

Ja, wobei, also ich meine, ich weiß nicht, wie dir das geht,

Jochen

also tatsächlich mich benervt bei PyCharm,

Jochen

dass es halt relativ langsam reagiert.

Jochen

Ja, das letzte, habe ich letztens irgendwo gelesen,

Jochen

hat jemand, David Beasley hat das, glaube ich,

Jochen

irgendwie in einem seiner Readmes zu irgendeinem anderen Softwareprojekt,

Jochen

hat er da sehr, sehr, sehr bösartige Dinge über Java gesagt.

Jochen

Und zwar meinte er so, ja, Java, ach, der spricht nicht von Java,

Jochen

sondern er sagte, es gibt ja so diese

Jochen

Programmiersprache, ihr wisst schon, sie reimt sich auf

Jochen

Lava und

Jochen

da ist es immer so, die erkennt man

Jochen

immer daran, dass

Jochen

also an diesem Moment

Jochen

peinlicher Stille,

Jochen

bevor die Lüfter dann losheulen,

Jochen

das ist halt...

Jochen

Obwohl, das

Thomas

Weitscham ist flüssig zu bedienen, also da kann man

Thomas

echt, findest du?

Thomas

Braucht man halt den aktuellen

Thomas

SSD, so und

Thomas

also doch, läuft eigentlich schon.

Jochen

Nee, also ich meine vor allen Dingen bei Pyjamas solche Sachen, wie man drückt auf irgendeinen Button oder man macht halt eine Tastenkombination. Also man macht zum Beispiel sowas wie irgendwie, bei mir ist es Command 0 oder Command 1 für irgendwie den Verzeichnisbaum aufmachen oder halt Git-Dings aufmachen, zumachen. Und ich habe immer das Gefühl, wenn ich das draufdrücke, da sind so 100 Millisekunden Verzögerung oder so, bevor da irgendwas passiert. Und das nervt fürchterlich, weil das halt, ja.

Dominik

Ich habe übrigens angefangen,

Dominik

Jochen, dieses Jahr, und das habe ich mir auch

Dominik

fest vorgenommen, mein VI einzurichten

Dominik

und mal zu gucken, ob ich den

Dominik

vernünftig zu laufen kriege.

Dominik

Ja, muss man machen.

Dominik

Ja, es nervt ein bisschen.

Dominik

Ansonsten, PyCharm finde ich

Jochen

eigentlich tatsächlich, nachdem ich das jetzt eine ganze Zeit lang benutzt

Jochen

habe, ziemlich, also von den Features

Jochen

und so, finde ich das total super. Da ist das echt gut.

Jochen

Es ist

Jochen

ziemlich complete und

Jochen

ja, ist alles durchdacht, aber

Jochen

irgendwie, dass es halt so ein bisschen, sich so ein bisschen

Jochen

äh, ja.

Jochen

Ich find's hässlich. Langsam anfühlt, ja gut,

Jochen

das ist halt eine andere, ja.

Jochen

Persönliches Empfinden, aber

Dominik

vielleicht kann ich auch so stylen, wie ich meine anderen Sachen style

Dominik

und dann macht das auch gar keinen Unterschied mehr.

Jochen

Ja, aber tatsächlich,

Jochen

das mit Chromium ist halt neu, deshalb ich meine da auch

Jochen

da irgendwie VS Code, ich weiß nicht, ob du

Jochen

schon mal VS Code ausprobiert hast?

Jochen

Ich hab's mal ausprobiert,

Jochen

aber

Thomas

ja, mehr kann ich nicht dazu sagen.

Thomas

Ja, ich hab meistens auch, eigentlich gar keine Ahnung,

Thomas

ich muss das auch mal, es steht auch auf der Liste,

Thomas

aber kommt nach wie ein dran.

Thomas

Ja, weil da ist

Jochen

es ja auch irgendwie ein Krumm drunter und das

Jochen

funktioniert eigentlich tatsächlich auch ziemlich

Jochen

gut. Ich würde sagen, tatsächlich,

Jochen

es ist nicht so komplett

Jochen

wie PyCharm, es ist auch nicht so durchdacht

Jochen

und so, aber es ist

Jochen

tatsächlich, wenn man da irgendwie

Jochen

Command-B oder das ist schneller als

Jochen

bei PyCharm.

Thomas

Ja, kann schon sein, aber

Thomas

beim Laptop und auch selbst auf meinem

Thomas

Vorgänger ging es eigentlich gut. Er hatte

Thomas

mal irgendwie Probleme, also irgendein Verzeichnis

Thomas

indiziert hat, wo er eigentlich

Thomas

rein indizieren sollte.

Thomas

Da hat er ganz schön zu tun gehabt.

Thomas

Aber das kann man dann auch exkluden, dass er da

Thomas

nicht reingucken soll, weil da eben

Thomas

zigtausend Dateien drin sind und dann

Thomas

hat er auch auf dem Wettbewerb.

Thomas

Kann ich erstmal nicht glauben.

Jochen

Vielleicht habe ich auch irgendwas falsch konfiguriert, das kann natürlich auch sein.

Jochen

Was ich auch mal hatte, da hat es mir immer den Akku leer gesaugt.

Jochen

Da habe ich die

Jochen

JVM für Intel

Jochen

auf meinem

Jochen

ARM

Jochen

Mac verwendet.

Jochen

das lief dann in der Emulation und das war

Jochen

irgendwie auch ganz schrecklich, das hatte, da dachte ich mir so,

Jochen

hä, warum zieht denn das so viel Akku, das ist ja irgendwie

Jochen

und dann musste ich eine andere JVM

Jochen

nehmen und dann war es gut und dann

Jochen

funktioniert das auch, aber ja.

Jochen

Ja, aber ein, was

Thomas

fiel mir noch ein zu

Thomas

JavaScript und den ganzen

Thomas

Spaßsachen, was ich ja

Thomas

schön finde, dass das HTML sich immer

Thomas

noch weiterentwickelt

Thomas

und vorangetrieben wird,

Thomas

sodass man im Endeffekt dann

Thomas

weniger schreiben muss.

Thomas

Zum Beispiel ein Date-Picker

Thomas

oder irgendwas. Wenn man danach sucht, da gibt es

Thomas

tausend Implementierungen

Thomas

von Date-Pickern.

Thomas

Aber ich als Web-Anwender will

Thomas

einfach dann nur fertig werden und da

Thomas

ist es einfach schön, wenn ich sagen kann,

Thomas

Input-Type ist gleich Date zum Beispiel

Thomas

oder eben Input

Thomas

Date-Time-Local, um eben

Thomas

Date und Zeite zu picken

Thomas

und das finde ich

Thomas

spannend, dass sich da halt das immer noch alles entwickelt

Thomas

und die Spezifikation

Thomas

gibst. Und sicherlich

Thomas

ist es leider noch so,

Thomas

dass eben unter iOS

Thomas

kein richtiger Chrome

Thomas

verfügbar ist. Das ist ein bisschen schade.

Thomas

Dieses Apple

Thomas

Browser Ban.

Thomas

Aber kann durchaus sein,

Thomas

dass da die EU

Thomas

dem bald einen Riegel vorschiebt

Thomas

mit dem Digital Market Act.

Thomas

Es wäre sehr schön,

Thomas

weil da kannst du

Thomas

als einzelner Webentwickler ja auch von nieder springen

Thomas

und vielleicht kommt auch

Thomas

doch mal von der Legislative da irgendwas,

Thomas

weil es ist einfach ein Markt,

Thomas

der Apple Play Store und

Thomas

es ist ein globaler Markt und

Thomas

das dann dort zu diskriminieren

Thomas

gegenüber anderen Browsern

Thomas

ist einfach nicht in Ordnung.

Thomas

Also hoffen wir mal,

Thomas

dass dort das vorwärts geht,

Thomas

weil dann ist nochmal mehr Druck da,

Thomas

dass die Safari

Thomas

Engine mal vorwärts macht und dass die

Thomas

da nicht das absichtlich

Thomas

blockieren können. Es wird ja absichtlich blockiert,

Thomas

damit sie weiterhin schön Geld

Thomas

verdienen innerhalb ihres App-Stores

Thomas

und darum hat Apple überhaupt keinen Bock

Thomas

drauf auf Progressive Web Apps.

Thomas

Das ist halt vielen Leuten nicht bekannt.

Thomas

Wenn man mit Leuten

Thomas

darüber spricht, die jetzt nicht aus dem

Thomas

Software-Bereich kommen, die verstehen das erstmal gar nicht,

Thomas

von was man da spricht.

Thomas

Und naja, hoffen wir mal, dass da

Thomas

irgendwie das in der Richtung auch

Thomas

weitergeht, weil

Thomas

dann geht es eben Richtung

Thomas

Progressive Web Apps. Gut, okay,

Thomas

das ist natürlich wieder eine Sache.

Thomas

Aufhänger HTMX, also

Thomas

HDMI-XS ist sozusagen

Thomas

auf keinen Fall

Thomas

Offline-First oder irgendwas, was man braucht,

Thomas

die Verbindung zum Server,

Thomas

das ist sozusagen, ja,

Thomas

sind ganz zentrale Sachen

Thomas

an dieser Stelle.

Thomas

Wenn man dann richtografisch Web-App

Thomas

schaut, dass man sagt, okay, man hat eine

Thomas

Offline-Fähige

Thomas

Web-Anwendung, klar, dann ist es

Thomas

mit JavaScript natürlich besser.

Thomas

Aber

Thomas

99% der Fälle

Thomas

braucht man das eigentlich auch gar nicht.

Jochen

Offline-First war auch mal eine ganze Zeit lang.

Jochen

Das kam irgendwie so aus dieser ganzen

Jochen

Couch-DB-Ecke und

Jochen

eigentlich finde ich den Ansatz ja auch ganz

Jochen

interessant irgendwie.

Jochen

Halt quasi auch

Jochen

eine Datenbank einfach auf der kleinen Seite zu haben

Jochen

und da gibt es ja auch diverse Geschichten in den Browsern.

Jochen

Also gibt es ja auch irgendwie, weiß ich nicht mehr,

Jochen

quasi so ein SQL-Lite

Jochen

haben die meisten irgendwie drin, was man verwenden kann

Jochen

und dann synchronisiert man das halt

Jochen

wieder zurück irgendwie und so. Das ist eigentlich auch alles ganz nett.

Jochen

Aber

Jochen

ja, tatsächlich

Jochen

genau, war das dann aber doch nie so

Jochen

nötig, weil inzwischen ist ja doch fast überall Netz

Jochen

und es funktioniert eigentlich auch ganz gut.

Jochen

Verzehnfacht

Thomas

einfach die Komplexität

Thomas

und den Aufwand.

Thomas

Und drum geht eigentlich alles Richtung

Thomas

ständige Verbindung

Thomas

zum Internet. Also es gibt ja ganz

Thomas

wenige Sachen, wo es eigentlich wirklich braucht, wenn ich

Thomas

will. Ich will, wenn ich in der Bahn bin und habe keine Netz

Thomas

Anbindung, will ich eine WhatsApp-Nachricht

Thomas

schreiben können oder ich will eine E-Mail schreiben und

Thomas

lesen können. Aber für alle möglichen

Thomas

anderen Sachen brauchst du einfach auch den Server,

Thomas

weil der hat ja die aktuellen Informationen

Thomas

und du kannst ja nicht aus den Fingern saugen

Thomas

und brauchst halt eben

Thomas

die Zwergverbindung.

Thomas

Und drum klappt das erstmal so

Thomas

eigentlich ganz gut,

Thomas

auch kann man ganz gut viel abdecken.

Thomas

Eine Frage habe ich mir noch aufgeschrieben,

Thomas

ganz zentral ist eigentlich gut,

Thomas

also wir erstellen jetzt HTML

Thomas

serverseitig und irgendwie bin ich

Thomas

persönlich da jetzt auch noch gar nicht glücklich,

Thomas

mit der Methode

Thomas

HTML serverseitig zu erstellen,

Thomas

Also ich habe da jetzt, aktuell verwende ich von Django zum Beispiel das Format unterstrich HTML.

Thomas

Das finde ich ganz praktisch, weil da eben dieses Save-String ausgewertet wird.

Thomas

Also da wird alles, was gequotet werden soll, wird automatisch gequotet, außer es ist eben ein Save-String, wo explizit klar ist, dass der soll nicht gequotet werden.

Thomas

Und das ist für mich erstmal ganz schön.

Thomas

Aber was ich auch schön finde, sind diese F-Strings in Python.

Thomas

Und da fehlt mir aktuell noch so eine Mischung, ich hätte gerne so eine Mischung, dass ich sage, also im Python will ich HTML erstellen, also ich will das jetzt nicht auslagern, ich will da nicht immer zwischen zwei Dateien hin und her wechseln, einmal in mein Template-File und dann mein Python-File, also ich würde gerne das HTML im Python erstellen und das würde ich am liebsten mit F-Strings machen, haut aber halt nicht hin, weil das F-Strings hat ja keine Ahnung, was es quoten soll oder nicht.

Thomas

und da habe ich bis jetzt

Thomas

auch noch nicht so richtig die optimale Lösung

Thomas

gefunden.

Jochen

Ja, ne, habe ich auch noch nicht, weiß nicht genau,

Jochen

ob das mit F-Strings,

Jochen

also tatsächlich in JavaScript geht das

Jochen

wahrscheinlich, da gibt es ja diese Template Literal

Jochen

Strings, ne,

Jochen

damit könnte man das wahrscheinlich machen.

Jochen

Ja, wäre schön, wenn es sowas

Jochen

gibt. Aber so einen Teil gibt es das nicht.

Jochen

Ja.

Jochen

Ja, ja, ja, ja, ne.

Jochen

Ne, weiß ich auch nicht.

Jochen

Aber ja, das stimmt.

Jochen

Ich meine, ja, das ist die Frage, ob das

Jochen

ist es, alle machen das jetzt halt

Jochen

über diese Tablet-Geschichten,

Jochen

aber ob das jetzt

Jochen

der beste Weg ist, weiß ich

Jochen

auch nicht.

Thomas

Also im Kontext von HTMX ist es

Thomas

bei mir so, ich erstelle kleine Methoden,

Thomas

die kleine Schnipsel zurückgeben.

Thomas

Ja, warum brauchen die einen extra Pfeil?

Thomas

Und dann sind das eben 6-7 Zeilen und für diese 6-7 Zeilen

Thomas

dann nochmal eine extra Datei

Thomas

öffnen, das tut dann den Fluss

Thomas

beim Softwareentwicklung,

Thomas

bei der Softwareentwicklung irgendwie behindern.

Jochen

Aber kannst du nicht auch einfach ein Django-Template

Jochen

quasi in den String reinschreiben und

Jochen

den dann rendern? Weil du musst es ja nicht in den

Thomas

File reintun. Könnte ich auch, ja.

Thomas

Klar, könnte ich machen, aber dann muss ich

Thomas

dem halt auch wieder einen Kontext geben und dann muss ich

Thomas

immer wieder schreiben,

Thomas

Name ist gleich Name und

Thomas

Login ist gleich Login und

Thomas

ähnlichen Spaß muss ich dem

Thomas

Kontext reingeben.

Thomas

Kann man machen, funktioniert auch.

Thomas

Aber irgendwie muss der

Thomas

seine Variablen bekommen.

Thomas

Man könnte da vielleicht einfach Globals übergeben.

Thomas

Ja, aber dann

Thomas

weiß die IDE nicht mehr, dass diese Variable

Thomas

eigentlich verwendet wurde.

Thomas

Und tut die hellgrau anzeigen,

Thomas

so nach dem Motto, hey, die kannst du doch eigentlich wegwerfen,

Thomas

die Variable hier.

Thomas

Ja, auch nicht ideal.

Thomas

Gibt es noch

Thomas

Entwicklungsmöglichkeiten an der Stelle?

Jochen

Ja, aber

Jochen

genau das hat mich gerade

Jochen

diese Offline-Geschichte

Jochen

drauf gebracht. Ich weiß gar nicht, ob das Leute machen, aber

Jochen

ehrlich gesagt würde ich das auch gerne mal ausprobieren.

Jochen

Im Grunde kann man ja auch,

Jochen

man kann ja auch,

Jochen

das ist wieder dann das Problem mit der Paketierung.

Jochen

Man kann in Python nicht einfach ein Binary bauen,

Jochen

aber wenn ich mir jetzt so überlege,

Jochen

SQLite ist ja, also klar,

Jochen

kann man nicht so concurrent

Jochen

draufschreiben, aber

Jochen

ist auch sehr mächtig und

Jochen

kann wahrscheinlich irgendwie das meiste, was man so

Jochen

braucht, wenn man jetzt irgendwie eine Datenbank

Jochen

für eine Webgeschichte hat,

Jochen

kann man nicht einfach die komplette Web-Applikation

Jochen

shippen mit einer SQLite und den Daten

Jochen

drin und dann sagen

Jochen

so, hier startet das Ding und dann

Jochen

geht das halt auf Localhost, hat man

Jochen

halt eigentlich sozusagen die eigene

Jochen

Seite und dann, wenn irgendwas geschrieben wird,

Jochen

kann man es ja einmal in SQLite schreiben, aber halt auch nochmal

Jochen

irgendwie übers Netz oder so oder man synchronisiert die Daten

Jochen

irgendwie.

Thomas

Das ist natürlich viel möglich, weil prinzipiell kannst du das

Thomas

also, weil da wird sich auch noch viel entwickeln

Thomas

nach WebAssembly alles kompilieren und kannst

Thomas

prinzipiell auch wahrscheinlich Python nach WebAssembly

Thomas

kompilieren. Ja, das haben ja auch schon Leute gemacht.

Thomas

Wuppdiwupps, alles paketieren und dann

Thomas

haust du schon noch ein Postgres hinterher und

Thomas

dann

Thomas

lädt der Kunde erstmal hier

Thomas

50 Megabyte runter.

Thomas

Und ich meine, obwohl 50 Megabyte

Thomas

sind auch schnell runtergeladen.

Thomas

Und dann hast du dort

Thomas

alles drinnen im WebAssembly

Thomas

aus. Ich bin

Thomas

gespannt, was sich da entwickelt.

Thomas

Ja.

Thomas

Naja.

Thomas

Tja, tja.

Jochen

Kann man auf jeden Fall sich auch noch eine Menge interessante

Jochen

Dinge überlegen, was man damit alles machen kann.

Jochen

Ja, ich glaube, im Platinum X

Jochen

sind wir so ein bisschen fast ruhig.

Dominik

Ja. Ich hatte aber beim

Dominik

Thomas noch auf seinem Repo noch so ein paar

Dominik

Sachen entdeckt, wie sein Working Out Loud

Dominik

Repo, wo er so ein bisschen dann

Dominik

Sachen verlinkt und dann auch die Pausen-Tipps entdeckt

Dominik

und so, wo mich einige Sachen an Jochen's

Dominik

Philosophie erinnerten. Und was

Dominik

ich entdeckt habe, war, du, den

Dominik

PDM, den kannte

Dominik

ich tatsächlich noch nicht. Was ist denn das?

Dominik

Nochmal, jetzt habe ich dich schlecht verstanden.

Dominik

den PDM, das ist ein Python-Distro-Manager

Dominik

oder sowas.

Dominik

Oder was macht der eigentlich? Ich muss mal gucken.

Dominik

PDM. PDM, ja. Also ein

Dominik

Paketmanager, den du entdeckt hast. Als Alternative

Dominik

zu Poetry hast du den beworben.

Dominik

Beworben habe ich den, glaube ich, nicht.

Dominik

Ich habe das mal aufgelistet. Also ja, genau.

Dominik

Genau. Nee, ich war einfach da

Thomas

unsicher. Genau.

Thomas

Bei mir ist es öfter so, oder geht ja

Thomas

wahrscheinlich vielen so, man steht da, nehme ich

Thomas

jetzt Tool A, nehme ich Tool B, nehme ich

Thomas

0C und da ist

Thomas

seit einer Weile mache ich das so, dann

Thomas

gehe ich zu GitHub, zu meinem Account, erstelle da ein Repository,

Thomas

was im Endeffekt aus einer Readme besteht und dann schreibe ich da auf,

Thomas

was für Möglichkeiten überhaupt existieren. Das hilft mir,

Thomas

um meine Gedanken zu strukturieren. Im Endeffekt ist es erstmal eigentlich fast

Thomas

ein Zettel für mich, das ich dann da habe und wenn ich die Web-Recherche

Thomas

zwei Tage oder drei Tage später weitermache, habe ich da erstmal einen Leitfaden, wo ich stehen geblieben bin.

Thomas

Aber es ist immer ganz nett, das ein bisschen stehen zu lassen, weil

Thomas

ein Jahr später braucht man es vielleicht dann wieder oder so.

Thomas

Und dann weiß ich es.

Thomas

Würde ich es bei mir auf dem Zettel schreiben, würde ich es am Schreibtisch oder so

Thomas

nicht finden.

Dominik

Also Version Control ist für sowas schon genau das Richtige.

Dominik

Aber jedenfalls bin ich da, weil wir schon ein paar Mal auch über

Dominik

so Paketierungssachen gesprochen haben, über das PDM.

Dominik

Also das heißt Python Development

Dominik

Habe ich auch noch

Dominik

nicht gehört, Karl.

Dominik

Jetzt ist das M wieder weg.

Dominik

Das hast du

Dominik

bei den Python-Tipps gefunden.

Dominik

Ja, PDM.

Dominik

Moment.

Dominik

Python Development Master

Dominik

heißt es.

Dominik

Als Alternative für

Dominik

Poetry. Ich habe noch nicht genau verstanden, wovor das ist.

Dominik

Deswegen war ich neugierig, weil

Dominik

wir ja mit Poetry in letzter Zeit so ein paar

Dominik

Probleme hatten.

Dominik

Und ob das vernünftig

Dominik

funktioniert. Aber wenn es

Dominik

dir nicht sofort einfällt, dann hast du es wahrscheinlich auch gar nicht.

Thomas

Nee, ich habe damals recherchiert

Thomas

an einem Abend, das mal so aufgeschrieben.

Thomas

Aber ich kann da jetzt keine Details dazu

Thomas

sagen. Und genau, mir geht es genauso.

Thomas

Ich tu nämlich den Artikel jetzt hier mal kurz aktualisieren

Thomas

mit dem Poetry.

Thomas

Ich bin aktuell einfach bei

Thomas

PIP und das klappt auch

Thomas

soweit eigentlich ganz gut. Also das Poetry

Thomas

konnte ich nicht

Thomas

so richtig da...

Dominik

Also ich verwende es nach wie vor. Ich finde nur, man muss halt

Dominik

die blöden Bugs fixen, die uns allen auf die Nerven gehen.

Dominik

Ja.

Dominik

Also ich bin, wie gesagt, mit den PIP-Tools

Dominik

quasi auch nicht warm.

Jochen

Also ich finde, vom User-Interface her ist Poetry

Jochen

schon deutlich schöner. Das Problem ist nur halt,

Jochen

es funktioniert nicht.

Dominik

Ja, aber man muss ja nicht immer alles

Dominik

auf der Dreck wegschmeißen, wenn sie kaputt ist.

Dominik

Manchmal kann man sich auch ein bisschen reparieren.

Dominik

Aber hörst du mal,

Jochen

ich meine, ich habe

Jochen

letztens auch wieder, war ich auf dem

Jochen

Repository bei Poetry,

Jochen

weil ich irgendwie bestätigen wollte

Jochen

nach irgendwie, ich weiß nicht wie vielen Leuten, dass das

Jochen

auch bei mir nicht funktioniert.

Jochen

Und da habe ich dann, also wenn man da,

Jochen

ich weiß nicht wie viele offene Issues da sind gerade.

Jochen

Irgendwie tausend oder sowas.

Jochen

Und das ist ja nur ein einzelner.

Dominik

Monat einlegen und alle gemeinsam an Poetrys

Dominik

Verbesserung arbeiten und dann ist das Problem

Dominik

endlich allemal aus der Welt geschafft.

Dominik

Tja, tja. Ja, genau.

Jochen

Offene Issues über tausend, also das ist halt schon, ja.

Jochen

Und es ist halt nur ein einzelner Typ, der das in seiner

Jochen

Freizeit macht, ne? Also. Ja, klar, kann man

Thomas

ihm ja auch keinen Vorwurf machen. Nee, eigentlich nicht.

Thomas

Überhaupt nicht. Das ist alles prima, ne?

Dominik

Ja, ja, also ich meine, aber es ist halt so beliebt,

Dominik

dass halt so Sachen so finden, ne? Und dann

Dominik

braucht er eigentlich halt Hilfe, ne?

Dominik

Ja. Ich hab hier

Thomas

Pip und dann für Sachen

Thomas

kann man auch Pip-Tools oben drauf nehmen.

Thomas

reicht erst mal voll aus.

Thomas

Ja,

Thomas

PIP-Tools habe ich jetzt auch letztens,

Jochen

fand ich eigentlich, also das hat auch ganz gut funktioniert,

Jochen

es ist halt so ein bisschen hakliger zu benutzen,

Jochen

aber weil man dann halt lange

Jochen

Kommandozeilen, mit denen man da irgendwie

Jochen

den Kram dann,

Jochen

aber ja, aber es funktioniert tatsächlich

Jochen

ziemlich gut, muss ich auch sagen. Und es hat halt die ganzen

Jochen

Paketfunktionen,

Jochen

die Portree hat halt nicht, aber ehrlich gesagt,

Jochen

die brauche ich auch nicht. Ja, also

Dominik

was ich halt eigentlich nur brauche, sind eigentlich

Dominik

zwei Sachen, PortreeAdd, PortreeRemove,

Dominik

Pultree Update und Pultree

Jochen

Install. Ja gut, aber dann bist du ja auch

Jochen

ungefähr bei dem, was PIP-Tools können, nur

Jochen

dass PIP-Tools das halt sehr unkomfortabel machen.

Jochen

Ja, genau.

Jochen

Naja, gut.

Jochen

Aber irgendwie ist das

Dominik

noch nicht aller Tage Abend, was das

Dominik

angeht, tatsächlich.

Dominik

Ja, ich weiß nicht, habt ihr noch was?

Dominik

Habt ihr noch was auf eurer Liste stehen?

Dominik

Nö, ich bin durch.

Jochen

Nö, also wir könnten ja noch Pics machen.

Dominik

Dann kommen die Pics der Woche, des Monats,

Dominik

der Folge jedenfalls dann.

Dominik

was habt ihr denn da ausgesucht? Also ich fange

Dominik

vielleicht einfach an. Ich weiß nicht, ob ich schon mal gesagt habe,

Dominik

das vergesse ich wie gesagt immer. Ich muss das jetzt mal aufschreiben.

Dominik

Die Python DevTools, kennt ihr die?

Dominik

Das ist so

Dominik

Python DevTools, da kann man sich einloggen.

Dominik

Das sind ganz einfache Sachen, wie statt Print

Dominik

ein Debug-Statement in Python, was dann PrettyPrint

Dominik

macht und so, so einfach so ein paar Kleinigkeiten.

Dominik

Nö, nutze ich noch nicht.

Jochen

Nö, kenne ich noch nicht. Wofür nennt man das?

Jochen

Oder was ist das? Einfach Python.

Jochen

Ach ja, ich glaube, ich habe es.

Jochen

Was macht das? Ich glaube, das ist

Jochen

ein anderes. Guck mal kurz, ist das

Jochen

Kannst du kurz auf die

Dominik

doc-help-manual.io irgendwie

Dominik

Python-DevTools einworten?

Dominik

Achso. Nee, ist das eine andere?

Dominik

Minus DevTools

Dominik

.help-manual.io

Dominik

Nee, okay, krieg ich nicht hin.

Dominik

Ja, egal. Auf jeden Fall, das sind nicht

Dominik

viele Funktionen, aber irgendwie fand ich es ganz nett und das

Dominik

sah ganz niedlich aus. Und ich mag ja so

Dominik

moderne Terminal-Sachen sehr gerne.

Dominik

Ah, noch ein Pick der Woche. Ich hab meine

Dominik

.files mal ein bisschen aktualisiert.

Dominik

Die sind ja vor allen Dingen auch für

Dominik

viele Windows-Nutzer ganz gut geeignet, weil ich muss das

Dominik

ja auch auf der Arbeit nutzen und so. Und

Dominik

da kann man sich jetzt, wenn man das vernünftig

Dominik

installiert, unter einer PowerShell

Dominik

die ganzen Modern Unix-Commands ziehen

Dominik

und die alle reinpacken. Ist jetzt nicht so Python-spezifisch.

Dominik

Aber auch Virtual Entwrapper

Dominik

habe ich eingebaut, jetzt nur die Funktion, die ich nutze,

Dominik

dass es nicht viele sind.

Dominik

Damit es ein bisschen kompatibler ist, weil

Dominik

Virtual Entwrapper PowerShell irgendwie nicht so richtig funktioniert hat.

Jochen

Ja, da habe ich jetzt doch eine sehr gute Überleitung.

Jochen

Was benutzt du denn zum Managen

Jochen

deiner Dot-Files?

Jochen

Tatsächlich Git.

Jochen

Ja, aber was meinst du mit Managen meiner .files?

Jochen

Naja, wenn du jetzt auf einer,

Jochen

du hast einen neuen Account irgendwie auf einer anderen Maschine,

Jochen

loggst dich da ein,

Jochen

setzt du gerne deine .files da so wie überall sonst auch.

Dominik

Genau, ich habe in meinem .files-Repo für die jeweiligen Systeme,

Dominik

also im Moment ist es halt POSIX und Windows

Dominik

und Phoenix ist auch was, aber das funktioniert nicht richtig,

Dominik

das ist halt nicht public,

Dominik

Install-Skripte,

Dominik

das heißt, ich mache halt eine Admin-Shell auf

Dominik

und starte das Install-Skript,

Dominik

dann klont er mir die eigentlich an die richtige Stelle,

Dominik

die meistens einfach home.dot

Dominik

files ist.

Dominik

Dann im Insights-Skript

Dominik

führt er dann das Simulink-Skript aus, das heißt

Dominik

der linkt quasi von meinen

Dominik

Config-Files komplett auf die

Dominik

Configs von dem Programm, die ich natürlich installieren muss

Dominik

auch in dem Insights-Skript. Das heißt, er installiert alle

Dominik

Programme mit Simulink-T und fertig.

Dominik

Okay, aber

Jochen

welches Skript ist das dann? Hast du

Jochen

es selber geschrieben? Ja. Ah, okay.

Jochen

Ja, weil da gibt es ja dann schon

Jochen

einige Sachen. Also ich habe bisher

Jochen

immer .bot verwendet dafür.

Jochen

Aber das ist mir letztens irgendwie,

Jochen

als ich, ich weiß gar nicht,

Jochen

was der Anlass war, wo es mir dann kaputt gegangen ist,

Jochen

und ich mir dachte so,

Jochen

also das habe ich mir jetzt auch schon so lange nicht mehr angeguckt.

Jochen

Irgendwie muss ich da mal schauen, ob es da was Besseres gibt.

Dominik

Vielleicht möchte ich auch sowas benutzen, weiß ich nicht.

Dominik

Ich habe es alles noch ganz einfach selber geschrieben,

Dominik

mal so viel ich das halt nicht ist.

Dominik

Ja, ja, gut.

Dominik

20 Sim-Links oder was der da setzt

Dominik

und dann einmal Software mit dem jeweiligen System-Paket-Manager installieren,

Dominik

den du ja auch auf Windows installieren kannst.

Dominik

Dann musst du halt nur zuerst den Paket-Manager installieren

Dominik

und dann ist ja alles eh open source,

Dominik

dann macht er alles drauf.

Dominik

Und dann hast du immer auf jeden Fall die gleiche Shell, was ich immer sehr super finde.

Dominik

Was sogar einigermaßen

Dominik

mittlerweile für die PowerShell geht.

Dominik

Und das ist auch was ganz Tolles, das ist auch in der DotFile

Dominik

schon drin, es gibt seit November

Dominik

für die PowerShell einen Autocompletion,

Dominik

das so ein bisschen funktioniert wie das von Fisch und das ist,

Dominik

ja, das brauche ich natürlich immer, weil ich

Dominik

normalerweise mit der Fischshell da sehr dran gewöhnt bin,

Dominik

weil man sehr viel Zeit sparen kann.

Dominik

Ja, genau,

Jochen

und das Ergebnis

Jochen

das war dann mein

Jochen

Pick, was ich jetzt versuche zu

Jochen

verwenden. Also ich bin gerade dabei, das auszuprobieren

Jochen

und zu gucken, wie ich das so hin

Jochen

biegen kann, dass es das tut, was ich

Jochen

gerne davon hätte. Und zwar das Tool heißt

Jochen

ChessMoi.

Jochen

ChessMoi. Ja.

Jochen

ChessMoi, genau.

Jochen

Und

Jochen

das

Jochen

ist so ein Go geschrieben.

Jochen

Das ist halt so wie so ein, auch eines

Jochen

von den, wir haben ja momentan ganz

Jochen

viele System-Tools

Jochen

macht tatsächlich keine

Jochen

SimLink-Geschichte, oder macht halt auch unter Umständen

Jochen

SimLinks, ich glaube aber eigentlich nicht.

Jochen

Das

Jochen

guckt sich an, wie der Zustand

Jochen

deiner aktuellen Verhaltens ist, wie es

Jochen

sein sollte, sozusagen auch aus dem

Jochen

Git-Repo und passt es dann halt an.

Jochen

Und das kann halt jetzt noch so ein paar

Jochen

Sachen mehr. Also einmal das Schöne ist halt, dass es halt

Jochen

das Go ist, halt

Jochen

so ein statisches Binary, was keine

Jochen

Abhängigkeiten hat, relativ leicht auf jede

Jochen

Maschine. Und

Jochen

das hat halt auch noch so eine Templating Language

Jochen

mit drin, womit

Jochen

man dann halt sozusagen je nachdem, was auf der

Jochen

Maschine irgendwie gesetzt ist, halt Dinge anders machen

Jochen

kann. Also wenn halt das Umfeldsein anders ist, dann

Jochen

müssen manche Dinge ja anders sein

Jochen

oder wenn der User anders heißt. Das sieht sehr schön aus.

Jochen

Das ist ziemlich cool und das hat halt auch Anbindung

Jochen

an alle möglichen anderen Geschichten, wie zum Beispiel

Jochen

an irgendwie Passwortmanager und so,

Jochen

sodass du halt auch deine SSH-Keys irgendwie

Jochen

rüberziehen kannst und solche Sachen. Das ist ja geil.

Jochen

Oh, ich hab ein neues, neues

Jochen

Ja, und das

Jochen

ist ziemlich cool und es gibt

Jochen

How-To's da für alle möglichen Anwendungsfälle,

Jochen

wo man sich das,

Jochen

die man sich da angucken kann. Also ich

Jochen

verwende es jetzt, oder ich probiere damit

Jochen

seit ein paar Tagen irgendwie Dinge mitzumachen

Jochen

und ich bin eigentlich sehr angetan. Also ich glaube,

Jochen

das wird wahrscheinlich demnächst meine

Jochen

neue Lösung zum Managen meiner

Jochen

Dot-Files. Das klingt sehr, sehr gut.

Jochen

Ich hatte da noch eine andere Frage

Dominik

an der Stelle. Ich weiß nicht, ob das jetzt hier hinpasst, aber

Dominik

wo ich gerade

Dominik

versuche umzustellen, ist die ganzen Keys, weil du gerade

Dominik

vorhin geredet hast mit Key-Repos und so,

Dominik

mit YubiKeys zu schützen,

Dominik

also eine Zwei-Faktor-Identifizierung da reinzubauen.

Dominik

Geht das auch

Dominik

einfach so? Weil ganz ruhig, bei mir

Dominik

funktioniert es auch so mittelgut.

Dominik

Also ich habe jetzt meine wichtigsten Applikationen da mit drin,

Dominik

aber das könnte,

Dominik

das wäre natürlich noch richtig klasse, wenn ich dann einfach irgendwie an die

Dominik

richtigen Ställe den richtigen Stick

Jochen

stecke oder sowas. Ja, ja, das müsste eigentlich

Jochen

funktionieren. Also

Jochen

YubiKey ist halt die Frage, wie man das

Jochen

wie, ja,

Jochen

ich meine,

Jochen

ich würde sowieso, ich meine, ich verwende ja

Jochen

One Password, auch wenn ich das

Jochen

natürlich irgendwie auch

Jochen

ein bisschen unangenehm ist, dass er so teuer ist

Jochen

und dass es so ein substrativistisches Modell hat, aber

Jochen

das ist halt das einzige Ding, was ich gefunden

Jochen

habe, was halt zuverlässig auf allen Geräten funktioniert

Jochen

und halt auch irgendwie

Jochen

eine durchdachte UI hat.

Jochen

Und das

Jochen

funktioniert auch mit Chesmois.

Jochen

Chesmois, meine Güte, französisch.

Jochen

Franz-Rosen, ja.

Jochen

How to...

Jochen

Ich weiß jetzt nicht genau.

Jochen

Ja, ich muss mir das einfach mal durchlesen.

Dominik

Das sieht auf jeden Fall sehr, sehr toll aus, weil genau das ist halt

Dominik

diese ganze Skripte, dass ich mich alles nicht mehr machen muss,

Dominik

weil es alles schon automatisch weiß.

Dominik

Dann muss ich mich an der Struktur halten von meinen .files,

Dominik

dann irgendwie standardisiert oder so.

Dominik

Wahrscheinlich, ne?

Dominik

Ja, mal gucken, vielleicht mag ich das.

Dominik

Das sieht auf jeden Fall sehr toll aus, dass man einfach sagt,

Dominik

Chemois und dann die gleiche Line mit install dein Username

Dominik

und dann einfach nur Chemois update, das ist schon cool.

Dominik

Ja, ja.

Dominik

Ja.

Dominik

Und du?

Dominik

Ich?

Dominik

Ja.

Dominik

Ich nutze da kein Tool.

Thomas

Also ich hatte da früher mal das wenigstens noch

Thomas

irgendwie weggesichert oder irgendwie so.

Thomas

Also speziell noch mal extra

Thomas

zu einem normalen Backup. Aber ansonsten

Thomas

habe ich da jetzt eigentlich nichts Spezielles,

Thomas

weil ich da auch nicht viel anpasse eigentlich.

Thomas

Also

Thomas

ja,

Thomas

ich nutze ja nicht den VI oder so,

Thomas

wo es so viele... Ja, ja, den muss man halt

Thomas

irgendwie ausgiebig konfigurieren.

Thomas

Vom Emacs mal weggewechselt.

Thomas

Da war das auch noch beim Emacs.

Thomas

Musste man da eine ganze Menge machen.

Thomas

Aber jetzt habe ich eigentlich

Thomas

nichts, was ich da

Thomas

groß verwalten sollte.

Dominik

Da musst du jetzt mit deinem Pick

Dominik

der Folge noch...

Dominik

Hast du einen?

Dominik

Nö,

Dominik

habe ich nicht.

Dominik

Kein Pies, wo du drüber gestolpert hast,

Dominik

wo du sagst, das muss die ganze Welt kennen.

Jochen

Ganz kurz, zum Beispiel

Jochen

eine Sache, die ich gerade gesehen habe,

Jochen

wo du sagst, Sachen installieren, wenn man

Jochen

das macht, also ich habe

Jochen

das ist eine der Geschichten, die ich gestern, glaube ich, gemacht habe,

Jochen

schon mal, ist, wenn dann

Jochen

wenn das, man kann

Jochen

Dinge, Skripte definieren, die ausgeführt werden

Jochen

sollen, wenn sich was geändert hat.

Jochen

Und wenn, ich habe dann zum Beispiel

Jochen

man kann

Jochen

bei Mac gibt es ja Homebrew,

Jochen

nicht Chocolaty, ist es bei Windows,

Jochen

bei Mac ist es Homebrew,

Jochen

da kann man ein brew-File haben, wo die ganzen Pakete,

Jochen

die man so installieren möchte, drinstehen. Und wenn man das ändert,

Jochen

dann sagt man auf einer anderen Maschine

Jochen

irgendwie...

Jochen

Update, genau. Dann wird

Jochen

dieses Skript ausgeführt, zieht sich das

Jochen

File rein und wenn sich das geändert hat,

Jochen

dann installiert es das halt direkt.

Jochen

Das ist ja cool, ja. Und das ist halt schon

Jochen

sehr nett. Ja, sowas muss ich halt alles noch manuell machen.

Jochen

Ich habe halt meine Listen, die dann

Dominik

unterschiedliche paketierte

Dominik

Paket-Packages quasi

Dominik

installieren, wenn ich das dann will.

Dominik

Aber ja, ich finde das ganz

Dominik

interessant, weil ich finde, man will vielleicht auf verschiedenen Maschinen auch nicht

Dominik

immer alle Pakete gleichzeitig, aber egal,

Dominik

dass das so ein bisschen, ich muss mir das auf jeden Fall mal angucken,

Dominik

wie so der Use Case davon ist. Mir ist noch was eingefallen,

Thomas

ich habe das Tool

Thomas

CopyQ verwendet, also

Thomas

wie Copy und dann in Q

Thomas

und das ist ein Keyboard-Manager und das finde ich ganz praktisch,

Thomas

weil der eben eine History hat

Thomas

von den Sachen, die ich eben in der letzten Zeit

Thomas

mit Copy und Paste hin und her genommen habe

Thomas

und dann kann ich mit STRG ALT

Thomas

V eben gucken, was ist

Thomas

in der Liste drin und da hat er ja sogar auch Bilder

Thomas

drin und mit Formatierung und so weiter.

Thomas

Das ist, finde ich,

Thomas

super praktisch und dann kann man halt natürlich auch in der Liste

Thomas

super schnell suchen, indem ich mit Autocomplete

Thomas

halt eben hier die ersten

Thomas

Zeichen von der gesuchten Zeichenkette

Thomas

eingeben kann. Und das finde ich

Thomas

sehr praktisch, dass man so eine Art

Thomas

Rucksack mit dabei hat, da kann man gut alles reingeben.

Dominik

Also so ein Copy, also Buffer

Dominik

mit mehreren Buffern halt, das ist schon sehr schön.

Thomas

Genau, das gibt es im

Thomas

Emacs, gibt es im PyCharm, aber im Endeffekt ist es ja

Thomas

cooler, wenn man es auf dem Desktop hat, über alle

Dominik

Anwendungen hin. Ja genau, gibt es halt auch irgendwie

Dominik

ist gut. Sogar auf Windows. Ich habe auch das mal gesucht

Dominik

für so eine Alternative für Windows und das

Dominik

funktioniert alles einigermaßen cool.

Thomas

Ah, schön. Ja, genau. Das ist ganz praktisch.

Thomas

Ja, sehr gut.

Thomas

Ah, ich habe auch noch einen zweiten.

Jochen

Da gab es jetzt letztens ein neues

Jochen

Buch von Adam Johnson. Ein sehr schönes

Jochen

schon geschrieben. Nennt sich

Jochen

Speed Up Your Django Tests. Da haben wir bestimmt auch schon

Jochen

mal drüber geredet. Das ist irgendwie ganz toll.

Dominik

Wir haben über Tests von HTMX noch gar nicht gesprochen. Das ist mir

Dominik

eingefallen. Ach, äh...

Jochen

Ja. Wieso? Oder was muss man da...

Dominik

Das ist nicht so schlimm. Also ich glaube, es gibt noch nicht so richtig gute

Dominik

Möglichkeiten, das zu testen, aber... Klar, natürlich.

Dominik

Ja? Ja, du testest das

Jochen

wie in jedem anderen Video auch. Ach so.

Jochen

Da musst du gar nichts machen. Das ist ja das Tolle, du musst gar nichts machen.

Jochen

Ah, okay. Dann hab ich's gesagt.

Jochen

Ja, das ist

Jochen

tatsächlich sehr nett. Also dieses Problem wird man auch

Dominik

los. Dann wollte ich dich nicht weiter bei deinem

Jochen

Buch picken. Ja, ja, Moment, aber ich würde gerne abschweifen

Jochen

und nochmal über JavaScript herziehen,

Jochen

weil das noch nicht genau passiert ist. Also ich hab ja

Jochen

jetzt in letzter Zeit auch so ein bisschen

Jochen

Vue, so Vue ist halt das Framework, was ich

Jochen

vielleicht am interessantesten finde,

Jochen

und Websockets und so gemacht und so

Jochen

und da halt auch dann Tests geschrieben.

Jochen

Und ja, also

Jochen

dann habe ich

Jochen

mit Jest ganz viel Tests gemacht

Jochen

und das ist echt, also das ist,

Jochen

das hat wirklich keinen Spaß gemacht.

Dominik

Ist das dem Wohl von Jest nicht, diese Clowns-Gaukler-Mütze

Dominik

auf dem Kopf?

Dominik

Ich weiß es nicht genau.

Dominik

Ich weiß nicht, guck mal kurz bitte nach.

Dominik

Kann sein. Ja, ich musste auch Tests

Dominik

mit ihr schreiben.

Jochen

Ja, auf jeden Fall, das war halt echt

Jochen

oh, also

Jochen

Also das ist ja jetzt auch quasi gar nicht mehr so neu und so und dann, ich bin mehrfach in Sachen eingelaufen, wo ich dachte, das geht nicht oder oh, das kann ich jetzt so nicht machen, okay, wie macht man das dann richtig und dann landet man halt auch irgendwie so in so Wüsten-GitHub-Issues, wo seit Jahren Leute sagen, das ist aber nicht so schön hier, was ist denn da los, geht das nicht und dann geht es tatsächlich nicht und zwar immer noch nicht.

Jochen

Und es ist halt auch, und dann die

Jochen

Integration mit Vite

Jochen

ist dann halt schwierig und

Jochen

also

Jochen

die Developer-Experience

Jochen

war eher so mittelmäßig

Jochen

und genau, ich würde allen Leuten,

Jochen

die glauben, dass JavaScript-Entwicklung

Jochen

voll gut ist und dass das noch die Zukunft ist

Jochen

und dass man das unbedingt auf dem Server machen

Jochen

möchte, dann die würde ich fragen, also

Jochen

ihr kennt schon so ordentliche

Jochen

Web-Frameworks auf dem Server, habt ihr schon mal

Jochen

verwendet, ja? Habt ihr euch das mal angeguckt,

Jochen

wie das da so geht?

Jochen

Wenn nein, guckt es euch mal an.

Jochen

Aber auch, das wird ja besser.

Jochen

Du hast ja letztens auch noch eine Sache gelinkt,

Dominik

Pinja als Ersatz für VX, das ist ja schon

Jochen

eine Verbesserung. Für den VX-Store, genau.

Dominik

Mit DevTools-Support und so, das ist ja auch, ja.

Dominik

Aber das braucht man halt nicht, wenn man das

Dominik

bei uns übermacht.

Jochen

Ja, naja,

Jochen

jedenfalls, genau, da wollte ich noch mal kurz,

Jochen

genau,

Jochen

genau, Adam Johnson, der hat

Jochen

ein neues Buch geschrieben,

Jochen

Boost Your

Jochen

Developer

Jochen

Experience und

Jochen

genau, ich habe es noch nicht gelesen, weil es ist so frisch.

Jochen

Es kam jetzt am Montag raus, dass ich es noch nicht dazu

Jochen

gekommen bin, aber kann man sich

Jochen

mal angucken. Es ist auf jeden Fall

Jochen

wahrscheinlich eine Menge tolle Sachen drin. Also es geht halt

Jochen

um viel, auch jetzt eben solche Dinge

Jochen

wie halt

Jochen

Pricometux oder halt

Jochen

PyUpgrade

Jochen

und ja,

Jochen

auch viel Nicht-Django-Zeugs ist da halt auch

Thomas

drin. Ja, ich kann es auch empfehlen.

Thomas

habe ich schon gelesen. Ach so, das ist ja gut.

Thomas

Ja, ich habe es zufälligerweise zugeschickt

Thomas

bekommen vom Autor,

Thomas

zum Probelesen.

Thomas

Und

Thomas

es ist okay, genau.

Thomas

Also ich finde es auch schön, also auch das

Thomas

vorhergehende Buch von ihm,

Thomas

Speed-Up-Python-Tests.

Thomas

Ich finde es schön, wie er schreibt,

Thomas

ganz pragmatisch, also ohne großes

Thomas

Blablabla, schön.

Thomas

Ja, lohnt sich.

Thomas

Ja, ja, ja.

Thomas

Na gut, dann

Dominik

noch mit diesen Worten als

Dominik

Schlusssatz. Bleibt uns doch gewogen und

Dominik

schaltet wieder rein, das nächste Mal.

Dominik

Ja, klar. Und ja,

Dominik

hört uns gerne immer, wenn ihr mögt.

Dominik

Wünschen euch noch einen schönen Tag, Abend, Nacht, wo auch immer ihr seid.

Dominik

Und bis dann. Tschüss.

Dominik

Ciao, ciao. Danke, Thomas.